Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(364)

Side by Side Diff: ui/gl/gl_gl_api_implementation.cc

Issue 11275120: Virtual GL (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698