123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- //========================================================================
- // GLFW 3.4 GLX - www.glfw.org
- //------------------------------------------------------------------------
- // Copyright (c) 2002-2006 Marcus Geelnard
- // Copyright (c) 2006-2017 Camilla Löwy <elmindreda@glfw.org>
- //
- // This software is provided 'as-is', without any express or implied
- // warranty. In no event will the authors be held liable for any damages
- // arising from the use of this software.
- //
- // Permission is granted to anyone to use this software for any purpose,
- // including commercial applications, and to alter it and redistribute it
- // freely, subject to the following restrictions:
- //
- // 1. The origin of this software must not be misrepresented; you must not
- // claim that you wrote the original software. If you use this software
- // in a product, an acknowledgment in the product documentation would
- // be appreciated but is not required.
- //
- // 2. Altered source versions must be plainly marked as such, and must not
- // be misrepresented as being the original software.
- //
- // 3. This notice may not be removed or altered from any source
- // distribution.
- //
- //========================================================================
- #define GLX_VENDOR 1
- #define GLX_RGBA_BIT 0x00000001
- #define GLX_WINDOW_BIT 0x00000001
- #define GLX_DRAWABLE_TYPE 0x8010
- #define GLX_RENDER_TYPE 0x8011
- #define GLX_RGBA_TYPE 0x8014
- #define GLX_DOUBLEBUFFER 5
- #define GLX_STEREO 6
- #define GLX_AUX_BUFFERS 7
- #define GLX_RED_SIZE 8
- #define GLX_GREEN_SIZE 9
- #define GLX_BLUE_SIZE 10
- #define GLX_ALPHA_SIZE 11
- #define GLX_DEPTH_SIZE 12
- #define GLX_STENCIL_SIZE 13
- #define GLX_ACCUM_RED_SIZE 14
- #define GLX_ACCUM_GREEN_SIZE 15
- #define GLX_ACCUM_BLUE_SIZE 16
- #define GLX_ACCUM_ALPHA_SIZE 17
- #define GLX_SAMPLES 0x186a1
- #define GLX_VISUAL_ID 0x800b
- #define GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20b2
- #define GLX_CONTEXT_DEBUG_BIT_ARB 0x00000001
- #define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
- #define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
- #define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126
- #define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
- #define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091
- #define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092
- #define GLX_CONTEXT_FLAGS_ARB 0x2094
- #define GLX_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004
- #define GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
- #define GLX_LOSE_CONTEXT_ON_RESET_ARB 0x8252
- #define GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
- #define GLX_NO_RESET_NOTIFICATION_ARB 0x8261
- #define GLX_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097
- #define GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0
- #define GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098
- #define GLX_CONTEXT_OPENGL_NO_ERROR_ARB 0x31b3
- typedef XID GLXWindow;
- typedef XID GLXDrawable;
- typedef struct __GLXFBConfig* GLXFBConfig;
- typedef struct __GLXcontext* GLXContext;
- typedef void (*__GLXextproc)(void);
- typedef int (*PFNGLXGETFBCONFIGATTRIBPROC)(Display*,GLXFBConfig,int,int*);
- typedef GLXFBConfig* (*PFNGLXCHOOSEFBCONFIGPROC)(Display*,int,const int*,int*);
- typedef const char* (*PFNGLXGETCLIENTSTRINGPROC)(Display*,int);
- typedef Bool (*PFNGLXQUERYEXTENSIONPROC)(Display*,int*,int*);
- typedef Bool (*PFNGLXQUERYVERSIONPROC)(Display*,int*,int*);
- typedef void (*PFNGLXDESTROYCONTEXTPROC)(Display*,GLXContext);
- typedef Bool (*PFNGLXMAKECURRENTPROC)(Display*,GLXDrawable,GLXContext);
- typedef void (*PFNGLXSWAPBUFFERSPROC)(Display*,GLXDrawable);
- typedef const char* (*PFNGLXQUERYEXTENSIONSSTRINGPROC)(Display*,int);
- typedef GLXFBConfig* (*PFNGLXGETFBCONFIGSPROC)(Display*,int,int*);
- typedef GLXContext (*PFNGLXCREATENEWCONTEXTPROC)(Display*,GLXFBConfig,int,GLXContext,Bool);
- typedef __GLXextproc (* PFNGLXGETPROCADDRESSPROC)(const GLubyte *procName);
- typedef void (*PFNGLXSWAPINTERVALEXTPROC)(Display*,GLXDrawable,int);
- typedef XVisualInfo* (*PFNGLXGETVISUALFROMFBCONFIGPROC)(Display*,GLXFBConfig);
- typedef GLXWindow (*PFNGLXCREATEWINDOWPROC)(Display*,GLXFBConfig,Window,const int*);
- typedef void (*PFNGLXDESTROYWINDOWPROC)(Display*,GLXWindow);
- typedef int (*PFNGLXSWAPINTERVALMESAPROC)(int);
- typedef int (*PFNGLXSWAPINTERVALSGIPROC)(int);
- typedef GLXContext (*PFNGLXCREATECONTEXTATTRIBSARBPROC)(Display*,GLXFBConfig,GLXContext,Bool,const int*);
- // libGL.so function pointer typedefs
- #define glXGetFBConfigs _glfw.glx.GetFBConfigs
- #define glXGetFBConfigAttrib _glfw.glx.GetFBConfigAttrib
- #define glXChooseFBConfig _glfw.glx.ChooseFBConfig
- #define glXGetClientString _glfw.glx.GetClientString
- #define glXQueryExtension _glfw.glx.QueryExtension
- #define glXQueryVersion _glfw.glx.QueryVersion
- #define glXDestroyContext _glfw.glx.DestroyContext
- #define glXMakeCurrent _glfw.glx.MakeCurrent
- #define glXSwapBuffers _glfw.glx.SwapBuffers
- #define glXQueryExtensionsString _glfw.glx.QueryExtensionsString
- #define glXCreateNewContext _glfw.glx.CreateNewContext
- #define glXGetVisualFromFBConfig _glfw.glx.GetVisualFromFBConfig
- #define glXCreateWindow _glfw.glx.CreateWindow
- #define glXDestroyWindow _glfw.glx.DestroyWindow
- #define _GLFW_PLATFORM_CONTEXT_STATE _GLFWcontextGLX glx;
- #define _GLFW_PLATFORM_LIBRARY_CONTEXT_STATE _GLFWlibraryGLX glx;
- // GLX-specific per-context data
- //
- typedef struct _GLFWcontextGLX
- {
- GLXContext handle;
- GLXWindow window;
- } _GLFWcontextGLX;
- // GLX-specific global data
- //
- typedef struct _GLFWlibraryGLX
- {
- int major, minor;
- int eventBase;
- int errorBase;
- // dlopen handle for libGL.so.1
- void* handle;
- // GLX 1.3 functions
- PFNGLXGETFBCONFIGSPROC GetFBConfigs;
- PFNGLXGETFBCONFIGATTRIBPROC GetFBConfigAttrib;
- PFNGLXCHOOSEFBCONFIGPROC ChooseFBConfig;
- PFNGLXGETCLIENTSTRINGPROC GetClientString;
- PFNGLXQUERYEXTENSIONPROC QueryExtension;
- PFNGLXQUERYVERSIONPROC QueryVersion;
- PFNGLXDESTROYCONTEXTPROC DestroyContext;
- PFNGLXMAKECURRENTPROC MakeCurrent;
- PFNGLXSWAPBUFFERSPROC SwapBuffers;
- PFNGLXQUERYEXTENSIONSSTRINGPROC QueryExtensionsString;
- PFNGLXCREATENEWCONTEXTPROC CreateNewContext;
- PFNGLXGETVISUALFROMFBCONFIGPROC GetVisualFromFBConfig;
- PFNGLXCREATEWINDOWPROC CreateWindow;
- PFNGLXDESTROYWINDOWPROC DestroyWindow;
- // GLX 1.4 and extension functions
- PFNGLXGETPROCADDRESSPROC GetProcAddress;
- PFNGLXGETPROCADDRESSPROC GetProcAddressARB;
- PFNGLXSWAPINTERVALSGIPROC SwapIntervalSGI;
- PFNGLXSWAPINTERVALEXTPROC SwapIntervalEXT;
- PFNGLXSWAPINTERVALMESAPROC SwapIntervalMESA;
- PFNGLXCREATECONTEXTATTRIBSARBPROC CreateContextAttribsARB;
- bool SGI_swap_control;
- bool EXT_swap_control;
- bool MESA_swap_control;
- bool ARB_multisample;
- bool ARB_framebuffer_sRGB;
- bool EXT_framebuffer_sRGB;
- bool ARB_create_context;
- bool ARB_create_context_profile;
- bool ARB_create_context_robustness;
- bool EXT_create_context_es2_profile;
- bool ARB_create_context_no_error;
- bool ARB_context_flush_control;
- } _GLFWlibraryGLX;
- bool _glfwInitGLX(void);
- void _glfwTerminateGLX(void);
- bool _glfwCreateContextGLX(_GLFWwindow* window,
- const _GLFWctxconfig* ctxconfig,
- const _GLFWfbconfig* fbconfig);
- void _glfwDestroyContextGLX(_GLFWwindow* window);
- bool _glfwChooseVisualGLX(const _GLFWwndconfig* wndconfig,
- const _GLFWctxconfig* ctxconfig,
- const _GLFWfbconfig* fbconfig,
- Visual** visual, int* depth);
|