From bb4279cd49a9e7ff1af4d95930ef27f15aab5a70 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Samuel=20Iglesias=20Gons=C3=A1lvez?= Date: Thu, 24 Jun 2021 11:48:16 +0200 Subject: [PATCH] Check support for triangle fan primitive topology on rasterization tests MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit If VK_KHR_portability_subset is supported, check for triangle fan support in the tests that use that primitive topology. Component: Vulkan Fix issue: KhronosGroup#246 VK-GL-CTS issue: 2978 Affected test: dEQP-VK.rasterization.*triangle_fan Signed-off-by: Samuel Iglesias Gonsálvez Change-Id: I98a4ab5caee2bf6f07c610822b8166b3a1803e52 --- .../vktRasterizationProvokingVertexTests.cpp | 7 +++++++ .../vulkan/rasterization/vktRasterizationTests.cpp | 15 ++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/external/vulkancts/modules/vulkan/rasterization/vktRasterizationProvokingVertexTests.cpp b/external/vulkancts/modules/vulkan/rasterization/vktRasterizationProvokingVertexTests.cpp index 8aed7fe..0a39bbf 100644 --- a/external/vulkancts/modules/vulkan/rasterization/vktRasterizationProvokingVertexTests.cpp +++ b/external/vulkancts/modules/vulkan/rasterization/vktRasterizationProvokingVertexTests.cpp @@ -225,6 +225,13 @@ void ProvokingVertexTestCase::checkSupport (Context& context) const TCU_THROW(NotSupportedError, "provokingVertexModePerPipeline not supported"); } } + + if (m_params.primitiveTopology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN && + context.isDeviceFunctionalitySupported("VK_KHR_portability_subset") && + !context.getPortabilitySubsetFeatures().triangleFans) + { + TCU_THROW(NotSupportedError, "VK_KHR_portability_subset: Triangle fans are not supported by this implementation"); + } } TestInstance* ProvokingVertexTestCase::createInstance (Context& context) const diff --git a/external/vulkancts/modules/vulkan/rasterization/vktRasterizationTests.cpp b/external/vulkancts/modules/vulkan/rasterization/vktRasterizationTests.cpp index b66856b..d305ea8 100644 --- a/external/vulkancts/modules/vulkan/rasterization/vktRasterizationTests.cpp +++ b/external/vulkancts/modules/vulkan/rasterization/vktRasterizationTests.cpp @@ -2200,13 +2200,22 @@ void TriangleStripTestInstance::generateTriangles (int iteration, std::vector& outData, std::vector& outTriangles); }; +TriangleFanTestInstance::TriangleFanTestInstance (Context& context, VkSampleCountFlagBits sampleCount) + : BaseTriangleTestInstance(context, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN, sampleCount) +{ + if (context.isDeviceFunctionalitySupported("VK_KHR_portability_subset") && + !context.getPortabilitySubsetFeatures().triangleFans) + { + TCU_THROW(NotSupportedError, "VK_KHR_portability_subset: Triangle fans are not supported by this implementation"); + } +} + void TriangleFanTestInstance::generateTriangles (int iteration, std::vector& outData, std::vector& outTriangles) { outData.resize(5); -- 2.7.4