-/*------------------------------------------------------------------------
+/*-------------------------------------------------------------------------
* Vulkan Conformance Tests
* ------------------------
*
*//*--------------------------------------------------------------------*/
#include "vktApiBufferViewCreateTests.hpp"
-
#include "deStringUtil.hpp"
#include "deSharedPtr.hpp"
#include "gluVarType.hpp"
enum AllocationKind
{
- ALLOCATION_KIND_SUBALLOCATION = 0,
- ALLOCATION_KIND_DEDICATED = 1,
- ALLOCATION_KIND_LAST
+ ALLOCATION_KIND_SUBALLOCATED = 0,
+ ALLOCATION_KIND_DEDICATED,
+
+ ALLOCATION_KIND_LAST,
};
class IBufferAllocator;
virtual tcu::TestStatus createTestBuffer (VkDeviceSize size,
VkBufferUsageFlags usage,
Context& context,
- Move<VkBuffer>& testBuffer) const = 0;
+ Move<VkBuffer>& testBuffer,
+ Move<VkDeviceMemory>& memory) const = 0;
};
class BufferSuballocation : public IBufferAllocator
virtual tcu::TestStatus createTestBuffer (VkDeviceSize size,
VkBufferUsageFlags usage,
Context& context,
- Move<VkBuffer>& testBuffer) const;
+ Move<VkBuffer>& testBuffer,
+ Move<VkDeviceMemory>& memory) const;
};
class BufferDedicatedAllocation : public IBufferAllocator
virtual tcu::TestStatus createTestBuffer (VkDeviceSize size,
VkBufferUsageFlags usage,
Context& context,
- Move<VkBuffer>& testBuffer) const;
+ Move<VkBuffer>& testBuffer,
+ Move<VkDeviceMemory>& memory) const;
};
class BufferViewTestCase : public TestCase
tcu::TestStatus BufferSuballocation::createTestBuffer (VkDeviceSize size,
VkBufferUsageFlags usage,
Context& context,
- Move<VkBuffer>& testBuffer) const
+ Move<VkBuffer>& testBuffer,
+ Move<VkDeviceMemory>& memory) const
{
const VkDevice vkDevice = context.getDevice();
const DeviceInterface& vk = context.getDeviceInterface();
return tcu::TestStatus::fail(errorMsg.str());
}
- Move<VkDeviceMemory> memory;
const VkMemoryAllocateInfo memAlloc =
{
VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, // VkStructureType sType
tcu::TestStatus BufferDedicatedAllocation::createTestBuffer (VkDeviceSize size,
VkBufferUsageFlags usage,
Context& context,
- Move<VkBuffer>& testBuffer) const
+ Move<VkBuffer>& testBuffer,
+ Move<VkDeviceMemory>& memory) const
{
const std::vector<std::string>& extensions = context.getDeviceExtensions();
const deBool isSupported = std::find(extensions.begin(), extensions.end(), "VK_KHR_dedicated_allocation") != extensions.end();
//const VkMemoryType memoryType = memoryProperties.memoryTypes[heapTypeIndex];
//const VkMemoryHeap memoryHeap = memoryProperties.memoryHeaps[memoryType.heapIndex];
- Move<VkDeviceMemory> memory;
vk.getBufferMemoryRequirements2KHR(vkDevice, &info, &memReqs); // get the proper size requirement
if (size > memReqs.memoryRequirements.size)
const DeviceInterface& vk = m_context.getDeviceInterface();
const VkDeviceSize size = 3 * 5 * 7 * 64;
Move<VkBuffer> testBuffer;
+ Move<VkDeviceMemory> testBufferMemory;
VkFormatProperties properties;
m_context.getInstanceInterface().getPhysicalDeviceFormatProperties(m_context.getPhysicalDevice(), m_testCase.format, &properties);
// Create buffer
if (m_testCase.bufferAllocationKind == ALLOCATION_KIND_DEDICATED)
{
- BufferDedicatedAllocation().createTestBuffer(size, m_testCase.usage, m_context, testBuffer);
+ BufferDedicatedAllocation().createTestBuffer(size, m_testCase.usage, m_context, testBuffer, testBufferMemory);
}
else
{
- BufferSuballocation().createTestBuffer(size, m_testCase.usage, m_context, testBuffer);
+ BufferSuballocation().createTestBuffer(size, m_testCase.usage, m_context, testBuffer, testBufferMemory);
}
{
tcu::TestCaseGroup* createBufferViewCreateTests (tcu::TestContext& testCtx)
{
const VkDeviceSize range = VK_WHOLE_SIZE;
- const vk::VkBufferUsageFlagBits usage[] = { vk::VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, vk::VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT };
- const vk::VkFormatFeatureFlagBits feature[] = { vk::VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT, vk::VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT };
- const char* const usageName[] = { "_uniform", "_storage"};
+ const vk::VkBufferUsageFlags usage[] = { vk::VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, vk::VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT };
+ const vk::VkFormatFeatureFlags feature[] = { vk::VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT, vk::VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT };
+ const char* const usageName[] = { "uniform", "storage"};
de::MovePtr<tcu::TestCaseGroup> bufferViewTests (new tcu::TestCaseGroup(testCtx, "create", "BufferView Construction Tests"));
};
for (deUint32 allocationKind = 0; allocationKind < ALLOCATION_KIND_LAST; ++allocationKind)
- for (deUint32 format = vk::VK_FORMAT_UNDEFINED + 1; format < VK_CORE_FORMAT_LAST; format++)
for (deUint32 usageNdx = 0; usageNdx < DE_LENGTH_OF_ARRAY(usage); ++usageNdx)
{
- std::ostringstream testName;
- std::ostringstream testDescription;
- testName << "create_buffer_view_" << format << usageName[usageNdx];
- testDescription << "vkBufferView test " << testName.str();
+ de::MovePtr<tcu::TestCaseGroup> usageGroup (new tcu::TestCaseGroup(testCtx, usageName[usageNdx], ""));
+
+ for (deUint32 format = vk::VK_FORMAT_UNDEFINED + 1; format < VK_CORE_FORMAT_LAST; format++)
{
- BufferViewCaseParameters testParams =
+ const std::string formatName = de::toLower(getFormatName((VkFormat)format)).substr(10);
+ de::MovePtr<tcu::TestCaseGroup> formatGroup (new tcu::TestCaseGroup(testCtx, "suballocation", "BufferView Construction Tests for Suballocated Buffer"));
+
+ const std::string testName = de::toLower(getFormatName((VkFormat)format)).substr(10);
+ const std::string testDescription = "vkBufferView test " + testName;
+
{
- static_cast<vk::VkFormat>(format), // VkFormat format;
- 0, // VkDeviceSize offset;
- range, // VkDeviceSize range;
- usage[usageNdx], // VkBufferUsageFlags usage;
- feature[usageNdx], // VkFormatFeatureFlags flags;
- static_cast<AllocationKind>(allocationKind) // AllocationKind bufferAllocationKind;
- };
- bufferViewAllocationGroupTests[allocationKind]->addChild(new BufferViewTestCase(testCtx, testName.str(), testDescription.str(), testParams));
+ const BufferViewCaseParameters testParams =
+ {
+ static_cast<vk::VkFormat>(format), // VkFormat format;
+ 0, // VkDeviceSize offset;
+ range, // VkDeviceSize range;
+ usage[usageNdx], // VkBufferUsageFlags usage;
+ feature[usageNdx], // VkFormatFeatureFlags flags;
+ static_cast<AllocationKind>(allocationKind) // AllocationKind bufferAllocationKind;
+ };
+
+ usageGroup->addChild(new BufferViewTestCase(testCtx, testName.c_str(), testDescription.c_str(), testParams));
+ }
}
+ bufferViewAllocationGroupTests[allocationKind]->addChild(usageGroup.release());
}
for (deUint32 subgroupNdx = 0u; subgroupNdx < DE_LENGTH_OF_ARRAY(bufferViewAllocationGroupTests); ++subgroupNdx)