aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/SkString.cpp33
-rwxr-xr-xsrc/gpu/GrContextFactory.cpp33
-rw-r--r--src/gpu/GrContextFactory.h35
-rw-r--r--src/gpu/gl/SkNullGLContext.cpp5
-rw-r--r--src/gpu/gl/angle/SkANGLEGLContext.cpp7
-rw-r--r--src/gpu/gl/debug/SkDebugGLContext.h5
-rw-r--r--src/gpu/gl/mesa/SkMesaGLContext.h5
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;