Index: src/gpu/gl/GrGLInterface.cpp |
diff --git a/src/gpu/gl/GrGLInterface.cpp b/src/gpu/gl/GrGLInterface.cpp |
index b81d9ceeb84b378366a3e119a04e6812496327e9..89e23f79f156946826ec97c3b6a8794c2f72c442 100644 |
--- a/src/gpu/gl/GrGLInterface.cpp |
+++ b/src/gpu/gl/GrGLInterface.cpp |
@@ -39,57 +39,23 @@ const GrGLInterface* GrGLInterfaceRemoveNVPR(const GrGLInterface* interface) { |
GrGLInterface* newInterface = GrGLInterface::NewClone(interface); |
newInterface->fExtensions.remove("GL_NV_path_rendering"); |
- |
newInterface->fFunctions.fPathCommands = NULL; |
newInterface->fFunctions.fPathCoords = NULL; |
- newInterface->fFunctions.fPathSubCommands = NULL; |
- newInterface->fFunctions.fPathSubCoords = NULL; |
- newInterface->fFunctions.fPathString = NULL; |
- newInterface->fFunctions.fPathGlyphs = NULL; |
- newInterface->fFunctions.fPathGlyphRange = NULL; |
- newInterface->fFunctions.fWeightPaths = NULL; |
- newInterface->fFunctions.fCopyPath = NULL; |
- newInterface->fFunctions.fInterpolatePaths = NULL; |
- newInterface->fFunctions.fTransformPath = NULL; |
- newInterface->fFunctions.fPathParameteriv = NULL; |
newInterface->fFunctions.fPathParameteri = NULL; |
- newInterface->fFunctions.fPathParameterfv = NULL; |
newInterface->fFunctions.fPathParameterf = NULL; |
- newInterface->fFunctions.fPathDashArray = NULL; |
newInterface->fFunctions.fGenPaths = NULL; |
newInterface->fFunctions.fDeletePaths = NULL; |
- newInterface->fFunctions.fIsPath = NULL; |
newInterface->fFunctions.fPathStencilFunc = NULL; |
- newInterface->fFunctions.fPathStencilDepthOffset = NULL; |
newInterface->fFunctions.fStencilFillPath = NULL; |
newInterface->fFunctions.fStencilStrokePath = NULL; |
newInterface->fFunctions.fStencilFillPathInstanced = NULL; |
newInterface->fFunctions.fStencilStrokePathInstanced = NULL; |
- newInterface->fFunctions.fPathCoverDepthFunc = NULL; |
- newInterface->fFunctions.fPathColorGen = NULL; |
newInterface->fFunctions.fPathTexGen = NULL; |
- newInterface->fFunctions.fPathFogGen = NULL; |
newInterface->fFunctions.fCoverFillPath = NULL; |
newInterface->fFunctions.fCoverStrokePath = NULL; |
newInterface->fFunctions.fCoverFillPathInstanced = NULL; |
newInterface->fFunctions.fCoverStrokePathInstanced = NULL; |
- newInterface->fFunctions.fGetPathParameteriv = NULL; |
- newInterface->fFunctions.fGetPathParameterfv = NULL; |
- newInterface->fFunctions.fGetPathCommands = NULL; |
- newInterface->fFunctions.fGetPathCoords = NULL; |
- newInterface->fFunctions.fGetPathDashArray = NULL; |
- newInterface->fFunctions.fGetPathMetrics = NULL; |
- newInterface->fFunctions.fGetPathMetricRange = NULL; |
- newInterface->fFunctions.fGetPathSpacing = NULL; |
- newInterface->fFunctions.fGetPathColorGeniv = NULL; |
- newInterface->fFunctions.fGetPathColorGenfv = NULL; |
- newInterface->fFunctions.fGetPathTexGeniv = NULL; |
- newInterface->fFunctions.fGetPathTexGenfv = NULL; |
- newInterface->fFunctions.fIsPointInFillPath = NULL; |
- newInterface->fFunctions.fIsPointInStrokePath = NULL; |
- newInterface->fFunctions.fGetPathLength = NULL; |
- newInterface->fFunctions.fPointAlongPath = NULL; |
- |
+ newInterface->fFunctions.fProgramPathFragmentInputGen = NULL; |
return newInterface; |
} |
@@ -292,65 +258,6 @@ bool GrGLInterface::validate() const { |
RETURN_FALSE_INTERFACE |
} |
} |
- if (fExtensions.has("GL_EXT_direct_state_access")) { |
- if (NULL == fFunctions.fMatrixLoadf || |
- NULL == fFunctions.fMatrixLoadIdentity) { |
- RETURN_FALSE_INTERFACE |
- } |
- } |
- if (fExtensions.has("GL_NV_path_rendering")) { |
- if (NULL == fFunctions.fPathCommands || |
- NULL == fFunctions.fPathCoords || |
- NULL == fFunctions.fPathSubCommands || |
- NULL == fFunctions.fPathSubCoords || |
- NULL == fFunctions.fPathString || |
- NULL == fFunctions.fPathGlyphs || |
- NULL == fFunctions.fPathGlyphRange || |
- NULL == fFunctions.fWeightPaths || |
- NULL == fFunctions.fCopyPath || |
- NULL == fFunctions.fInterpolatePaths || |
- NULL == fFunctions.fTransformPath || |
- NULL == fFunctions.fPathParameteriv || |
- NULL == fFunctions.fPathParameteri || |
- NULL == fFunctions.fPathParameterfv || |
- NULL == fFunctions.fPathParameterf || |
- NULL == fFunctions.fPathDashArray || |
- NULL == fFunctions.fGenPaths || |
- NULL == fFunctions.fDeletePaths || |
- NULL == fFunctions.fIsPath || |
- NULL == fFunctions.fPathStencilFunc || |
- NULL == fFunctions.fPathStencilDepthOffset || |
- NULL == fFunctions.fStencilFillPath || |
- NULL == fFunctions.fStencilStrokePath || |
- NULL == fFunctions.fStencilFillPathInstanced || |
- NULL == fFunctions.fStencilStrokePathInstanced || |
- NULL == fFunctions.fPathCoverDepthFunc || |
- NULL == fFunctions.fPathColorGen || |
- NULL == fFunctions.fPathTexGen || |
- NULL == fFunctions.fPathFogGen || |
- NULL == fFunctions.fCoverFillPath || |
- NULL == fFunctions.fCoverStrokePath || |
- NULL == fFunctions.fCoverFillPathInstanced || |
- NULL == fFunctions.fCoverStrokePathInstanced || |
- NULL == fFunctions.fGetPathParameteriv || |
- NULL == fFunctions.fGetPathParameterfv || |
- NULL == fFunctions.fGetPathCommands || |
- NULL == fFunctions.fGetPathCoords || |
- NULL == fFunctions.fGetPathDashArray || |
- NULL == fFunctions.fGetPathMetrics || |
- NULL == fFunctions.fGetPathMetricRange || |
- NULL == fFunctions.fGetPathSpacing || |
- NULL == fFunctions.fGetPathColorGeniv || |
- NULL == fFunctions.fGetPathColorGenfv || |
- NULL == fFunctions.fGetPathTexGeniv || |
- NULL == fFunctions.fGetPathTexGenfv || |
- NULL == fFunctions.fIsPointInFillPath || |
- NULL == fFunctions.fIsPointInStrokePath || |
- NULL == fFunctions.fGetPathLength || |
- NULL == fFunctions.fPointAlongPath) { |
- RETURN_FALSE_INTERFACE |
- } |
- } |
} |
// optional function on desktop before 1.3 |
@@ -526,5 +433,48 @@ bool GrGLInterface::validate() const { |
RETURN_FALSE_INTERFACE; |
} |
} |
+ |
+ if ((kGL_GrGLStandard == fStandard && fExtensions.has("GL_EXT_direct_state_access")) || |
+ (kGLES_GrGLStandard == fStandard && fExtensions.has("GL_NV_path_rendering"))) { |
+ if (NULL == fFunctions.fMatrixLoadf || |
+ NULL == fFunctions.fMatrixLoadIdentity) { |
+ RETURN_FALSE_INTERFACE |
+ } |
+ } |
+ |
+ if ((kGL_GrGLStandard == fStandard && |
+ (glVer >= GR_GL_VER(4,3) || fExtensions.has("GL_ARB_program_interface_query"))) || |
+ (kGLES_GrGLStandard == fStandard && glVer >= GR_GL_VER(3,1))) { |
+ if (NULL == fFunctions.fGetProgramResourceLocation) { |
+ RETURN_FALSE_INTERFACE |
+ } |
+ } |
+ |
+ if (fExtensions.has("GL_NV_path_rendering")) { |
+ if (NULL == fFunctions.fPathCommands || |
+ NULL == fFunctions.fPathCoords || |
+ NULL == fFunctions.fPathParameteri || |
+ NULL == fFunctions.fPathParameterf || |
+ NULL == fFunctions.fGenPaths || |
+ NULL == fFunctions.fDeletePaths || |
+ NULL == fFunctions.fPathStencilFunc || |
+ NULL == fFunctions.fStencilFillPath || |
+ NULL == fFunctions.fStencilStrokePath || |
+ NULL == fFunctions.fStencilFillPathInstanced || |
+ NULL == fFunctions.fStencilStrokePathInstanced || |
+ NULL == fFunctions.fCoverFillPath || |
+ NULL == fFunctions.fCoverStrokePath || |
+ NULL == fFunctions.fCoverFillPathInstanced || |
+ NULL == fFunctions.fCoverStrokePathInstanced) { |
+ RETURN_FALSE_INTERFACE |
+ } |
+ // Currently ProgramPathFragmentInputGen is not used on |
+ // OpenGL, rather PathTexGen is. |
+ if ((kGL_GrGLStandard == fStandard && NULL == fFunctions.fPathTexGen) || |
+ (kGLES_GrGLStandard == fStandard && NULL == fFunctions.fProgramPathFragmentInputGen)) { |
+ RETURN_FALSE_INTERFACE |
+ } |
+ } |
+ |
return true; |
} |