| 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 |