From 49afd282306183025d1fbcb96ed4c7b911e85485 Mon Sep 17 00:00:00 2001 From: Ricardo Garcia Date: Fri, 15 Oct 2021 15:48:16 +0200 Subject: [PATCH] Split multiple interpolation tests using the sample decoration This commit separates the multiple interpolation tests in two groups, one including the sample decoration in the set and another one excluding it. The goal is to avoid requiring the sampleRateShading feature in all tests, which is mandatory when using the sample decoration. In addition, this commit makes sure the sampleRateShading feature is required for those cases. New tests: dEQP-VK.draw.multiple_interpolation.*.no_sample_decoration.* Affected tests: dEQP-VK.draw.multiple_interpolation.* Components: Vulkan VK-GL-CTS issue: 3129 Change-Id: I8c190c70db9e7fef7505dc31bbf8b6626161f60e --- android/cts/master/src/vk-master-2020-03-01.txt | 14 +- android/cts/master/vk-master-2020-03-01/draw.txt | 14 +- android/cts/master/vk-master-2021-03-01/draw.txt | 28 +++- android/cts/master/vk-master/draw.txt | 42 +++-- .../draw/vktDrawMultipleInterpolationTests.cpp | 185 +++++++++++++-------- .../vulkancts/mustpass/master/vk-default/draw.txt | 42 +++-- 6 files changed, 205 insertions(+), 120 deletions(-) diff --git a/android/cts/master/src/vk-master-2020-03-01.txt b/android/cts/master/src/vk-master-2020-03-01.txt index 51f3fcf..4f98dc8 100644 --- a/android/cts/master/src/vk-master-2020-03-01.txt +++ b/android/cts/master/src/vk-master-2020-03-01.txt @@ -110518,13 +110518,13 @@ dEQP-VK.draw.scissor.dynamic_scissor_max_int32 dEQP-VK.draw.scissor.16_dynamic_scissors dEQP-VK.draw.scissor.dynamic_scissor_two_clears dEQP-VK.draw.scissor.dynamic_scissor_mix -dEQP-VK.draw.multiple_interpolation.separate.1_sample -dEQP-VK.draw.multiple_interpolation.separate.2_samples -dEQP-VK.draw.multiple_interpolation.separate.4_samples -dEQP-VK.draw.multiple_interpolation.separate.8_samples -dEQP-VK.draw.multiple_interpolation.separate.16_samples -dEQP-VK.draw.multiple_interpolation.separate.32_samples -dEQP-VK.draw.multiple_interpolation.separate.64_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.1_sample +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.2_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.4_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.8_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.16_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.32_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.64_samples dEQP-VK.draw.discard_rectangles.inclusive_rect_1 dEQP-VK.draw.discard_rectangles.inclusive_rect_2 dEQP-VK.draw.discard_rectangles.inclusive_rect_3 diff --git a/android/cts/master/vk-master-2020-03-01/draw.txt b/android/cts/master/vk-master-2020-03-01/draw.txt index 39514db..1026f53 100644 --- a/android/cts/master/vk-master-2020-03-01/draw.txt +++ b/android/cts/master/vk-master-2020-03-01/draw.txt @@ -139,13 +139,13 @@ dEQP-VK.draw.scissor.dynamic_scissor_max_int32 dEQP-VK.draw.scissor.16_dynamic_scissors dEQP-VK.draw.scissor.dynamic_scissor_two_clears dEQP-VK.draw.scissor.dynamic_scissor_mix -dEQP-VK.draw.multiple_interpolation.separate.1_sample -dEQP-VK.draw.multiple_interpolation.separate.2_samples -dEQP-VK.draw.multiple_interpolation.separate.4_samples -dEQP-VK.draw.multiple_interpolation.separate.8_samples -dEQP-VK.draw.multiple_interpolation.separate.16_samples -dEQP-VK.draw.multiple_interpolation.separate.32_samples -dEQP-VK.draw.multiple_interpolation.separate.64_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.1_sample +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.2_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.4_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.8_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.16_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.32_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.64_samples dEQP-VK.draw.discard_rectangles.inclusive_rect_1 dEQP-VK.draw.discard_rectangles.inclusive_rect_2 dEQP-VK.draw.discard_rectangles.inclusive_rect_3 diff --git a/android/cts/master/vk-master-2021-03-01/draw.txt b/android/cts/master/vk-master-2021-03-01/draw.txt index a14190e..e5adcb0 100644 --- a/android/cts/master/vk-master-2021-03-01/draw.txt +++ b/android/cts/master/vk-master-2021-03-01/draw.txt @@ -43,13 +43,27 @@ dEQP-VK.draw.scissor.static_scissor_framebuffer_border_out dEQP-VK.draw.scissor.dynamic_scissor_framebuffer_border_out dEQP-VK.draw.scissor.static_scissor_oversized dEQP-VK.draw.scissor.dynamic_scissor_oversized -dEQP-VK.draw.multiple_interpolation.structured.1_sample -dEQP-VK.draw.multiple_interpolation.structured.2_samples -dEQP-VK.draw.multiple_interpolation.structured.4_samples -dEQP-VK.draw.multiple_interpolation.structured.8_samples -dEQP-VK.draw.multiple_interpolation.structured.16_samples -dEQP-VK.draw.multiple_interpolation.structured.32_samples -dEQP-VK.draw.multiple_interpolation.structured.64_samples +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.1_sample +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.2_samples +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.4_samples +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.8_samples +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.16_samples +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.32_samples +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.64_samples +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.1_sample +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.2_samples +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.4_samples +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.8_samples +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.16_samples +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.32_samples +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.64_samples +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.1_sample +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.2_samples +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.4_samples +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.8_samples +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.16_samples +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.32_samples +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.64_samples dEQP-VK.draw.explicit_vertex_parameter.smooth_samples_1 dEQP-VK.draw.explicit_vertex_parameter.noperspective_samples_1 dEQP-VK.draw.explicit_vertex_parameter.smooth_samples_2 diff --git a/android/cts/master/vk-master/draw.txt b/android/cts/master/vk-master/draw.txt index b222693..d18e5db 100644 --- a/android/cts/master/vk-master/draw.txt +++ b/android/cts/master/vk-master/draw.txt @@ -697,20 +697,34 @@ dEQP-VK.draw.scissor.static_scissor_framebuffer_border_out dEQP-VK.draw.scissor.dynamic_scissor_framebuffer_border_out dEQP-VK.draw.scissor.static_scissor_oversized dEQP-VK.draw.scissor.dynamic_scissor_oversized -dEQP-VK.draw.multiple_interpolation.separate.1_sample -dEQP-VK.draw.multiple_interpolation.separate.2_samples -dEQP-VK.draw.multiple_interpolation.separate.4_samples -dEQP-VK.draw.multiple_interpolation.separate.8_samples -dEQP-VK.draw.multiple_interpolation.separate.16_samples -dEQP-VK.draw.multiple_interpolation.separate.32_samples -dEQP-VK.draw.multiple_interpolation.separate.64_samples -dEQP-VK.draw.multiple_interpolation.structured.1_sample -dEQP-VK.draw.multiple_interpolation.structured.2_samples -dEQP-VK.draw.multiple_interpolation.structured.4_samples -dEQP-VK.draw.multiple_interpolation.structured.8_samples -dEQP-VK.draw.multiple_interpolation.structured.16_samples -dEQP-VK.draw.multiple_interpolation.structured.32_samples -dEQP-VK.draw.multiple_interpolation.structured.64_samples +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.1_sample +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.2_samples +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.4_samples +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.8_samples +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.16_samples +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.32_samples +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.64_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.1_sample +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.2_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.4_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.8_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.16_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.32_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.64_samples +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.1_sample +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.2_samples +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.4_samples +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.8_samples +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.16_samples +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.32_samples +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.64_samples +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.1_sample +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.2_samples +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.4_samples +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.8_samples +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.16_samples +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.32_samples +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.64_samples dEQP-VK.draw.discard_rectangles.inclusive_rect_1 dEQP-VK.draw.discard_rectangles.inclusive_rect_2 dEQP-VK.draw.discard_rectangles.inclusive_rect_3 diff --git a/external/vulkancts/modules/vulkan/draw/vktDrawMultipleInterpolationTests.cpp b/external/vulkancts/modules/vulkan/draw/vktDrawMultipleInterpolationTests.cpp index c9125c1..a97e4c8 100644 --- a/external/vulkancts/modules/vulkan/draw/vktDrawMultipleInterpolationTests.cpp +++ b/external/vulkancts/modules/vulkan/draw/vktDrawMultipleInterpolationTests.cpp @@ -56,6 +56,7 @@ struct DrawParams // From the SPIR-V point of view, structured test variants will allow us to test interpolation decorations on struct members // instead of plain ids. bool useStructure; + bool includeSampleDecoration; }; template @@ -151,64 +152,68 @@ void DrawTestCase::initPrograms (vk::SourceCollections& programCollection) const std::pair{"indent" , (m_params.useStructure ? " " : "")}, }; - const tcu::StringTemplate vertShaderMulti - { - "#version 430\n" - "${extensions}" - "\n" - "layout(location = 0) in vec4 in_position;\n" - "layout(location = 1) in vec4 in_color;\n" - "\n" - "${blockOpeningOut}" - "${indent}layout(location = 0) ${outQual}vec4 out_color_smooth;\n" - "${indent}layout(location = 1) ${outQual}flat vec4 out_color_flat;\n" - "${indent}layout(location = 2) ${outQual}noperspective vec4 out_color_noperspective;\n" - "${indent}layout(location = 3) ${outQual}centroid vec4 out_color_centroid;\n" - "${indent}layout(location = 4) ${outQual}sample vec4 out_color_sample;\n" - "${blockClosure}" - "\n" - "void main()\n" - "{\n" - " ${accessPrefix}out_color_smooth = in_color;\n" - " ${accessPrefix}out_color_flat = in_color;\n" - " ${accessPrefix}out_color_noperspective = in_color;\n" - " ${accessPrefix}out_color_centroid = in_color;\n" - " ${accessPrefix}out_color_sample = in_color;\n" - " gl_Position = in_position;\n" - "}\n" - }; - - const tcu::StringTemplate fragShaderMulti - { - "#version 430\n" - "${extensions}" - "\n" - "${blockOpeningIn}" - "${indent}layout(location = 0) ${inQual}vec4 in_color_smooth;\n" - "${indent}layout(location = 1) ${inQual}flat vec4 in_color_flat;\n" - "${indent}layout(location = 2) ${inQual}noperspective vec4 in_color_noperspective;\n" - "${indent}layout(location = 3) ${inQual}centroid vec4 in_color_centroid;\n" - "${indent}layout(location = 4) ${inQual}sample vec4 in_color_sample;\n" - "${blockClosure}" - "\n" - "layout(push_constant, std430) uniform PushConstants {\n" - " uint interpolationIndex;\n" - "} pc;\n" - "\n" - "layout(location=0) out vec4 out_color;\n" - "\n" - "void main()\n" - "{\n" - " const vec4 in_colors[" + de::toString(COUNT) + "] = vec4[](\n" - " ${accessPrefix}in_color_smooth,\n" - " ${accessPrefix}in_color_flat,\n" - " ${accessPrefix}in_color_noperspective,\n" - " ${accessPrefix}in_color_centroid,\n" - " ${accessPrefix}in_color_sample\n" - " );\n" - " out_color = in_colors[pc.interpolationIndex];\n" - "}\n" - }; + std::ostringstream vertShaderMultiStream; + vertShaderMultiStream + << "#version 430\n" + << "${extensions}" + << "\n" + << "layout(location = 0) in vec4 in_position;\n" + << "layout(location = 1) in vec4 in_color;\n" + << "\n" + << "${blockOpeningOut}" + << "${indent}layout(location = 0) ${outQual}vec4 out_color_smooth;\n" + << "${indent}layout(location = 1) ${outQual}flat vec4 out_color_flat;\n" + << "${indent}layout(location = 2) ${outQual}noperspective vec4 out_color_noperspective;\n" + << "${indent}layout(location = 3) ${outQual}centroid vec4 out_color_centroid;\n" + << (m_params.includeSampleDecoration ? "${indent}layout(location = 4) ${outQual}sample vec4 out_color_sample;\n" : "") + << "${blockClosure}" + << "\n" + << "void main()\n" + << "{\n" + << " ${accessPrefix}out_color_smooth = in_color;\n" + << " ${accessPrefix}out_color_flat = in_color;\n" + << " ${accessPrefix}out_color_noperspective = in_color;\n" + << " ${accessPrefix}out_color_centroid = in_color;\n" + << (m_params.includeSampleDecoration ? " ${accessPrefix}out_color_sample = in_color;\n" : "") + << " gl_Position = in_position;\n" + << "}\n" + ; + const tcu::StringTemplate vertShaderMulti(vertShaderMultiStream.str()); + + const auto colorCount = (m_params.includeSampleDecoration ? COUNT : (COUNT - 1)); + + std::ostringstream fragShaderMultiStream; + fragShaderMultiStream + << "#version 430\n" + << "${extensions}" + << "\n" + << "${blockOpeningIn}" + << "${indent}layout(location = 0) ${inQual}vec4 in_color_smooth;\n" + << "${indent}layout(location = 1) ${inQual}flat vec4 in_color_flat;\n" + << "${indent}layout(location = 2) ${inQual}noperspective vec4 in_color_noperspective;\n" + << "${indent}layout(location = 3) ${inQual}centroid vec4 in_color_centroid;\n" + << (m_params.includeSampleDecoration ? "${indent}layout(location = 4) ${inQual}sample vec4 in_color_sample;\n" : "") + << "${blockClosure}" + << "\n" + << "layout(push_constant, std430) uniform PushConstants {\n" + << " uint interpolationIndex;\n" + << "} pc;\n" + << "\n" + << "layout(location=0) out vec4 out_color;\n" + << "\n" + << "void main()\n" + << "{\n" + << " const vec4 in_colors[" + de::toString(colorCount) + "] = vec4[](\n" + << " ${accessPrefix}in_color_smooth,\n" + << " ${accessPrefix}in_color_flat,\n" + << " ${accessPrefix}in_color_noperspective,\n" + << " ${accessPrefix}in_color_centroid" << (m_params.includeSampleDecoration ? "," : "") << "\n" + << (m_params.includeSampleDecoration ? " ${accessPrefix}in_color_sample\n" : "") + << " );\n" + << " out_color = in_colors[pc.interpolationIndex];\n" + << "}\n" + ; + const tcu::StringTemplate fragShaderMulti(fragShaderMultiStream.str()); const tcu::StringTemplate vertShaderSingle { @@ -267,14 +272,21 @@ void DrawTestCase::initPrograms (vk::SourceCollections& programCollection) const programCollection.glslSources.add("frag_noperspective") << glu::FragmentSource(fragShaderSingle.specialize(noperspective)); programCollection.glslSources.add("vert_centroid") << glu::VertexSource(vertShaderSingle.specialize(centroid)); programCollection.glslSources.add("frag_centroid") << glu::FragmentSource(fragShaderSingle.specialize(centroid)); - programCollection.glslSources.add("vert_sample") << glu::VertexSource(vertShaderSingle.specialize(sample)); - programCollection.glslSources.add("frag_sample") << glu::FragmentSource(fragShaderSingle.specialize(sample)); + + if (m_params.includeSampleDecoration) + { + programCollection.glslSources.add("vert_sample") << glu::VertexSource(vertShaderSingle.specialize(sample)); + programCollection.glslSources.add("frag_sample") << glu::FragmentSource(fragShaderSingle.specialize(sample)); + } } void DrawTestCase::checkSupport (Context& context) const { if (!(m_params.samples & context.getDeviceProperties().limits.framebufferColorSampleCounts)) - throw tcu::NotSupportedError("Multisampling with " + de::toString(m_params.samples) + " samples not supported"); + TCU_THROW(NotSupportedError, "Multisampling with " + de::toString(m_params.samples) + " samples not supported"); + + if (m_params.includeSampleDecoration && !context.getDeviceFeatures().sampleRateShading) + TCU_THROW(NotSupportedError, "Sample rate shading not supported"); } TestInstance* DrawTestCase::createInstance (Context& context) const @@ -575,15 +587,20 @@ tcu::TestStatus DrawTestInstance::iterate (void) tcu::ConstPixelBufferAccess refSRSFrames[frameCount]; // Using sample rate shading. for (int interpolationType = 0; interpolationType < COUNT; ++interpolationType) - render(resImages[interpolationType], &resFrames[interpolationType], "vert_multi", "frag_multi", static_cast(interpolationType), false); + { + // Avoid generating a result image for the sample decoration if we're not using it. + if (!m_params.includeSampleDecoration && interpolationType == Interpolation::SAMPLE) + continue; - const auto& features = m_context.getDeviceFeatures(); - const bool sampleRateShadingSupport = features.sampleRateShading; + render(resImages[interpolationType], &resFrames[interpolationType], "vert_multi", "frag_multi", static_cast(interpolationType), false); + } for (int i = 0; i < 2; ++i) { const bool useSampleRateShading = (i > 0); - if (useSampleRateShading && !sampleRateShadingSupport) + + // Sample rate shading is an alternative good result for cases using the sample decoration. + if (useSampleRateShading && !m_params.includeSampleDecoration) continue; tcu::ConstPixelBufferAccess *framesArray = (useSampleRateShading ? refSRSFrames : refFrames); @@ -592,27 +609,36 @@ tcu::TestStatus DrawTestInstance::iterate (void) render(flatImage[i], &framesArray[FLAT], "vert_flat", "frag_flat", FLAT, useSampleRateShading); render(noperspectiveImage[i], &framesArray[NOPERSPECTIVE], "vert_noperspective", "frag_noperspective", NOPERSPECTIVE, useSampleRateShading); render(centroidImage[i], &framesArray[CENTROID], "vert_centroid", "frag_centroid", CENTROID, useSampleRateShading); - render(sampleImage[i], &framesArray[SAMPLE], "vert_sample", "frag_sample", SAMPLE, useSampleRateShading); + + // Avoid generating a reference image for the sample interpolation if we're not using it. + if (m_params.includeSampleDecoration) + render(sampleImage[i], &framesArray[SAMPLE], "vert_sample", "frag_sample", SAMPLE, useSampleRateShading); } for (deUint32 resNdx = 0; resNdx < frameCount; resNdx++) { + if (!m_params.includeSampleDecoration && resNdx == SAMPLE) + continue; + const std::string resName = interpolationToString((Interpolation)resNdx); log << tcu::TestLog::ImageSet(resName, resName) << tcu::TestLog::Image("Result", "Result", resFrames[resNdx]) << tcu::TestLog::Image("Reference", "Reference", refFrames[resNdx]); - if (sampleRateShadingSupport) + if (m_params.includeSampleDecoration) log << tcu::TestLog::Image("ReferenceSRS", "Reference with sample shading", refSRSFrames[resNdx]); log << tcu::TestLog::EndImageSet; for (deUint32 refNdx = 0; refNdx < frameCount; refNdx++) { + if (!m_params.includeSampleDecoration && refNdx == SAMPLE) + continue; + const std::string refName = interpolationToString((Interpolation)refNdx); if (resNdx == refNdx) { - if (!compare(resFrames[resNdx], refFrames[refNdx]) && (!sampleRateShadingSupport || !compare(resFrames[resNdx], refSRSFrames[refNdx]))) + if (!compare(resFrames[resNdx], refFrames[refNdx]) && (!m_params.includeSampleDecoration || !compare(resFrames[resNdx], refSRSFrames[refNdx]))) return tcu::TestStatus::fail(resName + " produced different results"); } else if (!useMultisampling && @@ -684,14 +710,31 @@ void createTests (tcu::TestCaseGroup* testGroup) { true, "structured" }, }; + const struct + { + const bool includeSampleDecoration; + const std::string groupName; + } sampleVariants[] = + { + { false, "no_sample_decoration" }, + { true, "with_sample_decoration" }, + }; + for (const auto& grpVariant : groupVariants) { de::MovePtr group {new tcu::TestCaseGroup{testCtx, grpVariant.groupName.c_str(), ""}}; - for (const auto& testVariant : testVariants) + for (const auto& sampleVariant : sampleVariants) { - const DrawParams params {format, size, testVariant.samples, grpVariant.useStructure}; - group->addChild(new DrawTestCase(testCtx, testVariant.name, testVariant.desc, params)); + de::MovePtr sampleGroup {new tcu::TestCaseGroup{testCtx, sampleVariant.groupName.c_str(), ""}}; + + for (const auto& testVariant : testVariants) + { + const DrawParams params {format, size, testVariant.samples, grpVariant.useStructure, sampleVariant.includeSampleDecoration}; + sampleGroup->addChild(new DrawTestCase(testCtx, testVariant.name, testVariant.desc, params)); + } + + group->addChild(sampleGroup.release()); } testGroup->addChild(group.release()); diff --git a/external/vulkancts/mustpass/master/vk-default/draw.txt b/external/vulkancts/mustpass/master/vk-default/draw.txt index 3f4d5bd..89fcdde 100644 --- a/external/vulkancts/mustpass/master/vk-default/draw.txt +++ b/external/vulkancts/mustpass/master/vk-default/draw.txt @@ -698,20 +698,34 @@ dEQP-VK.draw.scissor.static_scissor_framebuffer_border_out dEQP-VK.draw.scissor.dynamic_scissor_framebuffer_border_out dEQP-VK.draw.scissor.static_scissor_oversized dEQP-VK.draw.scissor.dynamic_scissor_oversized -dEQP-VK.draw.multiple_interpolation.separate.1_sample -dEQP-VK.draw.multiple_interpolation.separate.2_samples -dEQP-VK.draw.multiple_interpolation.separate.4_samples -dEQP-VK.draw.multiple_interpolation.separate.8_samples -dEQP-VK.draw.multiple_interpolation.separate.16_samples -dEQP-VK.draw.multiple_interpolation.separate.32_samples -dEQP-VK.draw.multiple_interpolation.separate.64_samples -dEQP-VK.draw.multiple_interpolation.structured.1_sample -dEQP-VK.draw.multiple_interpolation.structured.2_samples -dEQP-VK.draw.multiple_interpolation.structured.4_samples -dEQP-VK.draw.multiple_interpolation.structured.8_samples -dEQP-VK.draw.multiple_interpolation.structured.16_samples -dEQP-VK.draw.multiple_interpolation.structured.32_samples -dEQP-VK.draw.multiple_interpolation.structured.64_samples +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.1_sample +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.2_samples +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.4_samples +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.8_samples +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.16_samples +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.32_samples +dEQP-VK.draw.multiple_interpolation.separate.no_sample_decoration.64_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.1_sample +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.2_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.4_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.8_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.16_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.32_samples +dEQP-VK.draw.multiple_interpolation.separate.with_sample_decoration.64_samples +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.1_sample +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.2_samples +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.4_samples +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.8_samples +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.16_samples +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.32_samples +dEQP-VK.draw.multiple_interpolation.structured.no_sample_decoration.64_samples +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.1_sample +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.2_samples +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.4_samples +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.8_samples +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.16_samples +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.32_samples +dEQP-VK.draw.multiple_interpolation.structured.with_sample_decoration.64_samples dEQP-VK.draw.discard_rectangles.inclusive_rect_1 dEQP-VK.draw.discard_rectangles.inclusive_rect_2 dEQP-VK.draw.discard_rectangles.inclusive_rect_3 -- 2.7.4