| Index: tools/gpu/GrContextFactory.h
|
| diff --git a/tools/gpu/GrContextFactory.h b/tools/gpu/GrContextFactory.h
|
| index 89ca9cadf0903fb73d9baa2f29da19c72f11b5a0..0dc8c20cd503f4b0c05ef0099181a074a118d2da 100644
|
| --- a/tools/gpu/GrContextFactory.h
|
| +++ b/tools/gpu/GrContextFactory.h
|
| @@ -14,6 +14,8 @@
|
| #include "gl/GLTestContext.h"
|
| #include "SkTArray.h"
|
|
|
| +struct GrVkBackendContext;
|
| +
|
| namespace sk_gpu_test {
|
|
|
| struct ContextInfo {
|
| @@ -23,7 +25,7 @@ struct ContextInfo {
|
| : fGrContext(grContext), fGLContext(glContext) { }
|
| GrContext* fGrContext;
|
| GLTestContext* fGLContext; //! Valid until the factory destroys it via abandonContexts() or
|
| - //! destroyContexts().
|
| + //! destroyContexts(). Null if context is not based on OpenGL.
|
| };
|
|
|
| /**
|
| @@ -35,24 +37,19 @@ struct ContextInfo {
|
| */
|
| class GrContextFactory : SkNoncopyable {
|
| public:
|
| + // The availability of context types is subject to platform and build configuration
|
| + // restrictions.
|
| enum ContextType {
|
| kGL_ContextType, //! OpenGL context.
|
| kGLES_ContextType, //! OpenGL ES context.
|
| -#if SK_ANGLE
|
| -#ifdef SK_BUILD_FOR_WIN
|
| kANGLE_ContextType, //! ANGLE on DirectX OpenGL ES context.
|
| -#endif
|
| kANGLE_GL_ContextType, //! ANGLE on OpenGL OpenGL ES context.
|
| -#endif
|
| -#if SK_COMMAND_BUFFER
|
| kCommandBuffer_ContextType, //! Chromium command buffer OpenGL ES context.
|
| -#endif
|
| -#if SK_MESA
|
| kMESA_ContextType, //! MESA OpenGL context
|
| -#endif
|
| kNullGL_ContextType, //! Non-rendering OpenGL mock context.
|
| kDebugGL_ContextType, //! Non-rendering, state verifying OpenGL context.
|
| - kLastContextType = kDebugGL_ContextType
|
| + kVulkan_ContextType, //! Vulkan
|
| + kLastContextType = kVulkan_ContextType
|
| };
|
|
|
| //! OpenGL or OpenGL ES context depending on the platform. To be removed.
|
| @@ -81,8 +78,12 @@ public:
|
| }
|
|
|
| static GrBackend ContextTypeBackend(ContextType type) {
|
| - // Currently all the context types use the GL backed
|
| - return kOpenGL_GrBackend;
|
| + switch (type) {
|
| + case kVulkan_ContextType:
|
| + return kVulkan_GrBackend;
|
| + default:
|
| + return kOpenGL_GrBackend;
|
| + }
|
| }
|
|
|
| static const char* ContextTypeName(ContextType type) {
|
| @@ -91,28 +92,20 @@ public:
|
| return "gl";
|
| case kGLES_ContextType:
|
| return "gles";
|
| -#if SK_ANGLE
|
| -#ifdef SK_BUILD_FOR_WIN
|
| case kANGLE_ContextType:
|
| return "angle";
|
| -#endif
|
| case kANGLE_GL_ContextType:
|
| return "angle-gl";
|
| -#endif
|
| -#if SK_COMMAND_BUFFER
|
| case kCommandBuffer_ContextType:
|
| return "commandbuffer";
|
| -#endif
|
| -#if SK_MESA
|
| case kMESA_ContextType:
|
| return "mesa";
|
| -#endif
|
| case kNullGL_ContextType:
|
| - return "null";
|
| + return "nullgl";
|
| case kDebugGL_ContextType:
|
| - return "debug";
|
| - default:
|
| - SkFAIL("Unknown GL Context type.");
|
| + return "debuggl";
|
| + case kVulkan_ContextType:
|
| + return "vulkan";
|
| }
|
| }
|
|
|
| @@ -140,13 +133,15 @@ public:
|
|
|
| private:
|
| struct Context {
|
| - ContextType fType;
|
| - ContextOptions fOptions;
|
| - GLTestContext* fGLContext; // null if non-GL
|
| - GrContext* fGrContext;
|
| + ContextType fType;
|
| + ContextOptions fOptions;
|
| + GLTestContext* fGLContext; // null if non-GL
|
| + GrContext* fGrContext;
|
| + bool fAbandoned;
|
| };
|
| - SkTArray<Context, true> fContexts;
|
| - const GrContextOptions fGlobalOptions;
|
| + SkTArray<Context, true> fContexts;
|
| + SkAutoTDelete<GLTestContext> fSentinelGLContext;
|
| + const GrContextOptions fGlobalOptions;
|
| };
|
| } // namespace sk_gpu_test
|
| #endif
|
|
|