From cbf7ea0cee1fa94d669faa3d5123cd3b9ef6c9b3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alejandro=20Pi=C3=B1eiro?= Date: Fri, 11 Oct 2019 11:40:16 +0200 Subject: [PATCH] Remove tests that check non-zero values for reservedMustBeZero on all APIs 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 --- .../gl/khronos_mustpass/4.6.0.x/gl40-master.txt | 2 - .../gl/khronos_mustpass/4.6.0.x/gl41-master.txt | 2 - .../khronos_mustpass/4.6.0.x/src/gl40-master.txt | 2 - .../khronos_mustpass/4.6.0.x/src/gl41-master.txt | 2 - .../gl/khronos_mustpass/4.6.1.x/gl40-master.txt | 2 - .../gl/khronos_mustpass/4.6.1.x/gl41-master.txt | 2 - .../khronos_mustpass/3.2.2.x/gles31-khr-master.txt | 2 - .../3.2.2.x/src/gles31-khr-master.txt | 2 - .../khronos_mustpass/3.2.3.x/gles31-khr-master.txt | 2 - .../3.2.3.x/src/gles31-khr-master.txt | 2 - .../khronos_mustpass/3.2.4.x/gles31-khr-master.txt | 2 - .../3.2.4.x/src/gles31-khr-master.txt | 2 - .../khronos_mustpass/3.2.5.x/gles31-khr-master.txt | 2 - .../khronos_mustpass/3.2.6.x/gles31-khr-master.txt | 2 - .../khronos_mustpass/master/gles31-khr-master.txt | 2 - .../modules/gles31/es31cDrawIndirectTests.cpp | 212 --------------------- 16 files changed, 242 deletions(-) diff --git a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl40-master.txt b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl40-master.txt index 97740ac..ecc9f42 100644 --- a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl40-master.txt +++ b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl40-master.txt @@ -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 diff --git a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl41-master.txt b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl41-master.txt index afc8688..75a23de 100644 --- a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl41-master.txt +++ b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl41-master.txt @@ -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 diff --git a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl40-master.txt b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl40-master.txt index 97740ac..ecc9f42 100644 --- a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl40-master.txt +++ b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl40-master.txt @@ -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 diff --git a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl41-master.txt b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl41-master.txt index afc8688..75a23de 100644 --- a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl41-master.txt +++ b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl41-master.txt @@ -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 diff --git a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl40-master.txt b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl40-master.txt index 3a05ff4..519fcf0 100644 --- a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl40-master.txt +++ b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl40-master.txt @@ -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 diff --git a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl41-master.txt b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl41-master.txt index ceea623..8a9c7e0 100644 --- a/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl41-master.txt +++ b/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl41-master.txt @@ -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 diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.2.x/gles31-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.2.x/gles31-khr-master.txt index 03ee838..84b0575 100644 --- a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.2.x/gles31-khr-master.txt +++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.2.x/gles31-khr-master.txt @@ -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 diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.2.x/src/gles31-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.2.x/src/gles31-khr-master.txt index 03ee838..84b0575 100644 --- a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.2.x/src/gles31-khr-master.txt +++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.2.x/src/gles31-khr-master.txt @@ -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 diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.3.x/gles31-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.3.x/gles31-khr-master.txt index 9d96e35..e8ca86e 100644 --- a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.3.x/gles31-khr-master.txt +++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.3.x/gles31-khr-master.txt @@ -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 diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.3.x/src/gles31-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.3.x/src/gles31-khr-master.txt index 9d96e35..e8ca86e 100644 --- a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.3.x/src/gles31-khr-master.txt +++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.3.x/src/gles31-khr-master.txt @@ -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 diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/gles31-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/gles31-khr-master.txt index d9df703..6a23c58 100644 --- a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/gles31-khr-master.txt +++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/gles31-khr-master.txt @@ -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 diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/src/gles31-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/src/gles31-khr-master.txt index d9df703..6a23c58 100644 --- a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/src/gles31-khr-master.txt +++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.4.x/src/gles31-khr-master.txt @@ -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 diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.5.x/gles31-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.5.x/gles31-khr-master.txt index 828baad..930ed0b 100644 --- a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.5.x/gles31-khr-master.txt +++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.5.x/gles31-khr-master.txt @@ -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 diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.6.x/gles31-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.6.x/gles31-khr-master.txt index 828baad..930ed0b 100644 --- a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.6.x/gles31-khr-master.txt +++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.6.x/gles31-khr-master.txt @@ -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 diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles31-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles31-khr-master.txt index 828baad..930ed0b 100644 --- a/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles31-khr-master.txt +++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles31-khr-master.txt @@ -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 diff --git a/external/openglcts/modules/gles31/es31cDrawIndirectTests.cpp b/external/openglcts/modules/gles31/es31cDrawIndirectTests.cpp index 45b9ee1..dee4f70 100644 --- a/external/openglcts/modules/gles31/es31cDrawIndirectTests.cpp +++ b/external/openglcts/modules/gles31/es31cDrawIndirectTests.cpp @@ -5718,203 +5718,6 @@ void CPrimitiveRestartElements::EnablePrimitiveRestart() } template -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(), "", shaders::fshSimple(), 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(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 -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(), "", shaders::fshSimple(), 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(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(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 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 >)); - // 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 >)); - addChild(new TestSubcase(m_context, "misc-reservedMustBeZero-elements", - TestSubcase::Create >)); - } - addChild(new TestSubcase(m_context, "negative-noindirect-arrays", TestSubcase::Create >)); 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 >)); - addChild(new TestSubcase(m_context, "misc-reservedMustBeZero-arrays", - TestSubcase::Create >)); - addChild(new TestSubcase(m_context, "misc-reservedMustBeZero-elements", - TestSubcase::Create >)); - addChild(new TestSubcase(m_context, "negative-noindirect-arrays", TestSubcase::Create >)); addChild(new TestSubcase(m_context, "negative-noindirect-elements", -- 2.7.4