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

Side by Side Diff: app/gfx/gl/gl_bindings_skia.cc

Issue 6677105: Redirect Skia/Ganesh GL calls to Mesa during the layout tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Add GL mock functions. Created 9 years, 9 months 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
« no previous file with comments | « app/gfx/gl/gl_bindings_skia.h ('k') | app/gfx/gl/gl_interface.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5
6 #include "app/gfx/gl/gl_bindings_skia.h"
7
8 #include "app/gfx/gl/gl_bindings.h"
9 #include "app/gfx/gl/gl_implementation.h"
10 #include "base/logging.h"
11
12 // Skia is built against the headers in gpu\GLES. These functions
13 // are exported without any call-type modifiers.
14 #define GR_GL_FUNCTION_TYPE
15
16 // The GrGLInterface header pulls in the default GL headers. Disable pulling
17 // in the default platform headers to prevent conflicts with the GL api points
18 // included via gl_bindings.h
19 #define GR_GL_NO_PLATFORM_INCLUDES 1
20 #include "third_party/skia/gpu/include/GrGLInterface.h"
21 #undef GR_GL_NO_PLATFORM_INCLUDES
22
23 namespace {
24
25 extern "C" {
26
27 // The following stub functions are required because the glXXX routines exported
28 // via gl_bindings.h use call-type GL_BINDING_CALL, which on Windows is stdcall.
29 // Skia has been built against the GLES headers, so the interfaces in
30 // GrGLInterface are __cdecl.
31
32 GLvoid StubGLActiveTexture(GLenum texture) {
33 glActiveTexture(texture);
34 }
35
36 GLvoid StubGLAttachShader(GLuint program, GLuint shader) {
37 glAttachShader(program, shader);
38 }
39
40 GLvoid StubGLBindAttribLocation(GLuint program, GLuint index,
41 const char* name) {
42 glBindAttribLocation(program, index, name);
43 }
44
45 GLvoid StubGLBindBuffer(GLenum target, GLuint buffer) {
46 glBindBuffer(target, buffer);
47 }
48
49 GLvoid StubGLBindFramebuffer(GLenum target, GLuint framebuffer) {
50 glBindFramebufferEXT(target, framebuffer);
51 }
52
53 GLvoid StubGLBindRenderbuffer(GLenum target, GLuint renderbuffer) {
54 glBindRenderbufferEXT(target, renderbuffer);
55 }
56
57 GLvoid StubGLBindTexture(GLenum target, GLuint texture) {
58 glBindTexture(target, texture);
59 }
60
61 GLvoid StubGLBlendColor(GLclampf red, GLclampf green, GLclampf blue,
62 GLclampf alpha) {
63 glBlendColor(red, green, blue, alpha);
64 }
65
66 GLvoid StubGLBlendFunc(GLenum sfactor, GLenum dfactor) {
67 glBlendFunc(sfactor, dfactor);
68 }
69
70 GLvoid StubGLBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
71 GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
72 GLbitfield mask, GLenum filter) {
73 glBlitFramebufferEXT(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1,
74 mask, filter);
75 }
76
77 GLvoid StubGLBufferData(GLenum target, GLsizei size, const void* data,
78 GLenum usage) {
79 glBufferData(target, size, data, usage);
80 }
81
82 GLvoid StubGLBufferSubData(GLenum target, GLint offset, GLsizei size,
83 const void* data) {
84 glBufferSubData(target, offset, size, data);
85 }
86
87 GLenum StubGLCheckFramebufferStatus(GLenum target) {
88 return glCheckFramebufferStatusEXT(target);
89 }
90
91 GLvoid StubGLClear(GLbitfield mask) {
92 glClear(mask);
93 }
94
95 GLvoid StubGLClearColor(GLclampf red, GLclampf green, GLclampf blue,
96 GLclampf alpha) {
97 glClearColor(red, green, blue, alpha);
98 }
99
100 GLvoid StubGLClearStencil(GLint s) {
101 glClearStencil(s);
102 }
103
104 GLvoid StubGLColorMask(GLboolean red, GLboolean green, GLboolean blue,
105 GLboolean alpha) {
106 glColorMask(red, green, blue, alpha);
107 }
108
109 GLvoid StubGLCompileShader(GLuint shader) {
110 glCompileShader(shader);
111 }
112
113 GLvoid StubGLCompressedTexImage2D(GLenum target, GLint level,
114 GLenum internalformat, GLsizei width,
115 GLsizei height, GLint border,
116 GLsizei imageSize, const void* data) {
117 glCompressedTexImage2D(target, level, internalformat, width, height, border,
118 imageSize, data);
119 }
120
121 GLuint StubGLCreateProgram(void) {
122 return glCreateProgram();
123 }
124
125 GLuint StubGLCreateShader(GLenum type) {
126 return glCreateShader(type);
127 }
128
129 GLvoid StubGLCullFace(GLenum mode) {
130 glCullFace(mode);
131 }
132
133 GLvoid StubGLDeleteBuffers(GLsizei n, const GLuint* buffers) {
134 glDeleteBuffersARB(n, buffers);
135 }
136
137 GLvoid StubGLDeleteFramebuffers(GLsizei n, const GLuint* framebuffers) {
138 glDeleteFramebuffersEXT(n, framebuffers);
139 }
140
141 GLvoid StubGLDeleteProgram(GLuint program) {
142 glDeleteProgram(program);
143 }
144
145 GLvoid StubGLDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers) {
146 glDeleteRenderbuffersEXT(n, renderbuffers);
147 }
148
149 GLvoid StubGLDeleteShader(GLuint shader) {
150 glDeleteShader(shader);
151 }
152
153 GLvoid StubGLDeleteTextures(GLsizei n, const GLuint* textures) {
154 glDeleteTextures(n, textures);
155 }
156
157 GLvoid StubGLDepthMask(GLboolean flag) {
158 glDepthMask(flag);
159 }
160
161 GLvoid StubGLDisable(GLenum cap) {
162 glDisable(cap);
163 }
164
165 GLvoid StubGLDisableVertexAttribArray(GLuint index) {
166 glDisableVertexAttribArray(index);
167 }
168
169 GLvoid StubGLDrawArrays(GLenum mode, GLint first, GLsizei count) {
170 glDrawArrays(mode, first, count);
171 }
172
173 GLvoid StubGLDrawElements(GLenum mode, GLsizei count, GLenum type,
174 const void* indices) {
175 glDrawElements(mode, count, type, indices);
176 }
177
178 GLvoid StubGLEnable(GLenum cap) {
179 glEnable(cap);
180 }
181
182 GLvoid StubGLEnableVertexAttribArray(GLuint index) {
183 glEnableVertexAttribArray(index);
184 }
185
186 GLvoid StubGLFramebufferRenderbuffer(GLenum target, GLenum attachment,
187 GLenum renderbuffertarget,
188 GLuint renderbuffer) {
189 glFramebufferRenderbufferEXT(target, attachment, renderbuffertarget,
190 renderbuffer);
191 }
192
193 GLvoid StubGLFramebufferTexture2D(GLenum target, GLenum attachment,
194 GLenum textarget, GLuint texture,
195 GLint level) {
196 glFramebufferTexture2DEXT(target, attachment, textarget, texture, level);
197 }
198
199 GLvoid StubGLFrontFace(GLenum mode) {
200 glFrontFace(mode);
201 }
202
203 GLvoid StubGLGenBuffers(GLsizei n, GLuint* buffers) {
204 glGenBuffersARB(n, buffers);
205 }
206
207 GLvoid StubGLGenFramebuffers(GLsizei n, GLuint* framebuffers) {
208 glGenFramebuffersEXT(n, framebuffers);
209 }
210
211 GLvoid StubGLGenRenderbuffers(GLsizei n, GLuint* renderbuffers) {
212 glGenRenderbuffersEXT(n, renderbuffers);
213 }
214
215 GLvoid StubGLGenTextures(GLsizei n, GLuint* textures) {
216 glGenTextures(n, textures);
217 }
218
219 GLvoid StubGLGetBufferParameteriv(GLenum target, GLenum pname, GLint* params) {
220 glGetBufferParameteriv(target, pname, params);
221 }
222
223 GLenum StubGLGetError() {
224 return glGetError();
225 }
226
227 GLvoid StubGLGetIntegerv(GLenum pname, GLint* params) {
228 glGetIntegerv(pname, params);
229 }
230
231 GLvoid StubGLGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length,
232 char* infolog) {
233 glGetProgramInfoLog(program, bufsize, length, infolog);
234 }
235
236 GLvoid StubGLGetProgramiv(GLuint program, GLenum pname, GLint* params) {
237 glGetProgramiv(program, pname, params);
238 }
239
240 GLvoid StubGLGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length,
241 char* infolog) {
242 glGetShaderInfoLog(shader, bufsize, length, infolog);
243 }
244
245 GLvoid StubGLGetShaderiv(GLuint shader, GLenum pname, GLint* params) {
246 glGetShaderiv(shader, pname, params);
247 }
248
249 const GLubyte* StubGLGetString(GLenum name) {
250 return glGetString(name);
251 }
252
253 GLint StubGLGetUniformLocation(GLuint program, const char* name) {
254 return glGetUniformLocation(program, name);
255 }
256
257 GLvoid StubGLLineWidth(GLfloat width) {
258 glLineWidth(width);
259 }
260
261 GLvoid StubGLLinkProgram(GLuint program) {
262 glLinkProgram(program);
263 }
264
265 void* StubGLMapBuffer(GLenum target, GLenum access) {
266 return glMapBuffer(target, access);
267 }
268
269 GLvoid StubGLPixelStorei(GLenum pname, GLint param) {
270 glPixelStorei(pname, param);
271 }
272
273 GLvoid StubGLReadPixels(GLint x, GLint y, GLsizei width, GLsizei height,
274 GLenum format, GLenum type, void* pixels) {
275 glReadPixels(x, y, width, height, format, type, pixels);
276 }
277
278 GLvoid StubGLRenderBufferStorage(GLenum target, GLenum internalformat,
279 GLsizei width, GLsizei height) {
280 glRenderbufferStorageEXT(target, internalformat, width, height);
281 }
282
283 GLvoid StubGLRenderbufferStorageMultisample(GLenum target, GLsizei samples,
284 GLenum internalformat,
285 GLsizei width, GLsizei height) {
286 glRenderbufferStorageMultisampleEXT(target, samples, internalformat, width,
287 height);
288 }
289
290 GLvoid StubGLScissor(GLint x, GLint y, GLsizei width, GLsizei height) {
291 glScissor(x, y, width, height);
292 }
293
294 GLvoid StubGLShaderSource(GLuint shader, GLsizei count, const char** str,
295 const GLint* length) {
296 glShaderSource(shader, count, str, length);
297 }
298
299 GLvoid StubGLStencilFunc(GLenum func, GLint ref, GLuint mask) {
300 glStencilFunc(func, ref, mask);
301 }
302
303 GLvoid StubGLStencilFuncSeparate(GLenum face, GLenum func, GLint ref,
304 GLuint mask) {
305 glStencilFuncSeparate(face, func, ref, mask);
306 }
307
308 GLvoid StubGLStencilMask(GLuint mask) {
309 glStencilMask(mask);
310 }
311
312 GLvoid StubGLStencilMaskSeparate(GLenum face, GLuint mask) {
313 glStencilMaskSeparate(face, mask);
314 }
315
316 GLvoid StubGLStencilOp(GLenum fail, GLenum zfail, GLenum zpass) {
317 glStencilOp(fail, zfail, zpass);
318 }
319
320 GLvoid StubGLStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail,
321 GLenum zpass) {
322 glStencilOpSeparate(face, fail, zfail, zpass);
323 }
324
325 GLvoid StubGLTexImage2D(GLenum target, GLint level, GLint internalformat,
326 GLsizei width, GLsizei height, GLint border,
327 GLenum format, GLenum type, const void* pixels) {
328 glTexImage2D(target, level, internalformat, width, height, border, format,
329 type, pixels);
330 }
331
332 GLvoid StubGLTexParameteri(GLenum target, GLenum pname, GLint param) {
333 glTexParameteri(target, pname, param);
334 }
335
336 GLvoid StubGLTexSubImage2D(GLenum target, GLint level, GLint xoffset,
337 GLint yoffset, GLsizei width, GLsizei height,
338 GLenum format, GLenum type, const void* pixels) {
339 glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type,
340 pixels);
341 }
342
343 GLvoid StubGLUniform1fv(GLint location, GLsizei count, const GLfloat* v) {
344 glUniform1fv(location, count, v);
345 }
346
347 GLvoid StubGLUniform1i(GLint location, GLint x) {
348 glUniform1i(location, x);
349 }
350
351 GLvoid StubGLUniform4fv(GLint location, GLsizei count, const GLfloat* v) {
352 glUniform4fv(location, count, v);
353 }
354
355 GLvoid StubGLUniformMatrix3fv(GLint location, GLsizei count,
356 GLboolean transpose, const GLfloat* value) {
357 glUniformMatrix3fv(location, count, transpose, value);
358 }
359
360 GLboolean StubGLUnmapBuffer(GLenum target) {
361 return glUnmapBuffer(target);
362 }
363
364 GLvoid StubGLUseProgram(GLuint program) {
365 glUseProgram(program);
366 }
367
368 GLvoid StubGLVertexAttrib4fv(GLuint indx, const GLfloat* values) {
369 glVertexAttrib4fv(indx, values);
370 }
371
372 GLvoid StubGLVertexAttribPointer(GLuint indx, GLint size, GLenum type,
373 GLboolean normalized, GLsizei stride,
374 const void* ptr) {
375 glVertexAttribPointer(indx, size, type, normalized, stride, ptr);
376 }
377
378 GLvoid StubGLViewport(GLint x, GLint y, GLsizei width, GLsizei height) {
379 glViewport(x, y, width, height);
380 }
381
382 } // extern "C"
383
384 // Populate |gl_interface| with pointers to the GL implementation used by
385 // Chrome.
386 void InitializeGrGLInterface(GrGLInterface* gl_interface) {
387
388 // Propagate the type of GL bindings exported back to skia.
389 switch (gfx::GetGLImplementation()) {
390 case gfx::kGLImplementationNone:
391 NOTREACHED();
392 break;
393 case gfx::kGLImplementationDesktopGL:
394 gl_interface->fBindingsExported = kDesktop_GrGLBinding;
395 break;
396 case gfx::kGLImplementationOSMesaGL:
397 gl_interface->fBindingsExported = kDesktop_GrGLBinding;
398 break;
399 case gfx::kGLImplementationEGLGLES2:
400 gl_interface->fBindingsExported = kES2_GrGLBinding;
401 break;
402 case gfx::kGLImplementationMockGL:
403 NOTREACHED();
404 break;
405 }
406
407 gl_interface->fClientActiveTexture = NULL;
408 gl_interface->fColor4ub = NULL;
409 gl_interface->fColorPointer = NULL;
410 gl_interface->fDisableClientState = NULL;
411 gl_interface->fEnableClientState = NULL;
412 gl_interface->fLoadMatrixf = NULL;
413 gl_interface->fMatrixMode = NULL;
414 gl_interface->fPointSize = NULL;
415 gl_interface->fShadeModel = NULL;
416 gl_interface->fTexCoordPointer = NULL;
417 gl_interface->fTexEnvi = NULL;
418 gl_interface->fVertexPointer = NULL;
419
420 gl_interface->fFramebufferTexture2DMultisample = NULL;
421 gl_interface->fResolveMultisampleFramebuffer = NULL;
422 gl_interface->fActiveTexture = StubGLActiveTexture;
423 gl_interface->fAttachShader = StubGLAttachShader;
424 gl_interface->fBindAttribLocation = StubGLBindAttribLocation;
425 gl_interface->fBindBuffer = StubGLBindBuffer;
426 gl_interface->fBindTexture = StubGLBindTexture;
427 gl_interface->fBlendColor = StubGLBlendColor;
428 gl_interface->fBlendFunc = StubGLBlendFunc;
429 gl_interface->fBufferData = StubGLBufferData;
430 gl_interface->fBufferSubData = StubGLBufferSubData;
431 gl_interface->fClear = StubGLClear;
432 gl_interface->fClearColor = StubGLClearColor;
433 gl_interface->fClearStencil = StubGLClearStencil;
434 gl_interface->fColorMask = StubGLColorMask;
435 gl_interface->fCompileShader = StubGLCompileShader;
436 gl_interface->fCompressedTexImage2D = StubGLCompressedTexImage2D;
437 gl_interface->fCreateProgram = StubGLCreateProgram;
438 gl_interface->fCreateShader = StubGLCreateShader;
439 gl_interface->fCullFace = StubGLCullFace;
440 gl_interface->fDeleteBuffers = StubGLDeleteBuffers;
441 gl_interface->fDeleteProgram = StubGLDeleteProgram;
442 gl_interface->fDeleteShader = StubGLDeleteShader;
443 gl_interface->fDeleteTextures = StubGLDeleteTextures;
444 gl_interface->fDepthMask = StubGLDepthMask;
445 gl_interface->fDisable = StubGLDisable;
446 gl_interface->fDisableVertexAttribArray = StubGLDisableVertexAttribArray;
447 gl_interface->fDrawArrays = StubGLDrawArrays;
448 gl_interface->fDrawElements = StubGLDrawElements;
449 gl_interface->fEnable = StubGLEnable;
450 gl_interface->fEnableVertexAttribArray = StubGLEnableVertexAttribArray;
451 gl_interface->fFrontFace = StubGLFrontFace;
452 gl_interface->fGenBuffers = StubGLGenBuffers;
453 gl_interface->fGenTextures = StubGLGenTextures;
454 gl_interface->fGetBufferParameteriv = StubGLGetBufferParameteriv;
455 gl_interface->fGetError = StubGLGetError;
456 gl_interface->fGetIntegerv = StubGLGetIntegerv;
457 gl_interface->fGetProgramInfoLog = StubGLGetProgramInfoLog;
458 gl_interface->fGetProgramiv = StubGLGetProgramiv;
459 gl_interface->fGetShaderInfoLog = StubGLGetShaderInfoLog;
460 gl_interface->fGetShaderiv = StubGLGetShaderiv;
461 gl_interface->fGetString = StubGLGetString;
462 gl_interface->fGetUniformLocation = StubGLGetUniformLocation;
463 gl_interface->fLineWidth = StubGLLineWidth;
464 gl_interface->fLinkProgram = StubGLLinkProgram;
465 gl_interface->fPixelStorei = StubGLPixelStorei;
466 gl_interface->fReadPixels = StubGLReadPixels;
467 gl_interface->fScissor = StubGLScissor;
468 gl_interface->fShaderSource = StubGLShaderSource;
469 gl_interface->fStencilFunc = StubGLStencilFunc;
470 gl_interface->fStencilFuncSeparate = StubGLStencilFuncSeparate;
471 gl_interface->fStencilMask = StubGLStencilMask;
472 gl_interface->fStencilMaskSeparate = StubGLStencilMaskSeparate;
473 gl_interface->fStencilOp = StubGLStencilOp;
474 gl_interface->fStencilOpSeparate = StubGLStencilOpSeparate;
475 gl_interface->fTexImage2D = StubGLTexImage2D;
476 gl_interface->fTexParameteri = StubGLTexParameteri;
477 gl_interface->fTexSubImage2D = StubGLTexSubImage2D;
478 gl_interface->fUniform1fv = StubGLUniform1fv;
479 gl_interface->fUniform1i = StubGLUniform1i;
480 gl_interface->fUniform4fv = StubGLUniform4fv;
481 gl_interface->fUniformMatrix3fv = StubGLUniformMatrix3fv;
482 gl_interface->fUseProgram = StubGLUseProgram;
483 gl_interface->fVertexAttrib4fv = StubGLVertexAttrib4fv;
484 gl_interface->fVertexAttribPointer = StubGLVertexAttribPointer;
485 gl_interface->fViewport = StubGLViewport;
486 gl_interface->fBindFramebuffer = StubGLBindFramebuffer;
487 gl_interface->fBindRenderbuffer = StubGLBindRenderbuffer;
488 gl_interface->fCheckFramebufferStatus = StubGLCheckFramebufferStatus;
489 gl_interface->fDeleteFramebuffers = StubGLDeleteFramebuffers;
490 gl_interface->fDeleteRenderbuffers = StubGLDeleteRenderbuffers;
491 gl_interface->fFramebufferRenderbuffer = StubGLFramebufferRenderbuffer;
492 gl_interface->fFramebufferTexture2D = StubGLFramebufferTexture2D;
493 gl_interface->fGenFramebuffers = StubGLGenFramebuffers;
494 gl_interface->fGenRenderbuffers = StubGLGenRenderbuffers;
495 gl_interface->fRenderbufferStorage = StubGLRenderBufferStorage;
496 gl_interface->fRenderbufferStorageMultisample =
497 StubGLRenderbufferStorageMultisample;
498 gl_interface->fBlitFramebuffer = StubGLBlitFramebuffer;
499 gl_interface->fMapBuffer = StubGLMapBuffer;
500 gl_interface->fUnmapBuffer = StubGLUnmapBuffer;
501 }
502
503 } // namespace
504
505 namespace gfx {
506
507 void BindSkiaToHostGL() {
508 static GrGLInterface host_gl_interface;
509 static bool host_StubGL_initialized = false;
510 if (!host_StubGL_initialized) {
511 InitializeGrGLInterface(&host_gl_interface);
512 GrGLSetGLInterface(&host_gl_interface);
513 host_StubGL_initialized = true;
514 }
515 }
516
517 } // namespace gfx
OLDNEW
« no previous file with comments | « app/gfx/gl/gl_bindings_skia.h ('k') | app/gfx/gl/gl_interface.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698