From 9c87bf6cfb1b8f99304b493a6846c15819da432a Mon Sep 17 00:00:00 2001 From: Maciej Jesionowski Date: Tue, 17 Jan 2017 16:36:33 +0100 Subject: [PATCH] Add max size attachments tests This test creates very big color, and depth/stencil attachments in all possible dimensions and layers. Original tests in the affected group were moved to *.small.* subgroup. Modified tests: dEQP-VK.pipeline.render_to_image.*.small.* New tests: dEQP-VK.pipeline.render_to_image.*.huge.* Components: Vulkan Vulkan CTS issue: 451, 535 Change-Id: I1e3bd1f7a657ff837b830bbada539a1240b1fd04 --- android/cts/master/vk-master.txt | 293 ++++++- .../pipeline/vktPipelineRenderToImageTests.cpp | 863 ++++++++++++++++----- external/vulkancts/mustpass/1.0.2/src/master.txt | 56 +- external/vulkancts/mustpass/1.0.2/vk-default.txt | 56 +- external/vulkancts/mustpass/1.0.3/vk-default.txt | 293 ++++++- 5 files changed, 1240 insertions(+), 321 deletions(-) diff --git a/android/cts/master/vk-master.txt b/android/cts/master/vk-master.txt index ed46cff..4f1b454 100644 --- a/android/cts/master/vk-master.txt +++ b/android/cts/master/vk-master.txt @@ -109191,34 +109191,271 @@ dEQP-VK.pipeline.cache.compute_tests.compute_stage dEQP-VK.pipeline.cache.misc_tests.merge_cache_test dEQP-VK.pipeline.cache.misc_tests.cache_header_test dEQP-VK.pipeline.cache.misc_tests.invalid_size_test -dEQP-VK.pipeline.render_to_image.1d.54.r8g8b8a8_unorm -dEQP-VK.pipeline.render_to_image.1d.54.r32_uint -dEQP-VK.pipeline.render_to_image.1d.54.r16g16_sint -dEQP-VK.pipeline.render_to_image.1d.54.r32g32b32a32_sfloat -dEQP-VK.pipeline.render_to_image.1d_array.54_4.r8g8b8a8_unorm -dEQP-VK.pipeline.render_to_image.1d_array.54_4.r32_uint -dEQP-VK.pipeline.render_to_image.1d_array.54_4.r16g16_sint -dEQP-VK.pipeline.render_to_image.1d_array.54_4.r32g32b32a32_sfloat -dEQP-VK.pipeline.render_to_image.2d.22x64.r8g8b8a8_unorm -dEQP-VK.pipeline.render_to_image.2d.22x64.r32_uint -dEQP-VK.pipeline.render_to_image.2d.22x64.r16g16_sint -dEQP-VK.pipeline.render_to_image.2d.22x64.r32g32b32a32_sfloat -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 -dEQP-VK.pipeline.render_to_image.cube.35x35_6.r32g32b32a32_sfloat -dEQP-VK.pipeline.render_to_image.cube_array.35x35_12.r8g8b8a8_unorm -dEQP-VK.pipeline.render_to_image.cube_array.35x35_12.r32_uint -dEQP-VK.pipeline.render_to_image.cube_array.35x35_12.r16g16_sint -dEQP-VK.pipeline.render_to_image.cube_array.35x35_12.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.1d.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.1d.small.r32_uint +dEQP-VK.pipeline.render_to_image.1d.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.1d.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.1d.small.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.1d.small.r32_uint_d16_unorm +dEQP-VK.pipeline.render_to_image.1d.small.r16g16_sint_d16_unorm +dEQP-VK.pipeline.render_to_image.1d.small.r32g32b32a32_sfloat_d16_unorm +dEQP-VK.pipeline.render_to_image.1d.small.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r32_uint_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r16g16_sint_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r32g32b32a32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r32_uint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r16g16_sint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r32g32b32a32_sfloat_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r32_uint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r16g16_sint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r32g32b32a32_sfloat_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d.huge.width.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.1d.huge.width.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.1d.huge.width.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d.huge.width.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d.huge.width.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.1d_array.small.r32_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.1d_array.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.1d_array.small.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.1d_array.small.r32_uint_d16_unorm +dEQP-VK.pipeline.render_to_image.1d_array.small.r16g16_sint_d16_unorm +dEQP-VK.pipeline.render_to_image.1d_array.small.r32g32b32a32_sfloat_d16_unorm +dEQP-VK.pipeline.render_to_image.1d_array.small.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r32_uint_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r16g16_sint_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r32g32b32a32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r32_uint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r16g16_sint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r32g32b32a32_sfloat_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r32_uint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r16g16_sint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r32g32b32a32_sfloat_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.huge.width.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.1d_array.huge.width.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.1d_array.huge.width.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.huge.width.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.huge.width.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.huge.layers.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.1d_array.huge.layers.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.1d_array.huge.layers.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.huge.layers.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.huge.layers.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.huge.width_layers.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.1d_array.huge.width_layers.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.1d_array.huge.width_layers.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.huge.width_layers.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.huge.width_layers.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d.small.r32_uint +dEQP-VK.pipeline.render_to_image.2d.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.2d.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.2d.small.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d.small.r32_uint_d16_unorm +dEQP-VK.pipeline.render_to_image.2d.small.r16g16_sint_d16_unorm +dEQP-VK.pipeline.render_to_image.2d.small.r32g32b32a32_sfloat_d16_unorm +dEQP-VK.pipeline.render_to_image.2d.small.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r32_uint_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r16g16_sint_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r32g32b32a32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r32_uint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r16g16_sint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r32g32b32a32_sfloat_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r32_uint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r16g16_sint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r32g32b32a32_sfloat_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d.huge.width.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d.huge.width.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d.huge.width.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.huge.width.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.huge.width.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d.huge.height.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d.huge.height.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d.huge.height.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.huge.height.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.huge.height.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d.huge.width_height.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d.huge.width_height.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d.huge.width_height.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.huge.width_height.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.huge.width_height.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d_array.small.r32_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.2d_array.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.2d_array.small.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.small.r32_uint_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.small.r16g16_sint_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.small.r32g32b32a32_sfloat_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.small.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r32_uint_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r16g16_sint_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r32g32b32a32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r32_uint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r16g16_sint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r32g32b32a32_sfloat_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r32_uint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r16g16_sint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r32g32b32a32_sfloat_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.width.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.width.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.height.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.height.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.height.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.height.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.height.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.layers.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.layers.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.layers.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.layers.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.layers.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_layers.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_layers.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_layers.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_layers.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_layers.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.height_layers.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.height_layers.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.height_layers.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.height_layers.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.height_layers.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height_layers.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height_layers.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height_layers.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height_layers.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height_layers.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.3d.small.r32_uint +dEQP-VK.pipeline.render_to_image.3d.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.3d.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.3d.small.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.small.r32_uint_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.small.r16g16_sint_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.small.r32g32b32a32_sfloat_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.small.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r32_uint_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r16g16_sint_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r32g32b32a32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r32_uint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r16g16_sint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r32g32b32a32_sfloat_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r32_uint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r16g16_sint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r32g32b32a32_sfloat_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.width.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.width.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.height.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.height.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.height.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.height.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.height.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width_height.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.width_height.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.width_height.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width_height.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width_height.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.depth.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.depth.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.depth.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.depth.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.depth.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width_depth.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.width_depth.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.width_depth.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width_depth.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width_depth.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.height_depth.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.height_depth.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.height_depth.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.height_depth.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.height_depth.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width_height_depth.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.width_height_depth.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.width_height_depth.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width_height_depth.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width_height_depth.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.cube.small.r32_uint +dEQP-VK.pipeline.render_to_image.cube.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.cube.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.cube.small.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.cube.small.r32_uint_d16_unorm +dEQP-VK.pipeline.render_to_image.cube.small.r16g16_sint_d16_unorm +dEQP-VK.pipeline.render_to_image.cube.small.r32g32b32a32_sfloat_d16_unorm +dEQP-VK.pipeline.render_to_image.cube.small.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r32_uint_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r16g16_sint_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r32g32b32a32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r32_uint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r16g16_sint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r32g32b32a32_sfloat_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r32_uint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r16g16_sint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r32g32b32a32_sfloat_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube.huge.width_height.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.cube.huge.width_height.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.cube.huge.width_height.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube.huge.width_height.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube.huge.width_height.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.cube_array.small.r32_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.cube_array.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.cube_array.small.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.cube_array.small.r32_uint_d16_unorm +dEQP-VK.pipeline.render_to_image.cube_array.small.r16g16_sint_d16_unorm +dEQP-VK.pipeline.render_to_image.cube_array.small.r32g32b32a32_sfloat_d16_unorm +dEQP-VK.pipeline.render_to_image.cube_array.small.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r32_uint_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r16g16_sint_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r32g32b32a32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r32_uint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r16g16_sint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r32g32b32a32_sfloat_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r32_uint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r16g16_sint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r32g32b32a32_sfloat_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.huge.layers.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.cube_array.huge.layers.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.cube_array.huge.layers.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.huge.layers.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.huge.layers.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height_layers.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height_layers.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height_layers.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height_layers.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height_layers.r8g8b8a8_unorm_d32_sfloat_s8_uint dEQP-VK.pipeline.framebuffer_attachment.1d_32_64 dEQP-VK.pipeline.framebuffer_attachment.1d_32_48 dEQP-VK.pipeline.framebuffer_attachment.1d_32_39 diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineRenderToImageTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineRenderToImageTests.cpp index 997b4a8..e7f254e 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineRenderToImageTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineRenderToImageTests.cpp @@ -44,6 +44,7 @@ #include #include +#include namespace vkt { @@ -58,7 +59,9 @@ using de::SharedPtr; using tcu::IVec3; using tcu::Vec4; using tcu::UVec4; +using tcu::IVec2; using tcu::IVec4; +using tcu::BVec4; using std::vector; typedef SharedPtr > SharedPtrVkImageView; @@ -66,15 +69,28 @@ typedef SharedPtr > SharedPtrVkPipeline; enum Constants { - REFERENCE_COLOR_VALUE = 125 + NUM_CUBE_FACES = 6, + REFERENCE_COLOR_VALUE = 125, + REFERENCE_STENCIL_VALUE = 42, + MAX_SIZE = -1, //!< Should be queried at runtime and replaced with max possible value + MAX_VERIFICATION_REGION_SIZE = 32, //!< Limit the checked area to a small size, especially for huge images + MAX_VERIFICATION_REGION_DEPTH = 8, + + MASK_W = (1 | 0 | 0 | 0), + MASK_W_LAYERS = (1 | 0 | 0 | 8), + MASK_WH = (1 | 2 | 0 | 0), + MASK_WH_LAYERS = (1 | 2 | 0 | 8), + MASK_WHD = (1 | 2 | 4 | 0), }; +static const float REFERENCE_DEPTH_VALUE = 1.0f; + struct CaseDef { - VkImageViewType imageType; - IVec3 renderSize; - int numLayers; + VkImageViewType viewType; + IVec4 imageSizeHint; //!< (w, h, d, layers), a component may have a symbolic value MAX_SIZE VkFormat colorFormat; + VkFormat depthStencilFormat; //! A depth/stencil format, or UNDEFINED if not used }; template @@ -89,15 +105,29 @@ inline VkDeviceSize sizeInBytes (const vector& vec) return vec.size() * sizeof(vec[0]); } +inline bool isCube (const VkImageViewType viewType) +{ + return (viewType == VK_IMAGE_VIEW_TYPE_CUBE || viewType == VK_IMAGE_VIEW_TYPE_CUBE_ARRAY); +} + +inline VkDeviceSize product (const IVec4& v) +{ + return ((static_cast(v.x()) * v.y()) * v.z()) * v.w(); +} + +// This is very test specific, so be careful if you want to reuse this code. Move makeGraphicsPipeline (const DeviceInterface& vk, const VkDevice device, + const VkPipeline basePipeline, // for derivatives const VkPipelineLayout pipelineLayout, const VkRenderPass renderPass, const VkShaderModule vertexModule, const VkShaderModule fragmentModule, - const IVec3 renderSize, + const IVec2& renderSize, const VkPrimitiveTopology topology, - const deUint32 subpass) + const deUint32 subpass, + const bool useDepth, + const bool useStencil) { const VkVertexInputBindingDescription vertexInputBindingDescription = { @@ -195,24 +225,24 @@ Move makeGraphicsPipeline (const DeviceInterface& vk, }; const VkStencilOpState stencilOpState = makeStencilOpState( - VK_STENCIL_OP_KEEP, // stencil fail - VK_STENCIL_OP_KEEP, // depth & stencil pass - VK_STENCIL_OP_KEEP, // depth only fail - VK_COMPARE_OP_ALWAYS, // compare op - 0u, // compare mask - 0u, // write mask - 0u); // reference + VK_STENCIL_OP_KEEP, // stencil fail + VK_STENCIL_OP_ZERO, // depth & stencil pass + VK_STENCIL_OP_KEEP, // depth only fail + VK_COMPARE_OP_EQUAL, // compare op + ~0u, // compare mask + ~0u, // write mask + static_cast(REFERENCE_STENCIL_VALUE)); // reference VkPipelineDepthStencilStateCreateInfo pipelineDepthStencilStateInfo = { VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; (VkPipelineDepthStencilStateCreateFlags)0, // VkPipelineDepthStencilStateCreateFlags flags; - VK_FALSE, // VkBool32 depthTestEnable; + useDepth, // VkBool32 depthTestEnable; VK_FALSE, // VkBool32 depthWriteEnable; VK_COMPARE_OP_LESS, // VkCompareOp depthCompareOp; VK_FALSE, // VkBool32 depthBoundsTestEnable; - VK_FALSE, // VkBool32 stencilTestEnable; + useStencil, // VkBool32 stencilTestEnable; stencilOpState, // VkStencilOpState front; stencilOpState, // VkStencilOpState back; 0.0f, // float minDepthBounds; @@ -267,11 +297,14 @@ Move makeGraphicsPipeline (const DeviceInterface& vk, } }; - const VkGraphicsPipelineCreateInfo graphicsPipelineInfo = + const VkPipelineCreateFlags flags = (basePipeline == DE_NULL ? VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT + : VK_PIPELINE_CREATE_DERIVATIVE_BIT); + + const VkGraphicsPipelineCreateInfo graphicsPipelineInfo = { VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; - (VkPipelineCreateFlags)0, // VkPipelineCreateFlags flags; + flags, // VkPipelineCreateFlags flags; DE_LENGTH_OF_ARRAY(pShaderStages), // deUint32 stageCount; pShaderStages, // const VkPipelineShaderStageCreateInfo* pStages; &vertexInputStateInfo, // const VkPipelineVertexInputStateCreateInfo* pVertexInputState; @@ -286,58 +319,85 @@ Move makeGraphicsPipeline (const DeviceInterface& vk, pipelineLayout, // VkPipelineLayout layout; renderPass, // VkRenderPass renderPass; subpass, // deUint32 subpass; - DE_NULL, // VkPipeline basePipelineHandle; - 0, // deInt32 basePipelineIndex; + basePipeline, // VkPipeline basePipelineHandle; + -1, // deInt32 basePipelineIndex; }; return createGraphicsPipeline(vk, device, DE_NULL, &graphicsPipelineInfo); } -//! Make a render pass with one subpass per color attachment and one attachment per image layer. +//! Make a render pass with one subpass per color attachment and depth/stencil attachment (if used). Move makeRenderPass (const DeviceInterface& vk, const VkDevice device, const VkFormat colorFormat, + const VkFormat depthStencilFormat, const deUint32 numLayers) { const VkAttachmentDescription colorAttachmentDescription = { - (VkAttachmentDescriptionFlags)0, // VkAttachmentDescriptionFlags flags; - colorFormat, // VkFormat format; - VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; - VK_ATTACHMENT_LOAD_OP_CLEAR, // VkAttachmentLoadOp loadOp; - VK_ATTACHMENT_STORE_OP_STORE, // VkAttachmentStoreOp storeOp; - VK_ATTACHMENT_LOAD_OP_DONT_CARE, // VkAttachmentLoadOp stencilLoadOp; - VK_ATTACHMENT_STORE_OP_DONT_CARE, // VkAttachmentStoreOp stencilStoreOp; - VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout initialLayout; - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, // VkImageLayout finalLayout; + (VkAttachmentDescriptionFlags)0, // VkAttachmentDescriptionFlags flags; + colorFormat, // VkFormat format; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; + VK_ATTACHMENT_LOAD_OP_CLEAR, // VkAttachmentLoadOp loadOp; + VK_ATTACHMENT_STORE_OP_STORE, // VkAttachmentStoreOp storeOp; + VK_ATTACHMENT_LOAD_OP_DONT_CARE, // VkAttachmentLoadOp stencilLoadOp; + VK_ATTACHMENT_STORE_OP_DONT_CARE, // VkAttachmentStoreOp stencilStoreOp; + VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout initialLayout; + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, // VkImageLayout finalLayout; + }; + vector attachmentDescriptions(numLayers, colorAttachmentDescription); + + const VkAttachmentDescription depthStencilAttachmentDescription = + { + (VkAttachmentDescriptionFlags)0, // VkAttachmentDescriptionFlags flags; + depthStencilFormat, // VkFormat format; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; + VK_ATTACHMENT_LOAD_OP_CLEAR, // VkAttachmentLoadOp loadOp; + VK_ATTACHMENT_STORE_OP_DONT_CARE, // VkAttachmentStoreOp storeOp; + VK_ATTACHMENT_LOAD_OP_CLEAR, // VkAttachmentLoadOp stencilLoadOp; + VK_ATTACHMENT_STORE_OP_DONT_CARE, // VkAttachmentStoreOp stencilStoreOp; + VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout initialLayout; + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, // VkImageLayout finalLayout; }; - const vector attachmentDescriptions(numLayers, colorAttachmentDescription); + + if (depthStencilFormat != VK_FORMAT_UNDEFINED) + attachmentDescriptions.insert(attachmentDescriptions.end(), numLayers, depthStencilAttachmentDescription); // Create a subpass for each attachment (each attachement is a layer of an arrayed image). - vector colorAttachmentReferences(numLayers); + vector colorAttachmentReferences (numLayers); + vector depthStencilAttachmentReferences(numLayers); vector subpasses; + // Ordering here must match the framebuffer attachments for (deUint32 i = 0; i < numLayers; ++i) { const VkAttachmentReference attachmentRef = { - i, // deUint32 attachment; - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL // VkImageLayout layout; + i, // deUint32 attachment; + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL // VkImageLayout layout; + }; + const VkAttachmentReference depthStencilAttachmentRef = + { + i + numLayers, // deUint32 attachment; + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL // VkImageLayout layout; }; - colorAttachmentReferences[i] = attachmentRef; - const VkSubpassDescription subpassDescription = + colorAttachmentReferences[i] = attachmentRef; + depthStencilAttachmentReferences[i] = depthStencilAttachmentRef; + + const VkAttachmentReference* pDepthStencilAttachment = (depthStencilFormat != VK_FORMAT_UNDEFINED ? &depthStencilAttachmentReferences[i] : DE_NULL); + const VkSubpassDescription subpassDescription = { - (VkSubpassDescriptionFlags)0, // VkSubpassDescriptionFlags flags; - VK_PIPELINE_BIND_POINT_GRAPHICS, // VkPipelineBindPoint pipelineBindPoint; - 0u, // deUint32 inputAttachmentCount; - DE_NULL, // const VkAttachmentReference* pInputAttachments; - 1u, // deUint32 colorAttachmentCount; - &colorAttachmentReferences[i], // const VkAttachmentReference* pColorAttachments; - DE_NULL, // const VkAttachmentReference* pResolveAttachments; - DE_NULL, // const VkAttachmentReference* pDepthStencilAttachment; - 0u, // deUint32 preserveAttachmentCount; - DE_NULL // const deUint32* pPreserveAttachments; + (VkSubpassDescriptionFlags)0, // VkSubpassDescriptionFlags flags; + VK_PIPELINE_BIND_POINT_GRAPHICS, // VkPipelineBindPoint pipelineBindPoint; + 0u, // deUint32 inputAttachmentCount; + DE_NULL, // const VkAttachmentReference* pInputAttachments; + 1u, // deUint32 colorAttachmentCount; + &colorAttachmentReferences[i], // const VkAttachmentReference* pColorAttachments; + DE_NULL, // const VkAttachmentReference* pResolveAttachments; + pDepthStencilAttachment, // const VkAttachmentReference* pDepthStencilAttachment; + 0u, // deUint32 preserveAttachmentCount; + DE_NULL // const deUint32* pPreserveAttachments; }; subpasses.push_back(subpassDescription); } @@ -445,23 +505,55 @@ VkImageType getImageType (const VkImageViewType viewType) { switch (viewType) { - case VK_IMAGE_VIEW_TYPE_1D: - case VK_IMAGE_VIEW_TYPE_1D_ARRAY: - return VK_IMAGE_TYPE_1D; + case VK_IMAGE_VIEW_TYPE_1D: + case VK_IMAGE_VIEW_TYPE_1D_ARRAY: + return VK_IMAGE_TYPE_1D; + + case VK_IMAGE_VIEW_TYPE_2D: + case VK_IMAGE_VIEW_TYPE_2D_ARRAY: + case VK_IMAGE_VIEW_TYPE_CUBE: + case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY: + return VK_IMAGE_TYPE_2D; + + case VK_IMAGE_VIEW_TYPE_3D: + return VK_IMAGE_TYPE_3D; + + default: + DE_ASSERT(0); + return VK_IMAGE_TYPE_LAST; + } +} + +//! ImageViewType for accessing a single layer/slice of an image +VkImageViewType getImageViewSliceType (const VkImageViewType viewType) +{ + switch (viewType) + { + case VK_IMAGE_VIEW_TYPE_1D: + case VK_IMAGE_VIEW_TYPE_1D_ARRAY: + return VK_IMAGE_VIEW_TYPE_1D; + + case VK_IMAGE_VIEW_TYPE_2D: + case VK_IMAGE_VIEW_TYPE_2D_ARRAY: + case VK_IMAGE_VIEW_TYPE_CUBE: + case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY: + case VK_IMAGE_VIEW_TYPE_3D: + return VK_IMAGE_VIEW_TYPE_2D; + + default: + DE_ASSERT(0); + return VK_IMAGE_VIEW_TYPE_LAST; + } +} - case VK_IMAGE_VIEW_TYPE_2D: - case VK_IMAGE_VIEW_TYPE_2D_ARRAY: - case VK_IMAGE_VIEW_TYPE_CUBE: - case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY: - return VK_IMAGE_TYPE_2D; +VkImageCreateFlags getImageCreateFlags (const VkImageViewType viewType) +{ + VkImageCreateFlags flags = (VkImageCreateFlags)0; - case VK_IMAGE_VIEW_TYPE_3D: - return VK_IMAGE_TYPE_3D; + if (viewType == VK_IMAGE_VIEW_TYPE_3D) flags |= VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR; + if (isCube(viewType)) flags |= VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT; - default: - DE_ASSERT(0); - return VK_IMAGE_TYPE_LAST; - } + return flags; } void initPrograms (SourceCollections& programCollection, const CaseDef caseDef) @@ -519,46 +611,171 @@ void initPrograms (SourceCollections& programCollection, const CaseDef caseDef) } } -tcu::PixelBufferAccess getExpectedData (tcu::TextureLevel& textureLevel, const CaseDef& caseDef, const Vec4* color, const int sizeColor) +void generateExpectedImage (const tcu::PixelBufferAccess& outputImage, const IVec2& renderSize, const int colorDepthOffset, const Vec4* color, const int numColors) { - const bool isInt = isUintFormat(caseDef.colorFormat) || isIntFormat(caseDef.colorFormat); - const tcu::PixelBufferAccess expectedImage (textureLevel); + const tcu::TextureChannelClass channelClass = tcu::getTextureChannelClass(outputImage.getFormat().type); + const bool isInt = (channelClass == tcu::TEXTURECHANNELCLASS_SIGNED_INTEGER || channelClass == tcu::TEXTURECHANNELCLASS_UNSIGNED_INTEGER); + const VkClearValue clearValue = getClearValue(mapTextureFormat(outputImage.getFormat())); if (isInt) - tcu::clear(expectedImage, tcu::IVec4(REFERENCE_COLOR_VALUE)); + tcu::clear(outputImage, IVec4(clearValue.color.int32)); else - tcu::clear(expectedImage, tcu::Vec4(1.0)); + tcu::clear(outputImage, Vec4(clearValue.color.float32)); - for (int z = 0; z < expectedImage.getDepth(); ++z) + for (int z = 0; z < outputImage.getDepth(); ++z) { - const Vec4& setColor = color[z % sizeColor]; + const Vec4& setColor = color[(z + colorDepthOffset) % numColors]; const IVec4 setColorInt = (static_cast(REFERENCE_COLOR_VALUE) * setColor).cast(); - for (int y = 0; y < caseDef.renderSize.y(); ++y) - for (int x = caseDef.renderSize.x()/2; x < caseDef.renderSize.x(); ++x) + for (int y = 0; y < renderSize.y(); ++y) + for (int x = renderSize.x()/2; x < renderSize.x(); ++x) { if (isInt) - expectedImage.setPixel(setColorInt, x, y, z); + outputImage.setPixel(setColorInt, x, y, z); else - expectedImage.setPixel(setColor, x, y, z); + outputImage.setPixel(setColor, x, y, z); } } - return expectedImage; } -tcu::TestStatus test (Context& context, const CaseDef caseDef) +template +int findIndexOfMaxComponent (const tcu::Vector& vec) { - 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"); + int index = 0; + T value = vec[0]; + + for (int i = 1; i < Size; ++i) + { + if (vec[i] > value) + { + index = i; + value = vec[i]; + } + } + + return index; +} + +VkDeviceSize getMaxDeviceHeapSize (const InstanceInterface& vki, const VkPhysicalDevice physDevice) +{ + const VkPhysicalDeviceMemoryProperties memoryProperties = getPhysicalDeviceMemoryProperties(vki, physDevice); + VkDeviceSize memorySize = 0; + + for (deUint32 heapNdx = 0; heapNdx < memoryProperties.memoryHeapCount; ++heapNdx) + { + if ((memoryProperties.memoryHeaps[heapNdx].flags & VK_MEMORY_HEAP_DEVICE_LOCAL_BIT) != 0) + memorySize = std::max(memorySize, memoryProperties.memoryHeaps[heapNdx].size); + } + + return memorySize; +} + +//! Get a smaller image size. Returns a vector of zeroes, if it can't reduce more. +IVec4 getReducedImageSize (const CaseDef& caseDef, IVec4 size) +{ + const int maxIndex = findIndexOfMaxComponent(size); + const int reducedSize = size[maxIndex] >> 1; + switch (caseDef.viewType) + { + case VK_IMAGE_VIEW_TYPE_CUBE: + case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY: + if (maxIndex < 2) + size.x() = size.y() = reducedSize; + else if (maxIndex == 3 && reducedSize >= NUM_CUBE_FACES) + size.w() = NUM_CUBE_FACES * (reducedSize / NUM_CUBE_FACES); // round down to a multiple of 6 + else + size = IVec4(0); + break; + + default: + size[maxIndex] = reducedSize; + break; + } + + if (reducedSize == 0) + size = IVec4(0); + + return size; +} + +bool isDepthStencilFormatSupported (const InstanceInterface& vki, const VkPhysicalDevice physDevice, const VkFormat format) +{ + const VkFormatProperties properties = getPhysicalDeviceFormatProperties(vki, physDevice, format); + return (properties.optimalTilingFeatures & VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) != 0; +} + +IVec4 getMaxImageSize (const VkPhysicalDeviceLimits& limits, const VkImageViewType viewType, const IVec4& sizeHint, const bool useDepthStencil) +{ + // If we use a layered D/S together with a 3D image, we have to use the smallest common limit + const int maxDepth = (useDepthStencil ? deMin32(static_cast(limits.maxImageArrayLayers), static_cast(limits.maxImageDimension3D)) + : static_cast(limits.maxImageDimension3D)); + + // Images have to respect framebuffer limits and image limits (the framebuffer is not layered in this case) + IVec4 size = IVec4( + sizeHint.x() != MAX_SIZE ? sizeHint.x() : static_cast(limits.maxFramebufferWidth), + sizeHint.y() != MAX_SIZE ? sizeHint.y() : static_cast(limits.maxFramebufferHeight), + sizeHint.z() != MAX_SIZE ? sizeHint.z() : maxDepth, + sizeHint.w() != MAX_SIZE ? sizeHint.w() : static_cast(limits.maxImageArrayLayers)); + + switch (viewType) + { + case VK_IMAGE_VIEW_TYPE_1D: + case VK_IMAGE_VIEW_TYPE_1D_ARRAY: + size.x() = deMin32(size.x(), limits.maxImageDimension1D); + break; + + case VK_IMAGE_VIEW_TYPE_2D: + case VK_IMAGE_VIEW_TYPE_2D_ARRAY: + size.x() = deMin32(size.x(), limits.maxImageDimension2D); + size.y() = deMin32(size.y(), limits.maxImageDimension2D); + break; + + case VK_IMAGE_VIEW_TYPE_3D: + size.x() = deMin32(size.x(), limits.maxImageDimension3D); + size.y() = deMin32(size.y(), limits.maxImageDimension3D); + break; + + case VK_IMAGE_VIEW_TYPE_CUBE: + case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY: + size.x() = size.y() = deMin32(size.x(), limits.maxImageDimensionCube); + size.w() = NUM_CUBE_FACES * (size.w() / NUM_CUBE_FACES); // round down to 6 faces + break; + + default: + DE_ASSERT(0); + return IVec4(); + } + + return size; +} + +VkImageAspectFlags getFormatAspectFlags (const VkFormat format) +{ + if (format == VK_FORMAT_UNDEFINED) + return 0; + + const tcu::TextureFormat::ChannelOrder order = mapVkFormat(format).order; + + switch (order) + { + case tcu::TextureFormat::DS: return VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT; + case tcu::TextureFormat::D: return VK_IMAGE_ASPECT_DEPTH_BIT; + case tcu::TextureFormat::S: return VK_IMAGE_ASPECT_STENCIL_BIT; + default: return VK_IMAGE_ASPECT_COLOR_BIT; + } +} + +//! See testAttachmentSize description +tcu::TestStatus testWithSizeReduction (Context& context, const CaseDef& caseDef, const int sizeReductionIndex) +{ const DeviceInterface& vk = context.getDeviceInterface(); + const InstanceInterface& vki = context.getInstanceInterface(); const VkDevice device = context.getDevice(); + const VkPhysicalDevice physDevice = context.getPhysicalDevice(); const VkQueue queue = context.getUniversalQueue(); const deUint32 queueFamilyIndex = context.getUniversalQueueFamilyIndex(); Allocator& allocator = context.getDefaultAllocator(); - Move colorImage; - MovePtr colorImageAlloc; const Vec4 color[] = { Vec4(0.9f, 0.0f, 0.0f, 1.0f), @@ -566,37 +783,85 @@ tcu::TestStatus test (Context& context, const CaseDef caseDef) Vec4(0.3f, 0.0f, 1.0f, 1.0f), Vec4(0.1f, 0.0f, 1.0f, 1.0f) }; + // The memory might be too small to allocate a largest possible attachment, so try to account for that. + const bool useDepthStencil = (caseDef.depthStencilFormat != VK_FORMAT_UNDEFINED); + const VkDeviceSize deviceMemoryBudget = getMaxDeviceHeapSize(vki, physDevice) >> 2; + IVec4 imageSize = getMaxImageSize(context.getDeviceProperties().limits, caseDef.viewType, caseDef.imageSizeHint, useDepthStencil); + + // Keep reducing the size, if needed + for (int i = 0; i < sizeReductionIndex; ++i) + { + imageSize = getReducedImageSize(caseDef, imageSize); - 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)); + if (imageSize == IVec4()) + return tcu::TestStatus::fail("Couldn't create an image with required size"); + } + + context.getTestContext().getLog() + << tcu::TestLog::Message << "Using an image with size (width, height, depth, layers) = " << imageSize << tcu::TestLog::EndMessage; + + // "Slices" is either the depth of a 3D image, or the number of layers of an arrayed image + const deInt32 numSlices = (VK_IMAGE_VIEW_TYPE_3D == caseDef.viewType ? imageSize.z() : imageSize.w()); + const VkDeviceSize colorSize = product(imageSize) * tcu::getPixelSize(mapVkFormat(caseDef.colorFormat)); + const VkDeviceSize depthStencilSize = (useDepthStencil ? product(imageSize) * tcu::getPixelSize(mapVkFormat(caseDef.depthStencilFormat)) : 0ull); + + if (useDepthStencil && !isDepthStencilFormatSupported(vki, physDevice, caseDef.depthStencilFormat)) + TCU_THROW(NotSupportedError, "Unsupported depth/stencil format"); + + if (colorSize + depthStencilSize > deviceMemoryBudget) + throw OutOfMemoryError(VK_ERROR_OUT_OF_DEVICE_MEMORY, "Image size exceeds test's image memory budget"); + + // Determine the verification bounds. The checked region will be in the center of the rendered image + const IVec4 checkSize = tcu::min(imageSize, IVec4(MAX_VERIFICATION_REGION_SIZE, + MAX_VERIFICATION_REGION_SIZE, + MAX_VERIFICATION_REGION_DEPTH, + MAX_VERIFICATION_REGION_DEPTH)); + const IVec4 checkOffset = (imageSize - checkSize) / 2; + + // Only make enough space for the check region + const VkDeviceSize colorBufferSize = product(checkSize) * tcu::getPixelSize(mapVkFormat(caseDef.colorFormat)); const Unique colorBuffer (makeBuffer(vk, device, colorBufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT)); const UniquePtr colorBufferAlloc (bindBuffer(vk, device, allocator, *colorBuffer, MemoryRequirement::HostVisible)); - const Unique vertexModule (createShaderModule (vk, device, context.getBinaryCollection().get("vert"), 0u)); - const Unique fragmentModule (createShaderModule (vk, device, context.getBinaryCollection().get("frag"), 0u)); - const Unique renderPass (makeRenderPass (vk, device, caseDef.colorFormat, static_cast(numLayers))); - const Unique pipelineLayout (makePipelineLayout (vk, device)); - vector pipeline; - const Unique cmdPool (createCommandPool (vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex)); - const Unique cmdBuffer (makeCommandBuffer(vk, device, *cmdPool)); + const Unique vertexModule (createShaderModule (vk, device, context.getBinaryCollection().get("vert"), 0u)); + const Unique fragmentModule (createShaderModule (vk, device, context.getBinaryCollection().get("frag"), 0u)); + const Unique renderPass (makeRenderPass (vk, device, caseDef.colorFormat, caseDef.depthStencilFormat, static_cast(numSlices))); + const Unique pipelineLayout (makePipelineLayout (vk, device)); + vector pipelines; + Move colorImage; + MovePtr colorImageAlloc; vector colorAttachments; - vector attachmentHandles; + Move depthStencilImage; + MovePtr depthStencilImageAlloc; + vector depthStencilAttachments; + vector attachmentHandles; // all attachments (color and d/s) Move vertexBuffer; MovePtr vertexBufferAlloc; Move framebuffer; - //create colorImage + // Create a color image { - 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, flags, getImageType(caseDef.imageType), caseDef.colorFormat, caseDef.renderSize, caseDef.numLayers, colorImageUsage); - colorImageAlloc = bindImage(vk, device, allocator, *colorImage, MemoryRequirement::Any); + const VkImageUsageFlags imageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT; + + colorImage = makeImage(vk, device, getImageCreateFlags(caseDef.viewType), getImageType(caseDef.viewType), caseDef.colorFormat, + imageSize.swizzle(0, 1, 2), imageSize.w(), imageUsage); + colorImageAlloc = bindImage(vk, device, allocator, *colorImage, MemoryRequirement::Any); } - //create vertexBuffer + // Create a depth/stencil image (always a 2D image, optionally layered) + if (useDepthStencil) { - const vector vertices = genFullQuadVertices(numLayers, vector(color, color + DE_LENGTH_OF_ARRAY(color))); + const VkImageUsageFlags imageUsage = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; + + depthStencilImage = makeImage(vk, device, (VkImageCreateFlags)0, VK_IMAGE_TYPE_2D, caseDef.depthStencilFormat, + IVec3(imageSize.x(), imageSize.y(), 1), numSlices, imageUsage); + depthStencilImageAlloc = bindImage(vk, device, allocator, *depthStencilImage, MemoryRequirement::Any); + } + + // Create a vertex buffer + { + const vector vertices = genFullQuadVertices(numSlices, vector(color, color + DE_LENGTH_OF_ARRAY(color))); const VkDeviceSize vertexBufferSize = sizeInBytes(vertices); vertexBuffer = makeBuffer(vk, device, vertexBufferSize, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT); @@ -605,169 +870,297 @@ tcu::TestStatus test (Context& context, const CaseDef caseDef) flushMappedMemoryRange(vk, device, vertexBufferAlloc->getMemory(), vertexBufferAlloc->getOffset(), vertexBufferSize); } - //create attachmentHandles and pipelines - for (int layerNdx = 0; layerNdx < numLayers; ++layerNdx) + // For each image layer or slice (3D), create an attachment and a pipeline { - 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)); + const VkImageAspectFlags depthStencilAspect = getFormatAspectFlags(caseDef.depthStencilFormat); + const bool useDepth = (depthStencilAspect & VK_IMAGE_ASPECT_DEPTH_BIT) != 0; + const bool useStencil = (depthStencilAspect & VK_IMAGE_ASPECT_STENCIL_BIT) != 0; + VkPipeline basePipeline = DE_NULL; - colorAttachments.push_back(makeSharedPtr(makeImageView(vk, device, *colorImage, imageType, caseDef.colorFormat, makeColorSubresourceRange(layerNdx, 1)))); - attachmentHandles.push_back(**colorAttachments.back()); + // Color attachments are first in the framebuffer + for (int subpassNdx = 0; subpassNdx < numSlices; ++subpassNdx) + { + colorAttachments.push_back(makeSharedPtr( + makeImageView(vk, device, *colorImage, getImageViewSliceType(caseDef.viewType), caseDef.colorFormat, makeColorSubresourceRange(subpassNdx, 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(layerNdx)))); - } + // We also have to create pipelines for each subpass + pipelines.push_back(makeSharedPtr(makeGraphicsPipeline( + vk, device, basePipeline, *pipelineLayout, *renderPass, *vertexModule, *fragmentModule, imageSize.swizzle(0, 1), VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP, + static_cast(subpassNdx), useDepth, useStencil))); - framebuffer = makeFramebuffer(vk, device, *renderPass, numLayers, &attachmentHandles[0], static_cast(caseDef.renderSize.x()), static_cast(caseDef.renderSize.y())); + basePipeline = **pipelines.front(); + } - beginCommandBuffer(vk, *cmdBuffer); - { - const vector clearValues (numLayers, getClearValue(caseDef.colorFormat)); - const VkRect2D renderArea = + // Then D/S attachments, if any + if (useDepthStencil) + for (int subpassNdx = 0; subpassNdx < numSlices; ++subpassNdx) { - makeOffset2D(0, 0), - makeExtent2D(caseDef.renderSize.x(), caseDef.renderSize.y()), - }; - const VkRenderPassBeginInfo renderPassBeginInfo = - { - VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO, // VkStructureType sType; - DE_NULL, // const void* pNext; - *renderPass, // VkRenderPass renderPass; - *framebuffer, // VkFramebuffer framebuffer; - renderArea, // VkRect2D renderArea; - static_cast(clearValues.size()), // uint32_t clearValueCount; - &clearValues[0], // const VkClearValue* pClearValues; - }; - const VkDeviceSize vertexBufferOffset = 0ull; - - vk.cmdBeginRenderPass(*cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE); - vk.cmdBindVertexBuffers(*cmdBuffer, 0u, 1u, &vertexBuffer.get(), &vertexBufferOffset); + depthStencilAttachments.push_back(makeSharedPtr( + makeImageView(vk, device, *depthStencilImage, VK_IMAGE_VIEW_TYPE_2D, caseDef.depthStencilFormat, makeImageSubresourceRange(depthStencilAspect, 0u, 1u, subpassNdx, 1u)))); + attachmentHandles.push_back(**depthStencilAttachments.back()); + } } - //cmdDraw - for (deUint32 layerNdx = 0; layerNdx < static_cast(numLayers); ++layerNdx) + framebuffer = makeFramebuffer(vk, device, *renderPass, static_cast(attachmentHandles.size()), &attachmentHandles[0], static_cast(imageSize.x()), static_cast(imageSize.y())); + { - if (layerNdx != 0) - vk.cmdNextSubpass(*cmdBuffer, VK_SUBPASS_CONTENTS_INLINE); + const Unique cmdPool (createCommandPool (vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex)); + const Unique cmdBuffer (makeCommandBuffer(vk, device, *cmdPool)); - vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, **pipeline[layerNdx]); - vk.cmdDraw(*cmdBuffer, 4u, 1u, layerNdx*4u, 0u); - } + beginCommandBuffer(vk, *cmdBuffer); + { + vector clearValues (numSlices, getClearValue(caseDef.colorFormat)); - vk.cmdEndRenderPass(*cmdBuffer); + if (useDepthStencil) + clearValues.insert(clearValues.end(), numSlices, makeClearValueDepthStencil(REFERENCE_DEPTH_VALUE, REFERENCE_STENCIL_VALUE)); - // copy colorImage -> host visible colorBuffer - { - const VkImageMemoryBarrier imageBarriers[] = - { + const VkRect2D renderArea = { - VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, // VkAccessFlags outputMask; - VK_ACCESS_TRANSFER_READ_BIT, // VkAccessFlags inputMask; - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, // VkImageLayout oldLayout; - VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, // VkImageLayout newLayout; - VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; - VK_QUEUE_FAMILY_IGNORED, // deUint32 destQueueFamilyIndex; - *colorImage, // VkImage image; - makeColorSubresourceRange(0, caseDef.numLayers) // VkImageSubresourceRange subresourceRange; - } - }; - - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, 0u, - 0u, DE_NULL, 0u, DE_NULL, DE_LENGTH_OF_ARRAY(imageBarriers), imageBarriers); + makeOffset2D(0, 0), + makeExtent2D(imageSize.x(), imageSize.y()), + }; + const VkRenderPassBeginInfo renderPassBeginInfo = + { + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + *renderPass, // VkRenderPass renderPass; + *framebuffer, // VkFramebuffer framebuffer; + renderArea, // VkRect2D renderArea; + static_cast(clearValues.size()), // uint32_t clearValueCount; + &clearValues[0], // const VkClearValue* pClearValues; + }; + const VkDeviceSize vertexBufferOffset = 0ull; + + vk.cmdBeginRenderPass(*cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE); + vk.cmdBindVertexBuffers(*cmdBuffer, 0u, 1u, &vertexBuffer.get(), &vertexBufferOffset); + } - const VkBufferImageCopy region = + // Draw + for (deUint32 subpassNdx = 0; subpassNdx < static_cast(numSlices); ++subpassNdx) { - 0ull, // VkDeviceSize bufferOffset; - 0u, // uint32_t bufferRowLength; - 0u, // uint32_t bufferImageHeight; - makeImageSubresourceLayers(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 0u, caseDef.numLayers), // VkImageSubresourceLayers imageSubresource; - makeOffset3D(0, 0, 0), // VkOffset3D imageOffset; - makeExtent3D(caseDef.renderSize), // VkExtent3D imageExtent; - }; + if (subpassNdx != 0) + vk.cmdNextSubpass(*cmdBuffer, VK_SUBPASS_CONTENTS_INLINE); - vk.cmdCopyImageToBuffer(*cmdBuffer, *colorImage, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *colorBuffer, 1u, ®ion); + vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, **pipelines[subpassNdx]); + vk.cmdDraw(*cmdBuffer, 4u, 1u, subpassNdx*4u, 0u); + } + + vk.cmdEndRenderPass(*cmdBuffer); - const VkBufferMemoryBarrier bufferBarriers[] = + // Copy colorImage -> host visible colorBuffer { + const VkImageMemoryBarrier imageBarriers[] = { - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_ACCESS_TRANSFER_WRITE_BIT, // VkAccessFlags srcAccessMask; - VK_ACCESS_HOST_READ_BIT, // VkAccessFlags dstAccessMask; - VK_QUEUE_FAMILY_IGNORED, // uint32_t srcQueueFamilyIndex; - VK_QUEUE_FAMILY_IGNORED, // uint32_t dstQueueFamilyIndex; - *colorBuffer, // VkBuffer buffer; - 0ull, // VkDeviceSize offset; - VK_WHOLE_SIZE, // VkDeviceSize size; - }, - }; + { + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, // VkStructureType sType; + DE_NULL, // const void* pNext; + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, // VkAccessFlags outputMask; + VK_ACCESS_TRANSFER_READ_BIT, // VkAccessFlags inputMask; + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, // VkImageLayout oldLayout; + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, // VkImageLayout newLayout; + VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, // deUint32 destQueueFamilyIndex; + *colorImage, // VkImage image; + makeColorSubresourceRange(0, imageSize.w()) // VkImageSubresourceRange subresourceRange; + } + }; + + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, 0u, + 0u, DE_NULL, 0u, DE_NULL, DE_LENGTH_OF_ARRAY(imageBarriers), imageBarriers); + + // Copy the checked region rather than the whole image + const VkImageSubresourceLayers subresource = + { + VK_IMAGE_ASPECT_COLOR_BIT, // VkImageAspectFlags aspectMask; + 0u, // uint32_t mipLevel; + static_cast(checkOffset.w()), // uint32_t baseArrayLayer; + static_cast(checkSize.w()), // uint32_t layerCount; + }; - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, 0u, - 0u, DE_NULL, DE_LENGTH_OF_ARRAY(bufferBarriers), bufferBarriers, 0u, DE_NULL); - } + const VkBufferImageCopy region = + { + 0ull, // VkDeviceSize bufferOffset; + 0u, // uint32_t bufferRowLength; + 0u, // uint32_t bufferImageHeight; + subresource, // VkImageSubresourceLayers imageSubresource; + makeOffset3D(checkOffset.x(), checkOffset.y(), checkOffset.z()), // VkOffset3D imageOffset; + makeExtent3D(checkSize.swizzle(0, 1, 2)), // VkExtent3D imageExtent; + }; - VK_CHECK(vk.endCommandBuffer(*cmdBuffer)); - submitCommandsAndWait(vk, device, queue, *cmdBuffer); + vk.cmdCopyImageToBuffer(*cmdBuffer, *colorImage, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *colorBuffer, 1u, ®ion); + + const VkBufferMemoryBarrier bufferBarriers[] = + { + { + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType; + DE_NULL, // const void* pNext; + VK_ACCESS_TRANSFER_WRITE_BIT, // VkAccessFlags srcAccessMask; + VK_ACCESS_HOST_READ_BIT, // VkAccessFlags dstAccessMask; + VK_QUEUE_FAMILY_IGNORED, // uint32_t srcQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, // uint32_t dstQueueFamilyIndex; + *colorBuffer, // VkBuffer buffer; + 0ull, // VkDeviceSize offset; + VK_WHOLE_SIZE, // VkDeviceSize size; + }, + }; + + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, 0u, + 0u, DE_NULL, DE_LENGTH_OF_ARRAY(bufferBarriers), bufferBarriers, 0u, DE_NULL); + } + + VK_CHECK(vk.endCommandBuffer(*cmdBuffer)); + submitCommandsAndWait(vk, device, queue, *cmdBuffer); + } // Verify results { invalidateMappedMemoryRange(vk, device, colorBufferAlloc->getMemory(), colorBufferAlloc->getOffset(), VK_WHOLE_SIZE); const tcu::TextureFormat format = mapVkFormat(caseDef.colorFormat); - const int depth = deMax32(caseDef.renderSize.z(), caseDef.numLayers); - tcu::TextureLevel textureLevel (format, caseDef.renderSize.x(), caseDef.renderSize.y(), depth); - const tcu::PixelBufferAccess expectedImage = getExpectedData (textureLevel, caseDef, color, DE_LENGTH_OF_ARRAY(color)); - const tcu::ConstPixelBufferAccess resultImage (format, caseDef.renderSize.x(), caseDef.renderSize.y(), depth, colorBufferAlloc->getHostPtr()); + const int checkDepth = deMax32(checkSize.z(), checkSize.w()); + const int depthOffset = deMax32(checkOffset.z(), checkOffset.w()); + const tcu::ConstPixelBufferAccess resultImage (format, checkSize.x(), checkSize.y(), checkDepth, colorBufferAlloc->getHostPtr()); + tcu::TextureLevel textureLevel (format, checkSize.x(), checkSize.y(), checkDepth); + const tcu::PixelBufferAccess expectedImage = textureLevel.getAccess(); + bool ok = false; + + generateExpectedImage(expectedImage, checkSize.swizzle(0, 1), depthOffset, color, DE_LENGTH_OF_ARRAY(color)); + + if (isFloatFormat(caseDef.colorFormat)) + ok = tcu::floatThresholdCompare(context.getTestContext().getLog(), "Image Comparison", "", expectedImage, resultImage, tcu::Vec4(0.01f), tcu::COMPARE_LOG_RESULT); + else + ok = tcu::intThresholdCompare(context.getTestContext().getLog(), "Image Comparison", "", expectedImage, resultImage, tcu::UVec4(2), tcu::COMPARE_LOG_RESULT); - if (!tcu::intThresholdCompare(context.getTestContext().getLog(), "Image Comparison", "", expectedImage, resultImage, tcu::UVec4(2), tcu::COMPARE_LOG_RESULT)) - return tcu::TestStatus::fail("Fail"); + return ok ? tcu::TestStatus::pass("Pass") : tcu::TestStatus::fail("Fail"); } - return tcu::TestStatus::pass("Pass"); } -std::string getSizeString (const IVec3& size, const int numLayer) +//! A test that can exercise very big color and depth/stencil attachment sizes. +//! If the total memory consumed by images is too large, or if the implementation returns OUT_OF_MEMORY error somewhere, +//! the test can be retried with a next increment of size reduction index, making the attachments smaller. +tcu::TestStatus testAttachmentSize (Context& context, const CaseDef caseDef) +{ + if (caseDef.viewType == VK_IMAGE_VIEW_TYPE_3D && + !de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), "VK_KHR_maintenance1")) + TCU_THROW(NotSupportedError, "Extension VK_KHR_maintenance1 not supported"); + + if (caseDef.viewType == VK_IMAGE_VIEW_TYPE_CUBE_ARRAY && !context.getDeviceFeatures().imageCubeArray) + TCU_THROW(NotSupportedError, "Missing feature: imageCubeArray"); + + int sizeReductionIndex = 0; + + for (;;) + { + try + { + return testWithSizeReduction(context, caseDef, sizeReductionIndex); + } + catch (OutOfMemoryError& ex) + { + context.getTestContext().getLog() + << tcu::TestLog::Message << "-- OutOfMemoryError: " << ex.getMessage() << tcu::TestLog::EndMessage; + + ++sizeReductionIndex; + } + } + // Never reached +} + +std::string getSizeDescription (const IVec4& size) { std::ostringstream str; - str << size.x(); - if (size.y() > 1) str << "x" << size.y(); - if (size.z() > 1) str << "x" << size.z(); - if (numLayer > 1) str << "_" << numLayer; + + const char* const description[4] = + { + "width", "height", "depth", "layers" + }; + + int numMaxComponents = 0; + + for (int i = 0; i < 4; ++i) + { + if (size[i] == MAX_SIZE) + { + if (numMaxComponents > 0) + str << "_"; + + str << description[i]; + ++numMaxComponents; + } + } + + if (numMaxComponents == 0) + str << "small"; return str.str(); } -std::string getFormatString (const VkFormat format) +inline std::string getFormatString (const VkFormat format) { std::string name(getFormatName(format)); return de::toLower(name.substr(10)); } +std::string getFormatString (const VkFormat colorFormat, const VkFormat depthStencilFormat) +{ + std::ostringstream str; + str << getFormatString(colorFormat); + if (depthStencilFormat != VK_FORMAT_UNDEFINED) + str << "_" << getFormatString(depthStencilFormat); + return str.str(); +} + std::string getShortImageViewTypeName (const VkImageViewType imageViewType) { std::string s(getImageViewTypeName(imageViewType)); return de::toLower(s.substr(19)); } -CaseDef caseDefWithFormat (CaseDef caseDef, const VkFormat format) +inline BVec4 bvecFromMask (deUint32 mask) +{ + return BVec4((mask >> 0) & 1, + (mask >> 1) & 1, + (mask >> 2) & 1, + (mask >> 3) & 1); +} + +std::vector genSizeCombinations (const IVec4& baselineSize, const deUint32 sizeMask, const VkImageViewType imageViewType) { - caseDef.colorFormat = format; - return caseDef; + std::vector sizes; + std::set masks; + + for (deUint32 i = 0; i < (1u << 4); ++i) + { + // Cube images have square faces + if (isCube(imageViewType) && ((i & MASK_WH) != 0)) + i |= MASK_WH; + + masks.insert(i & sizeMask); + } + + for (std::set::const_iterator it = masks.begin(); it != masks.end(); ++it) + sizes.push_back(tcu::select(IVec4(MAX_SIZE), baselineSize, bvecFromMask(*it))); + + return sizes; } void addTestCasesWithFunctions (tcu::TestCaseGroup* group) { - const CaseDef caseDef[] = + const struct { - { VK_IMAGE_VIEW_TYPE_1D, IVec3(54, 1, 1), 1, VK_FORMAT_UNDEFINED}, - { 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}, + VkImageViewType viewType; + IVec4 baselineSize; //!< image size: (dimX, dimY, dimZ, arraySize) + deUint32 sizeMask; //!< if a dimension is masked, generate a huge size case for it + } testCase[] = + { + { VK_IMAGE_VIEW_TYPE_1D, IVec4(54, 1, 1, 1), MASK_W }, + { VK_IMAGE_VIEW_TYPE_1D_ARRAY, IVec4(54, 1, 1, 4), MASK_W_LAYERS }, + { VK_IMAGE_VIEW_TYPE_2D, IVec4(44, 23, 1, 1), MASK_WH }, + { VK_IMAGE_VIEW_TYPE_2D_ARRAY, IVec4(44, 23, 1, 4), MASK_WH_LAYERS }, + { VK_IMAGE_VIEW_TYPE_3D, IVec4(22, 31, 7, 1), MASK_WHD }, + { VK_IMAGE_VIEW_TYPE_CUBE, IVec4(35, 35, 1, 6), MASK_WH }, + { VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, IVec4(35, 35, 1, 2*6), MASK_WH_LAYERS }, }; const VkFormat format[] = @@ -778,16 +1171,68 @@ void addTestCasesWithFunctions (tcu::TestCaseGroup* group) VK_FORMAT_R32G32B32A32_SFLOAT, }; - for (int sizeNdx = 0; sizeNdx < DE_LENGTH_OF_ARRAY(caseDef); ++sizeNdx) + const VkFormat depthStencilFormat[] = + { + VK_FORMAT_UNDEFINED, // don't use a depth/stencil attachment + VK_FORMAT_D16_UNORM, + VK_FORMAT_S8_UINT, + VK_FORMAT_D24_UNORM_S8_UINT, // one of the following mixed formats must be supported + VK_FORMAT_D32_SFLOAT_S8_UINT, + }; + + // Generate attachment size cases for all render targets + for (int caseNdx = 0; caseNdx < DE_LENGTH_OF_ARRAY(testCase); ++caseNdx) { - MovePtr imageGroup(new tcu::TestCaseGroup(group->getTestContext(), getShortImageViewTypeName(caseDef[sizeNdx].imageType).c_str(), "")); + MovePtr imageGroup(new tcu::TestCaseGroup(group->getTestContext(), getShortImageViewTypeName(testCase[caseNdx].viewType).c_str(), "")); { - MovePtr sizeGroup(new tcu::TestCaseGroup(group->getTestContext(), getSizeString(caseDef[sizeNdx].renderSize, caseDef[sizeNdx].numLayers).c_str(), "")); + const std::vector sizes = genSizeCombinations(testCase[caseNdx].baselineSize, testCase[caseNdx].sizeMask, testCase[caseNdx].viewType); + + MovePtr smallGroup(new tcu::TestCaseGroup(group->getTestContext(), "small", "")); + MovePtr hugeGroup (new tcu::TestCaseGroup(group->getTestContext(), "huge", "")); - for (int formatNdx = 0; formatNdx < DE_LENGTH_OF_ARRAY(format); ++formatNdx) - addFunctionCaseWithPrograms(sizeGroup.get(), getFormatString(format[formatNdx]).c_str(), "", initPrograms, test, caseDefWithFormat(caseDef[sizeNdx], format[formatNdx])); + imageGroup->addChild(smallGroup.get()); + imageGroup->addChild(hugeGroup.get()); - imageGroup->addChild(sizeGroup.release()); + for (std::vector::const_iterator sizeIter = sizes.begin(); sizeIter != sizes.end(); ++sizeIter) + { + // The first size is the baseline size, put it in a dedicated group + if (sizeIter == sizes.begin()) + { + for (int dsFormatNdx = 0; dsFormatNdx < DE_LENGTH_OF_ARRAY(depthStencilFormat); ++dsFormatNdx) + for (int formatNdx = 0; formatNdx < DE_LENGTH_OF_ARRAY(format); ++formatNdx) + { + const CaseDef caseDef = + { + testCase[caseNdx].viewType, // VkImageViewType imageType; + *sizeIter, // IVec4 imageSizeHint; + format[formatNdx], // VkFormat colorFormat; + depthStencilFormat[dsFormatNdx], // VkFormat depthStencilFormat; + }; + addFunctionCaseWithPrograms(smallGroup.get(), getFormatString(format[formatNdx], depthStencilFormat[dsFormatNdx]), "", initPrograms, testAttachmentSize, caseDef); + } + } + else // All huge cases go into a separate group + { + MovePtr sizeGroup (new tcu::TestCaseGroup(group->getTestContext(), getSizeDescription(*sizeIter).c_str(), "")); + const VkFormat colorFormat = VK_FORMAT_R8G8B8A8_UNORM; + + // Use the same color format for all cases, to reduce the number of permutations + for (int dsFormatNdx = 0; dsFormatNdx < DE_LENGTH_OF_ARRAY(depthStencilFormat); ++dsFormatNdx) + { + const CaseDef caseDef = + { + testCase[caseNdx].viewType, // VkImageViewType viewType; + *sizeIter, // IVec4 imageSizeHint; + colorFormat, // VkFormat colorFormat; + depthStencilFormat[dsFormatNdx], // VkFormat depthStencilFormat; + }; + addFunctionCaseWithPrograms(sizeGroup.get(), getFormatString(colorFormat, depthStencilFormat[dsFormatNdx]), "", initPrograms, testAttachmentSize, caseDef); + } + hugeGroup->addChild(sizeGroup.release()); + } + } + smallGroup.release(); + hugeGroup.release(); } group->addChild(imageGroup.release()); } diff --git a/external/vulkancts/mustpass/1.0.2/src/master.txt b/external/vulkancts/mustpass/1.0.2/src/master.txt index 15a5b87..00e3cdd 100644 --- a/external/vulkancts/mustpass/1.0.2/src/master.txt +++ b/external/vulkancts/mustpass/1.0.2/src/master.txt @@ -85779,34 +85779,34 @@ dEQP-VK.pipeline.cache.compute_tests.compute_stage dEQP-VK.pipeline.cache.misc_tests.merge_cache_test dEQP-VK.pipeline.cache.misc_tests.cache_header_test dEQP-VK.pipeline.cache.misc_tests.invalid_size_test -dEQP-VK.pipeline.render_to_image.1d.54.r8g8b8a8_unorm -dEQP-VK.pipeline.render_to_image.1d.54.r32_uint -dEQP-VK.pipeline.render_to_image.1d.54.r16g16_sint -dEQP-VK.pipeline.render_to_image.1d.54.r32g32b32a32_sfloat -dEQP-VK.pipeline.render_to_image.1d_array.54_4.r8g8b8a8_unorm -dEQP-VK.pipeline.render_to_image.1d_array.54_4.r32_uint -dEQP-VK.pipeline.render_to_image.1d_array.54_4.r16g16_sint -dEQP-VK.pipeline.render_to_image.1d_array.54_4.r32g32b32a32_sfloat -dEQP-VK.pipeline.render_to_image.2d.22x64.r8g8b8a8_unorm -dEQP-VK.pipeline.render_to_image.2d.22x64.r32_uint -dEQP-VK.pipeline.render_to_image.2d.22x64.r16g16_sint -dEQP-VK.pipeline.render_to_image.2d.22x64.r32g32b32a32_sfloat -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 -dEQP-VK.pipeline.render_to_image.cube.35x35_6.r32g32b32a32_sfloat -dEQP-VK.pipeline.render_to_image.cube_array.35x35_12.r8g8b8a8_unorm -dEQP-VK.pipeline.render_to_image.cube_array.35x35_12.r32_uint -dEQP-VK.pipeline.render_to_image.cube_array.35x35_12.r16g16_sint -dEQP-VK.pipeline.render_to_image.cube_array.35x35_12.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.1d.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.1d.small.r32_uint +dEQP-VK.pipeline.render_to_image.1d.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.1d.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.1d_array.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.1d_array.small.r32_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.1d_array.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.2d.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d.small.r32_uint +dEQP-VK.pipeline.render_to_image.2d.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.2d.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.2d_array.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d_array.small.r32_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.2d_array.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.3d.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.3d.small.r32_uint +dEQP-VK.pipeline.render_to_image.3d.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.3d.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.cube.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.cube.small.r32_uint +dEQP-VK.pipeline.render_to_image.cube.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.cube.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.cube_array.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.cube_array.small.r32_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.cube_array.small.r32g32b32a32_sfloat dEQP-VK.binding_model.shader_access.primary_cmd_buf.sampler_mutable.no_access.single_descriptor.1d dEQP-VK.binding_model.shader_access.primary_cmd_buf.sampler_mutable.no_access.single_descriptor.1d_base_mip dEQP-VK.binding_model.shader_access.primary_cmd_buf.sampler_mutable.no_access.single_descriptor.1d_base_slice diff --git a/external/vulkancts/mustpass/1.0.2/vk-default.txt b/external/vulkancts/mustpass/1.0.2/vk-default.txt index 15a5b87..00e3cdd 100644 --- a/external/vulkancts/mustpass/1.0.2/vk-default.txt +++ b/external/vulkancts/mustpass/1.0.2/vk-default.txt @@ -85779,34 +85779,34 @@ dEQP-VK.pipeline.cache.compute_tests.compute_stage dEQP-VK.pipeline.cache.misc_tests.merge_cache_test dEQP-VK.pipeline.cache.misc_tests.cache_header_test dEQP-VK.pipeline.cache.misc_tests.invalid_size_test -dEQP-VK.pipeline.render_to_image.1d.54.r8g8b8a8_unorm -dEQP-VK.pipeline.render_to_image.1d.54.r32_uint -dEQP-VK.pipeline.render_to_image.1d.54.r16g16_sint -dEQP-VK.pipeline.render_to_image.1d.54.r32g32b32a32_sfloat -dEQP-VK.pipeline.render_to_image.1d_array.54_4.r8g8b8a8_unorm -dEQP-VK.pipeline.render_to_image.1d_array.54_4.r32_uint -dEQP-VK.pipeline.render_to_image.1d_array.54_4.r16g16_sint -dEQP-VK.pipeline.render_to_image.1d_array.54_4.r32g32b32a32_sfloat -dEQP-VK.pipeline.render_to_image.2d.22x64.r8g8b8a8_unorm -dEQP-VK.pipeline.render_to_image.2d.22x64.r32_uint -dEQP-VK.pipeline.render_to_image.2d.22x64.r16g16_sint -dEQP-VK.pipeline.render_to_image.2d.22x64.r32g32b32a32_sfloat -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 -dEQP-VK.pipeline.render_to_image.cube.35x35_6.r32g32b32a32_sfloat -dEQP-VK.pipeline.render_to_image.cube_array.35x35_12.r8g8b8a8_unorm -dEQP-VK.pipeline.render_to_image.cube_array.35x35_12.r32_uint -dEQP-VK.pipeline.render_to_image.cube_array.35x35_12.r16g16_sint -dEQP-VK.pipeline.render_to_image.cube_array.35x35_12.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.1d.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.1d.small.r32_uint +dEQP-VK.pipeline.render_to_image.1d.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.1d.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.1d_array.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.1d_array.small.r32_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.1d_array.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.2d.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d.small.r32_uint +dEQP-VK.pipeline.render_to_image.2d.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.2d.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.2d_array.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d_array.small.r32_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.2d_array.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.3d.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.3d.small.r32_uint +dEQP-VK.pipeline.render_to_image.3d.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.3d.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.cube.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.cube.small.r32_uint +dEQP-VK.pipeline.render_to_image.cube.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.cube.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.cube_array.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.cube_array.small.r32_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.cube_array.small.r32g32b32a32_sfloat dEQP-VK.binding_model.shader_access.primary_cmd_buf.sampler_mutable.no_access.single_descriptor.1d dEQP-VK.binding_model.shader_access.primary_cmd_buf.sampler_mutable.no_access.single_descriptor.1d_base_mip dEQP-VK.binding_model.shader_access.primary_cmd_buf.sampler_mutable.no_access.single_descriptor.1d_base_slice diff --git a/external/vulkancts/mustpass/1.0.3/vk-default.txt b/external/vulkancts/mustpass/1.0.3/vk-default.txt index 18fa758..4143668 100644 --- a/external/vulkancts/mustpass/1.0.3/vk-default.txt +++ b/external/vulkancts/mustpass/1.0.3/vk-default.txt @@ -131324,34 +131324,271 @@ dEQP-VK.pipeline.cache.compute_tests.compute_stage dEQP-VK.pipeline.cache.misc_tests.merge_cache_test dEQP-VK.pipeline.cache.misc_tests.cache_header_test dEQP-VK.pipeline.cache.misc_tests.invalid_size_test -dEQP-VK.pipeline.render_to_image.1d.54.r8g8b8a8_unorm -dEQP-VK.pipeline.render_to_image.1d.54.r32_uint -dEQP-VK.pipeline.render_to_image.1d.54.r16g16_sint -dEQP-VK.pipeline.render_to_image.1d.54.r32g32b32a32_sfloat -dEQP-VK.pipeline.render_to_image.1d_array.54_4.r8g8b8a8_unorm -dEQP-VK.pipeline.render_to_image.1d_array.54_4.r32_uint -dEQP-VK.pipeline.render_to_image.1d_array.54_4.r16g16_sint -dEQP-VK.pipeline.render_to_image.1d_array.54_4.r32g32b32a32_sfloat -dEQP-VK.pipeline.render_to_image.2d.22x64.r8g8b8a8_unorm -dEQP-VK.pipeline.render_to_image.2d.22x64.r32_uint -dEQP-VK.pipeline.render_to_image.2d.22x64.r16g16_sint -dEQP-VK.pipeline.render_to_image.2d.22x64.r32g32b32a32_sfloat -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 -dEQP-VK.pipeline.render_to_image.cube.35x35_6.r32g32b32a32_sfloat -dEQP-VK.pipeline.render_to_image.cube_array.35x35_12.r8g8b8a8_unorm -dEQP-VK.pipeline.render_to_image.cube_array.35x35_12.r32_uint -dEQP-VK.pipeline.render_to_image.cube_array.35x35_12.r16g16_sint -dEQP-VK.pipeline.render_to_image.cube_array.35x35_12.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.1d.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.1d.small.r32_uint +dEQP-VK.pipeline.render_to_image.1d.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.1d.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.1d.small.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.1d.small.r32_uint_d16_unorm +dEQP-VK.pipeline.render_to_image.1d.small.r16g16_sint_d16_unorm +dEQP-VK.pipeline.render_to_image.1d.small.r32g32b32a32_sfloat_d16_unorm +dEQP-VK.pipeline.render_to_image.1d.small.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r32_uint_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r16g16_sint_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r32g32b32a32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r32_uint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r16g16_sint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r32g32b32a32_sfloat_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r32_uint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r16g16_sint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d.small.r32g32b32a32_sfloat_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d.huge.width.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.1d.huge.width.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.1d.huge.width.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d.huge.width.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d.huge.width.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.1d_array.small.r32_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.1d_array.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.1d_array.small.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.1d_array.small.r32_uint_d16_unorm +dEQP-VK.pipeline.render_to_image.1d_array.small.r16g16_sint_d16_unorm +dEQP-VK.pipeline.render_to_image.1d_array.small.r32g32b32a32_sfloat_d16_unorm +dEQP-VK.pipeline.render_to_image.1d_array.small.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r32_uint_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r16g16_sint_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r32g32b32a32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r32_uint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r16g16_sint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r32g32b32a32_sfloat_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r32_uint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r16g16_sint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.small.r32g32b32a32_sfloat_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.huge.width.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.1d_array.huge.width.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.1d_array.huge.width.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.huge.width.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.huge.width.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.huge.layers.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.1d_array.huge.layers.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.1d_array.huge.layers.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.huge.layers.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.huge.layers.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.huge.width_layers.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.1d_array.huge.width_layers.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.1d_array.huge.width_layers.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.huge.width_layers.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.1d_array.huge.width_layers.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d.small.r32_uint +dEQP-VK.pipeline.render_to_image.2d.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.2d.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.2d.small.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d.small.r32_uint_d16_unorm +dEQP-VK.pipeline.render_to_image.2d.small.r16g16_sint_d16_unorm +dEQP-VK.pipeline.render_to_image.2d.small.r32g32b32a32_sfloat_d16_unorm +dEQP-VK.pipeline.render_to_image.2d.small.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r32_uint_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r16g16_sint_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r32g32b32a32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r32_uint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r16g16_sint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r32g32b32a32_sfloat_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r32_uint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r16g16_sint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d.small.r32g32b32a32_sfloat_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d.huge.width.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d.huge.width.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d.huge.width.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.huge.width.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.huge.width.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d.huge.height.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d.huge.height.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d.huge.height.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.huge.height.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.huge.height.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d.huge.width_height.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d.huge.width_height.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d.huge.width_height.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.huge.width_height.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d.huge.width_height.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d_array.small.r32_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.2d_array.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.2d_array.small.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.small.r32_uint_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.small.r16g16_sint_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.small.r32g32b32a32_sfloat_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.small.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r32_uint_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r16g16_sint_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r32g32b32a32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r32_uint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r16g16_sint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r32g32b32a32_sfloat_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r32_uint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r16g16_sint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.small.r32g32b32a32_sfloat_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.width.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.width.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.height.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.height.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.height.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.height.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.height.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.layers.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.layers.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.layers.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.layers.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.layers.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_layers.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_layers.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_layers.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_layers.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_layers.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.height_layers.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.height_layers.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.height_layers.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.height_layers.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.height_layers.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height_layers.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height_layers.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height_layers.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height_layers.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.2d_array.huge.width_height_layers.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.3d.small.r32_uint +dEQP-VK.pipeline.render_to_image.3d.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.3d.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.3d.small.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.small.r32_uint_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.small.r16g16_sint_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.small.r32g32b32a32_sfloat_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.small.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r32_uint_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r16g16_sint_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r32g32b32a32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r32_uint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r16g16_sint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r32g32b32a32_sfloat_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r32_uint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r16g16_sint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.small.r32g32b32a32_sfloat_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.width.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.width.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.height.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.height.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.height.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.height.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.height.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width_height.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.width_height.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.width_height.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width_height.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width_height.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.depth.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.depth.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.depth.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.depth.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.depth.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width_depth.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.width_depth.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.width_depth.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width_depth.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width_depth.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.height_depth.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.height_depth.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.height_depth.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.height_depth.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.height_depth.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width_height_depth.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.width_height_depth.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.3d.huge.width_height_depth.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width_height_depth.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.3d.huge.width_height_depth.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.cube.small.r32_uint +dEQP-VK.pipeline.render_to_image.cube.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.cube.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.cube.small.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.cube.small.r32_uint_d16_unorm +dEQP-VK.pipeline.render_to_image.cube.small.r16g16_sint_d16_unorm +dEQP-VK.pipeline.render_to_image.cube.small.r32g32b32a32_sfloat_d16_unorm +dEQP-VK.pipeline.render_to_image.cube.small.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r32_uint_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r16g16_sint_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r32g32b32a32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r32_uint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r16g16_sint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r32g32b32a32_sfloat_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r32_uint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r16g16_sint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube.small.r32g32b32a32_sfloat_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube.huge.width_height.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.cube.huge.width_height.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.cube.huge.width_height.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube.huge.width_height.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube.huge.width_height.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.cube_array.small.r32_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r16g16_sint +dEQP-VK.pipeline.render_to_image.cube_array.small.r32g32b32a32_sfloat +dEQP-VK.pipeline.render_to_image.cube_array.small.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.cube_array.small.r32_uint_d16_unorm +dEQP-VK.pipeline.render_to_image.cube_array.small.r16g16_sint_d16_unorm +dEQP-VK.pipeline.render_to_image.cube_array.small.r32g32b32a32_sfloat_d16_unorm +dEQP-VK.pipeline.render_to_image.cube_array.small.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r32_uint_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r16g16_sint_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r32g32b32a32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r32_uint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r16g16_sint_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r32g32b32a32_sfloat_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r32_uint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r16g16_sint_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.small.r32g32b32a32_sfloat_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.huge.layers.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.cube_array.huge.layers.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.cube_array.huge.layers.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.huge.layers.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.huge.layers.r8g8b8a8_unorm_d32_sfloat_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height_layers.r8g8b8a8_unorm +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height_layers.r8g8b8a8_unorm_d16_unorm +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height_layers.r8g8b8a8_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height_layers.r8g8b8a8_unorm_d24_unorm_s8_uint +dEQP-VK.pipeline.render_to_image.cube_array.huge.width_height_layers.r8g8b8a8_unorm_d32_sfloat_s8_uint dEQP-VK.pipeline.framebuffer_attachment.1d_32_64 dEQP-VK.pipeline.framebuffer_attachment.1d_32_48 dEQP-VK.pipeline.framebuffer_attachment.1d_32_39 -- 2.7.4