diff options
Diffstat (limited to 'src/gpu')
-rwxr-xr-x | src/gpu/GrContextFactory.cpp | 18 | ||||
-rw-r--r-- | src/gpu/GrContextFactory.h | 46 |
2 files changed, 32 insertions, 32 deletions
diff --git a/src/gpu/GrContextFactory.cpp b/src/gpu/GrContextFactory.cpp index 15af8162b1..097b99b0b7 100755 --- a/src/gpu/GrContextFactory.cpp +++ b/src/gpu/GrContextFactory.cpp @@ -24,13 +24,13 @@ #include "GrCaps.h" GrContextFactory::ContextInfo* GrContextFactory::getContextInfo(GLContextType type, - GrGLStandard forcedGpuAPI, - GLContextOptions options) { + GrGLStandard forcedGpuAPI) { for (int i = 0; i < fContexts.count(); ++i) { - if (fContexts[i]->fType == type && - fContexts[i]->fOptions == options && - (forcedGpuAPI == kNone_GrGLStandard || - forcedGpuAPI == fContexts[i]->fGLContext->gl()->fStandard)) { + if (forcedGpuAPI != kNone_GrGLStandard && + forcedGpuAPI != fContexts[i]->fGLContext->gl()->fStandard) + continue; + + if (fContexts[i]->fType == type) { fContexts[i]->fGLContext->makeCurrent(); return fContexts[i]; } @@ -38,6 +38,7 @@ GrContextFactory::ContextInfo* GrContextFactory::getContextInfo(GLContextType ty SkAutoTUnref<SkGLContext> glCtx; SkAutoTUnref<GrContext> grCtx; switch (type) { + case kNVPR_GLContextType: // fallthru case kNative_GLContextType: glCtx.reset(SkCreatePlatformGLContext(forcedGpuAPI)); break; @@ -74,7 +75,7 @@ GrContextFactory::ContextInfo* GrContextFactory::getContextInfo(GLContextType ty // Block NVPR from non-NVPR types. SkAutoTUnref<const GrGLInterface> glInterface(SkRef(glCtx->gl())); - if (!(kEnableNVPR_GLContextOptions & options)) { + if (kNVPR_GLContextType != type) { glInterface.reset(GrGLInterfaceRemoveNVPR(glInterface)); if (!glInterface) { return nullptr; @@ -91,7 +92,7 @@ GrContextFactory::ContextInfo* GrContextFactory::getContextInfo(GLContextType ty if (!grCtx.get()) { return nullptr; } - if (kEnableNVPR_GLContextOptions & options) { + if (kNVPR_GLContextType == type) { if (!grCtx->caps()->shaderCaps()->pathRenderingSupport()) { return nullptr; } @@ -101,6 +102,5 @@ GrContextFactory::ContextInfo* GrContextFactory::getContextInfo(GLContextType ty ctx->fGLContext = SkRef(glCtx.get()); ctx->fGrContext = SkRef(grCtx.get()); ctx->fType = type; - ctx->fOptions = options; return ctx; } diff --git a/src/gpu/GrContextFactory.h b/src/gpu/GrContextFactory.h index 5097813817..c837e74a25 100644 --- a/src/gpu/GrContextFactory.h +++ b/src/gpu/GrContextFactory.h @@ -23,34 +23,35 @@ */ class GrContextFactory : SkNoncopyable { public: + /** + * Types of GL contexts supported. For historical and testing reasons the native GrContext will + * not use "GL_NV_path_rendering" even when the driver supports it. There is a separate context + * type that does not remove NVPR support and which will fail when the driver does not support + * the extension. + */ enum GLContextType { - kNative_GLContextType, + kNative_GLContextType, #if SK_ANGLE - kANGLE_GLContextType, - kANGLE_GL_GLContextType, + kANGLE_GLContextType, + kANGLE_GL_GLContextType, #endif #if SK_COMMAND_BUFFER - kCommandBuffer_GLContextType, + kCommandBuffer_GLContextType, #endif #if SK_MESA - kMESA_GLContextType, + kMESA_GLContextType, #endif - kNull_GLContextType, - kDebug_GLContextType, - kLastGLContextType = kDebug_GLContextType + /** Similar to kNative but does not filter NVPR. It will fail if the GL driver does not + support NVPR */ + kNVPR_GLContextType, + kNull_GLContextType, + kDebug_GLContextType, + + kLastGLContextType = kDebug_GLContextType }; static const int kGLContextTypeCnt = kLastGLContextType + 1; - /** - * Options for GL context creation. For historical and testing reasons the options will default - * to not using GL_NV_path_rendering extension even when the driver supports it. - */ - enum GLContextOptions { - kNone_GLContextOptions = 0, - kEnableNVPR_GLContextOptions = 0x1, - }; - static bool IsRenderingGLContext(GLContextType type) { switch (type) { case kNull_GLContextType: @@ -81,6 +82,8 @@ public: case kMESA_GLContextType: return "mesa"; #endif + case kNVPR_GLContextType: + return "nvpr"; case kDebug_GLContextType: return "debug"; default: @@ -116,7 +119,6 @@ public: struct ContextInfo { GLContextType fType; - GLContextOptions fOptions; SkGLContext* fGLContext; GrContext* fGrContext; }; @@ -124,15 +126,13 @@ public: * Get a context initialized with a type of GL context. It also makes the GL context current. * Pointer is valid until destroyContexts() is called. */ - ContextInfo* getContextInfo(GLContextType type, GrGLStandard forcedGpuAPI = kNone_GrGLStandard, - GLContextOptions options = kNone_GLContextOptions); + ContextInfo* getContextInfo(GLContextType type, GrGLStandard forcedGpuAPI = kNone_GrGLStandard); /** * Get a GrContext initialized with a type of GL context. It also makes the GL context current. */ - GrContext* get(GLContextType type, GrGLStandard forcedGpuAPI = kNone_GrGLStandard, - GLContextOptions options = kNone_GLContextOptions) { - if (ContextInfo* info = this->getContextInfo(type, forcedGpuAPI, options)) { + GrContext* get(GLContextType type, GrGLStandard forcedGpuAPI = kNone_GrGLStandard) { + if (ContextInfo* info = this->getContextInfo(type, forcedGpuAPI)) { return info->fGrContext; } return nullptr; |