diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkString.cpp | 33 | ||||
-rwxr-xr-x | src/gpu/GrContextFactory.cpp | 33 | ||||
-rw-r--r-- | src/gpu/GrContextFactory.h | 35 | ||||
-rw-r--r-- | src/gpu/gl/SkNullGLContext.cpp | 5 | ||||
-rw-r--r-- | src/gpu/gl/angle/SkANGLEGLContext.cpp | 7 | ||||
-rw-r--r-- | src/gpu/gl/debug/SkDebugGLContext.h | 5 | ||||
-rw-r--r-- | src/gpu/gl/mesa/SkMesaGLContext.h | 5 |
7 files changed, 76 insertions, 47 deletions
diff --git a/src/core/SkString.cpp b/src/core/SkString.cpp index d93f662da3..b5655e0503 100644 --- a/src/core/SkString.cpp +++ b/src/core/SkString.cpp @@ -624,16 +624,35 @@ SkString SkStringPrintf(const char* format, ...) { return formattedOutput; } -void SkStrSplit(const char* str, const char* delimiters, SkTArray<SkString>* out) { - const char* end = str + strlen(str); - while (str != end) { - // Find a token. - const size_t len = strcspn(str, delimiters); - out->push_back().set(str, len); - str += len; +void SkStrSplit(const char* str, const char* delimiters, SkStrSplitMode splitMode, + SkTArray<SkString>* out) { + if (splitMode == kCoalesce_SkStrSplitMode) { // Skip any delimiters. str += strspn(str, delimiters); } + if (!*str) { + return; + } + + while (true) { + // Find a token. + const size_t len = strcspn(str, delimiters); + if (splitMode == kStrict_SkStrSplitMode || len > 0) { + out->push_back().set(str, len); + str += len; + } + + if (!*str) { + return; + } + if (splitMode == kCoalesce_SkStrSplitMode) { + // Skip any delimiters. + str += strspn(str, delimiters); + } else { + // Skip one delimiter. + str += 1; + } + } } #undef VSNPRINTF diff --git a/src/gpu/GrContextFactory.cpp b/src/gpu/GrContextFactory.cpp index 15af8162b1..4814e7870e 100755 --- a/src/gpu/GrContextFactory.cpp +++ b/src/gpu/GrContextFactory.cpp @@ -24,13 +24,10 @@ #include "GrCaps.h" GrContextFactory::ContextInfo* GrContextFactory::getContextInfo(GLContextType type, - GrGLStandard forcedGpuAPI, GLContextOptions options) { 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)) { + fContexts[i]->fOptions == options) { fContexts[i]->fGLContext->makeCurrent(); return fContexts[i]; } @@ -39,31 +36,39 @@ GrContextFactory::ContextInfo* GrContextFactory::getContextInfo(GLContextType ty SkAutoTUnref<GrContext> grCtx; switch (type) { case kNative_GLContextType: - glCtx.reset(SkCreatePlatformGLContext(forcedGpuAPI)); + glCtx.reset(SkCreatePlatformGLContext(kNone_GrGLStandard)); break; -#ifdef SK_ANGLE + case kGL_GLContextType: + glCtx.reset(SkCreatePlatformGLContext(kGL_GrGLStandard)); + break; + case kGLES_GLContextType: + glCtx.reset(SkCreatePlatformGLContext(kGLES_GrGLStandard)); + break; +#if SK_ANGLE +#ifdef SK_BUILD_FOR_WIN case kANGLE_GLContextType: - glCtx.reset(SkANGLEGLContext::Create(forcedGpuAPI, false)); + glCtx.reset(SkANGLEGLContext::CreateDirectX()); break; +#endif case kANGLE_GL_GLContextType: - glCtx.reset(SkANGLEGLContext::Create(forcedGpuAPI, true)); + glCtx.reset(SkANGLEGLContext::CreateOpenGL()); break; #endif -#ifdef SK_COMMAND_BUFFER +#if SK_COMMAND_BUFFER case kCommandBuffer_GLContextType: - glCtx.reset(SkCommandBufferGLContext::Create(forcedGpuAPI)); + glCtx.reset(SkCommandBufferGLContext::Create()); break; #endif -#ifdef SK_MESA +#if SK_MESA case kMESA_GLContextType: - glCtx.reset(SkMesaGLContext::Create(forcedGpuAPI)); + glCtx.reset(SkMesaGLContext::Create()); break; #endif case kNull_GLContextType: - glCtx.reset(SkNullGLContext::Create(forcedGpuAPI)); + glCtx.reset(SkNullGLContext::Create()); break; case kDebug_GLContextType: - glCtx.reset(SkDebugGLContext::Create(forcedGpuAPI)); + glCtx.reset(SkDebugGLContext::Create()); break; } if (nullptr == glCtx.get()) { diff --git a/src/gpu/GrContextFactory.h b/src/gpu/GrContextFactory.h index 5097813817..1df99d6ff1 100644 --- a/src/gpu/GrContextFactory.h +++ b/src/gpu/GrContextFactory.h @@ -24,19 +24,23 @@ class GrContextFactory : SkNoncopyable { public: enum GLContextType { - kNative_GLContextType, + kNative_GLContextType, //! OpenGL or OpenGL ES context. + kGL_GLContextType, //! OpenGL context. + kGLES_GLContextType, //! OpenGL ES context. #if SK_ANGLE - kANGLE_GLContextType, - kANGLE_GL_GLContextType, +#ifdef SK_BUILD_FOR_WIN + kANGLE_GLContextType, //! ANGLE on DirectX OpenGL ES context. +#endif + kANGLE_GL_GLContextType, //! ANGLE on OpenGL OpenGL ES context. #endif #if SK_COMMAND_BUFFER - kCommandBuffer_GLContextType, + kCommandBuffer_GLContextType, //! Chromium command buffer OpenGL ES context. #endif #if SK_MESA - kMESA_GLContextType, + kMESA_GLContextType, //! MESA OpenGL context #endif - kNull_GLContextType, - kDebug_GLContextType, + kNull_GLContextType, //! Non-rendering OpenGL mock context. + kDebug_GLContextType, //! Non-rendering, state verifying OpenGL context. kLastGLContextType = kDebug_GLContextType }; @@ -65,11 +69,15 @@ public: switch (type) { case kNative_GLContextType: return "native"; - case kNull_GLContextType: - return "null"; + case kGL_GLContextType: + return "gl"; + case kGLES_GLContextType: + return "gles"; #if SK_ANGLE +#ifdef SK_BUILD_FOR_WIN case kANGLE_GLContextType: return "angle"; +#endif case kANGLE_GL_GLContextType: return "angle-gl"; #endif @@ -81,6 +89,8 @@ public: case kMESA_GLContextType: return "mesa"; #endif + case kNull_GLContextType: + return "null"; case kDebug_GLContextType: return "debug"; default: @@ -124,15 +134,14 @@ 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, + ContextInfo* getContextInfo(GLContextType type, GLContextOptions options = kNone_GLContextOptions); /** * 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, GLContextOptions options = kNone_GLContextOptions) { + if (ContextInfo* info = this->getContextInfo(type, options)) { return info->fGrContext; } return nullptr; diff --git a/src/gpu/gl/SkNullGLContext.cpp b/src/gpu/gl/SkNullGLContext.cpp index e7270c32c4..dafa1ef0bc 100644 --- a/src/gpu/gl/SkNullGLContext.cpp +++ b/src/gpu/gl/SkNullGLContext.cpp @@ -578,10 +578,7 @@ static void set_current_context_from_interface(const GrGLInterface* interface) { } #endif -SkNullGLContext* SkNullGLContext::Create(GrGLStandard forcedGpuAPI) { - if (kGLES_GrGLStandard == forcedGpuAPI) { - return nullptr; - } +SkNullGLContext* SkNullGLContext::Create() { SkNullGLContext* ctx = new SkNullGLContext; if (!ctx->isValid()) { delete ctx; diff --git a/src/gpu/gl/angle/SkANGLEGLContext.cpp b/src/gpu/gl/angle/SkANGLEGLContext.cpp index 54ef02d492..2c9f38e1d9 100644 --- a/src/gpu/gl/angle/SkANGLEGLContext.cpp +++ b/src/gpu/gl/angle/SkANGLEGLContext.cpp @@ -180,7 +180,12 @@ GrGLuint SkANGLEGLContext::eglImageToExternalTexture(GrEGLImage image) const { } SkGLContext* SkANGLEGLContext::createNew() const { - SkGLContext* ctx = SkANGLEGLContext::Create(this->gl()->fStandard, fIsGLBackend); +#ifdef SK_BUILD_FOR_WIN + SkGLContext* ctx = fIsGLBackend ? SkANGLEGLContext::CreateOpenGL() + : SkANGLEGLContext::CreateDirectX(); +#else + SkGLContext* ctx = SkANGLEGLContext::CreateOpenGL(); +#endif if (ctx) { ctx->makeCurrent(); } diff --git a/src/gpu/gl/debug/SkDebugGLContext.h b/src/gpu/gl/debug/SkDebugGLContext.h index abbcf559c5..113a254e0b 100644 --- a/src/gpu/gl/debug/SkDebugGLContext.h +++ b/src/gpu/gl/debug/SkDebugGLContext.h @@ -14,10 +14,7 @@ class SkDebugGLContext : public SkGLContext { public: ~SkDebugGLContext() override; - static SkDebugGLContext* Create(GrGLStandard forcedGpuAPI) { - if (kGLES_GrGLStandard == forcedGpuAPI) { - return nullptr; - } + static SkDebugGLContext* Create() { return new SkDebugGLContext; } private: diff --git a/src/gpu/gl/mesa/SkMesaGLContext.h b/src/gpu/gl/mesa/SkMesaGLContext.h index a58f1c890e..a9c77a81da 100644 --- a/src/gpu/gl/mesa/SkMesaGLContext.h +++ b/src/gpu/gl/mesa/SkMesaGLContext.h @@ -19,10 +19,7 @@ private: public: ~SkMesaGLContext() override; - static SkMesaGLContext* Create(GrGLStandard forcedGpuAPI) { - if (kGLES_GrGLStandard == forcedGpuAPI) { - return nullptr; - } + static SkMesaGLContext* Create() { SkMesaGLContext* ctx = new SkMesaGLContext; if (!ctx->isValid()) { delete ctx; |