1*706d0b42SXin Li /* 2*706d0b42SXin Li * Copyright © 2013 Intel Corporation 3*706d0b42SXin Li * 4*706d0b42SXin Li * Permission is hereby granted, free of charge, to any person obtaining a 5*706d0b42SXin Li * copy of this software and associated documentation files (the "Software"), 6*706d0b42SXin Li * to deal in the Software without restriction, including without limitation 7*706d0b42SXin Li * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8*706d0b42SXin Li * and/or sell copies of the Software, and to permit persons to whom the 9*706d0b42SXin Li * Software is furnished to do so, subject to the following conditions: 10*706d0b42SXin Li * 11*706d0b42SXin Li * The above copyright notice and this permission notice (including the next 12*706d0b42SXin Li * paragraph) shall be included in all copies or substantial portions of the 13*706d0b42SXin Li * Software. 14*706d0b42SXin Li * 15*706d0b42SXin Li * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16*706d0b42SXin Li * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17*706d0b42SXin Li * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18*706d0b42SXin Li * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19*706d0b42SXin Li * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20*706d0b42SXin Li * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 21*706d0b42SXin Li * IN THE SOFTWARE. 22*706d0b42SXin Li */ 23*706d0b42SXin Li 24*706d0b42SXin Li /** @file gl.h 25*706d0b42SXin Li * 26*706d0b42SXin Li * Provides an implementation of a GL dispatch layer using either 27*706d0b42SXin Li * global function pointers or a hidden vtable. 28*706d0b42SXin Li * 29*706d0b42SXin Li * You should include `<epoxy/gl.h>` instead of `<GL/gl.h>` and `<GL/glext.h>`. 30*706d0b42SXin Li */ 31*706d0b42SXin Li 32*706d0b42SXin Li #ifndef EPOXY_GL_H 33*706d0b42SXin Li #define EPOXY_GL_H 34*706d0b42SXin Li 35*706d0b42SXin Li #include "epoxy/common.h" 36*706d0b42SXin Li 37*706d0b42SXin Li #if defined(__gl_h_) || defined(__glext_h_) 38*706d0b42SXin Li #error epoxy/gl.h must be included before (or in place of) GL/gl.h 39*706d0b42SXin Li #else 40*706d0b42SXin Li #define __gl_h_ 41*706d0b42SXin Li #define __glext_h_ 42*706d0b42SXin Li #endif 43*706d0b42SXin Li 44*706d0b42SXin Li #define KHRONOS_SUPPORT_INT64 1 45*706d0b42SXin Li #define KHRONOS_SUPPORT_FLOAT 1 46*706d0b42SXin Li #define KHRONOS_APIATTRIBUTES 47*706d0b42SXin Li 48*706d0b42SXin Li #ifndef _WIN32 49*706d0b42SXin Li /* APIENTRY and GLAPIENTRY are not used on Linux or Mac. */ 50*706d0b42SXin Li #define APIENTRY 51*706d0b42SXin Li #define GLAPIENTRY 52*706d0b42SXin Li #define EPOXY_CALLSPEC 53*706d0b42SXin Li #define GLAPI 54*706d0b42SXin Li #define KHRONOS_APIENTRY 55*706d0b42SXin Li #define KHRONOS_APICALL 56*706d0b42SXin Li 57*706d0b42SXin Li #else 58*706d0b42SXin Li #ifndef APIENTRY 59*706d0b42SXin Li #define APIENTRY __stdcall 60*706d0b42SXin Li #endif 61*706d0b42SXin Li 62*706d0b42SXin Li #ifndef GLAPIENTRY 63*706d0b42SXin Li #define GLAPIENTRY APIENTRY 64*706d0b42SXin Li #endif 65*706d0b42SXin Li 66*706d0b42SXin Li #ifndef EPOXY_CALLSPEC 67*706d0b42SXin Li #define EPOXY_CALLSPEC __stdcall 68*706d0b42SXin Li #endif 69*706d0b42SXin Li 70*706d0b42SXin Li #ifndef GLAPI 71*706d0b42SXin Li #define GLAPI extern 72*706d0b42SXin Li #endif 73*706d0b42SXin Li 74*706d0b42SXin Li #define KHRONOS_APIENTRY __stdcall 75*706d0b42SXin Li #define KHRONOS_APICALL __declspec(dllimport) __stdcall 76*706d0b42SXin Li 77*706d0b42SXin Li #endif /* _WIN32 */ 78*706d0b42SXin Li 79*706d0b42SXin Li #ifndef APIENTRYP 80*706d0b42SXin Li #define APIENTRYP APIENTRY * 81*706d0b42SXin Li #endif 82*706d0b42SXin Li 83*706d0b42SXin Li #ifndef GLAPIENTRYP 84*706d0b42SXin Li #define GLAPIENTRYP GLAPIENTRY * 85*706d0b42SXin Li #endif 86*706d0b42SXin Li 87*706d0b42SXin Li EPOXY_BEGIN_DECLS 88*706d0b42SXin Li 89*706d0b42SXin Li #include "epoxy/gl_generated.h" 90*706d0b42SXin Li 91*706d0b42SXin Li EPOXY_PUBLIC bool epoxy_has_gl_extension(const char *extension); 92*706d0b42SXin Li EPOXY_PUBLIC bool epoxy_is_desktop_gl(void); 93*706d0b42SXin Li EPOXY_PUBLIC int epoxy_gl_version(void); 94*706d0b42SXin Li EPOXY_PUBLIC int epoxy_glsl_version(void); 95*706d0b42SXin Li 96*706d0b42SXin Li /* 97*706d0b42SXin Li * the type of the stub function that the failure handler must return; 98*706d0b42SXin Li * this function will be called on subsequent calls to the same bogus 99*706d0b42SXin Li * function name 100*706d0b42SXin Li */ 101*706d0b42SXin Li typedef void (*epoxy_resolver_stub_t)(void); 102*706d0b42SXin Li 103*706d0b42SXin Li /* the type of the failure handler itself */ 104*706d0b42SXin Li typedef epoxy_resolver_stub_t 105*706d0b42SXin Li (*epoxy_resolver_failure_handler_t)(const char *name); 106*706d0b42SXin Li 107*706d0b42SXin Li EPOXY_PUBLIC epoxy_resolver_failure_handler_t 108*706d0b42SXin Li epoxy_set_resolver_failure_handler(epoxy_resolver_failure_handler_t handler); 109*706d0b42SXin Li 110*706d0b42SXin Li EPOXY_END_DECLS 111*706d0b42SXin Li 112*706d0b42SXin Li #endif /* EPOXY_GL_H */ 113