Fix interface mismatch in case "spirv_validation_capabilities_test"
authorAleksy Sokolowski <aleksy.sokolowski@intel.com>
Wed, 12 Feb 2020 11:17:49 +0000 (12:17 +0100)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Thu, 27 Feb 2020 11:18:43 +0000 (06:18 -0500)
User variable texCoord in location = 3 was only used in VS and FS,
lack of the variable in TCS, TES and GS is causing interface mismatch.

VK-GL-CTS Issue: 2219

Affects: KHR-GL46.gl_spirv.spirv_validation_capabilities_test

Components: OpenGL

Change-Id: I5899906f89efb380896a277939b532f393d00fce

external/openglcts/modules/gl/gl4cGlSpirvTests.cpp

index d885e90..0c02d82 100644 (file)
@@ -3118,6 +3118,8 @@ void SpirvValidationCapabilitiesTest::init()
                TessellationControlSource("#version 450\n"
                                                                  "\n"
                                                                  "layout (vertices = 3) out;\n"
+                                                                 "layout (location = 3) in vec2 texCoordIn[];\n"
+                                                                 "layout (location = 3) out vec2 texCoordOut[];\n"
                                                                  "\n"
                                                                  "void main()\n"
                                                                  "{\n"
@@ -3130,6 +3132,7 @@ void SpirvValidationCapabilitiesTest::init()
                                                                  "\n"
                                                                  "    gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;\n"
                                                                  "    gl_out[gl_InvocationID].gl_PointSize = gl_in[gl_InvocationID].gl_PointSize;\n"
+                                                                 "    texCoordOut[gl_InvocationID] = texCoordIn[gl_InvocationID];\n"
                                                                  "}\n");
 
        tessCtrlStage.caps.push_back("Tessellation Shader");
@@ -3139,12 +3142,15 @@ void SpirvValidationCapabilitiesTest::init()
        tessEvalStage.source = TessellationEvaluationSource("#version 450\n"
                                                                                                                "\n"
                                                                                                                "layout (triangles) in;\n"
+                                                                                                               "layout (location = 3) in vec2 texCoordIn[];\n"
+                                                                                                               "layout (location = 3) out vec2 texCoordOut;\n"
                                                                                                                "\n"
                                                                                                                "void main()\n"
                                                                                                                "{\n"
                                                                                                                "    gl_Position = gl_TessCoord.x * gl_in[0].gl_Position +\n"
                                                                                                                "                  gl_TessCoord.y * gl_in[1].gl_Position +\n"
                                                                                                                "                  gl_TessCoord.z * gl_in[2].gl_Position;\n"
+                                                                                                               "    texCoordOut = texCoordIn[0];\n"
                                                                                                                "}\n");
 
        ShaderStage geometryStage;
@@ -3152,6 +3158,8 @@ void SpirvValidationCapabilitiesTest::init()
                                                                                  "\n"
                                                                                  "layout (triangles) in;\n"
                                                                                  "layout (triangle_strip, max_vertices = 3) out;\n"
+                                                                                 "layout (location = 3) in vec2 texCoordIn[];\n"
+                                                                                 "layout (location = 3) out vec2 texCoordOut;\n"
                                                                                  "\n"
                                                                                  "void main()\n"
                                                                                  "{\n"
@@ -3159,6 +3167,7 @@ void SpirvValidationCapabilitiesTest::init()
                                                                                  "    for (int i = 0; i < 3; ++i) {\n"
                                                                                  "        gl_Position = gl_in[i].gl_Position;\n"
                                                                                  "        gl_PointSize = gl_in[i].gl_PointSize;\n"
+                                                                                 "        texCoordOut = texCoordIn[i];\n"
                                                                                  "        EmitStreamVertex(0);\n"
                                                                                  "    }\n"
                                                                                  "    EndStreamPrimitive(0);\n"