From: Chris Forbes Date: Mon, 15 Apr 2019 23:03:23 +0000 (-0700) Subject: Check for geometry shader support when testing adjacency topologies X-Git-Tag: upstream/1.3.5~2002^2~18^2~11 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=97aa09bca5489553f52256064163ee0083b1a84e;p=platform%2Fupstream%2FVK-GL-CTS.git Check for geometry shader support when testing adjacency topologies Clipping tests would attempt to create pipelines using adjacency topologies without checking for geometry shader support. This seems to be a benign failure on most real implementations, but is a VU violation. Affects: dEQP-VK.clipping.clip_volume.* VK-GL-CTS Issue: 1738 Change-Id: Iac6cfc6a669f2e533ce8ceaf4e7c2448b9fe4883 (cherry picked from commit 9c97d200e33e781ebb9f85df1195bcb84e013833) --- diff --git a/external/vulkancts/modules/vulkan/clipping/vktClippingTests.cpp b/external/vulkancts/modules/vulkan/clipping/vktClippingTests.cpp index 5b1fd9c..312a2cd 100644 --- a/external/vulkancts/modules/vulkan/clipping/vktClippingTests.cpp +++ b/external/vulkancts/modules/vulkan/clipping/vktClippingTests.cpp @@ -401,19 +401,23 @@ tcu::TestStatus testPrimitivesInside (Context& context, const VkPrimitiveTopolog minExpectedBlackPixels = NUM_RENDER_PIXELS - 5; break; - case VK_PRIMITIVE_TOPOLOGY_LINE_LIST: - case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP: case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY: case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY: + requireFeatures(context.getInstanceInterface(), context.getPhysicalDevice(), FEATURE_GEOMETRY_SHADER); + // Fallthrough + case VK_PRIMITIVE_TOPOLOGY_LINE_LIST: + case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP: // Allow for some error. minExpectedBlackPixels = NUM_RENDER_PIXELS - 3 * RENDER_SIZE; break; + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY: + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY: + requireFeatures(context.getInstanceInterface(), context.getPhysicalDevice(), FEATURE_GEOMETRY_SHADER); + // Fallthrough case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST: case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP: case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN: - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY: - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY: // All render area should be covered. minExpectedBlackPixels = 0; break; @@ -464,6 +468,18 @@ tcu::TestStatus testPrimitivesInside (Context& context, const VkPrimitiveTopolog //! Primitives fully outside the clip volume. tcu::TestStatus testPrimitivesOutside (Context& context, const VkPrimitiveTopology topology) { + switch (topology) + { + case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY: + case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY: + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY: + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY: + requireFeatures(context.getInstanceInterface(), context.getPhysicalDevice(), FEATURE_GEOMETRY_SHADER); + break; + default: + break; + } + std::vector shaders; shaders.push_back(VulkanShader(VK_SHADER_STAGE_VERTEX_BIT, context.getBinaryCollection().get("vert"))); shaders.push_back(VulkanShader(VK_SHADER_STAGE_FRAGMENT_BIT, context.getBinaryCollection().get("frag")));