Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1573)

Unified Diff: tests/VkWrapTests.cpp

Issue 1808263002: Implement Vulkan GrBackendObject for textures. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Tweaks Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/vk/GrVkTextureRenderTarget.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/VkWrapTests.cpp
diff --git a/tests/VkWrapTests.cpp b/tests/VkWrapTests.cpp
new file mode 100755
index 0000000000000000000000000000000000000000..fe954fa2c23a649207872e43c28ba89baaf0136c
--- /dev/null
+++ b/tests/VkWrapTests.cpp
@@ -0,0 +1,179 @@
+
+/*
+ * Copyright 2016 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+// This is a GPU-backend specific test. It relies on static intializers to work
+
+#include "SkTypes.h"
+
+#if SK_SUPPORT_GPU && SK_ALLOW_STATIC_GLOBAL_INITIALIZERS && defined(SK_VULKAN)
+
+#include "GrContextFactory.h"
+#include "GrTest.h"
+#include "Test.h"
+#include "vk/GrVkCaps.h"
+#include "vk/GrVkGpu.h"
+#include "vk/GrVkMemory.h"
+#include "vk/GrVkTypes.h"
+
+const int kW = 1024;
+const int kH = 1024;
+const GrPixelConfig kPixelConfig = kRGBA_8888_GrPixelConfig;
+
+void wrap_tex_test(skiatest::Reporter* reporter, GrContext* context) {
+
+ GrVkGpu* gpu = static_cast<GrVkGpu*>(context->getGpu());
+
+ GrBackendObject backendObj = gpu->createTestingOnlyBackendTexture(nullptr, kW, kH, kPixelConfig);
+ const GrVkTextureInfo* backendTex = reinterpret_cast<const GrVkTextureInfo*>(backendObj);
+
+ // check basic borrowed creation
+ GrBackendTextureDesc desc;
+ desc.fConfig = kPixelConfig;
+ desc.fWidth = kW;
+ desc.fHeight = kH;
+ desc.fTextureHandle = backendObj;
+ GrTexture* tex = gpu->wrapBackendTexture(desc, kBorrow_GrWrapOwnership);
+ REPORTER_ASSERT(reporter, tex);
+ tex->unref();
+
+ // image is null
+ GrVkTextureInfo backendCopy = *backendTex;
+ backendCopy.fImage = VK_NULL_HANDLE;
+ desc.fTextureHandle = (GrBackendObject) &backendCopy;
+ tex = gpu->wrapBackendTexture(desc, kBorrow_GrWrapOwnership);
+ REPORTER_ASSERT(reporter, !tex);
+ tex = gpu->wrapBackendTexture(desc, kAdopt_GrWrapOwnership);
+ REPORTER_ASSERT(reporter, !tex);
+
+ // alloc is null
+ backendCopy.fImage = backendTex->fImage;
+ backendCopy.fAlloc = VK_NULL_HANDLE;
+ tex = gpu->wrapBackendTexture(desc, kBorrow_GrWrapOwnership);
+ REPORTER_ASSERT(reporter, !tex);
+ tex = gpu->wrapBackendTexture(desc, kAdopt_GrWrapOwnership);
+ REPORTER_ASSERT(reporter, !tex);
+
+ // check adopt creation
+ backendCopy.fAlloc = backendTex->fAlloc;
+ tex = gpu->wrapBackendTexture(desc, kAdopt_GrWrapOwnership);
+ REPORTER_ASSERT(reporter, tex);
+ tex->unref();
+
+ gpu->deleteTestingOnlyBackendTexture(backendObj, true);
+}
+
+void wrap_rt_test(skiatest::Reporter* reporter, GrContext* context) {
+ GrVkGpu* gpu = static_cast<GrVkGpu*>(context->getGpu());
+
+ GrBackendObject backendObj = gpu->createTestingOnlyBackendTexture(nullptr, kW, kH, kPixelConfig);
+ const GrVkTextureInfo* backendTex = reinterpret_cast<const GrVkTextureInfo*>(backendObj);
+
+ // check basic borrowed creation
+ GrBackendRenderTargetDesc desc;
+ desc.fWidth = kW;
+ desc.fHeight = kH;
+ desc.fConfig = kPixelConfig;
+ desc.fOrigin = kTopLeft_GrSurfaceOrigin;
+ desc.fSampleCnt = 0;
+ desc.fStencilBits = 0;
+ desc.fRenderTargetHandle = backendObj;
+ GrRenderTarget* rt = gpu->wrapBackendRenderTarget(desc, kBorrow_GrWrapOwnership);
+ REPORTER_ASSERT(reporter, rt);
+ rt->unref();
+
+ // image is null
+ GrVkTextureInfo backendCopy = *backendTex;
+ backendCopy.fImage = VK_NULL_HANDLE;
+ desc.fRenderTargetHandle = (GrBackendObject)&backendCopy;
+ rt = gpu->wrapBackendRenderTarget(desc, kBorrow_GrWrapOwnership);
+ REPORTER_ASSERT(reporter, !rt);
+ rt = gpu->wrapBackendRenderTarget(desc, kAdopt_GrWrapOwnership);
+ REPORTER_ASSERT(reporter, !rt);
+
+ // alloc is null
+ backendCopy.fImage = backendTex->fImage;
+ backendCopy.fAlloc = VK_NULL_HANDLE;
+ // can wrap null alloc if borrowing
+ rt = gpu->wrapBackendRenderTarget(desc, kBorrow_GrWrapOwnership);
+ REPORTER_ASSERT(reporter, rt);
+ // but not if adopting
+ rt = gpu->wrapBackendRenderTarget(desc, kAdopt_GrWrapOwnership);
+ REPORTER_ASSERT(reporter, !rt);
+
+ // check adopt creation
+ backendCopy.fAlloc = backendTex->fAlloc;
+ rt = gpu->wrapBackendRenderTarget(desc, kAdopt_GrWrapOwnership);
+ REPORTER_ASSERT(reporter, rt);
+ rt->unref();
+
+ gpu->deleteTestingOnlyBackendTexture(backendObj, true);
+}
+
+void wrap_trt_test(skiatest::Reporter* reporter, GrContext* context) {
+ GrVkGpu* gpu = static_cast<GrVkGpu*>(context->getGpu());
+
+ GrBackendObject backendObj = gpu->createTestingOnlyBackendTexture(nullptr, kW, kH, kPixelConfig);
+ const GrVkTextureInfo* backendTex = reinterpret_cast<const GrVkTextureInfo*>(backendObj);
+
+ // check basic borrowed creation
+ GrBackendTextureDesc desc;
+ desc.fFlags = kRenderTarget_GrBackendTextureFlag;
+ desc.fConfig = kPixelConfig;
+ desc.fWidth = kW;
+ desc.fHeight = kH;
+ desc.fTextureHandle = backendObj;
+ GrTexture* tex = gpu->wrapBackendTexture(desc, kBorrow_GrWrapOwnership);
+ REPORTER_ASSERT(reporter, tex);
+ tex->unref();
+
+ // image is null
+ GrVkTextureInfo backendCopy = *backendTex;
+ backendCopy.fImage = VK_NULL_HANDLE;
+ desc.fTextureHandle = (GrBackendObject)&backendCopy;
+ tex = gpu->wrapBackendTexture(desc, kBorrow_GrWrapOwnership);
+ REPORTER_ASSERT(reporter, !tex);
+ tex = gpu->wrapBackendTexture(desc, kAdopt_GrWrapOwnership);
+ REPORTER_ASSERT(reporter, !tex);
+
+ // alloc is null
+ backendCopy.fImage = backendTex->fImage;
+ backendCopy.fAlloc = VK_NULL_HANDLE;
+ tex = gpu->wrapBackendTexture(desc, kBorrow_GrWrapOwnership);
+ REPORTER_ASSERT(reporter, !tex);
+ tex = gpu->wrapBackendTexture(desc, kAdopt_GrWrapOwnership);
+ REPORTER_ASSERT(reporter, !tex);
+
+ // check adopt creation
+ backendCopy.fAlloc = backendTex->fAlloc;
+ tex = gpu->wrapBackendTexture(desc, kAdopt_GrWrapOwnership);
+ REPORTER_ASSERT(reporter, tex);
+ tex->unref();
+
+ gpu->deleteTestingOnlyBackendTexture(backendObj, true);
+}
+
+DEF_GPUTEST(VkWrapTests, reporter, factory) {
+ GrContextOptions opts;
+ opts.fSuppressPrints = true;
+ GrContextFactory debugFactory(opts);
+ for (int type = 0; type < GrContextFactory::kLastGLContextType; ++type) {
+ if (static_cast<GrContextFactory::GLContextType>(type) !=
+ GrContextFactory::kNative_GLContextType) {
+ continue;
+ }
+ GrContext* context = debugFactory.get(static_cast<GrContextFactory::GLContextType>(type));
+ if (context) {
+ wrap_tex_test(reporter, context);
+ wrap_rt_test(reporter, context);
+ wrap_trt_test(reporter, context);
+ }
+
+ }
+}
+
+#endif
« no previous file with comments | « src/gpu/vk/GrVkTextureRenderTarget.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698