osmesa_context.h (3764B)
1 //======================================================================== 2 // GLFW 3.3 OSMesa - www.glfw.org 3 //------------------------------------------------------------------------ 4 // Copyright (c) 2016 Google Inc. 5 // Copyright (c) 2006-2016 Camilla Löwy <elmindreda@glfw.org> 6 // 7 // This software is provided 'as-is', without any express or implied 8 // warranty. In no event will the authors be held liable for any damages 9 // arising from the use of this software. 10 // 11 // Permission is granted to anyone to use this software for any purpose, 12 // including commercial applications, and to alter it and redistribute it 13 // freely, subject to the following restrictions: 14 // 15 // 1. The origin of this software must not be misrepresented; you must not 16 // claim that you wrote the original software. If you use this software 17 // in a product, an acknowledgment in the product documentation would 18 // be appreciated but is not required. 19 // 20 // 2. Altered source versions must be plainly marked as such, and must not 21 // be misrepresented as being the original software. 22 // 23 // 3. This notice may not be removed or altered from any source 24 // distribution. 25 // 26 //======================================================================== 27 28 #define OSMESA_RGBA 0x1908 29 #define OSMESA_FORMAT 0x22 30 #define OSMESA_DEPTH_BITS 0x30 31 #define OSMESA_STENCIL_BITS 0x31 32 #define OSMESA_ACCUM_BITS 0x32 33 #define OSMESA_PROFILE 0x33 34 #define OSMESA_CORE_PROFILE 0x34 35 #define OSMESA_COMPAT_PROFILE 0x35 36 #define OSMESA_CONTEXT_MAJOR_VERSION 0x36 37 #define OSMESA_CONTEXT_MINOR_VERSION 0x37 38 39 typedef void* OSMesaContext; 40 typedef void (*OSMESAproc)(); 41 42 typedef OSMesaContext (GLAPIENTRY * PFN_OSMesaCreateContextExt)(GLenum,GLint,GLint,GLint,OSMesaContext); 43 typedef OSMesaContext (GLAPIENTRY * PFN_OSMesaCreateContextAttribs)(const int*,OSMesaContext); 44 typedef void (GLAPIENTRY * PFN_OSMesaDestroyContext)(OSMesaContext); 45 typedef int (GLAPIENTRY * PFN_OSMesaMakeCurrent)(OSMesaContext,void*,int,int,int); 46 typedef int (GLAPIENTRY * PFN_OSMesaGetColorBuffer)(OSMesaContext,int*,int*,int*,void**); 47 typedef int (GLAPIENTRY * PFN_OSMesaGetDepthBuffer)(OSMesaContext,int*,int*,int*,void**); 48 typedef GLFWglproc (GLAPIENTRY * PFN_OSMesaGetProcAddress)(const char*); 49 #define OSMesaCreateContextExt _glfw.osmesa.CreateContextExt 50 #define OSMesaCreateContextAttribs _glfw.osmesa.CreateContextAttribs 51 #define OSMesaDestroyContext _glfw.osmesa.DestroyContext 52 #define OSMesaMakeCurrent _glfw.osmesa.MakeCurrent 53 #define OSMesaGetColorBuffer _glfw.osmesa.GetColorBuffer 54 #define OSMesaGetDepthBuffer _glfw.osmesa.GetDepthBuffer 55 #define OSMesaGetProcAddress _glfw.osmesa.GetProcAddress 56 57 #define _GLFW_OSMESA_CONTEXT_STATE _GLFWcontextOSMesa osmesa 58 #define _GLFW_OSMESA_LIBRARY_CONTEXT_STATE _GLFWlibraryOSMesa osmesa 59 60 61 // OSMesa-specific per-context data 62 // 63 typedef struct _GLFWcontextOSMesa 64 { 65 OSMesaContext handle; 66 int width; 67 int height; 68 void* buffer; 69 70 } _GLFWcontextOSMesa; 71 72 // OSMesa-specific global data 73 // 74 typedef struct _GLFWlibraryOSMesa 75 { 76 void* handle; 77 78 PFN_OSMesaCreateContextExt CreateContextExt; 79 PFN_OSMesaCreateContextAttribs CreateContextAttribs; 80 PFN_OSMesaDestroyContext DestroyContext; 81 PFN_OSMesaMakeCurrent MakeCurrent; 82 PFN_OSMesaGetColorBuffer GetColorBuffer; 83 PFN_OSMesaGetDepthBuffer GetDepthBuffer; 84 PFN_OSMesaGetProcAddress GetProcAddress; 85 86 } _GLFWlibraryOSMesa; 87 88 89 GLFWbool _glfwInitOSMesa(void); 90 void _glfwTerminateOSMesa(void); 91 GLFWbool _glfwCreateContextOSMesa(_GLFWwindow* window, 92 const _GLFWctxconfig* ctxconfig, 93 const _GLFWfbconfig* fbconfig); 94