Merge vulkancts/vulkan-cts-next-dev into vulkancts/vulkan-cts-1.0-dev
authorPyry Haulos <phaulos@google.com>
Tue, 24 Jan 2017 00:28:00 +0000 (16:28 -0800)
committerPyry Haulos <phaulos@google.com>
Tue, 24 Jan 2017 00:29:05 +0000 (16:29 -0800)
This merge introduces tests for 3 new extensions:

 * VK_KHR_get_physical_device_properties2
 * VK_KHR_shader_draw_parameters
 * VK_KHR_maintenance1

Change-Id: I2190b1ee4f3600708abde820e678a830488093ab

40 files changed:
Android.mk
android/cts/master/vk-master.txt
external/vulkancts/data/vulkan/draw/VertexFetchShaderDrawParameters.vert [new file with mode: 0644]
external/vulkancts/data/vulkan/draw/VertexFetchShaderDrawParametersDrawIndex.vert [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkBasicTypes.inl
external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl
external/vulkancts/framework/vulkan/vkConcreteInstanceInterface.inl
external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl
external/vulkancts/framework/vulkan/vkDeviceFunctionPointers.inl
external/vulkancts/framework/vulkan/vkFunctionPointerTypes.inl
external/vulkancts/framework/vulkan/vkInitDeviceFunctionPointers.inl
external/vulkancts/framework/vulkan/vkInitInstanceFunctionPointers.inl
external/vulkancts/framework/vulkan/vkInstanceDriverImpl.inl
external/vulkancts/framework/vulkan/vkInstanceFunctionPointers.inl
external/vulkancts/framework/vulkan/vkNullDriverImpl.inl
external/vulkancts/framework/vulkan/vkStrUtil.inl
external/vulkancts/framework/vulkan/vkStrUtilImpl.inl
external/vulkancts/framework/vulkan/vkStructTypes.inl
external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl
external/vulkancts/framework/vulkan/vkVirtualInstanceInterface.inl
external/vulkancts/modules/vulkan/api/vktApiCommandBuffersTests.cpp
external/vulkancts/modules/vulkan/api/vktApiCopiesAndBlittingTests.cpp
external/vulkancts/modules/vulkan/api/vktApiDescriptorPoolTests.cpp
external/vulkancts/modules/vulkan/api/vktApiDeviceInitializationTests.cpp
external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp
external/vulkancts/modules/vulkan/api/vktApiObjectManagementTests.cpp
external/vulkancts/modules/vulkan/draw/CMakeLists.txt
external/vulkancts/modules/vulkan/draw/vktDrawNegativeViewportHeightTests.cpp [new file with mode: 0644]
external/vulkancts/modules/vulkan/draw/vktDrawNegativeViewportHeightTests.hpp [new file with mode: 0644]
external/vulkancts/modules/vulkan/draw/vktDrawShaderDrawParametersTests.cpp [new file with mode: 0644]
external/vulkancts/modules/vulkan/draw/vktDrawShaderDrawParametersTests.hpp [new file with mode: 0644]
external/vulkancts/modules/vulkan/draw/vktDrawTests.cpp
external/vulkancts/modules/vulkan/geometry/vktGeometryLayeredRenderingTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineRenderToImageTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperation.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperationMultiQueueTests.cpp
external/vulkancts/modules/vulkan/vktTestCase.cpp
external/vulkancts/mustpass/1.0.2/vk-default.txt
external/vulkancts/scripts/gen_framework.py
external/vulkancts/scripts/src/vulkan.h.in

index 52c027d..cf95dd8 100644 (file)
@@ -750,6 +750,8 @@ LOCAL_SRC_FILES := \
        external/vulkancts/modules/vulkan/draw/vktDrawIndexedTest.cpp \
        external/vulkancts/modules/vulkan/draw/vktDrawIndirectTest.cpp \
        external/vulkancts/modules/vulkan/draw/vktDrawInstancedTests.cpp \
+       external/vulkancts/modules/vulkan/draw/vktDrawNegativeViewportHeightTests.cpp \
+       external/vulkancts/modules/vulkan/draw/vktDrawShaderDrawParametersTests.cpp \
        external/vulkancts/modules/vulkan/draw/vktDrawSimpleTest.cpp \
        external/vulkancts/modules/vulkan/draw/vktDrawTests.cpp \
        external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateBaseClass.cpp \
index bf97139..fce11ff 100644 (file)
@@ -1307,6 +1307,2219 @@ dEQP-VK.api.info.image_format_properties.3d.linear.astc_12x10_unorm_block
 dEQP-VK.api.info.image_format_properties.3d.linear.astc_12x10_srgb_block
 dEQP-VK.api.info.image_format_properties.3d.linear.astc_12x12_unorm_block
 dEQP-VK.api.info.image_format_properties.3d.linear.astc_12x12_srgb_block
+dEQP-VK.api.info.get_physical_device_properties2.features
+dEQP-VK.api.info.get_physical_device_properties2.properties
+dEQP-VK.api.info.get_physical_device_properties2.format_properties
+dEQP-VK.api.info.get_physical_device_properties2.queue_family_properties
+dEQP-VK.api.info.get_physical_device_properties2.memory_properties
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r4g4_unorm_pack8
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r5g6b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b5g6r5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8a8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8a8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8a8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8a8_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8a8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8a8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8a8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8a8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8a8_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8a8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16a16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16a16_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16a16_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16a16_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16a16_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16a16_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16a16_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32g32_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32g32_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32g32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32g32b32_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32g32b32_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32g32b32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32g32b32a32_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32g32b32a32_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32g32b32a32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64g64_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64g64_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64g64_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64g64b64_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64g64b64_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64g64b64_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64g64b64a64_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64g64b64a64_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64g64b64a64_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.d16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.x8_d24_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.d32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.s8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.d16_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.d24_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.d32_sfloat_s8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc1_rgb_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc1_rgb_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc1_rgba_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc1_rgba_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc2_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc2_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc3_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc3_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc4_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc4_snorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc5_snorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc6h_ufloat_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc6h_sfloat_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc7_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc7_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.eac_r11_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.eac_r11_snorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.eac_r11g11_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.eac_r11g11_snorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_4x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_4x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_5x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_5x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_5x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_5x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_6x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_6x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_6x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_6x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_8x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_8x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_8x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_8x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_8x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_8x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_10x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_10x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_10x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_10x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_10x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_10x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_10x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_10x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_12x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_12x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_12x12_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_12x12_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.r4g4_unorm_pack8
+dEQP-VK.api.info.image_format_properties2.1d.linear.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.linear.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.linear.r5g6b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.linear.b5g6r5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.linear.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.linear.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.linear.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8a8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8a8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8a8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8a8_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8a8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8a8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8a8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8a8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8a8_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8a8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.linear.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16a16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16a16_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16a16_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16a16_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16a16_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16a16_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16a16_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32g32_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32g32_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32g32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32g32b32_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32g32b32_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32g32b32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32g32b32a32_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32g32b32a32_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32g32b32a32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64g64_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64g64_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64g64_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64g64b64_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64g64b64_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64g64b64_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64g64b64a64_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64g64b64a64_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64g64b64a64_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.d16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.x8_d24_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.d32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.s8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.d16_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.d24_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.d32_sfloat_s8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc1_rgb_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc1_rgb_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc1_rgba_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc1_rgba_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc2_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc2_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc3_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc3_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc4_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc4_snorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc5_snorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc6h_ufloat_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc6h_sfloat_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc7_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc7_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.eac_r11_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.eac_r11_snorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.eac_r11g11_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.eac_r11g11_snorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_4x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_4x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_5x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_5x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_5x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_5x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_6x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_6x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_6x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_6x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_8x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_8x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_8x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_8x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_8x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_8x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_10x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_10x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_10x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_10x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_10x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_10x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_10x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_10x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_12x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_12x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_12x12_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_12x12_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r4g4_unorm_pack8
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r5g6b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b5g6r5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8a8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8a8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8a8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8a8_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8a8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8a8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8a8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8a8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8a8_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8a8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16a16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16a16_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16a16_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16a16_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16a16_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16a16_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16a16_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32g32_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32g32_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32g32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32g32b32_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32g32b32_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32g32b32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32g32b32a32_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32g32b32a32_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32g32b32a32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64g64_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64g64_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64g64_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64g64b64_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64g64b64_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64g64b64_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64g64b64a64_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64g64b64a64_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64g64b64a64_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.d16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.x8_d24_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.d32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.s8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.d16_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.d24_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.d32_sfloat_s8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc1_rgb_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc1_rgb_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc1_rgba_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc1_rgba_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc2_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc2_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc3_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc3_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc4_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc4_snorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc5_snorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc6h_ufloat_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc6h_sfloat_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc7_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc7_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.eac_r11_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.eac_r11_snorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.eac_r11g11_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.eac_r11g11_snorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_4x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_4x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_5x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_5x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_5x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_5x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_6x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_6x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_6x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_6x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_8x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_8x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_8x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_8x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_8x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_8x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_10x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_10x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_10x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_10x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_10x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_10x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_10x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_10x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_12x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_12x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_12x12_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_12x12_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.r4g4_unorm_pack8
+dEQP-VK.api.info.image_format_properties2.2d.linear.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.linear.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.linear.r5g6b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.linear.b5g6r5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.linear.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.linear.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.linear.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8a8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8a8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8a8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8a8_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8a8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8a8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8a8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8a8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8a8_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8a8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.linear.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16a16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16a16_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16a16_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16a16_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16a16_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16a16_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16a16_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32g32_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32g32_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32g32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32g32b32_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32g32b32_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32g32b32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32g32b32a32_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32g32b32a32_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32g32b32a32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64g64_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64g64_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64g64_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64g64b64_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64g64b64_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64g64b64_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64g64b64a64_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64g64b64a64_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64g64b64a64_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.d16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.x8_d24_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.d32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.s8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.d16_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.d24_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.d32_sfloat_s8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc1_rgb_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc1_rgb_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc1_rgba_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc1_rgba_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc2_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc2_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc3_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc3_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc4_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc4_snorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc5_snorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc6h_ufloat_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc6h_sfloat_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc7_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc7_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.eac_r11_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.eac_r11_snorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.eac_r11g11_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.eac_r11g11_snorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_4x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_4x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_5x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_5x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_5x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_5x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_6x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_6x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_6x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_6x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_8x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_8x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_8x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_8x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_8x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_8x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_10x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_10x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_10x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_10x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_10x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_10x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_10x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_10x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_12x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_12x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_12x12_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_12x12_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r4g4_unorm_pack8
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r5g6b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b5g6r5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8a8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8a8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8a8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8a8_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8a8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8a8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8a8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8a8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8a8_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8a8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16a16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16a16_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16a16_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16a16_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16a16_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16a16_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16a16_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32g32_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32g32_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32g32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32g32b32_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32g32b32_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32g32b32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32g32b32a32_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32g32b32a32_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32g32b32a32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64g64_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64g64_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64g64_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64g64b64_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64g64b64_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64g64b64_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64g64b64a64_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64g64b64a64_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64g64b64a64_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.d16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.x8_d24_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.d32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.s8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.d16_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.d24_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.d32_sfloat_s8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc1_rgb_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc1_rgb_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc1_rgba_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc1_rgba_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc2_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc2_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc3_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc3_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc4_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc4_snorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc5_snorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc6h_ufloat_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc6h_sfloat_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc7_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc7_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.eac_r11_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.eac_r11_snorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.eac_r11g11_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.eac_r11g11_snorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_4x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_4x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_5x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_5x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_5x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_5x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_6x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_6x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_6x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_6x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_8x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_8x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_8x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_8x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_8x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_8x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_10x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_10x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_10x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_10x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_10x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_10x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_10x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_10x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_12x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_12x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_12x12_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_12x12_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.r4g4_unorm_pack8
+dEQP-VK.api.info.image_format_properties2.3d.linear.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.linear.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.linear.r5g6b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.linear.b5g6r5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.linear.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.linear.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.linear.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8a8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8a8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8a8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8a8_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8a8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8a8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8a8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8a8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8a8_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8a8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.linear.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16a16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16a16_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16a16_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16a16_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16a16_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16a16_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16a16_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32g32_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32g32_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32g32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32g32b32_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32g32b32_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32g32b32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32g32b32a32_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32g32b32a32_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32g32b32a32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64g64_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64g64_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64g64_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64g64b64_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64g64b64_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64g64b64_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64g64b64a64_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64g64b64a64_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64g64b64a64_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.d16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.x8_d24_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.d32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.s8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.d16_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.d24_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.d32_sfloat_s8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc1_rgb_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc1_rgb_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc1_rgba_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc1_rgba_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc2_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc2_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc3_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc3_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc4_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc4_snorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc5_snorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc6h_ufloat_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc6h_sfloat_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc7_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc7_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.eac_r11_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.eac_r11_snorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.eac_r11g11_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.eac_r11g11_snorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_4x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_4x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_5x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_5x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_5x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_5x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_6x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_6x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_6x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_6x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_8x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_8x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_8x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_8x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_8x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_8x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_10x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_10x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_10x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_10x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_10x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_10x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_10x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_10x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_12x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_12x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_12x12_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_12x12_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r4g4_unorm_pack8
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r5g6b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b5g6r5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16a16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16a16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16a16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16a16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16a16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16a16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16a16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32g32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32g32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32g32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32g32b32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32g32b32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32g32b32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32g32b32a32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32g32b32a32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32g32b32a32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64g64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64g64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64g64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64g64b64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64g64b64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64g64b64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64g64b64a64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64g64b64a64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64g64b64a64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.d16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.x8_d24_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.d32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.d16_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.d24_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.d32_sfloat_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc1_rgb_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc1_rgb_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc1_rgba_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc1_rgba_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc2_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc2_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc3_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc3_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc4_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc5_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc6h_ufloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc6h_sfloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc7_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc7_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.eac_r11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.eac_r11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.eac_r11g11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.eac_r11g11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_4x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_4x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_5x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_5x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_5x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_5x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_6x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_6x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_6x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_6x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_8x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_8x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_8x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_8x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_8x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_8x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_10x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_10x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_10x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_10x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_10x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_10x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_10x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_10x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_12x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_12x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_12x12_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_12x12_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r4g4_unorm_pack8
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r5g6b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b5g6r5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16a16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16a16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16a16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16a16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16a16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16a16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16a16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32g32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32g32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32g32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32g32b32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32g32b32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32g32b32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32g32b32a32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32g32b32a32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32g32b32a32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64g64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64g64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64g64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64g64b64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64g64b64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64g64b64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64g64b64a64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64g64b64a64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64g64b64a64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.d16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.x8_d24_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.d32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.d16_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.d24_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.d32_sfloat_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc1_rgb_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc1_rgb_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc1_rgba_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc1_rgba_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc2_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc2_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc3_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc3_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc4_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc5_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc6h_ufloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc6h_sfloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc7_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc7_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.eac_r11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.eac_r11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.eac_r11g11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.eac_r11g11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_4x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_4x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_5x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_5x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_5x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_5x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_6x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_6x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_6x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_6x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_8x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_8x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_8x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_8x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_8x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_8x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_10x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_10x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_10x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_10x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_10x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_10x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_10x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_10x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_12x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_12x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_12x12_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_12x12_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r4g4_unorm_pack8
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r5g6b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b5g6r5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16a16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16a16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16a16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16a16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16a16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16a16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16a16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32g32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32g32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32g32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32g32b32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32g32b32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32g32b32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32g32b32a32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32g32b32a32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32g32b32a32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64g64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64g64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64g64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64g64b64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64g64b64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64g64b64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64g64b64a64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64g64b64a64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64g64b64a64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.d16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.x8_d24_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.d32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.d16_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.d24_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.d32_sfloat_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc1_rgb_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc1_rgb_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc1_rgba_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc1_rgba_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc2_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc2_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc3_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc3_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc4_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc5_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc6h_ufloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc6h_sfloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc7_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc7_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.eac_r11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.eac_r11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.eac_r11g11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.eac_r11g11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_4x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_4x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_5x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_5x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_5x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_5x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_6x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_6x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_6x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_6x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_8x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_8x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_8x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_8x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_8x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_8x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_10x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_10x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_10x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_10x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_10x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_10x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_10x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_10x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_12x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_12x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_12x12_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_12x12_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r4g4_unorm_pack8
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r5g6b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b5g6r5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16a16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16a16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16a16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16a16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16a16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16a16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16a16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32g32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32g32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32g32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32g32b32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32g32b32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32g32b32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32g32b32a32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32g32b32a32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32g32b32a32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64g64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64g64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64g64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64g64b64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64g64b64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64g64b64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64g64b64a64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64g64b64a64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64g64b64a64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.d16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.x8_d24_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.d32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.d16_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.d24_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.d32_sfloat_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc1_rgb_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc1_rgb_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc1_rgba_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc1_rgba_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc2_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc2_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc3_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc3_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc4_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc5_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc6h_ufloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc6h_sfloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc7_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc7_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.eac_r11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.eac_r11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.eac_r11g11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.eac_r11g11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_4x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_4x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_5x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_5x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_5x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_5x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_6x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_6x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_6x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_6x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_8x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_8x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_8x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_8x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_8x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_8x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_10x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_10x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_10x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_10x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_10x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_10x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_10x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_10x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_12x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_12x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_12x12_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_12x12_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r4g4_unorm_pack8
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r5g6b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b5g6r5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16a16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16a16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16a16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16a16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16a16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16a16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16a16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32g32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32g32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32g32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32g32b32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32g32b32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32g32b32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32g32b32a32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32g32b32a32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32g32b32a32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64g64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64g64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64g64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64g64b64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64g64b64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64g64b64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64g64b64a64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64g64b64a64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64g64b64a64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.d16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.x8_d24_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.d32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.d16_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.d24_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.d32_sfloat_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc1_rgb_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc1_rgb_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc1_rgba_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc1_rgba_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc2_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc2_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc3_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc3_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc4_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc5_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc6h_ufloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc6h_sfloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc7_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc7_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.eac_r11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.eac_r11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.eac_r11g11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.eac_r11g11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_4x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_4x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_5x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_5x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_5x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_5x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_6x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_6x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_6x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_6x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_8x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_8x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_8x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_8x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_8x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_8x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_10x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_10x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_10x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_10x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_10x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_10x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_10x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_10x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_12x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_12x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_12x12_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_12x12_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r4g4_unorm_pack8
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r5g6b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b5g6r5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16a16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16a16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16a16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16a16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16a16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16a16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16a16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32g32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32g32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32g32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32g32b32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32g32b32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32g32b32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32g32b32a32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32g32b32a32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32g32b32a32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64g64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64g64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64g64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64g64b64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64g64b64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64g64b64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64g64b64a64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64g64b64a64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64g64b64a64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.d16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.x8_d24_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.d32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.d16_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.d24_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.d32_sfloat_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc1_rgb_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc1_rgb_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc1_rgba_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc1_rgba_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc2_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc2_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc3_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc3_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc4_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc5_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc6h_ufloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc6h_sfloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc7_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc7_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.eac_r11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.eac_r11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.eac_r11g11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.eac_r11g11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_4x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_4x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_5x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_5x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_5x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_5x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_6x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_6x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_6x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_6x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_8x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_8x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_8x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_8x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_8x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_8x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_10x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_10x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_10x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_10x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_10x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_10x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_10x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_10x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_12x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_12x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_12x12_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_12x12_srgb_block
 dEQP-VK.api.device_init.create_instance_name_version
 dEQP-VK.api.device_init.create_instance_invalid_api_version
 dEQP-VK.api.device_init.create_instance_null_appinfo
@@ -1315,6 +3528,7 @@ dEQP-VK.api.device_init.create_device
 dEQP-VK.api.device_init.create_multiple_devices
 dEQP-VK.api.device_init.create_device_unsupported_extensions
 dEQP-VK.api.device_init.create_device_various_queue_counts
+dEQP-VK.api.device_init.create_device_features2
 dEQP-VK.api.object_management.single.instance
 dEQP-VK.api.object_management.single.device
 dEQP-VK.api.object_management.single.device_memory_small
@@ -3348,6 +5562,8 @@ dEQP-VK.api.command_buffers.allocate_many_secondary
 dEQP-VK.api.command_buffers.execute_small_primary
 dEQP-VK.api.command_buffers.execute_large_primary
 dEQP-VK.api.command_buffers.reset_implicit
+dEQP-VK.api.command_buffers.trim_command_pool
+dEQP-VK.api.command_buffers.trim_command_pool_secondary
 dEQP-VK.api.command_buffers.record_single_primary
 dEQP-VK.api.command_buffers.record_many_primary
 dEQP-VK.api.command_buffers.record_single_secondary
@@ -6101,6 +8317,12 @@ dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_s8_uint_s8_ui
 dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_d16_unorm_s8_uint_d16_unorm_s8_uint
 dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_d24_unorm_s8_uint_d24_unorm_s8_uint
 dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_d32_sfloat_s8_uint_d32_sfloat_s8_uint
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.3d_to_2d_by_slices
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.2d_to_3d_by_layers
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.3d_to_2d_whole
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.2d_to_3d_whole
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.3d_to_2d_regions
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.2d_to_3d_regions
 dEQP-VK.api.copy_and_blit.image_to_buffer.whole
 dEQP-VK.api.copy_and_blit.image_to_buffer.buffer_offset
 dEQP-VK.api.copy_and_blit.image_to_buffer.regions
@@ -16747,6 +18969,7 @@ dEQP-VK.api.fill_and_update_buffer.fill_buffer_second_part
 dEQP-VK.api.fill_and_update_buffer.update_buffer_second_part
 dEQP-VK.api.descriptor_pool.repeated_reset_short
 dEQP-VK.api.descriptor_pool.repeated_reset_long
+dEQP-VK.api.descriptor_pool.out_of_pool_memory
 dEQP-VK.api.null_handle.destroy_buffer
 dEQP-VK.api.null_handle.destroy_buffer_view
 dEQP-VK.api.null_handle.destroy_command_pool
@@ -88932,6 +91155,10 @@ dEQP-VK.pipeline.render_to_image.2d_array.22x64_4.r8g8b8a8_unorm
 dEQP-VK.pipeline.render_to_image.2d_array.22x64_4.r32_uint
 dEQP-VK.pipeline.render_to_image.2d_array.22x64_4.r16g16_sint
 dEQP-VK.pipeline.render_to_image.2d_array.22x64_4.r32g32b32a32_sfloat
+dEQP-VK.pipeline.render_to_image.3d.22x64x7.r8g8b8a8_unorm
+dEQP-VK.pipeline.render_to_image.3d.22x64x7.r32_uint
+dEQP-VK.pipeline.render_to_image.3d.22x64x7.r16g16_sint
+dEQP-VK.pipeline.render_to_image.3d.22x64x7.r32g32b32a32_sfloat
 dEQP-VK.pipeline.render_to_image.cube.35x35_6.r8g8b8a8_unorm
 dEQP-VK.pipeline.render_to_image.cube.35x35_6.r32_uint
 dEQP-VK.pipeline.render_to_image.cube.35x35_6.r16g16_sint
@@ -120081,6 +122308,28 @@ dEQP-VK.draw.instanced.draw_vk_primitive_topology_triangle_fan
 dEQP-VK.draw.instanced.draw_indexed_vk_primitive_topology_triangle_fan
 dEQP-VK.draw.instanced.draw_indirect_vk_primitive_topology_triangle_fan
 dEQP-VK.draw.instanced.draw_indexed_indirect_vk_primitive_topology_triangle_fan
+dEQP-VK.draw.shader_draw_parameters.base_vertex.draw
+dEQP-VK.draw.shader_draw_parameters.base_vertex.draw_indexed
+dEQP-VK.draw.shader_draw_parameters.base_vertex.draw_indirect
+dEQP-VK.draw.shader_draw_parameters.base_vertex.draw_indexed_indirect
+dEQP-VK.draw.shader_draw_parameters.base_instance.draw
+dEQP-VK.draw.shader_draw_parameters.base_instance.draw_indexed
+dEQP-VK.draw.shader_draw_parameters.base_instance.draw_indirect
+dEQP-VK.draw.shader_draw_parameters.base_instance.draw_indirect_first_instance
+dEQP-VK.draw.shader_draw_parameters.base_instance.draw_indexed_indirect
+dEQP-VK.draw.shader_draw_parameters.base_instance.draw_indexed_indirect_first_instance
+dEQP-VK.draw.shader_draw_parameters.draw_index.draw
+dEQP-VK.draw.shader_draw_parameters.draw_index.draw_instanced
+dEQP-VK.draw.shader_draw_parameters.draw_index.draw_indexed
+dEQP-VK.draw.shader_draw_parameters.draw_index.draw_indexed_instanced
+dEQP-VK.draw.negative_viewport_height.front_ccw_cull_none
+dEQP-VK.draw.negative_viewport_height.front_ccw_cull_front
+dEQP-VK.draw.negative_viewport_height.front_ccw_cull_back
+dEQP-VK.draw.negative_viewport_height.front_ccw_cull_both
+dEQP-VK.draw.negative_viewport_height.front_cw_cull_none
+dEQP-VK.draw.negative_viewport_height.front_cw_cull_front
+dEQP-VK.draw.negative_viewport_height.front_cw_cull_back
+dEQP-VK.draw.negative_viewport_height.front_cw_cull_both
 dEQP-VK.compute.basic.empty_shader
 dEQP-VK.compute.basic.ubo_to_ssbo_single_invocation
 dEQP-VK.compute.basic.ubo_to_ssbo_single_group
@@ -138005,6 +140254,13 @@ dEQP-VK.geometry.layered.cube_array.render_different_content
 dEQP-VK.geometry.layered.cube_array.fragment_layer
 dEQP-VK.geometry.layered.cube_array.invocation_per_layer
 dEQP-VK.geometry.layered.cube_array.multiple_layers_per_invocation
+dEQP-VK.geometry.layered.3d.render_to_default_layer
+dEQP-VK.geometry.layered.3d.render_to_one
+dEQP-VK.geometry.layered.3d.render_to_all
+dEQP-VK.geometry.layered.3d.render_different_content
+dEQP-VK.geometry.layered.3d.fragment_layer
+dEQP-VK.geometry.layered.3d.invocation_per_layer
+dEQP-VK.geometry.layered.3d.multiple_layers_per_invocation
 dEQP-VK.geometry.instanced.draw_1_instances_1_geometry_invocations
 dEQP-VK.geometry.instanced.draw_1_instances_2_geometry_invocations
 dEQP-VK.geometry.instanced.draw_1_instances_8_geometry_invocations
diff --git a/external/vulkancts/data/vulkan/draw/VertexFetchShaderDrawParameters.vert b/external/vulkancts/data/vulkan/draw/VertexFetchShaderDrawParameters.vert
new file mode 100644 (file)
index 0000000..0be6bda
--- /dev/null
@@ -0,0 +1,26 @@
+#version 450 core
+#extension GL_ARB_shader_draw_parameters : require
+
+layout(location = 0) in vec4 in_position;
+layout(location = 1) in vec4 in_color;
+layout(location = 2) in int  in_refVertexIndex;
+
+layout(location = 0) out vec4 out_color;
+
+out gl_PerVertex {
+    vec4 gl_Position;
+};
+
+void main() {
+    vec2 perVertex         = vec2(in_position.x, in_position.y);
+    vec2 perInstance[5]    = vec2[5](vec2(0.0, 0.0), vec2(-0.3, 0.0), vec2(0.0, 0.3), vec2(0.5, 0.5), vec2(0.75, -0.8));
+    vec4 colors[4]         = vec4[4](vec4(1.0), vec4(0.0, 0.0, 1.0, 1.0), vec4(0.0, 1.0, 0.0, 1.0), vec4(0.0, 1.0, 1.0, 1.0));
+    int  baseInstanceIndex = gl_InstanceIndex - gl_BaseInstanceARB;
+
+    gl_Position = vec4(perVertex + perInstance[baseInstanceIndex], 0.0, 1.0);
+
+    if ((gl_VertexIndex - gl_BaseVertexARB) == in_refVertexIndex && gl_DrawIDARB == 0)
+        out_color = in_color * colors[baseInstanceIndex];
+    else
+        out_color = vec4(1.0, 0.0, 0.0, 1.0);
+}
diff --git a/external/vulkancts/data/vulkan/draw/VertexFetchShaderDrawParametersDrawIndex.vert b/external/vulkancts/data/vulkan/draw/VertexFetchShaderDrawParametersDrawIndex.vert
new file mode 100644 (file)
index 0000000..596287c
--- /dev/null
@@ -0,0 +1,26 @@
+#version 450 core
+#extension GL_ARB_shader_draw_parameters : require
+
+layout(location = 0) in vec4 in_position;
+layout(location = 1) in vec4 in_color;
+layout(location = 2) in int  in_refVertexIndex;
+
+layout(location = 0) out vec4 out_color;
+
+out gl_PerVertex {
+    vec4 gl_Position;
+};
+
+void main() {
+    vec2 perVertex      = vec2(in_position.x, in_position.y);
+    vec2 perInstance[5] = vec2[5](vec2(0.0, 0.0), vec2(-0.3, 0.0), vec2(0.0, 0.3), vec2(0.5, 0.5), vec2(0.75, -0.8));
+    vec2 perDraw[4]     = vec2[4](vec2(0.0, 0.0), vec2(-0.3, -0.3), vec2(0.3, 0.3), vec2(1.0, 0.5));
+    vec4 colors[4]      = vec4[4](vec4(1.0), vec4(0.0, 0.0, 1.0, 1.0), vec4(0.0, 1.0, 0.0, 1.0), vec4(0.0, 1.0, 1.0, 1.0));
+
+    gl_Position = vec4(perVertex + perInstance[gl_InstanceIndex - gl_BaseInstanceARB] + perDraw[gl_DrawIDARB], 0.0, 1.0);
+
+    if ((gl_VertexIndex - gl_BaseVertexARB) == in_refVertexIndex)
+        out_color = in_color * colors[gl_DrawIDARB];
+    else
+        out_color = vec4(1.0, 0.0, 0.0, 1.0);
+}
index 2a67b62..a1e8b44 100644 (file)
@@ -82,6 +82,7 @@ enum VkResult
        VK_ERROR_INCOMPATIBLE_DISPLAY_KHR       = -1000003001,
        VK_ERROR_VALIDATION_FAILED_EXT          = -1000011001,
        VK_ERROR_INVALID_SHADER_NV                      = -1000012000,
+       VK_ERROR_OUT_OF_POOL_MEMORY_KHR         = -1000069000,
 };
 
 enum VkStructureType
@@ -159,6 +160,15 @@ enum VkStructureType
        VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV                                    = 1000057000,
        VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV                                    = 1000057001,
        VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV                             = 1000058000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR                                                = 1000059000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR                                              = 1000059001,
+       VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR                                                               = 1000059002,
+       VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR                                                 = 1000059003,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR                               = 1000059004,
+       VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR                                                 = 1000059005,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR                               = 1000059006,
+       VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR                                  = 1000059007,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR                = 1000059008,
        VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT                                                                  = 1000061000,
        VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX                                                  = 1000086000,
        VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX                              = 1000086001,
@@ -831,6 +841,8 @@ enum VkFormatFeatureFlagBits
        VK_FORMAT_FEATURE_BLIT_DST_BIT                                                  = 0x00000800,
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT               = 0x00001000,
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG    = 0x00002000,
+       VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR                                  = 0x00004000,
+       VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR                                  = 0x00008000,
 };
 typedef deUint32 VkFormatFeatureFlags;
 
@@ -849,11 +861,12 @@ typedef deUint32 VkImageUsageFlags;
 
 enum VkImageCreateFlagBits
 {
-       VK_IMAGE_CREATE_SPARSE_BINDING_BIT              = 0x00000001,
-       VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT    = 0x00000002,
-       VK_IMAGE_CREATE_SPARSE_ALIASED_BIT              = 0x00000004,
-       VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT              = 0x00000008,
-       VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT             = 0x00000010,
+       VK_IMAGE_CREATE_SPARSE_BINDING_BIT                      = 0x00000001,
+       VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT            = 0x00000002,
+       VK_IMAGE_CREATE_SPARSE_ALIASED_BIT                      = 0x00000004,
+       VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT                      = 0x00000008,
+       VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT                     = 0x00000010,
+       VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR     = 0x00000020,
 };
 typedef deUint32 VkImageCreateFlags;
 
@@ -1262,6 +1275,8 @@ typedef deUint32 VkAndroidSurfaceCreateFlagsKHR;
 
 typedef deUint32 VkWin32SurfaceCreateFlagsKHR;
 
+typedef deUint32 VkCommandPoolTrimFlagsKHR;
+
 VK_DEFINE_PLATFORM_TYPE(XlibDisplayPtr,                                void*);
 VK_DEFINE_PLATFORM_TYPE(XlibWindow,                                    deUintptr);
 VK_DEFINE_PLATFORM_TYPE(XlibVisualID,                          deUint32);
