Remove tests that check non-zero values for reservedMustBeZero on all APIs
authorAlejandro Piñeiro <apinheiro@igalia.com>
Fri, 11 Oct 2019 09:40:16 +0000 (11:40 +0200)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Thu, 14 Nov 2019 14:48:21 +0000 (09:48 -0500)
Although initially it was agreed to keep them for the APIs that still
include that field as reserved, and only remove them when the API
defines the field (baseInstance), in the end it was agreed to remove
it completely, as it is testing an undefined behaviour.

Components: OpenGL, OpenGL ES

VK-GL-CTS issue: 2029

Affects:
KHR-GL40.draw_indirect.misc-reservedMustBeZero-arrays
KHR-GL40.draw_indirect.misc-reservedMustBeZero-elements
KHR-GL41.draw_indirect.misc-reservedMustBeZero-arrays
KHR-GL41.draw_indirect.misc-reservedMustBeZero-elements
KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-arrays
KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-elements

Change-Id: Iafe3e711107da818a392ebcdfe50379cf3790d17

16 files changed:
external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl40-master.txt
external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl41-master.txt
external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl40-master.txt
external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl41-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/gles/khronos_mustpass/3.2.2.x/gles31-khr-master.txt
external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.2.x/src/gles31-khr-master.txt
external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.3.x/gles31-khr-master.txt
external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.3.x/src/gles31-khr-master.txt
external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/gles31-khr-master.txt
external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/src/gles31-khr-master.txt
external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.5.x/gles31-khr-master.txt
external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.6.x/gles31-khr-master.txt
external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles31-khr-master.txt
external/openglcts/modules/gles31/es31cDrawIndirectTests.cpp

index 97740ac..ecc9f42 100644 (file)
@@ -3878,8 +3878,6 @@ KHR-GL40.draw_indirect.basic-mode-drawElements-triangle_strip_adjacency
 KHR-GL40.draw_indirect.advanced-twoPass-transformFeedback-arrays
 KHR-GL40.draw_indirect.advanced-twoPass-transformFeedback-elements
 KHR-GL40.draw_indirect.advanced-primitiveRestart-elements
-KHR-GL40.draw_indirect.misc-reservedMustBeZero-arrays
-KHR-GL40.draw_indirect.misc-reservedMustBeZero-elements
 KHR-GL40.draw_indirect.negative-noindirect-arrays
 KHR-GL40.draw_indirect.negative-noindirect-elements
 KHR-GL40.draw_indirect.negative-invalidMode-arrays
index afc8688..75a23de 100644 (file)
@@ -3878,8 +3878,6 @@ KHR-GL41.draw_indirect.basic-mode-drawElements-triangle_strip_adjacency
 KHR-GL41.draw_indirect.advanced-twoPass-transformFeedback-arrays
 KHR-GL41.draw_indirect.advanced-twoPass-transformFeedback-elements
 KHR-GL41.draw_indirect.advanced-primitiveRestart-elements
-KHR-GL41.draw_indirect.misc-reservedMustBeZero-arrays
-KHR-GL41.draw_indirect.misc-reservedMustBeZero-elements
 KHR-GL41.draw_indirect.negative-noindirect-arrays
 KHR-GL41.draw_indirect.negative-noindirect-elements
 KHR-GL41.draw_indirect.negative-invalidMode-arrays
index 97740ac..ecc9f42 100644 (file)
@@ -3878,8 +3878,6 @@ KHR-GL40.draw_indirect.basic-mode-drawElements-triangle_strip_adjacency
 KHR-GL40.draw_indirect.advanced-twoPass-transformFeedback-arrays
 KHR-GL40.draw_indirect.advanced-twoPass-transformFeedback-elements
 KHR-GL40.draw_indirect.advanced-primitiveRestart-elements
-KHR-GL40.draw_indirect.misc-reservedMustBeZero-arrays
-KHR-GL40.draw_indirect.misc-reservedMustBeZero-elements
 KHR-GL40.draw_indirect.negative-noindirect-arrays
 KHR-GL40.draw_indirect.negative-noindirect-elements
 KHR-GL40.draw_indirect.negative-invalidMode-arrays
index afc8688..75a23de 100644 (file)
@@ -3878,8 +3878,6 @@ KHR-GL41.draw_indirect.basic-mode-drawElements-triangle_strip_adjacency
 KHR-GL41.draw_indirect.advanced-twoPass-transformFeedback-arrays
 KHR-GL41.draw_indirect.advanced-twoPass-transformFeedback-elements
 KHR-GL41.draw_indirect.advanced-primitiveRestart-elements
