aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar Greg Daniel <egdaniel@google.com>2017-05-15 13:50:35 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-05-15 18:12:59 +0000
commit604b197c6b3262206d99e71030a8071bcc36083d (patch)
tree515305bd831fb16f8170ae4b2a16f09553b117e5 /tools
parentbca46e29e9f96999df0b38fb9359e71b73217c94 (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.cpp11
-rw-r--r--tools/gpu/vk/VkTestContext.cpp15
-rw-r--r--tools/gpu/vk/VkTestContext.h6
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