SDL
2.0
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
SDL_egl_c.h
Go to the documentation of this file.
1
/*
2
Simple DirectMedia Layer
3
Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
4
5
This software is provided 'as-is', without any express or implied
6
warranty. In no event will the authors be held liable for any damages
7
arising from the use of this software.
8
9
Permission is granted to anyone to use this software for any purpose,
10
including commercial applications, and to alter it and redistribute it
11
freely, subject to the following restrictions:
12
13
1. The origin of this software must not be misrepresented; you must not
14
claim that you wrote the original software. If you use this software
15
in a product, an acknowledgment in the product documentation would be
16
appreciated but is not required.
17
2. Altered source versions must be plainly marked as such, and must not be
18
misrepresented as being the original software.
19
3. This notice may not be removed or altered from any source distribution.
20
*/
21
#include "../SDL_internal.h"
22
23
#ifndef SDL_egl_h_
24
#define SDL_egl_h_
25
26
#if SDL_VIDEO_OPENGL_EGL
27
28
#include "
SDL_egl.h
"
29
30
#include "
SDL_sysvideo.h
"
31
32
typedef
struct
SDL_EGL_VideoData
33
{
34
void
*egl_dll_handle, *dll_handle;
35
EGLDisplay
egl_display;
36
EGLConfig
egl_config;
37
int
egl_swapinterval;
38
int
egl_surfacetype;
39
int
egl_version_major, egl_version_minor;
40
41
EGLDisplay
(
EGLAPIENTRY
*
eglGetDisplay
) (
NativeDisplayType
display);
42
EGLDisplay
(
EGLAPIENTRY
*
eglGetPlatformDisplay
) (
EGLenum
platform,
43
void
*
native_display
,
44
const
EGLint
*
attrib_list
);
45
EGLDisplay
(
EGLAPIENTRY
*eglGetPlatformDisplayEXT) (
EGLenum
platform,
46
void
*
native_display
,
47
const
EGLint
*
attrib_list
);
48
EGLBoolean
(
EGLAPIENTRY
*
eglInitialize
) (
EGLDisplay
dpy
,
EGLint
* major,
49
EGLint
* minor);
50
EGLBoolean
(
EGLAPIENTRY
*
eglTerminate
) (
EGLDisplay
dpy
);
51
52
void
*(
EGLAPIENTRY
*
eglGetProcAddress
) (
const
char
* procName);
53
54
EGLBoolean
(
EGLAPIENTRY
*
eglChooseConfig
) (
EGLDisplay
dpy
,
55
const
EGLint
*
attrib_list
,
56
EGLConfig
* configs,
57
EGLint
config_size,
EGLint
* num_config);
58
59
EGLContext
(
EGLAPIENTRY
*
eglCreateContext
) (
EGLDisplay
dpy
,
60
EGLConfig
config
,
61
EGLContext
share_list,
62
const
EGLint
*
attrib_list
);
63
64
EGLBoolean
(
EGLAPIENTRY
*
eglDestroyContext
) (
EGLDisplay
dpy
,
EGLContext
ctx
);
65
66
EGLSurface
(
EGLAPIENTRY
*
eglCreatePbufferSurface
)(
EGLDisplay
dpy
,
EGLConfig
config
,
67
EGLint
const
*
attrib_list
);
68
69
EGLSurface
(
EGLAPIENTRY
*
eglCreateWindowSurface
) (
EGLDisplay
dpy
,
70
EGLConfig
config
,
71
NativeWindowType
window
,
72
const
EGLint
*
attrib_list
);
73
EGLBoolean
(
EGLAPIENTRY
*
eglDestroySurface
) (
EGLDisplay
dpy
,
EGLSurface
surface
);
74
75
EGLBoolean
(
EGLAPIENTRY
*
eglMakeCurrent
) (
EGLDisplay
dpy
,
EGLSurface
draw,
76
EGLSurface
read,
EGLContext
ctx
);
77
78
EGLBoolean
(
EGLAPIENTRY
*
eglSwapBuffers
) (
EGLDisplay
dpy
,
EGLSurface
draw);
79
80
EGLBoolean
(
EGLAPIENTRY
*
eglSwapInterval
) (
EGLDisplay
dpy
,
EGLint
interval);
81
82
const
char
*(
EGLAPIENTRY
*
eglQueryString
) (
EGLDisplay
dpy
,
EGLint
name
);
83
84
EGLBoolean
(
EGLAPIENTRY
*
eglGetConfigAttrib
) (
EGLDisplay
dpy
,
EGLConfig
config
,
85
EGLint
attribute
,
EGLint
*
value
);
86
87
EGLBoolean
(
EGLAPIENTRY
*
eglWaitNative
) (
EGLint
engine);
88
89
EGLBoolean
(
EGLAPIENTRY
*
eglWaitGL
)(
void
);
90
91
EGLBoolean
(
EGLAPIENTRY
*
eglBindAPI
)(
EGLenum
);
92
93
EGLint
(
EGLAPIENTRY
*
eglGetError
)(
void
);
94
95
} SDL_EGL_VideoData;
96
97
/* OpenGLES functions */
98
extern
int
SDL_EGL_GetAttribute(
_THIS
,
SDL_GLattr
attrib,
int
*
value
);
99
/* SDL_EGL_LoadLibrary can get a display for a specific platform (EGL_PLATFORM_*)
100
* or, if 0 is passed, let the implementation decide.
101
*/
102
extern
int
SDL_EGL_LoadLibrary(
_THIS
,
const
char
*
path
,
NativeDisplayType
native_display
,
EGLenum
platform);
103
extern
void
*SDL_EGL_GetProcAddress(
_THIS
,
const
char
*proc);
104
extern
void
SDL_EGL_UnloadLibrary(
_THIS
);
105
extern
int
SDL_EGL_ChooseConfig(
_THIS
);
106
extern
int
SDL_EGL_SetSwapInterval(
_THIS
,
int
interval);
107
extern
int
SDL_EGL_GetSwapInterval(
_THIS
);
108
extern
void
SDL_EGL_DeleteContext(
_THIS
,
SDL_GLContext
context
);
109
extern
EGLSurface
*SDL_EGL_CreateSurface(
_THIS
,
NativeWindowType
nw);
110
extern
void
SDL_EGL_DestroySurface(
_THIS
,
EGLSurface
egl_surface);
111
112
/* These need to be wrapped to get the surface for the window by the platform GLES implementation */
113
extern
SDL_GLContext
SDL_EGL_CreateContext(
_THIS
,
EGLSurface
egl_surface);
114
extern
int
SDL_EGL_MakeCurrent(
_THIS
,
EGLSurface
egl_surface,
SDL_GLContext
context
);
115
extern
int
SDL_EGL_SwapBuffers(
_THIS
,
EGLSurface
egl_surface);
116
117
/* SDL Error-reporting */
118
extern
int
SDL_EGL_SetErrorEx(
const
char
*
message
,
const
char
* eglFunctionName,
EGLint
eglErrorCode);
119
#define SDL_EGL_SetError(message, eglFunctionName) SDL_EGL_SetErrorEx(message, eglFunctionName, _this->egl_data->eglGetError())
120
121
/* A few of useful macros */
122
123
#define SDL_EGL_SwapWindow_impl(BACKEND) int \
124
BACKEND ## _GLES_SwapWindow(_THIS, SDL_Window * window) \
125
{\
126
return SDL_EGL_SwapBuffers(_this, ((SDL_WindowData *) window->driverdata)->egl_surface);\
127
}
128
129
#define SDL_EGL_MakeCurrent_impl(BACKEND) int \
130
BACKEND ## _GLES_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context) \
131
{\
132
if (window && context) { \
133
return SDL_EGL_MakeCurrent(_this, ((SDL_WindowData *) window->driverdata)->egl_surface, context); \
134
}\
135
else {\
136
return SDL_EGL_MakeCurrent(_this, NULL, NULL);\
137
}\
138
}
139
140
#define SDL_EGL_CreateContext_impl(BACKEND) SDL_GLContext \
141
BACKEND ## _GLES_CreateContext(_THIS, SDL_Window * window) \
142
{\
143
return SDL_EGL_CreateContext(_this, ((SDL_WindowData *) window->driverdata)->egl_surface);\
144
}
145
146
#endif
/* SDL_VIDEO_OPENGL_EGL */
147
148
#endif
/* SDL_egl_h_ */
149
150
/* vi: set ts=4 sw=4 expandtab: */
src
video
SDL_egl_c.h
Generated on Sun Jun 26 2022 23:07:17 for SDL by
1.8.1.2