-KHR-GL41.draw_indirect.misc-reservedMustBeZero-arrays
-KHR-GL41.draw_indirect.misc-reservedMustBeZero-elements
 KHR-GL41.draw_indirect.negative-noindirect-arrays
 KHR-GL41.draw_indirect.negative-noindirect-elements
 KHR-GL41.draw_indirect.negative-invalidMode-arrays
index 3a05ff4..519fcf0 100644 (file)
@@ -3923,8 +3923,6 @@ KHR-GL40.draw_indirect.basic-mode-drawElements-triangle_strip_adjacency
 KHR-GL40.draw_indirect.advanced-twoPass-transformFeedback-arrays
 KHR-GL40.draw_indirect.advanced-twoPass-transformFeedback-elements
 KHR-GL40.draw_indirect.advanced-primitiveRestart-elements
-KHR-GL40.draw_indirect.misc-reservedMustBeZero-arrays
-KHR-GL40.draw_indirect.misc-reservedMustBeZero-elements
 KHR-GL40.draw_indirect.negative-noindirect-arrays
 KHR-GL40.draw_indirect.negative-noindirect-elements
 KHR-GL40.draw_indirect.negative-invalidMode-arrays
index ceea623..8a9c7e0 100644 (file)
@@ -3923,8 +3923,6 @@ KHR-GL41.draw_indirect.basic-mode-drawElements-triangle_strip_adjacency
 KHR-GL41.draw_indirect.advanced-twoPass-transformFeedback-arrays
 KHR-GL41.draw_indirect.advanced-twoPass-transformFeedback-elements
 KHR-GL41.draw_indirect.advanced-primitiveRestart-elements
-KHR-GL41.draw_indirect.misc-reservedMustBeZero-arrays
-KHR-GL41.draw_indirect.misc-reservedMustBeZero-elements
 KHR-GL41.draw_indirect.negative-noindirect-arrays
 KHR-GL41.draw_indirect.negative-noindirect-elements
 KHR-GL41.draw_indirect.negative-invalidMode-arrays
index 03ee838..84b0575 100644 (file)
@@ -1171,8 +1171,6 @@ KHR-GLES31.core.draw_indirect.advanced-twoPass-transformFeedback-elements
 KHR-GLES31.core.draw_indirect.advanced-twoPass-Compute-arrays
 KHR-GLES31.core.draw_indirect.advanced-twoPass-Compute-elements
 KHR-GLES31.core.draw_indirect.advanced-primitiveRestart-elements
-KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-arrays
-KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-elements
 KHR-GLES31.core.draw_indirect.negative-noindirect-arrays
 KHR-GLES31.core.draw_indirect.negative-noindirect-elements
 KHR-GLES31.core.draw_indirect.negative-invalidMode-arrays
index 03ee838..84b0575 100644 (file)
@@ -1171,8 +1171,6 @@ KHR-GLES31.core.draw_indirect.advanced-twoPass-transformFeedback-elements
 KHR-GLES31.core.draw_indirect.advanced-twoPass-Compute-arrays
 KHR-GLES31.core.draw_indirect.advanced-twoPass-Compute-elements
 KHR-GLES31.core.draw_indirect.advanced-primitiveRestart-elements
-KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-arrays
-KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-elements
 KHR-GLES31.core.draw_indirect.negative-noindirect-arrays
 KHR-GLES31.core.draw_indirect.negative-noindirect-elements
 KHR-GLES31.core.draw_indirect.negative-invalidMode-arrays
index 9d96e35..e8ca86e 100644 (file)
@@ -1171,8 +1171,6 @@ KHR-GLES31.core.draw_indirect.advanced-twoPass-transformFeedback-elements
 KHR-GLES31.core.draw_indirect.advanced-twoPass-Compute-arrays
 KHR-GLES31.core.draw_indirect.advanced-twoPass-Compute-elements
 KHR-GLES31.core.draw_indirect.advanced-primitiveRestart-elements
-KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-arrays
-KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-elements
 KHR-GLES31.core.draw_indirect.negative-noindirect-arrays
 KHR-GLES31.core.draw_indirect.negative-noindirect-elements
 KHR-GLES31.core.draw_indirect.negative-invalidMode-arrays
index 9d96e35..e8ca86e 100644 (file)
@@ -1171,8 +1171,6 @@ KHR-GLES31.core.draw_indirect.advanced-twoPass-transformFeedback-elements
 KHR-GLES31.core.draw_indirect.advanced-twoPass-Compute-arrays
 KHR-GLES31.core.draw_indirect.advanced-twoPass-Compute-elements
 KHR-GLES31.core.draw_indirect.advanced-primitiveRestart-elements
-KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-arrays
-KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-elements
 KHR-GLES31.core.draw_indirect.negative-noindirect-arrays
 KHR-GLES31.core.draw_indirect.negative-noindirect-elements
 KHR-GLES31.core.draw_indirect.negative-invalidMode-arrays
index d9df703..6a23c58 100644 (file)
@@ -2101,8 +2101,6 @@ KHR-GLES31.core.draw_indirect.advanced-twoPass-transformFeedback-elements
 KHR-GLES31.core.draw_indirect.advanced-twoPass-Compute-arrays
 KHR-GLES31.core.draw_indirect.advanced-twoPass-Compute-elements
 KHR-GLES31.core.draw_indirect.advanced-primitiveRestart-elements
-KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-arrays
-KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-elements
 KHR-GLES31.core.draw_indirect.negative-noindirect-arrays
 KHR-GLES31.core.draw_indirect.negative-noindirect-elements
 KHR-GLES31.core.draw_indirect.negative-invalidMode-arrays
index d9df703..6a23c58 100644 (file)
@@ -2101,8 +2101,6 @@ KHR-GLES31.core.draw_indirect.advanced-twoPass-transformFeedback-elements
 KHR-GLES31.core.draw_indirect.advanced-twoPass-Compute-arrays
 KHR-GLES31.core.draw_indirect.advanced-twoPass-Compute-elements
 KHR-GLES31.core.draw_indirect.advanced-primitiveRestart-elements
-KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-arrays
-KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-elements
 KHR-GLES31.core.draw_indirect.negative-noindirect-arrays
 KHR-GLES31.core.draw_indirect.negative-noindirect-elements
 KHR-GLES31.core.draw_indirect.negative-invalidMode-arrays
index 828baad..930ed0b 100644 (file)
@@ -2109,8 +2109,6 @@ KHR-GLES31.core.draw_indirect.advanced-twoPass-transformFeedback-elements
 KHR-GLES31.core.draw_indirect.advanced-twoPass-Compute-arrays
 KHR-GLES31.core.draw_indirect.advanced-twoPass-Compute-elements
 KHR-GLES31.core.draw_indirect.advanced-primitiveRestart-elements
-KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-arrays
-KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-elements
 KHR-GLES31.core.draw_indirect.negative-noindirect-arrays
 KHR-GLES31.core.draw_indirect.negative-noindirect-elements
 KHR-GLES31.core.draw_indirect.negative-invalidMode-arrays
index 828baad..930ed0b 100644 (file)
@@ -2109,8 +2109,6 @@ KHR-GLES31.core.draw_indirect.advanced-twoPass-transformFeedback-elements
 KHR-GLES31.core.draw_indirect.advanced-twoPass-Compute-arrays
 KHR-GLES31.core.draw_indirect.advanced-twoPass-Compute-elements
 KHR-GLES31.core.draw_indirect.advanced-primitiveRestart-elements
-KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-arrays
-KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-elements
 KHR-GLES31.core.draw_indirect.negative-noindirect-arrays
 KHR-GLES31.core.draw_indirect.negative-noindirect-elements
 KHR-GLES31.core.draw_indirect.negative-invalidMode-arrays
index 828baad..930ed0b 100644 (file)
@@ -2109,8 +2109,6 @@ KHR-GLES31.core.draw_indirect.advanced-twoPass-transformFeedback-elements
 KHR-GLES31.core.draw_indirect.advanced-twoPass-Compute-arrays
 KHR-GLES31.core.draw_indirect.advanced-twoPass-Compute-elements
 KHR-GLES31.core.draw_indirect.advanced-primitiveRestart-elements
-KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-arrays
-KHR-GLES31.core.draw_indirect.misc-reservedMustBeZero-elements
 KHR-GLES31.core.draw_indirect.negative-noindirect-arrays
 KHR-GLES31.core.draw_indirect.negative-noindirect-elements
 KHR-GLES31.core.draw_indirect.negative-invalidMode-arrays
index 45b9ee1..dee4f70 100644 (file)
@@ -5718,203 +5718,6 @@ void CPrimitiveRestartElements<test_api::GL>::EnablePrimitiveRestart()
 }
 
 template <typename api>
