OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #ifndef GrGLInterface_DEFINED | 8 #ifndef GrGLInterface_DEFINED |
9 #define GrGLInterface_DEFINED | 9 #define GrGLInterface_DEFINED |
10 | 10 |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 bool validate() const; | 131 bool validate() const; |
132 | 132 |
133 // Indicates the type of GL implementation | 133 // Indicates the type of GL implementation |
134 union { | 134 union { |
135 GrGLStandard fStandard; | 135 GrGLStandard fStandard; |
136 GrGLStandard fBindingsExported; // Legacy name, will be remove when Chro
mium is updated. | 136 GrGLStandard fBindingsExported; // Legacy name, will be remove when Chro
mium is updated. |
137 }; | 137 }; |
138 | 138 |
139 GrGLExtensions fExtensions; | 139 GrGLExtensions fExtensions; |
140 | 140 |
141 // This wrapper and const hackery is necessary because the factories in Chro
mium do not yet | 141 bool hasExtension(const char ext[]) const { return fExtensions.has(ext); } |
142 // initialize fExtensions. | |
143 bool hasExtension(const char ext[]) const { | |
144 if (!fExtensions.isInitialized()) { | |
145 GrGLExtensions* extensions = const_cast<GrGLExtensions*>(&fExtension
s); | |
146 if (!extensions->init(fStandard, fFunctions.fGetString, | |
147 fFunctions.fGetStringi, fFunctions.fGetInteger
v)) { | |
148 return false; | |
149 } | |
150 } | |
151 return fExtensions.has(ext); | |
152 } | |
153 | 142 |
154 /** | 143 /** |
155 * The function pointers are in a struct so that we can have a compiler gene
rated assignment | 144 * The function pointers are in a struct so that we can have a compiler gene
rated assignment |
156 * operator. | 145 * operator. |
157 */ | 146 */ |
158 struct Functions { | 147 struct Functions { |
159 GLPtr<GrGLActiveTextureProc> fActiveTexture; | 148 GLPtr<GrGLActiveTextureProc> fActiveTexture; |
160 GLPtr<GrGLAttachShaderProc> fAttachShader; | 149 GLPtr<GrGLAttachShaderProc> fAttachShader; |
161 GLPtr<GrGLBeginQueryProc> fBeginQuery; | 150 GLPtr<GrGLBeginQueryProc> fBeginQuery; |
162 GLPtr<GrGLBindAttribLocationProc> fBindAttribLocation; | 151 GLPtr<GrGLBindAttribLocationProc> fBindAttribLocation; |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
362 GLPtr<GrGLGetPathColorGenivProc> fGetPathColorGeniv; | 351 GLPtr<GrGLGetPathColorGenivProc> fGetPathColorGeniv; |
363 GLPtr<GrGLGetPathColorGenfvProc> fGetPathColorGenfv; | 352 GLPtr<GrGLGetPathColorGenfvProc> fGetPathColorGenfv; |
364 GLPtr<GrGLGetPathTexGenivProc> fGetPathTexGeniv; | 353 GLPtr<GrGLGetPathTexGenivProc> fGetPathTexGeniv; |
365 GLPtr<GrGLGetPathTexGenfvProc> fGetPathTexGenfv; | 354 GLPtr<GrGLGetPathTexGenfvProc> fGetPathTexGenfv; |
366 GLPtr<GrGLIsPointInFillPathProc> fIsPointInFillPath; | 355 GLPtr<GrGLIsPointInFillPathProc> fIsPointInFillPath; |
367 GLPtr<GrGLIsPointInStrokePathProc> fIsPointInStrokePath; | 356 GLPtr<GrGLIsPointInStrokePathProc> fIsPointInStrokePath; |
368 GLPtr<GrGLGetPathLengthProc> fGetPathLength; | 357 GLPtr<GrGLGetPathLengthProc> fGetPathLength; |
369 GLPtr<GrGLPointAlongPathProc> fPointAlongPath; | 358 GLPtr<GrGLPointAlongPathProc> fPointAlongPath; |
370 } fFunctions; | 359 } fFunctions; |
371 | 360 |
372 // Temporary workaround aliases to keep Chromium GrGLInterface factories com
piling until they | |
373 // assign the members of fFunctions. | |
374 GLPtrAlias<GrGLActiveTextureProc> fActiveTexture; | |
375 GLPtrAlias<GrGLAttachShaderProc> fAttachShader; | |
376 GLPtrAlias<GrGLBeginQueryProc> fBeginQuery; | |
377 GLPtrAlias<GrGLBindAttribLocationProc> fBindAttribLocation; | |
378 GLPtrAlias<GrGLBindBufferProc> fBindBuffer; | |
379 GLPtrAlias<GrGLBindFragDataLocationProc> fBindFragDataLocation; | |
380 GLPtrAlias<GrGLBindFragDataLocationIndexedProc> fBindFragDataLocationIndexed
; | |
381 GLPtrAlias<GrGLBindFramebufferProc> fBindFramebuffer; | |
382 GLPtrAlias<GrGLBindRenderbufferProc> fBindRenderbuffer; | |
383 GLPtrAlias<GrGLBindTextureProc> fBindTexture; | |
384 GLPtrAlias<GrGLBindVertexArrayProc> fBindVertexArray; | |
385 GLPtrAlias<GrGLBlendColorProc> fBlendColor; | |
386 GLPtrAlias<GrGLBlendFuncProc> fBlendFunc; | |
387 GLPtrAlias<GrGLBlitFramebufferProc> fBlitFramebuffer; | |
388 GLPtrAlias<GrGLBufferDataProc> fBufferData; | |
389 GLPtrAlias<GrGLBufferSubDataProc> fBufferSubData; | |
390 GLPtrAlias<GrGLCheckFramebufferStatusProc> fCheckFramebufferStatus; | |
391 GLPtrAlias<GrGLClearProc> fClear; | |
392 GLPtrAlias<GrGLClearColorProc> fClearColor; | |
393 GLPtrAlias<GrGLClearStencilProc> fClearStencil; | |
394 GLPtrAlias<GrGLColorMaskProc> fColorMask; | |
395 GLPtrAlias<GrGLCompileShaderProc> fCompileShader; | |
396 GLPtrAlias<GrGLCompressedTexImage2DProc> fCompressedTexImage2D; | |
397 GLPtrAlias<GrGLCopyTexSubImage2DProc> fCopyTexSubImage2D; | |
398 GLPtrAlias<GrGLCreateProgramProc> fCreateProgram; | |
399 GLPtrAlias<GrGLCreateShaderProc> fCreateShader; | |
400 GLPtrAlias<GrGLCullFaceProc> fCullFace; | |
401 GLPtrAlias<GrGLDeleteBuffersProc> fDeleteBuffers; | |
402 GLPtrAlias<GrGLDeleteFramebuffersProc> fDeleteFramebuffers; | |
403 GLPtrAlias<GrGLDeleteProgramProc> fDeleteProgram; | |
404 GLPtrAlias<GrGLDeleteQueriesProc> fDeleteQueries; | |
405 GLPtrAlias<GrGLDeleteRenderbuffersProc> fDeleteRenderbuffers; | |
406 GLPtrAlias<GrGLDeleteShaderProc> fDeleteShader; | |
407 GLPtrAlias<GrGLDeleteTexturesProc> fDeleteTextures; | |
408 GLPtrAlias<GrGLDeleteVertexArraysProc> fDeleteVertexArrays; | |
409 GLPtrAlias<GrGLDepthMaskProc> fDepthMask; | |
410 GLPtrAlias<GrGLDisableProc> fDisable; | |
411 GLPtrAlias<GrGLDisableVertexAttribArrayProc> fDisableVertexAttribArray; | |
412 GLPtrAlias<GrGLDrawArraysProc> fDrawArrays; | |
413 GLPtrAlias<GrGLDrawBufferProc> fDrawBuffer; | |
414 GLPtrAlias<GrGLDrawBuffersProc> fDrawBuffers; | |
415 GLPtrAlias<GrGLDrawElementsProc> fDrawElements; | |
416 GLPtrAlias<GrGLEnableProc> fEnable; | |
417 GLPtrAlias<GrGLEnableVertexAttribArrayProc> fEnableVertexAttribArray; | |
418 GLPtrAlias<GrGLEndQueryProc> fEndQuery; | |
419 GLPtrAlias<GrGLFinishProc> fFinish; | |
420 GLPtrAlias<GrGLFlushProc> fFlush; | |
421 GLPtrAlias<GrGLFramebufferRenderbufferProc> fFramebufferRenderbuffer; | |
422 GLPtrAlias<GrGLFramebufferTexture2DProc> fFramebufferTexture2D; | |
423 GLPtrAlias<GrGLFramebufferTexture2DMultisampleProc> fFramebufferTexture2DMul
tisample; | |
424 GLPtrAlias<GrGLFrontFaceProc> fFrontFace; | |
425 GLPtrAlias<GrGLGenBuffersProc> fGenBuffers; | |
426 GLPtrAlias<GrGLGenFramebuffersProc> fGenFramebuffers; | |
427 GLPtrAlias<GrGLGenerateMipmapProc> fGenerateMipmap; | |
428 GLPtrAlias<GrGLGenQueriesProc> fGenQueries; | |
429 GLPtrAlias<GrGLGenRenderbuffersProc> fGenRenderbuffers; | |
430 GLPtrAlias<GrGLGenTexturesProc> fGenTextures; | |
431 GLPtrAlias<GrGLGenVertexArraysProc> fGenVertexArrays; | |
432 GLPtrAlias<GrGLGetBufferParameterivProc> fGetBufferParameteriv; | |
433 GLPtrAlias<GrGLGetErrorProc> fGetError; | |
434 GLPtrAlias<GrGLGetFramebufferAttachmentParameterivProc> fGetFramebufferAttac
hmentParameteriv; | |
435 GLPtrAlias<GrGLGetIntegervProc> fGetIntegerv; | |
436 GLPtrAlias<GrGLGetQueryObjecti64vProc> fGetQueryObjecti64v; | |
437 GLPtrAlias<GrGLGetQueryObjectivProc> fGetQueryObjectiv; | |
438 GLPtrAlias<GrGLGetQueryObjectui64vProc> fGetQueryObjectui64v; | |
439 GLPtrAlias<GrGLGetQueryObjectuivProc> fGetQueryObjectuiv; | |
440 GLPtrAlias<GrGLGetQueryivProc> fGetQueryiv; | |
441 GLPtrAlias<GrGLGetProgramInfoLogProc> fGetProgramInfoLog; | |
442 GLPtrAlias<GrGLGetProgramivProc> fGetProgramiv; | |
443 GLPtrAlias<GrGLGetRenderbufferParameterivProc> fGetRenderbufferParameteriv; | |
444 GLPtrAlias<GrGLGetShaderInfoLogProc> fGetShaderInfoLog; | |
445 GLPtrAlias<GrGLGetShaderivProc> fGetShaderiv; | |
446 GLPtrAlias<GrGLGetStringProc> fGetString; | |
447 GLPtrAlias<GrGLGetStringiProc> fGetStringi; | |
448 GLPtrAlias<GrGLGetTexLevelParameterivProc> fGetTexLevelParameteriv; | |
449 GLPtrAlias<GrGLGetUniformLocationProc> fGetUniformLocation; | |
450 GLPtrAlias<GrGLInsertEventMarkerProc> fInsertEventMarker; | |
451 GLPtrAlias<GrGLLineWidthProc> fLineWidth; | |
452 GLPtrAlias<GrGLLinkProgramProc> fLinkProgram; | |
453 GLPtrAlias<GrGLLoadIdentityProc> fLoadIdentity; | |
454 GLPtrAlias<GrGLLoadMatrixfProc> fLoadMatrixf; | |
455 GLPtrAlias<GrGLMapBufferProc> fMapBuffer; | |
456 GLPtrAlias<GrGLMatrixModeProc> fMatrixMode; | |
457 GLPtrAlias<GrGLPixelStoreiProc> fPixelStorei; | |
458 GLPtrAlias<GrGLPopGroupMarkerProc> fPopGroupMarker; | |
459 GLPtrAlias<GrGLPushGroupMarkerProc> fPushGroupMarker; | |
460 GLPtrAlias<GrGLQueryCounterProc> fQueryCounter; | |
461 GLPtrAlias<GrGLReadBufferProc> fReadBuffer; | |
462 GLPtrAlias<GrGLReadPixelsProc> fReadPixels; | |
463 GLPtrAlias<GrGLRenderbufferStorageProc> fRenderbufferStorage; | |
464 GLPtrAlias<GrGLRenderbufferStorageMultisampleProc> fRenderbufferStorageMulti
sampleES2EXT; | |
465 GLPtrAlias<GrGLRenderbufferStorageMultisampleProc> fRenderbufferStorageMulti
sampleES2APPLE; | |
466 GLPtrAlias<GrGLRenderbufferStorageMultisampleProc> fRenderbufferStorageMulti
sample; | |
467 GLPtrAlias<GrGLBindUniformLocation> fBindUniformLocation; | |
468 GLPtrAlias<GrGLResolveMultisampleFramebufferProc> fResolveMultisampleFramebu
ffer; | |
469 GLPtrAlias<GrGLScissorProc> fScissor; | |
470 GLPtrAlias<GrGLShaderSourceProc> fShaderSource; | |
471 GLPtrAlias<GrGLStencilFuncProc> fStencilFunc; | |
472 GLPtrAlias<GrGLStencilFuncSeparateProc> fStencilFuncSeparate; | |
473 GLPtrAlias<GrGLStencilMaskProc> fStencilMask; | |
474 GLPtrAlias<GrGLStencilMaskSeparateProc> fStencilMaskSeparate; | |
475 GLPtrAlias<GrGLStencilOpProc> fStencilOp; | |
476 GLPtrAlias<GrGLStencilOpSeparateProc> fStencilOpSeparate; | |
477 GLPtrAlias<GrGLTexGenfvProc> fTexGenfv; | |
478 GLPtrAlias<GrGLTexGeniProc> fTexGeni; | |
479 GLPtrAlias<GrGLTexImage2DProc> fTexImage2D; | |
480 GLPtrAlias<GrGLTexParameteriProc> fTexParameteri; | |
481 GLPtrAlias<GrGLTexParameterivProc> fTexParameteriv; | |
482 GLPtrAlias<GrGLTexSubImage2DProc> fTexSubImage2D; | |
483 GLPtrAlias<GrGLTexStorage2DProc> fTexStorage2D; | |
484 GLPtrAlias<GrGLDiscardFramebufferProc> fDiscardFramebuffer; | |
485 GLPtrAlias<GrGLUniform1fProc> fUniform1f; | |
486 GLPtrAlias<GrGLUniform1iProc> fUniform1i; | |
487 GLPtrAlias<GrGLUniform1fvProc> fUniform1fv; | |
488 GLPtrAlias<GrGLUniform1ivProc> fUniform1iv; | |
489 GLPtrAlias<GrGLUniform2fProc> fUniform2f; | |
490 GLPtrAlias<GrGLUniform2iProc> fUniform2i; | |
491 GLPtrAlias<GrGLUniform2fvProc> fUniform2fv; | |
492 GLPtrAlias<GrGLUniform2ivProc> fUniform2iv; | |
493 GLPtrAlias<GrGLUniform3fProc> fUniform3f; | |
494 GLPtrAlias<GrGLUniform3iProc> fUniform3i; | |
495 GLPtrAlias<GrGLUniform3fvProc> fUniform3fv; | |
496 GLPtrAlias<GrGLUniform3ivProc> fUniform3iv; | |
497 GLPtrAlias<GrGLUniform4fProc> fUniform4f; | |
498 GLPtrAlias<GrGLUniform4iProc> fUniform4i; | |
499 GLPtrAlias<GrGLUniform4fvProc> fUniform4fv; | |
500 GLPtrAlias<GrGLUniform4ivProc> fUniform4iv; | |
501 GLPtrAlias<GrGLUniformMatrix2fvProc> fUniformMatrix2fv; | |
502 GLPtrAlias<GrGLUniformMatrix3fvProc> fUniformMatrix3fv; | |
503 GLPtrAlias<GrGLUniformMatrix4fvProc> fUniformMatrix4fv; | |
504 GLPtrAlias<GrGLUnmapBufferProc> fUnmapBuffer; | |
505 GLPtrAlias<GrGLUseProgramProc> fUseProgram; | |
506 GLPtrAlias<GrGLVertexAttrib4fvProc> fVertexAttrib4fv; | |
507 GLPtrAlias<GrGLVertexAttribPointerProc> fVertexAttribPointer; | |
508 GLPtrAlias<GrGLViewportProc> fViewport; | |
509 GLPtrAlias<GrGLPathCommandsProc> fPathCommands; | |
510 GLPtrAlias<GrGLPathCoordsProc> fPathCoords; | |
511 GLPtrAlias<GrGLPathSubCommandsProc> fPathSubCommands; | |
512 GLPtrAlias<GrGLPathSubCoordsProc> fPathSubCoords; | |
513 GLPtrAlias<GrGLPathStringProc> fPathString; | |
514 GLPtrAlias<GrGLPathGlyphsProc> fPathGlyphs; | |
515 GLPtrAlias<GrGLPathGlyphRangeProc> fPathGlyphRange; | |
516 GLPtrAlias<GrGLWeightPathsProc> fWeightPaths; | |
517 GLPtrAlias<GrGLCopyPathProc> fCopyPath; | |
518 GLPtrAlias<GrGLInterpolatePathsProc> fInterpolatePaths; | |
519 GLPtrAlias<GrGLTransformPathProc> fTransformPath; | |
520 GLPtrAlias<GrGLPathParameterivProc> fPathParameteriv; | |
521 GLPtrAlias<GrGLPathParameteriProc> fPathParameteri; | |
522 GLPtrAlias<GrGLPathParameterfvProc> fPathParameterfv; | |
523 GLPtrAlias<GrGLPathParameterfProc> fPathParameterf; | |
524 GLPtrAlias<GrGLPathDashArrayProc> fPathDashArray; | |
525 GLPtrAlias<GrGLGenPathsProc> fGenPaths; | |
526 GLPtrAlias<GrGLDeletePathsProc> fDeletePaths; | |
527 GLPtrAlias<GrGLIsPathProc> fIsPath; | |
528 GLPtrAlias<GrGLPathStencilFuncProc> fPathStencilFunc; | |
529 GLPtrAlias<GrGLPathStencilDepthOffsetProc> fPathStencilDepthOffset; | |
530 GLPtrAlias<GrGLStencilFillPathProc> fStencilFillPath; | |
531 GLPtrAlias<GrGLStencilStrokePathProc> fStencilStrokePath; | |
532 GLPtrAlias<GrGLStencilFillPathInstancedProc> fStencilFillPathInstanced; | |
533 GLPtrAlias<GrGLStencilStrokePathInstancedProc> fStencilStrokePathInstanced; | |
534 GLPtrAlias<GrGLPathCoverDepthFuncProc> fPathCoverDepthFunc; | |
535 GLPtrAlias<GrGLPathColorGenProc> fPathColorGen; | |
536 GLPtrAlias<GrGLPathTexGenProc> fPathTexGen; | |
537 GLPtrAlias<GrGLPathFogGenProc> fPathFogGen; | |
538 GLPtrAlias<GrGLCoverFillPathProc> fCoverFillPath; | |
539 GLPtrAlias<GrGLCoverStrokePathProc> fCoverStrokePath; | |
540 GLPtrAlias<GrGLCoverFillPathInstancedProc> fCoverFillPathInstanced; | |
541 GLPtrAlias<GrGLCoverStrokePathInstancedProc> fCoverStrokePathInstanced; | |
542 GLPtrAlias<GrGLGetPathParameterivProc> fGetPathParameteriv; | |
543 GLPtrAlias<GrGLGetPathParameterfvProc> fGetPathParameterfv; | |
544 GLPtrAlias<GrGLGetPathCommandsProc> fGetPathCommands; | |
545 GLPtrAlias<GrGLGetPathCoordsProc> fGetPathCoords; | |
546 GLPtrAlias<GrGLGetPathDashArrayProc> fGetPathDashArray; | |
547 GLPtrAlias<GrGLGetPathMetricsProc> fGetPathMetrics; | |
548 GLPtrAlias<GrGLGetPathMetricRangeProc> fGetPathMetricRange; | |
549 GLPtrAlias<GrGLGetPathSpacingProc> fGetPathSpacing; | |
550 GLPtrAlias<GrGLGetPathColorGenivProc> fGetPathColorGeniv; | |
551 GLPtrAlias<GrGLGetPathColorGenfvProc> fGetPathColorGenfv; | |
552 GLPtrAlias<GrGLGetPathTexGenivProc> fGetPathTexGeniv; | |
553 GLPtrAlias<GrGLGetPathTexGenfvProc> fGetPathTexGenfv; | |
554 GLPtrAlias<GrGLIsPointInFillPathProc> fIsPointInFillPath; | |
555 GLPtrAlias<GrGLIsPointInStrokePathProc> fIsPointInStrokePath; | |
556 GLPtrAlias<GrGLGetPathLengthProc> fGetPathLength; | |
557 GLPtrAlias<GrGLPointAlongPathProc> fPointAlongPath; | |
558 | |
559 // Per-GL func callback | 361 // Per-GL func callback |
560 #if GR_GL_PER_GL_FUNC_CALLBACK | 362 #if GR_GL_PER_GL_FUNC_CALLBACK |
561 GrGLInterfaceCallbackProc fCallback; | 363 GrGLInterfaceCallbackProc fCallback; |
562 GrGLInterfaceCallbackData fCallbackData; | 364 GrGLInterfaceCallbackData fCallbackData; |
563 #endif | 365 #endif |
564 | |
565 }; | 366 }; |
566 | 367 |
567 #endif | 368 #endif |
OLD | NEW |