Add dynamic indexing test using gl_VertexID
authorAri Suonpaa <ari.suonpaa@siru.fi>
Fri, 30 Apr 2021 12:40:41 +0000 (15:40 +0300)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Thu, 13 May 2021 08:24:58 +0000 (08:24 +0000)
VK-GL-CTS Issue: 2173

New tests:

KHR-*.shaders.indexing.tmp_array.vertexid

Components: OpenGL ES
Change-Id: I8a978b71a77dab09e127f52459b780d30b4d8541

12 files changed:
external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl33-master.txt
external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl40-master.txt
external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl41-master.txt
external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl42-master.txt
external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl43-master.txt
external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl44-master.txt
external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl45-master.txt
external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl46-master.txt
external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.5.x/gles3-khr-master.txt
external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.6.x/gles3-khr-master.txt
external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles3-khr-master.txt
external/openglcts/modules/common/glcShaderIndexingTests.cpp

index e78436b..2b70674 100644 (file)
@@ -1435,6 +1435,7 @@ KHR-GL33.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_vertex
 KHR-GL33.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_fragment
 KHR-GL33.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_vertex
 KHR-GL33.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_fragment
+KHR-GL33.shaders.indexing.tmp_array.vertexid
 KHR-GL33.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_vertex
 KHR-GL33.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_fragment
 KHR-GL33.shaders.indexing.vector_subscript.vec2_direct_write_dynamic_subscript_read_vertex
index 436bb39..b2df794 100644 (file)
@@ -1435,6 +1435,7 @@ KHR-GL40.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_vertex
 KHR-GL40.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_fragment
 KHR-GL40.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_vertex
 KHR-GL40.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_fragment
+KHR-GL40.shaders.indexing.tmp_array.vertexid
 KHR-GL40.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_vertex
 KHR-GL40.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_fragment
 KHR-GL40.shaders.indexing.vector_subscript.vec2_direct_write_dynamic_subscript_read_vertex
index 4d3a715..35e637d 100644 (file)
@@ -1435,6 +1435,7 @@ KHR-GL41.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_vertex
 KHR-GL41.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_fragment
 KHR-GL41.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_vertex
 KHR-GL41.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_fragment
+KHR-GL41.shaders.indexing.tmp_array.vertexid
 KHR-GL41.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_vertex
 KHR-GL41.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_fragment
 KHR-GL41.shaders.indexing.vector_subscript.vec2_direct_write_dynamic_subscript_read_vertex
index 73d5dc5..2b240fd 100644 (file)
@@ -1435,6 +1435,7 @@ KHR-GL42.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_vertex
 KHR-GL42.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_fragment
 KHR-GL42.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_vertex
 KHR-GL42.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_fragment
+KHR-GL42.shaders.indexing.tmp_array.vertexid
 KHR-GL42.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_vertex
 KHR-GL42.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_fragment
 KHR-GL42.shaders.indexing.vector_subscript.vec2_direct_write_dynamic_subscript_read_vertex
index 8202342..707461f 100644 (file)
@@ -1435,6 +1435,7 @@ KHR-GL43.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_vertex
 KHR-GL43.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_fragment
 KHR-GL43.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_vertex
 KHR-GL43.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_fragment
+KHR-GL43.shaders.indexing.tmp_array.vertexid
 KHR-GL43.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_vertex
 KHR-GL43.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_fragment
 KHR-GL43.shaders.indexing.vector_subscript.vec2_direct_write_dynamic_subscript_read_vertex
index f5d4e98..76754ad 100644 (file)
@@ -1435,6 +1435,7 @@ KHR-GL44.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_vertex
 KHR-GL44.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_fragment
 KHR-GL44.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_vertex
 KHR-GL44.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_fragment
+KHR-GL44.shaders.indexing.tmp_array.vertexid
 KHR-GL44.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_vertex
 KHR-GL44.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_fragment
 KHR-GL44.shaders.indexing.vector_subscript.vec2_direct_write_dynamic_subscript_read_vertex
index 4c0bd36..f406e72 100644 (file)
@@ -1435,6 +1435,7 @@ KHR-GL45.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_vertex
 KHR-GL45.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_fragment
 KHR-GL45.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_vertex
 KHR-GL45.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_fragment
+KHR-GL45.shaders.indexing.tmp_array.vertexid
 KHR-GL45.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_vertex
 KHR-GL45.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_fragment
 KHR-GL45.shaders.indexing.vector_subscript.vec2_direct_write_dynamic_subscript_read_vertex
index 85faa9f..2fb1435 100644 (file)
@@ -1435,6 +1435,7 @@ KHR-GL46.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_vertex
 KHR-GL46.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_fragment
 KHR-GL46.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_vertex
 KHR-GL46.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_fragment
