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

source code of gtk/subprojects/libepoxy/include/epoxy/gl.h