tests: Test shader with invalid transform feedback stream
diff --git a/tests/vklayertests_pipeline_shader.cpp b/tests/vklayertests_pipeline_shader.cpp
index 9edff37..e0303d2 100644
--- a/tests/vklayertests_pipeline_shader.cpp
+++ b/tests/vklayertests_pipeline_shader.cpp
@@ -13971,6 +13971,60 @@
CreatePipelineHelper::OneshotTest(*this, set_info, kErrorBit,
"VUID-RuntimeSpirv-transformFeedbackStreamsLinesTriangles-06311");
}
+
+ {
+ std::stringstream gsSource;
+ gsSource << R"asm(
+ OpCapability Geometry
+ OpCapability TransformFeedback
+ OpCapability GeometryStreams
+ %1 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Geometry %main "main" %a
+ OpExecutionMode %main Xfb
+ OpExecutionMode %main Triangles
+ OpExecutionMode %main Invocations 1
+ OpExecutionMode %main OutputLineStrip
+ OpExecutionMode %main OutputVertices 6
+
+ ; Debug Information
+ OpSource GLSL 450
+ OpName %main "main" ; id %4
+ OpName %a "a" ; id %10
+
+ ; Annotations
+ OpDecorate %a Location 0
+ OpDecorate %a Stream )asm";
+ gsSource << transform_feedback_props.maxTransformFeedbackStreams;
+ gsSource << R"asm(
+ OpDecorate %a XfbBuffer 0
+ OpDecorate %a XfbStride 4
+ OpDecorate %a Offset 0
+
+ ; Types, variables and constants
+ %void = OpTypeVoid
+ %3 = OpTypeFunction %void
+ %int = OpTypeInt 32 1
+ %int_0 = OpConstant %int 0
+ %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+ %a = OpVariable %_ptr_Output_float Output
+
+ ; Function main
+ %main = OpFunction %void None %3
+ %5 = OpLabel
+ OpEmitStreamVertex %int_0
+ OpReturn
+ OpFunctionEnd
+ )asm";
+
+ auto gs = VkShaderObj::CreateFromASM(*m_device, *this, VK_SHADER_STAGE_GEOMETRY_BIT, gsSource.str().c_str(), "main", nullptr);
+
+ const auto set_info = [&](CreatePipelineHelper &helper) {
+ helper.shader_stages_ = {helper.vs_->GetStageCreateInfo(), gs->GetStageCreateInfo(), helper.fs_->GetStageCreateInfo()};
+ };
+ CreatePipelineHelper::OneshotTest(*this, set_info, kErrorBit, "VUID-RuntimeSpirv-Stream-06312");
+ }
}
TEST_F(VkLayerTest, TestMinAndMaxTexelGatherOffset) {