Adds a GrGLPathRendering class that wraps the NV_path_rendering
extension and manages its various API versions. It also provides
backup implementations when certain NVpr methods from later API
versions are not present on the current system.
R=bsalomon@google.com, kkinnunen@nvidia.com, markkilgard@gmail.com
Author: cdalton@nvidia.com
Review URL: https://codereview.chromium.org/437473002
diff --git a/src/gpu/gl/GrGLInterface.cpp b/src/gpu/gl/GrGLInterface.cpp
index e9ba32e..c192611 100644
--- a/src/gpu/gl/GrGLInterface.cpp
+++ b/src/gpu/gl/GrGLInterface.cpp
@@ -56,6 +56,10 @@
newInterface->fFunctions.fCoverStrokePath = NULL;
newInterface->fFunctions.fCoverFillPathInstanced = NULL;
newInterface->fFunctions.fCoverStrokePathInstanced = NULL;
+ newInterface->fFunctions.fStencilThenCoverFillPath = NULL;
+ newInterface->fFunctions.fStencilThenCoverStrokePath = NULL;
+ newInterface->fFunctions.fStencilThenCoverFillPathInstanced = NULL;
+ newInterface->fFunctions.fStencilThenCoverStrokePathInstanced = NULL;
newInterface->fFunctions.fProgramPathFragmentInputGen = NULL;
return newInterface;
}
@@ -467,18 +471,23 @@
NULL == fFunctions.fCoverFillPath ||
NULL == fFunctions.fCoverStrokePath ||
NULL == fFunctions.fCoverFillPathInstanced ||
- NULL == fFunctions.fCoverStrokePathInstanced ||
- NULL == fFunctions.fStencilThenCoverFillPath ||
- NULL == fFunctions.fStencilThenCoverStrokePath ||
- NULL == fFunctions.fStencilThenCoverFillPathInstanced ||
- NULL == fFunctions.fStencilThenCoverStrokePathInstanced) {
+ 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
+ if (kGL_GrGLStandard == fStandard) {
+ // Some methods only exist on desktop
+ if (NULL == fFunctions.fPathTexGen) {
+ RETURN_FALSE_INTERFACE
+ }
+ } else {
+ // All additions through v1.3 exist on GLES
+ if (NULL == fFunctions.fStencilThenCoverFillPath ||
+ NULL == fFunctions.fStencilThenCoverStrokePath ||
+ NULL == fFunctions.fStencilThenCoverFillPathInstanced ||
+ NULL == fFunctions.fStencilThenCoverStrokePathInstanced ||
+ NULL == fFunctions.fProgramPathFragmentInputGen) {
+ RETURN_FALSE_INTERFACE
+ }
}
}