index f3e31c1..e5c77d6 100644 (file)
@@ -127,6 +127,7 @@ virtual VkResult    getSwapchainImagesKHR                           (VkDevice device, VkSwapchainKHR swapc
 virtual VkResult       acquireNextImageKHR                                     (VkDevice device, VkSwapchainKHR swapchain, deUint64 timeout, VkSemaphore semaphore, VkFence fence, deUint32* pImageIndex) const;
 virtual VkResult       queuePresentKHR                                         (VkQueue queue, const VkPresentInfoKHR* pPresentInfo) const;
 virtual VkResult       createSharedSwapchainsKHR                       (VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains) const;
+virtual void           trimCommandPoolKHR                                      (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlagsKHR flags) const;
 virtual VkResult       debugMarkerSetObjectTagEXT                      (VkDevice device, VkDebugMarkerObjectTagInfoEXT* pTagInfo) const;
 virtual VkResult       debugMarkerSetObjectNameEXT                     (VkDevice device, VkDebugMarkerObjectNameInfoEXT* pNameInfo) const;
 virtual void           cmdDebugMarkerBeginEXT                          (VkCommandBuffer commandBuffer, VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const;
index 16baeca..cb7229f 100644 (file)
@@ -37,6 +37,13 @@ virtual VkBool32                     getPhysicalDeviceMirPresentationSupportKHR                      (VkPhysicalDevic
 virtual VkResult                       createAndroidSurfaceKHR                                                         (VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
 virtual VkResult                       createWin32SurfaceKHR                                                           (VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
 virtual VkBool32                       getPhysicalDeviceWin32PresentationSupportKHR            (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex) const;
+virtual void                           getPhysicalDeviceFeatures2KHR                                           (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2KHR* pFeatures) const;
+virtual void                           getPhysicalDeviceProperties2KHR                                         (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2KHR* pProperties) const;
+virtual void                           getPhysicalDeviceFormatProperties2KHR                           (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2KHR* pFormatProperties) const;
+virtual VkResult                       getPhysicalDeviceImageFormatProperties2KHR                      (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, VkImageFormatProperties2KHR* pImageFormatProperties) const;
+virtual void                           getPhysicalDeviceQueueFamilyProperties2KHR                      (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2KHR* pQueueFamilyProperties) const;
+virtual void                           getPhysicalDeviceMemoryProperties2KHR                           (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties) const;
+virtual void                           getPhysicalDeviceSparseImageFormatProperties2KHR        (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2KHR* pProperties) const;
 virtual VkResult                       createDebugReportCallbackEXT                                            (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback) const;
 virtual void                           destroyDebugReportCallbackEXT                                           (VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator) const;
 virtual void                           debugReportMessageEXT                                                           (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage) const;
index a02cb44..990ce9b 100644 (file)
@@ -632,6 +632,11 @@ VkResult DeviceDriver::createSharedSwapchainsKHR (VkDevice device, deUint32 swap
        return m_vk.createSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
 }
 
+void DeviceDriver::trimCommandPoolKHR (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlagsKHR flags) const
+{
+       m_vk.trimCommandPoolKHR(device, commandPool, flags);
+}
+
 VkResult DeviceDriver::debugMarkerSetObjectTagEXT (VkDevice device, VkDebugMarkerObjectTagInfoEXT* pTagInfo) const
 {
        return m_vk.debugMarkerSetObjectTagEXT(device, pTagInfo);
index 3ee5e0c..42c20a9 100644 (file)
@@ -127,6 +127,7 @@ GetSwapchainImagesKHRFunc                           getSwapchainImagesKHR;
 AcquireNextImageKHRFunc                                        acquireNextImageKHR;
 QueuePresentKHRFunc                                            queuePresentKHR;
 CreateSharedSwapchainsKHRFunc                  createSharedSwapchainsKHR;
+TrimCommandPoolKHRFunc                                 trimCommandPoolKHR;
 DebugMarkerSetObjectTagEXTFunc                 debugMarkerSetObjectTagEXT;
 DebugMarkerSetObjectNameEXTFunc                        debugMarkerSetObjectNameEXT;
 CmdDebugMarkerBeginEXTFunc                             cmdDebugMarkerBeginEXT;
index d3909d1..7ec64ff 100644 (file)
@@ -167,6 +167,14 @@ typedef VKAPI_ATTR VkBool32                                (VKAPI_CALL* GetPhysicalDeviceMirPresentationSupp
 typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateAndroidSurfaceKHRFunc)                                                       (VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
 typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateWin32SurfaceKHRFunc)                                                         (VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
 typedef VKAPI_ATTR VkBool32                            (VKAPI_CALL* GetPhysicalDeviceWin32PresentationSupportKHRFunc)          (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceFeatures2KHRFunc)                                         (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2KHR* pFeatures);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceProperties2KHRFunc)                                       (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2KHR* pProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceFormatProperties2KHRFunc)                         (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2KHR* pFormatProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceImageFormatProperties2KHRFunc)            (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, VkImageFormatProperties2KHR* pImageFormatProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceQueueFamilyProperties2KHRFunc)            (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2KHR* pQueueFamilyProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceMemoryProperties2KHRFunc)                         (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceSparseImageFormatProperties2KHRFunc)      (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2KHR* pProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* TrimCommandPoolKHRFunc)                                                            (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlagsKHR flags);
 typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDebugReportCallbackEXTFunc)                                          (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback);
 typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyDebugReportCallbackEXTFunc)                                         (VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator);
 typedef VKAPI_ATTR void                                        (VKAPI_CALL* DebugReportMessageEXTFunc)                                                         (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage);
index 5c02221..1c3b362 100644 (file)
@@ -127,6 +127,7 @@ m_vk.getSwapchainImagesKHR                          = (GetSwapchainImagesKHRFunc)                           GET_PROC_ADDR("vk
 m_vk.acquireNextImageKHR                               = (AcquireNextImageKHRFunc)                                     GET_PROC_ADDR("vkAcquireNextImageKHR");
 m_vk.queuePresentKHR                                   = (QueuePresentKHRFunc)                                         GET_PROC_ADDR("vkQueuePresentKHR");
 m_vk.createSharedSwapchainsKHR                 = (CreateSharedSwapchainsKHRFunc)                       GET_PROC_ADDR("vkCreateSharedSwapchainsKHR");
+m_vk.trimCommandPoolKHR                                        = (TrimCommandPoolKHRFunc)                                      GET_PROC_ADDR("vkTrimCommandPoolKHR");
 m_vk.debugMarkerSetObjectTagEXT                        = (DebugMarkerSetObjectTagEXTFunc)                      GET_PROC_ADDR("vkDebugMarkerSetObjectTagEXT");
 m_vk.debugMarkerSetObjectNameEXT               = (DebugMarkerSetObjectNameEXTFunc)                     GET_PROC_ADDR("vkDebugMarkerSetObjectNameEXT");
 m_vk.cmdDebugMarkerBeginEXT                            = (CmdDebugMarkerBeginEXTFunc)                          GET_PROC_ADDR("vkCmdDebugMarkerBeginEXT");
index 2bdabc5..fd29cb0 100644 (file)
@@ -37,6 +37,13 @@ m_vk.getPhysicalDeviceMirPresentationSupportKHR                      = (GetPhysicalDeviceMirPresent
 m_vk.createAndroidSurfaceKHR                                                   = (CreateAndroidSurfaceKHRFunc)                                                         GET_PROC_ADDR("vkCreateAndroidSurfaceKHR");
 m_vk.createWin32SurfaceKHR                                                             = (CreateWin32SurfaceKHRFunc)                                                           GET_PROC_ADDR("vkCreateWin32SurfaceKHR");
 m_vk.getPhysicalDeviceWin32PresentationSupportKHR              = (GetPhysicalDeviceWin32PresentationSupportKHRFunc)            GET_PROC_ADDR("vkGetPhysicalDeviceWin32PresentationSupportKHR");
+m_vk.getPhysicalDeviceFeatures2KHR                                             = (GetPhysicalDeviceFeatures2KHRFunc)                                           GET_PROC_ADDR("vkGetPhysicalDeviceFeatures2KHR");
+m_vk.getPhysicalDeviceProperties2KHR                                   = (GetPhysicalDeviceProperties2KHRFunc)                                         GET_PROC_ADDR("vkGetPhysicalDeviceProperties2KHR");
+m_vk.getPhysicalDeviceFormatProperties2KHR                             = (GetPhysicalDeviceFormatProperties2KHRFunc)                           GET_PROC_ADDR("vkGetPhysicalDeviceFormatProperties2KHR");
+m_vk.getPhysicalDeviceImageFormatProperties2KHR                        = (GetPhysicalDeviceImageFormatProperties2KHRFunc)                      GET_PROC_ADDR("vkGetPhysicalDeviceImageFormatProperties2KHR");
+m_vk.getPhysicalDeviceQueueFamilyProperties2KHR                        = (GetPhysicalDeviceQueueFamilyProperties2KHRFunc)                      GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
+m_vk.getPhysicalDeviceMemoryProperties2KHR                             = (GetPhysicalDeviceMemoryProperties2KHRFunc)                           GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties2KHR");
+m_vk.getPhysicalDeviceSparseImageFormatProperties2KHR  = (GetPhysicalDeviceSparseImageFormatProperties2KHRFunc)        GET_PROC_ADDR("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
 m_vk.createDebugReportCallbackEXT                                              = (CreateDebugReportCallbackEXTFunc)                                            GET_PROC_ADDR("vkCreateDebugReportCallbackEXT");
 m_vk.destroyDebugReportCallbackEXT                                             = (DestroyDebugReportCallbackEXTFunc)                                           GET_PROC_ADDR("vkDestroyDebugReportCallbackEXT");
 m_vk.debugReportMessageEXT                                                             = (DebugReportMessageEXTFunc)                                                           GET_PROC_ADDR("vkDebugReportMessageEXT");
index fd6653f..9a03fd4 100644 (file)
@@ -182,6 +182,41 @@ VkBool32 InstanceDriver::getPhysicalDeviceWin32PresentationSupportKHR (VkPhysica
        return m_vk.getPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex);
 }
 
+void InstanceDriver::getPhysicalDeviceFeatures2KHR (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2KHR* pFeatures) const
+{
+       m_vk.getPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures);
+}
+
+void InstanceDriver::getPhysicalDeviceProperties2KHR (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2KHR* pProperties) const
+{
+       m_vk.getPhysicalDeviceProperties2KHR(physicalDevice, pProperties);
+}
+
+void InstanceDriver::getPhysicalDeviceFormatProperties2KHR (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2KHR* pFormatProperties) const
+{
+       m_vk.getPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties);
+}
+
+VkResult InstanceDriver::getPhysicalDeviceImageFormatProperties2KHR (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, VkImageFormatProperties2KHR* pImageFormatProperties) const
+{
+       return m_vk.getPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties);
+}
+
+void InstanceDriver::getPhysicalDeviceQueueFamilyProperties2KHR (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2KHR* pQueueFamilyProperties) const
+{
+       m_vk.getPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
+}
+
+void InstanceDriver::getPhysicalDeviceMemoryProperties2KHR (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties) const
+{
+       m_vk.getPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties);
+}
+
+void InstanceDriver::getPhysicalDeviceSparseImageFormatProperties2KHR (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2KHR* pProperties) const
+{
+       m_vk.getPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties);
+}
+
 VkResult InstanceDriver::createDebugReportCallbackEXT (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback) const
 {
        return m_vk.createDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback);
index b8f2ca4..7062fb9 100644 (file)
@@ -37,6 +37,13 @@ GetPhysicalDeviceMirPresentationSupportKHRFunc                       getPhysicalDeviceMirPresentatio
 CreateAndroidSurfaceKHRFunc                                                            createAndroidSurfaceKHR;
 CreateWin32SurfaceKHRFunc                                                              createWin32SurfaceKHR;
 GetPhysicalDeviceWin32PresentationSupportKHRFunc               getPhysicalDeviceWin32PresentationSupportKHR;
+GetPhysicalDeviceFeatures2KHRFunc                                              getPhysicalDeviceFeatures2KHR;
+GetPhysicalDeviceProperties2KHRFunc                                            getPhysicalDeviceProperties2KHR;
+GetPhysicalDeviceFormatProperties2KHRFunc                              getPhysicalDeviceFormatProperties2KHR;
+GetPhysicalDeviceImageFormatProperties2KHRFunc                 getPhysicalDeviceImageFormatProperties2KHR;
+GetPhysicalDeviceQueueFamilyProperties2KHRFunc                 getPhysicalDeviceQueueFamilyProperties2KHR;
+GetPhysicalDeviceMemoryProperties2KHRFunc                              getPhysicalDeviceMemoryProperties2KHR;
+GetPhysicalDeviceSparseImageFormatProperties2KHRFunc   getPhysicalDeviceSparseImageFormatProperties2KHR;
 CreateDebugReportCallbackEXTFunc                                               createDebugReportCallbackEXT;
 DestroyDebugReportCallbackEXTFunc                                              destroyDebugReportCallbackEXT;
 DebugReportMessageEXTFunc                                                              debugReportMessageEXT;
index 3f3b7c3..e2c70ce 100644 (file)
@@ -1128,6 +1128,61 @@ VKAPI_ATTR VkBool32 VKAPI_CALL getPhysicalDeviceWin32PresentationSupportKHR (VkP
        return VK_SUCCESS;
 }
 
+VKAPI_ATTR void VKAPI_CALL getPhysicalDeviceFeatures2KHR (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2KHR* pFeatures)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(pFeatures);
+}
+
+VKAPI_ATTR void VKAPI_CALL getPhysicalDeviceProperties2KHR (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2KHR* pProperties)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(pProperties);
+}
+
+VKAPI_ATTR void VKAPI_CALL getPhysicalDeviceFormatProperties2KHR (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2KHR* pFormatProperties)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(format);
+       DE_UNREF(pFormatProperties);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceImageFormatProperties2KHR (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, VkImageFormatProperties2KHR* pImageFormatProperties)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(pImageFormatInfo);
+       DE_UNREF(pImageFormatProperties);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR void VKAPI_CALL getPhysicalDeviceQueueFamilyProperties2KHR (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2KHR* pQueueFamilyProperties)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(pQueueFamilyPropertyCount);
+       DE_UNREF(pQueueFamilyProperties);
+}
+
+VKAPI_ATTR void VKAPI_CALL getPhysicalDeviceMemoryProperties2KHR (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(pMemoryProperties);
+}
+
+VKAPI_ATTR void VKAPI_CALL getPhysicalDeviceSparseImageFormatProperties2KHR (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2KHR* pProperties)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(pFormatInfo);
+       DE_UNREF(pPropertyCount);
+       DE_UNREF(pProperties);
+}
+
+VKAPI_ATTR void VKAPI_CALL trimCommandPoolKHR (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlagsKHR flags)
+{
+       DE_UNREF(device);
+       DE_UNREF(commandPool);
+       DE_UNREF(flags);
+}
+
 VKAPI_ATTR void VKAPI_CALL debugReportMessageEXT (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage)
 {
        DE_UNREF(instance);
@@ -1300,6 +1355,13 @@ static const tcu::StaticFunctionLibrary::Entry s_instanceFunctions[] =
        VK_NULL_FUNC_ENTRY(vkCreateAndroidSurfaceKHR,                                                   createAndroidSurfaceKHR),
        VK_NULL_FUNC_ENTRY(vkCreateWin32SurfaceKHR,                                                             createWin32SurfaceKHR),
        VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceWin32PresentationSupportKHR,              getPhysicalDeviceWin32PresentationSupportKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFeatures2KHR,                                             getPhysicalDeviceFeatures2KHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceProperties2KHR,                                   getPhysicalDeviceProperties2KHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFormatProperties2KHR,                             getPhysicalDeviceFormatProperties2KHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceImageFormatProperties2KHR,                getPhysicalDeviceImageFormatProperties2KHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties2KHR,                getPhysicalDeviceQueueFamilyProperties2KHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceMemoryProperties2KHR,                             getPhysicalDeviceMemoryProperties2KHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSparseImageFormatProperties2KHR,  getPhysicalDeviceSparseImageFormatProperties2KHR),
        VK_NULL_FUNC_ENTRY(vkCreateDebugReportCallbackEXT,                                              createDebugReportCallbackEXT),
        VK_NULL_FUNC_ENTRY(vkDestroyDebugReportCallbackEXT,                                             destroyDebugReportCallbackEXT),
        VK_NULL_FUNC_ENTRY(vkDebugReportMessageEXT,                                                             debugReportMessageEXT),
@@ -1435,6 +1497,7 @@ static const tcu::StaticFunctionLibrary::Entry s_deviceFunctions[] =
        VK_NULL_FUNC_ENTRY(vkAcquireNextImageKHR,                               acquireNextImageKHR),
        VK_NULL_FUNC_ENTRY(vkQueuePresentKHR,                                   queuePresentKHR),
        VK_NULL_FUNC_ENTRY(vkCreateSharedSwapchainsKHR,                 createSharedSwapchainsKHR),
+       VK_NULL_FUNC_ENTRY(vkTrimCommandPoolKHR,                                trimCommandPoolKHR),
        VK_NULL_FUNC_ENTRY(vkDebugMarkerSetObjectTagEXT,                debugMarkerSetObjectTagEXT),
        VK_NULL_FUNC_ENTRY(vkDebugMarkerSetObjectNameEXT,               debugMarkerSetObjectNameEXT),
        VK_NULL_FUNC_ENTRY(vkCmdDebugMarkerBeginEXT,                    cmdDebugMarkerBeginEXT),
index c721ade..4c69aca 100644 (file)
@@ -208,6 +208,7 @@ tcu::Format::Bitfield<32>   getWaylandSurfaceCreateFlagsKHRStr                      (VkWaylandSurface
 tcu::Format::Bitfield<32>      getMirSurfaceCreateFlagsKHRStr                          (VkMirSurfaceCreateFlagsKHR value);
 tcu::Format::Bitfield<32>      getAndroidSurfaceCreateFlagsKHRStr                      (VkAndroidSurfaceCreateFlagsKHR value);
 tcu::Format::Bitfield<32>      getWin32SurfaceCreateFlagsKHRStr                        (VkWin32SurfaceCreateFlagsKHR value);
+tcu::Format::Bitfield<32>      getCommandPoolTrimFlagsKHRStr                           (VkCommandPoolTrimFlagsKHR value);
 
 std::ostream&  operator<<      (std::ostream& s, const VkApplicationInfo& value);
 std::ostream&  operator<<      (std::ostream& s, const VkInstanceCreateInfo& value);
@@ -334,6 +335,15 @@ std::ostream&      operator<<      (std::ostream& s, const VkWaylandSurfaceCreateInfoKHR&
 std::ostream&  operator<<      (std::ostream& s, const VkMirSurfaceCreateInfoKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkAndroidSurfaceCreateInfoKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkWin32SurfaceCreateInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceFeatures2KHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceProperties2KHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkFormatProperties2KHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImageFormatProperties2KHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceImageFormatInfo2KHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkQueueFamilyProperties2KHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceMemoryProperties2KHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSparseImageFormatProperties2KHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceSparseImageFormatInfo2KHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkDebugReportCallbackCreateInfoEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPipelineRasterizationStateRasterizationOrderAMD& value);
 std::ostream&  operator<<      (std::ostream& s, const VkDebugMarkerObjectNameInfoEXT& value);
index 216c708..13a2c43 100644 (file)
@@ -91,6 +91,7 @@ const char* getResultName (VkResult value)
                case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR: return "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR";
                case VK_ERROR_VALIDATION_FAILED_EXT:    return "VK_ERROR_VALIDATION_FAILED_EXT";
                case VK_ERROR_INVALID_SHADER_NV:                return "VK_ERROR_INVALID_SHADER_NV";
+               case VK_ERROR_OUT_OF_POOL_MEMORY_KHR:   return "VK_ERROR_OUT_OF_POOL_MEMORY_KHR";
                default:                                                                return DE_NULL;
        }
 }
@@ -172,6 +173,15 @@ const char* getStructureTypeName (VkStructureType value)
                case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV:                                              return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV";
                case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV:                                              return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV";
                case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV:                               return "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR:                                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR:                                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR";
+               case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR:                                                                 return "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR";
+               case VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR:                                                   return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR";
+               case VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR:                                                   return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR";
+               case VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR:                                    return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR:                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR";
                case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT:                                                                    return "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT";
                case VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX:                                                    return "VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX";
                case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX:                                return "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX";
@@ -934,6 +944,8 @@ tcu::Format::Bitfield<32> getFormatFeatureFlagsStr (VkFormatFeatureFlags value)
                tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_DST_BIT,                                            "VK_FORMAT_FEATURE_BLIT_DST_BIT"),
                tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,         "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"),
                tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,      "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,                            "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR,                            "VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
