OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/gl/gl_gl_api_implementation.h" | 5 #include "ui/gl/gl_gl_api_implementation.h" |
6 | 6 |
7 #include "ui/gl/gl_context.h" | |
8 #include "ui/gl/gl_state_restorer.h" | |
9 | |
7 namespace gfx { | 10 namespace gfx { |
8 | 11 |
9 RealGLApi* g_real_gl; | 12 RealGLApi* g_real_gl; |
10 | 13 |
11 void InitializeGLBindingsGL() { | 14 void InitializeGLBindingsGL() { |
12 g_driver_gl.InitializeBindings(); | 15 g_driver_gl.InitializeBindings(); |
13 if (!g_real_gl) { | 16 if (!g_real_gl) { |
14 g_real_gl = new RealGLApi(); | 17 g_real_gl = new RealGLApi(); |
15 } | 18 } |
16 g_real_gl->Initialize(&g_driver_gl); | 19 g_real_gl->Initialize(&g_driver_gl); |
17 g_current_gl_context = g_real_gl; | 20 SetGLToRealGLApi(); |
21 } | |
22 | |
23 GLApi* GetCurrentGLApi() { | |
24 return g_current_gl_context; | |
25 } | |
26 | |
27 void SetGLApi(GLApi* api) { | |
28 g_current_gl_context = api; | |
29 } | |
30 | |
31 void SetGLToRealGLApi() { | |
32 SetGLApi(g_real_gl); | |
18 } | 33 } |
19 | 34 |
20 void InitializeGLExtensionBindingsGL(GLContext* context) { | 35 void InitializeGLExtensionBindingsGL(GLContext* context) { |
21 g_driver_gl.InitializeExtensionBindings(context); | 36 g_driver_gl.InitializeExtensionBindings(context); |
22 } | 37 } |
23 | 38 |
24 void InitializeDebugGLBindingsGL() { | 39 void InitializeDebugGLBindingsGL() { |
25 g_driver_gl.InitializeDebugBindings(); | 40 g_driver_gl.InitializeDebugBindings(); |
26 } | 41 } |
27 | 42 |
28 void ClearGLBindingsGL() { | 43 void ClearGLBindingsGL() { |
29 if (g_real_gl) { | 44 if (g_real_gl) { |
30 delete g_real_gl; | 45 delete g_real_gl; |
31 g_real_gl = NULL; | 46 g_real_gl = NULL; |
32 } | 47 } |
33 g_current_gl_context = NULL; | 48 g_current_gl_context = NULL; |
34 g_driver_gl.ClearBindings(); | 49 g_driver_gl.ClearBindings(); |
35 } | 50 } |
36 | 51 |
37 GLApi::GLApi() { | 52 GLApi::GLApi() { |
38 } | 53 } |
39 | 54 |
40 GLApi::~GLApi() { | 55 GLApi::~GLApi() { |
41 } | 56 } |
42 | 57 |
43 RealGLApi::RealGLApi() { | 58 RealGLApi::RealGLApi() { |
44 } | 59 } |
45 | 60 |
61 RealGLApi::~RealGLApi() { | |
62 } | |
63 | |
46 void RealGLApi::Initialize(DriverGL* driver) { | 64 void RealGLApi::Initialize(DriverGL* driver) { |
47 driver_ = driver; | 65 driver_ = driver; |
48 } | 66 } |
49 | 67 |
68 VirtualGLApi::VirtualGLApi() | |
69 : driver_(NULL), | |
70 real_context_(NULL), | |
71 current_context_(NULL), | |
72 current_surface_(NULL) { | |
73 } | |
74 | |
75 VirtualGLApi::~VirtualGLApi() { | |
76 } | |
77 | |
78 void VirtualGLApi::Initialize(DriverGL* driver, GLContext* real_context) { | |
79 driver_ = driver; | |
80 real_context_ = real_context; | |
81 } | |
82 | |
83 bool VirtualGLApi::MakeCurrent(GLContext* virtual_context, GLSurface* surface) { | |
84 bool switched_contexts = g_current_gl_context != this; | |
85 if (switched_contexts || surface != current_surface_) { | |
86 // TODO: Emit warning on Android? | |
87 if (!real_context_->MakeCurrent(surface)) { | |
88 return false; | |
89 } | |
90 current_surface_ = surface; | |
91 } | |
92 if (switched_contexts || virtual_context != current_context_) { | |
93 current_context_ = virtual_context; | |
94 // Set all state that is different from the real state | |
95 // NOTE: !!! This is a temporary implementation that just restores all | |
96 // state to let us test that it works. | |
97 // TODO: ASAP, change this to something that only restores the state | |
98 // needed for individual GL calls. | |
99 GLApi* temp = GetCurrentGLApi(); | |
100 SetGLToRealGLApi(); | |
101 virtual_context->GetGLStateRestorer()->RestoreState(); | |
102 SetGLApi(temp); | |
103 } | |
104 SetGLApi(this); | |
105 return true; | |
106 } | |
107 | |
108 void VirtualGLApi::glActiveTextureFn(GLenum texture) { | |
109 driver_->fn.glActiveTextureFn(texture); | |
110 } | |
111 | |
112 void VirtualGLApi::glAttachShaderFn(GLuint program, GLuint shader) { | |
113 driver_->fn.glAttachShaderFn(program, shader); | |
114 } | |
115 | |
116 void VirtualGLApi::glBeginQueryFn(GLenum target, GLuint id) { | |
117 driver_->fn.glBeginQueryFn(target, id); | |
118 } | |
119 | |
120 void VirtualGLApi::glBeginQueryARBFn(GLenum target, GLuint id) { | |
121 driver_->fn.glBeginQueryARBFn(target, id); | |
122 } | |
123 | |
124 void VirtualGLApi::glBindAttribLocationFn( | |
125 GLuint program, GLuint index, const char* name) { | |
126 driver_->fn.glBindAttribLocationFn(program, index, name); | |
127 } | |
128 | |
129 void VirtualGLApi::glBindBufferFn(GLenum target, GLuint buffer) { | |
130 driver_->fn.glBindBufferFn(target, buffer); | |
131 } | |
132 | |
133 void VirtualGLApi::glBindFragDataLocationFn( | |
134 GLuint program, GLuint colorNumber, const char* name) { | |
135 driver_->fn.glBindFragDataLocationFn(program, colorNumber, name); | |
136 } | |
137 | |
138 void VirtualGLApi::glBindFragDataLocationIndexedFn( | |
139 GLuint program, GLuint colorNumber, GLuint index, const char* name) { | |
140 driver_->fn.glBindFragDataLocationIndexedFn( | |
141 program, colorNumber, index, name); | |
142 } | |
143 | |
144 void VirtualGLApi::glBindFramebufferEXTFn(GLenum target, GLuint framebuffer) { | |
145 driver_->fn.glBindFramebufferEXTFn(target, framebuffer); | |
146 } | |
147 | |
148 void VirtualGLApi::glBindRenderbufferEXTFn(GLenum target, GLuint renderbuffer) { | |
149 driver_->fn.glBindRenderbufferEXTFn(target, renderbuffer); | |
150 } | |
151 | |
152 void VirtualGLApi::glBindTextureFn(GLenum target, GLuint texture) { | |
153 driver_->fn.glBindTextureFn(target, texture); | |
154 } | |
155 | |
156 void VirtualGLApi::glBlendColorFn( | |
157 GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { | |
158 driver_->fn.glBlendColorFn(red, green, blue, alpha); | |
159 } | |
160 | |
161 void VirtualGLApi::glBlendEquationFn( GLenum mode ) { | |
162 driver_->fn.glBlendEquationFn( mode ); | |
163 } | |
164 | |
165 void VirtualGLApi::glBlendEquationSeparateFn(GLenum modeRGB, GLenum modeAlpha) { | |
166 driver_->fn.glBlendEquationSeparateFn(modeRGB, modeAlpha); | |
167 } | |
168 | |
169 void VirtualGLApi::glBlendFuncFn(GLenum sfactor, GLenum dfactor) { | |
170 driver_->fn.glBlendFuncFn(sfactor, dfactor); | |
171 } | |
172 | |
173 void VirtualGLApi::glBlendFuncSeparateFn( | |
174 GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) { | |
175 driver_->fn.glBlendFuncSeparateFn(srcRGB, dstRGB, srcAlpha, dstAlpha); | |
176 } | |
177 | |
178 void VirtualGLApi::glBlitFramebufferEXTFn( | |
179 GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, | |
180 GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, | |
181 GLbitfield mask, GLenum filter) { | |
182 driver_->fn.glBlitFramebufferEXTFn( | |
183 srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); | |
184 } | |
185 | |
186 void VirtualGLApi::glBlitFramebufferANGLEFn( | |
187 GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, | |
188 GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, | |
189 GLbitfield mask, GLenum filter) { | |
190 driver_->fn.glBlitFramebufferANGLEFn( | |
191 srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); | |
192 } | |
193 | |
194 void VirtualGLApi::glBufferDataFn( | |
195 GLenum target, GLsizei size, const void* data, GLenum usage) { | |
196 driver_->fn.glBufferDataFn(target, size, data, usage); | |
197 } | |
198 | |
199 void VirtualGLApi::glBufferSubDataFn( | |
200 GLenum target, GLint offset, GLsizei size, const void* data) { | |
201 driver_->fn.glBufferSubDataFn(target, offset, size, data); | |
202 } | |
203 | |
204 GLenum VirtualGLApi::glCheckFramebufferStatusEXTFn(GLenum target) { | |
205 return driver_->fn.glCheckFramebufferStatusEXTFn(target); | |
206 } | |
207 | |
208 void VirtualGLApi::glClearFn(GLbitfield mask) { | |
209 driver_->fn.glClearFn(mask); | |
210 } | |
211 | |
212 void VirtualGLApi::glClearColorFn( | |
213 GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { | |
214 driver_->fn.glClearColorFn(red, green, blue, alpha); | |
215 } | |
216 | |
217 void VirtualGLApi::glClearDepthFn(GLclampd depth) { | |
218 driver_->fn.glClearDepthFn(depth); | |
219 } | |
220 | |
221 void VirtualGLApi::glClearDepthfFn(GLclampf depth) { | |
222 driver_->fn.glClearDepthfFn(depth); | |
223 } | |
224 | |
225 void VirtualGLApi::glClearStencilFn(GLint s) { | |
226 driver_->fn.glClearStencilFn(s); | |
227 } | |
228 | |
229 void VirtualGLApi::glColorMaskFn( | |
230 GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) { | |
231 driver_->fn.glColorMaskFn(red, green, blue, alpha); | |
232 } | |
233 | |
234 void VirtualGLApi::glCompileShaderFn(GLuint shader) { | |
235 driver_->fn.glCompileShaderFn(shader); | |
236 } | |
237 | |
238 void VirtualGLApi::glCompressedTexImage2DFn( | |
239 GLenum target, GLint level, GLenum internalformat, | |
240 GLsizei width, GLsizei height, GLint border, | |
241 GLsizei imageSize, const void* data) { | |
242 driver_->fn.glCompressedTexImage2DFn( | |
243 target, level, internalformat, width, height, border, imageSize, data); | |
244 } | |
245 | |
246 void VirtualGLApi::glCompressedTexSubImage2DFn( | |
247 GLenum target, GLint level, GLint xoffset, GLint yoffset, | |
248 GLsizei width, GLsizei height, GLenum format, | |
249 GLsizei imageSize, const void* data) { | |
250 driver_->fn.glCompressedTexSubImage2DFn( | |
251 target, level, xoffset, yoffset, width, height, format, imageSize, data); | |
252 } | |
253 | |
254 void VirtualGLApi::glCopyTexImage2DFn( | |
255 GLenum target, GLint level, GLenum internalformat, | |
256 GLint x, GLint y, GLsizei width, GLsizei height, GLint border) { | |
257 driver_->fn.glCopyTexImage2DFn( | |
258 target, level, internalformat, x, y, width, height, border); | |
259 } | |
260 | |
261 void VirtualGLApi::glCopyTexSubImage2DFn( | |
262 GLenum target, GLint level, GLint xoffset, GLint yoffset, | |
263 GLint x, GLint y, GLsizei width, GLsizei height) { | |
264 driver_->fn.glCopyTexSubImage2DFn( | |
265 target, level, xoffset, yoffset, x, y, width, height); | |
266 } | |
267 | |
268 GLuint VirtualGLApi::glCreateProgramFn(void) { | |
269 return driver_->fn.glCreateProgramFn(); | |
270 } | |
271 | |
272 GLuint VirtualGLApi::glCreateShaderFn(GLenum type) { | |
273 return driver_->fn.glCreateShaderFn(type); | |
274 } | |
275 | |
276 void VirtualGLApi::glCullFaceFn(GLenum mode) { | |
277 driver_->fn.glCullFaceFn(mode); | |
278 } | |
279 | |
280 void VirtualGLApi::glDeleteBuffersARBFn(GLsizei n, const GLuint* buffers) { | |
281 driver_->fn.glDeleteBuffersARBFn(n, buffers); | |
282 } | |
283 | |
284 void VirtualGLApi::glDeleteFramebuffersEXTFn( | |
285 GLsizei n, const GLuint* framebuffers) { | |
286 driver_->fn.glDeleteFramebuffersEXTFn(n, framebuffers); | |
287 } | |
288 | |
289 void VirtualGLApi::glDeleteProgramFn(GLuint program) { | |
290 driver_->fn.glDeleteProgramFn(program); | |
291 } | |
292 | |
293 void VirtualGLApi::glDeleteQueriesFn(GLsizei n, const GLuint* ids) { | |
294 driver_->fn.glDeleteQueriesFn(n, ids); | |
295 } | |
296 | |
297 void VirtualGLApi::glDeleteQueriesARBFn(GLsizei n, const GLuint* ids) { | |
298 driver_->fn.glDeleteQueriesARBFn(n, ids); | |
299 } | |
300 | |
301 void VirtualGLApi::glDeleteRenderbuffersEXTFn( | |
302 GLsizei n, const GLuint* renderbuffers) { | |
303 driver_->fn.glDeleteRenderbuffersEXTFn(n, renderbuffers); | |
304 } | |
305 | |
306 void VirtualGLApi::glDeleteShaderFn(GLuint shader) { | |
307 driver_->fn.glDeleteShaderFn(shader); | |
308 } | |
309 | |
310 void VirtualGLApi::glDeleteTexturesFn(GLsizei n, const GLuint* textures) { | |
311 driver_->fn.glDeleteTexturesFn(n, textures); | |
312 } | |
313 | |
314 void VirtualGLApi::glDepthFuncFn(GLenum func) { | |
315 driver_->fn.glDepthFuncFn(func); | |
316 } | |
317 | |
318 void VirtualGLApi::glDepthMaskFn(GLboolean flag) { | |
319 driver_->fn.glDepthMaskFn(flag); | |
320 } | |
321 | |
322 void VirtualGLApi::glDepthRangeFn(GLclampd zNear, GLclampd zFar) { | |
323 driver_->fn.glDepthRangeFn(zNear, zFar); | |
324 } | |
325 | |
326 void VirtualGLApi::glDepthRangefFn(GLclampf zNear, GLclampf zFar) { | |
327 driver_->fn.glDepthRangefFn(zNear, zFar); | |
328 } | |
329 | |
330 void VirtualGLApi::glDetachShaderFn(GLuint program, GLuint shader) { | |
331 driver_->fn.glDetachShaderFn(program, shader); | |
332 } | |
333 | |
334 void VirtualGLApi::glDisableFn(GLenum cap) { | |
335 driver_->fn.glDisableFn(cap); | |
336 } | |
337 | |
338 void VirtualGLApi::glDisableVertexAttribArrayFn(GLuint index) { | |
339 driver_->fn.glDisableVertexAttribArrayFn(index); | |
340 } | |
341 | |
342 void VirtualGLApi::glDrawArraysFn(GLenum mode, GLint first, GLsizei count) { | |
343 driver_->fn.glDrawArraysFn(mode, first, count); | |
344 } | |
345 | |
346 void VirtualGLApi::glDrawBufferFn(GLenum mode) { | |
347 driver_->fn.glDrawBufferFn(mode); | |
348 } | |
349 | |
350 void VirtualGLApi::glDrawBuffersARBFn(GLsizei n, const GLenum* bufs) { | |
351 driver_->fn.glDrawBuffersARBFn(n, bufs); | |
352 } | |
353 | |
354 void VirtualGLApi::glDrawElementsFn( | |
355 GLenum mode, GLsizei count, GLenum type, const void* indices) { | |
356 driver_->fn.glDrawElementsFn(mode, count, type, indices); | |
357 } | |
358 | |
359 void VirtualGLApi::glEGLImageTargetTexture2DOESFn( | |
360 GLenum target, GLeglImageOES image) { | |
361 driver_->fn.glEGLImageTargetTexture2DOESFn(target, image); | |
362 } | |
363 | |
364 void VirtualGLApi::glEGLImageTargetRenderbufferStorageOESFn( | |
365 GLenum target, GLeglImageOES image) { | |
366 driver_->fn.glEGLImageTargetRenderbufferStorageOESFn(target, image); | |
367 } | |
368 | |
369 void VirtualGLApi::glEnableFn(GLenum cap) { | |
370 driver_->fn.glEnableFn(cap); | |
371 } | |
372 | |
373 void VirtualGLApi::glEnableVertexAttribArrayFn(GLuint index) { | |
374 driver_->fn.glEnableVertexAttribArrayFn(index); | |
375 } | |
376 | |
377 void VirtualGLApi::glEndQueryFn(GLenum target) { | |
378 driver_->fn.glEndQueryFn(target); | |
379 } | |
380 | |
381 void VirtualGLApi::glEndQueryARBFn(GLenum target) { | |
382 driver_->fn.glEndQueryARBFn(target); | |
383 } | |
384 | |
385 void VirtualGLApi::glFinishFn(void) { | |
386 driver_->fn.glFinishFn(); | |
387 } | |
388 | |
389 void VirtualGLApi::glFlushFn(void) { | |
390 driver_->fn.glFlushFn(); | |
391 } | |
392 | |
393 void VirtualGLApi::glFramebufferRenderbufferEXTFn( | |
394 GLenum target, GLenum attachment, | |
395 GLenum renderbuffertarget, GLuint renderbuffer) { | |
396 driver_->fn.glFramebufferRenderbufferEXTFn( | |
397 target, attachment, renderbuffertarget, renderbuffer); | |
398 } | |
399 | |
400 void VirtualGLApi::glFramebufferTexture2DEXTFn( | |
401 GLenum target, GLenum attachment, | |
402 GLenum textarget, GLuint texture, GLint level) { | |
403 driver_->fn.glFramebufferTexture2DEXTFn( | |
404 target, attachment, textarget, texture, level); | |
405 } | |
406 | |
407 void VirtualGLApi::glFrontFaceFn(GLenum mode) { | |
408 driver_->fn.glFrontFaceFn(mode); | |
409 } | |
410 | |
411 void VirtualGLApi::glGenBuffersARBFn(GLsizei n, GLuint* buffers) { | |
412 driver_->fn.glGenBuffersARBFn(n, buffers); | |
413 } | |
414 | |
415 void VirtualGLApi::glGenQueriesFn(GLsizei n, GLuint* ids) { | |
416 driver_->fn.glGenQueriesFn(n, ids); | |
417 } | |
418 | |
419 void VirtualGLApi::glGenQueriesARBFn(GLsizei n, GLuint* ids) { | |
420 driver_->fn.glGenQueriesARBFn(n, ids); | |
421 } | |
422 | |
423 void VirtualGLApi::glGenerateMipmapEXTFn(GLenum target) { | |
424 driver_->fn.glGenerateMipmapEXTFn(target); | |
425 } | |
426 | |
427 void VirtualGLApi::glGenFramebuffersEXTFn(GLsizei n, GLuint* framebuffers) { | |
428 driver_->fn.glGenFramebuffersEXTFn(n, framebuffers); | |
429 } | |
430 | |
431 void VirtualGLApi::glGenRenderbuffersEXTFn(GLsizei n, GLuint* renderbuffers) { | |
432 driver_->fn.glGenRenderbuffersEXTFn(n, renderbuffers); | |
433 } | |
434 | |
435 void VirtualGLApi::glGenTexturesFn(GLsizei n, GLuint* textures) { | |
436 driver_->fn.glGenTexturesFn(n, textures); | |
437 } | |
438 | |
439 void VirtualGLApi::glGetActiveAttribFn( | |
440 GLuint program, GLuint index, GLsizei bufsize, | |
441 GLsizei* length, GLint* size, GLenum* type, char* name) { | |
442 driver_->fn.glGetActiveAttribFn( | |
443 program, index, bufsize, length, size, type, name); | |
444 } | |
445 | |
446 void VirtualGLApi::glGetActiveUniformFn( | |
447 GLuint program, GLuint index, GLsizei bufsize, | |
448 GLsizei* length, GLint* size, GLenum* type, char* name) { | |
449 driver_->fn.glGetActiveUniformFn( | |
450 program, index, bufsize, length, size, type, name); | |
451 } | |
452 | |
453 void VirtualGLApi::glGetAttachedShadersFn( | |
454 GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders) { | |
455 driver_->fn.glGetAttachedShadersFn(program, maxcount, count, shaders); | |
456 } | |
457 | |
458 GLint VirtualGLApi::glGetAttribLocationFn(GLuint program, const char* name) { | |
459 return driver_->fn.glGetAttribLocationFn(program, name); | |
460 } | |
461 | |
462 void VirtualGLApi::glGetBooleanvFn(GLenum pname, GLboolean* params) { | |
463 driver_->fn.glGetBooleanvFn(pname, params); | |
464 } | |
465 | |
466 void VirtualGLApi::glGetBufferParameterivFn( | |
467 GLenum target, GLenum pname, GLint* params) { | |
468 driver_->fn.glGetBufferParameterivFn(target, pname, params); | |
469 } | |
470 | |
471 GLenum VirtualGLApi::glGetErrorFn(void) { | |
472 return driver_->fn.glGetErrorFn(); | |
473 } | |
474 | |
475 void VirtualGLApi::glGetFloatvFn(GLenum pname, GLfloat* params) { | |
476 driver_->fn.glGetFloatvFn(pname, params); | |
477 } | |
478 | |
479 void VirtualGLApi::glGetFramebufferAttachmentParameterivEXTFn( | |
480 GLenum target, GLenum attachment, GLenum pname, GLint* params) { | |
481 driver_->fn.glGetFramebufferAttachmentParameterivEXTFn( | |
482 target, attachment, pname, params); | |
483 } | |
484 | |
485 GLenum VirtualGLApi::glGetGraphicsResetStatusARBFn(void) { | |
486 return driver_->fn.glGetGraphicsResetStatusARBFn(); | |
487 } | |
488 | |
489 void VirtualGLApi::glGetIntegervFn(GLenum pname, GLint* params) { | |
490 driver_->fn.glGetIntegervFn(pname, params); | |
491 } | |
492 | |
493 void VirtualGLApi::glGetProgramBinaryFn( | |
494 GLuint program, GLsizei bufSize, | |
495 GLsizei* length, GLenum* binaryFormat, GLvoid* binary) { | |
496 driver_->fn.glGetProgramBinaryFn( | |
497 program, bufSize, length, binaryFormat, binary); | |
498 } | |
499 | |
500 void VirtualGLApi::glGetProgramivFn( | |
501 GLuint program, GLenum pname, GLint* params) { | |
502 driver_->fn.glGetProgramivFn(program, pname, params); | |
503 } | |
504 | |
505 void VirtualGLApi::glGetProgramInfoLogFn( | |
506 GLuint program, GLsizei bufsize, GLsizei* length, char* infolog) { | |
507 driver_->fn.glGetProgramInfoLogFn(program, bufsize, length, infolog); | |
508 } | |
509 | |
510 void VirtualGLApi::glGetQueryivFn(GLenum target, GLenum pname, GLint* params) { | |
511 driver_->fn.glGetQueryivFn(target, pname, params); | |
512 } | |
513 | |
514 void VirtualGLApi::glGetQueryivARBFn( | |
515 GLenum target, GLenum pname, GLint* params) { | |
516 driver_->fn.glGetQueryivARBFn(target, pname, params); | |
517 } | |
518 | |
519 void VirtualGLApi::glGetQueryObjecti64vFn( | |
520 GLuint id, GLenum pname, GLint64* params) { | |
521 driver_->fn.glGetQueryObjecti64vFn(id, pname, params); | |
522 } | |
523 | |
524 void VirtualGLApi::glGetQueryObjectivFn( | |
525 GLuint id, GLenum pname, GLint* params) { | |
526 driver_->fn.glGetQueryObjectivFn(id, pname, params); | |
527 } | |
528 | |
529 void VirtualGLApi::glGetQueryObjectui64vFn( | |
530 GLuint id, GLenum pname, GLuint64* params) { | |
531 driver_->fn.glGetQueryObjectui64vFn(id, pname, params); | |
532 } | |
533 | |
534 void VirtualGLApi::glGetQueryObjectuivFn( | |
535 GLuint id, GLenum pname, GLuint* params) { | |
536 driver_->fn.glGetQueryObjectuivFn(id, pname, params); | |
537 } | |
538 | |
539 void VirtualGLApi::glGetQueryObjectuivARBFn( | |
540 GLuint id, GLenum pname, GLuint* params) { | |
541 driver_->fn.glGetQueryObjectuivARBFn(id, pname, params); | |
542 } | |
543 | |
544 void VirtualGLApi::glGetRenderbufferParameterivEXTFn( | |
545 GLenum target, GLenum pname, GLint* params) { | |
546 driver_->fn.glGetRenderbufferParameterivEXTFn(target, pname, params); | |
547 } | |
548 | |
549 void VirtualGLApi::glGetShaderivFn(GLuint shader, GLenum pname, GLint* params) { | |
550 driver_->fn.glGetShaderivFn(shader, pname, params); | |
551 } | |
552 | |
553 void VirtualGLApi::glGetShaderInfoLogFn( | |
554 GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog) { | |
555 driver_->fn.glGetShaderInfoLogFn(shader, bufsize, length, infolog); | |
556 } | |
557 | |
558 void VirtualGLApi::glGetShaderPrecisionFormatFn( | |
559 GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) { | |
560 driver_->fn.glGetShaderPrecisionFormatFn( | |
561 shadertype, precisiontype, range, precision); | |
562 } | |
563 | |
564 void VirtualGLApi::glGetShaderSourceFn( | |
565 GLuint shader, GLsizei bufsize, GLsizei* length, char* source) { | |
566 driver_->fn.glGetShaderSourceFn(shader, bufsize, length, source); | |
567 } | |
568 | |
569 const GLubyte* VirtualGLApi::glGetStringFn(GLenum name) { | |
570 switch (name) { | |
571 case GL_EXTENSIONS: | |
572 // For now return no extensions. | |
573 // | |
574 // Specificially we can't support GL_EXT_occlusion_query_boolean which is | |
575 // based on GL_ARB_occlusion_query without a lot of work virutalizing | |
apatrick_chromium
2012/11/06 19:11:48
virutalizing -> virtualizing
| |
576 // queries. | |
577 // | |
578 // Also we don't support multisample yet, nor vertex array objects, | |
579 // etc.. | |
580 // | |
581 // We can turn on other extensions on an as needed basis. For now, if you | |
582 // need the extensions, don't make a virtual context. | |
583 return reinterpret_cast<const GLubyte*>(""); | |
584 default: | |
585 return driver_->fn.glGetStringFn(name); | |
586 } | |
587 } | |
588 | |
589 void VirtualGLApi::glGetTexLevelParameterfvFn( | |
590 GLenum target, GLint level, GLenum pname, GLfloat* params) { | |
591 driver_->fn.glGetTexLevelParameterfvFn(target, level, pname, params); | |
592 } | |
593 | |
594 void VirtualGLApi::glGetTexLevelParameterivFn( | |
595 GLenum target, GLint level, GLenum pname, GLint* params) { | |
596 driver_->fn.glGetTexLevelParameterivFn(target, level, pname, params); | |
597 } | |
598 | |
599 void VirtualGLApi::glGetTexParameterfvFn( | |
600 GLenum target, GLenum pname, GLfloat* params) { | |
601 driver_->fn.glGetTexParameterfvFn(target, pname, params); | |
602 } | |
603 | |
604 void VirtualGLApi::glGetTexParameterivFn( | |
605 GLenum target, GLenum pname, GLint* params) { | |
606 driver_->fn.glGetTexParameterivFn(target, pname, params); | |
607 } | |
608 | |
609 void VirtualGLApi::glGetTranslatedShaderSourceANGLEFn( | |
610 GLuint shader, GLsizei bufsize, GLsizei* length, char* source) { | |
611 driver_->fn.glGetTranslatedShaderSourceANGLEFn( | |
612 shader, bufsize, length, source); | |
613 } | |
614 | |
615 void VirtualGLApi::glGetUniformfvFn( | |
616 GLuint program, GLint location, GLfloat* params) { | |
617 driver_->fn.glGetUniformfvFn(program, location, params); | |
618 } | |
619 | |
620 void VirtualGLApi::glGetUniformivFn( | |
621 GLuint program, GLint location, GLint* params) { | |
622 driver_->fn.glGetUniformivFn(program, location, params); | |
623 } | |
624 | |
625 GLint VirtualGLApi::glGetUniformLocationFn(GLuint program, const char* name) { | |
626 return driver_->fn.glGetUniformLocationFn(program, name); | |
627 } | |
628 | |
629 void VirtualGLApi::glGetVertexAttribfvFn( | |
630 GLuint index, GLenum pname, GLfloat* params) { | |
631 driver_->fn.glGetVertexAttribfvFn(index, pname, params); | |
632 } | |
633 | |
634 void VirtualGLApi::glGetVertexAttribivFn( | |
635 GLuint index, GLenum pname, GLint* params) { | |
636 driver_->fn.glGetVertexAttribivFn(index, pname, params); | |
637 } | |
638 | |
639 void VirtualGLApi::glGetVertexAttribPointervFn( | |
640 GLuint index, GLenum pname, void** pointer) { | |
641 driver_->fn.glGetVertexAttribPointervFn(index, pname, pointer); | |
642 } | |
643 | |
644 void VirtualGLApi::glHintFn(GLenum target, GLenum mode) { | |
645 driver_->fn.glHintFn(target, mode); | |
646 } | |
647 | |
648 GLboolean VirtualGLApi::glIsBufferFn(GLuint buffer) { | |
649 return driver_->fn.glIsBufferFn(buffer); | |
650 } | |
651 | |
652 GLboolean VirtualGLApi::glIsEnabledFn(GLenum cap) { | |
653 return driver_->fn.glIsEnabledFn(cap); | |
654 } | |
655 | |
656 GLboolean VirtualGLApi::glIsFramebufferEXTFn(GLuint framebuffer) { | |
657 return driver_->fn.glIsFramebufferEXTFn(framebuffer); | |
658 } | |
659 | |
660 GLboolean VirtualGLApi::glIsProgramFn(GLuint program) { | |
661 return driver_->fn.glIsProgramFn(program); | |
662 } | |
663 | |
664 GLboolean VirtualGLApi::glIsQueryARBFn(GLuint query) { | |
665 return driver_->fn.glIsQueryARBFn(query); | |
666 } | |
667 | |
668 GLboolean VirtualGLApi::glIsRenderbufferEXTFn(GLuint renderbuffer) { | |
669 return driver_->fn.glIsRenderbufferEXTFn(renderbuffer); | |
670 } | |
671 | |
672 GLboolean VirtualGLApi::glIsShaderFn(GLuint shader) { | |
673 return driver_->fn.glIsShaderFn(shader); | |
674 } | |
675 | |
676 GLboolean VirtualGLApi::glIsTextureFn(GLuint texture) { | |
677 return driver_->fn.glIsTextureFn(texture); | |
678 } | |
679 | |
680 void VirtualGLApi::glLineWidthFn(GLfloat width) { | |
681 driver_->fn.glLineWidthFn(width); | |
682 } | |
683 | |
684 void VirtualGLApi::glLinkProgramFn(GLuint program) { | |
685 driver_->fn.glLinkProgramFn(program); | |
686 } | |
687 | |
688 void* VirtualGLApi::glMapBufferFn(GLenum target, GLenum access) { | |
689 return driver_->fn.glMapBufferFn(target, access); | |
690 } | |
691 | |
692 void VirtualGLApi::glPixelStoreiFn(GLenum pname, GLint param) { | |
693 driver_->fn.glPixelStoreiFn(pname, param); | |
694 } | |
695 | |
696 void VirtualGLApi::glPointParameteriFn(GLenum pname, GLint param) { | |
697 driver_->fn.glPointParameteriFn(pname, param); | |
698 } | |
699 | |
700 void VirtualGLApi::glPolygonOffsetFn(GLfloat factor, GLfloat units) { | |
701 driver_->fn.glPolygonOffsetFn(factor, units); | |
702 } | |
703 | |
704 void VirtualGLApi::glProgramBinaryFn( | |
705 GLuint program, GLenum binaryFormat, const GLvoid* binary, GLsizei length) { | |
706 driver_->fn.glProgramBinaryFn(program, binaryFormat, binary, length); | |
707 } | |
708 | |
709 void VirtualGLApi::glProgramParameteriFn( | |
710 GLuint program, GLenum pname, GLint value) { | |
711 driver_->fn.glProgramParameteriFn(program, pname, value); | |
712 } | |
713 | |
714 void VirtualGLApi::glQueryCounterFn(GLuint id, GLenum target) { | |
715 driver_->fn.glQueryCounterFn(id, target); | |
716 } | |
717 | |
718 void VirtualGLApi::glReadBufferFn(GLenum src) { | |
719 driver_->fn.glReadBufferFn(src); | |
720 } | |
721 | |
722 void VirtualGLApi::glReadPixelsFn( | |
723 GLint x, GLint y, GLsizei width, GLsizei height, | |
724 GLenum format, GLenum type, void* pixels) { | |
725 driver_->fn.glReadPixelsFn(x, y, width, height, format, type, pixels); | |
726 } | |
727 | |
728 void VirtualGLApi::glReleaseShaderCompilerFn(void) { | |
729 driver_->fn.glReleaseShaderCompilerFn(); | |
730 } | |
731 | |
732 void VirtualGLApi::glRenderbufferStorageMultisampleEXTFn( | |
733 GLenum target, GLsizei samples, GLenum internalformat, | |
734 GLsizei width, GLsizei height) { | |
735 driver_->fn.glRenderbufferStorageMultisampleEXTFn( | |
736 target, samples, internalformat, width, height); | |
737 } | |
738 | |
739 void VirtualGLApi::glRenderbufferStorageMultisampleANGLEFn( | |
740 GLenum target, GLsizei samples, GLenum internalformat, | |
741 GLsizei width, GLsizei height) { | |
742 driver_->fn.glRenderbufferStorageMultisampleANGLEFn( | |
743 target, samples, internalformat, width, height); | |
744 } | |
745 | |
746 void VirtualGLApi::glRenderbufferStorageEXTFn( | |
747 GLenum target, GLenum internalformat, GLsizei width, GLsizei height) { | |
748 driver_->fn.glRenderbufferStorageEXTFn(target, internalformat, width, height); | |
749 } | |
750 | |
751 void VirtualGLApi::glSampleCoverageFn(GLclampf value, GLboolean invert) { | |
752 driver_->fn.glSampleCoverageFn(value, invert); | |
753 } | |
754 | |
755 void VirtualGLApi::glScissorFn( | |
756 GLint x, GLint y, GLsizei width, GLsizei height) { | |
757 driver_->fn.glScissorFn(x, y, width, height); | |
758 } | |
759 | |
760 void VirtualGLApi::glShaderBinaryFn( | |
761 GLsizei n, const GLuint* shaders, GLenum binaryformat, | |
762 const void* binary, GLsizei length) { | |
763 driver_->fn.glShaderBinaryFn(n, shaders, binaryformat, binary, length); | |
764 } | |
765 | |
766 void VirtualGLApi::glShaderSourceFn( | |
767 GLuint shader, GLsizei count, const char** str, const GLint* length) { | |
768 driver_->fn.glShaderSourceFn(shader, count, str, length); | |
769 } | |
770 | |
771 void VirtualGLApi::glStencilFuncFn(GLenum func, GLint ref, GLuint mask) { | |
772 driver_->fn.glStencilFuncFn(func, ref, mask); | |
773 } | |
774 | |
775 void VirtualGLApi::glStencilFuncSeparateFn( | |
776 GLenum face, GLenum func, GLint ref, GLuint mask) { | |
777 driver_->fn.glStencilFuncSeparateFn(face, func, ref, mask); | |
778 } | |
779 | |
780 void VirtualGLApi::glStencilMaskFn(GLuint mask) { | |
781 driver_->fn.glStencilMaskFn(mask); | |
782 } | |
783 | |
784 void VirtualGLApi::glStencilMaskSeparateFn(GLenum face, GLuint mask) { | |
785 driver_->fn.glStencilMaskSeparateFn(face, mask); | |
786 } | |
787 | |
788 void VirtualGLApi::glStencilOpFn(GLenum fail, GLenum zfail, GLenum zpass) { | |
789 driver_->fn.glStencilOpFn(fail, zfail, zpass); | |
790 } | |
791 | |
792 void VirtualGLApi::glStencilOpSeparateFn( | |
793 GLenum face, GLenum fail, GLenum zfail, GLenum zpass) { | |
794 driver_->fn.glStencilOpSeparateFn(face, fail, zfail, zpass); | |
795 } | |
796 | |
797 void VirtualGLApi::glTexImage2DFn( | |
798 GLenum target, GLint level, GLint internalformat, | |
799 GLsizei width, GLsizei height, | |
800 GLint border, GLenum format, GLenum type, const void* pixels) { | |
801 driver_->fn.glTexImage2DFn( | |
802 target, level, internalformat, width, height, | |
803 border, format, type, pixels); | |
804 } | |
805 | |
806 void VirtualGLApi::glTexParameterfFn( | |
807 GLenum target, GLenum pname, GLfloat param) { | |
808 driver_->fn.glTexParameterfFn(target, pname, param); | |
809 } | |
810 | |
811 void VirtualGLApi::glTexParameterfvFn( | |
812 GLenum target, GLenum pname, const GLfloat* params) { | |
813 driver_->fn.glTexParameterfvFn(target, pname, params); | |
814 } | |
815 | |
816 void VirtualGLApi::glTexParameteriFn(GLenum target, GLenum pname, GLint param) { | |
817 driver_->fn.glTexParameteriFn(target, pname, param); | |
818 } | |
819 | |
820 void VirtualGLApi::glTexParameterivFn( | |
821 GLenum target, GLenum pname, const GLint* params) { | |
822 driver_->fn.glTexParameterivFn(target, pname, params); | |
823 } | |
824 | |
825 void VirtualGLApi::glTexStorage2DEXTFn( | |
826 GLenum target, GLsizei levels, GLenum internalformat, | |
827 GLsizei width, GLsizei height) { | |
828 driver_->fn.glTexStorage2DEXTFn( | |
829 target, levels, internalformat, width, height); | |
830 } | |
831 | |
832 void VirtualGLApi::glTexSubImage2DFn( | |
833 GLenum target, GLint level, GLint xoffset, GLint yoffset, | |
834 GLsizei width, GLsizei height, GLenum format, GLenum type, | |
835 const void* pixels) { | |
836 driver_->fn.glTexSubImage2DFn( | |
837 target, level, xoffset, yoffset, width, height, format, type, pixels); | |
838 } | |
839 | |
840 void VirtualGLApi::glUniform1fFn(GLint location, GLfloat x) { | |
841 driver_->fn.glUniform1fFn(location, x); | |
842 } | |
843 | |
844 void VirtualGLApi::glUniform1fvFn( | |
845 GLint location, GLsizei count, const GLfloat* v) { | |
846 driver_->fn.glUniform1fvFn(location, count, v); | |
847 } | |
848 | |
849 void VirtualGLApi::glUniform1iFn(GLint location, GLint x) { | |
850 driver_->fn.glUniform1iFn(location, x); | |
851 } | |
852 | |
853 void VirtualGLApi::glUniform1ivFn( | |
854 GLint location, GLsizei count, const GLint* v) { | |
855 driver_->fn.glUniform1ivFn(location, count, v); | |
856 } | |
857 | |
858 void VirtualGLApi::glUniform2fFn(GLint location, GLfloat x, GLfloat y) { | |
859 driver_->fn.glUniform2fFn(location, x, y); | |
860 } | |
861 | |
862 void VirtualGLApi::glUniform2fvFn( | |
863 GLint location, GLsizei count, const GLfloat* v) { | |
864 driver_->fn.glUniform2fvFn(location, count, v); | |
865 } | |
866 | |
867 void VirtualGLApi::glUniform2iFn(GLint location, GLint x, GLint y) { | |
868 driver_->fn.glUniform2iFn(location, x, y); | |
869 } | |
870 | |
871 void VirtualGLApi::glUniform2ivFn( | |
872 GLint location, GLsizei count, const GLint* v) { | |
873 driver_->fn.glUniform2ivFn(location, count, v); | |
874 } | |
875 | |
876 void VirtualGLApi::glUniform3fFn( | |
877 GLint location, GLfloat x, GLfloat y, GLfloat z) { | |
878 driver_->fn.glUniform3fFn(location, x, y, z); | |
879 } | |
880 | |
881 void VirtualGLApi::glUniform3fvFn( | |
882 GLint location, GLsizei count, const GLfloat* v) { | |
883 driver_->fn.glUniform3fvFn(location, count, v); | |
884 } | |
885 | |
886 void VirtualGLApi::glUniform3iFn(GLint location, GLint x, GLint y, GLint z) { | |
887 driver_->fn.glUniform3iFn(location, x, y, z); | |
888 } | |
889 | |
890 void VirtualGLApi::glUniform3ivFn( | |
891 GLint location, GLsizei count, const GLint* v) { | |
892 driver_->fn.glUniform3ivFn(location, count, v); | |
893 } | |
894 | |
895 void VirtualGLApi::glUniform4fFn( | |
896 GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { | |
897 driver_->fn.glUniform4fFn(location, x, y, z, w); | |
898 } | |
899 | |
900 void VirtualGLApi::glUniform4fvFn( | |
901 GLint location, GLsizei count, const GLfloat* v) { | |
902 driver_->fn.glUniform4fvFn(location, count, v); | |
903 } | |
904 | |
905 void VirtualGLApi::glUniform4iFn( | |
906 GLint location, GLint x, GLint y, GLint z, GLint w) { | |
907 driver_->fn.glUniform4iFn(location, x, y, z, w); | |
908 } | |
909 | |
910 void VirtualGLApi::glUniform4ivFn( | |
911 GLint location, GLsizei count, const GLint* v) { | |
912 driver_->fn.glUniform4ivFn(location, count, v); | |
913 } | |
914 | |
915 void VirtualGLApi::glUniformMatrix2fvFn( | |
916 GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { | |
917 driver_->fn.glUniformMatrix2fvFn(location, count, transpose, value); | |
918 } | |
919 | |
920 void VirtualGLApi::glUniformMatrix3fvFn( | |
921 GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { | |
922 driver_->fn.glUniformMatrix3fvFn(location, count, transpose, value); | |
923 } | |
924 | |
925 void VirtualGLApi::glUniformMatrix4fvFn( | |
926 GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { | |
927 driver_->fn.glUniformMatrix4fvFn(location, count, transpose, value); | |
928 } | |
929 | |
930 GLboolean VirtualGLApi::glUnmapBufferFn(GLenum target) { | |
931 return driver_->fn.glUnmapBufferFn(target); | |
932 } | |
933 | |
934 void VirtualGLApi::glUseProgramFn(GLuint program) { | |
935 driver_->fn.glUseProgramFn(program); | |
936 } | |
937 | |
938 void VirtualGLApi::glValidateProgramFn(GLuint program) { | |
939 driver_->fn.glValidateProgramFn(program); | |
940 } | |
941 | |
942 void VirtualGLApi::glVertexAttrib1fFn(GLuint indx, GLfloat x) { | |
943 driver_->fn.glVertexAttrib1fFn(indx, x); | |
944 } | |
945 | |
946 void VirtualGLApi::glVertexAttrib1fvFn(GLuint indx, const GLfloat* values) { | |
947 driver_->fn.glVertexAttrib1fvFn(indx, values); | |
948 } | |
949 | |
950 void VirtualGLApi::glVertexAttrib2fFn(GLuint indx, GLfloat x, GLfloat y) { | |
951 driver_->fn.glVertexAttrib2fFn(indx, x, y); | |
952 } | |
953 | |
954 void VirtualGLApi::glVertexAttrib2fvFn(GLuint indx, const GLfloat* values) { | |
955 driver_->fn.glVertexAttrib2fvFn(indx, values); | |
956 } | |
957 | |
958 void VirtualGLApi::glVertexAttrib3fFn( | |
959 GLuint indx, GLfloat x, GLfloat y, GLfloat z) { | |
960 driver_->fn.glVertexAttrib3fFn(indx, x, y, z); | |
961 } | |
962 | |
963 void VirtualGLApi::glVertexAttrib3fvFn(GLuint indx, const GLfloat* values) { | |
964 driver_->fn.glVertexAttrib3fvFn(indx, values); | |
965 } | |
966 | |
967 void VirtualGLApi::glVertexAttrib4fFn( | |
968 GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { | |
969 driver_->fn.glVertexAttrib4fFn(indx, x, y, z, w); | |
970 } | |
971 | |
972 void VirtualGLApi::glVertexAttrib4fvFn(GLuint indx, const GLfloat* values) { | |
973 driver_->fn.glVertexAttrib4fvFn(indx, values); | |
974 } | |
975 | |
976 void VirtualGLApi::glVertexAttribPointerFn( | |
977 GLuint indx, GLint size, GLenum type, GLboolean normalized, | |
978 GLsizei stride, const void* ptr) { | |
979 driver_->fn.glVertexAttribPointerFn( | |
980 indx, size, type, normalized, stride, ptr); | |
981 } | |
982 | |
983 void VirtualGLApi::glViewportFn( | |
984 GLint x, GLint y, GLsizei width, GLsizei height) { | |
985 driver_->fn.glViewportFn(x, y, width, height); | |
986 } | |
987 | |
988 void VirtualGLApi::glGenFencesNVFn(GLsizei n, GLuint* fences) { | |
989 driver_->fn.glGenFencesNVFn(n, fences); | |
990 } | |
991 | |
992 void VirtualGLApi::glDeleteFencesNVFn(GLsizei n, const GLuint* fences) { | |
993 driver_->fn.glDeleteFencesNVFn(n, fences); | |
994 } | |
995 | |
996 void VirtualGLApi::glSetFenceNVFn(GLuint fence, GLenum condition) { | |
997 driver_->fn.glSetFenceNVFn(fence, condition); | |
998 } | |
999 | |
1000 GLboolean VirtualGLApi::glTestFenceNVFn(GLuint fence) { | |
1001 return driver_->fn.glTestFenceNVFn(fence); | |
1002 } | |
1003 | |
1004 void VirtualGLApi::glFinishFenceNVFn(GLuint fence) { | |
1005 driver_->fn.glFinishFenceNVFn(fence); | |
1006 } | |
1007 | |
1008 GLboolean VirtualGLApi::glIsFenceNVFn(GLuint fence) { | |
1009 return driver_->fn.glIsFenceNVFn(fence); | |
1010 } | |
1011 | |
1012 void VirtualGLApi::glGetFenceivNVFn(GLuint fence, GLenum pname, GLint* params) { | |
1013 driver_->fn.glGetFenceivNVFn(fence, pname, params); | |
1014 } | |
1015 | |
1016 GLsync VirtualGLApi::glFenceSyncFn(GLenum condition, GLbitfield flags) { | |
1017 return driver_->fn.glFenceSyncFn(condition, flags); | |
1018 } | |
1019 | |
1020 void VirtualGLApi::glDeleteSyncFn(GLsync sync) { | |
1021 driver_->fn.glDeleteSyncFn(sync); | |
1022 } | |
1023 | |
1024 void VirtualGLApi::glGetSyncivFn( | |
1025 GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length,GLint* values) { | |
1026 driver_->fn.glGetSyncivFn(sync, pname, bufSize, length,values); | |
1027 } | |
1028 | |
1029 void VirtualGLApi::glDrawArraysInstancedANGLEFn( | |
1030 GLenum mode, GLint first, GLsizei count, GLsizei primcount) { | |
1031 driver_->fn.glDrawArraysInstancedANGLEFn(mode, first, count, primcount); | |
1032 } | |
1033 | |
1034 void VirtualGLApi::glDrawElementsInstancedANGLEFn( | |
1035 GLenum mode, GLsizei count, GLenum type, const void* indices, | |
1036 GLsizei primcount) { | |
1037 driver_->fn.glDrawElementsInstancedANGLEFn( | |
1038 mode, count, type, indices, primcount); | |
1039 } | |
1040 | |
1041 void VirtualGLApi::glVertexAttribDivisorANGLEFn(GLuint index, GLuint divisor) { | |
1042 driver_->fn.glVertexAttribDivisorANGLEFn(index, divisor); | |
1043 } | |
1044 | |
1045 void VirtualGLApi::glGenVertexArraysOESFn(GLsizei n, GLuint* arrays) { | |
1046 driver_->fn.glGenVertexArraysOESFn(n, arrays); | |
1047 } | |
1048 | |
1049 void VirtualGLApi::glDeleteVertexArraysOESFn(GLsizei n, const GLuint* arrays) { | |
1050 driver_->fn.glDeleteVertexArraysOESFn(n, arrays); | |
1051 } | |
1052 | |
1053 void VirtualGLApi::glBindVertexArrayOESFn(GLuint array) { | |
1054 driver_->fn.glBindVertexArrayOESFn(array); | |
1055 } | |
1056 | |
1057 GLboolean VirtualGLApi::glIsVertexArrayOESFn(GLuint array) { | |
1058 return driver_->fn.glIsVertexArrayOESFn(array); | |
1059 } | |
1060 | |
50 } // namespace gfx | 1061 } // namespace gfx |
51 | 1062 |
52 | 1063 |
OLD | NEW |