1 //======================================================================== 2 // GLFW 3.4 OSMesa - www.glfw.org 3 //------------------------------------------------------------------------ 4 // Copyright (c) 2016 Google Inc. 5 // Copyright (c) 2016-2017 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)(void); 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 // OSMesa-specific per-context data 58 // 59 typedef struct _GLFWcontextOSMesa 60 { 61 OSMesaContext handle; 62 int width; 63 int height; 64 void* buffer; 65 66 } _GLFWcontextOSMesa; 67 68 // OSMesa-specific global data 69 // 70 typedef struct _GLFWlibraryOSMesa 71 { 72 void* handle; 73 74 PFN_OSMesaCreateContextExt CreateContextExt; 75 PFN_OSMesaCreateContextAttribs CreateContextAttribs; 76 PFN_OSMesaDestroyContext DestroyContext; 77 PFN_OSMesaMakeCurrent MakeCurrent; 78 PFN_OSMesaGetColorBuffer GetColorBuffer; 79 PFN_OSMesaGetDepthBuffer GetDepthBuffer; 80 PFN_OSMesaGetProcAddress GetProcAddress; 81 82 } _GLFWlibraryOSMesa; 83 84 85 bool _glfwInitOSMesa(void); 86 void _glfwTerminateOSMesa(void); 87 bool _glfwCreateContextOSMesa(_GLFWwindow* window, 88 const _GLFWctxconfig* ctxconfig, 89 const _GLFWfbconfig* fbconfig); 90 91