+KHR-GL46.shaders.indexing.tmp_array.vertexid
 KHR-GL46.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_vertex
 KHR-GL46.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_fragment
 KHR-GL46.shaders.indexing.vector_subscript.vec2_direct_write_dynamic_subscript_read_vertex
index 96f2957..7b3c250 100644 (file)
@@ -278,6 +278,7 @@ KHR-GLES3.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_vertex
 KHR-GLES3.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_fragment
 KHR-GLES3.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_vertex
 KHR-GLES3.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_fragment
+KHR-GLES3.shaders.indexing.tmp_array.vertexid
 KHR-GLES3.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_vertex
 KHR-GLES3.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_fragment
 KHR-GLES3.shaders.indexing.vector_subscript.vec2_direct_write_dynamic_subscript_read_vertex
index 96f2957..7b3c250 100644 (file)
@@ -278,6 +278,7 @@ KHR-GLES3.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_vertex
 KHR-GLES3.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_fragment
 KHR-GLES3.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_vertex
 KHR-GLES3.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_fragment
+KHR-GLES3.shaders.indexing.tmp_array.vertexid
 KHR-GLES3.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_vertex
 KHR-GLES3.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_fragment
 KHR-GLES3.shaders.indexing.vector_subscript.vec2_direct_write_dynamic_subscript_read_vertex
index 96f2957..7b3c250 100644 (file)
@@ -278,6 +278,7 @@ KHR-GLES3.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_vertex
 KHR-GLES3.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_fragment
 KHR-GLES3.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_vertex
 KHR-GLES3.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_fragment
+KHR-GLES3.shaders.indexing.tmp_array.vertexid
 KHR-GLES3.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_vertex
 KHR-GLES3.shaders.indexing.vector_subscript.vec2_direct_write_static_subscript_read_fragment
 KHR-GLES3.shaders.indexing.vector_subscript.vec2_direct_write_dynamic_subscript_read_vertex
index 48c9b56..8b4e48c 100644 (file)
@@ -624,6 +624,49 @@ static ShaderIndexingCase* createTmpArrayCase(Context& context, const char* case
                                                                  vertexShaderSource.c_str(), fragmentShaderSource.c_str());
 }
 
+void evalGreenColor (ShaderEvalContext& c)
+{
+    c.color = Vec4(0.0f, 1.0f, 0.0f, 1.0f);
+}
+
+static ShaderIndexingCase* createTmpArrayVertexIdCase (Context& context, const char* caseName, const char* description,
+                                                                                                          glu::GLSLVersion glslVersion)
+{
+       DE_ASSERT(glslVersion == glu::GLSL_VERSION_300_ES || glslVersion == glu::GLSL_VERSION_310_ES ||
+                         glslVersion >= glu::GLSL_VERSION_330);
+
+       std::string vtx = glu::getGLSLVersionDeclaration(glslVersion) + std::string("\n"
+               "precision highp float;\n"
+               "in vec4 a_position;\n"
+               "out float color[4];\n"
+               "void main()\n"
+               "{\n"
+               "    for(int i = 0; i < 4; i++)\n"
+               "    {\n"
+               "        int j = (gl_VertexID + i) % 4;\n"
+               "        color[j] = (j % 2 == 0) ? 0.0 : 1.0;\n"
+               "    }\n"
+               "    gl_Position = vec4(a_position.xy, 0.0, 1.0);\n"
+               "}\n");
+
+       std::string frag = glu::getGLSLVersionDeclaration(glslVersion) + std::string("\n"
+               "precision highp float;\n"
+               "in float color[4];\n"
+               "layout(location = 0) out vec4 o_color;\n"
+               "void main()\n"
+               "{\n"
+               "    float temp[4];\n"
+               "    for(int i = 0; i < 4; i++)\n"
+               "    {\n"
+               "        temp[i] = color[i];\n"
+               "        o_color = vec4(temp[0], temp[1], temp[2], temp[3]);\n"
+               "    }\n"
+               "}\n");
+
+       return new ShaderIndexingCase(context, caseName, description, false, TYPE_FLOAT, evalGreenColor,
+                                                                 vtx.c_str(), frag.c_str());
+}
+
 // VECTOR SUBSCRIPT.
 
 void evalSubscriptVec2(ShaderEvalContext& c)
@@ -1195,6 +1238,8 @@ void ShaderIndexingTests::init(void)
                                }
                        }
                }
+
+               tmpGroup->addChild(createTmpArrayVertexIdCase(m_context, "vertexid", "", m_glslVersion));
        }
 
        // Vector indexing with subscripts.