From d77714777c3242c399ff7f36b0fd6ec2f1718c10 Mon Sep 17 00:00:00 2001 From: Ari Suonpaa Date: Tue, 26 Sep 2017 10:51:57 +0300 Subject: [PATCH] Add sparse image support for pipeline multisample tests. Extended pipeline multisample tests to support source images that are using sparse binding. Affects: dEQP-VK.pipeline.multisample.* Components: Vulkan VK-GL-CTS issue: 101 Change-Id: Ice9624de3e88d0a5daf6574f257714fa83db0877 --- android/cts/master/vk-master.txt | 223 +++++++++++++++ .../vulkan/pipeline/vktPipelineImageUtil.cpp | 65 +++-- .../vulkan/pipeline/vktPipelineImageUtil.hpp | 8 + .../pipeline/vktPipelineMultisampleTests.cpp | 301 ++++++++++++++------- .../pipeline/vktPipelineMultisampleTests.hpp | 1 + .../mustpass/1.0.4/vk-default-no-waivers.txt | 223 +++++++++++++++ external/vulkancts/mustpass/1.0.4/vk-default.txt | 223 +++++++++++++++ 7 files changed, 918 insertions(+), 126 deletions(-) diff --git a/android/cts/master/vk-master.txt b/android/cts/master/vk-master.txt index 4db4fa2..905ff01 100644 --- a/android/cts/master/vk-master.txt +++ b/android/cts/master/vk-master.txt @@ -153275,223 +153275,446 @@ dEQP-VK.pipeline.multisample.raster_samples.samples_2.primitive_point dEQP-VK.pipeline.multisample.raster_samples.samples_2.depth dEQP-VK.pipeline.multisample.raster_samples.samples_2.stencil dEQP-VK.pipeline.multisample.raster_samples.samples_2.depth_stencil +dEQP-VK.pipeline.multisample.raster_samples.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_2.primitive_point_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_2.depth_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_2.stencil_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_2.depth_stencil_sparse dEQP-VK.pipeline.multisample.raster_samples.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.raster_samples.samples_4.primitive_line dEQP-VK.pipeline.multisample.raster_samples.samples_4.primitive_point dEQP-VK.pipeline.multisample.raster_samples.samples_4.depth dEQP-VK.pipeline.multisample.raster_samples.samples_4.stencil dEQP-VK.pipeline.multisample.raster_samples.samples_4.depth_stencil +dEQP-VK.pipeline.multisample.raster_samples.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_4.primitive_point_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_4.depth_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_4.stencil_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_4.depth_stencil_sparse dEQP-VK.pipeline.multisample.raster_samples.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.raster_samples.samples_8.primitive_line dEQP-VK.pipeline.multisample.raster_samples.samples_8.primitive_point dEQP-VK.pipeline.multisample.raster_samples.samples_8.depth dEQP-VK.pipeline.multisample.raster_samples.samples_8.stencil dEQP-VK.pipeline.multisample.raster_samples.samples_8.depth_stencil +dEQP-VK.pipeline.multisample.raster_samples.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_8.primitive_point_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_8.depth_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_8.stencil_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_8.depth_stencil_sparse dEQP-VK.pipeline.multisample.raster_samples.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.raster_samples.samples_16.primitive_line dEQP-VK.pipeline.multisample.raster_samples.samples_16.primitive_point dEQP-VK.pipeline.multisample.raster_samples.samples_16.depth dEQP-VK.pipeline.multisample.raster_samples.samples_16.stencil dEQP-VK.pipeline.multisample.raster_samples.samples_16.depth_stencil +dEQP-VK.pipeline.multisample.raster_samples.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_16.primitive_point_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_16.depth_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_16.stencil_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_16.depth_stencil_sparse dEQP-VK.pipeline.multisample.raster_samples.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.raster_samples.samples_32.primitive_line dEQP-VK.pipeline.multisample.raster_samples.samples_32.primitive_point dEQP-VK.pipeline.multisample.raster_samples.samples_32.depth dEQP-VK.pipeline.multisample.raster_samples.samples_32.stencil dEQP-VK.pipeline.multisample.raster_samples.samples_32.depth_stencil +dEQP-VK.pipeline.multisample.raster_samples.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_32.primitive_point_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_32.depth_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_32.stencil_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_32.depth_stencil_sparse dEQP-VK.pipeline.multisample.raster_samples.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.raster_samples.samples_64.primitive_line dEQP-VK.pipeline.multisample.raster_samples.samples_64.primitive_point dEQP-VK.pipeline.multisample.raster_samples.samples_64.depth dEQP-VK.pipeline.multisample.raster_samples.samples_64.stencil dEQP-VK.pipeline.multisample.raster_samples.samples_64.depth_stencil +dEQP-VK.pipeline.multisample.raster_samples.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_64.primitive_point_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_64.depth_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_64.stencil_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_64.depth_stencil_sparse dEQP-VK.pipeline.multisample.raster_samples_consistency.unique_colors_check +dEQP-VK.pipeline.multisample.raster_samples_consistency.unique_colors_check_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_2.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_2.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_4.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_4.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_8.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_8.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_16.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_16.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_32.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_32.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_64.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_64.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_2.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_2.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_4.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_4.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_8.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_8.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_16.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_16.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_32.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_32.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_64.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_64.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_2.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_2.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_4.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_4.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_8.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_8.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_16.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_16.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_32.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_32.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_64.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_64.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_2.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_2.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_4.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_4.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_8.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_8.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_16.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_16.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_32.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_32.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_64.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_64.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_2.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_2.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_4.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_4.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_8.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_8.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_16.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_16.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_32.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_32.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_64.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_64.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_2.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_2.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_4.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_4.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_8.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_8.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_16.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_16.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_32.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_32.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_64.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_64.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_2.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_2.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_4.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_4.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_8.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_8.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_16.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_16.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_32.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_32.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_64.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_64.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_2.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_2.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_4.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_4.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_8.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_8.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_16.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_16.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_32.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_32.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_64.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_64.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_2.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_2.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_4.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_4.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_8.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_8.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_16.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_16.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_32.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_32.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_64.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_64.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.alpha_to_one.samples_2 +dEQP-VK.pipeline.multisample.alpha_to_one.samples_2_sparse dEQP-VK.pipeline.multisample.alpha_to_one.samples_4 +dEQP-VK.pipeline.multisample.alpha_to_one.samples_4_sparse dEQP-VK.pipeline.multisample.alpha_to_one.samples_8 +dEQP-VK.pipeline.multisample.alpha_to_one.samples_8_sparse dEQP-VK.pipeline.multisample.alpha_to_one.samples_16 +dEQP-VK.pipeline.multisample.alpha_to_one.samples_16_sparse dEQP-VK.pipeline.multisample.alpha_to_one.samples_32 +dEQP-VK.pipeline.multisample.alpha_to_one.samples_32_sparse dEQP-VK.pipeline.multisample.alpha_to_one.samples_64 +dEQP-VK.pipeline.multisample.alpha_to_one.samples_64_sparse dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_2.alpha_opaque dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_2.alpha_translucent dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_2.alpha_invisible +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_2.alpha_opaque_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_2.alpha_translucent_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_2.alpha_invisible_sparse dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_4.alpha_opaque dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_4.alpha_translucent dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_4.alpha_invisible +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_4.alpha_opaque_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_4.alpha_translucent_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_4.alpha_invisible_sparse dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_8.alpha_opaque dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_8.alpha_translucent dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_8.alpha_invisible +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_8.alpha_opaque_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_8.alpha_translucent_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_8.alpha_invisible_sparse dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_16.alpha_opaque dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_16.alpha_translucent dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_16.alpha_invisible +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_16.alpha_opaque_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_16.alpha_translucent_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_16.alpha_invisible_sparse dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_32.alpha_opaque dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_32.alpha_translucent dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_32.alpha_invisible +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_32.alpha_opaque_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_32.alpha_translucent_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_32.alpha_invisible_sparse dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_64.alpha_opaque dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_64.alpha_translucent dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_64.alpha_invisible +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_64.alpha_opaque_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_64.alpha_translucent_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_64.alpha_invisible_sparse dEQP-VK.pipeline.multisample.sampled_image.64x64_1.r8g8b8a8_unorm.samples_2 dEQP-VK.pipeline.multisample.sampled_image.64x64_1.r8g8b8a8_unorm.samples_4 dEQP-VK.pipeline.multisample.sampled_image.64x64_1.r8g8b8a8_unorm.samples_8 diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.cpp index 53f7cca..7793c16 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.cpp @@ -555,6 +555,16 @@ void uploadTestTextureInternal (const DeviceInterface& vk, VK_CHECK(vk.waitForFences(device, 1, &fence.get(), true, ~(0ull) /* infinity */)); } +bool checkSparseImageFormatSupport (const VkPhysicalDevice physicalDevice, + const InstanceInterface& instance, + const VkImageCreateInfo& imageCreateInfo) +{ + const std::vector sparseImageFormatPropVec = + getPhysicalDeviceSparseImageFormatProperties(instance, physicalDevice, imageCreateInfo.format, imageCreateInfo.imageType, imageCreateInfo.samples, imageCreateInfo.usage, imageCreateInfo.tiling); + + return (sparseImageFormatPropVec.size() != 0); +} + void allocateAndBindSparseImage (const DeviceInterface& vk, VkDevice device, const VkPhysicalDevice physicalDevice, @@ -573,10 +583,7 @@ void allocateAndBindSparseImage (const DeviceInterface& vk, deUint32 sparseMemoryReqCount = 0; // Check if the image format supports sparse operations - const std::vector sparseImageFormatPropVec = - getPhysicalDeviceSparseImageFormatProperties(instance, physicalDevice, imageCreateInfo.format, imageCreateInfo.imageType, imageCreateInfo.samples, imageCreateInfo.usage, imageCreateInfo.tiling); - - if (sparseImageFormatPropVec.size() == 0) + if (!checkSparseImageFormatSupport(physicalDevice, instance, imageCreateInfo)) TCU_THROW(NotSupportedError, "The image format does not support sparse operations."); vk.getImageSparseMemoryRequirements(device, destImage, &sparseMemoryReqCount, DE_NULL); @@ -697,7 +704,7 @@ void allocateAndBindSparseImage (const DeviceInterface& vk, // 2) otherwise: only one tail is needed. if (aspectRequirements.imageMipTailSize > 0) { - if (imageMipTailMemoryBinds.size() == 0 || (aspectRequirements.formatProperties.flags & VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT) == 0) + if (layerNdx == 0 || (aspectRequirements.formatProperties.flags & VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT) == 0) { const VkMemoryRequirements allocRequirements = { @@ -721,36 +728,36 @@ void allocateAndBindSparseImage (const DeviceInterface& vk, imageMipTailMemoryBinds.push_back(imageMipTailMemoryBind); } + } - // Metadata - if (metadataAspectIndex != noMatchFound) - { - const VkSparseImageMemoryRequirements metadataAspectRequirements = sparseImageMemoryRequirements[metadataAspectIndex]; + // Metadata + if (metadataAspectIndex != noMatchFound) + { + const VkSparseImageMemoryRequirements metadataAspectRequirements = sparseImageMemoryRequirements[metadataAspectIndex]; - if (imageMipTailMemoryBinds.size() == 1 || (metadataAspectRequirements.formatProperties.flags & VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT) == 0) + if (layerNdx == 0 || (metadataAspectRequirements.formatProperties.flags & VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT) == 0) + { + const VkMemoryRequirements metadataAllocRequirements = { - const VkMemoryRequirements metadataAllocRequirements = - { - metadataAspectRequirements.imageMipTailSize, // VkDeviceSize size; - memoryRequirements.alignment, // VkDeviceSize alignment; - memoryRequirements.memoryTypeBits, // uint32_t memoryTypeBits; - }; - const de::SharedPtr metadataAllocation(allocator.allocate(metadataAllocRequirements, MemoryRequirement::Any).release()); + metadataAspectRequirements.imageMipTailSize, // VkDeviceSize size; + memoryRequirements.alignment, // VkDeviceSize alignment; + memoryRequirements.memoryTypeBits, // uint32_t memoryTypeBits; + }; + const de::SharedPtr metadataAllocation(allocator.allocate(metadataAllocRequirements, MemoryRequirement::Any).release()); - const VkSparseMemoryBind metadataMipTailMemoryBind = - { - metadataAspectRequirements.imageMipTailOffset + - layerNdx * metadataAspectRequirements.imageMipTailStride, // VkDeviceSize resourceOffset; - metadataAspectRequirements.imageMipTailSize, // VkDeviceSize size; - metadataAllocation->getMemory(), // VkDeviceMemory memory; - metadataAllocation->getOffset(), // VkDeviceSize memoryOffset; - VK_SPARSE_MEMORY_BIND_METADATA_BIT // VkSparseMemoryBindFlags flags; - }; + const VkSparseMemoryBind metadataMipTailMemoryBind = + { + metadataAspectRequirements.imageMipTailOffset + + layerNdx * metadataAspectRequirements.imageMipTailStride, // VkDeviceSize resourceOffset; + metadataAspectRequirements.imageMipTailSize, // VkDeviceSize size; + metadataAllocation->getMemory(), // VkDeviceMemory memory; + metadataAllocation->getOffset(), // VkDeviceSize memoryOffset; + VK_SPARSE_MEMORY_BIND_METADATA_BIT // VkSparseMemoryBindFlags flags; + }; - allocations.push_back(metadataAllocation); + allocations.push_back(metadataAllocation); - imageMipTailMemoryBinds.push_back(metadataMipTailMemoryBind); - } + imageMipTailMemoryBinds.push_back(metadataMipTailMemoryBind); } } } diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.hpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.hpp index eec9b5d..d2e583d 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.hpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineImageUtil.hpp @@ -120,6 +120,14 @@ void uploadTestTextureSparse (const vk::DeviceInterface& vk, vk::VkImage destImage); /*--------------------------------------------------------------------*//*! + * Checks if the physical device supports creation of the specified + * image format. + *//*--------------------------------------------------------------------*/ +bool checkSparseImageFormatSupport (const vk::VkPhysicalDevice physicalDevice, + const vk::InstanceInterface& instance, + const vk::VkImageCreateInfo& imageCreateInfo); + +/*--------------------------------------------------------------------*//*! * Allocates memory for a sparse image and handles the memory binding. *//*--------------------------------------------------------------------*/ void allocateAndBindSparseImage (const vk::DeviceInterface& vk, diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleTests.cpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleTests.cpp index 6d8003d..c71979e 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleTests.cpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleTests.cpp @@ -4,6 +4,7 @@ * * Copyright (c) 2015 The Khronos Group Inc. * Copyright (c) 2015 Imagination Technologies Ltd. + * Copyright (c) 2017 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -85,7 +86,19 @@ enum RenderType RENDER_TYPE_COPY_SAMPLES }; -void initMultisamplePrograms (SourceCollections& sources, GeometryType geometryType); +enum ImageBackingMode +{ + IMAGE_BACKING_MODE_REGULAR = 0u, + IMAGE_BACKING_MODE_SPARSE +}; + +struct MultisampleTestParams +{ + GeometryType geometryType; + ImageBackingMode backingMode; +}; + +void initMultisamplePrograms (SourceCollections& sources, MultisampleTestParams params); bool isSupportedSampleCount (const InstanceInterface& instanceInterface, VkPhysicalDevice physicalDevice, VkSampleCountFlagBits rasterizationSamples); bool isSupportedDepthStencilFormat (const InstanceInterface& vki, const VkPhysicalDevice physDevice, const VkFormat format); VkPipelineColorBlendAttachmentState getDefaultColorBlendAttachmentState (void); @@ -104,7 +117,8 @@ public: const std::string& description, const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, const VkPipelineColorBlendAttachmentState& blendState, - GeometryType geometryType); + GeometryType geometryType, + ImageBackingMode backingMode); virtual ~MultisampleTest (void) {} virtual void initPrograms (SourceCollections& programCollection) const; @@ -119,6 +133,7 @@ protected: VkPipelineMultisampleStateCreateInfo m_multisampleStateParams; const VkPipelineColorBlendAttachmentState m_colorBlendState; const GeometryType m_geometryType; + const ImageBackingMode m_backingMode; std::vector m_sampleMask; }; @@ -130,6 +145,7 @@ public: const std::string& description, VkSampleCountFlagBits rasterizationSamples, GeometryType geometryType, + ImageBackingMode backingMode, TestModeFlags modeFlags = 0u); virtual ~RasterizationSamplesTest (void) {} @@ -142,6 +158,7 @@ protected: static VkPipelineMultisampleStateCreateInfo getRasterizationSamplesStateParams (VkSampleCountFlagBits rasterizationSamples); + const ImageBackingMode m_backingMode; const TestModeFlags m_modeFlags; }; @@ -153,7 +170,8 @@ public: const std::string& description, VkSampleCountFlagBits rasterizationSamples, float minSampleShading, - GeometryType geometryType); + GeometryType geometryType, + ImageBackingMode backingMode); virtual ~MinSampleShadingTest (void) {} protected: @@ -165,6 +183,8 @@ protected: const VkPipelineColorBlendAttachmentState& colorBlendState) const; static VkPipelineMultisampleStateCreateInfo getMinSampleShadingStateParams (VkSampleCountFlagBits rasterizationSamples, float minSampleShading); + + const ImageBackingMode m_backingMode; }; class SampleMaskTest : public MultisampleTest @@ -175,7 +195,8 @@ public: const std::string& description, VkSampleCountFlagBits rasterizationSamples, const std::vector& sampleMask, - GeometryType geometryType); + GeometryType geometryType, + ImageBackingMode backingMode); virtual ~SampleMaskTest (void) {} @@ -187,6 +208,8 @@ protected: const VkPipelineColorBlendAttachmentState& colorBlendState) const; static VkPipelineMultisampleStateCreateInfo getSampleMaskStateParams (VkSampleCountFlagBits rasterizationSamples, const std::vector& sampleMask); + + const ImageBackingMode m_backingMode; }; class AlphaToOneTest : public MultisampleTest @@ -195,7 +218,8 @@ public: AlphaToOneTest (tcu::TestContext& testContext, const std::string& name, const std::string& description, - VkSampleCountFlagBits rasterizationSamples); + VkSampleCountFlagBits rasterizationSamples, + ImageBackingMode backingMode); virtual ~AlphaToOneTest (void) {} @@ -208,6 +232,8 @@ protected: static VkPipelineMultisampleStateCreateInfo getAlphaToOneStateParams (VkSampleCountFlagBits rasterizationSamples); static VkPipelineColorBlendAttachmentState getAlphaToOneBlendState (void); + + const ImageBackingMode m_backingMode; }; class AlphaToCoverageTest : public MultisampleTest @@ -217,7 +243,8 @@ public: const std::string& name, const std::string& description, VkSampleCountFlagBits rasterizationSamples, - GeometryType geometryType); + GeometryType geometryType, + ImageBackingMode backingMode); virtual ~AlphaToCoverageTest (void) {} @@ -231,6 +258,7 @@ protected: static VkPipelineMultisampleStateCreateInfo getAlphaToCoverageStateParams (VkSampleCountFlagBits rasterizationSamples); GeometryType m_geometryType; + const ImageBackingMode m_backingMode; }; typedef de::SharedPtr > VkPipelineSp; @@ -245,7 +273,8 @@ public: const std::vector& vertices, const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, const VkPipelineColorBlendAttachmentState& blendState, - const RenderType renderType); + const RenderType renderType, + const ImageBackingMode backingMode); MultisampleRenderer (Context& context, const VkFormat colorFormat, @@ -258,7 +287,8 @@ public: const std::vector* pVertices, const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, const VkPipelineColorBlendAttachmentState& blendState, - const RenderType renderType); + const RenderType renderType, + const ImageBackingMode backingMode); virtual ~MultisampleRenderer (void); @@ -273,6 +303,8 @@ protected: Context& m_context; + const Unique m_bindSemaphore; + const VkFormat m_colorFormat; const VkFormat m_depthStencilFormat; tcu::IVec2 m_renderSize; @@ -330,6 +362,10 @@ protected: Move m_cmdBuffer; Move m_fence; + + std::vector > m_allocations; + + ImageBackingMode m_backingMode; }; class RasterizationSamplesInstance : public vkt::TestInstance @@ -340,7 +376,8 @@ public: const std::vector& vertices, const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, const VkPipelineColorBlendAttachmentState& blendState, - const TestModeFlags modeFlags); + const TestModeFlags modeFlags, + ImageBackingMode backingMode); virtual ~RasterizationSamplesInstance (void) {} virtual tcu::TestStatus iterate (void); @@ -364,7 +401,8 @@ public: VkPrimitiveTopology topology, const std::vector& vertices, const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, - const VkPipelineColorBlendAttachmentState& blendState); + const VkPipelineColorBlendAttachmentState& blendState, + ImageBackingMode backingMode); virtual ~MinSampleShadingInstance (void) {} virtual tcu::TestStatus iterate (void); @@ -379,6 +417,7 @@ protected: const std::vector m_vertices; const VkPipelineMultisampleStateCreateInfo m_multisampleStateParams; const VkPipelineColorBlendAttachmentState m_colorBlendState; + const ImageBackingMode m_backingMode; }; class SampleMaskInstance : public vkt::TestInstance @@ -388,7 +427,8 @@ public: VkPrimitiveTopology topology, const std::vector& vertices, const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, - const VkPipelineColorBlendAttachmentState& blendState); + const VkPipelineColorBlendAttachmentState& blendState, + ImageBackingMode backingMode); virtual ~SampleMaskInstance (void) {} virtual tcu::TestStatus iterate (void); @@ -403,6 +443,7 @@ protected: const std::vector m_vertices; const VkPipelineMultisampleStateCreateInfo m_multisampleStateParams; const VkPipelineColorBlendAttachmentState m_colorBlendState; + const ImageBackingMode m_backingMode; }; class AlphaToOneInstance : public vkt::TestInstance @@ -412,7 +453,8 @@ public: VkPrimitiveTopology topology, const std::vector& vertices, const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, - const VkPipelineColorBlendAttachmentState& blendState); + const VkPipelineColorBlendAttachmentState& blendState, + ImageBackingMode backingMode); virtual ~AlphaToOneInstance (void) {} virtual tcu::TestStatus iterate (void); @@ -426,6 +468,7 @@ protected: const std::vector m_vertices; const VkPipelineMultisampleStateCreateInfo m_multisampleStateParams; const VkPipelineColorBlendAttachmentState m_colorBlendState; + const ImageBackingMode m_backingMode; }; class AlphaToCoverageInstance : public vkt::TestInstance @@ -436,7 +479,8 @@ public: const std::vector& vertices, const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, const VkPipelineColorBlendAttachmentState& blendState, - GeometryType geometryType); + GeometryType geometryType, + ImageBackingMode backingMode); virtual ~AlphaToCoverageInstance (void) {} virtual tcu::TestStatus iterate (void); @@ -450,12 +494,13 @@ protected: const VkPipelineMultisampleStateCreateInfo m_multisampleStateParams; const VkPipelineColorBlendAttachmentState m_colorBlendState; const GeometryType m_geometryType; + const ImageBackingMode m_backingMode; }; // Helper functions -void initMultisamplePrograms (SourceCollections& sources, GeometryType geometryType) +void initMultisamplePrograms (SourceCollections& sources, MultisampleTestParams params) { std::ostringstream vertexSource; @@ -468,7 +513,7 @@ void initMultisamplePrograms (SourceCollections& sources, GeometryType geometryT "{\n" " gl_Position = position;\n" " vtxColor = color;\n" - << (geometryType == GEOMETRY_TYPE_OPAQUE_POINT ? " gl_PointSize = 3.0f;\n" + << (params.geometryType == GEOMETRY_TYPE_OPAQUE_POINT ? " gl_PointSize = 3.0f;\n" : "") << "}\n"; @@ -783,11 +828,13 @@ MultisampleTest::MultisampleTest (tcu::TestContext& testContext, const std::string& description, const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, const VkPipelineColorBlendAttachmentState& blendState, - GeometryType geometryType) + GeometryType geometryType, + ImageBackingMode backingMode) : vkt::TestCase (testContext, name, description) , m_multisampleStateParams (multisampleStateParams) , m_colorBlendState (blendState) , m_geometryType (geometryType) + , m_backingMode (backingMode) { if (m_multisampleStateParams.pSampleMask) { @@ -804,7 +851,8 @@ MultisampleTest::MultisampleTest (tcu::TestContext& testContext, void MultisampleTest::initPrograms (SourceCollections& programCollection) const { - initMultisamplePrograms(programCollection, m_geometryType); + MultisampleTestParams params = {m_geometryType, m_backingMode}; + initMultisamplePrograms(programCollection, params); } TestInstance* MultisampleTest::createInstance (Context& context) const @@ -820,8 +868,10 @@ RasterizationSamplesTest::RasterizationSamplesTest (tcu::TestContext& testConte const std::string& description, VkSampleCountFlagBits rasterizationSamples, GeometryType geometryType, + ImageBackingMode backingMode, TestModeFlags modeFlags) - : MultisampleTest (testContext, name, description, getRasterizationSamplesStateParams(rasterizationSamples), getDefaultColorBlendAttachmentState(), geometryType) + : MultisampleTest (testContext, name, description, getRasterizationSamplesStateParams(rasterizationSamples), getDefaultColorBlendAttachmentState(), geometryType, backingMode) + , m_backingMode (backingMode) , m_modeFlags (modeFlags) { } @@ -850,7 +900,7 @@ TestInstance* RasterizationSamplesTest::createMultisampleTestInstance (Context& const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, const VkPipelineColorBlendAttachmentState& colorBlendState) const { - return new RasterizationSamplesInstance(context, topology, vertices, multisampleStateParams, colorBlendState, m_modeFlags); + return new RasterizationSamplesInstance(context, topology, vertices, multisampleStateParams, colorBlendState, m_modeFlags, m_backingMode); } @@ -861,8 +911,10 @@ MinSampleShadingTest::MinSampleShadingTest (tcu::TestContext& testContext, const std::string& description, VkSampleCountFlagBits rasterizationSamples, float minSampleShading, - GeometryType geometryType) - : MultisampleTest (testContext, name, description, getMinSampleShadingStateParams(rasterizationSamples, minSampleShading), getDefaultColorBlendAttachmentState(), geometryType) + GeometryType geometryType, + ImageBackingMode backingMode) + : MultisampleTest (testContext, name, description, getMinSampleShadingStateParams(rasterizationSamples, minSampleShading), getDefaultColorBlendAttachmentState(), geometryType, backingMode) + , m_backingMode (backingMode) { } @@ -877,7 +929,7 @@ TestInstance* MinSampleShadingTest::createMultisampleTestInstance (Context& const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, const VkPipelineColorBlendAttachmentState& colorBlendState) const { - return new MinSampleShadingInstance(context, topology, vertices, multisampleStateParams, colorBlendState); + return new MinSampleShadingInstance(context, topology, vertices, multisampleStateParams, colorBlendState, m_backingMode); } VkPipelineMultisampleStateCreateInfo MinSampleShadingTest::getMinSampleShadingStateParams (VkSampleCountFlagBits rasterizationSamples, float minSampleShading) @@ -906,8 +958,10 @@ SampleMaskTest::SampleMaskTest (tcu::TestContext& testContext, const std::string& description, VkSampleCountFlagBits rasterizationSamples, const std::vector& sampleMask, - GeometryType geometryType) - : MultisampleTest (testContext, name, description, getSampleMaskStateParams(rasterizationSamples, sampleMask), getDefaultColorBlendAttachmentState(), geometryType) + GeometryType geometryType, + ImageBackingMode backingMode) + : MultisampleTest (testContext, name, description, getSampleMaskStateParams(rasterizationSamples, sampleMask), getDefaultColorBlendAttachmentState(), geometryType, backingMode) + , m_backingMode (backingMode) { } @@ -917,7 +971,7 @@ TestInstance* SampleMaskTest::createMultisampleTestInstance (Context& c const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, const VkPipelineColorBlendAttachmentState& colorBlendState) const { - return new SampleMaskInstance(context, topology,vertices, multisampleStateParams, colorBlendState); + return new SampleMaskInstance(context, topology,vertices, multisampleStateParams, colorBlendState, m_backingMode); } VkPipelineMultisampleStateCreateInfo SampleMaskTest::getSampleMaskStateParams (VkSampleCountFlagBits rasterizationSamples, const std::vector& sampleMask) @@ -944,8 +998,10 @@ VkPipelineMultisampleStateCreateInfo SampleMaskTest::getSampleMaskStateParams (V AlphaToOneTest::AlphaToOneTest (tcu::TestContext& testContext, const std::string& name, const std::string& description, - VkSampleCountFlagBits rasterizationSamples) - : MultisampleTest (testContext, name, description, getAlphaToOneStateParams(rasterizationSamples), getAlphaToOneBlendState(), GEOMETRY_TYPE_GRADIENT_QUAD) + VkSampleCountFlagBits rasterizationSamples, + ImageBackingMode backingMode) + : MultisampleTest (testContext, name, description, getAlphaToOneStateParams(rasterizationSamples), getAlphaToOneBlendState(), GEOMETRY_TYPE_GRADIENT_QUAD, backingMode) + , m_backingMode(backingMode) { } @@ -955,7 +1011,7 @@ TestInstance* AlphaToOneTest::createMultisampleTestInstance (Context& c const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, const VkPipelineColorBlendAttachmentState& colorBlendState) const { - return new AlphaToOneInstance(context, topology, vertices, multisampleStateParams, colorBlendState); + return new AlphaToOneInstance(context, topology, vertices, multisampleStateParams, colorBlendState, m_backingMode); } VkPipelineMultisampleStateCreateInfo AlphaToOneTest::getAlphaToOneStateParams (VkSampleCountFlagBits rasterizationSamples) @@ -1001,9 +1057,11 @@ AlphaToCoverageTest::AlphaToCoverageTest (tcu::TestContext& testContext, const std::string& name, const std::string& description, VkSampleCountFlagBits rasterizationSamples, - GeometryType geometryType) - : MultisampleTest (testContext, name, description, getAlphaToCoverageStateParams(rasterizationSamples), getDefaultColorBlendAttachmentState(), geometryType) + GeometryType geometryType, + ImageBackingMode backingMode) + : MultisampleTest (testContext, name, description, getAlphaToCoverageStateParams(rasterizationSamples), getDefaultColorBlendAttachmentState(), geometryType, backingMode) , m_geometryType (geometryType) + , m_backingMode (backingMode) { } @@ -1013,7 +1071,7 @@ TestInstance* AlphaToCoverageTest::createMultisampleTestInstance (Context& const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, const VkPipelineColorBlendAttachmentState& colorBlendState) const { - return new AlphaToCoverageInstance(context, topology, vertices, multisampleStateParams, colorBlendState, m_geometryType); + return new AlphaToCoverageInstance(context, topology, vertices, multisampleStateParams, colorBlendState, m_geometryType, m_backingMode); } VkPipelineMultisampleStateCreateInfo AlphaToCoverageTest::getAlphaToCoverageStateParams (VkSampleCountFlagBits rasterizationSamples) @@ -1041,7 +1099,8 @@ RasterizationSamplesInstance::RasterizationSamplesInstance (Context& co const std::vector& vertices, const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, const VkPipelineColorBlendAttachmentState& blendState, - const TestModeFlags modeFlags) + const TestModeFlags modeFlags, + ImageBackingMode backingMode) : vkt::TestInstance (context) , m_colorFormat (VK_FORMAT_R8G8B8A8_UNORM) , m_renderSize (32, 32) @@ -1064,12 +1123,12 @@ RasterizationSamplesInstance::RasterizationSamplesInstance (Context& co m_multisampleRenderer = de::MovePtr( new MultisampleRenderer( - context, m_colorFormat, depthStencilFormat, m_renderSize, useDepth, useStencil, 2u, pTopology, pVertices, multisampleStateParams, blendState, RENDER_TYPE_RESOLVE)); + context, m_colorFormat, depthStencilFormat, m_renderSize, useDepth, useStencil, 2u, pTopology, pVertices, multisampleStateParams, blendState, RENDER_TYPE_RESOLVE, backingMode)); } else { m_multisampleRenderer = de::MovePtr( - new MultisampleRenderer(context, m_colorFormat, m_renderSize, topology, vertices, multisampleStateParams, blendState, RENDER_TYPE_RESOLVE)); + new MultisampleRenderer(context, m_colorFormat, m_renderSize, topology, vertices, multisampleStateParams, blendState, RENDER_TYPE_RESOLVE, backingMode)); } } @@ -1143,7 +1202,8 @@ MinSampleShadingInstance::MinSampleShadingInstance (Context& context, VkPrimitiveTopology topology, const std::vector& vertices, const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, - const VkPipelineColorBlendAttachmentState& colorBlendState) + const VkPipelineColorBlendAttachmentState& colorBlendState, + ImageBackingMode backingMode) : vkt::TestInstance (context) , m_colorFormat (VK_FORMAT_R8G8B8A8_UNORM) , m_renderSize (32, 32) @@ -1151,6 +1211,7 @@ MinSampleShadingInstance::MinSampleShadingInstance (Context& context, , m_vertices (vertices) , m_multisampleStateParams (multisampleStateParams) , m_colorBlendState (colorBlendState) + , m_backingMode (backingMode) { VkPhysicalDeviceFeatures deviceFeatures; @@ -1171,13 +1232,13 @@ tcu::TestStatus MinSampleShadingInstance::iterate (void) multisampleStateParms.sampleShadingEnable = VK_FALSE; multisampleStateParms.minSampleShading = 0.0; - MultisampleRenderer renderer (m_context, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, multisampleStateParms, m_colorBlendState, RENDER_TYPE_RESOLVE); + MultisampleRenderer renderer (m_context, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, multisampleStateParms, m_colorBlendState, RENDER_TYPE_RESOLVE, m_backingMode); noSampleshadingImage = renderer.render(); } // Render with test minSampleShading and collect per-sample images { - MultisampleRenderer renderer (m_context, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, m_multisampleStateParams, m_colorBlendState, RENDER_TYPE_COPY_SAMPLES); + MultisampleRenderer renderer (m_context, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, m_multisampleStateParams, m_colorBlendState, RENDER_TYPE_COPY_SAMPLES, m_backingMode); renderer.render(); sampleShadedImages.resize(m_multisampleStateParams.rasterizationSamples); @@ -1271,7 +1332,8 @@ SampleMaskInstance::SampleMaskInstance (Context& context, VkPrimitiveTopology topology, const std::vector& vertices, const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, - const VkPipelineColorBlendAttachmentState& blendState) + const VkPipelineColorBlendAttachmentState& blendState, + ImageBackingMode backingMode) : vkt::TestInstance (context) , m_colorFormat (VK_FORMAT_R8G8B8A8_UNORM) , m_renderSize (32, 32) @@ -1279,6 +1341,7 @@ SampleMaskInstance::SampleMaskInstance (Context& context, , m_vertices (vertices) , m_multisampleStateParams (multisampleStateParams) , m_colorBlendState (blendState) + , m_backingMode (backingMode) { } @@ -1290,7 +1353,7 @@ tcu::TestStatus SampleMaskInstance::iterate (void) // Render with test flags { - MultisampleRenderer renderer (m_context, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, m_multisampleStateParams, m_colorBlendState, RENDER_TYPE_RESOLVE); + MultisampleRenderer renderer (m_context, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, m_multisampleStateParams, m_colorBlendState, RENDER_TYPE_RESOLVE, m_backingMode); testSampleMaskImage = renderer.render(); } @@ -1301,7 +1364,7 @@ tcu::TestStatus SampleMaskInstance::iterate (void) multisampleParams.pSampleMask = sampleMask.data(); - MultisampleRenderer renderer (m_context, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, multisampleParams, m_colorBlendState, RENDER_TYPE_RESOLVE); + MultisampleRenderer renderer (m_context, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, multisampleParams, m_colorBlendState, RENDER_TYPE_RESOLVE, m_backingMode); minSampleMaskImage = renderer.render(); } @@ -1312,7 +1375,7 @@ tcu::TestStatus SampleMaskInstance::iterate (void) multisampleParams.pSampleMask = sampleMask.data(); - MultisampleRenderer renderer (m_context, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, multisampleParams, m_colorBlendState, RENDER_TYPE_RESOLVE); + MultisampleRenderer renderer (m_context, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, multisampleParams, m_colorBlendState, RENDER_TYPE_RESOLVE, m_backingMode); maxSampleMaskImage = renderer.render(); } @@ -1341,11 +1404,8 @@ tcu::TestStatus SampleMaskInstance::verifyImage (const tcu::ConstPixelBufferAcce return tcu::TestStatus::pass("Unique colors within expected bounds"); } -tcu::TestStatus testRasterSamplesConsistency (Context& context, GeometryType geometryType) +tcu::TestStatus testRasterSamplesConsistency (Context& context, MultisampleTestParams params) { - // Use triangle only. - DE_UNREF(geometryType); - const VkSampleCountFlagBits samples[] = { VK_SAMPLE_COUNT_1_BIT, @@ -1396,7 +1456,7 @@ tcu::TestStatus testRasterSamplesConsistency (Context& context, GeometryType geo false // VkBool32 alphaToOneEnable; }; - MultisampleRenderer renderer (context, VK_FORMAT_R8G8B8A8_UNORM, tcu::IVec2(32, 32), VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, vertices, multisampleStateParams, getDefaultColorBlendAttachmentState(), RENDER_TYPE_RESOLVE); + MultisampleRenderer renderer (context, VK_FORMAT_R8G8B8A8_UNORM, tcu::IVec2(32, 32), VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, vertices, multisampleStateParams, getDefaultColorBlendAttachmentState(), RENDER_TYPE_RESOLVE, params.backingMode); de::MovePtr result = renderer.render(); const deUint32 uniqueColors = getUniqueColorsCount(result->getAccess()); @@ -1426,7 +1486,8 @@ AlphaToOneInstance::AlphaToOneInstance (Context& context, VkPrimitiveTopology topology, const std::vector& vertices, const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, - const VkPipelineColorBlendAttachmentState& blendState) + const VkPipelineColorBlendAttachmentState& blendState, + ImageBackingMode backingMode) : vkt::TestInstance (context) , m_colorFormat (VK_FORMAT_R8G8B8A8_UNORM) , m_renderSize (32, 32) @@ -1434,6 +1495,7 @@ AlphaToOneInstance::AlphaToOneInstance (Context& context, , m_vertices (vertices) , m_multisampleStateParams (multisampleStateParams) , m_colorBlendState (blendState) + , m_backingMode (backingMode) { VkPhysicalDeviceFeatures deviceFeatures; @@ -1453,7 +1515,7 @@ tcu::TestStatus AlphaToOneInstance::iterate (void) // Render with blend enabled and alpha to one on { - MultisampleRenderer renderer (m_context, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, m_multisampleStateParams, m_colorBlendState, RENDER_TYPE_RESOLVE); + MultisampleRenderer renderer (m_context, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, m_multisampleStateParams, m_colorBlendState, RENDER_TYPE_RESOLVE, m_backingMode); alphaOneImage = renderer.render(); } @@ -1462,7 +1524,7 @@ tcu::TestStatus AlphaToOneInstance::iterate (void) VkPipelineMultisampleStateCreateInfo multisampleParams = m_multisampleStateParams; multisampleParams.alphaToOneEnable = false; - MultisampleRenderer renderer (m_context, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, multisampleParams, m_colorBlendState, RENDER_TYPE_RESOLVE); + MultisampleRenderer renderer (m_context, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, multisampleParams, m_colorBlendState, RENDER_TYPE_RESOLVE, m_backingMode); noAlphaOneImage = renderer.render(); } @@ -1496,7 +1558,8 @@ AlphaToCoverageInstance::AlphaToCoverageInstance (Context& context, const std::vector& vertices, const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, const VkPipelineColorBlendAttachmentState& blendState, - GeometryType geometryType) + GeometryType geometryType, + ImageBackingMode backingMode) : vkt::TestInstance (context) , m_colorFormat (VK_FORMAT_R8G8B8A8_UNORM) , m_renderSize (32, 32) @@ -1505,6 +1568,7 @@ AlphaToCoverageInstance::AlphaToCoverageInstance (Context& context, , m_multisampleStateParams (multisampleStateParams) , m_colorBlendState (blendState) , m_geometryType (geometryType) + , m_backingMode (backingMode) { } @@ -1513,7 +1577,7 @@ tcu::TestStatus AlphaToCoverageInstance::iterate (void) DE_ASSERT(m_multisampleStateParams.alphaToCoverageEnable); de::MovePtr result; - MultisampleRenderer renderer (m_context, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, m_multisampleStateParams, m_colorBlendState, RENDER_TYPE_RESOLVE); + MultisampleRenderer renderer (m_context, m_colorFormat, m_renderSize, m_primitiveTopology, m_vertices, m_multisampleStateParams, m_colorBlendState, RENDER_TYPE_RESOLVE, m_backingMode); result = renderer.render(); @@ -1569,8 +1633,10 @@ MultisampleRenderer::MultisampleRenderer (Context& context, const std::vector& vertices, const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, const VkPipelineColorBlendAttachmentState& blendState, - const RenderType renderType) + const RenderType renderType, + const ImageBackingMode backingMode) : m_context (context) + , m_bindSemaphore (createSemaphore(context.getDeviceInterface(), context.getDevice())) , m_colorFormat (colorFormat) , m_depthStencilFormat (VK_FORMAT_UNDEFINED) , m_renderSize (renderSize) @@ -1579,6 +1645,7 @@ MultisampleRenderer::MultisampleRenderer (Context& context, , m_multisampleStateParams (multisampleStateParams) , m_colorBlendState (blendState) , m_renderType (renderType) + , m_backingMode (backingMode) { initialize(context, 1u, &topology, &vertices); } @@ -1594,8 +1661,10 @@ MultisampleRenderer::MultisampleRenderer (Context& context, const std::vector* pVertices, const VkPipelineMultisampleStateCreateInfo& multisampleStateParams, const VkPipelineColorBlendAttachmentState& blendState, - const RenderType renderType) + const RenderType renderType, + const ImageBackingMode backingMode) : m_context (context) + , m_bindSemaphore (createSemaphore(context.getDeviceInterface(), context.getDevice())) , m_colorFormat (colorFormat) , m_depthStencilFormat (depthStencilFormat) , m_renderSize (renderSize) @@ -1604,6 +1673,7 @@ MultisampleRenderer::MultisampleRenderer (Context& context, , m_multisampleStateParams (multisampleStateParams) , m_colorBlendState (blendState) , m_renderType (renderType) + , m_backingMode (backingMode) { initialize(context, numTopologies, pTopology, pVertices); } @@ -1618,21 +1688,23 @@ void MultisampleRenderer::initialize (Context& context, const DeviceInterface& vk = context.getDeviceInterface(); const VkDevice vkDevice = context.getDevice(); - const deUint32 queueFamilyIndex = context.getUniversalQueueFamilyIndex(); - SimpleAllocator memAlloc (vk, vkDevice, getPhysicalDeviceMemoryProperties(context.getInstanceInterface(), context.getPhysicalDevice())); + const deUint32 queueFamilyIndices[] = { context.getUniversalQueueFamilyIndex(), context.getSparseQueueFamilyIndex() }; + const bool sparse = m_backingMode == IMAGE_BACKING_MODE_SPARSE; const VkComponentMapping componentMappingRGBA = { VK_COMPONENT_SWIZZLE_R, VK_COMPONENT_SWIZZLE_G, VK_COMPONENT_SWIZZLE_B, VK_COMPONENT_SWIZZLE_A }; + const VkImageCreateFlags imageCreateFlags = sparse ? (VK_IMAGE_CREATE_SPARSE_BINDING_BIT | VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT) : 0u; + const VkSharingMode sharingMode = (sparse && context.getUniversalQueueFamilyIndex() != context.getSparseQueueFamilyIndex()) ? VK_SHARING_MODE_CONCURRENT : VK_SHARING_MODE_EXCLUSIVE; + Allocator& memAlloc = m_context.getDefaultAllocator(); // Create color image { - - const VkImageUsageFlags imageUsageFlags = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | + const VkImageUsageFlags imageUsageFlags = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | (m_renderType == RENDER_TYPE_COPY_SAMPLES ? VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT : (VkImageUsageFlagBits)0u); - const VkImageCreateInfo colorImageParams = + const VkImageCreateInfo colorImageParams = { VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; DE_NULL, // const void* pNext; - 0u, // VkImageCreateFlags flags; + imageCreateFlags, // VkImageCreateFlags flags; VK_IMAGE_TYPE_2D, // VkImageType imageType; m_colorFormat, // VkFormat format; { (deUint32)m_renderSize.x(), (deUint32)m_renderSize.y(), 1u }, // VkExtent3D extent; @@ -1641,17 +1713,27 @@ void MultisampleRenderer::initialize (Context& context, m_multisampleStateParams.rasterizationSamples, // VkSampleCountFlagBits samples; VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling; imageUsageFlags, // VkImageUsageFlags usage; - VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; - 1u, // deUint32 queueFamilyIndexCount; - &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; + sharingMode, // VkSharingMode sharingMode; + sharingMode == VK_SHARING_MODE_CONCURRENT ? 2u : 1u, // deUint32 queueFamilyIndexCount; + queueFamilyIndices, // const deUint32* pQueueFamilyIndices; VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout initialLayout; }; - m_colorImage = createImage(vk, vkDevice, &colorImageParams); + if (sparse && !checkSparseImageFormatSupport(context.getPhysicalDevice(), context.getInstanceInterface(), colorImageParams)) + TCU_THROW(NotSupportedError, "The image format does not support sparse operations."); + + m_colorImage = createImage(vk, vkDevice, &colorImageParams); // Allocate and bind color image memory - m_colorImageAlloc = memAlloc.allocate(getImageMemoryRequirements(vk, vkDevice, *m_colorImage), MemoryRequirement::Any); - VK_CHECK(vk.bindImageMemory(vkDevice, *m_colorImage, m_colorImageAlloc->getMemory(), m_colorImageAlloc->getOffset())); + if (sparse) + { + allocateAndBindSparseImage(vk, vkDevice, context.getPhysicalDevice(), context.getInstanceInterface(), colorImageParams, *m_bindSemaphore, context.getSparseQueue(), memAlloc, m_allocations, mapVkFormat(m_colorFormat), *m_colorImage); + } + else + { + m_colorImageAlloc = memAlloc.allocate(getImageMemoryRequirements(vk, vkDevice, *m_colorImage), MemoryRequirement::Any); + VK_CHECK(vk.bindImageMemory(vkDevice, *m_colorImage, m_colorImageAlloc->getMemory(), m_colorImageAlloc->getOffset())); + } } // Create resolve image @@ -1673,7 +1755,7 @@ void MultisampleRenderer::initialize (Context& context, VK_IMAGE_USAGE_TRANSFER_DST_BIT, VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; 1u, // deUint32 queueFamilyIndexCount; - &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; + queueFamilyIndices, // const deUint32* pQueueFamilyIndices; VK_IMAGE_LAYOUT_UNDEFINED // VkImageLayout initialLayout; }; @@ -1720,7 +1802,7 @@ void MultisampleRenderer::initialize (Context& context, VK_IMAGE_USAGE_TRANSFER_DST_BIT, VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; 1u, // deUint32 queueFamilyIndexCount; - &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; + queueFamilyIndices, // const deUint32* pQueueFamilyIndices; VK_IMAGE_LAYOUT_UNDEFINED // VkImageLayout initialLayout; }; @@ -1774,7 +1856,7 @@ void MultisampleRenderer::initialize (Context& context, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, // VkImageUsageFlags usage; VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; 1u, // deUint32 queueFamilyIndexCount; - &queueFamilyIndex, // const deUint32* pQueueFamilyIndices; + queueFamilyIndices, // const deUint32* pQueueFamilyIndices; VK_IMAGE_LAYOUT_UNDEFINED // VkImageLayout initialLayout; }; @@ -2518,7 +2600,7 @@ void MultisampleRenderer::initialize (Context& context, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, // VkBufferUsageFlags usage; VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; 1u, // deUint32 queueFamilyIndexCount; - &queueFamilyIndex // const deUint32* pQueueFamilyIndices; + &queueFamilyIndices[0] // const deUint32* pQueueFamilyIndices; }; m_vertexBuffer = createBuffer(vk, vkDevice, &vertexBufferParams); @@ -2539,7 +2621,7 @@ void MultisampleRenderer::initialize (Context& context, } // Create command pool - m_cmdPool = createCommandPool(vk, vkDevice, VK_COMMAND_POOL_CREATE_TRANSIENT_BIT, queueFamilyIndex); + m_cmdPool = createCommandPool(vk, vkDevice, VK_COMMAND_POOL_CREATE_TRANSIENT_BIT, queueFamilyIndices[0]); // Create command buffer { @@ -2722,7 +2804,6 @@ de::MovePtr MultisampleRenderer::render (void) const VkDevice vkDevice = m_context.getDevice(); const VkQueue queue = m_context.getUniversalQueue(); const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex(); - SimpleAllocator allocator (vk, vkDevice, getPhysicalDeviceMemoryProperties(m_context.getInstanceInterface(), m_context.getPhysicalDevice())); const VkSubmitInfo submitInfo = { VK_STRUCTURE_TYPE_SUBMIT_INFO, // VkStructureType sType; @@ -2742,7 +2823,7 @@ de::MovePtr MultisampleRenderer::render (void) if (m_renderType == RENDER_TYPE_RESOLVE) { - return readColorAttachment(vk, vkDevice, queue, queueFamilyIndex, allocator, *m_resolveImage, m_colorFormat, m_renderSize.cast()); + return readColorAttachment(vk, vkDevice, queue, queueFamilyIndex, m_context.getDefaultAllocator(), *m_resolveImage, m_colorFormat, m_renderSize.cast()); } else { @@ -2752,13 +2833,7 @@ de::MovePtr MultisampleRenderer::render (void) de::MovePtr MultisampleRenderer::getSingleSampledImage (deUint32 sampleId) { - const DeviceInterface& vk = m_context.getDeviceInterface(); - const VkDevice vkDevice = m_context.getDevice(); - const VkQueue queue = m_context.getUniversalQueue(); - const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex(); - SimpleAllocator allocator (vk, vkDevice, getPhysicalDeviceMemoryProperties(m_context.getInstanceInterface(), m_context.getPhysicalDevice())); - - return readColorAttachment(vk, vkDevice, queue, queueFamilyIndex, allocator, *m_perSampleImages[sampleId]->m_image, m_colorFormat, m_renderSize.cast()); + return readColorAttachment(m_context.getDeviceInterface(), m_context.getDevice(), m_context.getUniversalQueue(), m_context.getUniversalQueueFamilyIndex(), m_context.getDefaultAllocator(), *m_perSampleImages[sampleId]->m_image, m_colorFormat, m_renderSize.cast()); } } // anonymous @@ -2788,13 +2863,21 @@ tcu::TestCaseGroup* createMultisampleTests (tcu::TestContext& testCtx) de::MovePtr samplesTests (new tcu::TestCaseGroup(testCtx, caseName.str().c_str(), "")); - samplesTests->addChild(new RasterizationSamplesTest(testCtx, "primitive_triangle", "", samples[samplesNdx], GEOMETRY_TYPE_OPAQUE_TRIANGLE)); - samplesTests->addChild(new RasterizationSamplesTest(testCtx, "primitive_line", "", samples[samplesNdx], GEOMETRY_TYPE_OPAQUE_LINE)); - samplesTests->addChild(new RasterizationSamplesTest(testCtx, "primitive_point", "", samples[samplesNdx], GEOMETRY_TYPE_OPAQUE_POINT)); + samplesTests->addChild(new RasterizationSamplesTest(testCtx, "primitive_triangle", "", samples[samplesNdx], GEOMETRY_TYPE_OPAQUE_TRIANGLE, IMAGE_BACKING_MODE_REGULAR)); + samplesTests->addChild(new RasterizationSamplesTest(testCtx, "primitive_line", "", samples[samplesNdx], GEOMETRY_TYPE_OPAQUE_LINE, IMAGE_BACKING_MODE_REGULAR)); + samplesTests->addChild(new RasterizationSamplesTest(testCtx, "primitive_point", "", samples[samplesNdx], GEOMETRY_TYPE_OPAQUE_POINT, IMAGE_BACKING_MODE_REGULAR)); + + samplesTests->addChild(new RasterizationSamplesTest(testCtx, "depth", "", samples[samplesNdx], GEOMETRY_TYPE_INVISIBLE_TRIANGLE, IMAGE_BACKING_MODE_REGULAR, TEST_MODE_DEPTH_BIT)); + samplesTests->addChild(new RasterizationSamplesTest(testCtx, "stencil", "", samples[samplesNdx], GEOMETRY_TYPE_INVISIBLE_TRIANGLE, IMAGE_BACKING_MODE_REGULAR, TEST_MODE_STENCIL_BIT)); + samplesTests->addChild(new RasterizationSamplesTest(testCtx, "depth_stencil", "", samples[samplesNdx], GEOMETRY_TYPE_INVISIBLE_TRIANGLE, IMAGE_BACKING_MODE_REGULAR, TEST_MODE_DEPTH_BIT | TEST_MODE_STENCIL_BIT)); - samplesTests->addChild(new RasterizationSamplesTest(testCtx, "depth", "", samples[samplesNdx], GEOMETRY_TYPE_INVISIBLE_TRIANGLE, TEST_MODE_DEPTH_BIT)); - samplesTests->addChild(new RasterizationSamplesTest(testCtx, "stencil", "", samples[samplesNdx], GEOMETRY_TYPE_INVISIBLE_TRIANGLE, TEST_MODE_STENCIL_BIT)); - samplesTests->addChild(new RasterizationSamplesTest(testCtx, "depth_stencil", "", samples[samplesNdx], GEOMETRY_TYPE_INVISIBLE_TRIANGLE, TEST_MODE_DEPTH_BIT | TEST_MODE_STENCIL_BIT)); + samplesTests->addChild(new RasterizationSamplesTest(testCtx, "primitive_triangle_sparse", "", samples[samplesNdx], GEOMETRY_TYPE_OPAQUE_TRIANGLE, IMAGE_BACKING_MODE_SPARSE)); + samplesTests->addChild(new RasterizationSamplesTest(testCtx, "primitive_line_sparse", "", samples[samplesNdx], GEOMETRY_TYPE_OPAQUE_LINE, IMAGE_BACKING_MODE_SPARSE)); + samplesTests->addChild(new RasterizationSamplesTest(testCtx, "primitive_point_sparse", "", samples[samplesNdx], GEOMETRY_TYPE_OPAQUE_POINT, IMAGE_BACKING_MODE_SPARSE)); + + samplesTests->addChild(new RasterizationSamplesTest(testCtx, "depth_sparse", "", samples[samplesNdx], GEOMETRY_TYPE_INVISIBLE_TRIANGLE, IMAGE_BACKING_MODE_SPARSE, TEST_MODE_DEPTH_BIT)); + samplesTests->addChild(new RasterizationSamplesTest(testCtx, "stencil_sparse", "", samples[samplesNdx], GEOMETRY_TYPE_INVISIBLE_TRIANGLE, IMAGE_BACKING_MODE_SPARSE, TEST_MODE_STENCIL_BIT)); + samplesTests->addChild(new RasterizationSamplesTest(testCtx, "depth_stencil_sparse", "", samples[samplesNdx], GEOMETRY_TYPE_INVISIBLE_TRIANGLE, IMAGE_BACKING_MODE_SPARSE, TEST_MODE_DEPTH_BIT | TEST_MODE_STENCIL_BIT)); rasterizationSamplesTests->addChild(samplesTests.release()); } @@ -2804,14 +2887,23 @@ tcu::TestCaseGroup* createMultisampleTests (tcu::TestContext& testCtx) // Raster samples consistency check { - de::MovePtr rasterSamplesConsistencyTests(new tcu::TestCaseGroup(testCtx, "raster_samples_consistency", "")); + de::MovePtr rasterSamplesConsistencyTests (new tcu::TestCaseGroup(testCtx, "raster_samples_consistency", "")); + MultisampleTestParams paramsRegular = {GEOMETRY_TYPE_OPAQUE_TRIANGLE, IMAGE_BACKING_MODE_REGULAR}; + MultisampleTestParams paramsSparse = {GEOMETRY_TYPE_OPAQUE_TRIANGLE, IMAGE_BACKING_MODE_SPARSE}; addFunctionCaseWithPrograms(rasterSamplesConsistencyTests.get(), "unique_colors_check", "", initMultisamplePrograms, testRasterSamplesConsistency, - GEOMETRY_TYPE_OPAQUE_TRIANGLE); + paramsRegular); + + addFunctionCaseWithPrograms(rasterSamplesConsistencyTests.get(), + "unique_colors_check_sparse", + "", + initMultisamplePrograms, + testRasterSamplesConsistency, + paramsSparse); multisampleTests->addChild(rasterSamplesConsistencyTests.release()); } @@ -2847,9 +2939,13 @@ tcu::TestCaseGroup* createMultisampleTests (tcu::TestContext& testCtx) de::MovePtr samplesTests (new tcu::TestCaseGroup(testCtx, caseName.str().c_str(), "")); - samplesTests->addChild(new MinSampleShadingTest(testCtx, "primitive_triangle", "", samples[samplesNdx], testConfig.minSampleShading, GEOMETRY_TYPE_OPAQUE_TRIANGLE)); - samplesTests->addChild(new MinSampleShadingTest(testCtx, "primitive_line", "", samples[samplesNdx], testConfig.minSampleShading, GEOMETRY_TYPE_OPAQUE_LINE)); - samplesTests->addChild(new MinSampleShadingTest(testCtx, "primitive_point", "", samples[samplesNdx], testConfig.minSampleShading, GEOMETRY_TYPE_OPAQUE_POINT)); + samplesTests->addChild(new MinSampleShadingTest(testCtx, "primitive_triangle", "", samples[samplesNdx], testConfig.minSampleShading, GEOMETRY_TYPE_OPAQUE_TRIANGLE, IMAGE_BACKING_MODE_REGULAR)); + samplesTests->addChild(new MinSampleShadingTest(testCtx, "primitive_line", "", samples[samplesNdx], testConfig.minSampleShading, GEOMETRY_TYPE_OPAQUE_LINE, IMAGE_BACKING_MODE_REGULAR)); + samplesTests->addChild(new MinSampleShadingTest(testCtx, "primitive_point", "", samples[samplesNdx], testConfig.minSampleShading, GEOMETRY_TYPE_OPAQUE_POINT, IMAGE_BACKING_MODE_REGULAR)); + + samplesTests->addChild(new MinSampleShadingTest(testCtx, "primitive_triangle_sparse", "", samples[samplesNdx], testConfig.minSampleShading, GEOMETRY_TYPE_OPAQUE_TRIANGLE, IMAGE_BACKING_MODE_SPARSE)); + samplesTests->addChild(new MinSampleShadingTest(testCtx, "primitive_line_sparse", "", samples[samplesNdx], testConfig.minSampleShading, GEOMETRY_TYPE_OPAQUE_LINE, IMAGE_BACKING_MODE_SPARSE)); + samplesTests->addChild(new MinSampleShadingTest(testCtx, "primitive_point_sparse", "", samples[samplesNdx], testConfig.minSampleShading, GEOMETRY_TYPE_OPAQUE_POINT, IMAGE_BACKING_MODE_SPARSE)); minShadingValueTests->addChild(samplesTests.release()); } @@ -2896,9 +2992,13 @@ tcu::TestCaseGroup* createMultisampleTests (tcu::TestContext& testCtx) for (deUint32 maskNdx = 0; maskNdx < sampleMaskCount; maskNdx++) mask.push_back(testConfig.sampleMask); - samplesTests->addChild(new SampleMaskTest(testCtx, "primitive_triangle", "", samples[samplesNdx], mask, GEOMETRY_TYPE_OPAQUE_TRIANGLE)); - samplesTests->addChild(new SampleMaskTest(testCtx, "primitive_line", "", samples[samplesNdx], mask, GEOMETRY_TYPE_OPAQUE_LINE)); - samplesTests->addChild(new SampleMaskTest(testCtx, "primitive_point", "", samples[samplesNdx], mask, GEOMETRY_TYPE_OPAQUE_POINT)); + samplesTests->addChild(new SampleMaskTest(testCtx, "primitive_triangle", "", samples[samplesNdx], mask, GEOMETRY_TYPE_OPAQUE_TRIANGLE, IMAGE_BACKING_MODE_REGULAR)); + samplesTests->addChild(new SampleMaskTest(testCtx, "primitive_line", "", samples[samplesNdx], mask, GEOMETRY_TYPE_OPAQUE_LINE, IMAGE_BACKING_MODE_REGULAR)); + samplesTests->addChild(new SampleMaskTest(testCtx, "primitive_point", "", samples[samplesNdx], mask, GEOMETRY_TYPE_OPAQUE_POINT, IMAGE_BACKING_MODE_REGULAR)); + + samplesTests->addChild(new SampleMaskTest(testCtx, "primitive_triangle_sparse", "", samples[samplesNdx], mask, GEOMETRY_TYPE_OPAQUE_TRIANGLE, IMAGE_BACKING_MODE_SPARSE)); + samplesTests->addChild(new SampleMaskTest(testCtx, "primitive_line_sparse", "", samples[samplesNdx], mask, GEOMETRY_TYPE_OPAQUE_LINE, IMAGE_BACKING_MODE_SPARSE)); + samplesTests->addChild(new SampleMaskTest(testCtx, "primitive_point_sparse", "", samples[samplesNdx], mask, GEOMETRY_TYPE_OPAQUE_POINT, IMAGE_BACKING_MODE_SPARSE)); sampleMaskValueTests->addChild(samplesTests.release()); } @@ -2919,7 +3019,10 @@ tcu::TestCaseGroup* createMultisampleTests (tcu::TestContext& testCtx) std::ostringstream caseName; caseName << "samples_" << samples[samplesNdx]; - alphaToOneTests->addChild(new AlphaToOneTest(testCtx, caseName.str(), "", samples[samplesNdx])); + alphaToOneTests->addChild(new AlphaToOneTest(testCtx, caseName.str(), "", samples[samplesNdx], IMAGE_BACKING_MODE_REGULAR)); + + caseName << "_sparse"; + alphaToOneTests->addChild(new AlphaToOneTest(testCtx, caseName.str(), "", samples[samplesNdx], IMAGE_BACKING_MODE_SPARSE)); } multisampleTests->addChild(alphaToOneTests.release()); @@ -2936,9 +3039,13 @@ tcu::TestCaseGroup* createMultisampleTests (tcu::TestContext& testCtx) de::MovePtr samplesTests (new tcu::TestCaseGroup(testCtx, caseName.str().c_str(), "")); - samplesTests->addChild(new AlphaToCoverageTest(testCtx, "alpha_opaque", "", samples[samplesNdx], GEOMETRY_TYPE_OPAQUE_QUAD)); - samplesTests->addChild(new AlphaToCoverageTest(testCtx, "alpha_translucent", "", samples[samplesNdx], GEOMETRY_TYPE_TRANSLUCENT_QUAD)); - samplesTests->addChild(new AlphaToCoverageTest(testCtx, "alpha_invisible", "", samples[samplesNdx], GEOMETRY_TYPE_INVISIBLE_QUAD)); + samplesTests->addChild(new AlphaToCoverageTest(testCtx, "alpha_opaque", "", samples[samplesNdx], GEOMETRY_TYPE_OPAQUE_QUAD, IMAGE_BACKING_MODE_REGULAR)); + samplesTests->addChild(new AlphaToCoverageTest(testCtx, "alpha_translucent", "", samples[samplesNdx], GEOMETRY_TYPE_TRANSLUCENT_QUAD, IMAGE_BACKING_MODE_REGULAR)); + samplesTests->addChild(new AlphaToCoverageTest(testCtx, "alpha_invisible", "", samples[samplesNdx], GEOMETRY_TYPE_INVISIBLE_QUAD, IMAGE_BACKING_MODE_REGULAR)); + + samplesTests->addChild(new AlphaToCoverageTest(testCtx, "alpha_opaque_sparse", "", samples[samplesNdx], GEOMETRY_TYPE_OPAQUE_QUAD, IMAGE_BACKING_MODE_SPARSE)); + samplesTests->addChild(new AlphaToCoverageTest(testCtx, "alpha_translucent_sparse", "", samples[samplesNdx], GEOMETRY_TYPE_TRANSLUCENT_QUAD, IMAGE_BACKING_MODE_SPARSE)); + samplesTests->addChild(new AlphaToCoverageTest(testCtx, "alpha_invisible_sparse", "", samples[samplesNdx], GEOMETRY_TYPE_INVISIBLE_QUAD, IMAGE_BACKING_MODE_SPARSE)); alphaToCoverageTests->addChild(samplesTests.release()); } diff --git a/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleTests.hpp b/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleTests.hpp index f3ab950..cda17e8 100644 --- a/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleTests.hpp +++ b/external/vulkancts/modules/vulkan/pipeline/vktPipelineMultisampleTests.hpp @@ -6,6 +6,7 @@ * * Copyright (c) 2015 The Khronos Group Inc. * Copyright (c) 2015 Imagination Technologies Ltd. + * Copyright (c) 2017 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/external/vulkancts/mustpass/1.0.4/vk-default-no-waivers.txt b/external/vulkancts/mustpass/1.0.4/vk-default-no-waivers.txt index d00224e..cbcdc5c 100644 --- a/external/vulkancts/mustpass/1.0.4/vk-default-no-waivers.txt +++ b/external/vulkancts/mustpass/1.0.4/vk-default-no-waivers.txt @@ -153280,223 +153280,446 @@ dEQP-VK.pipeline.multisample.raster_samples.samples_2.primitive_point dEQP-VK.pipeline.multisample.raster_samples.samples_2.depth dEQP-VK.pipeline.multisample.raster_samples.samples_2.stencil dEQP-VK.pipeline.multisample.raster_samples.samples_2.depth_stencil +dEQP-VK.pipeline.multisample.raster_samples.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_2.primitive_point_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_2.depth_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_2.stencil_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_2.depth_stencil_sparse dEQP-VK.pipeline.multisample.raster_samples.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.raster_samples.samples_4.primitive_line dEQP-VK.pipeline.multisample.raster_samples.samples_4.primitive_point dEQP-VK.pipeline.multisample.raster_samples.samples_4.depth dEQP-VK.pipeline.multisample.raster_samples.samples_4.stencil dEQP-VK.pipeline.multisample.raster_samples.samples_4.depth_stencil +dEQP-VK.pipeline.multisample.raster_samples.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_4.primitive_point_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_4.depth_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_4.stencil_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_4.depth_stencil_sparse dEQP-VK.pipeline.multisample.raster_samples.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.raster_samples.samples_8.primitive_line dEQP-VK.pipeline.multisample.raster_samples.samples_8.primitive_point dEQP-VK.pipeline.multisample.raster_samples.samples_8.depth dEQP-VK.pipeline.multisample.raster_samples.samples_8.stencil dEQP-VK.pipeline.multisample.raster_samples.samples_8.depth_stencil +dEQP-VK.pipeline.multisample.raster_samples.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_8.primitive_point_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_8.depth_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_8.stencil_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_8.depth_stencil_sparse dEQP-VK.pipeline.multisample.raster_samples.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.raster_samples.samples_16.primitive_line dEQP-VK.pipeline.multisample.raster_samples.samples_16.primitive_point dEQP-VK.pipeline.multisample.raster_samples.samples_16.depth dEQP-VK.pipeline.multisample.raster_samples.samples_16.stencil dEQP-VK.pipeline.multisample.raster_samples.samples_16.depth_stencil +dEQP-VK.pipeline.multisample.raster_samples.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_16.primitive_point_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_16.depth_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_16.stencil_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_16.depth_stencil_sparse dEQP-VK.pipeline.multisample.raster_samples.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.raster_samples.samples_32.primitive_line dEQP-VK.pipeline.multisample.raster_samples.samples_32.primitive_point dEQP-VK.pipeline.multisample.raster_samples.samples_32.depth dEQP-VK.pipeline.multisample.raster_samples.samples_32.stencil dEQP-VK.pipeline.multisample.raster_samples.samples_32.depth_stencil +dEQP-VK.pipeline.multisample.raster_samples.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_32.primitive_point_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_32.depth_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_32.stencil_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_32.depth_stencil_sparse dEQP-VK.pipeline.multisample.raster_samples.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.raster_samples.samples_64.primitive_line dEQP-VK.pipeline.multisample.raster_samples.samples_64.primitive_point dEQP-VK.pipeline.multisample.raster_samples.samples_64.depth dEQP-VK.pipeline.multisample.raster_samples.samples_64.stencil dEQP-VK.pipeline.multisample.raster_samples.samples_64.depth_stencil +dEQP-VK.pipeline.multisample.raster_samples.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_64.primitive_point_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_64.depth_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_64.stencil_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_64.depth_stencil_sparse dEQP-VK.pipeline.multisample.raster_samples_consistency.unique_colors_check +dEQP-VK.pipeline.multisample.raster_samples_consistency.unique_colors_check_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_2.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_2.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_4.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_4.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_8.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_8.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_16.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_16.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_32.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_32.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_64.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_64.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_2.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_2.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_4.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_4.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_8.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_8.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_16.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_16.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_32.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_32.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_64.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_64.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_2.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_2.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_4.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_4.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_8.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_8.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_16.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_16.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_32.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_32.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_64.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_64.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_2.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_2.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_4.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_4.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_8.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_8.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_16.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_16.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_32.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_32.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_64.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_64.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_2.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_2.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_4.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_4.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_8.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_8.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_16.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_16.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_32.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_32.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_64.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_64.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_2.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_2.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_4.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_4.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_8.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_8.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_16.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_16.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_32.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_32.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_64.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_64.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_2.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_2.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_4.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_4.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_8.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_8.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_16.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_16.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_32.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_32.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_64.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_64.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_2.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_2.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_4.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_4.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_8.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_8.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_16.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_16.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_32.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_32.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_64.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_64.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_2.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_2.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_4.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_4.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_8.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_8.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_16.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_16.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_32.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_32.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_64.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_64.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.alpha_to_one.samples_2 +dEQP-VK.pipeline.multisample.alpha_to_one.samples_2_sparse dEQP-VK.pipeline.multisample.alpha_to_one.samples_4 +dEQP-VK.pipeline.multisample.alpha_to_one.samples_4_sparse dEQP-VK.pipeline.multisample.alpha_to_one.samples_8 +dEQP-VK.pipeline.multisample.alpha_to_one.samples_8_sparse dEQP-VK.pipeline.multisample.alpha_to_one.samples_16 +dEQP-VK.pipeline.multisample.alpha_to_one.samples_16_sparse dEQP-VK.pipeline.multisample.alpha_to_one.samples_32 +dEQP-VK.pipeline.multisample.alpha_to_one.samples_32_sparse dEQP-VK.pipeline.multisample.alpha_to_one.samples_64 +dEQP-VK.pipeline.multisample.alpha_to_one.samples_64_sparse dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_2.alpha_opaque dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_2.alpha_translucent dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_2.alpha_invisible +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_2.alpha_opaque_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_2.alpha_translucent_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_2.alpha_invisible_sparse dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_4.alpha_opaque dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_4.alpha_translucent dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_4.alpha_invisible +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_4.alpha_opaque_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_4.alpha_translucent_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_4.alpha_invisible_sparse dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_8.alpha_opaque dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_8.alpha_translucent dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_8.alpha_invisible +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_8.alpha_opaque_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_8.alpha_translucent_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_8.alpha_invisible_sparse dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_16.alpha_opaque dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_16.alpha_translucent dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_16.alpha_invisible +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_16.alpha_opaque_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_16.alpha_translucent_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_16.alpha_invisible_sparse dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_32.alpha_opaque dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_32.alpha_translucent dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_32.alpha_invisible +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_32.alpha_opaque_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_32.alpha_translucent_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_32.alpha_invisible_sparse dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_64.alpha_opaque dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_64.alpha_translucent dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_64.alpha_invisible +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_64.alpha_opaque_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_64.alpha_translucent_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_64.alpha_invisible_sparse dEQP-VK.pipeline.multisample.sampled_image.64x64_1.r8g8b8a8_unorm.samples_2 dEQP-VK.pipeline.multisample.sampled_image.64x64_1.r8g8b8a8_unorm.samples_4 dEQP-VK.pipeline.multisample.sampled_image.64x64_1.r8g8b8a8_unorm.samples_8 diff --git a/external/vulkancts/mustpass/1.0.4/vk-default.txt b/external/vulkancts/mustpass/1.0.4/vk-default.txt index aa1ecdf..adfcd89 100644 --- a/external/vulkancts/mustpass/1.0.4/vk-default.txt +++ b/external/vulkancts/mustpass/1.0.4/vk-default.txt @@ -153280,223 +153280,446 @@ dEQP-VK.pipeline.multisample.raster_samples.samples_2.primitive_point dEQP-VK.pipeline.multisample.raster_samples.samples_2.depth dEQP-VK.pipeline.multisample.raster_samples.samples_2.stencil dEQP-VK.pipeline.multisample.raster_samples.samples_2.depth_stencil +dEQP-VK.pipeline.multisample.raster_samples.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_2.primitive_point_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_2.depth_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_2.stencil_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_2.depth_stencil_sparse dEQP-VK.pipeline.multisample.raster_samples.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.raster_samples.samples_4.primitive_line dEQP-VK.pipeline.multisample.raster_samples.samples_4.primitive_point dEQP-VK.pipeline.multisample.raster_samples.samples_4.depth dEQP-VK.pipeline.multisample.raster_samples.samples_4.stencil dEQP-VK.pipeline.multisample.raster_samples.samples_4.depth_stencil +dEQP-VK.pipeline.multisample.raster_samples.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_4.primitive_point_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_4.depth_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_4.stencil_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_4.depth_stencil_sparse dEQP-VK.pipeline.multisample.raster_samples.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.raster_samples.samples_8.primitive_line dEQP-VK.pipeline.multisample.raster_samples.samples_8.primitive_point dEQP-VK.pipeline.multisample.raster_samples.samples_8.depth dEQP-VK.pipeline.multisample.raster_samples.samples_8.stencil dEQP-VK.pipeline.multisample.raster_samples.samples_8.depth_stencil +dEQP-VK.pipeline.multisample.raster_samples.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_8.primitive_point_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_8.depth_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_8.stencil_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_8.depth_stencil_sparse dEQP-VK.pipeline.multisample.raster_samples.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.raster_samples.samples_16.primitive_line dEQP-VK.pipeline.multisample.raster_samples.samples_16.primitive_point dEQP-VK.pipeline.multisample.raster_samples.samples_16.depth dEQP-VK.pipeline.multisample.raster_samples.samples_16.stencil dEQP-VK.pipeline.multisample.raster_samples.samples_16.depth_stencil +dEQP-VK.pipeline.multisample.raster_samples.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_16.primitive_point_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_16.depth_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_16.stencil_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_16.depth_stencil_sparse dEQP-VK.pipeline.multisample.raster_samples.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.raster_samples.samples_32.primitive_line dEQP-VK.pipeline.multisample.raster_samples.samples_32.primitive_point dEQP-VK.pipeline.multisample.raster_samples.samples_32.depth dEQP-VK.pipeline.multisample.raster_samples.samples_32.stencil dEQP-VK.pipeline.multisample.raster_samples.samples_32.depth_stencil +dEQP-VK.pipeline.multisample.raster_samples.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_32.primitive_point_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_32.depth_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_32.stencil_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_32.depth_stencil_sparse dEQP-VK.pipeline.multisample.raster_samples.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.raster_samples.samples_64.primitive_line dEQP-VK.pipeline.multisample.raster_samples.samples_64.primitive_point dEQP-VK.pipeline.multisample.raster_samples.samples_64.depth dEQP-VK.pipeline.multisample.raster_samples.samples_64.stencil dEQP-VK.pipeline.multisample.raster_samples.samples_64.depth_stencil +dEQP-VK.pipeline.multisample.raster_samples.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_64.primitive_point_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_64.depth_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_64.stencil_sparse +dEQP-VK.pipeline.multisample.raster_samples.samples_64.depth_stencil_sparse dEQP-VK.pipeline.multisample.raster_samples_consistency.unique_colors_check +dEQP-VK.pipeline.multisample.raster_samples_consistency.unique_colors_check_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_2.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_2.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_4.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_4.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_8.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_8.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_16.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_16.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_32.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_32.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_64.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_64.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_0.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_2.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_2.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_4.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_4.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_8.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_8.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_16.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_16.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_32.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_32.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_64.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_64.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_25.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_2.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_2.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_4.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_4.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_8.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_8.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_16.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_16.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_32.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_32.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_64.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_64.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_5.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_2.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_2.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_4.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_4.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_8.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_8.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_16.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_16.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_32.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_32.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_64.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_64.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_0_75.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_2.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_2.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_4.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_4.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_8.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_8.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_16.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_16.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_32.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_32.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_64.primitive_line dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_64.primitive_point +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.min_sample_shading.min_1_0.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_2.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_2.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_4.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_4.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_8.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_8.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_16.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_16.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_32.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_32.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_64.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_64.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_on.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_2.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_2.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_4.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_4.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_8.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_8.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_16.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_16.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_32.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_32.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_64.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_64.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_all_off.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_2.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_2.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_4.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_4.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_8.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_8.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_16.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_16.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_32.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_32.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_64.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_64.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_one.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_2.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_2.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_2.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_2.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_2.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_2.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_4.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_4.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_4.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_4.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_4.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_4.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_8.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_8.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_8.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_8.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_8.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_8.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_16.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_16.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_16.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_16.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_16.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_16.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_32.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_32.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_32.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_32.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_32.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_32.primitive_point_sparse dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_64.primitive_triangle dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_64.primitive_line dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_64.primitive_point +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_64.primitive_triangle_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_64.primitive_line_sparse +dEQP-VK.pipeline.multisample.sample_mask.mask_random.samples_64.primitive_point_sparse dEQP-VK.pipeline.multisample.alpha_to_one.samples_2 +dEQP-VK.pipeline.multisample.alpha_to_one.samples_2_sparse dEQP-VK.pipeline.multisample.alpha_to_one.samples_4 +dEQP-VK.pipeline.multisample.alpha_to_one.samples_4_sparse dEQP-VK.pipeline.multisample.alpha_to_one.samples_8 +dEQP-VK.pipeline.multisample.alpha_to_one.samples_8_sparse dEQP-VK.pipeline.multisample.alpha_to_one.samples_16 +dEQP-VK.pipeline.multisample.alpha_to_one.samples_16_sparse dEQP-VK.pipeline.multisample.alpha_to_one.samples_32 +dEQP-VK.pipeline.multisample.alpha_to_one.samples_32_sparse dEQP-VK.pipeline.multisample.alpha_to_one.samples_64 +dEQP-VK.pipeline.multisample.alpha_to_one.samples_64_sparse dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_2.alpha_opaque dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_2.alpha_translucent dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_2.alpha_invisible +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_2.alpha_opaque_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_2.alpha_translucent_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_2.alpha_invisible_sparse dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_4.alpha_opaque dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_4.alpha_translucent dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_4.alpha_invisible +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_4.alpha_opaque_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_4.alpha_translucent_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_4.alpha_invisible_sparse dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_8.alpha_opaque dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_8.alpha_translucent dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_8.alpha_invisible +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_8.alpha_opaque_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_8.alpha_translucent_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_8.alpha_invisible_sparse dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_16.alpha_opaque dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_16.alpha_translucent dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_16.alpha_invisible +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_16.alpha_opaque_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_16.alpha_translucent_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_16.alpha_invisible_sparse dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_32.alpha_opaque dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_32.alpha_translucent dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_32.alpha_invisible +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_32.alpha_opaque_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_32.alpha_translucent_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_32.alpha_invisible_sparse dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_64.alpha_opaque dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_64.alpha_translucent dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_64.alpha_invisible +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_64.alpha_opaque_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_64.alpha_translucent_sparse +dEQP-VK.pipeline.multisample.alpha_to_coverage.samples_64.alpha_invisible_sparse dEQP-VK.pipeline.multisample.sampled_image.64x64_1.r8g8b8a8_unorm.samples_2 dEQP-VK.pipeline.multisample.sampled_image.64x64_1.r8g8b8a8_unorm.samples_4 dEQP-VK.pipeline.multisample.sampled_image.64x64_1.r8g8b8a8_unorm.samples_8 -- 2.7.4