From 5ec9683800b3836f36dc9436de6a90b5e4838c75 Mon Sep 17 00:00:00 2001 From: Corentin Wallez Date: Tue, 17 Apr 2018 22:33:20 -0400 Subject: [PATCH] Vulkan: Implement textures in bindgroups Also enable the sampler tests on the Vulkan backend --- src/backend/vulkan/BindGroupVk.cpp | 13 ++++++++++++- src/tests/end2end/SamplerTests.cpp | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/backend/vulkan/BindGroupVk.cpp b/src/backend/vulkan/BindGroupVk.cpp index 257869ec2a..93783ad606 100644 --- a/src/backend/vulkan/BindGroupVk.cpp +++ b/src/backend/vulkan/BindGroupVk.cpp @@ -18,6 +18,7 @@ #include "BufferVk.h" #include "FencedDeleter.h" #include "SamplerVk.h" +#include "TextureVk.h" #include "VulkanBackend.h" namespace backend { namespace vulkan { @@ -95,7 +96,17 @@ namespace backend { namespace vulkan { write.pImageInfo = &writeImageInfo[numWrites]; } break; - case nxt::BindingType::SampledTexture: + case nxt::BindingType::SampledTexture: { + TextureView* view = ToBackend(GetBindingAsTextureView(bindingIndex)); + + writeImageInfo[numWrites].imageView = view->GetHandle(); + // TODO(cwallez@chromium.org): This isn't true in general: if the image can has + // two read-only usages one of which is Sampled. Works for now though :) + writeImageInfo[numWrites].imageLayout = + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; + + write.pImageInfo = &writeImageInfo[numWrites]; + } break; default: UNREACHABLE(); } diff --git a/src/tests/end2end/SamplerTests.cpp b/src/tests/end2end/SamplerTests.cpp index 6189952f5d..9d4d0c010e 100644 --- a/src/tests/end2end/SamplerTests.cpp +++ b/src/tests/end2end/SamplerTests.cpp @@ -168,4 +168,4 @@ TEST_P(SamplerTest, AddressMode) { } } -NXT_INSTANTIATE_TEST(SamplerTest, D3D12Backend, MetalBackend, OpenGLBackend) +NXT_INSTANTIATE_TEST(SamplerTest, D3D12Backend, MetalBackend, OpenGLBackend, VulkanBackend)