-
Notifications
You must be signed in to change notification settings - Fork 14
/
eglwrap.cpp
198 lines (165 loc) · 5.68 KB
/
eglwrap.cpp
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
/*
Copyright (C) 2007-2009 Olli Hinkka
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "egl.h"
#include "gl.h"
#include "glesinterface.h"
#include <string.h>
extern "C++" GlESInterface *glEsImpl;
extern "C++" void FlushOnStateChange( );
void APIENTRY gl_unimplemented( GLenum none );
EGLint eglGetError( void )
{
return glEsImpl->eglGetError( );
}
EGLDisplay eglGetDisplay( NativeDisplayType display )
{
return glEsImpl->eglGetDisplay( display );
}
EGLBoolean eglInitialize( EGLDisplay dpy, EGLint *major, EGLint *minor )
{
return glEsImpl->eglInitialize( dpy, major, minor );
}
EGLBoolean eglTerminate( EGLDisplay dpy )
{
return glEsImpl->eglTerminate( dpy );
}
const char *eglQueryString( EGLDisplay dpy, EGLint name )
{
return glEsImpl->eglQueryString( dpy, name );
}
#if defined( __MULTITEXTURE_SUPPORT__ )
extern "C" void glMultiTexCoord2fARB( GLenum target, GLfloat s, GLfloat t );
#endif
void *eglGetProcAddress( const char *procname )
{
#if defined( __MULTITEXTURE_SUPPORT__ )
if ( !strcmp( procname, "glMultiTexCoord2fARB" ) )
{
return (void *)&GL_MANGLE(glMultiTexCoord2fARB);
}
else if ( !strcmp( procname, "glActiveTextureARB" ) )
{
return (void *)&GL_MANGLE(glActiveTexture);
}
else if ( !strcmp( procname, "glClientActiveTextureARB" ) )
{
return (void *)&GL_MANGLE(glClientActiveTexture);
}
#endif
return (void *)glEsImpl->eglGetProcAddress( procname );
}
EGLBoolean eglGetConfigs( EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config )
{
return glEsImpl->eglGetConfigs( dpy, configs, config_size, num_config );
}
EGLBoolean eglChooseConfig( EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config )
{
return glEsImpl->eglChooseConfig( dpy, attrib_list, configs, config_size, num_config );
}
EGLBoolean eglGetConfigAttrib( EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value )
{
return glEsImpl->eglGetConfigAttrib( dpy, config, attribute, value );
}
EGLSurface eglCreateWindowSurface( EGLDisplay dpy, EGLConfig config, NativeWindowType window, const EGLint *attrib_list )
{
return glEsImpl->eglCreateWindowSurface( dpy, config, window, attrib_list );
}
EGLSurface eglCreatePixmapSurface( EGLDisplay dpy, EGLConfig config, NativePixmapType pixmap, const EGLint *attrib_list )
{
return glEsImpl->eglCreatePixmapSurface( dpy, config, pixmap, attrib_list );
}
EGLSurface eglCreatePbufferSurface( EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list )
{
return glEsImpl->eglCreatePbufferSurface( dpy, config, attrib_list );
}
EGLBoolean eglDestroySurface( EGLDisplay dpy, EGLSurface surface )
{
return glEsImpl->eglDestroySurface( dpy, surface );
}
EGLBoolean eglQuerySurface( EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value )
{
return glEsImpl->eglQuerySurface( dpy, surface, attribute, value );
}
/* EGL 1.1 render-to-texture APIs */
EGLBoolean eglSurfaceAttrib( EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value )
{
return glEsImpl->eglSurfaceAttrib( dpy, surface, attribute, value );
}
EGLBoolean eglBindTexImage( EGLDisplay dpy, EGLSurface surface, EGLint buffer )
{
return glEsImpl->eglBindTexImage( dpy, surface, buffer );
}
EGLBoolean eglReleaseTexImage( EGLDisplay dpy, EGLSurface surface, EGLint buffer )
{
return glEsImpl->eglReleaseTexImage( dpy, surface, buffer );
}
/* EGL 1.1 swap control API */
EGLBoolean eglSwapInterval( EGLDisplay dpy, EGLint interval )
{
return glEsImpl->eglSwapInterval( dpy, interval );
}
EGLContext eglCreateContext( EGLDisplay dpy, EGLConfig config, EGLContext share_list, const EGLint *attrib_list )
{
return glEsImpl->eglCreateContext( dpy, config, share_list, attrib_list );
}
EGLBoolean eglDestroyContext( EGLDisplay dpy, EGLContext ctx )
{
return glEsImpl->eglDestroyContext( dpy, ctx );
}
EGLBoolean eglMakeCurrent( EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx )
{
FlushOnStateChange( );
return glEsImpl->eglMakeCurrent( dpy, draw, read, ctx );
}
EGLContext eglGetCurrentContext( void )
{
return glEsImpl->eglGetCurrentContext( );
}
EGLSurface eglGetCurrentSurface( EGLint readdraw )
{
if ( (void *)glEsImpl->eglGetCurrentSurface == (void *)gl_unimplemented )
return EGL_NO_SURFACE;
return glEsImpl->eglGetCurrentSurface( readdraw );
}
EGLDisplay eglGetCurrentDisplay( void )
{
if ( (void *)glEsImpl->eglGetCurrentDisplay == (void *)gl_unimplemented )
return EGL_NO_DISPLAY;
return glEsImpl->eglGetCurrentDisplay( );
}
EGLBoolean eglQueryContext( EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value )
{
return glEsImpl->eglQueryContext( dpy, ctx, attribute, value );
}
EGLBoolean eglWaitGL( void )
{
FlushOnStateChange( );
return glEsImpl->eglWaitGL( );
}
EGLBoolean eglWaitNative( EGLint engine )
{
FlushOnStateChange( );
return glEsImpl->eglWaitNative( engine );
}
EGLBoolean eglSwapBuffers( EGLDisplay dpy, EGLSurface draw )
{
FlushOnStateChange( );
return glEsImpl->eglSwapBuffers( dpy, draw );
}
EGLBoolean eglCopyBuffers( EGLDisplay dpy, EGLSurface surface, NativePixmapType target )
{
FlushOnStateChange( );
return glEsImpl->eglCopyBuffers( dpy, surface, target );
}