From 250f87d49c49cd75b70d0b3bb1749d072bfda76b Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Thu, 17 Dec 2015 13:58:35 -0800 Subject: [PATCH] buffer_view.create: Separate usage and features bits In the Vulkan API, VkFormatFeatureFlags and VkBufferUsageFlags are separate bitfields. The tests were comparing BufferUsageFlags to the FormatFeatureFlags that it got from the driver so it would try and create invalid buffer views. This commit splits these apart so the tests are now properly querying the driver. This fixes #108 --- .../modules/vulkan/api/vktApiBufferViewCreateTests.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/external/vulkancts/modules/vulkan/api/vktApiBufferViewCreateTests.cpp b/external/vulkancts/modules/vulkan/api/vktApiBufferViewCreateTests.cpp index a33159e..39aef7e 100644 --- a/external/vulkancts/modules/vulkan/api/vktApiBufferViewCreateTests.cpp +++ b/external/vulkancts/modules/vulkan/api/vktApiBufferViewCreateTests.cpp @@ -54,11 +54,12 @@ namespace struct BufferViewCaseParameters { - VkFormat format; - VkDeviceSize offset; - VkDeviceSize range; - VkBufferUsageFlags usage; - bool beforeAllocateMemory; + VkFormat format; + VkDeviceSize offset; + VkDeviceSize range; + VkBufferUsageFlags usage; + VkFormatFeatureFlags features; + bool beforeAllocateMemory; }; class BufferViewTestInstance : public TestInstance @@ -119,7 +120,7 @@ tcu::TestStatus BufferViewTestInstance::iterate (void) }; m_context.getInstanceInterface().getPhysicalDeviceFormatProperties(m_context.getPhysicalDevice(), m_testCase.format, &properties); - if (!(properties.bufferFeatures & m_testCase.usage)) + if (!(properties.bufferFeatures & m_testCase.features)) TCU_THROW(NotSupportedError, "Format not supported"); if (vk.createBuffer(vkDevice, &bufferParams, (const VkAllocationCallbacks*)DE_NULL, &testBuffer) != VK_SUCCESS) @@ -229,6 +230,7 @@ tcu::TestStatus BufferViewTestInstance::iterate (void) 0, // VkDeviceSize offset; range, // VkDeviceSize range; VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, // VkBufferUsageFlags usage; + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT, // VkFormatFeatureFlags flags; false // beforeAlloceMemory bool; }; bufferViewTests->addChild(new BufferViewTestCase(testCtx, testName.str() + "_before_uniform", testDescription.str(), testParams)); @@ -240,6 +242,7 @@ tcu::TestStatus BufferViewTestInstance::iterate (void) 0, // VkDeviceSize offset; range, // VkDeviceSize range; VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, // VkBufferUsageFlags usage; + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT, // VkFormatFeatureFlags flags; true // beforeAlloceMemory bool; }; bufferViewTests->addChild(new BufferViewTestCase(testCtx, testName.str() + "_after_uniform", testDescription.str(), testParams)); @@ -251,6 +254,7 @@ tcu::TestStatus BufferViewTestInstance::iterate (void) 0, // VkDeviceSize offset; range, // VkDeviceSize range; VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, // VkBufferUsageFlags usage; + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT, // VkFormatFeatureFlags flags; false // beforeAlloceMemory bool; }; bufferViewTests->addChild(new BufferViewTestCase(testCtx, testName.str() + "_before_storage", testDescription.str(), testParams)); @@ -262,6 +266,7 @@ tcu::TestStatus BufferViewTestInstance::iterate (void) 0, // VkDeviceSize offset; range, // VkDeviceSize range; VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, // VkBufferUsageFlags usage; + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT, // VkFormatFeatureFlags flags; true // beforeAlloceMemory bool; }; bufferViewTests->addChild(new BufferViewTestCase(testCtx, testName.str() + "_after_storage", testDescription.str(), testParams)); -- 2.7.4