diff options
author | Greg Daniel <egdaniel@google.com> | 2017-05-15 13:50:35 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-05-15 18:12:59 +0000 |
commit | 604b197c6b3262206d99e71030a8071bcc36083d (patch) | |
tree | 515305bd831fb16f8170ae4b2a16f09553b117e5 /tools | |
parent | bca46e29e9f96999df0b38fb9359e71b73217c94 (diff) |
Add support for creating a shared vulkan test context
Bug: skia:
Change-Id: I997c6269e4676bf4cedddcd87e71d107053678bb
Reviewed-on: https://skia-review.googlesource.com/16905
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/gpu/GrContextFactory.cpp | 11 | ||||
-rw-r--r-- | tools/gpu/vk/VkTestContext.cpp | 15 | ||||
-rw-r--r-- | tools/gpu/vk/VkTestContext.h | 6 |
3 files changed, 21 insertions, 11 deletions
diff --git a/tools/gpu/GrContextFactory.cpp b/tools/gpu/GrContextFactory.cpp index e02bc1b371..5aa57853b5 100644 --- a/tools/gpu/GrContextFactory.cpp +++ b/tools/gpu/GrContextFactory.cpp @@ -189,16 +189,14 @@ ContextInfo GrContextFactory::getContextInfoInternal(ContextType type, ContextOv break; } #ifdef SK_VULKAN - case kVulkan_GrBackend: - if (masterContext) { - // Shared contexts not supported yet - return ContextInfo(); - } + case kVulkan_GrBackend: { + VkTestContext* vkSharedContext = masterContext + ? static_cast<VkTestContext*>(masterContext->fTestContext) : nullptr; SkASSERT(kVulkan_ContextType == type); if (ContextOverrides::kRequireNVPRSupport & overrides) { return ContextInfo(); } - testCtx.reset(CreatePlatformVkTestContext()); + testCtx.reset(CreatePlatformVkTestContext(vkSharedContext)); if (!testCtx) { return ContextInfo(); } @@ -214,6 +212,7 @@ ContextInfo GrContextFactory::getContextInfoInternal(ContextType type, ContextOv } backendContext = testCtx->backendContext(); break; + } #endif default: return ContextInfo(); diff --git a/tools/gpu/vk/VkTestContext.cpp b/tools/gpu/vk/VkTestContext.cpp index 0f4e508354..125ead2033 100644 --- a/tools/gpu/vk/VkTestContext.cpp +++ b/tools/gpu/vk/VkTestContext.cpp @@ -108,9 +108,14 @@ GR_STATIC_ASSERT(sizeof(VkFence) <= sizeof(sk_gpu_test::PlatformFence)); // TODO: Implement swap buffers and finish class VkTestContextImpl : public sk_gpu_test::VkTestContext { public: - static VkTestContext* Create() { - sk_sp<const GrVkBackendContext> backendContext( - GrVkBackendContext::Create(vkGetInstanceProcAddr, vkGetDeviceProcAddr)); + static VkTestContext* Create(VkTestContext* sharedContext) { + sk_sp<const GrVkBackendContext> backendContext; + if (sharedContext) { + backendContext = sharedContext->getVkBackendContext(); + } else { + backendContext.reset(GrVkBackendContext::Create(vkGetInstanceProcAddr, + vkGetDeviceProcAddr)); + } if (!backendContext) { return nullptr; } @@ -147,7 +152,9 @@ private: } // anonymous namespace namespace sk_gpu_test { -VkTestContext* CreatePlatformVkTestContext() { return VkTestContextImpl::Create(); } +VkTestContext* CreatePlatformVkTestContext(VkTestContext* sharedContext) { + return VkTestContextImpl::Create(sharedContext); +} } // namespace sk_gpu_test #endif diff --git a/tools/gpu/vk/VkTestContext.h b/tools/gpu/vk/VkTestContext.h index ecec17b7dc..85acb0e716 100644 --- a/tools/gpu/vk/VkTestContext.h +++ b/tools/gpu/vk/VkTestContext.h @@ -22,6 +22,10 @@ public: return reinterpret_cast<GrBackendContext>(fVk.get()); } + sk_sp<const GrVkBackendContext> getVkBackendContext() { + return fVk; + } + bool isValid() const override { return NULL != this->vk(); } const GrVkInterface* vk() const { return fVk->fInterface.get(); } @@ -38,7 +42,7 @@ private: /** * Creates Vk context object bound to the native Vk library. */ -VkTestContext* CreatePlatformVkTestContext(); +VkTestContext* CreatePlatformVkTestContext(VkTestContext*); } // namespace sk_gpu_test |