| 23 | class NegativeMemory : public VkLayerTest {}; |
| 24 | |
| 25 | TEST_F(NegativeMemory, MemoryDecompressionEnabled) { |
| 26 | TEST_DESCRIPTION("Validate memoryDecompression feature is enabled"); |
| 27 | AddRequiredExtensions(VK_EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME); |
| 28 | AddRequiredExtensions(VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME); |
| 29 | AddRequiredFeature(vkt::Feature::bufferDeviceAddress); |
| 30 | RETURN_IF_SKIP(Init()); |
| 31 | VkPhysicalDeviceMemoryDecompressionPropertiesEXT mem_decomp_props_sao = vku::InitStructHelper(); |
| 32 | GetPhysicalDeviceProperties2(mem_decomp_props_sao); |
| 33 | if ((mem_decomp_props_sao.decompressionMethods & VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_EXT) == 0) { |
| 34 | GTEST_SKIP() << "GDeflate decompression method not supported"; |
| 35 | } |
| 36 | |
| 37 | VkDeviceSize buffer_size = 1024; |
| 38 | VkDeviceSize decompressed_size = 2048; |
| 39 | |
| 40 | vkt::Buffer src_buffer(*m_device, buffer_size, 0, vkt::device_address); |
| 41 | vkt::Buffer dst_buffer(*m_device, decompressed_size, 0, vkt::device_address); |
| 42 | |
| 43 | VkDecompressMemoryRegionEXT decompress_region = {}; |
| 44 | decompress_region.srcAddress = src_buffer.Address(); |
| 45 | decompress_region.dstAddress = dst_buffer.Address(); |
| 46 | decompress_region.compressedSize = buffer_size; |
| 47 | decompress_region.decompressedSize = decompressed_size; |
| 48 | |
| 49 | VkDecompressMemoryInfoEXT decompress_info = vku::InitStructHelper(); |
| 50 | decompress_info.decompressionMethod = VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_EXT; |
| 51 | decompress_info.regionCount = 1; |
| 52 | decompress_info.pRegions = &decompress_region; |
| 53 | |
| 54 | m_command_buffer.Begin(); |
| 55 | m_errorMonitor->SetDesiredError("VUID-vkCmdDecompressMemoryEXT-memoryDecompression-11761"); |
| 56 | vk::CmdDecompressMemoryEXT(m_command_buffer, &decompress_info); |
| 57 | m_errorMonitor->VerifyFound(); |
| 58 | m_command_buffer.End(); |
| 59 | } |
| 60 | |
| 61 | TEST_F(NegativeMemory, MemoryDecompressionIndirectAddressUnaligned) { |
| 62 | AddRequiredExtensions(VK_EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME); |
nothing calls this directly
no test coverage detected