@@ -958,11 +970,12 @@ tcu::Format::Bitfield<32> getImageCreateFlagsStr (VkImageCreateFlags value)
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
-               tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_BINDING_BIT,        "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"),
-               tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,      "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"),
-               tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,        "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"),
-               tcu::Format::BitDesc(VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,        "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"),
-               tcu::Format::BitDesc(VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,       "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_BINDING_BIT,                        "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,                      "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,                        "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,                        "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,                       "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR,       "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
@@ -1588,6 +1601,11 @@ tcu::Format::Bitfield<32> getWin32SurfaceCreateFlagsKHRStr (VkWin32SurfaceCreate
        return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 }
 
+tcu::Format::Bitfield<32> getCommandPoolTrimFlagsKHRStr (VkCommandPoolTrimFlagsKHR value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
 std::ostream& operator<< (std::ostream& s, const VkApplicationInfo& value)
 {
        s << "VkApplicationInfo = {\n";
@@ -3325,6 +3343,104 @@ std::ostream& operator<< (std::ostream& s, const VkWin32SurfaceCreateInfoKHR& va
        return s;
 }
 
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures2KHR& value)
+{
+       s << "VkPhysicalDeviceFeatures2KHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tfeatures = " << value.features << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties2KHR& value)
+{
+       s << "VkPhysicalDeviceProperties2KHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tproperties = " << value.properties << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkFormatProperties2KHR& value)
+{
+       s << "VkFormatProperties2KHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tformatProperties = " << value.formatProperties << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties2KHR& value)
+{
+       s << "VkImageFormatProperties2KHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\timageFormatProperties = " << value.imageFormatProperties << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageFormatInfo2KHR& value)
+{
+       s << "VkPhysicalDeviceImageFormatInfo2KHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tformat = " << value.format << '\n';
+       s << "\ttype = " << value.type << '\n';
+       s << "\ttiling = " << value.tiling << '\n';
+       s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
+       s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties2KHR& value)
+{
+       s << "VkQueueFamilyProperties2KHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tqueueFamilyProperties = " << value.queueFamilyProperties << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties2KHR& value)
+{
+       s << "VkPhysicalDeviceMemoryProperties2KHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmemoryProperties = " << value.memoryProperties << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties2KHR& value)
+{
+       s << "VkSparseImageFormatProperties2KHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tproperties = " << value.properties << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseImageFormatInfo2KHR& value)
+{
+       s << "VkPhysicalDeviceSparseImageFormatInfo2KHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tformat = " << value.format << '\n';
+       s << "\ttype = " << value.type << '\n';
+       s << "\tsamples = " << value.samples << '\n';
+       s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
+       s << "\ttiling = " << value.tiling << '\n';
+       s << '}';
+       return s;
+}
+
 std::ostream& operator<< (std::ostream& s, const VkDebugReportCallbackCreateInfoEXT& value)
 {
        s << "VkDebugReportCallbackCreateInfoEXT = {\n";
index 006ee99..d5c0e23 100644 (file)
@@ -1363,6 +1363,77 @@ struct VkWin32SurfaceCreateInfoKHR
        pt::Win32WindowHandle                   hwnd;
 };
 
+struct VkPhysicalDeviceFeatures2KHR
+{
+       VkStructureType                         sType;
+       void*                                           pNext;
+       VkPhysicalDeviceFeatures        features;
+};
+
+struct VkPhysicalDeviceProperties2KHR
+{
+       VkStructureType                         sType;
+       void*                                           pNext;
+       VkPhysicalDeviceProperties      properties;
+};
+
+struct VkFormatProperties2KHR
+{
+       VkStructureType         sType;
+       void*                           pNext;
+       VkFormatProperties      formatProperties;
+};
+
+struct VkImageFormatProperties2KHR
+{
+       VkStructureType                 sType;
+       void*                                   pNext;
+       VkImageFormatProperties imageFormatProperties;
+};
+
+struct VkPhysicalDeviceImageFormatInfo2KHR
+{
+       VkStructureType         sType;
+       const void*                     pNext;
+       VkFormat                        format;
+       VkImageType                     type;
+       VkImageTiling           tiling;
+       VkImageUsageFlags       usage;
+       VkImageCreateFlags      flags;
+};
+
+struct VkQueueFamilyProperties2KHR
+{
+       VkStructureType                 sType;
+       void*                                   pNext;
+       VkQueueFamilyProperties queueFamilyProperties;
+};
+
+struct VkPhysicalDeviceMemoryProperties2KHR
+{
+       VkStructureType                                         sType;
+       void*                                                           pNext;
+       VkPhysicalDeviceMemoryProperties        memoryProperties;
+};
+
+struct VkSparseImageFormatProperties2KHR
+{
+       VkStructureType                                 sType;
+       void*                                                   pNext;
+       VkSparseImageFormatProperties   properties;
+};
+
+struct VkPhysicalDeviceSparseImageFormatInfo2KHR
+{
+       VkStructureType                 sType;
+       const void*                             pNext;
+       VkFormat                                format;
+       VkImageType                             type;
+       VkSampleCountFlagBits   samples;
+       VkImageUsageFlags               usage;
+       VkImageTiling                   tiling;
+};
+
 struct VkDebugReportCallbackCreateInfoEXT
 {
        VkStructureType                                 sType;
index c2ec477..c808a73 100644 (file)
@@ -127,6 +127,7 @@ virtual VkResult    getSwapchainImagesKHR                           (VkDevice device, VkSwapchainKHR swapc
 virtual VkResult       acquireNextImageKHR                                     (VkDevice device, VkSwapchainKHR swapchain, deUint64 timeout, VkSemaphore semaphore, VkFence fence, deUint32* pImageIndex) const = 0;
 virtual VkResult       queuePresentKHR                                         (VkQueue queue, const VkPresentInfoKHR* pPresentInfo) const = 0;
 virtual VkResult       createSharedSwapchainsKHR                       (VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains) const = 0;
+virtual void           trimCommandPoolKHR                                      (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlagsKHR flags) const = 0;
 virtual VkResult       debugMarkerSetObjectTagEXT                      (VkDevice device, VkDebugMarkerObjectTagInfoEXT* pTagInfo) const = 0;
 virtual VkResult       debugMarkerSetObjectNameEXT                     (VkDevice device, VkDebugMarkerObjectNameInfoEXT* pNameInfo) const = 0;
 virtual void           cmdDebugMarkerBeginEXT                          (VkCommandBuffer commandBuffer, VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const = 0;
index e929eaa..0809ccf 100644 (file)
@@ -37,6 +37,13 @@ virtual VkBool32                     getPhysicalDeviceMirPresentationSupportKHR                      (VkPhysicalDevic
 virtual VkResult                       createAndroidSurfaceKHR                                                         (VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
 virtual VkResult                       createWin32SurfaceKHR                                                           (VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
 virtual VkBool32                       getPhysicalDeviceWin32PresentationSupportKHR            (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex) const = 0;
+virtual void                           getPhysicalDeviceFeatures2KHR                                           (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2KHR* pFeatures) const = 0;
+virtual void                           getPhysicalDeviceProperties2KHR                                         (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2KHR* pProperties) const = 0;
+virtual void                           getPhysicalDeviceFormatProperties2KHR                           (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2KHR* pFormatProperties) const = 0;
+virtual VkResult                       getPhysicalDeviceImageFormatProperties2KHR                      (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, VkImageFormatProperties2KHR* pImageFormatProperties) const = 0;
+virtual void                           getPhysicalDeviceQueueFamilyProperties2KHR                      (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2KHR* pQueueFamilyProperties) const = 0;
+virtual void                           getPhysicalDeviceMemoryProperties2KHR                           (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties) const = 0;
+virtual void                           getPhysicalDeviceSparseImageFormatProperties2KHR        (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2KHR* pProperties) const = 0;
 virtual VkResult                       createDebugReportCallbackEXT                                            (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback) const = 0;
 virtual void                           destroyDebugReportCallbackEXT                                           (VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator) const = 0;
 virtual void                           debugReportMessageEXT                                                           (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage) const = 0;
index 09f0983..8440c90 100644 (file)
@@ -1186,6 +1186,220 @@ tcu::TestStatus resetBufferImplicitlyTest(Context& context)
                return tcu::TestStatus::fail("Buffer was not reset correctly.");
 }
 
+using  de::SharedPtr;
+typedef SharedPtr<Unique<VkEvent> >                    VkEventShared;
+
+template<typename T>
+inline SharedPtr<Unique<T> > makeSharedPtr (Move<T> move)
+{
+       return SharedPtr<Unique<T> >(new Unique<T>(move));
+}
+
+bool submitAndCheck (Context& context, std::vector<VkCommandBuffer>& cmdBuffers, std::vector <VkEventShared>& events)
+{
+       const VkDevice                                                  vkDevice        = context.getDevice();
+       const DeviceInterface&                                  vk                      = context.getDeviceInterface();
+       const VkQueue                                                   queue           = context.getUniversalQueue();
+
+       const VkFenceCreateInfo                         fenceCreateInfo =
+       {
+               VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,            // sType;
+               DE_NULL,                                                                        // pNext;
+               0u,                                                                                     // flags
+       };
+       const Unique<VkFence>                           fence                   (createFence(vk, vkDevice, &fenceCreateInfo));
+
+       const VkSubmitInfo                                      submitInfo              =
+       {
+               VK_STRUCTURE_TYPE_SUBMIT_INFO,                          // sType
+               DE_NULL,                                                                        // pNext
+               0u,                                                                                     // waitSemaphoreCount
+               DE_NULL,                                                                        // pWaitSemaphores
+               (const VkPipelineStageFlags*)DE_NULL,           // pWaitDstStageMask
+               static_cast<deUint32>(cmdBuffers.size()),       // commandBufferCount
+               &cmdBuffers[0],                                                         // pCommandBuffers
+               0u,                                                                                     // signalSemaphoreCount
+               DE_NULL,                                                                        // pSignalSemaphores
+       };
+
+       VK_CHECK(vk.queueSubmit(queue, 1u, &submitInfo, fence.get()));
+       VK_CHECK(vk.waitForFences(vkDevice, 1u, &fence.get(), 0u, INFINITE_TIMEOUT));
+
+       for(int eventNdx = 0; eventNdx < static_cast<int>(events.size()); ++eventNdx)
+       {
+               if (vk.getEventStatus(vkDevice, **events[eventNdx]) != VK_EVENT_SET)
+                       return false;
+               vk.resetEvent(vkDevice, **events[eventNdx]);
+       }
+
+       return true;
+}
+
+void createCommadBuffers (const DeviceInterface&               vk,
+                                                 const VkDevice                                vkDevice,
+                                                 deUint32                                              bufferCount,
+                                                 VkCommandPool                                 pool,
+                                                 const VkCommandBufferLevel    cmdBufferLevel,
+                                                 VkCommandBuffer*                              pCommandBuffers)
+{
+       const VkCommandBufferAllocateInfo               cmdBufParams    =
+       {
+               VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, //      VkStructureType                         sType;
+               DE_NULL,                                                                                //      const void*                                     pNext;
+               pool,                                                                                   //      VkCommandPool                           pool;
+               cmdBufferLevel,                                                                 //      VkCommandBufferLevel            level;
+               bufferCount,                                                                    //      uint32_t                                        bufferCount;
+       };
+       VK_CHECK(vk.allocateCommandBuffers(vkDevice, &cmdBufParams, pCommandBuffers));
+}
+
+void addCommandsToBuffer (const DeviceInterface& vk, std::vector<VkCommandBuffer>& cmdBuffers, std::vector <VkEventShared>& events)
+{
+       const VkCommandBufferInheritanceInfo    secCmdBufInheritInfo    =
+       {
+               VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
+               DE_NULL,
+               (VkRenderPass)0u,                                                               // renderPass
+               0u,                                                                                             // subpass
+               (VkFramebuffer)0u,                                                              // framebuffer
+               VK_FALSE,                                                                               // occlusionQueryEnable
+               (VkQueryControlFlags)0u,                                                // queryFlags
+               (VkQueryPipelineStatisticFlags)0u,                              // pipelineStatistics
+       };
+
+       const VkCommandBufferBeginInfo          cmdBufBeginInfo =
+       {
+               VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,    // sType
+               DE_NULL,                                                                                // pNext
+               0u,                                                                                             // flags
+               &secCmdBufInheritInfo,                                                  // pInheritanceInfo;
+       };
+
+       for(int bufferNdx = 0; bufferNdx < static_cast<int>(cmdBuffers.size()); ++bufferNdx)
+       {
+               VK_CHECK(vk.beginCommandBuffer(cmdBuffers[bufferNdx], &cmdBufBeginInfo));
+               vk.cmdSetEvent(cmdBuffers[bufferNdx], **events[bufferNdx % events.size()], VK_PIPELINE_STAGE_ALL_COMMANDS_BIT);
+               VK_CHECK(vk.endCommandBuffer(cmdBuffers[bufferNdx]));
+       }
+}
+
+bool executeSecondaryCmdBuffer (Context&                                               context,
+                                                               VkCommandPool                                   pool,
+                                                               std::vector<VkCommandBuffer>&   cmdBuffersSecondary,
+                                                               std::vector <VkEventShared>&    events)
+{
+       const VkDevice                                  vkDevice                = context.getDevice();
+       const DeviceInterface&                  vk                              = context.getDeviceInterface();
+       std::vector<VkCommandBuffer>    cmdBuffer               (1);
+       const VkCommandBufferBeginInfo  cmdBufBeginInfo =
+       {
+               VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,    // sType
+               DE_NULL,                                                                                // pNext
+               0u,                                                                                             // flags
+               (const VkCommandBufferInheritanceInfo*)DE_NULL, // pInheritanceInfo;
+       };
+
+       createCommadBuffers(vk, vkDevice, 1u, pool, VK_COMMAND_BUFFER_LEVEL_PRIMARY, &cmdBuffer[0]);
+       VK_CHECK(vk.beginCommandBuffer(cmdBuffer[0], &cmdBufBeginInfo));
+       vk.cmdExecuteCommands(cmdBuffer[0], static_cast<deUint32>(cmdBuffersSecondary.size()), &cmdBuffersSecondary[0]);
+       VK_CHECK(vk.endCommandBuffer(cmdBuffer[0]));
+
+       bool returnValue = submitAndCheck(context, cmdBuffer, events);
+       vk.freeCommandBuffers(vkDevice, pool, 1u, &cmdBuffer[0]);
+       return returnValue;
+}
+
+tcu::TestStatus trimCommandPoolTest (Context& context, const VkCommandBufferLevel cmdBufferLevel)
+{
+       if (!de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), "VK_KHR_maintenance1"))
+               TCU_THROW(NotSupportedError, "Extension VK_KHR_maintenance1 not supported");
+
+       const VkDevice                                                  vkDevice                                = context.getDevice();
+       const DeviceInterface&                                  vk                                              = context.getDeviceInterface();
+       const deUint32                                                  queueFamilyIndex                = context.getUniversalQueueFamilyIndex();
+
+       //test parameters
+       const deUint32                                                  cmdBufferIterationCount = 300u;
+       const deUint32                                                  cmdBufferCount                  = 10u;
+
+       const VkCommandPoolCreateInfo                   cmdPoolParams                   =
+       {
+               VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,                                     // sType;
+               DE_NULL,                                                                                                        // pNext;
+               VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,                        // flags;
+               queueFamilyIndex,                                                                                       // queueFamilyIndex;
+       };
+       const Unique<VkCommandPool>                             cmdPool                                 (createCommandPool(vk, vkDevice, &cmdPoolParams));
+
+       const VkEventCreateInfo                                 eventCreateInfo                 =
+       {
+               VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,                                            // sType;
+               DE_NULL,                                                                                                        // pNext;
+               0u,                                                                                                                     // flags;
+       };
+
+       std::vector <VkEventShared>                             events;
+       for (deUint32 ndx = 0u; ndx < cmdBufferCount; ++ndx)
+               events.push_back(makeSharedPtr(createEvent(vk, vkDevice, &eventCreateInfo)));
+
+       {
+               std::vector<VkCommandBuffer> cmdBuffers(cmdBufferCount);
+               createCommadBuffers(vk, vkDevice, cmdBufferCount, *cmdPool, cmdBufferLevel, &cmdBuffers[0]);
+
+               for (deUint32 cmdBufferIterationrNdx = 0; cmdBufferIterationrNdx < cmdBufferIterationCount; ++cmdBufferIterationrNdx)
+               {
+                       addCommandsToBuffer(vk, cmdBuffers, events);
+
+                       //Peak, situation when we use a lot more command buffers
+                       if (cmdBufferIterationrNdx % 10u == 0)
+                       {
+                               std::vector<VkCommandBuffer> cmdBuffersPeak(cmdBufferCount * 10u);
+                               createCommadBuffers(vk, vkDevice, static_cast<deUint32>(cmdBuffersPeak.size()), *cmdPool, cmdBufferLevel, &cmdBuffersPeak[0]);
+                               addCommandsToBuffer(vk, cmdBuffersPeak, events);
+
+                               switch(cmdBufferLevel)
+                               {
+                                       case VK_COMMAND_BUFFER_LEVEL_PRIMARY:
+                                               if (!submitAndCheck(context, cmdBuffersPeak, events))
+                                                       return tcu::TestStatus::fail("Fail");
+                                               break;
+                                       case VK_COMMAND_BUFFER_LEVEL_SECONDARY:
+                                               if (!executeSecondaryCmdBuffer(context, *cmdPool, cmdBuffersPeak, events))
+                                                       return tcu::TestStatus::fail("Fail");
+                                               break;
+                                       default:
+                                               DE_ASSERT(0);
+                               }
+                               vk.freeCommandBuffers(vkDevice, *cmdPool, static_cast<deUint32>(cmdBuffersPeak.size()), &cmdBuffersPeak[0]);
+                       }
+
+                       vk.trimCommandPoolKHR(vkDevice, *cmdPool, (VkCommandPoolTrimFlagsKHR)0);
+
+                       switch(cmdBufferLevel)
+                       {
+                               case VK_COMMAND_BUFFER_LEVEL_PRIMARY:
+                                       if (!submitAndCheck(context, cmdBuffers, events))
+                                               return tcu::TestStatus::fail("Fail");
+                                       break;
+                               case VK_COMMAND_BUFFER_LEVEL_SECONDARY:
+                                       if (!executeSecondaryCmdBuffer(context, *cmdPool, cmdBuffers, events))
+                                               return tcu::TestStatus::fail("Fail");
+                                       break;
+                               default:
+                                       DE_ASSERT(0);
+                       }
+
+                       for (deUint32 bufferNdx = cmdBufferIterationrNdx % 3u; bufferNdx < cmdBufferCount; bufferNdx+=2u)
+                       {
+                               vk.freeCommandBuffers(vkDevice, *cmdPool, 1u, &cmdBuffers[bufferNdx]);
+                               createCommadBuffers(vk, vkDevice, 1u, *cmdPool, cmdBufferLevel, &cmdBuffers[bufferNdx]);
+                       }
+               }
+       }
+
+       return tcu::TestStatus::pass("Pass");
+}
+
 /******** 19.3. Command Buffer Recording (5.3 in VK 1.0 Spec) *****************/
 tcu::TestStatus recordSinglePrimaryBufferTest(Context& context)
 {
@@ -4431,6 +4645,8 @@ tcu::TestCaseGroup* createCommandBuffersTests (tcu::TestContext& testCtx)
        addFunctionCase                         (commandBuffersTests.get(), "execute_small_primary",                    "",     executePrimaryBufferTest);
        addFunctionCase                         (commandBuffersTests.get(), "execute_large_primary",                    "",     executeLargePrimaryBufferTest);
        addFunctionCase                         (commandBuffersTests.get(), "reset_implicit",                                   "", resetBufferImplicitlyTest);
+       addFunctionCase                         (commandBuffersTests.get(), "trim_command_pool",                                "", trimCommandPoolTest, VK_COMMAND_BUFFER_LEVEL_PRIMARY);
+       addFunctionCase                         (commandBuffersTests.get(), "trim_command_pool_secondary",              "", trimCommandPoolTest, VK_COMMAND_BUFFER_LEVEL_SECONDARY);
        /* 19.3. Command Buffer Recording (5.3 in VK 1.0 Spec) */
        addFunctionCase                         (commandBuffersTests.get(), "record_single_primary",                    "",     recordSinglePrimaryBufferTest);
        addFunctionCase                         (commandBuffersTests.get(), "record_many_primary",                              "", recordLargePrimaryBufferTest);
index 9840b50..a2a46da 100644 (file)
@@ -26,7 +26,6 @@
 
 #include "deStringUtil.hpp"
 #include "deUniquePtr.hpp"
-#include "deMath.h"
 
 #include "tcuImageCompare.hpp"
 #include "tcuTexture.hpp"
@@ -109,9 +108,9 @@ struct ImageParms
 
 struct TestParams
 {
-       union
+       union Data
        {
-               struct
+               struct Buffer
                {
                        VkDeviceSize    size;
                } buffer;
@@ -368,7 +367,6 @@ void CopiesAndBlittingTestInstance::uploadImageAspect (const tcu::ConstPixelBuff
        const VkQueue                           queue                           = m_context.getUniversalQueue();
        const deUint32                          queueFamilyIndex        = m_context.getUniversalQueueFamilyIndex();
        Allocator&                                      memAlloc                        = m_context.getDefaultAllocator();
-
        Move<VkBuffer>                          buffer;
        const deUint32                          bufferSize                      = calculateSize(imageAccess);
        de::MovePtr<Allocation>         bufferAlloc;
@@ -762,17 +760,24 @@ CopyImageToImage::CopyImageToImage (Context& context, TestParams params)
        const deUint32                          queueFamilyIndex        = context.getUniversalQueueFamilyIndex();
        Allocator&                                      memAlloc                        = context.getDefaultAllocator();
 
+       if ((m_params.dst.image.imageType == VK_IMAGE_TYPE_3D && m_params.src.image.imageType == VK_IMAGE_TYPE_2D) ||
+               (m_params.dst.image.imageType == VK_IMAGE_TYPE_2D && m_params.src.image.imageType == VK_IMAGE_TYPE_3D))
+       {
+               if (std::find(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), "VK_KHR_maintenance1") == context.getDeviceExtensions().end())
+                       TCU_THROW(NotSupportedError, "Extension VK_KHR_maintenance1 not supported");
+       }
+
        VkImageFormatProperties properties;
        if ((context.getInstanceInterface().getPhysicalDeviceImageFormatProperties (context.getPhysicalDevice(),
                                                                                                                                                                m_params.src.image.format,
-                                                                                                                                                               VK_IMAGE_TYPE_2D,
+                                                                                                                                                               m_params.src.image.imageType,
                                                                                                                                                                VK_IMAGE_TILING_OPTIMAL,
                                                                                                                                                                VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
                                                                                                                                                                0,
                                                                                                                                                                &properties) == VK_ERROR_FORMAT_NOT_SUPPORTED) ||
                (context.getInstanceInterface().getPhysicalDeviceImageFormatProperties (context.getPhysicalDevice(),
                                                                                                                                                                m_params.dst.image.format,
-                                                                                                                                                               VK_IMAGE_TYPE_2D,
+                                                                                                                                                               m_params.dst.image.imageType,
                                                                                                                                                                VK_IMAGE_TILING_OPTIMAL,
                                                                                                                                                                VK_IMAGE_USAGE_TRANSFER_DST_BIT,
                                                                                                                                                                0,
@@ -788,11 +793,11 @@ CopyImageToImage::CopyImageToImage (Context& context, TestParams params)
                        VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,    // VkStructureType              sType;
                        DE_NULL,                                                                // const void*                  pNext;
                        0u,                                                                             // VkImageCreateFlags   flags;
-                       VK_IMAGE_TYPE_2D,                                               // VkImageType                  imageType;
+                       m_params.src.image.imageType,                   // VkImageType                  imageType;
                        m_params.src.image.format,                              // VkFormat                             format;
-                       m_params.src.image.extent,                              // VkExtent3D                   extent;
+                       getExtent3D(m_params.src.image),                // VkExtent3D                   extent;
                        1u,                                                                             // deUint32                             mipLevels;
-                       1u,                                                                             // deUint32                             arraySize;
+                       getArraySize(m_params.src.image),               // deUint32                             arraySize;
                        VK_SAMPLE_COUNT_1_BIT,                                  // deUint32                             samples;
                        VK_IMAGE_TILING_OPTIMAL,                                // VkImageTiling                tiling;
                        VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
@@ -815,11 +820,11 @@ CopyImageToImage::CopyImageToImage (Context& context, TestParams params)
                        VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,    // VkStructureType              sType;
                        DE_NULL,                                                                // const void*                  pNext;
                        0u,                                                                             // VkImageCreateFlags   flags;
-                       VK_IMAGE_TYPE_2D,                                               // VkImageType                  imageType;
+                       m_params.dst.image.imageType,                   // VkImageType                  imageType;
                        m_params.dst.image.format,                              // VkFormat                             format;
-                       m_params.dst.image.extent,                              // VkExtent3D                   extent;
+                       getExtent3D(m_params.dst.image),                // VkExtent3D                   extent;
                        1u,                                                                             // deUint32                             mipLevels;
-                       1u,                                                                             // deUint32                             arraySize;
+                       getArraySize(m_params.dst.image),               // deUint32                             arraySize;
                        VK_SAMPLE_COUNT_1_BIT,                                  // deUint32                             samples;
                        VK_IMAGE_TILING_OPTIMAL,                                // VkImageTiling                tiling;
                        VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
@@ -841,14 +846,14 @@ tcu::TestStatus CopyImageToImage::iterate (void)
        const tcu::TextureFormat        srcTcuFormat            = mapVkFormat(m_params.src.image.format);
        const tcu::TextureFormat        dstTcuFormat            = mapVkFormat(m_params.dst.image.format);
        m_sourceTextureLevel = de::MovePtr<tcu::TextureLevel>(new tcu::TextureLevel(srcTcuFormat,
-                                                                                                                                                               m_params.src.image.extent.width,
-                                                                                                                                                               m_params.src.image.extent.height,
-                                                                                                                                                               m_params.src.image.extent.depth));
+                                                                                                                                                               (int)m_params.src.image.extent.width,
+                                                                                                                                                               (int)m_params.src.image.extent.height,
+                                                                                                                                                               (int)m_params.src.image.extent.depth));
        generateBuffer(m_sourceTextureLevel->getAccess(), m_params.src.image.extent.width, m_params.src.image.extent.height, m_params.src.image.extent.depth, FILL_MODE_RED);
        m_destinationTextureLevel = de::MovePtr<tcu::TextureLevel>(new tcu::TextureLevel(dstTcuFormat,
-                                                                                                                                                                        (int)m_params.dst.image.extent.width,
-                                                                                                                                                                        (int)m_params.dst.image.extent.height,
-                                                                                                                                                                        (int)m_params.dst.image.extent.depth));
+                                                                                                                                                               (int)m_params.dst.image.extent.width,
+                                                                                                                                                               (int)m_params.dst.image.extent.height,
+                                                                                                                                                               (int)m_params.dst.image.extent.depth));
        generateBuffer(m_destinationTextureLevel->getAccess(), m_params.dst.image.extent.width, m_params.dst.image.extent.height, m_params.dst.image.extent.depth, FILL_MODE_GRADIENT);
        generateExpectedResult();
 
@@ -881,7 +886,7 @@ tcu::TestStatus CopyImageToImage::iterate (void)
                                0u,                                                             // deUint32                             baseMipLevel;
                                1u,                                                             // deUint32                             mipLevels;
                                0u,                                                             // deUint32                             baseArraySlice;
-                               1u                                                              // deUint32                             arraySize;
+                               getArraySize(m_params.src.image)// deUint32                             arraySize;
                        }
                },
                // destination image
@@ -900,7 +905,7 @@ tcu::TestStatus CopyImageToImage::iterate (void)
                                0u,                                                             // deUint32                             baseMipLevel;
                                1u,                                                             // deUint32                             mipLevels;
                                0u,                                                             // deUint32                             baseArraySlice;
-                               1u                                                              // deUint32                             arraySize;
+                               getArraySize(m_params.dst.image)// deUint32                             arraySize;
                        }
                },
        };
@@ -987,9 +992,18 @@ tcu::TestStatus CopyImageToImage::checkTestResult (tcu::ConstPixelBufferAccess r
 
 void CopyImageToImage::copyRegionToTextureLevel (tcu::ConstPixelBufferAccess src, tcu::PixelBufferAccess dst, CopyRegion region)
 {
-       const VkOffset3D        srcOffset       = region.imageCopy.srcOffset;
-       const VkOffset3D        dstOffset       = region.imageCopy.dstOffset;
-       const VkExtent3D        extent          = region.imageCopy.extent;
+       VkOffset3D      srcOffset       = region.imageCopy.srcOffset;
+       VkOffset3D      dstOffset       = region.imageCopy.dstOffset;
+       VkExtent3D      extent          = region.imageCopy.extent;
+
+       if (m_params.src.image.imageType == VK_IMAGE_TYPE_3D && m_params.dst.image.imageType == VK_IMAGE_TYPE_2D)
+               dstOffset.z = srcOffset.z;
+       if (m_params.src.image.imageType == VK_IMAGE_TYPE_2D && m_params.dst.image.imageType == VK_IMAGE_TYPE_3D)
+       {
+               srcOffset.z = dstOffset.z;
+               extent.depth = std::max(region.imageCopy.extent.depth, region.imageCopy.srcSubresource.layerCount);
+       }
+
 
        if (tcu::isCombinedDepthStencilType(src.getFormat().type))
        {
@@ -1165,23 +1179,9 @@ tcu::TestStatus CopyBufferToBuffer::iterate (void)
        vk.cmdCopyBuffer(*m_cmdBuffer, m_source.get(), m_destination.get(), (deUint32)m_params.regions.size(), &bufferCopies[0]);
        vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &dstBufferBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL);
        VK_CHECK(vk.endCommandBuffer(*m_cmdBuffer));
+       submitCommandsAndWait(vk, vkDevice, queue, *m_cmdBuffer);
 
-       const VkSubmitInfo                              submitInfo                      =
-       {
-               VK_STRUCTURE_TYPE_SUBMIT_INFO,  // VkStructureType                      sType;
-               DE_NULL,                                                // const void*                          pNext;
-               0u,                                                             // deUint32                                     waitSemaphoreCount;
-               DE_NULL,                                                // const VkSemaphore*           pWaitSemaphores;
-               (const VkPipelineStageFlags*)DE_NULL,
-               1u,                                                             // deUint32                                     commandBufferCount;
-               &m_cmdBuffer.get(),                             // const VkCommandBuffer*       pCommandBuffers;
-               0u,                                                             // deUint32                                     signalSemaphoreCount;
-               DE_NULL                                                 // const VkSemaphore*           pSignalSemaphores;
-       };
 
-       VK_CHECK(vk.resetFences(vkDevice, 1, &m_fence.get()));
-       VK_CHECK(vk.queueSubmit(queue, 1, &submitInfo, *m_fence));
-       VK_CHECK(vk.waitForFences(vkDevice, 1, &m_fence.get(), true, ~(0ull) /* infinity */));
 
        // Read buffer data
        de::MovePtr<tcu::TextureLevel>  resultLevel             (new tcu::TextureLevel(mapVkFormat(VK_FORMAT_R32_UINT), dstLevelWidth, 1));
@@ -1254,11 +1254,11 @@ CopyImageToBuffer::CopyImageToBuffer (Context& context, TestParams testParams)
                        VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,    // VkStructureType              sType;
                        DE_NULL,                                                                // const void*                  pNext;
                        0u,                                                                             // VkImageCreateFlags   flags;
-                       VK_IMAGE_TYPE_2D,                                               // VkImageType                  imageType;
+                       m_params.src.image.imageType,                   // VkImageType                  imageType;
                        m_params.src.image.format,                              // VkFormat                             format;
-                       m_params.src.image.extent,                              // VkExtent3D                   extent;
+                       getExtent3D(m_params.src.image),                // VkExtent3D                   extent;
                        1u,                                                                             // deUint32                             mipLevels;
-                       1u,                                                                             // deUint32                             arraySize;
+                       getArraySize(m_params.src.image),               // deUint32                             arraySize;
                        VK_SAMPLE_COUNT_1_BIT,                                  // deUint32                             samples;
                        VK_IMAGE_TILING_OPTIMAL,                                // VkImageTiling                tiling;
                        VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
@@ -1479,11 +1479,11 @@ CopyBufferToImage::CopyBufferToImage (Context& context, TestParams testParams)
                        VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,    // VkStructureType              sType;
                        DE_NULL,                                                                // const void*                  pNext;
                        0u,                                                                             // VkImageCreateFlags   flags;
-                       VK_IMAGE_TYPE_2D,                                               // VkImageType                  imageType;
+                       m_params.dst.image.imageType,                   // VkImageType                  imageType;
                        m_params.dst.image.format,                              // VkFormat                             format;
-                       m_params.dst.image.extent,                              // VkExtent3D                   extent;
+                       getExtent3D(m_params.dst.image),                // VkExtent3D                   extent;
                        1u,                                                                             // deUint32                             mipLevels;
-                       1u,                                                                             // deUint32                             arraySize;
+                       getArraySize(m_params.dst.image),               // deUint32                             arraySize;
                        VK_SAMPLE_COUNT_1_BIT,                                  // deUint32                             samples;
                        VK_IMAGE_TILING_OPTIMAL,                                // VkImageTiling                tiling;
                        VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
@@ -1698,11 +1698,11 @@ BlittingImages::BlittingImages (Context& context, TestParams params)
                        VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,    // VkStructureType              sType;
                        DE_NULL,                                                                // const void*                  pNext;
                        0u,                                                                             // VkImageCreateFlags   flags;
-                       VK_IMAGE_TYPE_2D,                                               // VkImageType                  imageType;
+                       m_params.src.image.imageType,                   // VkImageType                  imageType;
                        m_params.src.image.format,                              // VkFormat                             format;
-                       m_params.src.image.extent,                              // VkExtent3D                   extent;
+                       getExtent3D(m_params.src.image),                // VkExtent3D                   extent;
                        1u,                                                                             // deUint32                             mipLevels;
-                       1u,                                                                             // deUint32                             arraySize;
+                       getArraySize(m_params.src.image),               // deUint32                             arraySize;
                        VK_SAMPLE_COUNT_1_BIT,                                  // deUint32                             samples;
                        VK_IMAGE_TILING_OPTIMAL,                                // VkImageTiling                tiling;
                        VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
@@ -1725,11 +1725,11 @@ BlittingImages::BlittingImages (Context& context, TestParams params)
                        VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,    // VkStructureType              sType;
                        DE_NULL,                                                                // const void*                  pNext;
                        0u,                                                                             // VkImageCreateFlags   flags;
-                       VK_IMAGE_TYPE_2D,                                               // VkImageType                  imageType;
+                       m_params.dst.image.imageType,                   // VkImageType                  imageType;
                        m_params.dst.image.format,                              // VkFormat                             format;
-                       m_params.dst.image.extent,                              // VkExtent3D                   extent;
+                       getExtent3D(m_params.dst.image),                // VkExtent3D                   extent;
                        1u,                                                                             // deUint32                             mipLevels;
-                       1u,                                                                             // deUint32                             arraySize;
+                       getArraySize(m_params.dst.image),               // deUint32                             arraySize;
                        VK_SAMPLE_COUNT_1_BIT,                                  // deUint32                             samples;
                        VK_IMAGE_TILING_OPTIMAL,                                // VkImageTiling                tiling;
                        VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
@@ -1827,8 +1827,7 @@ tcu::TestStatus BlittingImages::iterate (void)
        vk.cmdBlitImage(*m_cmdBuffer, m_source.get(), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, m_destination.get(), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, (deUint32)m_params.regions.size(), &regions[0], m_params.filter);
        vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &dstImageBarrier);
        VK_CHECK(vk.endCommandBuffer(*m_cmdBuffer));
-
-       submitCommandsAndWait (vk, vkDevice, queue, *m_cmdBuffer);
+       submitCommandsAndWait(vk, vkDevice, queue, *m_cmdBuffer);
 
        de::MovePtr<tcu::TextureLevel> resultTextureLevel = readImage(*m_destination, m_params.dst.image);
 
@@ -2579,7 +2578,7 @@ ResolveImageToImage::ResolveImageToImage (Context& context, TestParams params, c
                        VK_IMAGE_LAYOUT_UNDEFINED,                                                                                              // VkImageLayout                        initialLayout;
                };
 
-               m_multisampledImage                             = createImage(vk, vkDevice, &colorImageParams);
+               m_multisampledImage                                             = createImage(vk, vkDevice, &colorImageParams);
 
                // Allocate and bind color image memory.
                m_multisampledImageAlloc                = memAlloc.allocate(getImageMemoryRequirements(vk, vkDevice, *m_multisampledImage), MemoryRequirement::Any);
@@ -2730,6 +2729,7 @@ ResolveImageToImage::ResolveImageToImage (Context& context, TestParams params, c
                pipelineLayout  = createPipelineLayout(vk, vkDevice, &pipelineLayoutParams);
        }
 
+       // Create upper half triangle.
        {
                const tcu::Vec4 a       (-1.0, -1.0, 0.0, 1.0);
                const tcu::Vec4 b       (1.0, -1.0, 0.0, 1.0);
@@ -2768,7 +2768,7 @@ ResolveImageToImage::ResolveImageToImage (Context& context, TestParams params, c
        {
                Move<VkFramebuffer>             framebuffer;
                Move<VkImageView>               sourceAttachmentView;
-               const VkExtent3D                extent3D = getExtent3D(m_params.src.image);
+               //const VkExtent3D              extent3D = getExtent3D(m_params.src.image); TODO
 
                // Create color attachment view.
                {
@@ -2790,20 +2790,20 @@ ResolveImageToImage::ResolveImageToImage (Context& context, TestParams params, c
                {
                        const VkImageView                               attachments[1]          =
                        {
-                               *sourceAttachmentView,
+                                       *sourceAttachmentView,
                        };
 
                        const VkFramebufferCreateInfo   framebufferParams       =
                        {
-                               VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,      // VkStructureType                              sType;
-                               DE_NULL,                                                                        // const void*                                  pNext;
-                               0u,                                                                                     // VkFramebufferCreateFlags             flags;
-                               *renderPass,                                                            // VkRenderPass                                 renderPass;
-                               1u,                                                                                     // deUint32                                             attachmentCount;
-                               attachments,                                                            // const VkImageView*                   pAttachments;
-                               extent3D.width,                                                         // deUint32                                             width;
-                               extent3D.height,                                                        // deUint32                                             height;
-                               1u                                                                                      // deUint32                                             layers;
+                                       VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,                      // VkStructureType                              sType;
+                                       DE_NULL,                                                                                        // const void*                                  pNext;
+                                       0u,                                                                                                     // VkFramebufferCreateFlags             flags;
+                                       *renderPass,                                                                            // VkRenderPass                                 renderPass;
+                                       1u,                                                                                                     // deUint32                                             attachmentCount;
+                                       attachments,                                                                            // const VkImageView*                   pAttachments;
+                                       m_params.src.image.extent.width,                                        // deUint32                                             width;
+                                       m_params.src.image.extent.height,                                       // deUint32                                             height;
+                                       1u                                                                                                      // deUint32                                             layers;
                        };
 
                        framebuffer     = createFramebuffer(vk, vkDevice, &framebufferParams);
@@ -2835,9 +2835,9 @@ ResolveImageToImage::ResolveImageToImage (Context& context, TestParams params, c
 
                        const VkVertexInputBindingDescription                   vertexInputBindingDescription           =
                        {
-                               0u,                                                                     // deUint32                             binding;
-                               sizeof(tcu::Vec4),                                      // deUint32                             stride;
-                               VK_VERTEX_INPUT_RATE_VERTEX                     // VkVertexInputRate    inputRate;
+                                       0u,                                                                     // deUint32                             binding;
+                                       sizeof(tcu::Vec4),                                      // deUint32                             stride;
+                                       VK_VERTEX_INPUT_RATE_VERTEX                     // VkVertexInputRate    inputRate;
                        };
 
                        const VkVertexInputAttributeDescription                 vertexInputAttributeDescriptions[1]     =
@@ -2852,13 +2852,13 @@ ResolveImageToImage::ResolveImageToImage (Context& context, TestParams params, c
 
                        const VkPipelineVertexInputStateCreateInfo              vertexInputStateParams                          =
                        {
-                               VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,              // VkStructureType                                                      sType;
-                               DE_NULL,                                                                                                                // const void*                                                          pNext;
-                               0u,                                                                                                                             // VkPipelineVertexInputStateCreateFlags        flags;
-                               1u,                                                                                                                             // deUint32                                                                     vertexBindingDescriptionCount;
-                               &vertexInputBindingDescription,                                                                 // const VkVertexInputBindingDescription*       pVertexBindingDescriptions;
-                               1u,                                                                                                                             // deUint32                                                                     vertexAttributeDescriptionCount;
-                               vertexInputAttributeDescriptions                                                                // const VkVertexInputAttributeDescription*     pVertexAttributeDescriptions;
+                               VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,      // VkStructureType                                                      sType;
+                               DE_NULL,                                                                                                        // const void*                                                          pNext;
+                               0u,                                                                                                                     // VkPipelineVertexInputStateCreateFlags        flags;
+                               1u,                                                                                                                     // deUint32                                                                     vertexBindingDescriptionCount;
+                               &vertexInputBindingDescription,                                                         // const VkVertexInputBindingDescription*       pVertexBindingDescriptions;
+                               1u,                                                                                                                     // deUint32                                                                     vertexAttributeDescriptionCount;
+                               vertexInputAttributeDescriptions                                                        // const VkVertexInputAttributeDescription*     pVertexAttributeDescriptions;
                        };
 
                        const VkPipelineInputAssemblyStateCreateInfo    inputAssemblyStateParams                        =
@@ -2872,74 +2872,74 @@ ResolveImageToImage::ResolveImageToImage (Context& context, TestParams params, c
 
                        const VkViewport        viewport        =
                        {
-                               0.0f,                                                   // float        x;
-                               0.0f,                                                   // float        y;
-                               (float)extent3D.width,  // float        width;
-                               (float)extent3D.height, // float        height;
-                               0.0f,                                                   // float        minDepth;
-                               1.0f                                                    // float        maxDepth;
+                               0.0f,                                                                   // float        x;
+                               0.0f,                                                                   // float        y;
+                               (float)m_params.src.image.extent.width, // float        width;
+                               (float)m_params.src.image.extent.height,// float        height;
+                               0.0f,                                                                   // float        minDepth;
+                               1.0f                                                                    // float        maxDepth;
                        };
 
                        const VkRect2D          scissor         =
                        {
-                               { 0, 0 },                                                                               // VkOffset2D   offset;
-                               { extent3D.width, extent3D.height }     // VkExtent2D   extent;
+                               { 0, 0 },                                                                                                                               // VkOffset2D   offset;
+                               { m_params.src.image.extent.width, m_params.src.image.extent.height }   // VkExtent2D   extent;
                        };
 
                        const VkPipelineViewportStateCreateInfo                 viewportStateParams             =
                        {
-                               VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,                  // VkStructureType                                              sType;
-                               DE_NULL,                                                                                                                // const void*                                                  pNext;
-                               0u,                                                                                                                             // VkPipelineViewportStateCreateFlags   flags;
-                               1u,                                                                                                                             // deUint32                                                             viewportCount;
-                               &viewport,                                                                                                              // const VkViewport*                                    pViewports;
-                               1u,                                                                                                                             // deUint32                                                             scissorCount;
-                               &scissor                                                                                                                // const VkRect2D*                                              pScissors;
+                               VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,  // VkStructureType                                              sType;
+                               DE_NULL,                                                                                                // const void*                                                  pNext;
+                               0u,                                                                                                             // VkPipelineViewportStateCreateFlags   flags;
+                               1u,                                                                                                             // deUint32                                                             viewportCount;
+                               &viewport,                                                                                              // const VkViewport*                                    pViewports;
+                               1u,                                                                                                             // deUint32                                                             scissorCount;
+                               &scissor                                                                                                // const VkRect2D*                                              pScissors;
                        };
 
                        const VkPipelineRasterizationStateCreateInfo    rasterStateParams               =
                        {
-                               VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,             // VkStructureType                                                      sType;
-                               DE_NULL,                                                                                                                // const void*                                                          pNext;
-                               0u,                                                                                                                             // VkPipelineRasterizationStateCreateFlags      flags;
-                               false,                                                                                                                  // VkBool32                                                                     depthClampEnable;
-                               false,                                                                                                                  // VkBool32                                                                     rasterizerDiscardEnable;
-                               VK_POLYGON_MODE_FILL,                                                                                   // VkPolygonMode                                                        polygonMode;
-                               VK_CULL_MODE_NONE,                                                                                              // VkCullModeFlags                                                      cullMode;
-                               VK_FRONT_FACE_COUNTER_CLOCKWISE,                                                                // VkFrontFace                                                          frontFace;
-                               VK_FALSE,                                                                                                               // VkBool32                                                                     depthBiasEnable;
-                               0.0f,                                                                                                                   // float                                                                        depthBiasConstantFactor;
-                               0.0f,                                                                                                                   // float                                                                        depthBiasClamp;
-                               0.0f,                                                                                                                   // float                                                                        depthBiasSlopeFactor;
-                               1.0f                                                                                                                    // float                                                                        lineWidth;
+                               VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,     // VkStructureType                                                      sType;
+                               DE_NULL,                                                                                                        // const void*                                                          pNext;
+                               0u,                                                                                                                     // VkPipelineRasterizationStateCreateFlags      flags;
+                               false,                                                                                                          // VkBool32                                                                     depthClampEnable;
+                               false,                                                                                                          // VkBool32                                                                     rasterizerDiscardEnable;
+                               VK_POLYGON_MODE_FILL,                                                                           // VkPolygonMode                                                        polygonMode;
+                               VK_CULL_MODE_NONE,                                                                                      // VkCullModeFlags                                                      cullMode;
+                               VK_FRONT_FACE_COUNTER_CLOCKWISE,                                                        // VkFrontFace                                                          frontFace;
+                               VK_FALSE,                                                                                                       // VkBool32                                                                     depthBiasEnable;
+                               0.0f,                                                                                                           // float                                                                        depthBiasConstantFactor;
+                               0.0f,                                                                                                           // float                                                                        depthBiasClamp;
+                               0.0f,                                                                                                           // float                                                                        depthBiasSlopeFactor;
+                               1.0f                                                                                                            // float                                                                        lineWidth;
                        };
 
                        const VkPipelineMultisampleStateCreateInfo      multisampleStateParams          =
                        {
-                               VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,               // VkStructureType                                                      sType;
-                               DE_NULL,                                                                                                                // const void*                                                          pNext;
-                               0u,                                                                                                                             // VkPipelineMultisampleStateCreateFlags        flags;
-                               rasterizationSamples,                                                                                   // VkSampleCountFlagBits                                        rasterizationSamples;
-                               VK_FALSE,                                                                                                               // VkBool32                                                                     sampleShadingEnable;
-                               0.0f,                                                                                                                   // float                                                                        minSampleShading;
-                               DE_NULL,                                                                                                                // const VkSampleMask*                                          pSampleMask;
-                               VK_FALSE,                                                                                                               // VkBool32                                                                     alphaToCoverageEnable;
-                               VK_FALSE                                                                                                                // VkBool32                                                                     alphaToOneEnable;
+                               VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,       // VkStructureType                                                      sType;
+                               DE_NULL,                                                                                                        // const void*                                                          pNext;
+                               0u,                                                                                                                     // VkPipelineMultisampleStateCreateFlags        flags;
+                               rasterizationSamples,                                                                           // VkSampleCountFlagBits                                        rasterizationSamples;
+                               VK_FALSE,                                                                                                       // VkBool32                                                                     sampleShadingEnable;
+                               0.0f,                                                                                                           // float                                                                        minSampleShading;
+                               DE_NULL,                                                                                                        // const VkSampleMask*                                          pSampleMask;
+                               VK_FALSE,                                                                                                       // VkBool32                                                                     alphaToCoverageEnable;
+                               VK_FALSE                                                                                                        // VkBool32                                                                     alphaToOneEnable;
                        };
 
                        const VkPipelineColorBlendAttachmentState       colorBlendAttachmentState       =
                        {
-                               false,                                                                                                          // VkBool32                     blendEnable;
-                               VK_BLEND_FACTOR_ONE,                                                                            // VkBlend                      srcBlendColor;
-                               VK_BLEND_FACTOR_ZERO,                                                                           // VkBlend                      destBlendColor;
-                               VK_BLEND_OP_ADD,                                                                                        // VkBlendOp            blendOpColor;
-                               VK_BLEND_FACTOR_ONE,                                                                            // VkBlend                      srcBlendAlpha;
-                               VK_BLEND_FACTOR_ZERO,                                                                           // VkBlend                      destBlendAlpha;
-                               VK_BLEND_OP_ADD,                                                                                        // VkBlendOp            blendOpAlpha;
+                               false,                                                  // VkBool32                     blendEnable;
+                               VK_BLEND_FACTOR_ONE,                    // VkBlend                      srcBlendColor;
+                               VK_BLEND_FACTOR_ZERO,                   // VkBlend                      destBlendColor;
+                               VK_BLEND_OP_ADD,                                // VkBlendOp            blendOpColor;
+                               VK_BLEND_FACTOR_ONE,                    // VkBlend                      srcBlendAlpha;
+                               VK_BLEND_FACTOR_ZERO,                   // VkBlend                      destBlendAlpha;
+                               VK_BLEND_OP_ADD,                                // VkBlendOp            blendOpAlpha;
                                (VK_COLOR_COMPONENT_R_BIT |
-                                VK_COLOR_COMPONENT_G_BIT |
-                                VK_COLOR_COMPONENT_B_BIT |
-                                VK_COLOR_COMPONENT_A_BIT)                                                                      // VkChannelFlags       channelWriteMask;
+                               VK_COLOR_COMPONENT_G_BIT |
+                               VK_COLOR_COMPONENT_B_BIT |
+                               VK_COLOR_COMPONENT_A_BIT)               // VkChannelFlags       channelWriteMask;
                        };
 
                        const VkPipelineColorBlendStateCreateInfo       colorBlendStateParams   =
@@ -3003,7 +3003,7 @@ ResolveImageToImage::ResolveImageToImage (Context& context, TestParams params, c
                                *framebuffer,                                                                                   // VkFramebuffer                framebuffer;
                                {
                                        { 0, 0 },
-                                       { extent3D.width, extent3D.height }
+                                       { m_params.src.image.extent.width, m_params.src.image.extent.height }
                                },                                                                                                              // VkRect2D                             renderArea;
                                1u,                                                                                                             // deUint32                             clearValueCount;
                                clearValues                                                                                             // const VkClearValue*  pClearValues;
@@ -3012,11 +3012,12 @@ ResolveImageToImage::ResolveImageToImage (Context& context, TestParams params, c
                        VK_CHECK(vk.beginCommandBuffer(*m_cmdBuffer, &cmdBufferBeginInfo));
                        vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &srcImageBarrier);
                        vk.cmdBeginRenderPass(*m_cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE);
+
                        const VkDeviceSize      vertexBufferOffset      = 0u;
 
                        vk.cmdBindPipeline(*m_cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *graphicsPipeline);
                        vk.cmdBindVertexBuffers(*m_cmdBuffer, 0, 1, &vertexBuffer.get(), &vertexBufferOffset);
-                               vk.cmdDraw(*m_cmdBuffer, (deUint32)vertices.size(), 1, 0, 0);
+                       vk.cmdDraw(*m_cmdBuffer, (deUint32)vertices.size(), 1, 0, 0);
 
                        vk.cmdEndRenderPass(*m_cmdBuffer);
                        VK_CHECK(vk.endCommandBuffer(*m_cmdBuffer));
@@ -3122,13 +3123,13 @@ tcu::TestStatus ResolveImageToImage::iterate (void)
                VK_QUEUE_FAMILY_IGNORED,                                // deUint32                                     srcQueueFamilyIndex;
                VK_QUEUE_FAMILY_IGNORED,                                // deUint32                                     dstQueueFamilyIndex;
                m_destination.get(),                                    // VkImage                                      image;
-                       {                                                                       // VkImageSubresourceRange      subresourceRange;
-                               getAspectFlags(dstTcuFormat),   // VkImageAspectFlags           aspectMask;
-                               0u,                                                             // deUint32                                     baseMipLevel;
-                               1u,                                                             // deUint32                                     mipLevels;
-                               0u,                                                             // deUint32                                     baseArraySlice;
-                               getArraySize(m_params.dst.image)// deUint32                                     arraySize;
-                       }
+               {                                                                               // VkImageSubresourceRange      subresourceRange;
+                       getAspectFlags(dstTcuFormat),           // VkImageAspectFlags           aspectMask;
+                       0u,                                                                     // deUint32                                     baseMipLevel;
+                       1u,                                                                     // deUint32                                     mipLevels;
+                       0u,                                                                     // deUint32                                     baseArraySlice;
+                       getArraySize(m_params.dst.image)        // deUint32                                     arraySize;
+               }
        };
 
        const VkCommandBufferBeginInfo  cmdBufferBeginInfo      =
@@ -3144,17 +3145,11 @@ tcu::TestStatus ResolveImageToImage::iterate (void)
        vk.cmdResolveImage(*m_cmdBuffer, m_multisampledImage.get(), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, m_destination.get(), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, (deUint32)m_params.regions.size(), imageResolves.data());
        vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &postImageBarrier);
        VK_CHECK(vk.endCommandBuffer(*m_cmdBuffer));
+       submitCommandsAndWait(vk, vkDevice, queue, *m_cmdBuffer);
 
-       submitCommandsAndWait (vk, vkDevice, queue, *m_cmdBuffer);
-
-       // check the result of resolving image
-       {
-               de::MovePtr<tcu::TextureLevel>  resultTextureLevel      = readImage(*m_destination, m_params.dst.image);
+       de::MovePtr<tcu::TextureLevel>  resultTextureLevel      = readImage(*m_destination, m_params.dst.image);
 
-               if (QP_TEST_RESULT_PASS != checkTestResult(resultTextureLevel->getAccess()).getCode())
-                       return tcu::TestStatus::fail("CopiesAndBlitting test");
-       }
-       return tcu::TestStatus::pass("CopiesAndBlitting test");
+       return checkTestResult(resultTextureLevel->getAccess());
 }
 
 tcu::TestStatus ResolveImageToImage::checkTestResult (tcu::ConstPixelBufferAccess result)
@@ -3341,6 +3336,7 @@ void ResolveImageToImageTestCase::initPrograms (SourceCollections& programCollec
                "       gl_Position = a_position;\n"
                "}\n");
 
+
        programCollection.glslSources.add("frag") << glu::FragmentSource(
                "#version 310 es\n"
                "layout (location = 0) out highp vec4 o_color;\n"
@@ -3831,6 +3827,7 @@ tcu::TestCaseGroup* createCopiesAndBlittingTests (tcu::TestContext& testCtx)
        de::MovePtr<tcu::TestCaseGroup> imageToImageTests               (new tcu::TestCaseGroup(testCtx, "image_to_image", "Copy from image to image"));
        de::MovePtr<tcu::TestCaseGroup> imgToImgSimpleTests             (new tcu::TestCaseGroup(testCtx, "simple_tests", "Copy from image to image simple tests"));
        de::MovePtr<tcu::TestCaseGroup> imgToImgAllFormatsTests (new tcu::TestCaseGroup(testCtx, "all_formats", "Copy from image to image with all compatible formats"));
+       de::MovePtr<tcu::TestCaseGroup> imgToImg3dImagesTests   (new tcu::TestCaseGroup(testCtx, "3d_images", "Coping operations on 3d images"));
 
        de::MovePtr<tcu::TestCaseGroup> imageToBufferTests              (new tcu::TestCaseGroup(testCtx, "image_to_buffer", "Copy from image to buffer"));
        de::MovePtr<tcu::TestCaseGroup> bufferToImageTests              (new tcu::TestCaseGroup(testCtx, "buffer_to_image", "Copy from buffer to image"));
@@ -3873,6 +3870,7 @@ tcu::TestCaseGroup* createCopiesAndBlittingTests (tcu::TestContext& testCtx)
                params.src.image.imageType      = VK_IMAGE_TYPE_2D;
                params.src.image.format         = VK_FORMAT_R8G8B8A8_UINT;
                params.src.image.extent         = defaultExtent;
+               params.dst.image.imageType      = VK_IMAGE_TYPE_2D;
                params.dst.image.format         = VK_FORMAT_R8G8B8A8_UINT;
                params.dst.image.extent         = defaultExtent;
 
@@ -4969,6 +4967,7 @@ tcu::TestCaseGroup* createCopiesAndBlittingTests (tcu::TestContext& testCtx)
                        params.dst.image.format = VK_FORMAT_R8G8B8A8_UNORM;
                        blitImgSimpleTests->addChild(new BlittingTestCase(testCtx, testName + "_nearest", description, params));
 
+
                        params.dst.image.format = VK_FORMAT_R32_SFLOAT;
                        const std::string       descriptionOfRGBAToR32  (description + " and different formats (R8G8B8A8 -> R32)");
                        blitImgSimpleTests->addChild(new BlittingTestCase(testCtx, testName + "_" + getFormatCaseName(params.dst.image.format) + "_nearest", descriptionOfRGBAToR32, params));
@@ -5375,6 +5374,305 @@ tcu::TestCaseGroup* createCopiesAndBlittingTests (tcu::TestContext& testCtx)
        }
 
        {
+               TestParams      params3DTo2D;
+               const deUint32  slicesLayers                    = 16u;
+               params3DTo2D.src.image.imageType                = VK_IMAGE_TYPE_3D;
+               params3DTo2D.src.image.format                   = VK_FORMAT_R8G8B8A8_UINT;
+               params3DTo2D.src.image.extent                   = defaultHalfExtent;
+               params3DTo2D.src.image.extent.depth             = slicesLayers;
+               params3DTo2D.dst.image.imageType                = VK_IMAGE_TYPE_2D;
+               params3DTo2D.dst.image.format                   = VK_FORMAT_R8G8B8A8_UINT;
+               params3DTo2D.dst.image.extent                   = defaultHalfExtent;
+               params3DTo2D.dst.image.extent.depth             = slicesLayers;
+
+               for (deUint32 slicesLayersNdx = 0; slicesLayersNdx < slicesLayers; ++slicesLayersNdx)
+               {
+                       const VkImageSubresourceLayers  sourceLayer     =
+                       {
+                               VK_IMAGE_ASPECT_COLOR_BIT,      // VkImageAspectFlags   aspectMask;
+                               0u,                                                     // uint32_t                             mipLevel;
+                               0u,                                                     // uint32_t                             baseArrayLayer;
+                               1u                                                      // uint32_t                             layerCount;
+                       };
+
+                       const VkImageSubresourceLayers  destinationLayer        =
+                       {
+                               VK_IMAGE_ASPECT_COLOR_BIT,      // VkImageAspectFlags   aspectMask;
+                               0u,                                                     // uint32_t                             mipLevel;
+                               slicesLayersNdx,                        // uint32_t                             baseArrayLayer;
+                               1u                                                      // uint32_t                             layerCount;
+                       };
+
+                       const VkImageCopy                               testCopy        =
+                       {
+                               sourceLayer,                                            // VkImageSubresourceLayers     srcSubresource;
+                               {0, 0, (deInt32)slicesLayersNdx},       // VkOffset3D                                   srcOffset;
+                               destinationLayer,                                       // VkImageSubresourceLayers     dstSubresource;
+                               {0, 0, 0},                                                      // VkOffset3D                                   dstOffset;
+                               defaultHalfExtent,                                      // VkExtent3D                                   extent;
+                       };
+
+                       CopyRegion      imageCopy;
+                       imageCopy.imageCopy     = testCopy;
+
+                       params3DTo2D.regions.push_back(imageCopy);
+               }
+               imgToImg3dImagesTests->addChild(new CopyImageToImageTestCase(testCtx, "3d_to_2d_by_slices", "copy 2d layers to 3d slices one by one", params3DTo2D));
+       }
+
+       {
+               TestParams      params2DTo3D;
+               const deUint32  slicesLayers                    = 16u;
+               params2DTo3D.src.image.imageType                = VK_IMAGE_TYPE_2D;
+               params2DTo3D.src.image.format                   = VK_FORMAT_R8G8B8A8_UINT;
+               params2DTo3D.src.image.extent                   = defaultHalfExtent;
+               params2DTo3D.src.image.extent.depth             = slicesLayers;
+               params2DTo3D.dst.image.imageType                = VK_IMAGE_TYPE_3D;
+               params2DTo3D.dst.image.format                   = VK_FORMAT_R8G8B8A8_UINT;
+               params2DTo3D.dst.image.extent                   = defaultHalfExtent;
+               params2DTo3D.dst.image.extent.depth             = slicesLayers;
+
+               for (deUint32 slicesLayersNdx = 0; slicesLayersNdx < slicesLayers; ++slicesLayersNdx)
+               {
+                       const VkImageSubresourceLayers  sourceLayer     =
+                       {
+                               VK_IMAGE_ASPECT_COLOR_BIT,      // VkImageAspectFlags   aspectMask;
+                               0u,                                                     // uint32_t                             mipLevel;
+                               slicesLayersNdx,                        // uint32_t                             baseArrayLayer;
+                               1u                                                      // uint32_t                             layerCount;
+                       };
+
+                       const VkImageSubresourceLayers  destinationLayer        =
+                       {
+                               VK_IMAGE_ASPECT_COLOR_BIT,      // VkImageAspectFlags   aspectMask;
+                               0u,                                                     // uint32_t                             mipLevel;
+                               0u,                                                     // uint32_t                             baseArrayLayer;
+                               1u                                                      // uint32_t                             layerCount;
+                       };
+
+                       const VkImageCopy                               testCopy        =
+                       {
+                               sourceLayer,                                            // VkImageSubresourceLayers     srcSubresource;
+                               {0, 0, 0},                                                      // VkOffset3D                           srcOffset;
+                               destinationLayer,                                       // VkImageSubresourceLayers     dstSubresource;
+                               {0, 0, (deInt32)slicesLayersNdx},       // VkOffset3D                           dstOffset;
+                               defaultHalfExtent,                                      // VkExtent3D                           extent;
+                       };
+
+                       CopyRegion      imageCopy;
+                       imageCopy.imageCopy     = testCopy;
+
+                       params2DTo3D.regions.push_back(imageCopy);
+               }
+
+               imgToImg3dImagesTests->addChild(new CopyImageToImageTestCase(testCtx, "2d_to_3d_by_layers", "copy 3d slices to 2d layers one by one", params2DTo3D));
+       }
+
+       {
+               TestParams      params3DTo2D;
+               const deUint32  slicesLayers                    = 16u;
+               params3DTo2D.src.image.imageType                = VK_IMAGE_TYPE_3D;
+               params3DTo2D.src.image.format                   = VK_FORMAT_R8G8B8A8_UINT;
+               params3DTo2D.src.image.extent                   = defaultHalfExtent;
+               params3DTo2D.src.image.extent.depth             = slicesLayers;
+               params3DTo2D.dst.image.imageType                = VK_IMAGE_TYPE_2D;
+               params3DTo2D.dst.image.format                   = VK_FORMAT_R8G8B8A8_UINT;
+               params3DTo2D.dst.image.extent                   = defaultHalfExtent;
+               params3DTo2D.dst.image.extent.depth             = slicesLayers;
+
+               {
+                       const VkImageSubresourceLayers  sourceLayer     =
+                       {
+                               VK_IMAGE_ASPECT_COLOR_BIT,      // VkImageAspectFlags   aspectMask;
+                               0u,                                                     // uint32_t                             mipLevel;
+                               0u,                                                     // uint32_t                             baseArrayLayer;
+                               1u                                                      // uint32_t                             layerCount;
+                       };
+
+                       const VkImageSubresourceLayers  destinationLayer        =
+                       {
+                               VK_IMAGE_ASPECT_COLOR_BIT,      // VkImageAspectFlags   aspectMask;
+                               0u,                                                     // uint32_t                             mipLevel;
+                               0,                                                      // uint32_t                             baseArrayLayer;
+                               slicesLayers                            // uint32_t                             layerCount;
+                       };
+
+                       const VkImageCopy                               testCopy        =
+                       {
+                               sourceLayer,                                    // VkImageSubresourceLayers     srcSubresource;
+                               {0, 0, 0},                                              // VkOffset3D                           srcOffset;
+                               destinationLayer,                               // VkImageSubresourceLayers     dstSubresource;
+                               {0, 0, 0},                                              // VkOffset3D                           dstOffset;
+                               params3DTo2D.src.image.extent   // VkExtent3D                           extent;
+                       };
+
+                       CopyRegion      imageCopy;
+                       imageCopy.imageCopy     = testCopy;
+
+                       params3DTo2D.regions.push_back(imageCopy);
+               }
+               imgToImg3dImagesTests->addChild(new CopyImageToImageTestCase(testCtx, "3d_to_2d_whole", "copy 3d slices to 2d layers all at once", params3DTo2D));
+       }
+
+       {
+               TestParams      params2DTo3D;
+               const deUint32  slicesLayers                    = 16u;
+               params2DTo3D.src.image.imageType                = VK_IMAGE_TYPE_2D;
+               params2DTo3D.src.image.format                   = VK_FORMAT_R8G8B8A8_UINT;
+               params2DTo3D.src.image.extent                   = defaultHalfExtent;
+               params2DTo3D.src.image.extent.depth             = slicesLayers;
+               params2DTo3D.dst.image.imageType                = VK_IMAGE_TYPE_3D;
+               params2DTo3D.dst.image.format                   = VK_FORMAT_R8G8B8A8_UINT;
+               params2DTo3D.dst.image.extent                   = defaultHalfExtent;
+               params2DTo3D.dst.image.extent.depth             = slicesLayers;
+
+               {
+                       const VkImageSubresourceLayers  sourceLayer     =
+                       {
+                               VK_IMAGE_ASPECT_COLOR_BIT,      // VkImageAspectFlags   aspectMask;
+                               0u,                                                     // uint32_t                             mipLevel;
+                               0u,                                                     // uint32_t                             baseArrayLayer;
+                               slicesLayers                            // uint32_t                             layerCount;
+                       };
+
+                       const VkImageSubresourceLayers  destinationLayer        =
+                       {
+                               VK_IMAGE_ASPECT_COLOR_BIT,      // VkImageAspectFlags   aspectMask;
+                               0u,                                                     // uint32_t                             mipLevel;
+                               0u,                                                     // uint32_t                             baseArrayLayer;
+                               1u                                                      // uint32_t                             layerCount;
+                       };
+
+                       const VkImageCopy                               testCopy        =
+                       {
+                               sourceLayer,                                    // VkImageSubresourceLayers     srcSubresource;
+                               {0, 0, 0},                                              // VkOffset3D                           srcOffset;
+                               destinationLayer,                               // VkImageSubresourceLayers     dstSubresource;
+                               {0, 0, 0},                                              // VkOffset3D                           dstOffset;
+                               params2DTo3D.dst.image.extent,  // VkExtent3D                           extent;
+                       };
+
+                       CopyRegion      imageCopy;
+                       imageCopy.imageCopy     = testCopy;
+
+                       params2DTo3D.regions.push_back(imageCopy);
+               }
+
+               imgToImg3dImagesTests->addChild(new CopyImageToImageTestCase(testCtx, "2d_to_3d_whole", "copy 2d layers to 3d slices all at once", params2DTo3D));
+       }
+
+       {
+               TestParams      params3DTo2D;
+               const deUint32  slicesLayers                    = 16u;
+               params3DTo2D.src.image.imageType                = VK_IMAGE_TYPE_3D;
+               params3DTo2D.src.image.format                   = VK_FORMAT_R8G8B8A8_UINT;
+               params3DTo2D.src.image.extent                   = defaultHalfExtent;
+               params3DTo2D.src.image.extent.depth             = slicesLayers;
+               params3DTo2D.dst.image.imageType                = VK_IMAGE_TYPE_2D;
+               params3DTo2D.dst.image.format                   = VK_FORMAT_R8G8B8A8_UINT;
+               params3DTo2D.dst.image.extent                   = defaultHalfExtent;
+               params3DTo2D.dst.image.extent.depth             = slicesLayers;
+
+               const deUint32 regionWidth                              = defaultHalfExtent.width / slicesLayers -1;
+               const deUint32 regionHeight                             = defaultHalfExtent.height / slicesLayers -1 ;
+
+               for (deUint32 slicesLayersNdx = 0; slicesLayersNdx < slicesLayers; ++slicesLayersNdx)
+               {
+                       const VkImageSubresourceLayers  sourceLayer     =
+                       {
+                               VK_IMAGE_ASPECT_COLOR_BIT,      // VkImageAspectFlags   aspectMask;
+                               0u,                                                     // uint32_t                             mipLevel;
+                               0u,                                                     // uint32_t                             baseArrayLayer;
+                               1u                                                      // uint32_t                             layerCount;
+                       };
+
+                       const VkImageSubresourceLayers  destinationLayer        =
+                       {
+                                       VK_IMAGE_ASPECT_COLOR_BIT,              // VkImageAspectFlags   aspectMask;
+                                       0u,                                                             // uint32_t                             mipLevel;
+                                       slicesLayersNdx,                                // uint32_t                             baseArrayLayer;
+                                       1u                                                              // uint32_t                             layerCount;
+                       };
+
+
+                       const VkImageCopy                               testCopy        =
+                       {
+                               sourceLayer,                                                                                                                    // VkImageSubresourceLayers     srcSubresource;
+                               {0, (deInt32)(regionHeight*slicesLayersNdx), (deInt32)slicesLayersNdx}, // VkOffset3D                           srcOffset;
+                                       destinationLayer,                                                                                                       // VkImageSubresourceLayers     dstSubresource;
+                                       {(deInt32)(regionWidth*slicesLayersNdx), 0, 0},                                         // VkOffset3D                           dstOffset;
+                                       {
+                                               (defaultHalfExtent.width - regionWidth*slicesLayersNdx),
+                                               (defaultHalfExtent.height - regionHeight*slicesLayersNdx),
+                                               1
+                                       }                                                                                                                                       // VkExtent3D                           extent;
+                       };
+
+                       CopyRegion      imageCopy;
+                       imageCopy.imageCopy     = testCopy;
+                       params3DTo2D.regions.push_back(imageCopy);
+               }
+               imgToImg3dImagesTests->addChild(new CopyImageToImageTestCase(testCtx, "3d_to_2d_regions", "copy 3d slices regions to 2d layers", params3DTo2D));
+       }
+
+       {
+               TestParams      params2DTo3D;
+               const deUint32  slicesLayers                    = 16u;
+               params2DTo3D.src.image.imageType                = VK_IMAGE_TYPE_2D;
+               params2DTo3D.src.image.format                   = VK_FORMAT_R8G8B8A8_UINT;
+               params2DTo3D.src.image.extent                   = defaultHalfExtent;
+               params2DTo3D.src.image.extent.depth             = slicesLayers;
+               params2DTo3D.dst.image.imageType                = VK_IMAGE_TYPE_3D;
+               params2DTo3D.dst.image.format                   = VK_FORMAT_R8G8B8A8_UINT;
+               params2DTo3D.dst.image.extent                   = defaultHalfExtent;
+               params2DTo3D.dst.image.extent.depth             = slicesLayers;
+
+               const deUint32 regionWidth                              = defaultHalfExtent.width / slicesLayers -1;
+               const deUint32 regionHeight                             = defaultHalfExtent.height / slicesLayers -1 ;
+
+               for (deUint32 slicesLayersNdx = 0; slicesLayersNdx < slicesLayers; ++slicesLayersNdx)
+               {
+                       const VkImageSubresourceLayers  sourceLayer     =
+                       {
+                               VK_IMAGE_ASPECT_COLOR_BIT,      // VkImageAspectFlags   aspectMask;
+                               0u,                                                     // uint32_t                             mipLevel;
+                               slicesLayersNdx,                        // uint32_t                             baseArrayLayer;
+                               1u                                                      // uint32_t                             layerCount;
+                       };
+
+                       const VkImageSubresourceLayers  destinationLayer        =
+                       {
+                               VK_IMAGE_ASPECT_COLOR_BIT,      // VkImageAspectFlags   aspectMask;
+                               0u,                                                     // uint32_t                             mipLevel;
+                               0u,                                                     // uint32_t                             baseArrayLayer;
+                               1u                                                      // uint32_t                             layerCount;
+                       };
+
+                       const VkImageCopy                               testCopy        =
+                       {
+                               sourceLayer,                                                                                                                            // VkImageSubresourceLayers     srcSubresource;
+                               {(deInt32)(regionWidth*slicesLayersNdx), 0, 0},                                                         // VkOffset3D                           srcOffset;
+                               destinationLayer,                                                                                                                       // VkImageSubresourceLayers     dstSubresource;
+                               {0, (deInt32)(regionHeight*slicesLayersNdx), (deInt32)(slicesLayersNdx)},       // VkOffset3D                           dstOffset;
+                               {
+                                       defaultHalfExtent.width - regionWidth*slicesLayersNdx,
+                                       defaultHalfExtent.height - regionHeight*slicesLayersNdx,
+                                       1
+                               }                                                                                                                                                       // VkExtent3D                           extent;
+                       };
+
+                       CopyRegion      imageCopy;
+                       imageCopy.imageCopy     = testCopy;
+
+                       params2DTo3D.regions.push_back(imageCopy);
+               }
+
+               imgToImg3dImagesTests->addChild(new CopyImageToImageTestCase(testCtx, "2d_to_3d_regions", "copy 2d layers regions to 3d slices", params2DTo3D));
+       }
+
+       imageToImageTests->addChild(imgToImg3dImagesTests.release());
+
+       {
                const std::string       description     ("Resolve from image to image of different size");
                const std::string       testName        ("diff_image_size");
 
index 9e3509c..64d863f 100644 (file)
@@ -37,6 +37,7 @@
 #include "deUniquePtr.hpp"
 #include "deSharedPtr.hpp"
 #include "deInt32.h"
+#include "deSTLUtil.hpp"
 
 namespace vkt
 {
@@ -142,6 +143,118 @@ tcu::TestStatus resetDescriptorPoolTest (Context& context, deUint32 numIteration
        return tcu::TestStatus::pass("Pass");
 }
 
+tcu::TestStatus outOfPoolMemoryTest (Context& context)
+{
+       const DeviceInterface&  vkd                                                     = context.getDeviceInterface();
+       const VkDevice                  device                                          = context.getDevice();
+       const bool                              expectOutOfPoolMemoryError      = de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), "VK_KHR_maintenance1");
+       deUint32                                numErrorsReturned                       = 0;
+
+       const struct FailureCase
+       {
+               deUint32        poolDescriptorCount;            //!< total number of descriptors (of a given type) in the descriptor pool
+               deUint32        poolMaxSets;                            //!< max number of descriptor sets that can be allocated from the pool
+               deUint32        bindingCount;                           //!< number of bindings per descriptor set layout
+               deUint32        bindingDescriptorCount;         //!< number of descriptors in a binding (array size) (in all bindings)
+               deUint32        descriptorSetCount;                     //!< number of descriptor sets to allocate
+               string          description;                            //!< the log message for this failure condition
+       } failureCases[] =
+       {
+               //      pool                    pool            binding         binding         alloc set
+               //      descr. count    max sets        count           array size      count
+               {       4u,                             2u,                     1u,                     1u,                     3u,             "Out of descriptor sets",                                                                                       },
+               {       3u,                             4u,                     1u,                     1u,                     4u,             "Out of descriptors (due to the number of sets)",                                       },
+               {       2u,                             1u,                     3u,                     1u,                     1u,             "Out of descriptors (due to the number of bindings)",                           },
+               {       3u,                             2u,                     1u,                     2u,                     2u,             "Out of descriptors (due to descriptor array size)",                            },
+               {       5u,                             1u,                     2u,                     3u,                     1u,             "Out of descriptors (due to descriptor array size in all bindings)",},
+       };
+
+       context.getTestContext().getLog()
+               << tcu::TestLog::Message
+               << "Creating a descriptor pool with insufficient resources. Descriptor set allocation is likely to fail."
+               << tcu::TestLog::EndMessage;
+
+       for (deUint32 failureCaseNdx = 0u; failureCaseNdx < DE_LENGTH_OF_ARRAY(failureCases); ++failureCaseNdx)
+       {
+               const FailureCase& params = failureCases[failureCaseNdx];
+               context.getTestContext().getLog() << tcu::TestLog::Message << "Checking: " << params.description << tcu::TestLog::EndMessage;
+
+               for (VkDescriptorType   descriptorType = VK_DESCRIPTOR_TYPE_SAMPLER;
+                                                               descriptorType < VK_DESCRIPTOR_TYPE_LAST;
+                                                               descriptorType = static_cast<VkDescriptorType>(descriptorType + 1))
+               {
+                       context.getTestContext().getLog() << tcu::TestLog::Message << "- " << getDescriptorTypeName(descriptorType) << tcu::TestLog::EndMessage;
+
+                       const VkDescriptorPoolSize                                      descriptorPoolSize =
+                       {
+                               descriptorType,                                                                                         // type
+                               params.poolDescriptorCount,                                                                     // descriptorCount
+                       };
+
+                       const VkDescriptorPoolCreateInfo                        descriptorPoolCreateInfo =
+                       {
+                               VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,                          // VkStructureType                sType;
+                               DE_NULL,                                                                                                        // const void*                    pNext;
+                               (VkDescriptorPoolCreateFlags)0,                                                         // VkDescriptorPoolCreateFlags    flags;
+                               params.poolMaxSets,                                                                                     // uint32_t                       maxSets;
+                               1u,                                                                                                                     // uint32_t                       poolSizeCount;
+                               &descriptorPoolSize,                                                                            // const VkDescriptorPoolSize*    pPoolSizes;
+                       };
+
+                       const Unique<VkDescriptorPool>                          descriptorPool(createDescriptorPool(vkd, device, &descriptorPoolCreateInfo));
+
+                       const VkDescriptorSetLayoutBinding                      descriptorSetLayoutBinding =
+                       {
+                               0u,                                                                                                                     // uint32_t              binding;
+                               descriptorType,                                                                                         // VkDescriptorType      descriptorType;
+                               params.bindingDescriptorCount,                                                          // uint32_t              descriptorCount;
+                               VK_SHADER_STAGE_ALL,                                                                            // VkShaderStageFlags    stageFlags;
+                               DE_NULL,                                                                                                        // const VkSampler*      pImmutableSamplers;
+                       };
+
+                       const vector<VkDescriptorSetLayoutBinding>      descriptorSetLayoutBindings (params.bindingCount, descriptorSetLayoutBinding);
+                       const VkDescriptorSetLayoutCreateInfo           descriptorSetLayoutInfo =
+                       {
+                               VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,            // VkStructureType                        sType;
+                               DE_NULL,                                                                                                        // const void*                            pNext;
+                               (VkDescriptorSetLayoutCreateFlags)0,                                            // VkDescriptorSetLayoutCreateFlags       flags;
+                               static_cast<deUint32>(descriptorSetLayoutBindings.size()),      // uint32_t                               bindingCount;
+                               &descriptorSetLayoutBindings[0],                                                        // const VkDescriptorSetLayoutBinding*    pBindings;
+                       };
+
+                       const Unique<VkDescriptorSetLayout>                     descriptorSetLayout     (createDescriptorSetLayout(vkd, device, &descriptorSetLayoutInfo));
+                       const vector<VkDescriptorSetLayout>                     rawSetLayouts           (params.descriptorSetCount, *descriptorSetLayout);
+                       vector<VkDescriptorSet>                                         rawDescriptorSets       (params.descriptorSetCount, DE_NULL);
+
+                       const VkDescriptorSetAllocateInfo                       descriptorSetAllocateInfo =
+                       {
+                               VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,                         // VkStructureType                 sType;
+                               DE_NULL,                                                                                                        // const void*                     pNext;
+                               *descriptorPool,                                                                                        // VkDescriptorPool                descriptorPool;
+                               static_cast<deUint32>(rawSetLayouts.size()),                            // uint32_t                        descriptorSetCount;
+                               &rawSetLayouts[0],                                                                                      // const VkDescriptorSetLayout*    pSetLayouts;
+                       };
+
+                       const VkResult result = vkd.allocateDescriptorSets(device, &descriptorSetAllocateInfo, &rawDescriptorSets[0]);
+
+                       if (result != VK_SUCCESS)
+                       {
+                               ++numErrorsReturned;
+
+                               if (expectOutOfPoolMemoryError && result != VK_ERROR_OUT_OF_POOL_MEMORY_KHR)
+                                       return tcu::TestStatus::fail("Expected VK_ERROR_OUT_OF_POOL_MEMORY_KHR but got " + string(getResultName(result)) + " instead");
+                       }
+                       else
+                               context.getTestContext().getLog() << tcu::TestLog::Message << "  Allocation was successful anyway" << tcu::TestLog::EndMessage;
+               }
+       }
+
+       if (numErrorsReturned == 0u)
+               return tcu::TestStatus::pass("Not validated");
+       else
+               return tcu::TestStatus::pass("Pass");
+}
+
 } // anonymous
 
 tcu::TestCaseGroup* createDescriptorPoolTests (tcu::TestContext& testCtx)
@@ -159,6 +272,10 @@ tcu::TestCaseGroup* createDescriptorPoolTests (tcu::TestContext& testCtx)
                                        "repeated_reset_long",
                                        "Test many cycles of vkAllocateDescriptorSets and vkResetDescriptorPool",
                                        resetDescriptorPoolTest, numIterationsHigh);
+       addFunctionCase(descriptorPoolTests.get(),
+                                       "out_of_pool_memory",
+                                       "Test that when we run out of descriptors a correct error code is returned",
+                                       outOfPoolMemoryTest);
 
        return descriptorPoolTests.release();
 }
index 77de38a..c253ece 100644 (file)
@@ -631,6 +631,72 @@ tcu::TestStatus createDeviceWithVariousQueueCountsTest (Context& context)
        return tcu::TestStatus::pass("Pass");
 }
 
+Move<VkInstance> createInstanceWithExtension (const PlatformInterface& vkp, const char* extensionName)
+{
+       const vector<VkExtensionProperties>     instanceExts    = enumerateInstanceExtensionProperties(vkp, DE_NULL);
+       vector<string>                                          enabledExts;
+
+       if (!isExtensionSupported(instanceExts, RequiredExtension(extensionName)))
+               TCU_THROW(NotSupportedError, (string(extensionName) + " is not supported").c_str());
+
+       enabledExts.push_back(extensionName);
+
+       return createDefaultInstance(vkp, vector<string>() /* layers */, enabledExts);
+}
+
+tcu::TestStatus createDeviceFeatures2Test (Context& context)
+{
+       const PlatformInterface&                vkp                                             = context.getPlatformInterface();
+       const Unique<VkInstance>                instance                                (createInstanceWithExtension(vkp, "VK_KHR_get_physical_device_properties2"));
+       const InstanceDriver                    vki                                             (vkp, instance.get());
+       const VkPhysicalDevice                  physicalDevice                  = chooseDevice(vki, instance.get(), context.getTestContext().getCommandLine());
+       const deUint32                                  queueFamilyIndex                = 0;
+       const deUint32                                  queueCount                              = 1;
+       const deUint32                                  queueIndex                              = 0;
+       const float                                             queuePriority                   = 1.0f;
+
+       VkPhysicalDeviceFeatures2KHR    enabledFeatures;
+       const VkDeviceQueueCreateInfo   deviceQueueCreateInfo   =
+       {
+               VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
+               DE_NULL,
+               (VkDeviceQueueCreateFlags)0u,
+               queueFamilyIndex,
+               queueCount,
+               &queuePriority,
+       };
+       const VkDeviceCreateInfo                deviceCreateInfo        =
+       {
+               VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
+               &enabledFeatures,
+               (VkDeviceCreateFlags)0u,
+               1,
+               &deviceQueueCreateInfo,
+               0,
+               DE_NULL,
+               0,
+               DE_NULL,
+               DE_NULL,
+       };
+
+       // Populate enabledFeatures
+       enabledFeatures.sType           = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR;
+       enabledFeatures.pNext           = DE_NULL;
+
+       vki.getPhysicalDeviceFeatures2KHR(physicalDevice, &enabledFeatures);
+
+       {
+               const Unique<VkDevice>  device          (createDevice(vki, physicalDevice, &deviceCreateInfo));
+               const DeviceDriver              vkd                     (vki, device.get());
+               VkQueue                                 queue;
+
+               vkd.getDeviceQueue(device.get(), queueFamilyIndex, queueIndex, &queue);
+               VK_CHECK(vkd.queueWaitIdle(queue));
+       }
+
+       return tcu::TestStatus::pass("Pass");
+}
+
 } // anonymous
 
 tcu::TestCaseGroup* createDeviceInitializationTests (tcu::TestContext& testCtx)
@@ -645,6 +711,7 @@ tcu::TestCaseGroup* createDeviceInitializationTests (tcu::TestContext& testCtx)
        addFunctionCase(deviceInitializationTests.get(), "create_multiple_devices",                                     "", createMultipleDevicesTest);
        addFunctionCase(deviceInitializationTests.get(), "create_device_unsupported_extensions",        "", createDeviceWithUnsupportedExtensionsTest);
        addFunctionCase(deviceInitializationTests.get(), "create_device_various_queue_counts",          "", createDeviceWithVariousQueueCountsTest);
+       addFunctionCase(deviceInitializationTests.get(), "create_device_features2",                                     "", createDeviceFeatures2Test);
 
        return deviceInitializationTests.release();
 }
index 397950f..ae724ca 100644 (file)
@@ -95,6 +95,11 @@ enum LimitType
 #define LIMIT(_X_)             DE_OFFSET_OF(VkPhysicalDeviceLimits, _X_), (const char*)(#_X_)
 #define FEATURE(_X_)   DE_OFFSET_OF(VkPhysicalDeviceFeatures, _X_)
 
+inline bool isExtensionSupported (const vector<string>& extensionStrings, const string& extensionName)
+{
+       return de::contains(extensionStrings.begin(), extensionStrings.end(), extensionName);
+}
+
 bool validateFeatureLimits(VkPhysicalDeviceProperties* properties, VkPhysicalDeviceFeatures* features, TestLog& log)
 {
        bool                                            limitsOk        = true;
@@ -650,6 +655,7 @@ void checkInstanceExtensions (tcu::ResultCollector& results, const vector<string
                "VK_KHR_win32_surface",
                "VK_KHR_xcb_surface",
                "VK_KHR_xlib_surface",
+               "VK_KHR_get_physical_device_properties2",
        };
 
        checkKhrExtensions(results, extensions, DE_LENGTH_OF_ARRAY(s_allowedInstanceKhrExtensions), s_allowedInstanceKhrExtensions);
@@ -658,14 +664,16 @@ void checkInstanceExtensions (tcu::ResultCollector& results, const vector<string
 
 void checkDeviceExtensions (tcu::ResultCollector& results, const vector<string>& extensions)
 {
-       static const char* s_allowedInstanceKhrExtensions[] =
+       static const char* s_allowedDeviceKhrExtensions[] =
        {
                "VK_KHR_swapchain",
                "VK_KHR_display_swapchain",
-               "VK_KHR_sampler_mirror_clamp_to_edge"
+               "VK_KHR_sampler_mirror_clamp_to_edge",
+               "VK_KHR_shader_draw_parameters",
+               "VK_KHR_maintenance1",
        };
 
-       checkKhrExtensions(results, extensions, DE_LENGTH_OF_ARRAY(s_allowedInstanceKhrExtensions), s_allowedInstanceKhrExtensions);
+       checkKhrExtensions(results, extensions, DE_LENGTH_OF_ARRAY(s_allowedDeviceKhrExtensions), s_allowedDeviceKhrExtensions);
        checkDuplicateExtensions(results, extensions);
 }
 
@@ -1769,13 +1777,24 @@ void createFormatTests (tcu::TestCaseGroup* testGroup)
        addFunctionCase(testGroup, "compressed_formats",        "",     testCompressedFormatsSupported);
 }
 
-VkImageUsageFlags getValidImageUsageFlags (VkFormat, VkFormatFeatureFlags supportedFeatures)
+VkImageUsageFlags getValidImageUsageFlags (const VkFormatFeatureFlags supportedFeatures, const bool useKhrMaintenance1Semantics)
 {
        VkImageUsageFlags       flags   = (VkImageUsageFlags)0;
 
-       // If format is supported at all, it must be valid transfer src+dst
-       if (supportedFeatures != 0)
-               flags |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT|VK_IMAGE_USAGE_TRANSFER_DST_BIT;
+       if (useKhrMaintenance1Semantics)
+       {
+               if ((supportedFeatures & VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR) != 0)
+                       flags |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
+
+               if ((supportedFeatures & VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR) != 0)
+                       flags |= VK_IMAGE_USAGE_TRANSFER_DST_BIT;
+       }
+       else
+       {
+               // If format is supported at all, it must be valid transfer src+dst
+               if (supportedFeatures != 0)
+                       flags |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT|VK_IMAGE_USAGE_TRANSFER_DST_BIT;
+       }
 
        if ((supportedFeatures & VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT) != 0)
                flags |= VK_IMAGE_USAGE_SAMPLED_BIT;
@@ -1958,38 +1977,83 @@ VkSampleCountFlags getRequiredOptimalTilingSampleCounts (const VkPhysicalDeviceL
 
 struct ImageFormatPropertyCase
 {
+       typedef tcu::TestStatus (*Function) (Context& context, const VkFormat format, const VkImageType imageType, const VkImageTiling tiling);
+
+       Function                testFunction;
        VkFormat                format;
        VkImageType             imageType;
        VkImageTiling   tiling;
 
-       ImageFormatPropertyCase (VkFormat format_, VkImageType imageType_, VkImageTiling tiling_)
-               : format        (format_)
-               , imageType     (imageType_)
-               , tiling        (tiling_)
+       ImageFormatPropertyCase (Function testFunction_, VkFormat format_, VkImageType imageType_, VkImageTiling tiling_)
+               : testFunction  (testFunction_)
+               , format                (format_)
+               , imageType             (imageType_)
+               , tiling                (tiling_)
        {}
 
        ImageFormatPropertyCase (void)
-               : format        (VK_FORMAT_UNDEFINED)
-               , imageType     (VK_IMAGE_TYPE_LAST)
-               , tiling        (VK_IMAGE_TILING_LAST)
+               : testFunction  ((Function)DE_NULL)
+               , format                (VK_FORMAT_UNDEFINED)
+               , imageType             (VK_IMAGE_TYPE_LAST)
+               , tiling                (VK_IMAGE_TILING_LAST)
        {}
 };
 
-tcu::TestStatus imageFormatProperties (Context& context, ImageFormatPropertyCase params)
+tcu::TestStatus execImageFormatTest (Context& context, ImageFormatPropertyCase testCase)
+{
+       return testCase.testFunction(context, testCase.format, testCase.imageType, testCase.tiling);
+}
+
+void createImageFormatTypeTilingTests (tcu::TestCaseGroup* testGroup, ImageFormatPropertyCase params)
+{
+       DE_ASSERT(params.format == VK_FORMAT_UNDEFINED);
+
+       for (deUint32 formatNdx = VK_FORMAT_UNDEFINED+1; formatNdx < VK_CORE_FORMAT_LAST; ++formatNdx)
+       {
+               const VkFormat          format                  = (VkFormat)formatNdx;
+               const char* const       enumName                = getFormatName(format);
+               const string            caseName                = de::toLower(string(enumName).substr(10));
+
+               params.format = format;
+
+               addFunctionCase(testGroup, caseName, enumName, execImageFormatTest, params);
+       }
+}
+
+void createImageFormatTypeTests (tcu::TestCaseGroup* testGroup, ImageFormatPropertyCase params)
+{
+       DE_ASSERT(params.tiling == VK_IMAGE_TILING_LAST);
+
+       testGroup->addChild(createTestGroup(testGroup->getTestContext(), "optimal",     "",     createImageFormatTypeTilingTests, ImageFormatPropertyCase(params.testFunction, VK_FORMAT_UNDEFINED, params.imageType, VK_IMAGE_TILING_OPTIMAL)));
+       testGroup->addChild(createTestGroup(testGroup->getTestContext(), "linear",      "",     createImageFormatTypeTilingTests, ImageFormatPropertyCase(params.testFunction, VK_FORMAT_UNDEFINED, params.imageType, VK_IMAGE_TILING_LINEAR)));
+}
+
+void createImageFormatTests (tcu::TestCaseGroup* testGroup, ImageFormatPropertyCase::Function testFunction)
+{
+       testGroup->addChild(createTestGroup(testGroup->getTestContext(), "1d", "", createImageFormatTypeTests, ImageFormatPropertyCase(testFunction, VK_FORMAT_UNDEFINED, VK_IMAGE_TYPE_1D, VK_IMAGE_TILING_LAST)));
+       testGroup->addChild(createTestGroup(testGroup->getTestContext(), "2d", "", createImageFormatTypeTests, ImageFormatPropertyCase(testFunction, VK_FORMAT_UNDEFINED, VK_IMAGE_TYPE_2D, VK_IMAGE_TILING_LAST)));
+       testGroup->addChild(createTestGroup(testGroup->getTestContext(), "3d", "", createImageFormatTypeTests, ImageFormatPropertyCase(testFunction, VK_FORMAT_UNDEFINED, VK_IMAGE_TYPE_3D, VK_IMAGE_TILING_LAST)));
+}
+
+tcu::TestStatus imageFormatProperties (Context& context, const VkFormat format, const VkImageType imageType, const VkImageTiling tiling)
 {
        TestLog&                                                log                                     = context.getTestContext().getLog();
-       const VkFormat                                  format                          = params.format;
-       const VkImageType                               imageType                       = params.imageType;
-       const VkImageTiling                             tiling                          = params.tiling;
        const VkPhysicalDeviceFeatures& deviceFeatures          = context.getDeviceFeatures();
        const VkPhysicalDeviceLimits&   deviceLimits            = context.getDeviceProperties().limits;
        const VkFormatProperties                formatProperties        = getPhysicalDeviceFormatProperties(context.getInstanceInterface(), context.getPhysicalDevice(), format);
+       const bool                                              hasKhrMaintenance1      = isExtensionSupported(context.getDeviceExtensions(), "VK_KHR_maintenance1");
 
        const VkFormatFeatureFlags              supportedFeatures       = tiling == VK_IMAGE_TILING_LINEAR ? formatProperties.linearTilingFeatures : formatProperties.optimalTilingFeatures;
-       const VkImageUsageFlags                 usageFlagSet            = getValidImageUsageFlags(format, supportedFeatures);
+       const VkImageUsageFlags                 usageFlagSet            = getValidImageUsageFlags(supportedFeatures, hasKhrMaintenance1);
 
        tcu::ResultCollector                    results                         (log, "ERROR: ");
 
+       if (hasKhrMaintenance1 && (supportedFeatures & VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT) != 0)
+       {
+               results.check((supportedFeatures & (VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR | VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR)) != 0,
+                                         "A sampled image format must have VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR and VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR format feature flags set");
+       }
+
        for (VkImageUsageFlags curUsageFlags = 0; curUsageFlags <= usageFlagSet; curUsageFlags++)
        {
                if ((curUsageFlags & ~usageFlagSet) != 0 ||
@@ -2120,35 +2184,369 @@ tcu::TestStatus imageFormatProperties (Context& context, ImageFormatPropertyCase
        return tcu::TestStatus(results.getResult(), results.getMessage());
 }
 
-void createImageFormatTypeTilingTests (tcu::TestCaseGroup* testGroup, ImageFormatPropertyCase params)
+// VK_KHR_get_physical_device_properties2
+
+Move<VkInstance> createInstanceWithExtension (const PlatformInterface& vkp, const char* extensionName)
 {
-       DE_ASSERT(params.format == VK_FORMAT_UNDEFINED);
+       const vector<VkExtensionProperties>     instanceExts    = enumerateInstanceExtensionProperties(vkp, DE_NULL);
+       vector<string>                                          enabledExts;
 
-       for (deUint32 formatNdx = VK_FORMAT_UNDEFINED+1; formatNdx < VK_CORE_FORMAT_LAST; ++formatNdx)
+       if (!isExtensionSupported(instanceExts, RequiredExtension(extensionName)))
+               TCU_THROW(NotSupportedError, (string(extensionName) + " is not supported").c_str());
+
+       enabledExts.push_back(extensionName);
+
+       return createDefaultInstance(vkp, vector<string>() /* layers */, enabledExts);
+}
+
+tcu::TestStatus deviceFeatures2 (Context& context)
+{
+       const PlatformInterface&                vkp                     = context.getPlatformInterface();
+       const Unique<VkInstance>                instance        (createInstanceWithExtension(vkp, "VK_KHR_get_physical_device_properties2"));
+       const InstanceDriver                    vki                     (vkp, *instance);
+       const vector<VkPhysicalDevice>  devices         = enumeratePhysicalDevices(vki, *instance);
+
+       for (size_t deviceNdx = 0; deviceNdx < devices.size(); ++deviceNdx)
        {
-               const VkFormat          format                  = (VkFormat)formatNdx;
-               const char* const       enumName                = getFormatName(format);
-               const string            caseName                = de::toLower(string(enumName).substr(10));
+               VkPhysicalDeviceFeatures                coreFeatures;
+               VkPhysicalDeviceFeatures2KHR    extFeatures;
 
-               params.format = format;
+               deMemset(&coreFeatures, 0xcd, sizeof(coreFeatures));
+               deMemset(&extFeatures.features, 0xcd, sizeof(extFeatures.features));
+
+               extFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR;
+               extFeatures.pNext = DE_NULL;
+
+               vki.getPhysicalDeviceFeatures(devices[deviceNdx], &coreFeatures);
+               vki.getPhysicalDeviceFeatures2KHR(devices[deviceNdx], &extFeatures);
 
-               addFunctionCase(testGroup, caseName, enumName, imageFormatProperties, params);
+               TCU_CHECK(extFeatures.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR);
+               TCU_CHECK(extFeatures.pNext == DE_NULL);
+
+               if (deMemCmp(&coreFeatures, &extFeatures.features, sizeof(VkPhysicalDeviceFeatures)) != 0)
+                       TCU_FAIL("Mismatch between features reported by vkGetPhysicalDeviceFeatures and vkGetPhysicalDeviceFeatures2KHR");
        }
+
+       return tcu::TestStatus::pass("Querying device features succeeded");
 }
 
-void createImageFormatTypeTests (tcu::TestCaseGroup* testGroup, ImageFormatPropertyCase params)
+tcu::TestStatus deviceProperties2 (Context& context)
 {
-       DE_ASSERT(params.tiling == VK_IMAGE_TILING_LAST);
+       const PlatformInterface&                vkp                     = context.getPlatformInterface();
+       const Unique<VkInstance>                instance        (createInstanceWithExtension(vkp, "VK_KHR_get_physical_device_properties2"));
+       const InstanceDriver                    vki                     (vkp, *instance);
+       const vector<VkPhysicalDevice>  devices         = enumeratePhysicalDevices(vki, *instance);
+
+       for (size_t deviceNdx = 0; deviceNdx < devices.size(); ++deviceNdx)
+       {
+               VkPhysicalDeviceProperties              coreProperties;
+               VkPhysicalDeviceProperties2KHR  extProperties;
+
+               deMemset(&coreProperties, 0xcd, sizeof(VkPhysicalDeviceProperties));
+               deMemset(&extProperties, 0xcd, sizeof(VkPhysicalDeviceProperties2KHR));
+
+               extProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR;
+               extProperties.pNext = DE_NULL;
 
-       testGroup->addChild(createTestGroup(testGroup->getTestContext(), "optimal",     "",     createImageFormatTypeTilingTests, ImageFormatPropertyCase(VK_FORMAT_UNDEFINED, params.imageType, VK_IMAGE_TILING_OPTIMAL)));
-       testGroup->addChild(createTestGroup(testGroup->getTestContext(), "linear",      "",     createImageFormatTypeTilingTests, ImageFormatPropertyCase(VK_FORMAT_UNDEFINED, params.imageType, VK_IMAGE_TILING_LINEAR)));
+               vki.getPhysicalDeviceProperties(devices[deviceNdx], &coreProperties);
+               vki.getPhysicalDeviceProperties2KHR(devices[deviceNdx], &extProperties);
+
+               TCU_CHECK(extProperties.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR);
+               TCU_CHECK(extProperties.pNext == DE_NULL);
+
+               if (deMemCmp(&coreProperties, &extProperties.properties, sizeof(VkPhysicalDeviceProperties)) != 0)
+                       TCU_FAIL("Mismatch between properties reported by vkGetPhysicalDeviceProperties and vkGetPhysicalDeviceProperties2KHR");
+       }
+
+       return tcu::TestStatus::pass("Querying device properties succeeded");
 }
 
-void createImageFormatTests (tcu::TestCaseGroup* testGroup)
+tcu::TestStatus deviceFormatProperties2 (Context& context)
 {
-       testGroup->addChild(createTestGroup(testGroup->getTestContext(), "1d", "", createImageFormatTypeTests, ImageFormatPropertyCase(VK_FORMAT_UNDEFINED, VK_IMAGE_TYPE_1D, VK_IMAGE_TILING_LAST)));
-       testGroup->addChild(createTestGroup(testGroup->getTestContext(), "2d", "", createImageFormatTypeTests, ImageFormatPropertyCase(VK_FORMAT_UNDEFINED, VK_IMAGE_TYPE_2D, VK_IMAGE_TILING_LAST)));
-       testGroup->addChild(createTestGroup(testGroup->getTestContext(), "3d", "", createImageFormatTypeTests, ImageFormatPropertyCase(VK_FORMAT_UNDEFINED, VK_IMAGE_TYPE_3D, VK_IMAGE_TILING_LAST)));
+       const PlatformInterface&                vkp                     = context.getPlatformInterface();
+       const Unique<VkInstance>                instance        (createInstanceWithExtension(vkp, "VK_KHR_get_physical_device_properties2"));
+       const InstanceDriver                    vki                     (vkp, *instance);
+       const vector<VkPhysicalDevice>  devices         = enumeratePhysicalDevices(vki, *instance);
+
+       for (size_t deviceNdx = 0; deviceNdx < devices.size(); ++deviceNdx)
+       {
+               const VkPhysicalDevice  physicalDevice  = devices[deviceNdx];
+
+               for (int formatNdx = 0; formatNdx < VK_CORE_FORMAT_LAST; ++formatNdx)
+               {
+                       const VkFormat                  format                  = (VkFormat)formatNdx;
+                       VkFormatProperties              coreProperties;
+                       VkFormatProperties2KHR  extProperties;
+
+                       deMemset(&coreProperties, 0xcd, sizeof(VkFormatProperties));
+                       deMemset(&extProperties, 0xcd, sizeof(VkFormatProperties2KHR));
+
+                       extProperties.sType     = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR;
+                       extProperties.pNext = DE_NULL;
+
+                       vki.getPhysicalDeviceFormatProperties(physicalDevice, format, &coreProperties);
+                       vki.getPhysicalDeviceFormatProperties2KHR(physicalDevice, format, &extProperties);
+
+                       TCU_CHECK(extProperties.sType == VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR);
+                       TCU_CHECK(extProperties.pNext == DE_NULL);
+
+               if (deMemCmp(&coreProperties, &extProperties.formatProperties, sizeof(VkFormatProperties)) != 0)
+                       TCU_FAIL("Mismatch between format properties reported by vkGetPhysicalDeviceFormatProperties and vkGetPhysicalDeviceFormatProperties2KHR");
+               }
+       }
+
+       return tcu::TestStatus::pass("Querying device format properties succeeded");
+}
+
+tcu::TestStatus deviceQueueFamilyProperties2 (Context& context)
+{
+       const PlatformInterface&                vkp                     = context.getPlatformInterface();
+       const Unique<VkInstance>                instance        (createInstanceWithExtension(vkp, "VK_KHR_get_physical_device_properties2"));
+       const InstanceDriver                    vki                     (vkp, *instance);
+       const vector<VkPhysicalDevice>  devices         = enumeratePhysicalDevices(vki, *instance);
+
+       for (size_t deviceNdx = 0; deviceNdx < devices.size(); ++deviceNdx)
+       {
+               const VkPhysicalDevice  physicalDevice                  = devices[deviceNdx];
+               deUint32                                numCoreQueueFamilies    = ~0u;
+               deUint32                                numExtQueueFamilies             = ~0u;
+
+               vki.getPhysicalDeviceQueueFamilyProperties(physicalDevice, &numCoreQueueFamilies, DE_NULL);
+               vki.getPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, &numExtQueueFamilies, DE_NULL);
+
+               TCU_CHECK_MSG(numCoreQueueFamilies == numExtQueueFamilies, "Different number of queue family properties reported");
+               TCU_CHECK(numCoreQueueFamilies > 0);
+
+               {
+                       std::vector<VkQueueFamilyProperties>            coreProperties  (numCoreQueueFamilies);
+                       std::vector<VkQueueFamilyProperties2KHR>        extProperties   (numExtQueueFamilies);
+
+                       deMemset(&coreProperties[0], 0xcd, sizeof(VkQueueFamilyProperties)*numCoreQueueFamilies);
+                       deMemset(&extProperties[0], 0xcd, sizeof(VkQueueFamilyProperties2KHR)*numExtQueueFamilies);
+
+                       for (size_t ndx = 0; ndx < extProperties.size(); ++ndx)
+                       {
+                               extProperties[ndx].sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR;
+                               extProperties[ndx].pNext = DE_NULL;
+                       }
+
+                       vki.getPhysicalDeviceQueueFamilyProperties(physicalDevice, &numCoreQueueFamilies, &coreProperties[0]);
+                       vki.getPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, &numExtQueueFamilies, &extProperties[0]);
+
+                       TCU_CHECK((size_t)numCoreQueueFamilies == coreProperties.size());
+                       TCU_CHECK((size_t)numExtQueueFamilies == extProperties.size());
+                       DE_ASSERT(numCoreQueueFamilies == numExtQueueFamilies);
+
+                       for (size_t ndx = 0; ndx < extProperties.size(); ++ndx)
+                       {
+                               TCU_CHECK(extProperties[ndx].sType == VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR);
+                               TCU_CHECK(extProperties[ndx].pNext == DE_NULL);
+
+                               if (deMemCmp(&coreProperties[ndx], &extProperties[ndx].queueFamilyProperties, sizeof(VkQueueFamilyProperties)) != 0)
+                                       TCU_FAIL("Mismatch between format properties reported by vkGetPhysicalDeviceQueueFamilyProperties and vkGetPhysicalDeviceQueueFamilyProperties2KHR");
+                       }
+               }
+       }
+
+       return tcu::TestStatus::pass("Querying device queue family properties succeeded");
+}
+
+tcu::TestStatus deviceMemoryProperties2 (Context& context)
+{
+       const PlatformInterface&                vkp                     = context.getPlatformInterface();
+       const Unique<VkInstance>                instance        (createInstanceWithExtension(vkp, "VK_KHR_get_physical_device_properties2"));
+       const InstanceDriver                    vki                     (vkp, *instance);
+       const vector<VkPhysicalDevice>  devices         = enumeratePhysicalDevices(vki, *instance);
+
+       for (size_t deviceNdx = 0; deviceNdx < devices.size(); ++deviceNdx)
+       {
+               VkPhysicalDeviceMemoryProperties                coreProperties;
+               VkPhysicalDeviceMemoryProperties2KHR    extProperties;
+
+               deMemset(&coreProperties, 0xcd, sizeof(VkPhysicalDeviceMemoryProperties));
+               deMemset(&extProperties, 0xcd, sizeof(VkPhysicalDeviceMemoryProperties2KHR));
+
+               extProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR;
+               extProperties.pNext = DE_NULL;
+
+               vki.getPhysicalDeviceMemoryProperties(devices[deviceNdx], &coreProperties);
+               vki.getPhysicalDeviceMemoryProperties2KHR(devices[deviceNdx], &extProperties);
+
+               TCU_CHECK(extProperties.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR);
+               TCU_CHECK(extProperties.pNext == DE_NULL);
+
+               if (deMemCmp(&coreProperties, &extProperties.memoryProperties, sizeof(VkPhysicalDeviceMemoryProperties)) != 0)
+                       TCU_FAIL("Mismatch between properties reported by vkGetPhysicalDeviceMemoryProperties and vkGetPhysicalDeviceMemoryProperties2KHR");
+       }
+
+       return tcu::TestStatus::pass("Querying device memory properties succeeded");
+}
+
+tcu::TestStatus imageFormatProperties2 (Context& context, const VkFormat format, const VkImageType imageType, const VkImageTiling tiling)
+{
+       TestLog&                                                log                             = context.getTestContext().getLog();
+
+       const PlatformInterface&                vkp                             = context.getPlatformInterface();
+       const Unique<VkInstance>                instance                (createInstanceWithExtension(vkp, "VK_KHR_get_physical_device_properties2"));
+       const InstanceDriver                    vki                             (vkp, *instance);
+       const vector<VkPhysicalDevice>  devices                 = enumeratePhysicalDevices(vki, *instance);
+
+       const VkImageUsageFlags                 allUsageFlags   = VK_IMAGE_USAGE_TRANSFER_SRC_BIT
+                                                                                                       | VK_IMAGE_USAGE_TRANSFER_DST_BIT
+                                                                                                       | VK_IMAGE_USAGE_SAMPLED_BIT
+                                                                                                       | VK_IMAGE_USAGE_STORAGE_BIT
+                                                                                                       | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
+                                                                                                       | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
+                                                                                                       | VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
+                                                                                                       | VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT;
+       const VkImageCreateFlags                allCreateFlags  = VK_IMAGE_CREATE_SPARSE_BINDING_BIT
+                                                                                                       | VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
+                                                                                                       | VK_IMAGE_CREATE_SPARSE_ALIASED_BIT
+                                                                                                       | VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
+                                                                                                       | VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT;
+
+       for (size_t deviceNdx = 0; deviceNdx < devices.size(); ++deviceNdx)
+       {
+               const VkPhysicalDevice  physicalDevice  = devices[deviceNdx];
+
+               for (VkImageUsageFlags curUsageFlags = 0; curUsageFlags <= allUsageFlags; curUsageFlags++)
+               {
+                       for (VkImageCreateFlags curCreateFlags = 0; curCreateFlags <= allCreateFlags; curCreateFlags++)
+                       {
+                               const VkPhysicalDeviceImageFormatInfo2KHR       imageFormatInfo =
+                               {
+                                       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR,
+                                       DE_NULL,
+                                       format,
+                                       imageType,
+                                       tiling,
+                                       curUsageFlags,
+                                       curCreateFlags
+                               };
+
+                               VkImageFormatProperties                                         coreProperties;
+                               VkImageFormatProperties2KHR                                     extProperties;
+                               VkResult                                                                        coreResult;
+                               VkResult                                                                        extResult;
+
+                               deMemset(&coreProperties, 0xcd, sizeof(VkImageFormatProperties));
+                               deMemset(&extProperties, 0xcd, sizeof(VkImageFormatProperties2KHR));
+
+                               extProperties.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR;
+                               extProperties.pNext = DE_NULL;
+
+                               coreResult      = vki.getPhysicalDeviceImageFormatProperties(physicalDevice, imageFormatInfo.format, imageFormatInfo.type, imageFormatInfo.tiling, imageFormatInfo.usage, imageFormatInfo.flags, &coreProperties);
+                               extResult       = vki.getPhysicalDeviceImageFormatProperties2KHR(physicalDevice, &imageFormatInfo, &extProperties);
+
+                               TCU_CHECK(extProperties.sType == VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR);
+                               TCU_CHECK(extProperties.pNext == DE_NULL);
+
+                               if ((coreResult != extResult) ||
+                                       (deMemCmp(&coreProperties, &extProperties.imageFormatProperties, sizeof(VkImageFormatProperties)) != 0))
+                               {
+                                       log << TestLog::Message << "ERROR: device " << deviceNdx << ": mismatch with query " << imageFormatInfo << TestLog::EndMessage
+                                               << TestLog::Message << "vkGetPhysicalDeviceImageFormatProperties() returned " << coreResult << ", " << coreProperties << TestLog::EndMessage
+                                               << TestLog::Message << "vkGetPhysicalDeviceImageFormatProperties2KHR() returned " << extResult << ", " << extProperties << TestLog::EndMessage;
+                                       TCU_FAIL("Mismatch between image format properties reported by vkGetPhysicalDeviceImageFormatProperties and vkGetPhysicalDeviceImageFormatProperties2KHR");
+                               }
+                       }
+               }
+       }
+
+       return tcu::TestStatus::pass("Querying image format properties succeeded");
+}
+
+tcu::TestStatus sparseImageFormatProperties2 (Context& context, const VkFormat format, const VkImageType imageType, const VkImageTiling tiling)
+{
+       TestLog&                                                log                             = context.getTestContext().getLog();
+
+       const PlatformInterface&                vkp                             = context.getPlatformInterface();
+       const Unique<VkInstance>                instance                (createInstanceWithExtension(vkp, "VK_KHR_get_physical_device_properties2"));
+       const InstanceDriver                    vki                             (vkp, *instance);
+       const vector<VkPhysicalDevice>  devices                 = enumeratePhysicalDevices(vki, *instance);
+
+       const VkImageUsageFlags                 allUsageFlags   = VK_IMAGE_USAGE_TRANSFER_SRC_BIT
+                                                                                                       | VK_IMAGE_USAGE_TRANSFER_DST_BIT
+                                                                                                       | VK_IMAGE_USAGE_SAMPLED_BIT
+                                                                                                       | VK_IMAGE_USAGE_STORAGE_BIT
+                                                                                                       | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
+                                                                                                       | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
+                                                                                                       | VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
+                                                                                                       | VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT;
+
+       for (size_t deviceNdx = 0; deviceNdx < devices.size(); ++deviceNdx)
+       {
+               const VkPhysicalDevice  physicalDevice  = devices[deviceNdx];
+
+               for (deUint32 sampleCount = 1; sampleCount <= 64; sampleCount++)
+               {
+                       const VkSampleCountFlagBits     sampleCountFlagBit      = (VkSampleCountFlagBits)(1u<<sampleCount);
+
+                       for (VkImageUsageFlags curUsageFlags = 0; curUsageFlags <= allUsageFlags; curUsageFlags++)
+                       {
+                               const VkPhysicalDeviceSparseImageFormatInfo2KHR imageFormatInfo =
+                               {
+                                       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR,
+                                       DE_NULL,
+                                       format,
+                                       imageType,
+                                       sampleCountFlagBit,
+                                       curUsageFlags,
+                                       tiling,
+                               };
+
+                               deUint32                                                                                numCoreProperties       = ~0u;
+                               deUint32                                                                                numExtProperties        = ~0u;
+
+                               // Query count
+                               vki.getPhysicalDeviceSparseImageFormatProperties(physicalDevice, imageFormatInfo.format, imageFormatInfo.type, imageFormatInfo.samples, imageFormatInfo.usage, imageFormatInfo.tiling, &numCoreProperties, DE_NULL);
+                               vki.getPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, &imageFormatInfo, &numExtProperties, DE_NULL);
+
+                               if (numCoreProperties != numExtProperties)
+                               {
+                                       log << TestLog::Message << "ERROR: device " << deviceNdx << ": different number of properties reported for " << imageFormatInfo << TestLog::EndMessage;
+                                       TCU_FAIL("Mismatch in reported property count");
+                               }
+
+                               if (numCoreProperties > 0)
+                               {
+                                       std::vector<VkSparseImageFormatProperties>              coreProperties  (numCoreProperties);
+                                       std::vector<VkSparseImageFormatProperties2KHR>  extProperties   (numExtProperties);
+
+                                       deMemset(&coreProperties[0], 0xcd, sizeof(VkSparseImageFormatProperties)*numCoreProperties);
+                                       deMemset(&extProperties[0], 0xcd, sizeof(VkSparseImageFormatProperties2KHR)*numExtProperties);
+
+                                       for (deUint32 ndx = 0; ndx < numExtProperties; ++ndx)
+                                       {
+                                               extProperties[ndx].sType = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR;
+                                               extProperties[ndx].pNext = DE_NULL;
+                                       }
+
+                                       vki.getPhysicalDeviceSparseImageFormatProperties(physicalDevice, imageFormatInfo.format, imageFormatInfo.type, imageFormatInfo.samples, imageFormatInfo.usage, imageFormatInfo.tiling, &numCoreProperties, &coreProperties[0]);
+                                       vki.getPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, &imageFormatInfo, &numExtProperties, &extProperties[0]);
+
+                                       TCU_CHECK((size_t)numCoreProperties == coreProperties.size());
+                                       TCU_CHECK((size_t)numExtProperties == extProperties.size());
+
+                                       for (deUint32 ndx = 0; ndx < numCoreProperties; ++ndx)
+                                       {
+                                               TCU_CHECK(extProperties[ndx].sType == VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR);
+                                               TCU_CHECK(extProperties[ndx].pNext == DE_NULL);
+
+                                               if ((deMemCmp(&coreProperties[ndx], &extProperties[ndx].properties, sizeof(VkSparseImageFormatProperties)) != 0))
+                                               {
+                                                       log << TestLog::Message << "ERROR: device " << deviceNdx << ": mismatch with query " << imageFormatInfo << " property " << ndx << TestLog::EndMessage
+                                                               << TestLog::Message << "vkGetPhysicalDeviceSparseImageFormatProperties() returned " << coreProperties[ndx] << TestLog::EndMessage
+                                                               << TestLog::Message << "vkGetPhysicalDeviceSparseImageFormatProperties2KHR() returned " << extProperties[ndx] << TestLog::EndMessage;
+                                                       TCU_FAIL("Mismatch between image format properties reported by vkGetPhysicalDeviceSparseImageFormatProperties and vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+
+       return tcu::TestStatus::pass("Querying sparse image format properties succeeded");
 }
 
 } // anonymous
@@ -2181,7 +2579,22 @@ tcu::TestCaseGroup* createFeatureInfoTests (tcu::TestContext& testCtx)
        }
 
        infoTests->addChild(createTestGroup(testCtx, "format_properties",               "VkGetPhysicalDeviceFormatProperties() Tests",          createFormatTests));
-       infoTests->addChild(createTestGroup(testCtx, "image_format_properties", "VkGetPhysicalDeviceImageFormatProperties() Tests",     createImageFormatTests));
+       infoTests->addChild(createTestGroup(testCtx, "image_format_properties", "VkGetPhysicalDeviceImageFormatProperties() Tests",     createImageFormatTests, imageFormatProperties));
+
+       {
+               de::MovePtr<tcu::TestCaseGroup> extendedPropertiesTests (new tcu::TestCaseGroup(testCtx, "get_physical_device_properties2", "VK_KHR_get_physical_device_properties2"));
+
+               addFunctionCase(extendedPropertiesTests.get(), "features",                                      "Extended Device Features",                                     deviceFeatures2);
+               addFunctionCase(extendedPropertiesTests.get(), "properties",                            "Extended Device Properties",                           deviceProperties2);
+               addFunctionCase(extendedPropertiesTests.get(), "format_properties",                     "Extended Device Format Properties",            deviceFormatProperties2);
+               addFunctionCase(extendedPropertiesTests.get(), "queue_family_properties",       "Extended Device Queue Family Properties",      deviceQueueFamilyProperties2);
+               addFunctionCase(extendedPropertiesTests.get(), "memory_properties",                     "Extended Device Memory Properties",            deviceMemoryProperties2);
+
+               infoTests->addChild(extendedPropertiesTests.release());
+       }
+
+       infoTests->addChild(createTestGroup(testCtx, "image_format_properties2",                "VkGetPhysicalDeviceImageFormatProperties2KHR() Tests",                 createImageFormatTests, imageFormatProperties2));
+       infoTests->addChild(createTestGroup(testCtx, "sparse_image_format_properties2", "VkGetPhysicalDeviceSparseImageFormatProperties2KHR() Tests",   createImageFormatTests, sparseImageFormatProperties2));
 
        return infoTests.release();
 }
index cd556d3..253f727 100644 (file)
@@ -302,6 +302,11 @@ T alignToPowerOfTwo (T value, T align)
        return (value + align - T(1)) & ~(align - T(1));
 }
 
+inline bool hasDeviceExtension (Context& context, const string& name)
+{
+       return de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), name);
+}
+
 VkDeviceSize getPageTableSize (const PlatformMemoryLimits& limits, VkDeviceSize allocationSize)
 {
        VkDeviceSize    totalSize       = 0;
@@ -317,8 +322,6 @@ VkDeviceSize getPageTableSize (const PlatformMemoryLimits& limits, VkDeviceSize
        return totalSize;
 }
 
-
-
 size_t getCurrentSystemMemoryUsage (const AllocationCallbackRecorder& allocRecoder)
 {
        const size_t                                            systemAllocationOverhead        = sizeof(void*)*2;
@@ -2519,12 +2522,14 @@ tcu::TestStatus allocCallbackFailTest (Context& context, typename Object::Parame
 }
 
 // Determine whether an API call sets the invalid handles to NULL (true) or leaves them undefined or not modified (false)
-template<typename T> inline bool isNullHandleOnAllocationFailure                        (void) { return false; }
-template<>                      inline bool isNullHandleOnAllocationFailure<VkPipeline> (void) { return true;  }
+template<typename T> inline bool isNullHandleOnAllocationFailure                                 (Context&)             { return false; }
+template<>                      inline bool isNullHandleOnAllocationFailure<VkCommandBuffer> (Context& context) { return hasDeviceExtension(context, "VK_KHR_maintenance1"); }
+template<>                      inline bool isNullHandleOnAllocationFailure<VkDescriptorSet> (Context& context) { return hasDeviceExtension(context, "VK_KHR_maintenance1"); }
+template<>                      inline bool isNullHandleOnAllocationFailure<VkPipeline>          (Context&)             { return true;  }
 
-template<typename T> inline bool isPooledObject                                                                 (void) { return false; };
-template<>                      inline bool isPooledObject<VkCommandBuffer>                     (void) { return true;  };
-template<>                      inline bool isPooledObject<VkDescriptorSet>                     (void) { return true;  };
+template<typename T> inline bool isPooledObject                                         (void) { return false; };
+template<>                      inline bool isPooledObject<VkCommandBuffer> (void) { return true;  };
+template<>                      inline bool isPooledObject<VkDescriptorSet> (void) { return true;  };
 
 template<typename Object>
 tcu::TestStatus allocCallbackFailMultipleObjectsTest (Context& context, typename Object::Parameters params)
@@ -2532,7 +2537,7 @@ tcu::TestStatus allocCallbackFailMultipleObjectsTest (Context& context, typename
        typedef SharedPtr<Move<typename Object::Type> > ObjectTypeSp;
 
        static const deUint32   numObjects                      = 4;
-       const bool                              expectNullHandles       = isNullHandleOnAllocationFailure<typename Object::Type>();
+       const bool                              expectNullHandles       = isNullHandleOnAllocationFailure<typename Object::Type>(context);
        deUint32                                numPassingAllocs        = 0;
 
        {
index e7a06c5..2fc7101 100644 (file)
@@ -9,8 +9,12 @@ set(DEQP_VK_DRAW_SRCS
        vktDrawIndirectTest.cpp
        vktDrawInstancedTests.hpp
        vktDrawInstancedTests.cpp
+       vktDrawShaderDrawParametersTests.hpp
+       vktDrawShaderDrawParametersTests.cpp
        vktDrawSimpleTest.hpp
        vktDrawSimpleTest.cpp
+       vktDrawNegativeViewportHeightTests.hpp
+       vktDrawNegativeViewportHeightTests.cpp
        vktDrawBaseClass.hpp
        vktDrawBaseClass.cpp
        vktDrawCreateInfoUtil.hpp
diff --git a/external/vulkancts/modules/vulkan/draw/vktDrawNegativeViewportHeightTests.cpp b/external/vulkancts/modules/vulkan/draw/vktDrawNegativeViewportHeightTests.cpp
new file mode 100644 (file)
index 0000000..01f9c10
--- /dev/null
@@ -0,0 +1,558 @@
+/*------------------------------------------------------------------------
+ * Vulkan Conformance Tests
+ * ------------------------
+ *
+ * Copyright (c) 2016 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *//*!
+ * \file
+ * \brief Negative viewport height (part of VK_KHR_maintenance1)
+ *//*--------------------------------------------------------------------*/
+
+#include "vktDrawNegativeViewportHeightTests.hpp"
+#include "vktDrawCreateInfoUtil.hpp"
+#include "vktDrawImageObjectUtil.hpp"
+#include "vktDrawBufferObjectUtil.hpp"
+#include "vktTestGroupUtil.hpp"
+#include "vktTestCaseUtil.hpp"
+
+#include "vkPrograms.hpp"
+#include "vkTypeUtil.hpp"
+#include "vkImageUtil.hpp"
+
+#include "tcuVector.hpp"
+#include "tcuTextureUtil.hpp"
+#include "tcuImageCompare.hpp"
+
+#include "deSharedPtr.hpp"
+
+namespace vkt
+{
+namespace Draw
+{
+namespace
+{
+using namespace vk;
+using tcu::Vec4;
+using de::SharedPtr;
+using de::MovePtr;
+
+enum Constants
+{
+       WIDTH   = 256,
+       HEIGHT  = WIDTH/2,
+};
+
+struct TestParams
+{
+       VkFrontFace                             frontFace;
+       VkCullModeFlagBits              cullMode;
+};
+
+class NegativeViewportHeightTestInstance : public TestInstance
+{
+public:
+                                                                       NegativeViewportHeightTestInstance      (Context& context, const TestParams& params);
+       tcu::TestStatus                                 iterate                                                         (void);
+       tcu::ConstPixelBufferAccess             draw                                                            (const VkViewport viewport);
+       MovePtr<tcu::TextureLevel>              generateReferenceImage                          (void) const;
+       bool                                                    isCulled                                                        (const VkFrontFace triangleFace) const;
+
+private:
+       const TestParams                                m_params;
+       const VkFormat                                  m_colorAttachmentFormat;
+       SharedPtr<Image>                                m_colorTargetImage;
+       Move<VkImageView>                               m_colorTargetView;
+       SharedPtr<Buffer>                               m_vertexBuffer;
+       Move<VkRenderPass>                              m_renderPass;
+       Move<VkFramebuffer>                             m_framebuffer;
+       Move<VkPipelineLayout>                  m_pipelineLayout;
+       Move<VkPipeline>                                m_pipeline;
+};
+
+NegativeViewportHeightTestInstance::NegativeViewportHeightTestInstance (Context& context, const TestParams& params)
+       : TestInstance                          (context)
+       , m_params                                      (params)
+       , m_colorAttachmentFormat       (VK_FORMAT_R8G8B8A8_UNORM)
+{
+       const DeviceInterface&  vk              = m_context.getDeviceInterface();
+       const VkDevice                  device  = m_context.getDevice();
+
+       // Vertex data
+       {
+               std::vector<Vec4> vertexData;
+
+               // CCW triangle
+               vertexData.push_back(Vec4(-0.8f, -0.6f, 0.0f, 1.0f));   //  0-----2
+               vertexData.push_back(Vec4(-0.8f,  0.6f, 0.0f, 1.0f));   //   |  /
+               vertexData.push_back(Vec4(-0.2f, -0.6f, 0.0f, 1.0f));   //  1|/
+
+               // CW triangle
+               vertexData.push_back(Vec4( 0.2f, -0.6f, 0.0f, 1.0f));   //  0-----1
+               vertexData.push_back(Vec4( 0.8f, -0.6f, 0.0f, 1.0f));   //    \  |
+               vertexData.push_back(Vec4( 0.8f,  0.6f, 0.0f, 1.0f));   //      \|2
+
+               const VkDeviceSize dataSize = vertexData.size() * sizeof(Vec4);
+               m_vertexBuffer = Buffer::createAndAlloc(vk, device, BufferCreateInfo(dataSize, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT),
+                                                                                               m_context.getDefaultAllocator(), MemoryRequirement::HostVisible);
+
+               deMemcpy(m_vertexBuffer->getBoundMemory().getHostPtr(), &vertexData[0], static_cast<std::size_t>(dataSize));
+               flushMappedMemoryRange(vk, device, m_vertexBuffer->getBoundMemory().getMemory(), m_vertexBuffer->getBoundMemory().getOffset(), VK_WHOLE_SIZE);
+       }
+
+       // Render pass
+       {
+               const VkExtent3D                targetImageExtent               = { WIDTH, HEIGHT, 1 };
+               const VkImageUsageFlags targetImageUsageFlags   = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT;
+
+               const ImageCreateInfo   targetImageCreateInfo(
+                       VK_IMAGE_TYPE_2D,                                               // imageType,
+                       m_colorAttachmentFormat,                                // format,
+                       targetImageExtent,                                              // extent,
+                       1u,                                                                             // mipLevels,
+                       1u,                                                                             // arrayLayers,
+                       VK_SAMPLE_COUNT_1_BIT,                                  // samples,
+                       VK_IMAGE_TILING_OPTIMAL,                                // tiling,
+                       targetImageUsageFlags);                                 // usage,
+
+               m_colorTargetImage = Image::createAndAlloc(vk, device, targetImageCreateInfo, m_context.getDefaultAllocator());
+
+               RenderPassCreateInfo    renderPassCreateInfo;
+               renderPassCreateInfo.addAttachment(AttachmentDescription(
+                       m_colorAttachmentFormat,                                // format
+                       VK_SAMPLE_COUNT_1_BIT,                                  // samples
+                       VK_ATTACHMENT_LOAD_OP_LOAD,                             // loadOp
+                       VK_ATTACHMENT_STORE_OP_STORE,                   // storeOp
+                       VK_ATTACHMENT_LOAD_OP_DONT_CARE,                // stencilLoadOp
+                       VK_ATTACHMENT_STORE_OP_DONT_CARE,               // stencilStoreOp
+                       VK_IMAGE_LAYOUT_GENERAL,                                // initialLayout
+                       VK_IMAGE_LAYOUT_GENERAL));                              // finalLayout
+
+               const VkAttachmentReference colorAttachmentReference =
+               {
+                       0u,
+                       VK_IMAGE_LAYOUT_GENERAL
+               };
+
+               renderPassCreateInfo.addSubpass(SubpassDescription(
+                       VK_PIPELINE_BIND_POINT_GRAPHICS,                // pipelineBindPoint
+                       (VkSubpassDescriptionFlags)0,                   // flags
+                       0u,                                                                             // inputAttachmentCount
+                       DE_NULL,                                                                // inputAttachments
+                       1u,                                                                             // colorAttachmentCount
+                       &colorAttachmentReference,                              // colorAttachments
+                       DE_NULL,                                                                // resolveAttachments
+                       AttachmentReference(),                                  // depthStencilAttachment
+                       0u,                                                                             // preserveAttachmentCount
+                       DE_NULL));                                                              // preserveAttachments
+
+               m_renderPass = createRenderPass(vk, device, &renderPassCreateInfo);
+       }
+
+       // Framebuffer
+       {
+               const ImageViewCreateInfo colorTargetViewInfo (m_colorTargetImage->object(), VK_IMAGE_VIEW_TYPE_2D, m_colorAttachmentFormat);
+               m_colorTargetView = createImageView(vk, device, &colorTargetViewInfo);
+
+               std::vector<VkImageView> colorAttachments(1);
+               colorAttachments[0] = *m_colorTargetView;
+
+               const FramebufferCreateInfo     framebufferCreateInfo(*m_renderPass, colorAttachments, WIDTH, HEIGHT, 1);
+               m_framebuffer = createFramebuffer(vk, device, &framebufferCreateInfo);
+       }
+
+       // Vertex input
+
+       const VkVertexInputBindingDescription           vertexInputBindingDescription =
+       {
+               0u,                                                                             // uint32_t             binding;
+               sizeof(Vec4),                                                   // uint32_t             stride;
+               VK_VERTEX_INPUT_RATE_VERTEX,                    // VkVertexInputRate    inputRate;
+       };
+
+       const VkVertexInputAttributeDescription         vertexInputAttributeDescription =
+       {
+               0u,                                                                             // uint32_t    location;
+               0u,                                                                             // uint32_t    binding;
+               VK_FORMAT_R32G32B32A32_SFLOAT,                  // VkFormat    format;
+               0u                                                                              // uint32_t    offset;
+       };
+
+       const PipelineCreateInfo::VertexInputState      vertexInputState = PipelineCreateInfo::VertexInputState(1, &vertexInputBindingDescription,
+                                                                                                                                                                                                               1, &vertexInputAttributeDescription);
+
+       // Graphics pipeline
+
+       const VkRect2D scissor =
+       {
+               { 0,            0               },              // x, y
+               { WIDTH,        HEIGHT  },              // width, height
+       };
+
+       std::vector<VkDynamicState>             dynamicStates;
+       dynamicStates.push_back(VK_DYNAMIC_STATE_VIEWPORT);
+
+       const Unique<VkShaderModule>    vertexModule    (createShaderModule(vk, device, m_context.getBinaryCollection().get("vert"), 0));
+       const Unique<VkShaderModule>    fragmentModule  (createShaderModule(vk, device, m_context.getBinaryCollection().get("frag"), 0));
+
+       const PipelineLayoutCreateInfo  pipelineLayoutCreateInfo;
+       m_pipelineLayout = createPipelineLayout(vk, device, &pipelineLayoutCreateInfo);
+
+       const PipelineCreateInfo::ColorBlendState::Attachment colorBlendAttachmentState;
+
+       PipelineCreateInfo pipelineCreateInfo(*m_pipelineLayout, *m_renderPass, 0, (VkPipelineCreateFlags)0);
+       pipelineCreateInfo.addShader(PipelineCreateInfo::PipelineShaderStage(*vertexModule,   "main", VK_SHADER_STAGE_VERTEX_BIT));
+       pipelineCreateInfo.addShader(PipelineCreateInfo::PipelineShaderStage(*fragmentModule, "main", VK_SHADER_STAGE_FRAGMENT_BIT));
+       pipelineCreateInfo.addState (PipelineCreateInfo::VertexInputState       (vertexInputState));
+       pipelineCreateInfo.addState (PipelineCreateInfo::InputAssemblerState(VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST));
+       pipelineCreateInfo.addState (PipelineCreateInfo::ColorBlendState        (1, &colorBlendAttachmentState));
+       pipelineCreateInfo.addState (PipelineCreateInfo::ViewportState          (1, std::vector<VkViewport>(), std::vector<VkRect2D>(1, scissor)));
+       pipelineCreateInfo.addState (PipelineCreateInfo::DepthStencilState      ());
+       pipelineCreateInfo.addState (PipelineCreateInfo::RasterizerState        (
+               VK_FALSE,                                       // depthClampEnable
+               VK_FALSE,                                       // rasterizerDiscardEnable
+               VK_POLYGON_MODE_FILL,           // polygonMode
+               m_params.cullMode,                      // cullMode
+               m_params.frontFace,                     // frontFace
+               VK_FALSE,                                       // depthBiasEnable
+               0.0f,                                           // depthBiasConstantFactor
+               0.0f,                                           // depthBiasClamp
+               0.0f,                                           // depthBiasSlopeFactor
+               1.0f));                                         // lineWidth
+       pipelineCreateInfo.addState (PipelineCreateInfo::MultiSampleState       ());
+       pipelineCreateInfo.addState (PipelineCreateInfo::DynamicState           (dynamicStates));
+
+       m_pipeline = createGraphicsPipeline(vk, device, DE_NULL, &pipelineCreateInfo);
+}
+
+tcu::ConstPixelBufferAccess NegativeViewportHeightTestInstance::draw (const VkViewport viewport)
+{
+       const DeviceInterface&  vk                                      = m_context.getDeviceInterface();
+       const VkDevice                  device                          = m_context.getDevice();
+       const VkQueue                   queue                           = m_context.getUniversalQueue();
+       const deUint32                  queueFamilyIndex        = m_context.getUniversalQueueFamilyIndex();
+
+       // Command buffer
+
+       const CmdPoolCreateInfo         cmdPoolCreateInfo       (queueFamilyIndex);
+       const Unique<VkCommandPool>     cmdPool                         (createCommandPool(vk, device, &cmdPoolCreateInfo));
+
+       const VkCommandBufferAllocateInfo cmdBufferAllocateInfo =
+       {
+               VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,         // VkStructureType                      sType;
+               DE_NULL,                                                                                        // const void*                          pNext;
+               *cmdPool,                                                                                       // VkCommandPool                        commandPool;
+               VK_COMMAND_BUFFER_LEVEL_PRIMARY,                                        // VkCommandBufferLevel         level;
+               1u,                                                                                                     // deUint32                                     bufferCount;
+       };
+       const Unique<VkCommandBuffer> cmdBuffer(allocateCommandBuffer(vk, device, &cmdBufferAllocateInfo));
+
+       // Draw
+
+       {
+               const CmdBufferBeginInfo beginInfo;
+               vk.beginCommandBuffer(*cmdBuffer, &beginInfo);
+       }
+
+       vk.cmdSetViewport(*cmdBuffer, 0u, 1u, &viewport);
+
+       {
+               const VkClearColorValue         clearColor                      = makeClearValueColorF32(0.0f, 0.0f, 0.0f, 1.0f).color;
+               const ImageSubresourceRange subresourceRange    (VK_IMAGE_ASPECT_COLOR_BIT);
+
+               initialTransitionColor2DImage(vk, *cmdBuffer, m_colorTargetImage->object(), VK_IMAGE_LAYOUT_GENERAL);
+               vk.cmdClearColorImage(*cmdBuffer, m_colorTargetImage->object(), VK_IMAGE_LAYOUT_GENERAL, &clearColor, 1, &subresourceRange);
+       }
+       {
+               const VkMemoryBarrier memBarrier =
+               {
+                       VK_STRUCTURE_TYPE_MEMORY_BARRIER,                                                                                               // VkStructureType    sType;
+                       DE_NULL,                                                                                                                                                // const void*        pNext;
+                       VK_ACCESS_TRANSFER_WRITE_BIT,                                                                                                   // VkAccessFlags      srcAccessMask;
+                       VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT              // VkAccessFlags      dstAccessMask;
+               };
+
+               vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, 0, 1, &memBarrier, 0, DE_NULL, 0, DE_NULL);
+       }
+       {
+               const VkRect2D                          renderArea              = { { 0, 0 }, { WIDTH, HEIGHT } };
+               const RenderPassBeginInfo       renderPassBegin (*m_renderPass, *m_framebuffer, renderArea);
+
+               vk.cmdBeginRenderPass(*cmdBuffer, &renderPassBegin, VK_SUBPASS_CONTENTS_INLINE);
+       }
+       {
+               const VkDeviceSize      offset  = 0;
+               const VkBuffer          buffer  = m_vertexBuffer->object();
+
+               vk.cmdBindVertexBuffers(*cmdBuffer, 0, 1, &buffer, &offset);
+       }
+
+       vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *m_pipeline);
+       vk.cmdDraw(*cmdBuffer, 6, 1, 0, 0);
+       vk.cmdEndRenderPass(*cmdBuffer);
+       vk.endCommandBuffer(*cmdBuffer);
+
+       // Submit
+       {
+               const VkFenceCreateInfo fenceInfo       =
+               {
+                       VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,            // VkStructureType       sType;
+                       DE_NULL,                                                                        // const void*           pNext;
+                       (VkFenceCreateFlags)0,                                          // VkFenceCreateFlags    flags;
+               };
+               const Unique<VkFence>   fence           (createFence(vk, device, &fenceInfo));
+               const VkSubmitInfo              submitInfo      =
+               {
+                       VK_STRUCTURE_TYPE_SUBMIT_INFO,                          // VkStructureType                sType;
+                       DE_NULL,                                                                        // const void*                    pNext;
+                       0,                                                                                      // uint32_t                       waitSemaphoreCount;
+                       DE_NULL,                                                                        // const VkSemaphore*             pWaitSemaphores;
+                       (const VkPipelineStageFlags*)DE_NULL,           // const VkPipelineStageFlags*    pWaitDstStageMask;
+                       1,                                                                                      // uint32_t                       commandBufferCount;
+                       &cmdBuffer.get(),                                                       // const VkCommandBuffer*         pCommandBuffers;
+                       0,                                                                                      // uint32_t                       signalSemaphoreCount;
+                       DE_NULL                                                                         // const VkSemaphore*             pSignalSemaphores;
+               };
+
+               VK_CHECK(vk.queueSubmit(queue, 1, &submitInfo, *fence));
+               VK_CHECK(vk.waitForFences(device, 1u, &fence.get(), VK_TRUE, ~0ull));
+       }
+
+       // Get result
+       {
+               const VkOffset3D zeroOffset = { 0, 0, 0 };
+               return m_colorTargetImage->readSurface(queue, m_context.getDefaultAllocator(), VK_IMAGE_LAYOUT_GENERAL, zeroOffset, WIDTH, HEIGHT, VK_IMAGE_ASPECT_COLOR_BIT);
+       }
+}
+
+//! Determine if a triangle with triangleFace orientation will be culled or not
+bool NegativeViewportHeightTestInstance::isCulled (const VkFrontFace triangleFace) const
+{
+       const bool isFrontFacing = (triangleFace == m_params.frontFace);
+
+       if (m_params.cullMode == VK_CULL_MODE_FRONT_BIT && isFrontFacing)
+               return true;
+       if (m_params.cullMode == VK_CULL_MODE_BACK_BIT  && !isFrontFacing)
+               return true;
+
+       return m_params.cullMode == VK_CULL_MODE_FRONT_AND_BACK;
+}
+
+MovePtr<tcu::TextureLevel> NegativeViewportHeightTestInstance::generateReferenceImage (void) const
+{
+       DE_ASSERT(HEIGHT == WIDTH/2);
+
+       MovePtr<tcu::TextureLevel>              image   (new tcu::TextureLevel(mapVkFormat(m_colorAttachmentFormat), WIDTH, HEIGHT));
+       const tcu::PixelBufferAccess    access  (image->getAccess());
+       const Vec4                                              black   (0.0f, 0.0f, 0.0f, 1.0f);
+       const Vec4                                              white   (1.0f);
+       const Vec4                                              gray    (0.5f, 0.5f, 0.5f, 1.0f);
+
+       tcu::clear(access, black);
+
+       const int p1 =      static_cast<int>(static_cast<float>(HEIGHT) * (1.0f - 0.6f) / 2.0f);
+       const int p2 = p1 + static_cast<int>(static_cast<float>(HEIGHT) * (2.0f * 0.6f) / 2.0f);
+
+       // left triangle (CCW -> CW after y-flip)
+       if (!isCulled(VK_FRONT_FACE_CLOCKWISE))
+       {
+               const Vec4& color = (m_params.frontFace == VK_FRONT_FACE_CLOCKWISE ? white : gray);
+
+               for (int y = p1; y <= p2; ++y)
+               for (int x = p1; x <  y;  ++x)
+                       access.setPixel(color, x, y);
+       }
+
+       // right triangle (CW -> CCW after y-flip)
+       if (!isCulled(VK_FRONT_FACE_COUNTER_CLOCKWISE))
+       {
+               const Vec4& color = (m_params.frontFace == VK_FRONT_FACE_COUNTER_CLOCKWISE ? white : gray);
+
+               for (int y = p1;        y <= p2;          ++y)
+               for (int x = WIDTH - y; x <  p2 + HEIGHT; ++x)
+                       access.setPixel(color, x, y);
+       }
+
+       return image;
+}
+
+std::string getCullModeStr (const VkCullModeFlagBits cullMode)
+{
+       // Cull mode flags are a bit special, because there's a meaning to 0 and or'ed flags.
+       // The function getCullModeFlagsStr() doesn't work too well in this case.
+
+       switch (cullMode)
+       {
+               case VK_CULL_MODE_NONE:                         return "VK_CULL_MODE_NONE";
+               case VK_CULL_MODE_FRONT_BIT:            return "VK_CULL_MODE_FRONT_BIT";
+               case VK_CULL_MODE_BACK_BIT:                     return "VK_CULL_MODE_BACK_BIT";
+               case VK_CULL_MODE_FRONT_AND_BACK:       return "VK_CULL_MODE_FRONT_AND_BACK";
+
+               default:
+                       DE_ASSERT(0);
+                       return std::string();
+       }
+}
+
+tcu::TestStatus NegativeViewportHeightTestInstance::iterate (void)
+{
+       // Check requirements
+
+       if (!de::contains(m_context.getDeviceExtensions().begin(), m_context.getDeviceExtensions().end(), std::string("VK_KHR_maintenance1")))
+               TCU_THROW(NotSupportedError, "Missing extension: VK_KHR_maintenance1");
+
+       // Set up the viewport and draw
+
+       const VkViewport viewport =
+       {
+               0.0f,                                                   // float    x;
+               static_cast<float>(HEIGHT),             // float    y;
+               static_cast<float>(WIDTH),              // float    width;
+               -static_cast<float>(HEIGHT),    // float    height;
+               0.0f,                                                   // float    minDepth;
+               1.0f,                                                   // float    maxDepth;
+       };
+
+       const tcu::ConstPixelBufferAccess       resultImage     = draw(viewport);
+
+       // Verify the results
+
+       tcu::TestLog&                           log                             = m_context.getTestContext().getLog();
+       MovePtr<tcu::TextureLevel>      referenceImage  = generateReferenceImage();
+
+       log << tcu::TestLog::Message
+               << "Drawing two triangles with negative viewport height, which will cause a y-flip. This changes the sign of the triangle's area."
+               << tcu::TestLog::EndMessage;
+       log << tcu::TestLog::Message
+               << "After the flip, the triangle on the left is CW and the triangle on the right is CCW. Right angles of the both triangles should be at the bottom of the image."
+               << " Front face is white, back face is gray."
+               << tcu::TestLog::EndMessage;
+       log << tcu::TestLog::Message
+               << "Front face: " << getFrontFaceName(m_params.frontFace) << "\n"
+               << "Cull mode: "  << getCullModeStr  (m_params.cullMode)  << "\n"
+               << tcu::TestLog::EndMessage;
+
+       if (!tcu::fuzzyCompare(log, "Image compare", "Image compare", referenceImage->getAccess(), resultImage, 0.02f, tcu::COMPARE_LOG_RESULT))
+               return tcu::TestStatus::fail("Rendered image is incorrect");
+       else
+               return tcu::TestStatus::pass("Pass");
+}
+
+class NegativeViewportHeightTest : public TestCase
+{
+public:
+       NegativeViewportHeightTest (tcu::TestContext& testCtx, const std::string& name, const std::string& description, const TestParams& params)
+               : TestCase      (testCtx, name, description)
+               , m_params      (params)
+       {
+       }
+
+       void initPrograms (SourceCollections& programCollection) const
+       {
+               // Vertex shader
+               {
+                       std::ostringstream src;
+                       src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n"
+                               << "\n"
+                               << "layout(location = 0) in vec4 in_position;\n"
+                               << "\n"
+                               << "out gl_PerVertex {\n"
+                               << "    vec4  gl_Position;\n"
+                               << "};\n"
+                               << "\n"
+                               << "void main(void)\n"
+                               << "{\n"
+                               << "    gl_Position = in_position;\n"
+                               << "}\n";
+
+                       programCollection.glslSources.add("vert") << glu::VertexSource(src.str());
+               }
+
+               // Fragment shader
+               {
+                       std::ostringstream src;
+                       src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n"
+                               << "\n"
+                               << "layout(location = 0) out vec4 out_color;\n"
+                               << "\n"
+                               << "void main(void)\n"
+                               << "{\n"
+                               << "    if (gl_FrontFacing)\n"
+                               << "        out_color = vec4(1.0);\n"
+                               << "    else\n"
+                               << "        out_color = vec4(vec3(0.5), 1.0);\n"
+                               << "}\n";
+
+                       programCollection.glslSources.add("frag") << glu::FragmentSource(src.str());
+               }
+       }
+
+       virtual TestInstance* createInstance (Context& context) const
+       {
+               return new NegativeViewportHeightTestInstance(context, m_params);
+       }
+
+private:
+       const TestParams        m_params;
+};
+
+void populateTestGroup (tcu::TestCaseGroup* testGroup)
+{
+       const struct
+       {
+               const char* const       name;
+               VkFrontFace                     frontFace;
+       } frontFace[] =
+       {
+               { "front_ccw",  VK_FRONT_FACE_COUNTER_CLOCKWISE },
+               { "front_cw",   VK_FRONT_FACE_CLOCKWISE                 },
+       };
+
+       const struct
+       {
+               const char* const       name;
+               VkCullModeFlagBits      cullMode;
+       } cullMode[] =
+       {
+               { "cull_none",  VK_CULL_MODE_NONE                       },
+               { "cull_front", VK_CULL_MODE_FRONT_BIT          },
+               { "cull_back",  VK_CULL_MODE_BACK_BIT           },
+               { "cull_both",  VK_CULL_MODE_FRONT_AND_BACK     },
+       };
+
+       for (int ndxFrontFace = 0; ndxFrontFace < DE_LENGTH_OF_ARRAY(frontFace); ++ndxFrontFace)
+       for (int ndxCullMode  = 0; ndxCullMode  < DE_LENGTH_OF_ARRAY(cullMode);  ++ndxCullMode)
+       {
+               const TestParams params =
+               {
+                       frontFace[ndxFrontFace].frontFace,
+                       cullMode[ndxCullMode].cullMode,
+               };
+               std::ostringstream      name;
+               name << frontFace[ndxFrontFace].name << "_" << cullMode[ndxCullMode].name;
+
+               testGroup->addChild(new NegativeViewportHeightTest(testGroup->getTestContext(), name.str(), "", params));
+       }
+}
+
+}      // anonymous
+
+tcu::TestCaseGroup*    createNegativeViewportHeightTests (tcu::TestContext& testCtx)
+{
+       return createTestGroup(testCtx, "negative_viewport_height", "Negative viewport height (VK_KHR_maintenance1)", populateTestGroup);
+}
+
+}      // Draw
+}      // vkt
diff --git a/external/vulkancts/modules/vulkan/draw/vktDrawNegativeViewportHeightTests.hpp b/external/vulkancts/modules/vulkan/draw/vktDrawNegativeViewportHeightTests.hpp
new file mode 100644 (file)
index 0000000..9f56b35
--- /dev/null
@@ -0,0 +1,39 @@
+#ifndef _VKTDRAWNEGATIVEVIEWPORTHEIGHTTESTS_HPP
+#define _VKTDRAWNEGATIVEVIEWPORTHEIGHTTESTS_HPP
+/*------------------------------------------------------------------------
+ * Vulkan Conformance Tests
+ * ------------------------
+ *
+ * Copyright (c) 2016 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *//*!
+ * \file
+ * \brief Negative viewport height (part of VK_KHR_maintenance1)
+ *//*--------------------------------------------------------------------*/
+
+#include "vkDefs.hpp"
+#include "vktTestCase.hpp"
+
+namespace vkt
+{
+namespace Draw
+{
+
+tcu::TestCaseGroup*    createNegativeViewportHeightTests (tcu::TestContext& testCtx);
+
+}      // Draw
+}      // vkt
+
+#endif // _VKTDRAWNEGATIVEVIEWPORTHEIGHTTESTS_HPP
diff --git a/external/vulkancts/modules/vulkan/draw/vktDrawShaderDrawParametersTests.cpp b/external/vulkancts/modules/vulkan/draw/vktDrawShaderDrawParametersTests.cpp
new file mode 100644 (file)
index 0000000..53bb063
--- /dev/null
@@ -0,0 +1,405 @@
+/*------------------------------------------------------------------------
+ * Vulkan Conformance Tests
+ * ------------------------
+ *
+ * Copyright (c) 2016 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *//*!
+ * \file
+ * \brief VK_KHR_shader_draw_parameters tests
+ *//*--------------------------------------------------------------------*/
+
+#include "vktDrawShaderDrawParametersTests.hpp"
+
+#include "vktTestCaseUtil.hpp"
+#include "vktDrawTestCaseUtil.hpp"
+#include "vktDrawBaseClass.hpp"
+
+#include "vkQueryUtil.hpp"
+
+#include "tcuTestLog.hpp"
+#include "tcuImageCompare.hpp"
+#include "tcuTextureUtil.hpp"
+
+namespace vkt
+{
+namespace Draw
+{
+namespace
+{
+
+enum TestFlagBits
+{
+       TEST_FLAG_INSTANCED                     = 1u << 0,
+       TEST_FLAG_INDEXED                       = 1u << 1,
+       TEST_FLAG_INDIRECT                      = 1u << 2,
+       TEST_FLAG_MULTIDRAW                     = 1u << 3,      //!< multiDrawIndirect
+       TEST_FLAG_FIRST_INSTANCE        = 1u << 4,      //!< drawIndirectFirstInstance
+};
+typedef deUint32 TestFlags;
+
+struct FlagsTestSpec : public TestSpecBase
+{
+       TestFlags       flags;
+};
+
+inline FlagsTestSpec addFlags (FlagsTestSpec spec, const TestFlags flags)
+{
+       spec.flags |= flags;
+       return spec;
+}
+
+enum Constants
+{
+       // \note Data layout in buffers (junk data and good data is intertwined).
+       //       Values are largely arbitrary, but we try to avoid "nice" numbers to make sure the test doesn't pass by accident.
+       NUM_VERTICES                    = 4,    //!< number of consecutive good vertices
+       NDX_FIRST_VERTEX                = 2,    //!< index of first good vertex data
+       NDX_SECOND_VERTEX               = 9,    //!< index of second good vertex data
+       NDX_FIRST_INDEX                 = 11,   //!< index of a first good index (in index data)
+       NDX_SECOND_INDEX                = 17,   //!< index of a second good index
+       OFFSET_FIRST_INDEX              = 1,    //!< offset added to the first index
+       OFFSET_SECOND_INDEX             = 4,    //!< offset added to the second index
+       MAX_INSTANCE_COUNT              = 3,    //!< max number of draw instances
+       MAX_INDIRECT_DRAW_COUNT = 3,    //!< max drawCount of indirect calls
+};
+
+class DrawTest : public DrawTestsBaseClass
+{
+public:
+       typedef FlagsTestSpec   TestSpec;
+                                                       DrawTest                                (Context &context, TestSpec testSpec);
+       tcu::TestStatus                 iterate                                 (void);
+
+private:
+       template<typename T, std::size_t N>
+       void                                    setIndirectCommand              (const T (&pCmdData)[N]);
+
+       void                                    drawReferenceImage              (const tcu::PixelBufferAccess& refImage) const;
+
+       bool                                    isInstanced                             (void) const { return (m_flags & TEST_FLAG_INSTANCED)           != 0; }
+       bool                                    isIndexed                               (void) const { return (m_flags & TEST_FLAG_INDEXED)                     != 0; }
+       bool                                    isIndirect                              (void) const { return (m_flags & TEST_FLAG_INDIRECT)            != 0; }
+       bool                                    isMultiDraw                             (void) const { return (m_flags & TEST_FLAG_MULTIDRAW)           != 0; }
+       bool                                    isFirstInstance                 (void) const { return (m_flags & TEST_FLAG_FIRST_INSTANCE)      != 0; }
+
+       const TestFlags                 m_flags;
+       de::SharedPtr<Buffer>   m_indexBuffer;
+       de::SharedPtr<Buffer>   m_indirectBuffer;
+};
+
+DrawTest::DrawTest (Context &context, TestSpec testSpec)
+       : DrawTestsBaseClass(context, testSpec.shaders[glu::SHADERTYPE_VERTEX], testSpec.shaders[glu::SHADERTYPE_FRAGMENT], testSpec.topology)
+       , m_flags                       (testSpec.flags)
+{
+       DE_ASSERT(m_topology == vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP);
+       DE_ASSERT(!isMultiDraw()     || isIndirect());
+       DE_ASSERT(!isFirstInstance() || (isIndirect() && isInstanced()));
+
+       // Requirements
+       {
+               if (!de::contains(m_context.getDeviceExtensions().begin(), m_context.getDeviceExtensions().end(), std::string("VK_KHR_shader_draw_parameters")))
+                       TCU_THROW(NotSupportedError, "Missing extension: VK_KHR_shader_draw_parameters");
+
+               if (isMultiDraw() && !m_context.getDeviceFeatures().multiDrawIndirect)
+                       TCU_THROW(NotSupportedError, "Missing feature: multiDrawIndirect");
+
+               if (isFirstInstance() && !m_context.getDeviceFeatures().drawIndirectFirstInstance)
+                       TCU_THROW(NotSupportedError, "Missing feature: drawIndirectFirstInstance");
+       }
+
+       // Vertex data
+       {
+               int refIndex = NDX_FIRST_VERTEX - OFFSET_FIRST_INDEX;
+
+               m_data.push_back(VertexElementData(tcu::Vec4( 1.0f, -1.0f, 1.0f, 1.0f), tcu::Vec4(1.0f), -1));
+               m_data.push_back(VertexElementData(tcu::Vec4(-1.0f,  1.0f, 1.0f, 1.0f), tcu::Vec4(1.0f), -1));
+
+               if (!isIndexed())
+                       refIndex = 0;
+
+               m_data.push_back(VertexElementData(tcu::Vec4(-0.3f,     -0.3f, 1.0f, 1.0f), tcu::Vec4(1.0f), refIndex++));
+               m_data.push_back(VertexElementData(tcu::Vec4(-0.3f,      0.3f, 1.0f, 1.0f), tcu::Vec4(1.0f), refIndex++));
+               m_data.push_back(VertexElementData(tcu::Vec4( 0.3f,     -0.3f, 1.0f, 1.0f), tcu::Vec4(1.0f), refIndex++));
+               m_data.push_back(VertexElementData(tcu::Vec4( 0.3f,      0.3f, 1.0f, 1.0f), tcu::Vec4(1.0f), refIndex++));
+
+               m_data.push_back(VertexElementData(tcu::Vec4(-1.0f,  1.0f, 1.0f, 1.0f), tcu::Vec4(1.0f), -1));
+               m_data.push_back(VertexElementData(tcu::Vec4( 1.0f, -1.0f, 1.0f, 1.0f), tcu::Vec4(1.0f), -1));
+               m_data.push_back(VertexElementData(tcu::Vec4(-1.0f, -1.0f, 1.0f, 1.0f), tcu::Vec4(1.0f), -1));
+
+               if (!isIndexed())
+                       refIndex = 0;
+
+               m_data.push_back(VertexElementData(tcu::Vec4(-0.3f,     -0.3f, 1.0f, 1.0f), tcu::Vec4(1.0f), refIndex++));
+               m_data.push_back(VertexElementData(tcu::Vec4(-0.3f,      0.3f, 1.0f, 1.0f), tcu::Vec4(1.0f), refIndex++));
+               m_data.push_back(VertexElementData(tcu::Vec4( 0.3f,     -0.3f, 1.0f, 1.0f), tcu::Vec4(1.0f), refIndex++));
+               m_data.push_back(VertexElementData(tcu::Vec4( 0.3f,      0.3f, 1.0f, 1.0f), tcu::Vec4(1.0f), refIndex++));
+
+               m_data.push_back(VertexElementData(tcu::Vec4(-1.0f,  1.0f, 1.0f, 1.0f), tcu::Vec4(1.0f), -1));
+               m_data.push_back(VertexElementData(tcu::Vec4( 1.0f, -1.0f, 1.0f, 1.0f), tcu::Vec4(1.0f), -1));
+
+               // Make sure constants are up to date
+               DE_ASSERT(m_data.size() == NDX_SECOND_VERTEX + NUM_VERTICES + 2);
+               DE_ASSERT(NDX_SECOND_VERTEX - NDX_FIRST_VERTEX - NUM_VERTICES == 3);
+       }
+
+       if (isIndirect())
+       {
+               const std::size_t       indirectBufferSize      = MAX_INDIRECT_DRAW_COUNT * 32; // space for COUNT commands plus some gratuitous padding
+                                                       m_indirectBuffer        = Buffer::createAndAlloc(m_vk, m_context.getDevice(), BufferCreateInfo(indirectBufferSize, vk::VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT),
+                                                                                                 m_context.getDefaultAllocator(), vk::MemoryRequirement::HostVisible);
+
+               deMemset(m_indirectBuffer->getBoundMemory().getHostPtr(), 0, indirectBufferSize);
+               vk::flushMappedMemoryRange(m_vk, m_context.getDevice(), m_indirectBuffer->getBoundMemory().getMemory(), m_indirectBuffer->getBoundMemory().getOffset(), VK_WHOLE_SIZE);
+       }
+
+       if (isIndexed())
+       {
+               DE_ASSERT(NDX_FIRST_INDEX + NUM_VERTICES <= NDX_SECOND_INDEX);
+               const std::size_t       indexBufferSize = sizeof(deUint32) * (NDX_SECOND_INDEX + NUM_VERTICES);
+                                                       m_indexBuffer   = Buffer::createAndAlloc(m_vk, m_context.getDevice(), BufferCreateInfo(indexBufferSize, vk::VK_BUFFER_USAGE_INDEX_BUFFER_BIT),
+                                                                                                                                        m_context.getDefaultAllocator(), vk::MemoryRequirement::HostVisible);
+               deUint32*                       indices                 = static_cast<deUint32*>(m_indexBuffer->getBoundMemory().getHostPtr());
+
+               deMemset(indices, 0, indexBufferSize);
+
+               for (int i = 0; i < NUM_VERTICES; i++)
+               {
+                       indices[NDX_FIRST_INDEX  + i] = static_cast<deUint32>(NDX_FIRST_VERTEX  + i) - OFFSET_FIRST_INDEX;
+                       indices[NDX_SECOND_INDEX + i] = static_cast<deUint32>(NDX_SECOND_VERTEX + i) - OFFSET_SECOND_INDEX;
+               }
+
+               vk::flushMappedMemoryRange(m_vk, m_context.getDevice(), m_indexBuffer->getBoundMemory().getMemory(), m_indexBuffer->getBoundMemory().getOffset(), VK_WHOLE_SIZE);
+       }
+
+       initialize();
+}
+
+template<typename T, std::size_t N>
+void DrawTest::setIndirectCommand (const T (&pCmdData)[N])
+{
+       DE_ASSERT(N != 0 && N <= MAX_INDIRECT_DRAW_COUNT);
+
+       const std::size_t dataSize = N * sizeof(T);
+
+       deMemcpy(m_indirectBuffer->getBoundMemory().getHostPtr(), pCmdData, dataSize);
+       vk::flushMappedMemoryRange(m_vk, m_context.getDevice(), m_indirectBuffer->getBoundMemory().getMemory(), m_indirectBuffer->getBoundMemory().getOffset(), VK_WHOLE_SIZE);
+}
+
+//! This function must be kept in sync with the shader.
+void DrawTest::drawReferenceImage (const tcu::PixelBufferAccess& refImage) const
+{
+       using tcu::Vec2;
+       using tcu::Vec4;
+       using tcu::IVec4;
+
+       const Vec2      perInstanceOffset[]     = { Vec2(0.0f, 0.0f), Vec2(-0.3f,  0.0f), Vec2(0.0f, 0.3f) };
+       const Vec2      perDrawOffset[]         = { Vec2(0.0f, 0.0f), Vec2(-0.3f, -0.3f), Vec2(0.3f, 0.3f) };
+       const Vec4      allColors[]                     = { Vec4(1.0f), Vec4(0.0f, 0.0f, 1.0f, 1.0f), Vec4(0.0f, 1.0f, 0.0f, 1.0f) };
+       const int       numInstances            = isInstanced() ? MAX_INSTANCE_COUNT            : 1;
+       const int       numIndirectDraws        = isMultiDraw() ? MAX_INDIRECT_DRAW_COUNT       : 1;
+       const int       rectWidth                       = static_cast<int>(WIDTH  * 0.6f / 2.0f);
+       const int       rectHeight                      = static_cast<int>(HEIGHT * 0.6f / 2.0f);
+
+       DE_ASSERT(DE_LENGTH_OF_ARRAY(perInstanceOffset) >= numInstances);
+       DE_ASSERT(DE_LENGTH_OF_ARRAY(allColors) >= numInstances && DE_LENGTH_OF_ARRAY(allColors) >= numIndirectDraws);
+       DE_ASSERT(DE_LENGTH_OF_ARRAY(perDrawOffset) >= numIndirectDraws);
+
+       tcu::clear(refImage, tcu::Vec4(0.0f, 0.0f, 0.0f, 1.0f));
+
+       for (int drawNdx     = 0; drawNdx     < numIndirectDraws; ++drawNdx)
+       for (int instanceNdx = 0; instanceNdx < numInstances;     ++instanceNdx)
+       {
+               const Vec2      offset  = perInstanceOffset[instanceNdx] + perDrawOffset[drawNdx];
+               const Vec4&     color   = allColors[isMultiDraw() ? drawNdx : instanceNdx];
+               int                     x               = static_cast<int>(WIDTH  * (1.0f - 0.3f + offset.x()) / 2.0f);
+               int                     y               = static_cast<int>(HEIGHT * (1.0f - 0.3f + offset.y()) / 2.0f);
+
+               tcu::clear(tcu::getSubregion(refImage, x, y, rectWidth, rectHeight), color);
+       }
+}
+
+tcu::TestStatus DrawTest::iterate (void)
+{
+       // Draw
+       {
+               beginRenderPass();
+
+               const vk::VkDeviceSize  vertexBufferOffset      = 0;
+               const vk::VkBuffer              vertexBuffer            = m_vertexBuffer->object();
+
+               m_vk.cmdBindVertexBuffers       (*m_cmdBuffer, 0, 1, &vertexBuffer, &vertexBufferOffset);
+               m_vk.cmdBindPipeline            (*m_cmdBuffer, vk::VK_PIPELINE_BIND_POINT_GRAPHICS, *m_pipeline);
+
+               if (isIndexed())
+                       m_vk.cmdBindIndexBuffer(*m_cmdBuffer, m_indexBuffer->object(), 0ull, vk::VK_INDEX_TYPE_UINT32);
+
+               const deUint32                  numInstances            = isInstanced() ? MAX_INSTANCE_COUNT : 1;
+
+               if (isIndirect())
+               {
+                       if (isIndexed())
+                       {
+                               const vk::VkDrawIndexedIndirectCommand commands[] =
+                               {
+                                       // indexCount, instanceCount, firstIndex, vertexOffset, firstInstance
+                                       { NUM_VERTICES, numInstances,   NDX_FIRST_INDEX,        OFFSET_FIRST_INDEX,             (isFirstInstance() ? 2u : 0u) },
+                                       { NUM_VERTICES, numInstances,   NDX_SECOND_INDEX,       OFFSET_SECOND_INDEX,    (isFirstInstance() ? 1u : 0u) },
+                                       { NUM_VERTICES, numInstances,   NDX_FIRST_INDEX,        OFFSET_FIRST_INDEX,             (isFirstInstance() ? 3u : 0u) },
+                               };
+                               setIndirectCommand(commands);
+                       }
+                       else
+                       {
+                               const vk::VkDrawIndirectCommand commands[] =
+                               {
+                                       // vertexCount, instanceCount, firstVertex, firstInstance
+                                       { NUM_VERTICES, numInstances,   NDX_FIRST_VERTEX,       (isFirstInstance() ? 2u : 0u) },
+                                       { NUM_VERTICES, numInstances,   NDX_SECOND_VERTEX,      (isFirstInstance() ? 1u : 0u) },
+                                       { NUM_VERTICES, numInstances,   NDX_FIRST_VERTEX,       (isFirstInstance() ? 3u : 0u) },
+                               };
+                               setIndirectCommand(commands);
+                       }
+               }
+
+               if (isIndirect())
+               {
+                       const deUint32 numIndirectDraws = isMultiDraw() ? MAX_INDIRECT_DRAW_COUNT : 1;
+
+                       if (isIndexed())
+                               m_vk.cmdDrawIndexedIndirect(*m_cmdBuffer, m_indirectBuffer->object(), 0ull, numIndirectDraws, sizeof(vk::VkDrawIndexedIndirectCommand));
+                       else
+                               m_vk.cmdDrawIndirect(*m_cmdBuffer, m_indirectBuffer->object(), 0ull, numIndirectDraws, sizeof(vk::VkDrawIndirectCommand));
+               }
+               else
+               {
+                       const deUint32 firstInstance = 2;
+
+                       if (isIndexed())
+                               m_vk.cmdDrawIndexed(*m_cmdBuffer, NUM_VERTICES, numInstances, NDX_FIRST_INDEX, OFFSET_FIRST_INDEX, firstInstance);
+                       else
+                               m_vk.cmdDraw(*m_cmdBuffer, NUM_VERTICES, numInstances, NDX_FIRST_VERTEX, firstInstance);
+               }
+
+               m_vk.cmdEndRenderPass(*m_cmdBuffer);
+               m_vk.endCommandBuffer(*m_cmdBuffer);
+       }
+
+       // Submit
+       {
+               const vk::VkQueue               queue           = m_context.getUniversalQueue();
+               const vk::VkSubmitInfo  submitInfo      =
+               {
+                       vk::VK_STRUCTURE_TYPE_SUBMIT_INFO,                      // VkStructureType                      sType;
+                       DE_NULL,                                                                        // const void*                          pNext;
+                       0,                                                                                      // deUint32                                     waitSemaphoreCount;
+                       DE_NULL,                                                                        // const VkSemaphore*           pWaitSemaphores;
+                       (const vk::VkPipelineStageFlags*)DE_NULL,
+                       1,                                                                                      // deUint32                                     commandBufferCount;
+                       &m_cmdBuffer.get(),                                                     // const VkCommandBuffer*       pCommandBuffers;
+                       0,                                                                                      // deUint32                                     signalSemaphoreCount;
+                       DE_NULL                                                                         // const VkSemaphore*           pSignalSemaphores;
+               };
+               VK_CHECK(m_vk.queueSubmit(queue, 1, &submitInfo, DE_NULL));
+               VK_CHECK(m_vk.queueWaitIdle(queue));
+       }
+
+       // Validate
+       {
+               tcu::TextureLevel referenceFrame(vk::mapVkFormat(m_colorAttachmentFormat), static_cast<int>(0.5f + WIDTH), static_cast<int>(0.5f + HEIGHT));
+
+               drawReferenceImage(referenceFrame.getAccess());
+
+               const vk::VkOffset3D                            zeroOffset              = { 0, 0, 0 };
+               const tcu::ConstPixelBufferAccess       renderedFrame   = m_colorTargetImage->readSurface(m_context.getUniversalQueue(), m_context.getDefaultAllocator(),
+                                                                                                                         vk::VK_IMAGE_LAYOUT_GENERAL, zeroOffset, WIDTH, HEIGHT, vk::VK_IMAGE_ASPECT_COLOR_BIT);
+
+               if (!tcu::fuzzyCompare(m_context.getTestContext().getLog(), "Result", "Image comparison result", referenceFrame.getAccess(), renderedFrame, 0.05f, tcu::COMPARE_LOG_RESULT))
+                       return tcu::TestStatus::fail("Rendered image is incorrect");
+               else
+                       return tcu::TestStatus::pass("OK");
+       }
+}
+
+void addDrawCase (tcu::TestCaseGroup* group, const DrawTest::TestSpec testSpec, const TestFlags flags)
+{
+       std::ostringstream name;
+       name << "draw";
+
+       if (flags & TEST_FLAG_INDEXED)                  name << "_indexed";
+       if (flags & TEST_FLAG_INDIRECT)                 name << "_indirect";
+       if (flags & TEST_FLAG_INSTANCED)                name << "_instanced";
+       if (flags & TEST_FLAG_FIRST_INSTANCE)   name << "_first_instance";
+
+       group->addChild(new InstanceFactory<DrawTest>(group->getTestContext(), name.str(), "", addFlags(testSpec, flags)));
+}
+
+}      // anonymous
+
+ShaderDrawParametersTests::ShaderDrawParametersTests (tcu::TestContext &testCtx)
+       : TestCaseGroup (testCtx, "shader_draw_parameters", "VK_KHR_shader_draw_parameters")
+{
+}
+
+void ShaderDrawParametersTests::init (void)
+{
+       {
+               DrawTest::TestSpec testSpec;
+               testSpec.shaders[glu::SHADERTYPE_VERTEX]        = "vulkan/draw/VertexFetchShaderDrawParameters.vert";
+               testSpec.shaders[glu::SHADERTYPE_FRAGMENT]      = "vulkan/draw/VertexFetch.frag";
+               testSpec.topology                                                       = vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP;
+               testSpec.flags                                                          = 0;
+
+               de::MovePtr<tcu::TestCaseGroup> group(new tcu::TestCaseGroup(getTestContext(), "base_vertex", ""));
+               addDrawCase(group.get(), testSpec, 0);
+               addDrawCase(group.get(), testSpec, TEST_FLAG_INDEXED);
+               addDrawCase(group.get(), testSpec, TEST_FLAG_INDIRECT);
+               addDrawCase(group.get(), testSpec, TEST_FLAG_INDEXED | TEST_FLAG_INDIRECT);
+               addChild(group.release());
+       }
+       {
+               DrawTest::TestSpec testSpec;
+               testSpec.shaders[glu::SHADERTYPE_VERTEX]        = "vulkan/draw/VertexFetchShaderDrawParameters.vert";
+               testSpec.shaders[glu::SHADERTYPE_FRAGMENT]      = "vulkan/draw/VertexFetch.frag";
+               testSpec.topology                                                       = vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP;
+               testSpec.flags                                                          = TEST_FLAG_INSTANCED;
+
+               de::MovePtr<tcu::TestCaseGroup> group(new tcu::TestCaseGroup(getTestContext(), "base_instance", ""));
+               addDrawCase(group.get(), testSpec, 0);
+               addDrawCase(group.get(), testSpec, TEST_FLAG_INDEXED);
+               addDrawCase(group.get(), testSpec, TEST_FLAG_INDIRECT);
+               addDrawCase(group.get(), testSpec, TEST_FLAG_INDIRECT | TEST_FLAG_FIRST_INSTANCE);
+               addDrawCase(group.get(), testSpec, TEST_FLAG_INDEXED  | TEST_FLAG_INDIRECT);
+               addDrawCase(group.get(), testSpec, TEST_FLAG_INDEXED  | TEST_FLAG_INDIRECT | TEST_FLAG_FIRST_INSTANCE);
+               addChild(group.release());
+       }
+       {
+               DrawTest::TestSpec testSpec;
+               testSpec.shaders[glu::SHADERTYPE_VERTEX]        = "vulkan/draw/VertexFetchShaderDrawParametersDrawIndex.vert";
+               testSpec.shaders[glu::SHADERTYPE_FRAGMENT]      = "vulkan/draw/VertexFetch.frag";
+               testSpec.topology                                                       = vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP;
+               testSpec.flags                                                          = TEST_FLAG_INDIRECT | TEST_FLAG_MULTIDRAW;
+
+               de::MovePtr<tcu::TestCaseGroup> group(new tcu::TestCaseGroup(getTestContext(), "draw_index", ""));
+               addDrawCase(group.get(), testSpec, 0);
+               addDrawCase(group.get(), testSpec, TEST_FLAG_INSTANCED);
+               addDrawCase(group.get(), testSpec, TEST_FLAG_INDEXED);
+               addDrawCase(group.get(), testSpec, TEST_FLAG_INDEXED | TEST_FLAG_INSTANCED);
+               addChild(group.release());
+       }
+}
+
+}      // DrawTests
+}      // vkt
diff --git a/external/vulkancts/modules/vulkan/draw/vktDrawShaderDrawParametersTests.hpp b/external/vulkancts/modules/vulkan/draw/vktDrawShaderDrawParametersTests.hpp
new file mode 100644 (file)
index 0000000..02c532a
--- /dev/null
@@ -0,0 +1,47 @@
+#ifndef _VKTDRAWSHADERDRAWPARAMETERSTESTS_HPP
+#define _VKTDRAWSHADERDRAWPARAMETERSTESTS_HPP
+/*------------------------------------------------------------------------
+ * Vulkan Conformance Tests
+ * ------------------------
+ *
+ * Copyright (c) 2016 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *//*!
+ * \file
+ * \brief VK_KHR_shader_draw_parameters tests
+ *//*--------------------------------------------------------------------*/
+
+#include "vktTestCase.hpp"
+
+namespace vkt
+{
+namespace Draw
+{
+
+class ShaderDrawParametersTests : public tcu::TestCaseGroup
+{
+public:
+                                                               ShaderDrawParametersTests       (tcu::TestContext& testCtx);
+       void                                            init                                            (void);
+
+private:
+                                                               ShaderDrawParametersTests       (const ShaderDrawParametersTests& other);
+       ShaderDrawParametersTests&      operator=                                       (const ShaderDrawParametersTests& other);
+};
+
+} // Draw
+} // vkt
+
+#endif // _VKTDRAWSHADERDRAWPARAMETERSTESTS_HPP
index ee04acf..58094cf 100644 (file)
@@ -30,6 +30,8 @@
 #include "vktDrawInstancedTests.hpp"
 #include "vktTestGroupUtil.hpp"
 #include "vktBasicDrawTests.hpp"
+#include "vktDrawShaderDrawParametersTests.hpp"
+#include "vktDrawNegativeViewportHeightTests.hpp"
 
 namespace vkt
 {
@@ -43,11 +45,13 @@ void createChildren (tcu::TestCaseGroup* group)
 {
        tcu::TestContext&       testCtx         = group->getTestContext();
 
-       group->addChild(new SimpleDrawTests(testCtx));
-       group->addChild(new DrawIndexedTests(testCtx));
-       group->addChild(new IndirectDrawTests(testCtx));
-       group->addChild(createBasicDrawTests(testCtx));
-       group->addChild(new InstancedTests(testCtx));
+       group->addChild(new SimpleDrawTests                                     (testCtx));
+       group->addChild(new DrawIndexedTests                            (testCtx));
+       group->addChild(new IndirectDrawTests                           (testCtx));
+       group->addChild(createBasicDrawTests                            (testCtx));
+       group->addChild(new InstancedTests                                      (testCtx));
+       group->addChild(new ShaderDrawParametersTests           (testCtx));
+       group->addChild(createNegativeViewportHeightTests       (testCtx));
 }
 
 } // anonymous
index d5e10e9..182f9c0 100644 (file)
@@ -653,16 +653,18 @@ void initPrograms (SourceCollections& programCollection, const TestParams params
 
        // Geometry shader
        {
-               const int maxVertices = (params.testType == TEST_TYPE_DIFFERENT_CONTENT)                                                                        ? (params.image.numLayers + 1) * params.image.numLayers :
-                                                               (params.testType == TEST_TYPE_ALL_LAYERS || params.testType == TEST_TYPE_LAYER_ID)      ? params.image.numLayers * 4 :
-                                                               (params.testType == TEST_TYPE_MULTIPLE_LAYERS_PER_INVOCATION)                                           ? 6 : 4;
+               const int numLayers             = static_cast<int>(params.image.viewType == VK_IMAGE_VIEW_TYPE_3D ? params.image.size.depth : params.image.numLayers);
+
+               const int maxVertices   = (params.testType == TEST_TYPE_DIFFERENT_CONTENT)                                                                              ? (numLayers + 1) * numLayers :
+                                                                 (params.testType == TEST_TYPE_ALL_LAYERS || params.testType == TEST_TYPE_LAYER_ID)    ? numLayers * 4 :
+                                                                 (params.testType == TEST_TYPE_MULTIPLE_LAYERS_PER_INVOCATION)                                                 ? 6 : 4;
 
                std::ostringstream src;
                src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n"
                        << "\n";
 
                if (params.testType == TEST_TYPE_INVOCATION_PER_LAYER || params.testType == TEST_TYPE_MULTIPLE_LAYERS_PER_INVOCATION)
-                       src << "layout(points, invocations = " << params.image.numLayers << ") in;\n";
+                       src << "layout(points, invocations = " << numLayers << ") in;\n";
                else
                        src << "layout(points) in;\n";
 
@@ -728,7 +730,7 @@ void initPrograms (SourceCollections& programCollection, const TestParams params
                {
                        src << colorTable.str()
                                << "\n"
-                               << "    for (int layerNdx = 0; layerNdx < " << params.image.numLayers << "; ++layerNdx) {\n"
+                               << "    for (int layerNdx = 0; layerNdx < " << numLayers << "; ++layerNdx) {\n"
                                << "        const int colorNdx = layerNdx % " << DE_LENGTH_OF_ARRAY(s_colors) << ";\n"
                                << "\n"
                                << "        gl_Position = vec4(-1.0, -1.0, 0.0, 1.0);\n"
@@ -755,7 +757,7 @@ void initPrograms (SourceCollections& programCollection, const TestParams params
                }
                else if (params.testType == TEST_TYPE_LAYER_ID)
                {
-                       src << "    for (int layerNdx = 0; layerNdx < " << params.image.numLayers << "; ++layerNdx) {\n"
+                       src << "    for (int layerNdx = 0; layerNdx < " << numLayers << "; ++layerNdx) {\n"
                                << "        gl_Position = vec4(-1.0, -1.0, 0.0, 1.0);\n"
                                << "        gl_Layer    = layerNdx;\n"
                                << "        EmitVertex();\n"
@@ -776,9 +778,9 @@ void initPrograms (SourceCollections& programCollection, const TestParams params
                }
                else if (params.testType == TEST_TYPE_DIFFERENT_CONTENT)
                {
-                       src << "    for (int layerNdx = 0; layerNdx < " << params.image.numLayers << "; ++layerNdx) {\n"
+                       src << "    for (int layerNdx = 0; layerNdx < " << numLayers << "; ++layerNdx) {\n"
                                << "        for (int colNdx = 0; colNdx <= layerNdx; ++colNdx) {\n"
-                               << "            const float posX = float(colNdx) / float(" << params.image.numLayers << ") * 2.0 - 1.0;\n"
+                               << "            const float posX = float(colNdx) / float(" << numLayers << ") * 2.0 - 1.0;\n"
                                << "\n"
                                << "            gl_Position = vec4(posX,  1.0, 0.0, 1.0);\n"
                                << "            gl_Layer    = layerNdx;\n"
@@ -820,9 +822,9 @@ void initPrograms (SourceCollections& programCollection, const TestParams params
                else if (params.testType == TEST_TYPE_MULTIPLE_LAYERS_PER_INVOCATION)
                {
                        src << "    const int   layerA = gl_InvocationID;\n"
-                               << "    const int   layerB = (gl_InvocationID + 1) % " << params.image.numLayers << ";\n"
-                               << "    const float aEnd   = float(layerA) / float(" << params.image.numLayers << ") * 2.0 - 1.0;\n"
-                               << "    const float bEnd   = float(layerB) / float(" << params.image.numLayers << ") * 2.0 - 1.0;\n"
+                               << "    const int   layerB = (gl_InvocationID + 1) % " << numLayers << ";\n"
+                               << "    const float aEnd   = float(layerA) / float(" << numLayers << ") * 2.0 - 1.0;\n"
+                               << "    const float bEnd   = float(layerB) / float(" << numLayers << ") * 2.0 - 1.0;\n"
                                << "\n"
                                << "    gl_Position = vec4(-1.0, -1.0, 0.0, 1.0);\n"
                                << "    gl_Layer    = layerA;\n"
@@ -890,40 +892,47 @@ void initPrograms (SourceCollections& programCollection, const TestParams params
 
 tcu::TestStatus test (Context& context, const TestParams params)
 {
-       const DeviceInterface&                  vk                                      = context.getDeviceInterface();
-       const InstanceInterface&                vki                                     = context.getInstanceInterface();
-       const VkDevice                                  device                          = context.getDevice();
-       const VkPhysicalDevice                  physDevice                      = context.getPhysicalDevice();
-       const deUint32                                  queueFamilyIndex        = context.getUniversalQueueFamilyIndex();
-       const VkQueue                                   queue                           = context.getUniversalQueue();
-       Allocator&                                              allocator                       = context.getDefaultAllocator();
+       if (VK_IMAGE_VIEW_TYPE_3D == params.image.viewType &&
+               (!de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), "VK_KHR_maintenance1")))
+               TCU_THROW(NotSupportedError, "Extension VK_KHR_maintenance1 not supported");
+
+       const DeviceInterface&                  vk                                              = context.getDeviceInterface();
+       const InstanceInterface&                vki                                             = context.getInstanceInterface();
+       const VkDevice                                  device                                  = context.getDevice();
+       const VkPhysicalDevice                  physDevice                              = context.getPhysicalDevice();
+       const deUint32                                  queueFamilyIndex                = context.getUniversalQueueFamilyIndex();
+       const VkQueue                                   queue                                   = context.getUniversalQueue();
+       Allocator&                                              allocator                               = context.getDefaultAllocator();
 
        checkGeometryShaderSupport(vki, physDevice);
 
        const VkFormat                                  colorFormat                             = VK_FORMAT_R8G8B8A8_UNORM;
-       const VkImageSubresourceRange   colorSubresourceRange   = makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, params.image.numLayers);
+       const deUint32                                  numLayers                               = (VK_IMAGE_VIEW_TYPE_3D == params.image.viewType ? params.image.size.depth : params.image.numLayers);
        const Vec4                                              clearColor                              = Vec4(0.0f, 0.0f, 0.0f, 1.0f);
        const VkDeviceSize                              colorBufferSize                 = params.image.size.width * params.image.size.height * params.image.size.depth * params.image.numLayers * tcu::getPixelSize(mapVkFormat(colorFormat));
-       const VkImageCreateFlags                imageCreateFlags                = (isCubeImageViewType(params.image.viewType) ? VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT : (VkImageCreateFlagBits)0);
-
-       const Unique<VkImage>                   colorImage                      (makeImage                              (vk, device, makeImageCreateInfo(imageCreateFlags, getImageType(params.image.viewType), colorFormat, params.image.size,
-                                                                                                                                                                params.image.numLayers, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT)));
-       const UniquePtr<Allocation>             colorImageAlloc         (bindImage                              (vk, device, allocator, *colorImage, MemoryRequirement::Any));
-       const Unique<VkImageView>               colorAttachment         (makeImageView                  (vk, device, *colorImage, params.image.viewType, colorFormat, colorSubresourceRange));
-       const Unique<VkBuffer>                  colorBuffer                     (makeBuffer                             (vk, device, makeBufferCreateInfo(colorBufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT)));
-       const UniquePtr<Allocation>             colorBufferAlloc        (bindBuffer                             (vk, device, allocator, *colorBuffer, MemoryRequirement::HostVisible));
-
-       const Unique<VkShaderModule>    vertexModule            (createShaderModule             (vk, device, context.getBinaryCollection().get("vert"), 0u));
-       const Unique<VkShaderModule>    geometryModule          (createShaderModule             (vk, device, context.getBinaryCollection().get("geom"), 0u));
-       const Unique<VkShaderModule>    fragmentModule          (createShaderModule             (vk, device, context.getBinaryCollection().get("frag"), 0u));
-
-       const Unique<VkRenderPass>              renderPass                      (makeRenderPass                 (vk, device, colorFormat));
-       const Unique<VkFramebuffer>             framebuffer                     (makeFramebuffer                (vk, device, *renderPass, *colorAttachment, params.image.size.width,  params.image.size.height, params.image.numLayers));
-       const Unique<VkPipelineLayout>  pipelineLayout          (makePipelineLayout             (vk, device));
-       const Unique<VkPipeline>                pipeline                        (makeGraphicsPipeline   (vk, device, *pipelineLayout, *renderPass, *vertexModule, *geometryModule, *fragmentModule,
-                                                                                                                                                                makeExtent2D(params.image.size.width, params.image.size.height)));
-       const Unique<VkCommandPool>             cmdPool                         (makeCommandPool                (vk, device, queueFamilyIndex));
-       const Unique<VkCommandBuffer>   cmdBuffer                       (makeCommandBuffer              (vk, device, *cmdPool));
+       const VkImageCreateFlags                imageCreateFlags                = (isCubeImageViewType(params.image.viewType) ? VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT : (VkImageCreateFlagBits)0) |
+                                                                                                                         (VK_IMAGE_VIEW_TYPE_3D == params.image.viewType ? VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR : (VkImageCreateFlagBits)0);
+       const VkImageViewType                   viewType                                = (VK_IMAGE_VIEW_TYPE_3D == params.image.viewType ? VK_IMAGE_VIEW_TYPE_2D_ARRAY : params.image.viewType);
+
+       const Unique<VkImage>                   colorImage                              (makeImage                              (vk, device, makeImageCreateInfo(imageCreateFlags, getImageType(params.image.viewType), colorFormat, params.image.size,
+                                                                                                                                                                        params.image.numLayers, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT)));
+       const UniquePtr<Allocation>             colorImageAlloc                 (bindImage                              (vk, device, allocator, *colorImage, MemoryRequirement::Any));
+       const Unique<VkImageView>               colorAttachment                 (makeImageView                  (vk, device, *colorImage, viewType, colorFormat, makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, numLayers)));
+
+       const Unique<VkBuffer>                  colorBuffer                             (makeBuffer                             (vk, device, makeBufferCreateInfo(colorBufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT)));
+       const UniquePtr<Allocation>             colorBufferAlloc                (bindBuffer                             (vk, device, allocator, *colorBuffer, MemoryRequirement::HostVisible));
+
+       const Unique<VkShaderModule>    vertexModule                    (createShaderModule             (vk, device, context.getBinaryCollection().get("vert"), 0u));
+       const Unique<VkShaderModule>    geometryModule                  (createShaderModule             (vk, device, context.getBinaryCollection().get("geom"), 0u));
+       const Unique<VkShaderModule>    fragmentModule                  (createShaderModule             (vk, device, context.getBinaryCollection().get("frag"), 0u));
+
+       const Unique<VkRenderPass>              renderPass                              (makeRenderPass                 (vk, device, colorFormat));
+       const Unique<VkFramebuffer>             framebuffer                             (makeFramebuffer                (vk, device, *renderPass, *colorAttachment, params.image.size.width,  params.image.size.height, numLayers));
+       const Unique<VkPipelineLayout>  pipelineLayout                  (makePipelineLayout             (vk, device));
+       const Unique<VkPipeline>                pipeline                                (makeGraphicsPipeline   (vk, device, *pipelineLayout, *renderPass, *vertexModule, *geometryModule, *fragmentModule,
+                                                                                                                                                                        makeExtent2D(params.image.size.width, params.image.size.height)));
+       const Unique<VkCommandPool>             cmdPool                                 (makeCommandPool                (vk, device, queueFamilyIndex));
+       const Unique<VkCommandBuffer>   cmdBuffer                               (makeCommandBuffer              (vk, device, *cmdPool));
 
        zeroBuffer(vk, device, *colorBufferAlloc, colorBufferSize);
 
@@ -953,7 +962,8 @@ tcu::TestStatus test (Context& context, const TestParams params)
 
        // Prepare color image for copy
        {
-               const VkImageMemoryBarrier barriers[] =
+               const VkImageSubresourceRange   colorSubresourceRange   = makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, params.image.numLayers);
+               const VkImageMemoryBarrier              barriers[] =
                {
                        {
                                VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,                 // VkStructureType                      sType;
@@ -1042,11 +1052,11 @@ tcu::TestCaseGroup* createLayeredRenderingTests (tcu::TestContext& testCtx)
 
        const ImageParams imageParams[] =
        {
-               { VK_IMAGE_VIEW_TYPE_1D_ARRAY,          { 64,  1,  1 },         4       },
-               { VK_IMAGE_VIEW_TYPE_2D_ARRAY,          { 64, 64,  1 },         4       },
-               { VK_IMAGE_VIEW_TYPE_CUBE,                      { 64, 64,  1 },         6       },
-               { VK_IMAGE_VIEW_TYPE_CUBE_ARRAY,        { 64, 64,  1 },         2*6     },
-               // No support for rendering to 3d image slices in Vulkan 1.0
+               { VK_IMAGE_VIEW_TYPE_1D_ARRAY,          { 64,  1, 1 },  4       },
+               { VK_IMAGE_VIEW_TYPE_2D_ARRAY,          { 64, 64, 1 },  4       },
+               { VK_IMAGE_VIEW_TYPE_CUBE,                      { 64, 64, 1 },  6       },
+               { VK_IMAGE_VIEW_TYPE_CUBE_ARRAY,        { 64, 64, 1 },  2*6     },
+               { VK_IMAGE_VIEW_TYPE_3D,                        { 64, 64, 8 },  1       }
        };
 
        for (int imageParamNdx = 0; imageParamNdx < DE_LENGTH_OF_ARRAY(imageParams); ++imageParamNdx)
index 3ec6ecc..5f389eb 100644 (file)
@@ -548,6 +548,10 @@ tcu::PixelBufferAccess getExpectedData (tcu::TextureLevel& textureLevel, const C
 
 tcu::TestStatus test (Context& context, const CaseDef caseDef)
 {
+       if (VK_IMAGE_VIEW_TYPE_3D == caseDef.imageType &&
+               (!de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), "VK_KHR_maintenance1")))
+               TCU_THROW(NotSupportedError, "Extension VK_KHR_maintenance1 not supported");
+
        const DeviceInterface&                  vk                                      = context.getDeviceInterface();
        const VkDevice                                  device                          = context.getDevice();
        const VkQueue                                   queue                           = context.getUniversalQueue();
@@ -563,13 +567,14 @@ tcu::TestStatus test (Context& context, const CaseDef caseDef)
                Vec4(0.1f, 0.0f, 1.0f, 1.0f)
        };
 
+       const int                                               numLayers                       = (VK_IMAGE_VIEW_TYPE_3D == caseDef.imageType ? caseDef.renderSize.z() : caseDef.numLayers);
        const VkDeviceSize                              colorBufferSize         = caseDef.renderSize.x() * caseDef.renderSize.y() * caseDef.renderSize.z() * caseDef.numLayers * tcu::getPixelSize(mapVkFormat(caseDef.colorFormat));
        const Unique<VkBuffer>                  colorBuffer                     (makeBuffer(vk, device, colorBufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT));
        const UniquePtr<Allocation>             colorBufferAlloc        (bindBuffer(vk, device, allocator, *colorBuffer, MemoryRequirement::HostVisible));
 
        const Unique<VkShaderModule>    vertexModule            (createShaderModule                     (vk, device, context.getBinaryCollection().get("vert"), 0u));
        const Unique<VkShaderModule>    fragmentModule          (createShaderModule                     (vk, device, context.getBinaryCollection().get("frag"), 0u));
-       const Unique<VkRenderPass>              renderPass                      (makeRenderPass                         (vk, device, caseDef.colorFormat, static_cast<deUint32>(caseDef.numLayers)));
+       const Unique<VkRenderPass>              renderPass                      (makeRenderPass                         (vk, device, caseDef.colorFormat, static_cast<deUint32>(numLayers)));
        const Unique<VkPipelineLayout>  pipelineLayout          (makePipelineLayout                     (vk, device));
        vector<SharedPtrVkPipeline>             pipeline;
        const Unique<VkCommandPool>             cmdPool                         (makeCommandPool  (vk, device, queueFamilyIndex));
@@ -583,14 +588,15 @@ tcu::TestStatus test (Context& context, const CaseDef caseDef)
 
        //create colorImage
        {
+               const VkImageViewCreateFlags    flags                   = (VK_IMAGE_VIEW_TYPE_3D == caseDef.imageType ? (VkImageViewCreateFlags)VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR : (VkImageViewCreateFlags)0);
                const VkImageUsageFlags                 colorImageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
-               colorImage = makeImage(vk, device, VkImageViewCreateFlags(0), getImageType(caseDef.imageType), caseDef.colorFormat, caseDef.renderSize, caseDef.numLayers, colorImageUsage);
+               colorImage = makeImage(vk, device, flags, getImageType(caseDef.imageType), caseDef.colorFormat, caseDef.renderSize, caseDef.numLayers, colorImageUsage);
                colorImageAlloc = bindImage(vk, device, allocator, *colorImage, MemoryRequirement::Any);
        }
 
        //create vertexBuffer
        {
-               const vector<Vertex4RGBA>       vertices                        = genFullQuadVertices(caseDef.numLayers, vector<Vec4>(color, color + DE_LENGTH_OF_ARRAY(color)));
+               const vector<Vertex4RGBA>       vertices                        = genFullQuadVertices(numLayers, vector<Vec4>(color, color + DE_LENGTH_OF_ARRAY(color)));
                const VkDeviceSize                      vertexBufferSize        = sizeInBytes(vertices);
 
                vertexBuffer            = makeBuffer(vk, device, vertexBufferSize, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT);
@@ -600,22 +606,24 @@ tcu::TestStatus test (Context& context, const CaseDef caseDef)
        }
 
        //create attachmentHandles and pipelines
-       for (int layerNdx = 0; layerNdx < caseDef.numLayers; ++layerNdx)
+       for (int layerNdx = 0; layerNdx < numLayers; ++layerNdx)
        {
-               colorAttachments.push_back(makeSharedPtr(makeImageView(vk, device, *colorImage,
-                                                                                                                         (caseDef.imageType == VK_IMAGE_VIEW_TYPE_CUBE || caseDef.imageType == VK_IMAGE_VIEW_TYPE_CUBE_ARRAY ? VK_IMAGE_VIEW_TYPE_2D : caseDef.imageType),
-                                                                                                                         caseDef.colorFormat, makeColorSubresourceRange(layerNdx, 1))));
+               const VkImageViewType   imageType = (VK_IMAGE_VIEW_TYPE_3D == caseDef.imageType ? VK_IMAGE_VIEW_TYPE_2D_ARRAY :
+                                                                                       (VK_IMAGE_VIEW_TYPE_CUBE == caseDef.imageType || VK_IMAGE_VIEW_TYPE_CUBE_ARRAY == caseDef.imageType ? VK_IMAGE_VIEW_TYPE_2D :
+                                                                                       caseDef.imageType));
+
+               colorAttachments.push_back(makeSharedPtr(makeImageView(vk, device, *colorImage, imageType, caseDef.colorFormat, makeColorSubresourceRange(layerNdx, 1))));
                attachmentHandles.push_back(**colorAttachments.back());
 
                pipeline.push_back(makeSharedPtr(makeGraphicsPipeline(vk, device, *pipelineLayout, *renderPass, *vertexModule, *fragmentModule,
                                                                                                                          caseDef.renderSize, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP, static_cast<deUint32>(layerNdx))));
        }
 
-       framebuffer = makeFramebuffer(vk, device, *renderPass, caseDef.numLayers, &attachmentHandles[0], static_cast<deUint32>(caseDef.renderSize.x()), static_cast<deUint32>(caseDef.renderSize.y()));
+       framebuffer = makeFramebuffer(vk, device, *renderPass, numLayers, &attachmentHandles[0], static_cast<deUint32>(caseDef.renderSize.x()), static_cast<deUint32>(caseDef.renderSize.y()));
 
        beginCommandBuffer(vk, *cmdBuffer);
        {
-               const vector<VkClearValue>      clearValues                     (caseDef.numLayers, getClearValue(caseDef.colorFormat));
+               const vector<VkClearValue>      clearValues                     (numLayers, getClearValue(caseDef.colorFormat));
                const VkRect2D                          renderArea                      =
                {
                        makeOffset2D(0, 0),
@@ -638,7 +646,7 @@ tcu::TestStatus test (Context& context, const CaseDef caseDef)
        }
 
        //cmdDraw
-       for (deUint32 layerNdx = 0; layerNdx < static_cast<deUint32>(caseDef.numLayers); ++layerNdx)
+       for (deUint32 layerNdx = 0; layerNdx < static_cast<deUint32>(numLayers); ++layerNdx)
        {
                if (layerNdx != 0)
                        vk.cmdNextSubpass(*cmdBuffer, VK_SUBPASS_CONTENTS_INLINE);
@@ -757,6 +765,7 @@ void addTestCasesWithFunctions (tcu::TestCaseGroup* group)
                { VK_IMAGE_VIEW_TYPE_1D_ARRAY,          IVec3(54,  1, 1),       4,              VK_FORMAT_UNDEFINED},
                { VK_IMAGE_VIEW_TYPE_2D,                        IVec3(22, 64, 1),       1,              VK_FORMAT_UNDEFINED},
                { VK_IMAGE_VIEW_TYPE_2D_ARRAY,          IVec3(22, 64, 1),       4,              VK_FORMAT_UNDEFINED},
+               { VK_IMAGE_VIEW_TYPE_3D,                        IVec3(22, 64, 7),       1,              VK_FORMAT_UNDEFINED},
                { VK_IMAGE_VIEW_TYPE_CUBE,                      IVec3(35, 35, 1),       6,              VK_FORMAT_UNDEFINED},
                { VK_IMAGE_VIEW_TYPE_CUBE_ARRAY,        IVec3(35, 35, 1),       2*6,    VK_FORMAT_UNDEFINED},
        };
index 9b86dfb..49c72b0 100644 (file)
@@ -540,9 +540,10 @@ public:
 
        VkQueueFlags getQueueFlags (const OperationContext& context) const
        {
-               DE_UNREF(context);
-               if (BUFFER_OP_FILL == m_bufferOp)
+               if (std::find(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), "VK_KHR_maintenance1") == context.getDeviceExtensions().end() ||
+                       BUFFER_OP_UPDATE != m_bufferOp)
                        return VK_QUEUE_COMPUTE_BIT | VK_QUEUE_GRAPHICS_BIT;
+
                return VK_QUEUE_TRANSFER_BIT;
        }
 
index 263dc72..0f14ef9 100644 (file)
@@ -120,21 +120,21 @@ public:
                        const std::vector<std::string>& deviceExtensions        = context.getDeviceExtensions();
                        std::vector<const char*>                charDevExtensions;
 
-                       for (std::size_t ndx = 0; ndx < deviceExtensions.size(); ++ndx)
+                       for (size_t ndx = 0; ndx < deviceExtensions.size(); ++ndx)
                                charDevExtensions.push_back(deviceExtensions[ndx].c_str());
 
                        const VkDeviceCreateInfo                deviceInfo              =
                        {
-                               VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,                                                   //VkStructureType                                       sType;
-                               DE_NULL,                                                                                                                //const void*                                           pNext;
-                               0u,                                                                                                                             //VkDeviceCreateFlags                           flags;
-                               static_cast<deUint32>(queueInfos.size()),                                               //deUint32                                                      queueCreateInfoCount;
-                               &queueInfos[0],                                                                                                 //const VkDeviceQueueCreateInfo*        pQueueCreateInfos;
-                               0u,                                                                                                                             //deUint32                                                      enabledLayerCount;
-                               DE_NULL,                                                                                                                //const char* const*                            ppEnabledLayerNames;
-                               static_cast<deUint32>(deviceExtensions.size()),                                 //deUint32                                                      enabledExtensionCount;
-                               charDevExtensions.empty() ? DE_NULL : &charDevExtensions[0],    //const char* const*                            ppEnabledExtensionNames;
-                               &context.getDeviceFeatures()                                                                    //const VkPhysicalDeviceFeatures*       pEnabledFeatures;
+                               VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,                   //VkStructureType                                       sType;
+                               DE_NULL,                                                                                //const void*                                           pNext;
+                               0u,                                                                                             //VkDeviceCreateFlags                           flags;
+                               static_cast<deUint32>(queueInfos.size()),               //deUint32                                                      queueCreateInfoCount;
+                               &queueInfos[0],                                                                 //const VkDeviceQueueCreateInfo*        pQueueCreateInfos;
+                               0u,                                                                                             //deUint32                                                      enabledLayerCount;
+                               DE_NULL,                                                                                //const char* const*                            ppEnabledLayerNames;
+                               static_cast<deUint32>(deviceExtensions.size()), //deUint32                                                      enabledExtensionCount;
+                               &charDevExtensions[0],                                                  //const char* const*                            ppEnabledExtensionNames;
+                               &context.getDeviceFeatures()                                    //const VkPhysicalDeviceFeatures*       pEnabledFeatures;
                        };
 
                        m_logicalDevice = createDevice(instance, physicalDevice, &deviceInfo);
index 1962958..72024c9 100644 (file)
@@ -91,7 +91,8 @@ vector<string> filterExtensions(const vector<VkExtensionProperties>& deviceExten
        const char*             extensionGroups[] =
        {
                "VK_KHR_",
-               "VK_EXT_"
+               "VK_EXT_",
+               "VK_KHX_"
        };
 
        for (size_t deviceExtNdx = 0; deviceExtNdx < deviceExtensions.size(); deviceExtNdx++)
index ee74492..3c0acc5 100644 (file)
@@ -1307,6 +1307,2219 @@ dEQP-VK.api.info.image_format_properties.3d.linear.astc_12x10_unorm_block
 dEQP-VK.api.info.image_format_properties.3d.linear.astc_12x10_srgb_block
 dEQP-VK.api.info.image_format_properties.3d.linear.astc_12x12_unorm_block
 dEQP-VK.api.info.image_format_properties.3d.linear.astc_12x12_srgb_block
+dEQP-VK.api.info.get_physical_device_properties2.features
+dEQP-VK.api.info.get_physical_device_properties2.properties
+dEQP-VK.api.info.get_physical_device_properties2.format_properties
+dEQP-VK.api.info.get_physical_device_properties2.queue_family_properties
+dEQP-VK.api.info.get_physical_device_properties2.memory_properties
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r4g4_unorm_pack8
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r5g6b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b5g6r5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8a8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8a8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8a8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8a8_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r8g8b8a8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8a8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8a8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8a8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8a8_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b8g8r8a8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16a16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16a16_snorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16a16_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16a16_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16a16_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16a16_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r16g16b16a16_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32g32_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32g32_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32g32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32g32b32_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32g32b32_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32g32b32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32g32b32a32_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32g32b32a32_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r32g32b32a32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64g64_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64g64_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64g64_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64g64b64_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64g64b64_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64g64b64_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64g64b64a64_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64g64b64a64_sint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.r64g64b64a64_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.d16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.optimal.x8_d24_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.optimal.d32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.optimal.s8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.d16_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.d24_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.d32_sfloat_s8_uint
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc1_rgb_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc1_rgb_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc1_rgba_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc1_rgba_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc2_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc2_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc3_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc3_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc4_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc4_snorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc5_snorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc6h_ufloat_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc6h_sfloat_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc7_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.bc7_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.eac_r11_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.eac_r11_snorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.eac_r11g11_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.eac_r11g11_snorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_4x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_4x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_5x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_5x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_5x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_5x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_6x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_6x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_6x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_6x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_8x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_8x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_8x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_8x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_8x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_8x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_10x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_10x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_10x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_10x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_10x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_10x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_10x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_10x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_12x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_12x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_12x12_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.optimal.astc_12x12_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.r4g4_unorm_pack8
+dEQP-VK.api.info.image_format_properties2.1d.linear.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.linear.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.linear.r5g6b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.linear.b5g6r5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.linear.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.linear.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.linear.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8a8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8a8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8a8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8a8_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r8g8b8a8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8a8_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8a8_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8a8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8a8_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.b8g8r8a8_srgb
+dEQP-VK.api.info.image_format_properties2.1d.linear.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16a16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16a16_snorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16a16_uscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16a16_sscaled
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16a16_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16a16_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r16g16b16a16_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32g32_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32g32_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32g32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32g32b32_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32g32b32_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32g32b32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32g32b32a32_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32g32b32a32_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r32g32b32a32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64g64_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64g64_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64g64_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64g64b64_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64g64b64_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64g64b64_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64g64b64a64_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64g64b64a64_sint
+dEQP-VK.api.info.image_format_properties2.1d.linear.r64g64b64a64_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.d16_unorm
+dEQP-VK.api.info.image_format_properties2.1d.linear.x8_d24_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.1d.linear.d32_sfloat
+dEQP-VK.api.info.image_format_properties2.1d.linear.s8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.d16_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.d24_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.d32_sfloat_s8_uint
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc1_rgb_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc1_rgb_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc1_rgba_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc1_rgba_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc2_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc2_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc3_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc3_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc4_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc4_snorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc5_snorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc6h_ufloat_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc6h_sfloat_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc7_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.bc7_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.eac_r11_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.eac_r11_snorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.eac_r11g11_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.eac_r11g11_snorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_4x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_4x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_5x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_5x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_5x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_5x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_6x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_6x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_6x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_6x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_8x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_8x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_8x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_8x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_8x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_8x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_10x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_10x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_10x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_10x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_10x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_10x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_10x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_10x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_12x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_12x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_12x12_unorm_block
+dEQP-VK.api.info.image_format_properties2.1d.linear.astc_12x12_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r4g4_unorm_pack8
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r5g6b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b5g6r5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8a8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8a8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8a8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8a8_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r8g8b8a8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8a8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8a8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8a8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8a8_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b8g8r8a8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16a16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16a16_snorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16a16_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16a16_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16a16_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16a16_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r16g16b16a16_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32g32_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32g32_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32g32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32g32b32_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32g32b32_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32g32b32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32g32b32a32_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32g32b32a32_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r32g32b32a32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64g64_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64g64_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64g64_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64g64b64_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64g64b64_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64g64b64_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64g64b64a64_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64g64b64a64_sint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.r64g64b64a64_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.d16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.optimal.x8_d24_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.optimal.d32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.optimal.s8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.d16_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.d24_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.d32_sfloat_s8_uint
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc1_rgb_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc1_rgb_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc1_rgba_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc1_rgba_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc2_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc2_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc3_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc3_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc4_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc4_snorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc5_snorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc6h_ufloat_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc6h_sfloat_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc7_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.bc7_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.eac_r11_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.eac_r11_snorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.eac_r11g11_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.eac_r11g11_snorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_4x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_4x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_5x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_5x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_5x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_5x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_6x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_6x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_6x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_6x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_8x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_8x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_8x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_8x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_8x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_8x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_10x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_10x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_10x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_10x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_10x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_10x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_10x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_10x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_12x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_12x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_12x12_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.optimal.astc_12x12_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.r4g4_unorm_pack8
+dEQP-VK.api.info.image_format_properties2.2d.linear.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.linear.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.linear.r5g6b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.linear.b5g6r5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.linear.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.linear.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.linear.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8a8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8a8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8a8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8a8_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r8g8b8a8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8a8_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8a8_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8a8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8a8_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.b8g8r8a8_srgb
+dEQP-VK.api.info.image_format_properties2.2d.linear.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16a16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16a16_snorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16a16_uscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16a16_sscaled
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16a16_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16a16_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r16g16b16a16_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32g32_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32g32_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32g32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32g32b32_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32g32b32_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32g32b32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32g32b32a32_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32g32b32a32_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r32g32b32a32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64g64_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64g64_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64g64_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64g64b64_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64g64b64_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64g64b64_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64g64b64a64_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64g64b64a64_sint
+dEQP-VK.api.info.image_format_properties2.2d.linear.r64g64b64a64_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.d16_unorm
+dEQP-VK.api.info.image_format_properties2.2d.linear.x8_d24_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.2d.linear.d32_sfloat
+dEQP-VK.api.info.image_format_properties2.2d.linear.s8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.d16_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.d24_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.d32_sfloat_s8_uint
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc1_rgb_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc1_rgb_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc1_rgba_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc1_rgba_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc2_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc2_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc3_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc3_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc4_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc4_snorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc5_snorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc6h_ufloat_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc6h_sfloat_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc7_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.bc7_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.eac_r11_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.eac_r11_snorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.eac_r11g11_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.eac_r11g11_snorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_4x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_4x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_5x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_5x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_5x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_5x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_6x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_6x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_6x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_6x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_8x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_8x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_8x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_8x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_8x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_8x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_10x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_10x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_10x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_10x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_10x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_10x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_10x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_10x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_12x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_12x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_12x12_unorm_block
+dEQP-VK.api.info.image_format_properties2.2d.linear.astc_12x12_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r4g4_unorm_pack8
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r5g6b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b5g6r5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8a8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8a8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8a8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8a8_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r8g8b8a8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8a8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8a8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8a8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8a8_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b8g8r8a8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16a16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16a16_snorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16a16_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16a16_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16a16_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16a16_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r16g16b16a16_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32g32_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32g32_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32g32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32g32b32_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32g32b32_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32g32b32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32g32b32a32_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32g32b32a32_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r32g32b32a32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64g64_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64g64_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64g64_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64g64b64_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64g64b64_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64g64b64_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64g64b64a64_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64g64b64a64_sint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.r64g64b64a64_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.d16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.optimal.x8_d24_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.optimal.d32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.optimal.s8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.d16_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.d24_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.d32_sfloat_s8_uint
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc1_rgb_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc1_rgb_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc1_rgba_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc1_rgba_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc2_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc2_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc3_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc3_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc4_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc4_snorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc5_snorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc6h_ufloat_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc6h_sfloat_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc7_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.bc7_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.eac_r11_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.eac_r11_snorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.eac_r11g11_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.eac_r11g11_snorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_4x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_4x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_5x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_5x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_5x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_5x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_6x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_6x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_6x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_6x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_8x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_8x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_8x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_8x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_8x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_8x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_10x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_10x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_10x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_10x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_10x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_10x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_10x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_10x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_12x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_12x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_12x12_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.optimal.astc_12x12_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.r4g4_unorm_pack8
+dEQP-VK.api.info.image_format_properties2.3d.linear.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.linear.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.linear.r5g6b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.linear.b5g6r5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.linear.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.linear.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.linear.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8a8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8a8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8a8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8a8_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r8g8b8a8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8a8_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8a8_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8a8_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8a8_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8a8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8a8_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.b8g8r8a8_srgb
+dEQP-VK.api.info.image_format_properties2.3d.linear.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16a16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16a16_snorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16a16_uscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16a16_sscaled
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16a16_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16a16_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r16g16b16a16_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32g32_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32g32_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32g32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32g32b32_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32g32b32_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32g32b32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32g32b32a32_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32g32b32a32_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r32g32b32a32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64g64_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64g64_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64g64_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64g64b64_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64g64b64_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64g64b64_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64g64b64a64_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64g64b64a64_sint
+dEQP-VK.api.info.image_format_properties2.3d.linear.r64g64b64a64_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.d16_unorm
+dEQP-VK.api.info.image_format_properties2.3d.linear.x8_d24_unorm_pack32
+dEQP-VK.api.info.image_format_properties2.3d.linear.d32_sfloat
+dEQP-VK.api.info.image_format_properties2.3d.linear.s8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.d16_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.d24_unorm_s8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.d32_sfloat_s8_uint
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc1_rgb_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc1_rgb_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc1_rgba_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc1_rgba_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc2_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc2_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc3_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc3_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc4_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc4_snorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc5_snorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc6h_ufloat_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc6h_sfloat_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc7_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.bc7_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.eac_r11_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.eac_r11_snorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.eac_r11g11_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.eac_r11g11_snorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_4x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_4x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_5x4_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_5x4_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_5x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_5x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_6x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_6x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_6x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_6x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_8x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_8x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_8x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_8x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_8x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_8x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_10x5_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_10x5_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_10x6_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_10x6_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_10x8_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_10x8_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_10x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_10x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_12x10_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_12x10_srgb_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_12x12_unorm_block
+dEQP-VK.api.info.image_format_properties2.3d.linear.astc_12x12_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r4g4_unorm_pack8
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r5g6b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b5g6r5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r8g8b8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b8g8r8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16a16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16a16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16a16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16a16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16a16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16a16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r16g16b16a16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32g32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32g32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32g32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32g32b32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32g32b32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32g32b32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32g32b32a32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32g32b32a32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r32g32b32a32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64g64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64g64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64g64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64g64b64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64g64b64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64g64b64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64g64b64a64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64g64b64a64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.r64g64b64a64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.d16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.x8_d24_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.d32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.d16_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.d24_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.d32_sfloat_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc1_rgb_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc1_rgb_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc1_rgba_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc1_rgba_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc2_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc2_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc3_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc3_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc4_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc5_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc6h_ufloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc6h_sfloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc7_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.bc7_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.eac_r11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.eac_r11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.eac_r11g11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.eac_r11g11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_4x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_4x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_5x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_5x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_5x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_5x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_6x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_6x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_6x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_6x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_8x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_8x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_8x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_8x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_8x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_8x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_10x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_10x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_10x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_10x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_10x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_10x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_10x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_10x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_12x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_12x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_12x12_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.optimal.astc_12x12_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r4g4_unorm_pack8
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r5g6b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b5g6r5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r8g8b8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b8g8r8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16a16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16a16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16a16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16a16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16a16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16a16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r16g16b16a16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32g32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32g32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32g32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32g32b32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32g32b32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32g32b32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32g32b32a32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32g32b32a32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r32g32b32a32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64g64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64g64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64g64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64g64b64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64g64b64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64g64b64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64g64b64a64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64g64b64a64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.r64g64b64a64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.d16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.x8_d24_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.d32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.d16_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.d24_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.d32_sfloat_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc1_rgb_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc1_rgb_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc1_rgba_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc1_rgba_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc2_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc2_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc3_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc3_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc4_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc5_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc6h_ufloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc6h_sfloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc7_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.bc7_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.eac_r11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.eac_r11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.eac_r11g11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.eac_r11g11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_4x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_4x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_5x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_5x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_5x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_5x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_6x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_6x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_6x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_6x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_8x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_8x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_8x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_8x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_8x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_8x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_10x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_10x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_10x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_10x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_10x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_10x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_10x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_10x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_12x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_12x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_12x12_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.1d.linear.astc_12x12_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r4g4_unorm_pack8
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r5g6b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b5g6r5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r8g8b8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b8g8r8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16a16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16a16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16a16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16a16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16a16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16a16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r16g16b16a16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32g32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32g32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32g32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32g32b32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32g32b32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32g32b32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32g32b32a32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32g32b32a32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r32g32b32a32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64g64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64g64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64g64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64g64b64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64g64b64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64g64b64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64g64b64a64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64g64b64a64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.r64g64b64a64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.d16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.x8_d24_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.d32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.d16_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.d24_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.d32_sfloat_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc1_rgb_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc1_rgb_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc1_rgba_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc1_rgba_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc2_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc2_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc3_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc3_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc4_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc5_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc6h_ufloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc6h_sfloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc7_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.bc7_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.eac_r11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.eac_r11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.eac_r11g11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.eac_r11g11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_4x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_4x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_5x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_5x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_5x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_5x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_6x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_6x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_6x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_6x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_8x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_8x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_8x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_8x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_8x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_8x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_10x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_10x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_10x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_10x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_10x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_10x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_10x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_10x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_12x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_12x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_12x12_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.optimal.astc_12x12_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r4g4_unorm_pack8
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r5g6b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b5g6r5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r8g8b8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b8g8r8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16a16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16a16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16a16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16a16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16a16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16a16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r16g16b16a16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32g32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32g32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32g32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32g32b32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32g32b32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32g32b32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32g32b32a32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32g32b32a32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r32g32b32a32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64g64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64g64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64g64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64g64b64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64g64b64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64g64b64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64g64b64a64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64g64b64a64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.r64g64b64a64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.d16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.x8_d24_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.d32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.d16_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.d24_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.d32_sfloat_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc1_rgb_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc1_rgb_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc1_rgba_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc1_rgba_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc2_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc2_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc3_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc3_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc4_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc5_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc6h_ufloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc6h_sfloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc7_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.bc7_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.eac_r11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.eac_r11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.eac_r11g11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.eac_r11g11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_4x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_4x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_5x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_5x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_5x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_5x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_6x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_6x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_6x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_6x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_8x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_8x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_8x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_8x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_8x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_8x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_10x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_10x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_10x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_10x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_10x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_10x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_10x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_10x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_12x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_12x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_12x12_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.2d.linear.astc_12x12_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r4g4_unorm_pack8
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r5g6b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b5g6r5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r8g8b8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b8g8r8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16a16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16a16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16a16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16a16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16a16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16a16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r16g16b16a16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32g32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32g32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32g32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32g32b32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32g32b32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32g32b32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32g32b32a32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32g32b32a32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r32g32b32a32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64g64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64g64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64g64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64g64b64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64g64b64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64g64b64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64g64b64a64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64g64b64a64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.r64g64b64a64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.d16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.x8_d24_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.d32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.d16_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.d24_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.d32_sfloat_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc1_rgb_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc1_rgb_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc1_rgba_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc1_rgba_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc2_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc2_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc3_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc3_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc4_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc5_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc6h_ufloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc6h_sfloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc7_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.bc7_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.eac_r11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.eac_r11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.eac_r11g11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.eac_r11g11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_4x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_4x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_5x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_5x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_5x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_5x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_6x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_6x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_6x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_6x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_8x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_8x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_8x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_8x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_8x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_8x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_10x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_10x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_10x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_10x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_10x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_10x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_10x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_10x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_12x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_12x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_12x12_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.optimal.astc_12x12_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r4g4_unorm_pack8
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r4g4b4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b4g4r4a4_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r5g6b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b5g6r5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r5g5b5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b5g5r5a1_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a1r5g5b5_unorm_pack16
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r8g8b8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8a8_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8a8_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8a8_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8a8_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8a8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8a8_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b8g8r8a8_srgb
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a8b8g8r8_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a8b8g8r8_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a8b8g8r8_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a8b8g8r8_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a8b8g8r8_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a8b8g8r8_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a8b8g8r8_srgb_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2r10g10b10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2r10g10b10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2r10g10b10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2r10g10b10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2r10g10b10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2r10g10b10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2b10g10r10_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2b10g10r10_snorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2b10g10r10_uscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2b10g10r10_sscaled_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2b10g10r10_uint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.a2b10g10r10_sint_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16a16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16a16_snorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16a16_uscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16a16_sscaled
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16a16_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16a16_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r16g16b16a16_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32g32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32g32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32g32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32g32b32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32g32b32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32g32b32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32g32b32a32_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32g32b32a32_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r32g32b32a32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64g64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64g64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64g64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64g64b64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64g64b64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64g64b64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64g64b64a64_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64g64b64a64_sint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.r64g64b64a64_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.b10g11r11_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.e5b9g9r9_ufloat_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.d16_unorm
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.x8_d24_unorm_pack32
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.d32_sfloat
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.d16_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.d24_unorm_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.d32_sfloat_s8_uint
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc1_rgb_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc1_rgb_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc1_rgba_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc1_rgba_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc2_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc2_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc3_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc3_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc4_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc5_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc6h_ufloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc6h_sfloat_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc7_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.bc7_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.etc2_r8g8b8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.etc2_r8g8b8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.etc2_r8g8b8a1_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.etc2_r8g8b8a1_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.etc2_r8g8b8a8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.etc2_r8g8b8a8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.eac_r11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.eac_r11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.eac_r11g11_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.eac_r11g11_snorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_4x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_4x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_5x4_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_5x4_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_5x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_5x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_6x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_6x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_6x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_6x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_8x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_8x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_8x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_8x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_8x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_8x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_10x5_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_10x5_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_10x6_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_10x6_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_10x8_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_10x8_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_10x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_10x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_12x10_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_12x10_srgb_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_12x12_unorm_block
+dEQP-VK.api.info.sparse_image_format_properties2.3d.linear.astc_12x12_srgb_block
 dEQP-VK.api.device_init.create_instance_name_version
 dEQP-VK.api.device_init.create_instance_invalid_api_version
 dEQP-VK.api.device_init.create_instance_null_appinfo
@@ -1315,6 +3528,7 @@ dEQP-VK.api.device_init.create_device
 dEQP-VK.api.device_init.create_multiple_devices
 dEQP-VK.api.device_init.create_device_unsupported_extensions
 dEQP-VK.api.device_init.create_device_various_queue_counts
+dEQP-VK.api.device_init.create_device_features2
 dEQP-VK.api.object_management.single.instance
 dEQP-VK.api.object_management.single.device
 dEQP-VK.api.object_management.single.device_memory_small
@@ -3348,6 +5562,8 @@ dEQP-VK.api.command_buffers.allocate_many_secondary
 dEQP-VK.api.command_buffers.execute_small_primary
 dEQP-VK.api.command_buffers.execute_large_primary
 dEQP-VK.api.command_buffers.reset_implicit
+dEQP-VK.api.command_buffers.trim_command_pool
+dEQP-VK.api.command_buffers.trim_command_pool_secondary
 dEQP-VK.api.command_buffers.record_single_primary
 dEQP-VK.api.command_buffers.record_many_primary
 dEQP-VK.api.command_buffers.record_single_secondary
@@ -6101,6 +8317,12 @@ dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_s8_uint_s8_ui
 dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_d16_unorm_s8_uint_d16_unorm_s8_uint
 dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_d24_unorm_s8_uint_d24_unorm_s8_uint
 dEQP-VK.api.copy_and_blit.image_to_image.all_formats.depth_stencil_d32_sfloat_s8_uint_d32_sfloat_s8_uint
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.3d_to_2d_by_slices
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.2d_to_3d_by_layers
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.3d_to_2d_whole
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.2d_to_3d_whole
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.3d_to_2d_regions
+dEQP-VK.api.copy_and_blit.image_to_image.3d_images.2d_to_3d_regions
 dEQP-VK.api.copy_and_blit.image_to_buffer.whole
 dEQP-VK.api.copy_and_blit.image_to_buffer.buffer_offset
 dEQP-VK.api.copy_and_blit.image_to_buffer.regions
@@ -16746,6 +18968,7 @@ dEQP-VK.api.fill_and_update_buffer.fill_buffer_second_part
 dEQP-VK.api.fill_and_update_buffer.update_buffer_second_part
 dEQP-VK.api.descriptor_pool.repeated_reset_short
 dEQP-VK.api.descriptor_pool.repeated_reset_long
+dEQP-VK.api.descriptor_pool.out_of_pool_memory
 dEQP-VK.api.null_handle.destroy_buffer
 dEQP-VK.api.null_handle.destroy_buffer_view
 dEQP-VK.api.null_handle.destroy_command_pool
@@ -88938,6 +91161,10 @@ dEQP-VK.pipeline.render_to_image.2d_array.22x64_4.r8g8b8a8_unorm
 dEQP-VK.pipeline.render_to_image.2d_array.22x64_4.r32_uint
 dEQP-VK.pipeline.render_to_image.2d_array.22x64_4.r16g16_sint
 dEQP-VK.pipeline.render_to_image.2d_array.22x64_4.r32g32b32a32_sfloat
+dEQP-VK.pipeline.render_to_image.3d.22x64x7.r8g8b8a8_unorm
+dEQP-VK.pipeline.render_to_image.3d.22x64x7.r32_uint
+dEQP-VK.pipeline.render_to_image.3d.22x64x7.r16g16_sint
+dEQP-VK.pipeline.render_to_image.3d.22x64x7.r32g32b32a32_sfloat
 dEQP-VK.pipeline.render_to_image.cube.35x35_6.r8g8b8a8_unorm
 dEQP-VK.pipeline.render_to_image.cube.35x35_6.r32_uint
 dEQP-VK.pipeline.render_to_image.cube.35x35_6.r16g16_sint
@@ -119811,6 +122038,28 @@ dEQP-VK.draw.instanced.draw_vk_primitive_topology_triangle_fan
 dEQP-VK.draw.instanced.draw_indexed_vk_primitive_topology_triangle_fan
 dEQP-VK.draw.instanced.draw_indirect_vk_primitive_topology_triangle_fan
 dEQP-VK.draw.instanced.draw_indexed_indirect_vk_primitive_topology_triangle_fan
+dEQP-VK.draw.shader_draw_parameters.base_vertex.draw
+dEQP-VK.draw.shader_draw_parameters.base_vertex.draw_indexed
+dEQP-VK.draw.shader_draw_parameters.base_vertex.draw_indirect
+dEQP-VK.draw.shader_draw_parameters.base_vertex.draw_indexed_indirect
+dEQP-VK.draw.shader_draw_parameters.base_instance.draw
+dEQP-VK.draw.shader_draw_parameters.base_instance.draw_indexed
+dEQP-VK.draw.shader_draw_parameters.base_instance.draw_indirect
+dEQP-VK.draw.shader_draw_parameters.base_instance.draw_indirect_first_instance
+dEQP-VK.draw.shader_draw_parameters.base_instance.draw_indexed_indirect
+dEQP-VK.draw.shader_draw_parameters.base_instance.draw_indexed_indirect_first_instance
+dEQP-VK.draw.shader_draw_parameters.draw_index.draw
+dEQP-VK.draw.shader_draw_parameters.draw_index.draw_instanced
+dEQP-VK.draw.shader_draw_parameters.draw_index.draw_indexed
+dEQP-VK.draw.shader_draw_parameters.draw_index.draw_indexed_instanced
+dEQP-VK.draw.negative_viewport_height.front_ccw_cull_none
+dEQP-VK.draw.negative_viewport_height.front_ccw_cull_front
+dEQP-VK.draw.negative_viewport_height.front_ccw_cull_back
+dEQP-VK.draw.negative_viewport_height.front_ccw_cull_both
+dEQP-VK.draw.negative_viewport_height.front_cw_cull_none
+dEQP-VK.draw.negative_viewport_height.front_cw_cull_front
+dEQP-VK.draw.negative_viewport_height.front_cw_cull_back
+dEQP-VK.draw.negative_viewport_height.front_cw_cull_both
 dEQP-VK.compute.basic.empty_shader
 dEQP-VK.compute.basic.ubo_to_ssbo_single_invocation
 dEQP-VK.compute.basic.ubo_to_ssbo_single_group
@@ -137707,6 +139956,13 @@ dEQP-VK.geometry.layered.cube_array.render_different_content
 dEQP-VK.geometry.layered.cube_array.fragment_layer
 dEQP-VK.geometry.layered.cube_array.invocation_per_layer
 dEQP-VK.geometry.layered.cube_array.multiple_layers_per_invocation
+dEQP-VK.geometry.layered.3d.render_to_default_layer
+dEQP-VK.geometry.layered.3d.render_to_one
+dEQP-VK.geometry.layered.3d.render_to_all
+dEQP-VK.geometry.layered.3d.render_different_content
+dEQP-VK.geometry.layered.3d.fragment_layer
+dEQP-VK.geometry.layered.3d.invocation_per_layer
+dEQP-VK.geometry.layered.3d.multiple_layers_per_invocation
 dEQP-VK.geometry.instanced.draw_1_instances_1_geometry_invocations
 dEQP-VK.geometry.instanced.draw_1_instances_2_geometry_invocations
 dEQP-VK.geometry.instanced.draw_1_instances_8_geometry_invocations
index 3965354..30b52e8 100644 (file)
@@ -99,6 +99,15 @@ INSTANCE_FUNCTIONS   = [
        "vkCreateWin32SurfaceKHR",
        "vkGetPhysicalDeviceWin32PresentationSupportKHR",
 
+       # VK_KHR_get_physical_device_properties2
+       "vkGetPhysicalDeviceFeatures2KHR",
+       "vkGetPhysicalDeviceProperties2KHR",
+       "vkGetPhysicalDeviceFormatProperties2KHR",
+       "vkGetPhysicalDeviceQueueFamilyProperties2KHR",
+       "vkGetPhysicalDeviceImageFormatProperties2KHR",
+       "vkGetPhysicalDeviceMemoryProperties2KHR",
+       "vkGetPhysicalDeviceSparseImageFormatProperties2KHR",
+
        # VK_EXT_debug_report
        "vkCreateDebugReportCallbackEXT",
        "vkDestroyDebugReportCallbackEXT",
index 54ddfcd..fb9be8e 100644 (file)
@@ -145,6 +145,7 @@ typedef enum VkResult {
     VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
     VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
     VK_ERROR_INVALID_SHADER_NV = -1000012000,
+    VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000,
     VK_RESULT_BEGIN_RANGE = VK_ERROR_FRAGMENTED_POOL,
     VK_RESULT_END_RANGE = VK_INCOMPLETE,
     VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FRAGMENTED_POOL + 1),
@@ -225,6 +226,15 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
     VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
     VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001,
+    VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002,
+    VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004,
+    VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006,
+    VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008,
     VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
     VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
     VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
@@ -840,6 +850,8 @@ typedef enum VkFormatFeatureFlagBits {
     VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,
     VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
     VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
+    VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 0x00004000,
+    VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 0x00008000,
     VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 } VkFormatFeatureFlagBits;
 typedef VkFlags VkFormatFeatureFlags;
@@ -863,6 +875,7 @@ typedef enum VkImageCreateFlagBits {
     VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
     VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008,
     VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010,
+    VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 0x00000020,
     VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 } VkImageCreateFlagBits;
 typedef VkFlags VkImageCreateFlags;
@@ -3739,6 +3752,131 @@ VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR(
 #define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
 
 
+#define VK_KHR_get_physical_device_properties2 1
+#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 1
+#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2"
+
+typedef struct VkPhysicalDeviceFeatures2KHR {
+    VkStructureType             sType;
+    void*                       pNext;
+    VkPhysicalDeviceFeatures    features;
+} VkPhysicalDeviceFeatures2KHR;
+
+typedef struct VkPhysicalDeviceProperties2KHR {
+    VkStructureType               sType;
+    void*                         pNext;
+    VkPhysicalDeviceProperties    properties;
+} VkPhysicalDeviceProperties2KHR;
+
+typedef struct VkFormatProperties2KHR {
+    VkStructureType       sType;
+    void*                 pNext;
+    VkFormatProperties    formatProperties;
+} VkFormatProperties2KHR;
+
+typedef struct VkImageFormatProperties2KHR {
+    VkStructureType            sType;
+    void*                      pNext;
+    VkImageFormatProperties    imageFormatProperties;
+} VkImageFormatProperties2KHR;
+
+typedef struct VkPhysicalDeviceImageFormatInfo2KHR {
+    VkStructureType       sType;
+    const void*           pNext;
+    VkFormat              format;
+    VkImageType           type;
+    VkImageTiling         tiling;
+    VkImageUsageFlags     usage;
+    VkImageCreateFlags    flags;
+} VkPhysicalDeviceImageFormatInfo2KHR;
+
+typedef struct VkQueueFamilyProperties2KHR {
+    VkStructureType            sType;
+    void*                      pNext;
+    VkQueueFamilyProperties    queueFamilyProperties;
+} VkQueueFamilyProperties2KHR;
+
+typedef struct VkPhysicalDeviceMemoryProperties2KHR {
+    VkStructureType                     sType;
+    void*                               pNext;
+    VkPhysicalDeviceMemoryProperties    memoryProperties;
+} VkPhysicalDeviceMemoryProperties2KHR;
+
+typedef struct VkSparseImageFormatProperties2KHR {
+    VkStructureType                  sType;
+    void*                            pNext;
+    VkSparseImageFormatProperties    properties;
+} VkSparseImageFormatProperties2KHR;
+
+typedef struct VkPhysicalDeviceSparseImageFormatInfo2KHR {
+    VkStructureType          sType;
+    const void*              pNext;
+    VkFormat                 format;
+    VkImageType              type;
+    VkSampleCountFlagBits    samples;
+    VkImageUsageFlags        usage;
+    VkImageTiling            tiling;
+} VkPhysicalDeviceSparseImageFormatInfo2KHR;
+
+
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2KHR* pFeatures);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2KHR* pProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2KHR)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2KHR* pFormatProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, VkImageFormatProperties2KHR* pImageFormatProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2KHR* pQueueFamilyProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2KHR* pProperties);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkPhysicalDeviceFeatures2KHR*               pFeatures);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkPhysicalDeviceProperties2KHR*             pProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkFormat                                    format,
+    VkFormatProperties2KHR*                     pFormatProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceImageFormatInfo2KHR*  pImageFormatInfo,
+    VkImageFormatProperties2KHR*                pImageFormatProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    uint32_t*                                   pQueueFamilyPropertyCount,
+    VkQueueFamilyProperties2KHR*                pQueueFamilyProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    VkPhysicalDeviceMemoryProperties2KHR*       pMemoryProperties);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo,
+    uint32_t*                                   pPropertyCount,
+    VkSparseImageFormatProperties2KHR*          pProperties);
+#endif
+
+#define VK_KHR_maintenance1 1
+#define VK_KHR_MAINTENANCE1_SPEC_VERSION  1
+#define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1"
+
+typedef VkFlags VkCommandPoolTrimFlagsKHR;
+
+typedef void (VKAPI_PTR *PFN_vkTrimCommandPoolKHR)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlagsKHR flags);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkTrimCommandPoolKHR(
+    VkDevice                                    device,
+    VkCommandPool                               commandPool,
+    VkCommandPoolTrimFlagsKHR                   flags);
+#endif
+
 #define VK_EXT_debug_report 1
 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)