CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
hrydgard

CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!

GitHub Repository: hrydgard/ppsspp
Path: blob/master/Common/GPU/OpenGL/gl3stub.c
Views: 1401
1
/*
2
* Copyright 2013 The Android Open Source Project
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*/
16
17
#include "ppsspp_config.h"
18
19
#include "Common/GPU/OpenGL/GLCommon.h"
20
21
#if defined(USING_GLES2)
22
#if !PPSSPP_PLATFORM(IOS)
23
#include "EGL/egl.h"
24
25
GLboolean gl3stubInit() {
26
#define FIND_PROC(s) s = (void*)eglGetProcAddress(#s)
27
FIND_PROC(glReadBuffer);
28
FIND_PROC(glDrawRangeElements);
29
FIND_PROC(glTexImage3D);
30
FIND_PROC(glTexSubImage3D);
31
FIND_PROC(glCopyTexSubImage3D);
32
FIND_PROC(glCompressedTexImage3D);
33
FIND_PROC(glCompressedTexSubImage3D);
34
FIND_PROC(glGenQueries);
35
FIND_PROC(glDeleteQueries);
36
FIND_PROC(glIsQuery);
37
FIND_PROC(glBeginQuery);
38
FIND_PROC(glEndQuery);
39
FIND_PROC(glGetQueryiv);
40
FIND_PROC(glGetQueryObjectuiv);
41
FIND_PROC(glUnmapBuffer);
42
FIND_PROC(glGetBufferPointerv);
43
FIND_PROC(glDrawBuffers);
44
FIND_PROC(glUniformMatrix2x3fv);
45
FIND_PROC(glUniformMatrix3x2fv);
46
FIND_PROC(glUniformMatrix2x4fv);
47
FIND_PROC(glUniformMatrix4x2fv);
48
FIND_PROC(glUniformMatrix3x4fv);
49
FIND_PROC(glUniformMatrix4x3fv);
50
FIND_PROC(glBlitFramebuffer);
51
FIND_PROC(glRenderbufferStorageMultisample);
52
FIND_PROC(glFramebufferTextureLayer);
53
FIND_PROC(glMapBufferRange);
54
FIND_PROC(glFlushMappedBufferRange);
55
FIND_PROC(glBindVertexArray);
56
FIND_PROC(glDeleteVertexArrays);
57
FIND_PROC(glGenVertexArrays);
58
FIND_PROC(glIsVertexArray);
59
FIND_PROC(glGetIntegeri_v);
60
FIND_PROC(glBeginTransformFeedback);
61
FIND_PROC(glEndTransformFeedback);
62
FIND_PROC(glBindBufferRange);
63
FIND_PROC(glBindBufferBase);
64
FIND_PROC(glTransformFeedbackVaryings);
65
FIND_PROC(glGetTransformFeedbackVarying);
66
FIND_PROC(glVertexAttribIPointer);
67
FIND_PROC(glGetVertexAttribIiv);
68
FIND_PROC(glGetVertexAttribIuiv);
69
FIND_PROC(glVertexAttribI4i);
70
FIND_PROC(glVertexAttribI4ui);
71
FIND_PROC(glVertexAttribI4iv);
72
FIND_PROC(glVertexAttribI4uiv);
73
FIND_PROC(glGetUniformuiv);
74
FIND_PROC(glGetFragDataLocation);
75
FIND_PROC(glUniform1ui);
76
FIND_PROC(glUniform2ui);
77
FIND_PROC(glUniform3ui);
78
FIND_PROC(glUniform4ui);
79
FIND_PROC(glUniform1uiv);
80
FIND_PROC(glUniform2uiv);
81
FIND_PROC(glUniform3uiv);
82
FIND_PROC(glUniform4uiv);
83
FIND_PROC(glClearBufferiv);
84
FIND_PROC(glClearBufferuiv);
85
FIND_PROC(glClearBufferfv);
86
FIND_PROC(glClearBufferfi);
87
FIND_PROC(glGetStringi);
88
FIND_PROC(glCopyBufferSubData);
89
FIND_PROC(glGetUniformIndices);
90
FIND_PROC(glGetActiveUniformsiv);
91
FIND_PROC(glGetUniformBlockIndex);
92
FIND_PROC(glGetActiveUniformBlockiv);
93
FIND_PROC(glGetActiveUniformBlockName);
94
FIND_PROC(glUniformBlockBinding);
95
FIND_PROC(glDrawArraysInstanced);
96
FIND_PROC(glDrawElementsInstanced);
97
FIND_PROC(glFenceSync);
98
FIND_PROC(glIsSync);
99
FIND_PROC(glDeleteSync);
100
FIND_PROC(glClientWaitSync);
101
FIND_PROC(glWaitSync);
102
FIND_PROC(glGetInteger64v);
103
FIND_PROC(glGetSynciv);
104
FIND_PROC(glGetInteger64i_v);
105
FIND_PROC(glGetBufferParameteri64v);
106
FIND_PROC(glGenSamplers);
107
FIND_PROC(glDeleteSamplers);
108
FIND_PROC(glIsSampler);
109
FIND_PROC(glBindSampler);
110
FIND_PROC(glSamplerParameteri);
111
FIND_PROC(glSamplerParameteriv);
112
FIND_PROC(glSamplerParameterf);
113
FIND_PROC(glSamplerParameterfv);
114
FIND_PROC(glGetSamplerParameteriv);
115
FIND_PROC(glGetSamplerParameterfv);
116
FIND_PROC(glVertexAttribDivisor);
117
FIND_PROC(glBindTransformFeedback);
118
FIND_PROC(glDeleteTransformFeedbacks);
119
FIND_PROC(glGenTransformFeedbacks);
120
FIND_PROC(glIsTransformFeedback);
121
FIND_PROC(glPauseTransformFeedback);
122
FIND_PROC(glResumeTransformFeedback);
123
FIND_PROC(glGetProgramBinary);
124
FIND_PROC(glProgramBinary);
125
FIND_PROC(glProgramParameteri);
126
FIND_PROC(glInvalidateFramebuffer);
127
FIND_PROC(glInvalidateSubFramebuffer);
128
FIND_PROC(glTexStorage2D);
129
FIND_PROC(glTexStorage3D);
130
FIND_PROC(glGetInternalformativ);
131
132
/* EXT_blend_func_extended */
133
FIND_PROC(glBindFragDataLocationIndexedEXT);
134
FIND_PROC(glBindFragDataLocationEXT);
135
FIND_PROC(glGetProgramResourceLocationIndexEXT);
136
FIND_PROC(glGetFragDataIndexEXT);
137
138
#ifdef GL_EXT_buffer_storage
139
/* EXT_buffer_storage */
140
FIND_PROC(glBufferStorageEXT);
141
#endif
142
143
/* OES_copy_image, etc. */
144
FIND_PROC(glCopyImageSubDataOES);
145
146
#undef FIND_PROC
147
148
if (!glReadBuffer ||
149
!glDrawRangeElements ||
150
!glTexImage3D ||
151
!glTexSubImage3D ||
152
!glCopyTexSubImage3D ||
153
!glCompressedTexImage3D ||
154
!glCompressedTexSubImage3D ||
155
!glGenQueries ||
156
!glDeleteQueries ||
157
!glIsQuery ||
158
!glBeginQuery ||
159
!glEndQuery ||
160
!glGetQueryiv ||
161
!glGetQueryObjectuiv ||
162
!glUnmapBuffer ||
163
!glGetBufferPointerv ||
164
!glDrawBuffers ||
165
!glUniformMatrix2x3fv ||
166
!glUniformMatrix3x2fv ||
167
!glUniformMatrix2x4fv ||
168
!glUniformMatrix4x2fv ||
169
!glUniformMatrix3x4fv ||
170
!glUniformMatrix4x3fv ||
171
!glBlitFramebuffer ||
172
!glRenderbufferStorageMultisample ||
173
!glFramebufferTextureLayer ||
174
!glMapBufferRange ||
175
!glFlushMappedBufferRange ||
176
!glBindVertexArray ||
177
!glDeleteVertexArrays ||
178
!glGenVertexArrays ||
179
!glIsVertexArray ||
180
!glGetIntegeri_v ||
181
!glBeginTransformFeedback ||
182
!glEndTransformFeedback ||
183
!glBindBufferRange ||
184
!glBindBufferBase ||
185
!glTransformFeedbackVaryings ||
186
!glGetTransformFeedbackVarying ||
187
!glVertexAttribIPointer ||
188
!glGetVertexAttribIiv ||
189
!glGetVertexAttribIuiv ||
190
!glVertexAttribI4i ||
191
!glVertexAttribI4ui ||
192
!glVertexAttribI4iv ||
193
!glVertexAttribI4uiv ||
194
!glGetUniformuiv ||
195
!glGetFragDataLocation ||
196
!glUniform1ui ||
197
!glUniform2ui ||
198
!glUniform3ui ||
199
!glUniform4ui ||
200
!glUniform1uiv ||
201
!glUniform2uiv ||
202
!glUniform3uiv ||
203
!glUniform4uiv ||
204
!glClearBufferiv ||
205
!glClearBufferuiv ||
206
!glClearBufferfv ||
207
!glClearBufferfi ||
208
!glGetStringi ||
209
!glCopyBufferSubData ||
210
!glGetUniformIndices ||
211
!glGetActiveUniformsiv ||
212
!glGetUniformBlockIndex ||
213
!glGetActiveUniformBlockiv ||
214
!glGetActiveUniformBlockName ||
215
!glUniformBlockBinding ||
216
!glDrawArraysInstanced ||
217
!glDrawElementsInstanced ||
218
!glFenceSync ||
219
!glIsSync ||
220
!glDeleteSync ||
221
!glClientWaitSync ||
222
!glWaitSync ||
223
!glGetInteger64v ||
224
!glGetSynciv ||
225
!glGetInteger64i_v ||
226
!glGetBufferParameteri64v ||
227
!glGenSamplers ||
228
!glDeleteSamplers ||
229
!glIsSampler ||
230
!glBindSampler ||
231
!glSamplerParameteri ||
232
!glSamplerParameteriv ||
233
!glSamplerParameterf ||
234
!glSamplerParameterfv ||
235
!glGetSamplerParameteriv ||
236
!glGetSamplerParameterfv ||
237
!glVertexAttribDivisor ||
238
!glBindTransformFeedback ||
239
!glDeleteTransformFeedbacks ||
240
!glGenTransformFeedbacks ||
241
!glIsTransformFeedback ||
242
!glPauseTransformFeedback ||
243
!glResumeTransformFeedback ||
244
!glGetProgramBinary ||
245
!glProgramBinary ||
246
!glProgramParameteri ||
247
!glInvalidateFramebuffer ||
248
!glInvalidateSubFramebuffer ||
249
!glTexStorage2D ||
250
!glTexStorage3D ||
251
!glGetInternalformativ)
252
{
253
return GL_FALSE;
254
}
255
256
return GL_TRUE;
257
}
258
259
/* Function pointer definitions */
260
GL_APICALL void (* GL_APIENTRY glReadBuffer) (GLenum mode);
261
GL_APICALL void (* GL_APIENTRY glDrawRangeElements) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices);
262
GL_APICALL void (* GL_APIENTRY glTexImage3D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
263
GL_APICALL void (* GL_APIENTRY glTexSubImage3D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels);
264
GL_APICALL void (* GL_APIENTRY glCopyTexSubImage3D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
265
GL_APICALL void (* GL_APIENTRY glCompressedTexImage3D) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data);
266
GL_APICALL void (* GL_APIENTRY glCompressedTexSubImage3D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data);
267
GL_APICALL void (* GL_APIENTRY glGenQueries) (GLsizei n, GLuint* ids);
268
GL_APICALL void (* GL_APIENTRY glDeleteQueries) (GLsizei n, const GLuint* ids);
269
GL_APICALL GLboolean (* GL_APIENTRY glIsQuery) (GLuint id);
270
GL_APICALL void (* GL_APIENTRY glBeginQuery) (GLenum target, GLuint id);
271
GL_APICALL void (* GL_APIENTRY glEndQuery) (GLenum target);
272
GL_APICALL void (* GL_APIENTRY glGetQueryiv) (GLenum target, GLenum pname, GLint* params);
273
GL_APICALL void (* GL_APIENTRY glGetQueryObjectuiv) (GLuint id, GLenum pname, GLuint* params);
274
GL_APICALL GLboolean (* GL_APIENTRY glUnmapBuffer) (GLenum target);
275
GL_APICALL void (* GL_APIENTRY glGetBufferPointerv) (GLenum target, GLenum pname, GLvoid** params);
276
GL_APICALL void (* GL_APIENTRY glDrawBuffers) (GLsizei n, const GLenum* bufs);
277
GL_APICALL void (* GL_APIENTRY glUniformMatrix2x3fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
278
GL_APICALL void (* GL_APIENTRY glUniformMatrix3x2fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
279
GL_APICALL void (* GL_APIENTRY glUniformMatrix2x4fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
280
GL_APICALL void (* GL_APIENTRY glUniformMatrix4x2fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
281
GL_APICALL void (* GL_APIENTRY glUniformMatrix3x4fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
282
GL_APICALL void (* GL_APIENTRY glUniformMatrix4x3fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
283
GL_APICALL void (* GL_APIENTRY glBlitFramebuffer) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
284
GL_APICALL void (* GL_APIENTRY glRenderbufferStorageMultisample) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
285
GL_APICALL void (* GL_APIENTRY glFramebufferTextureLayer) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
286
GL_APICALL GLvoid* (* GL_APIENTRY glMapBufferRange) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
287
GL_APICALL void (* GL_APIENTRY glFlushMappedBufferRange) (GLenum target, GLintptr offset, GLsizeiptr length);
288
GL_APICALL void (* GL_APIENTRY glBindVertexArray) (GLuint array);
289
GL_APICALL void (* GL_APIENTRY glDeleteVertexArrays) (GLsizei n, const GLuint* arrays);
290
GL_APICALL void (* GL_APIENTRY glGenVertexArrays) (GLsizei n, GLuint* arrays);
291
GL_APICALL GLboolean (* GL_APIENTRY glIsVertexArray) (GLuint array);
292
GL_APICALL void (* GL_APIENTRY glGetIntegeri_v) (GLenum target, GLuint index, GLint* data);
293
GL_APICALL void (* GL_APIENTRY glBeginTransformFeedback) (GLenum primitiveMode);
294
GL_APICALL void (* GL_APIENTRY glEndTransformFeedback) (void);
295
GL_APICALL void (* GL_APIENTRY glBindBufferRange) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
296
GL_APICALL void (* GL_APIENTRY glBindBufferBase) (GLenum target, GLuint index, GLuint buffer);
297
GL_APICALL void (* GL_APIENTRY glTransformFeedbackVaryings) (GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode);
298
GL_APICALL void (* GL_APIENTRY glGetTransformFeedbackVarying) (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name);
299
GL_APICALL void (* GL_APIENTRY glVertexAttribIPointer) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
300
GL_APICALL void (* GL_APIENTRY glGetVertexAttribIiv) (GLuint index, GLenum pname, GLint* params);
301
GL_APICALL void (* GL_APIENTRY glGetVertexAttribIuiv) (GLuint index, GLenum pname, GLuint* params);
302
GL_APICALL void (* GL_APIENTRY glVertexAttribI4i) (GLuint index, GLint x, GLint y, GLint z, GLint w);
303
GL_APICALL void (* GL_APIENTRY glVertexAttribI4ui) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
304
GL_APICALL void (* GL_APIENTRY glVertexAttribI4iv) (GLuint index, const GLint* v);
305
GL_APICALL void (* GL_APIENTRY glVertexAttribI4uiv) (GLuint index, const GLuint* v);
306
GL_APICALL void (* GL_APIENTRY glGetUniformuiv) (GLuint program, GLint location, GLuint* params);
307
GL_APICALL GLint (* GL_APIENTRY glGetFragDataLocation) (GLuint program, const GLchar *name);
308
GL_APICALL void (* GL_APIENTRY glUniform1ui) (GLint location, GLuint v0);
309
GL_APICALL void (* GL_APIENTRY glUniform2ui) (GLint location, GLuint v0, GLuint v1);
310
GL_APICALL void (* GL_APIENTRY glUniform3ui) (GLint location, GLuint v0, GLuint v1, GLuint v2);
311
GL_APICALL void (* GL_APIENTRY glUniform4ui) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
312
GL_APICALL void (* GL_APIENTRY glUniform1uiv) (GLint location, GLsizei count, const GLuint* value);
313
GL_APICALL void (* GL_APIENTRY glUniform2uiv) (GLint location, GLsizei count, const GLuint* value);
314
GL_APICALL void (* GL_APIENTRY glUniform3uiv) (GLint location, GLsizei count, const GLuint* value);
315
GL_APICALL void (* GL_APIENTRY glUniform4uiv) (GLint location, GLsizei count, const GLuint* value);
316
GL_APICALL void (* GL_APIENTRY glClearBufferiv) (GLenum buffer, GLint drawbuffer, const GLint* value);
317
GL_APICALL void (* GL_APIENTRY glClearBufferuiv) (GLenum buffer, GLint drawbuffer, const GLuint* value);
318
GL_APICALL void (* GL_APIENTRY glClearBufferfv) (GLenum buffer, GLint drawbuffer, const GLfloat* value);
319
GL_APICALL void (* GL_APIENTRY glClearBufferfi) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
320
GL_APICALL const GLubyte* (* GL_APIENTRY glGetStringi) (GLenum name, GLuint index);
321
GL_APICALL void (* GL_APIENTRY glCopyBufferSubData) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
322
GL_APICALL void (* GL_APIENTRY glGetUniformIndices) (GLuint program, GLsizei uniformCount, const GLchar* const* uniformNames, GLuint* uniformIndices);
323
GL_APICALL void (* GL_APIENTRY glGetActiveUniformsiv) (GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params);
324
GL_APICALL GLuint (* GL_APIENTRY glGetUniformBlockIndex) (GLuint program, const GLchar* uniformBlockName);
325
GL_APICALL void (* GL_APIENTRY glGetActiveUniformBlockiv) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params);
326
GL_APICALL void (* GL_APIENTRY glGetActiveUniformBlockName) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName);
327
GL_APICALL void (* GL_APIENTRY glUniformBlockBinding) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
328
GL_APICALL void (* GL_APIENTRY glDrawArraysInstanced) (GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
329
GL_APICALL void (* GL_APIENTRY glDrawElementsInstanced) (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices, GLsizei instanceCount);
330
GL_APICALL GLsync (* GL_APIENTRY glFenceSync) (GLenum condition, GLbitfield flags);
331
GL_APICALL GLboolean (* GL_APIENTRY glIsSync) (GLsync sync);
332
GL_APICALL void (* GL_APIENTRY glDeleteSync) (GLsync sync);
333
GL_APICALL GLenum (* GL_APIENTRY glClientWaitSync) (GLsync sync, GLbitfield flags, GLuint64 timeout);
334
GL_APICALL void (* GL_APIENTRY glWaitSync) (GLsync sync, GLbitfield flags, GLuint64 timeout);
335
GL_APICALL void (* GL_APIENTRY glGetInteger64v) (GLenum pname, GLint64* params);
336
GL_APICALL void (* GL_APIENTRY glGetSynciv) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values);
337
GL_APICALL void (* GL_APIENTRY glGetInteger64i_v) (GLenum target, GLuint index, GLint64* data);
338
GL_APICALL void (* GL_APIENTRY glGetBufferParameteri64v) (GLenum target, GLenum pname, GLint64* params);
339
GL_APICALL void (* GL_APIENTRY glGenSamplers) (GLsizei count, GLuint* samplers);
340
GL_APICALL void (* GL_APIENTRY glDeleteSamplers) (GLsizei count, const GLuint* samplers);
341
GL_APICALL GLboolean (* GL_APIENTRY glIsSampler) (GLuint sampler);
342
GL_APICALL void (* GL_APIENTRY glBindSampler) (GLuint unit, GLuint sampler);
343
GL_APICALL void (* GL_APIENTRY glSamplerParameteri) (GLuint sampler, GLenum pname, GLint param);
344
GL_APICALL void (* GL_APIENTRY glSamplerParameteriv) (GLuint sampler, GLenum pname, const GLint* param);
345
GL_APICALL void (* GL_APIENTRY glSamplerParameterf) (GLuint sampler, GLenum pname, GLfloat param);
346
GL_APICALL void (* GL_APIENTRY glSamplerParameterfv) (GLuint sampler, GLenum pname, const GLfloat* param);
347
GL_APICALL void (* GL_APIENTRY glGetSamplerParameteriv) (GLuint sampler, GLenum pname, GLint* params);
348
GL_APICALL void (* GL_APIENTRY glGetSamplerParameterfv) (GLuint sampler, GLenum pname, GLfloat* params);
349
GL_APICALL void (* GL_APIENTRY glVertexAttribDivisor) (GLuint index, GLuint divisor);
350
GL_APICALL void (* GL_APIENTRY glBindTransformFeedback) (GLenum target, GLuint id);
351
GL_APICALL void (* GL_APIENTRY glDeleteTransformFeedbacks) (GLsizei n, const GLuint* ids);
352
GL_APICALL void (* GL_APIENTRY glGenTransformFeedbacks) (GLsizei n, GLuint* ids);
353
GL_APICALL GLboolean (* GL_APIENTRY glIsTransformFeedback) (GLuint id);
354
GL_APICALL void (* GL_APIENTRY glPauseTransformFeedback) (void);
355
GL_APICALL void (* GL_APIENTRY glResumeTransformFeedback) (void);
356
GL_APICALL void (* GL_APIENTRY glGetProgramBinary) (GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary);
357
GL_APICALL void (* GL_APIENTRY glProgramBinary) (GLuint program, GLenum binaryFormat, const GLvoid* binary, GLsizei length);
358
GL_APICALL void (* GL_APIENTRY glProgramParameteri) (GLuint program, GLenum pname, GLint value);
359
GL_APICALL void (* GL_APIENTRY glInvalidateFramebuffer) (GLenum target, GLsizei numAttachments, const GLenum* attachments);
360
GL_APICALL void (* GL_APIENTRY glInvalidateSubFramebuffer) (GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height);
361
GL_APICALL void (* GL_APIENTRY glTexStorage2D) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
362
GL_APICALL void (* GL_APIENTRY glTexStorage3D) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
363
GL_APICALL void (* GL_APIENTRY glGetInternalformativ) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params);
364
365
/* EXT_blend_func_extended */
366
GL_APICALL void (* GL_APIENTRY glBindFragDataLocationIndexedEXT) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
367
GL_APICALL void (* GL_APIENTRY glBindFragDataLocationEXT) (GLuint program, GLuint color, const GLchar *name);
368
GL_APICALL GLint (* GL_APIENTRY glGetProgramResourceLocationIndexEXT) (GLuint program, GLenum programInterface, const GLchar *name);
369
GL_APICALL GLint (* GL_APIENTRY glGetFragDataIndexEXT) (GLuint program, const GLchar *name);
370
371
#ifdef GL_EXT_buffer_storage
372
/* EXT_buffer_storage */
373
GL_APICALL void (* GL_APIENTRY glBufferStorageEXT) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
374
#endif
375
376
/* OES_copy_image, etc. */
377
GL_APICALL void (* GL_APIENTRY glCopyImageSubDataOES) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
378
379
#else
380
381
GLboolean gl3stubInit() {
382
return GL_TRUE;
383
}
384
385
#endif // PPSPP_PLATFORM(IOS)
386
387
#endif // GLES2
388
389
390