Only require geometryStreams feature in XFB query tests if needed
Change transform feedback query tests to only require the
geometryStreams feature for test cases using stream ID != 0.
Affects:
- dEQP-VK.transform_feedback.simple.query_0_*
- dEQP-VK.transform_feedback.simple.host_query_reset_0_*
Components: Vulkan
VK-GL-CTS Issue: 2197
Change-Id: Id1378f58e6634dd70ad89843e000d047af0ea496
diff --git a/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.cpp b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.cpp
index 8c33f21..4ed22a3 100644
--- a/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.cpp
+++ b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.cpp
@@ -1512,7 +1512,7 @@
if (!features.geometryShader)
TCU_THROW(NotSupportedError, "Missing feature: geometryShader");
- if (transformFeedbackFeatures.geometryStreams == DE_FALSE)
+ if (streamsRequired > 1 && transformFeedbackFeatures.geometryStreams == DE_FALSE)
TCU_THROW(NotSupportedError, "geometryStreams feature is not supported");
if (streamsSupported < streamsRequired)
@@ -2079,6 +2079,28 @@
}
// geometry shader
+ if (m_parameters.streamId == 0)
+ {
+ std::ostringstream src;
+
+ src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n"
+ << "\n"
+ << "layout(points) in;\n"
+ << "layout(location = 0) in vec4 in0[];\n"
+ << "\n"
+ << "layout(points, max_vertices = 1) out;\n"
+ << "layout(xfb_buffer = 0, xfb_offset = 0, xfb_stride = 16, location = 0) out vec4 out0;\n"
+ << "\n"
+ << "void main(void)\n"
+ << "{\n"
+ << " out0 = in0[0];\n"
+ << " EmitVertex();\n"
+ << " EndPrimitive();\n"
+ << "}\n";
+
+ programCollection.glslSources.add("geom") << glu::GeometrySource(src.str());
+ }
+ else
{
const deUint32 s = m_parameters.streamId;
std::ostringstream src;