-class CNonZeroReservedMustBeZeroArray : public DrawIndirectBase
-{
-       virtual std::string Title()
-       {
-               return "non-zero reservedMustBeZero - glDrawArrayIndirect";
-       }
-
-       virtual std::string Purpose()
-       {
-               return "Verify that no driver crash occurred";
-       }
-
-       virtual std::string Method()
-       {
-               return "Call glDrawArrayIndirect with non-zero ReservedMustBeZero";
-       }
-
-       virtual std::string PassCriteria()
-       {
-               return "The test will pass if no OpenGL errors reported and no driver crash occurred";
-       }
-
-       virtual long Setup()
-       {
-               glClear(GL_COLOR_BUFFER_BIT);
-               return NO_ERROR;
-       }
-
-       virtual long Run()
-       {
-               _program = CreateProgram(shaders::vshSimple<api>(), "", shaders::fshSimple<api>(), true);
-               if (!_program)
-               {
-                       return ERROR;
-               }
-               glUseProgram(_program);
-
-               CColorArray coords;
-               PrimitiveGen(GL_TRIANGLES, 8, 8, coords);
-
-               glGenVertexArrays(1, &_vao);
-               glBindVertexArray(_vao);
-
-               glGenBuffers(1, &_buffer);
-               glBindBuffer(GL_ARRAY_BUFFER, _buffer);
-
-               glBufferData(GL_ARRAY_BUFFER, (GLsizeiptr)(coords.size() * sizeof(coords[0])), &coords[0], GL_STREAM_DRAW);
-               glVertexAttribPointer(0, sizeof(coords[0]) / sizeof(float), GL_FLOAT, GL_FALSE, sizeof(coords[0]), 0);
-               glEnableVertexAttribArray(0);
-
-               DrawArraysIndirectCommand indirectArrays = { 0, 0, 0, 0 };
-               indirectArrays.count                                     = static_cast<GLuint>(coords.size());
-               indirectArrays.primCount                                 = 1;
-               indirectArrays.first                                     = 0;
-               indirectArrays.reservedMustBeZero                = 2312;
-
-               glGenBuffers(1, &_bufferIndirect);
-               glBindBuffer(GL_DRAW_INDIRECT_BUFFER, _bufferIndirect);
-               glBufferData(GL_DRAW_INDIRECT_BUFFER, sizeof(DrawArraysIndirectCommand), &indirectArrays, GL_STATIC_DRAW);
-
-               glDrawArraysIndirect(GL_TRIANGLES, 0);
-
-               DIResult result;
-               if (glGetError() == GL_NO_ERROR)
-               {
-                       //No GL error: undefined
-               }
-               else
-               {
-                       result.error() << "Invalid error code returned by a driver";
-               }
-
-               return result.code();
-       }
-
-       virtual long Cleanup()
-       {
-               glDisableVertexAttribArray(0);
-               glUseProgram(0);
-               glDeleteProgram(_program);
-               glDeleteVertexArrays(1, &_vao);
-               glDeleteBuffers(1, &_buffer);
-               glDeleteBuffers(1, &_bufferIndirect);
-               return NO_ERROR;
-       }
-
-private:
-       GLuint _program;
-       GLuint _vao, _buffer, _bufferIndirect;
-};
-
-template <typename api>
-struct CNonZeroReservedMustBeZeroElements : public DrawIndirectBase
-{
-       virtual std::string Title()
-       {
-               return "non-zero reservedMustBeZero - glDrawElementsIndirect";
-       }
-
-       virtual std::string Purpose()
-       {
-               return "Verify that no driver crash occurred";
-       }
-
-       virtual std::string Method()
-       {
-               return "Call glDrawElementsIndirect with non-zero ReservedMustBeZero";
-       }
-
-       virtual std::string PassCriteria()
-       {
-               return "The test will pass if no OpenGL errors reported and no driver crash occurred";
-       }
-
-       virtual long Setup()
-       {
-               glClear(GL_COLOR_BUFFER_BIT);
-               return NO_ERROR;
-       }
-
-       virtual long Run()
-       {
-               _program = CreateProgram(shaders::vshSimple<api>(), "", shaders::fshSimple<api>(), true);
-               if (!_program)
-               {
-                       return ERROR;
-               }
-               glUseProgram(_program);
-
-               CColorArray coords;
-               PrimitiveGen(GL_TRIANGLES, 8, 8, coords);
-
-               glGenVertexArrays(1, &_vao);
-               glBindVertexArray(_vao);
-
-               glGenBuffers(1, &_buffer);
-               glBindBuffer(GL_ARRAY_BUFFER, _buffer);
-
-               glBufferData(GL_ARRAY_BUFFER, (GLsizeiptr)(coords.size() * sizeof(coords[0])), &coords[0], GL_STREAM_DRAW);
-               glVertexAttribPointer(0, sizeof(coords[0]) / sizeof(float), GL_FLOAT, GL_FALSE, sizeof(coords[0]), 0);
-               glEnableVertexAttribArray(0);
-
-               DrawElementsIndirectCommand indirectElements = { 0, 0, 0, 0, 0 };
-               indirectElements.count                                           = static_cast<GLuint>(coords.size());
-               indirectElements.primCount                                       = 1;
-               indirectElements.baseVertex                                      = 0;
-               indirectElements.firstIndex                                      = 0;
-               indirectElements.reservedMustBeZero                      = 1;
-
-               CElementArray elements(coords.size(), 0);
-               for (size_t i = 0; i < elements.size(); ++i)
-               {
-                       elements[i] = static_cast<GLuint>(i);
-               }
-
-               glGenBuffers(1, &_bufferIndirect);
-               glBindBuffer(GL_DRAW_INDIRECT_BUFFER, _bufferIndirect);
-               glBufferData(GL_DRAW_INDIRECT_BUFFER, sizeof(DrawElementsIndirectCommand), &indirectElements, GL_STATIC_DRAW);
-
-               glGenBuffers(1, &_ebo);
-               glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _ebo);
-               glBufferData(GL_ELEMENT_ARRAY_BUFFER, (GLsizeiptr)(elements.size() * sizeof(elements[0])), &elements[0],
-                                        GL_STATIC_DRAW);
-
-               glDrawElementsIndirect(GL_TRIANGLES, GL_UNSIGNED_INT, 0);
-
-               DIResult result;
-               if (glGetError() == GL_NO_ERROR)
-               {
-                       //No GL error: undefined
-               }
-               else
-               {
-                       result.error() << "Invalid error code returned by a driver";
-               }
-
-               return result.code();
-       }
-
-       virtual long Cleanup()
-       {
-               glDisableVertexAttribArray(0);
-               glUseProgram(0);
-               glDeleteProgram(_program);
-               glDeleteVertexArrays(1, &_vao);
-               glDeleteBuffers(1, &_buffer);
-               glDeleteBuffers(1, &_ebo);
-               glDeleteBuffers(1, &_bufferIndirect);
-               return NO_ERROR;
-       }
-
-private:
-       GLuint _program;
-       GLuint _vao, _buffer, _ebo, _bufferIndirect;
-};
-
-template <typename api>
 struct CNegativeZeroBufferArray : public DrawIndirectBase
 {
        virtual std::string Title()
@@ -8153,16 +7956,6 @@ void DrawIndirectTestsGL40::init()
        addChild(new TestSubcase(m_context, "advanced-primitiveRestart-elements",
                                                         TestSubcase::Create<CPrimitiveRestartElements<test_api::GL> >));
 
-       // reservedMustBeZero field got defined after GL 4.2, so those tests only make sense before 4.2
-       const glu::ContextType& type = m_context.getRenderContext().getType();
-       if (!glu::contextSupports(type, glu::ApiType::core(4, 2)))
-       {
-               addChild(new TestSubcase(m_context, "misc-reservedMustBeZero-arrays",
-                                                                TestSubcase::Create<CNonZeroReservedMustBeZeroArray<test_api::GL> >));
-               addChild(new TestSubcase(m_context, "misc-reservedMustBeZero-elements",
-                                                                TestSubcase::Create<CNonZeroReservedMustBeZeroElements<test_api::GL> >));
-       }
-
        addChild(new TestSubcase(m_context, "negative-noindirect-arrays",
                                                         TestSubcase::Create<CNegativeZeroBufferArray<test_api::GL> >));
        addChild(new TestSubcase(m_context, "negative-noindirect-elements",
@@ -8346,11 +8139,6 @@ void DrawIndirectTestsES31::init()
        addChild(new TestSubcase(m_context, "advanced-primitiveRestart-elements",
                                                         TestSubcase::Create<CPrimitiveRestartElements<test_api::ES3> >));
 
-       addChild(new TestSubcase(m_context, "misc-reservedMustBeZero-arrays",
-                                                        TestSubcase::Create<CNonZeroReservedMustBeZeroArray<test_api::ES3> >));
-       addChild(new TestSubcase(m_context, "misc-reservedMustBeZero-elements",
-                                                        TestSubcase::Create<CNonZeroReservedMustBeZeroElements<test_api::ES3> >));
-
        addChild(new TestSubcase(m_context, "negative-noindirect-arrays",
                                                         TestSubcase::Create<CNegativeZeroBufferArray<test_api::ES3> >));
        addChild(new TestSubcase(m_context, "negative-noindirect-elements",