| Index: src/gpu/gl/GrGLAssembleInterface.cpp
|
| diff --git a/src/gpu/gl/GrGLAssembleInterface.cpp b/src/gpu/gl/GrGLAssembleInterface.cpp
|
| index 4ae50ba391c62d7cc1282fec9e440342c9a5aa63..8fd173d9f433b6fe4bb0e136866f808624304c0f 100644
|
| --- a/src/gpu/gl/GrGLAssembleInterface.cpp
|
| +++ b/src/gpu/gl/GrGLAssembleInterface.cpp
|
| @@ -14,12 +14,6 @@
|
| #define GET_PROC_SUFFIX(F, S) functions->f ## F = (GrGL ## F ## Proc) get(ctx, "gl" #F #S)
|
| #define GET_PROC_LOCAL(F) GrGL ## F ## Proc F = (GrGL ## F ## Proc) get(ctx, "gl" #F)
|
|
|
| -// The glStencilThenCover* methods are a new addition to NV_path_rendering. They
|
| -// aren't available on all drivers. In the event that they are not present, this
|
| -// function can be used to add methods to the given GrGLInterface that emulate
|
| -// them using the existing glStencil*/glCover* methods.
|
| -static void emulate_nvpr_stencil_then_cover(GrGLInterface*);
|
| -
|
| const GrGLInterface* GrGLAssembleGLInterface(void* ctx, GrGLGetProc get) {
|
| GET_PROC_LOCAL(GetString);
|
| GET_PROC_LOCAL(GetStringi);
|
| @@ -245,18 +239,13 @@ const GrGLInterface* GrGLAssembleGLInterface(void* ctx, GrGLGetProc get) {
|
| GET_PROC_SUFFIX(CoverStrokePath, NV);
|
| GET_PROC_SUFFIX(CoverFillPathInstanced, NV);
|
| GET_PROC_SUFFIX(CoverStrokePathInstanced, NV);
|
| + // NV_path_rendering v1.2 (These methods may not be present)
|
| GET_PROC_SUFFIX(StencilThenCoverFillPath, NV);
|
| GET_PROC_SUFFIX(StencilThenCoverStrokePath, NV);
|
| GET_PROC_SUFFIX(StencilThenCoverFillPathInstanced, NV);
|
| GET_PROC_SUFFIX(StencilThenCoverStrokePathInstanced, NV);
|
| + // NV_path_rendering v1.3 (These methods may not be present)
|
| GET_PROC_SUFFIX(ProgramPathFragmentInputGen, NV);
|
| -
|
| - if (NULL == interface->fFunctions.fStencilThenCoverFillPath ||
|
| - NULL == interface->fFunctions.fStencilThenCoverStrokePath ||
|
| - NULL == interface->fFunctions.fStencilThenCoverFillPathInstanced ||
|
| - NULL == interface->fFunctions.fStencilThenCoverFillPathInstanced) {
|
| - emulate_nvpr_stencil_then_cover(interface);
|
| - }
|
| }
|
|
|
| if (extensions.has("GL_EXT_debug_marker")) {
|
| @@ -283,101 +272,3 @@ const GrGLInterface* GrGLAssembleGLInterface(void* ctx, GrGLGetProc get) {
|
|
|
| return interface;
|
| }
|
| -
|
| -static GrGLStencilFillPathProc gStencilFillPath;
|
| -static GrGLCoverFillPathProc gCoverFillPath;
|
| -static GrGLvoid GR_GL_FUNCTION_TYPE stencil_then_cover_fill_path(
|
| - GrGLuint path, GrGLenum fillMode,
|
| - GrGLuint mask, GrGLenum coverMode) {
|
| - gStencilFillPath(path, fillMode, mask);
|
| - gCoverFillPath(path, coverMode);
|
| -}
|
| -
|
| -
|
| -static GrGLStencilStrokePathProc gStencilStrokePath;
|
| -static GrGLCoverStrokePathProc gCoverStrokePath;
|
| -static GrGLvoid GR_GL_FUNCTION_TYPE stencil_then_cover_stroke_path(
|
| - GrGLuint path, GrGLint reference,
|
| - GrGLuint mask, GrGLenum coverMode) {
|
| - gStencilStrokePath(path, reference, mask);
|
| - gCoverStrokePath(path, coverMode);
|
| -}
|
| -
|
| -static GrGLStencilFillPathInstancedProc gStencilFillPathInstanced;
|
| -static GrGLCoverFillPathInstancedProc gCoverFillPathInstanced;
|
| -static GrGLvoid GR_GL_FUNCTION_TYPE stencil_then_cover_fill_path_instanced(
|
| - GrGLsizei numPaths, GrGLenum pathNameType,
|
| - const GrGLvoid *paths, GrGLuint pathBase,
|
| - GrGLenum fillMode, GrGLuint mask,
|
| - GrGLenum coverMode, GrGLenum transformType,
|
| - const GrGLfloat *transformValues) {
|
| - gStencilFillPathInstanced(numPaths, pathNameType, paths, pathBase,
|
| - fillMode, mask, transformType, transformValues);
|
| - gCoverFillPathInstanced(numPaths, pathNameType, paths, pathBase,
|
| - coverMode, transformType, transformValues);
|
| -}
|
| -
|
| -static GrGLStencilStrokePathInstancedProc gStencilStrokePathInstanced;
|
| -static GrGLCoverStrokePathInstancedProc gCoverStrokePathInstanced;
|
| -static GrGLvoid GR_GL_FUNCTION_TYPE stencil_then_cover_stroke_path_instanced(
|
| - GrGLsizei numPaths, GrGLenum pathNameType,
|
| - const GrGLvoid *paths, GrGLuint pathBase,
|
| - GrGLint reference, GrGLuint mask,
|
| - GrGLenum coverMode, GrGLenum transformType,
|
| - const GrGLfloat *transformValues) {
|
| - gStencilStrokePathInstanced(numPaths, pathNameType, paths, pathBase,
|
| - reference, mask, transformType, transformValues);
|
| - gCoverStrokePathInstanced(numPaths, pathNameType, paths, pathBase,
|
| - coverMode, transformType, transformValues);
|
| -}
|
| -
|
| -static void emulate_nvpr_stencil_then_cover(GrGLInterface* interface) {
|
| - if (NULL == gStencilFillPath) {
|
| - gStencilFillPath = (GrGLStencilFillPathProc)interface->fFunctions.fStencilFillPath;
|
| - }
|
| - if (NULL == gCoverFillPath) {
|
| - gCoverFillPath = (GrGLCoverFillPathProc)interface->fFunctions.fCoverFillPath;
|
| - }
|
| - if (NULL == gStencilStrokePath) {
|
| - gStencilStrokePath = (GrGLStencilStrokePathProc)interface->fFunctions.fStencilStrokePath;
|
| - }
|
| - if (NULL == gCoverStrokePath) {
|
| - gCoverStrokePath = (GrGLCoverStrokePathProc)interface->fFunctions.fCoverStrokePath;
|
| - }
|
| - if (NULL == gStencilFillPathInstanced) {
|
| - gStencilFillPathInstanced = (GrGLStencilFillPathInstancedProc)
|
| - interface->fFunctions.fStencilFillPathInstanced;
|
| - }
|
| - if (NULL == gCoverFillPathInstanced) {
|
| - gCoverFillPathInstanced = (GrGLCoverFillPathInstancedProc)
|
| - interface->fFunctions.fCoverFillPathInstanced;
|
| - }
|
| - if (NULL == gStencilStrokePathInstanced) {
|
| - gStencilStrokePathInstanced = (GrGLStencilStrokePathInstancedProc)
|
| - interface->fFunctions.fStencilStrokePathInstanced;
|
| - }
|
| - if (NULL == gCoverStrokePathInstanced) {
|
| - gCoverStrokePathInstanced = (GrGLCoverStrokePathInstancedProc)
|
| - interface->fFunctions.fCoverStrokePathInstanced;
|
| - }
|
| -
|
| - if (interface->fFunctions.fStencilFillPath != gStencilFillPath ||
|
| - interface->fFunctions.fCoverFillPath != gCoverFillPath ||
|
| - interface->fFunctions.fStencilStrokePath != gStencilStrokePath ||
|
| - interface->fFunctions.fCoverStrokePath != gCoverStrokePath ||
|
| - interface->fFunctions.fStencilFillPathInstanced != gStencilFillPathInstanced ||
|
| - interface->fFunctions.fCoverFillPathInstanced != gCoverFillPathInstanced ||
|
| - interface->fFunctions.fStencilStrokePathInstanced != gStencilStrokePathInstanced ||
|
| - interface->fFunctions.fCoverStrokePathInstanced != gCoverStrokePathInstanced) {
|
| - // While not every windowing system requires GetProcAddress to return
|
| - // the same addresses in different contexts, it is guaranteed to do so
|
| - // in any context that supports NV_path_rendering.
|
| - SkFAIL("GetProcAddress returned different addresses for the same nvpr functions");
|
| - return;
|
| - }
|
| -
|
| - interface->fFunctions.fStencilThenCoverFillPath = &stencil_then_cover_fill_path;
|
| - interface->fFunctions.fStencilThenCoverStrokePath = &stencil_then_cover_stroke_path;
|
| - interface->fFunctions.fStencilThenCoverFillPathInstanced = &stencil_then_cover_fill_path_instanced;
|
| - interface->fFunctions.fStencilThenCoverStrokePathInstanced = &stencil_then_cover_stroke_path_instanced;
|
| -}
|
|
|