| 18 | class NegativeSparseBuffer : public VkLayerTest {}; |
| 19 | |
| 20 | TEST_F(NegativeSparseBuffer, QueueBindSparseMemoryBindSize) { |
| 21 | TEST_DESCRIPTION("Test QueueBindSparse with invalid sparse memory bind size"); |
| 22 | AddRequiredFeature(vkt::Feature::sparseBinding); |
| 23 | RETURN_IF_SKIP(Init()); |
| 24 | |
| 25 | if (m_device->QueuesWithSparseCapability().empty()) { |
| 26 | GTEST_SKIP() << "Required SPARSE_BINDING queue families not present"; |
| 27 | } |
| 28 | |
| 29 | VkBufferCreateInfo b_info = |
| 30 | vkt::Buffer::CreateInfo(0x10000, VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT); |
| 31 | b_info.flags = VK_BUFFER_CREATE_SPARSE_BINDING_BIT; |
| 32 | vkt::Buffer buffer_sparse(*m_device, b_info, vkt::no_mem); |
| 33 | |
| 34 | VkMemoryRequirements buffer_mem_reqs; |
| 35 | vk::GetBufferMemoryRequirements(device(), buffer_sparse, &buffer_mem_reqs); |
| 36 | const auto buffer_mem_alloc = |
| 37 | vkt::DeviceMemory::GetResourceAllocInfo(*m_device, buffer_mem_reqs, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT); |
| 38 | |
| 39 | vkt::DeviceMemory buffer_mem(*m_device, buffer_mem_alloc); |
| 40 | |
| 41 | VkSparseMemoryBind buffer_memory_bind = {}; |
| 42 | buffer_memory_bind.size = 0u; // This will trigger the VUID we are testing |
| 43 | buffer_memory_bind.memory = buffer_mem; |
| 44 | |
| 45 | VkSparseBufferMemoryBindInfo buffer_memory_bind_info{}; |
| 46 | buffer_memory_bind_info.buffer = buffer_sparse; |
| 47 | buffer_memory_bind_info.bindCount = 1; |
| 48 | buffer_memory_bind_info.pBinds = &buffer_memory_bind; |
| 49 | |
| 50 | VkBindSparseInfo bind_info = vku::InitStructHelper(); |
| 51 | bind_info.bufferBindCount = 1; |
| 52 | bind_info.pBufferBinds = &buffer_memory_bind_info; |
| 53 | |
| 54 | VkQueue sparse_queue = m_device->QueuesWithSparseCapability()[0]->handle(); |
| 55 | |
| 56 | m_errorMonitor->SetDesiredError("VUID-VkSparseMemoryBind-size-01098"); |
| 57 | vk::QueueBindSparse(sparse_queue, 1, &bind_info, VK_NULL_HANDLE); |
| 58 | m_errorMonitor->VerifyFound(); |
| 59 | } |
| 60 | |
| 61 | TEST_F(NegativeSparseBuffer, QueueBindSparseMemoryBindAlignments) { |
| 62 | TEST_DESCRIPTION("Test QueueBindSparse with invalid sparse memory bind size"); |
nothing calls this directly
no test coverage detected