summaryrefslogtreecommitdiffstats
path: root/video/out/opengl/angle_dynamic.h
blob: 87ad85c26886b913d97ae83c1e341f456023c8ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// Based on Khronos headers, thus MIT licensed.

#ifndef MP_ANGLE_DYNAMIC_H
#define MP_ANGLE_DYNAMIC_H

#include <stdbool.h>

#include <EGL/egl.h>
#include <EGL/eglext.h>

#define ANGLE_FNS(FN) \
    FN(eglBindAPI, EGLBoolean (*EGLAPIENTRY PFN_eglBindAPI)(EGLenum)) \
    FN(eglBindTexImage, EGLBoolean (*EGLAPIENTRY PFN_eglBindTexImage) \
        (EGLDisplay, EGLSurface, EGLint)) \
    FN(eglChooseConfig, EGLBoolean (*EGLAPIENTRY PFN_eglChooseConfig) \
        (EGLDisplay, const EGLint *, EGLConfig *, EGLint, EGLint *)) \
    FN(eglCreateContext, EGLContext (*EGLAPIENTRY PFN_eglCreateContext) \
        (EGLDisplay, EGLConfig, EGLContext, const EGLint *)) \
    FN(eglCreatePbufferFromClientBuffer, EGLSurface (*EGLAPIENTRY \
        PFN_eglCreatePbufferFromClientBuffer)(EGLDisplay, EGLenum, \
        EGLClientBuffer, EGLConfig, const EGLint *)) \
    FN(eglCreateWindowSurface, EGLSurface (*EGLAPIENTRY \
        PFN_eglCreateWindowSurface)(EGLDisplay, EGLConfig, \
        EGLNativeWindowType, const EGLint *)) \
    FN(eglDestroyContext, EGLBoolean (*EGLAPIENTRY PFN_eglDestroyContext) \
        (EGLDisplay, EGLContext)) \
    FN(eglDestroySurface, EGLBoolean (*EGLAPIENTRY PFN_eglDestroySurface) \
        (EGLDisplay, EGLSurface)) \
    FN(eglGetConfigAttrib, EGLBoolean (*EGLAPIENTRY PFN_eglGetConfigAttrib) \
        (EGLDisplay, EGLConfig, EGLint, EGLint *)) \
    FN(eglGetCurrentContext, EGLContext (*EGLAPIENTRY \
        PFN_eglGetCurrentContext)(void)) \
    FN(eglGetCurrentDisplay, EGLDisplay (*EGLAPIENTRY \
        PFN_eglGetCurrentDisplay)(void)) \
    FN(eglGetDisplay, EGLDisplay (*EGLAPIENTRY PFN_eglGetDisplay) \
        (EGLNativeDisplayType)) \
    FN(eglGetError, EGLint (*EGLAPIENTRY PFN_eglGetError)(void)) \
    FN(eglGetProcAddress, void *(*EGLAPIENTRY \
        PFN_eglGetProcAddress)(const char *)) \
    FN(eglInitialize, EGLBoolean (*EGLAPIENTRY PFN_eglInitialize) \
        (EGLDisplay, EGLint *, EGLint *)) \
    FN(eglMakeCurrent, EGLBoolean (*EGLAPIENTRY PFN_eglMakeCurrent) \
        (EGLDisplay, EGLSurface, EGLSurface, EGLContext)) \
    FN(eglQueryString, const char *(*EGLAPIENTRY PFN_eglQueryString) \
        (EGLDisplay, EGLint)) \
    FN(eglSwapBuffers, EGLBoolean (*EGLAPIENTRY PFN_eglSwapBuffers) \
        (EGLDisplay, EGLSurface)) \
    FN(eglReleaseTexImage, EGLBoolean (*EGLAPIENTRY PFN_eglReleaseTexImage) \
        (EGLDisplay, EGLSurface, EGLint)) \
    FN(eglTerminate, EGLBoolean (*EGLAPIENTRY PFN_eglTerminate)(EGLDisplay))

#define ANGLE_EXT_DECL(NAME, VAR) \
    extern VAR;
ANGLE_FNS(ANGLE_EXT_DECL)

bool angle_load(void);

// Source compatibility to statically linked ANGLE.
#ifndef ANGLE_NO_ALIASES
#define eglBindAPI                      PFN_eglBindAPI
#define eglBindTexImage                 PFN_eglBindTexImage
#define eglChooseConfig                 PFN_eglChooseConfig
#define eglCreateContext                PFN_eglCreateContext
#define eglCreatePbufferFromClientBuffer PFN_eglCreatePbufferFromClientBuffer
#define eglCreateWindowSurface          PFN_eglCreateWindowSurface
#define eglDestroyContext               PFN_eglDestroyContext
#define eglDestroySurface               PFN_eglDestroySurface
#define eglGetConfigAttrib              PFN_eglGetConfigAttrib
#define eglGetCurrentContext            PFN_eglGetCurrentContext
#define eglGetCurrentDisplay            PFN_eglGetCurrentDisplay
#define eglGetDisplay                   PFN_eglGetDisplay
#define eglGetError                     PFN_eglGetError
#define eglGetProcAddress               PFN_eglGetProcAddress
#define eglInitialize                   PFN_eglInitialize
#define eglMakeCurrent                  PFN_eglMakeCurrent
#define eglQueryString                  PFN_eglQueryString
#define eglReleaseTexImage              PFN_eglReleaseTexImage
#define eglSwapBuffers                  PFN_eglSwapBuffers
#define eglTerminate                    PFN_eglTerminate
#endif

#endif