[Piglit] [PATCH 3/7] arb_uniform_buffer_object: set KHR_no_error compatibility

Samuel Pitoiset samuel.pitoiset at gmail.com
Sat May 20 15:32:53 UTC 2017


As discussed offline, I missed the HAS_ERRORS bits.

On 05/19/2017 11:18 AM, Samuel Pitoiset wrote:
> Few comments below, you missed all negative-* tests.
> 
> With those fixed, patch is:
> 
> Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> 
> On 05/18/2017 04:00 AM, Timothy Arceri wrote:
>> ---
>>   .../bindbuffer-general-point.c                     |  1 +
>>   .../arb_uniform_buffer_object/buffer-targets.c     |  1 +
>>   .../spec/arb_uniform_buffer_object/bufferstorage.c |  1 +
>>   .../spec/arb_uniform_buffer_object/deletebuffers.c |  1 +
>>   tests/spec/arb_uniform_buffer_object/dlist.c       |  1 +
>>   ...tactiveuniformblockiv-uniform-block-data-size.c |  1 +
>>   .../getactiveuniformblockname.c                    | 37 ++++++++-------
>>   .../getactiveuniformname.c                         | 37 ++++++++-------
>>   .../getactiveuniformsiv-uniform-array-stride.c     |  1 +
>>   .../getactiveuniformsiv-uniform-block-index.c      |  1 +
>>   .../getactiveuniformsiv-uniform-matrix-stride.c    |  1 +
>>   .../getactiveuniformsiv-uniform-type.c             |  1 +
>>   .../spec/arb_uniform_buffer_object/getintegeri_v.c | 11 +++--
>>   .../spec/arb_uniform_buffer_object/getprogramiv.c  |  1 +
>>   .../getuniformblockindex.c                         | 17 ++++---
>>   .../arb_uniform_buffer_object/getuniformindices.c  | 54 
>> ++++++++++++----------
>>   .../arb_uniform_buffer_object/getuniformlocation.c |  1 +
>>   .../layout-std140-base-size-and-alignment.c        |  1 +
>>   .../link-mismatch-blocks.c                         |  1 +
>>   tests/spec/arb_uniform_buffer_object/maxblocks.c   |  1 +
>>   .../maxuniformblocksize.c                          |  1 +
>>   tests/spec/arb_uniform_buffer_object/minmax.c      |  1 +
>>   .../negative-bindbuffer-index.c                    |  1 +
>>   .../negative-bindbuffer-target.c                   |  1 +
>>   .../negative-bindbufferrange-range.c               |  1 +
>>   .../negative-getactiveuniformblockiv.c             |  1 +
>>   .../negative-getactiveuniformsiv.c                 |  1 +
>>   .../referenced-by-shader.c                         |  1 +
>>   .../arb_uniform_buffer_object/rendering-array.c    |  1 +
>>   .../spec/arb_uniform_buffer_object/rendering-dsa.c |  1 +
>>   tests/spec/arb_uniform_buffer_object/rendering.c   |  1 +
>>   tests/spec/arb_uniform_buffer_object/row-major.c   |  1 +
>>   .../uniformblockbinding.c                          | 17 ++++---
>>   33 files changed, 124 insertions(+), 76 deletions(-)
>>
>> diff --git 
>> a/tests/spec/arb_uniform_buffer_object/bindbuffer-general-point.c 
>> b/tests/spec/arb_uniform_buffer_object/bindbuffer-general-point.c
>> index c9e81c2..5d8498b 100644
>> --- a/tests/spec/arb_uniform_buffer_object/bindbuffer-general-point.c
>> +++ b/tests/spec/arb_uniform_buffer_object/bindbuffer-general-point.c
>> @@ -26,20 +26,21 @@
>>    * Tests that the glBindBuffer* entrypoints also bind to the general
>>    * binding point.
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_RGBA | 
>> PIGLIT_GL_VISUAL_DOUBLE;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   void
>>   piglit_init(int argc, char **argv)
>>   {
>>       bool pass = true;
>>       GLuint bo[2];
>>       GLint binding;
>> diff --git a/tests/spec/arb_uniform_buffer_object/buffer-targets.c 
>> b/tests/spec/arb_uniform_buffer_object/buffer-targets.c
>> index 28924bc..beb2055 100644
>> --- a/tests/spec/arb_uniform_buffer_object/buffer-targets.c
>> +++ b/tests/spec/arb_uniform_buffer_object/buffer-targets.c
>> @@ -34,20 +34,21 @@
>>    *
>>    *          UNIFORM_BUFFER"
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_RGBA | 
>> PIGLIT_GL_VISUAL_DOUBLE;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   void
>>   piglit_init(int argc, char **argv)
>>   {
>>       bool pass = true;
>>       GLuint bo;
>>       uint8_t in_data[1] = {0xaa};
>>       uint8_t out_data[1] = {0xd0};
>> diff --git a/tests/spec/arb_uniform_buffer_object/bufferstorage.c 
>> b/tests/spec/arb_uniform_buffer_object/bufferstorage.c
>> index 52e20e0..e3e1383 100644
>> --- a/tests/spec/arb_uniform_buffer_object/bufferstorage.c
>> +++ b/tests/spec/arb_uniform_buffer_object/bufferstorage.c
>> @@ -28,20 +28,21 @@
>>    * from UBOs. Same as rendering.c, except that the UBOs are
>>    * persistently mapped.
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 20;
>>       config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | 
>> PIGLIT_GL_VISUAL_RGBA;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   static const char vert_shader_text[] =
>>       "#extension GL_ARB_uniform_buffer_object : require\n"
>>       "\n"
>>       "layout(std140) uniform;\n"
>>       "uniform ub_pos_size { vec2 pos; float size; };\n"
>>       "uniform ub_rot {float rotation; };\n"
>>       "\n"
>> diff --git a/tests/spec/arb_uniform_buffer_object/deletebuffers.c 
>> b/tests/spec/arb_uniform_buffer_object/deletebuffers.c
>> index 8dc249a..4cb7cce 100644
>> --- a/tests/spec/arb_uniform_buffer_object/deletebuffers.c
>> +++ b/tests/spec/arb_uniform_buffer_object/deletebuffers.c
>> @@ -27,20 +27,21 @@
>>    * glBindBufferBase()/glBindBufferRange() bindings along with the
>>    * usual glBindBuffer() binding.
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_RGBA | 
>> PIGLIT_GL_VISUAL_DOUBLE;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   void
>>   piglit_init(int argc, char **argv)
>>   {
>>       bool pass = true;
>>       GLuint bo[2];
>>       GLint binding;
>> diff --git a/tests/spec/arb_uniform_buffer_object/dlist.c 
>> b/tests/spec/arb_uniform_buffer_object/dlist.c
>> index eb93d11..2ee61e6 100644
>> --- a/tests/spec/arb_uniform_buffer_object/dlist.c
>> +++ b/tests/spec/arb_uniform_buffer_object/dlist.c
>> @@ -52,20 +52,21 @@
>>    *      introduced by OpenGL 3.0, and those routines are already
>>    *      excluded, there's no additions to the display list exclusion
>>    *      list needed."
>>    */
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | 
>> PIGLIT_GL_VISUAL_RGBA;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   const char *source =
>>       "#extension GL_ARB_uniform_buffer_object : enable\n"
>>       "uniform A { float a; };\n"
>>       "uniform B { float b; };\n"
>>       "void main() {\n"
>>       "    gl_FragColor = vec4(a + b);\n"
>>       "}\n";
>> diff --git 
>> a/tests/spec/arb_uniform_buffer_object/getactiveuniformblockiv-uniform-block-data-size.c 
>> b/tests/spec/arb_uniform_buffer_object/getactiveuniformblockiv-uniform-block-data-size.c 
>>
>> index a728040..bd0fbce 100644
>> --- 
>> a/tests/spec/arb_uniform_buffer_object/getactiveuniformblockiv-uniform-block-data-size.c 
>>
>> +++ 
>> b/tests/spec/arb_uniform_buffer_object/getactiveuniformblockiv-uniform-block-data-size.c 
>>
>> @@ -35,20 +35,21 @@
>>    */
>>   #include "piglit-util-gl.h"
>>   #include "uniform-types.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.supports_gl_core_version = 31;
>>       config.window_visual = PIGLIT_GL_VISUAL_RGBA | 
>> PIGLIT_GL_VISUAL_DOUBLE;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   static int
>>   align(int v, int a)
>>   {
>>       return (v + a - 1) & ~(a - 1);
>>   }
>>   static bool
>> diff --git 
>> a/tests/spec/arb_uniform_buffer_object/getactiveuniformblockname.c 
>> b/tests/spec/arb_uniform_buffer_object/getactiveuniformblockname.c
>> index a967ff2..4f98528 100644
>> --- a/tests/spec/arb_uniform_buffer_object/getactiveuniformblockname.c
>> +++ b/tests/spec/arb_uniform_buffer_object/getactiveuniformblockname.c
>> @@ -63,20 +63,21 @@
>>    *      UniformBlockBinding if <uniformBlockIndex> is greater than or
>>    *      equal to ACTIVE_UNIFORM_BLOCKS."
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_RGBA | 
>> PIGLIT_GL_VISUAL_DOUBLE;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   void
>>   piglit_init(int argc, char **argv)
>>   {
>>       int i;
>>       GLuint prog;
>>       const char *source =
>>           "#extension GL_ARB_uniform_buffer_object : enable\n"
>> @@ -169,37 +170,39 @@ piglit_init(int argc, char **argv)
>>                           NULL, name);
>>           if (name[written_strlen] != fill_char) {
>>               fprintf(stderr, "glGetActiveUniformName overflowed: "
>>                   "name[%d] = 0x%02x instead of 0x%02x\n",
>>                   written_strlen, name[written_strlen],
>>                   fill_char);
>>               pass = false;
>>           }
>>       }
>> -    no_write = fill_char;
>> -    glGetActiveUniformBlockName(0xd0d0, 0, 1, NULL, &no_write);
>> -    pass = piglit_check_gl_error(GL_INVALID_VALUE) && pass;
>> -    if (no_write != fill_char)
>> -        pass = false;
>> -
>> -    no_write = fill_char;
>> -    glGetActiveUniformBlockName(prog, 0, -1, NULL, &no_write);
>> -    pass = piglit_check_gl_error(GL_INVALID_VALUE) && pass;
>> -    if (no_write != fill_char)
>> -        pass = false;
>> -
>> -    no_write = fill_char;
>> -    glGetActiveUniformBlockName(prog, blocks, 1, NULL, &no_write);
>> -    pass = piglit_check_gl_error(GL_INVALID_VALUE) && pass;
>> -    if (no_write != fill_char)
>> -        pass = false;
>> +    if (!piglit_khr_no_error) {
>> +        no_write = fill_char;
>> +        glGetActiveUniformBlockName(0xd0d0, 0, 1, NULL, &no_write);
>> +        pass = piglit_check_gl_error(GL_INVALID_VALUE) && pass;
>> +        if (no_write != fill_char)
>> +            pass = false;
>> +
>> +        no_write = fill_char;
>> +        glGetActiveUniformBlockName(prog, 0, -1, NULL, &no_write);
>> +        pass = piglit_check_gl_error(GL_INVALID_VALUE) && pass;
>> +        if (no_write != fill_char)
>> +            pass = false;
>> +
>> +        no_write = fill_char;
>> +        glGetActiveUniformBlockName(prog, blocks, 1, NULL, &no_write);
>> +        pass = piglit_check_gl_error(GL_INVALID_VALUE) && pass;
>> +        if (no_write != fill_char)
>> +            pass = false;
>> +    }
>>       glDeleteProgram(prog);
>>       piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL);
>>   }
>>   enum piglit_result piglit_display(void)
>>   {
>>       /* UNREACHED */
>>       return PIGLIT_FAIL;
>> diff --git 
>> a/tests/spec/arb_uniform_buffer_object/getactiveuniformname.c 
>> b/tests/spec/arb_uniform_buffer_object/getactiveuniformname.c
>> index 955ca96..a83f61a 100644
>> --- a/tests/spec/arb_uniform_buffer_object/getactiveuniformname.c
>> +++ b/tests/spec/arb_uniform_buffer_object/getactiveuniformname.c
>> @@ -63,20 +63,21 @@
>>    *      The error INVALID_VALUE is generated by GetActiveUniformName if
>>    *      <uniformIndex> is greater than or equal to ACTIVE_UNIFORMS.
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_RGBA | 
>> PIGLIT_GL_VISUAL_DOUBLE;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   void
>>   piglit_init(int argc, char **argv)
>>   {
>>       unsigned int i;
>>       GLuint prog;
>>       const char *source =
>>           "#extension GL_ARB_uniform_buffer_object : enable\n"
>> @@ -168,37 +169,39 @@ piglit_init(int argc, char **argv)
>>           glGetActiveUniformName(prog, i, written_strlen, NULL, name);
>>           if (name[written_strlen] != fill_char) {
>>               fprintf(stderr, "glGetActiveUniformName overflowed: "
>>                   "name[%d] = 0x%02x instead of 0x%02x\n",
>>                   written_strlen, name[written_strlen],
>>                   fill_char);
>>               pass = false;
>>           }
>>       }
>> -    no_write = fill_char;
>> -    glGetActiveUniformName(0xd0d0, 0, 1, NULL, &no_write);
>> -    pass = piglit_check_gl_error(GL_INVALID_VALUE) && pass;
>> -    if (no_write != fill_char)
>> -        pass = false;
>> -
>> -    no_write = fill_char;
>> -    glGetActiveUniformName(prog, 0, -1, NULL, &no_write);
>> -    pass = piglit_check_gl_error(GL_INVALID_VALUE) && pass;
>> -    if (no_write != fill_char)
>> -        pass = false;
>> -
>> -    no_write = fill_char;
>> -    glGetActiveUniformName(prog, uniforms, 1, NULL, &no_write);
>> -    pass = piglit_check_gl_error(GL_INVALID_VALUE) && pass;
>> -    if (no_write != fill_char)
>> -        pass = false;
>> +    if (!piglit_khr_no_error) {
>> +        no_write = fill_char;
>> +        glGetActiveUniformName(0xd0d0, 0, 1, NULL, &no_write);
>> +        pass = piglit_check_gl_error(GL_INVALID_VALUE) && pass;
>> +        if (no_write != fill_char)
>> +            pass = false;
>> +
>> +        no_write = fill_char;
>> +        glGetActiveUniformName(prog, 0, -1, NULL, &no_write);
>> +        pass = piglit_check_gl_error(GL_INVALID_VALUE) && pass;
>> +        if (no_write != fill_char)
>> +            pass = false;
>> +
>> +        no_write = fill_char;
>> +        glGetActiveUniformName(prog, uniforms, 1, NULL, &no_write);
>> +        pass = piglit_check_gl_error(GL_INVALID_VALUE) && pass;
>> +        if (no_write != fill_char)
>> +            pass = false;
>> +    }
>>       glDeleteProgram(prog);
>>       piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL);
>>   }
>>   enum piglit_result piglit_display(void)
>>   {
>>       /* UNREACHED */
>>       return PIGLIT_FAIL;
>> diff --git 
>> a/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-array-stride.c 
>> b/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-array-stride.c 
>>
>> index d7641e0..cce8f26 100644
>> --- 
>> a/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-array-stride.c 
>>
>> +++ 
>> b/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-array-stride.c 
>>
>> @@ -26,20 +26,21 @@
>>    * Tests that (std140 layout) uniform array strides are reported
>>    * correctly through the API.
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | 
>> PIGLIT_GL_VISUAL_RGBA;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   static const char fs_source[] =
>>       "#extension GL_ARB_uniform_buffer_object : require\n"
>>       "\n"
>>       "layout(std140) uniform ub {\n"
>>       "    vec4 a;\n"
>>       "    vec4 b[2];\n"
>>       "    float c[2];\n"
>> diff --git 
>> a/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-block-index.c 
>> b/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-block-index.c 
>>
>> index 76283d0..a0dd549 100644
>> --- 
>> a/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-block-index.c 
>>
>> +++ 
>> b/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-block-index.c 
>>
>> @@ -28,20 +28,21 @@
>>    * glGetUniformBlockIndex.()
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | 
>> PIGLIT_GL_VISUAL_RGBA;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   static const char vs_source[] =
>>       "#extension GL_ARB_uniform_buffer_object : require\n"
>>       "\n"
>>       "uniform ub_a { vec4 a; };\n"
>>       "uniform ub_b { vec4 b; };\n"
>>       "\n"
>>       "void main()\n"
>> diff --git 
>> a/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-matrix-stride.c 
>> b/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-matrix-stride.c 
>>
>> index 41a5e47..e7d8df8 100644
>> --- 
>> a/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-matrix-stride.c 
>>
>> +++ 
>> b/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-matrix-stride.c 
>>
>> @@ -30,20 +30,21 @@
>>    * get rounded up to the size of a vec4, MATRIX_STRIDE is either 16 or
>>    * a non-matrix value.
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | 
>> PIGLIT_GL_VISUAL_RGBA;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   static const char fs_source[] =
>>       "#extension GL_ARB_uniform_buffer_object : require\n"
>>       "\n"
>>       "layout(std140) uniform ub {\n"
>>       "    vec4 v4;\n"
>>       "    mat4 m4;\n"
>>       "    mat3 m3;\n"
>> diff --git 
>> a/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-type.c 
>> b/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-type.c
>> index 9034446..a97dab4 100644
>> --- 
>> a/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-type.c
>> +++ 
>> b/tests/spec/arb_uniform_buffer_object/getactiveuniformsiv-uniform-type.c
>> @@ -28,20 +28,21 @@
>>    */
>>   #include "piglit-util-gl.h"
>>   #include "uniform-types.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.supports_gl_core_version = 31;
>>       config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | 
>> PIGLIT_GL_VISUAL_RGBA;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   static bool
>>   test_format(const struct uniform_type *type)
>>   {
>>       /* Using 140 to get unsigned ints. */
>>       const char *fs_template =
>>           "#version 140\n"
>>           "layout(std140) uniform ubo {\n"
>> diff --git a/tests/spec/arb_uniform_buffer_object/getintegeri_v.c 
>> b/tests/spec/arb_uniform_buffer_object/getintegeri_v.c
>> index 9ed5fcc..a91f3ea 100644
>> --- a/tests/spec/arb_uniform_buffer_object/getintegeri_v.c
>> +++ b/tests/spec/arb_uniform_buffer_object/getintegeri_v.c
>> @@ -34,20 +34,21 @@
>>    *      buffer object was bound, zero is returned. If no buffer object
>>    *      is bound to <index>, -1 is returned."
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_RGBA | 
>> PIGLIT_GL_VISUAL_DOUBLE;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   static bool pass = true;
>>   static void
>>   test_index(int line, GLenum e, int index, int expected)
>>   {
>>       GLint val;
>> @@ -113,24 +114,26 @@ piglit_init(int argc, char **argv)
>>        * spec ("The error INVALID_OPERATION is generated by
>>        * BindBufferRange and BindBufferBase if <buffer> is not the
>>        * name of a valid buffer object.", and glIsBuffer returns
>>        * false for 0), but it seems obviously parallel to the rest
>>        * of the GL API, including glBindBuffer(), to allow it
>>        */
>>       glBindBufferBase(GL_UNIFORM_BUFFER, 0, 0);
>>       test_range(__LINE__, 0, 0, 0, 0);
>>       /* Test the error condition. */
>> -    glGetIntegerv(GL_MAX_UNIFORM_BUFFER_BINDINGS, &max_bindings);
>> -    glGetIntegeri_v(GL_UNIFORM_BUFFER_BINDING, max_bindings, &junk);
>> -    if (!piglit_check_gl_error(GL_INVALID_VALUE))
>> -        pass = false;
>> +    if (!piglit_khr_no_error) {
>> +        glGetIntegerv(GL_MAX_UNIFORM_BUFFER_BINDINGS, &max_bindings);
>> +        glGetIntegeri_v(GL_UNIFORM_BUFFER_BINDING, max_bindings, &junk);
>> +        if (!piglit_check_gl_error(GL_INVALID_VALUE))
>> +            pass = false;
>> +    }
>>       piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL);
>>   }
>>   enum piglit_result piglit_display(void)
>>   {
>>       /* UNREACHED */
>>       return PIGLIT_FAIL;
>>   }
>> diff --git a/tests/spec/arb_uniform_buffer_object/getprogramiv.c 
>> b/tests/spec/arb_uniform_buffer_object/getprogramiv.c
>> index e032cbf..25fa425 100644
>> --- a/tests/spec/arb_uniform_buffer_object/getprogramiv.c
>> +++ b/tests/spec/arb_uniform_buffer_object/getprogramiv.c
>> @@ -32,20 +32,21 @@
>>    *      of the longest active uniform block name, including the null
>>    *      terminator, is returned."
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_RGBA | 
>> PIGLIT_GL_VISUAL_DOUBLE;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   struct {
>>       const char *source;
>>       int blocks;
>>       int namelen;
>>   } tests[] = {
>>       {
>>           "#extension GL_ARB_uniform_buffer_object : enable\n"
>> diff --git 
>> a/tests/spec/arb_uniform_buffer_object/getuniformblockindex.c 
>> b/tests/spec/arb_uniform_buffer_object/getuniformblockindex.c
>> index 0dafc53..989ad51 100644
>> --- a/tests/spec/arb_uniform_buffer_object/getuniformblockindex.c
>> +++ b/tests/spec/arb_uniform_buffer_object/getuniformblockindex.c
>> @@ -28,20 +28,21 @@
>>    * for active blocks.
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | 
>> PIGLIT_GL_VISUAL_RGBA;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   static GLuint prog;
>>   static const char frag_shader_text[] =
>>       "#extension GL_ARB_uniform_buffer_object : require\n"
>>       "\n"
>>       "uniform ub_a { vec4 a; };\n"
>>       "uniform ub_b { vec4 b; };\n"
>> @@ -107,27 +108,29 @@ piglit_init(int argc, char **argv)
>>       /* From the GL_ARB_uniform_buffer_object spec:
>>        *
>>        *     "The error INVALID_VALUE is generated by
>>        *      GetUniformIndices, GetActiveUniformsiv,
>>        *      GetActiveUniformName, GetUniformBlockIndex,
>>        *      GetActiveUniformBlockiv, GetActiveUniformBlockName,
>>        *      and UniformBlockBinding if <program> is not a value
>>        *      generated by GL.
>>        */
>> -    index = glGetUniformBlockIndex(0xd0d0, "a");
>> -    if (!piglit_check_gl_error(GL_INVALID_VALUE)) {
>> -        pass = false;
>> -    } else if (index != GL_INVALID_INDEX) {
>> -        printf("Bad program uniform index: 0x%08x\n", index);
>> -        printf("  Expected 0x%08x\n", GL_INVALID_INDEX);
>> -        pass = false;
>> +    if (!piglit_khr_no_error) {
>> +        index = glGetUniformBlockIndex(0xd0d0, "a");
>> +        if (!piglit_check_gl_error(GL_INVALID_VALUE)) {
>> +            pass = false;
>> +        } else if (index != GL_INVALID_INDEX) {
>> +            printf("Bad program uniform index: 0x%08x\n", index);
>> +            printf("  Expected 0x%08x\n", GL_INVALID_INDEX);
>> +            pass = false;
>> +        }
>>       }
>>       piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL);
>>   }
>>   enum piglit_result piglit_display(void)
>>   {
>>       /* UNREACHED */
>>       return PIGLIT_FAIL;
>>   }
>> diff --git a/tests/spec/arb_uniform_buffer_object/getuniformindices.c 
>> b/tests/spec/arb_uniform_buffer_object/getuniformindices.c
>> index 43fbb2c..32442bb 100644
>> --- a/tests/spec/arb_uniform_buffer_object/getuniformindices.c
>> +++ b/tests/spec/arb_uniform_buffer_object/getuniformindices.c
>> @@ -27,20 +27,21 @@
>>    * invalid uniform names, and consecutive indices starting from 0.
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | 
>> PIGLIT_GL_VISUAL_RGBA;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   static GLuint prog;
>>   static const char frag_shader_text[] =
>>       "#extension GL_ARB_uniform_buffer_object : require\n"
>>       "\n"
>>       "uniform ub_a { vec4 a; vec4 b; };\n"
>>       "uniform vec4 c;\n"
>> @@ -75,65 +76,70 @@ piglit_init(int argc, char **argv)
>>        *
>>        *      ...
>>        *
>>        *      The error INVALID_VALUE is generated by 
>> GetUniformIndices and
>>        *      GetActiveUniformsiv if <uniformCount> is less than zero.
>>        *
>>        *      ...
>>        *
>>        *     "If an error occurs, nothing is written to 
>> <uniformIndices>."
>>        */
>> -    index = save_index;
>> -    glGetUniformIndices(prog, -1, &one_uniform, &index);
>> -    if (!piglit_check_gl_error(GL_INVALID_VALUE)) {
>> -        pass = false;
>> -    } else if (index != save_index) {
>> -        printf("Bad program uniform index: 0x%08x\n", index);
>> -        printf("  Expected 0x%08x\n", save_index);
>> -        pass = false;
>> -    }
>> +    if (!piglit_khr_no_error) {
>> +        index = save_index;
>> +        glGetUniformIndices(prog, -1, &one_uniform, &index);
>> +        if (!piglit_check_gl_error(GL_INVALID_VALUE)) {
>> +            pass = false;
>> +        } else if (index != save_index) {
>> +            printf("Bad program uniform index: 0x%08x\n", index);
>> +            printf("  Expected 0x%08x\n", save_index);
>> +            pass = false;
>> +        }
>> -    index = save_index;
>> -    glGetUniformIndices(0xd0d0, 1, &one_uniform, &index);
>> -    if (!piglit_check_gl_error(GL_INVALID_VALUE)) {
>> -        pass = false;
>> -    } else if (index != save_index) {
>> -        printf("Bad program uniform index: 0x%08x\n", index);
>> -        printf("  Expected 0x%08x\n", save_index);
>> -        pass = false;
>> +        index = save_index;
>> +        glGetUniformIndices(0xd0d0, 1, &one_uniform, &index);
>> +        if (!piglit_check_gl_error(GL_INVALID_VALUE)) {
>> +            pass = false;
>> +        } else if (index != save_index) {
>> +            printf("Bad program uniform index: 0x%08x\n", index);
>> +            printf("  Expected 0x%08x\n", save_index);
>> +            pass = false;
>> +        }
>>       }
>>       glGetUniformIndices(prog, 3, uniform_names, indices);
>>       if (!piglit_check_gl_error(0))
>>           piglit_report_result(PIGLIT_FAIL);
>>       for (i = 0; i < 3; i++) {
>>           printf("%s: index %d\n", uniform_names[i], indices[i]);
>>           if (indices[i] > 2 || found_index[indices[i]]) {
>>               printf("Expected consecutive numbers starting from 0\n");
>>               pass = false;
>>           }
>>           found_index[indices[i]] = true;
>>       }
>>       /*     "If a string in <uniformNames> is not the name of an
>>        *      active uniform, the value INVALID_INDEX will be
>>        *      written to the corresponding element of
>>        *      <uniformIndices>."
>>        */
>> -    glGetUniformIndices(prog, 1, &bad_uniform, &index);
>> -    if (!piglit_check_gl_error(0)) {
>> -        pass = false;
>> -    } else if (index != GL_INVALID_INDEX) {
>> -        printf("Bad uniform index for %s: 0x%08x\n", bad_uniform, 
>> index);
>> -        printf("  Expected 0x%08x\n", GL_INVALID_INDEX);
>> -        pass = false;
>> +    if (!piglit_khr_no_error) {
>> +        glGetUniformIndices(prog, 1, &bad_uniform, &index);
>> +        if (!piglit_check_gl_error(0)) {
>> +            pass = false;
>> +        } else if (index != GL_INVALID_INDEX) {
>> +            printf("Bad uniform index for %s: 0x%08x\n",
>> +                   bad_uniform, index);
>> +            printf("  Expected 0x%08x\n", GL_INVALID_INDEX);
>> +            pass = false;
>> +        }
>>       }
>>       piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL);
>>   }
>>   enum piglit_result piglit_display(void)
>>   {
>>       /* UNREACHED */
>>       return PIGLIT_FAIL;
>>   }
>> diff --git a/tests/spec/arb_uniform_buffer_object/getuniformlocation.c 
>> b/tests/spec/arb_uniform_buffer_object/getuniformlocation.c
>> index 81b5c89..6a90dee 100644
>> --- a/tests/spec/arb_uniform_buffer_object/getuniformlocation.c
>> +++ b/tests/spec/arb_uniform_buffer_object/getuniformlocation.c
>> @@ -37,20 +37,21 @@
>>    *      <name> is associated with a named uniform block..."
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | 
>> PIGLIT_GL_VISUAL_RGBA;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   static GLuint prog;
>>   static const char fs_source[] =
>>       "#extension GL_ARB_uniform_buffer_object : require\n"
>>       "\n"
>>       "uniform ub_a { vec4 a; };\n"
>>       "uniform vec4 b;\n"
>> diff --git 
>> a/tests/spec/arb_uniform_buffer_object/layout-std140-base-size-and-alignment.c 
>> b/tests/spec/arb_uniform_buffer_object/layout-std140-base-size-and-alignment.c 
>>
>> index 8fdd624..e534900 100644
>> --- 
>> a/tests/spec/arb_uniform_buffer_object/layout-std140-base-size-and-alignment.c 
>>
>> +++ 
>> b/tests/spec/arb_uniform_buffer_object/layout-std140-base-size-and-alignment.c 
>>
>> @@ -29,20 +29,21 @@
>>    */
>>   #include "piglit-util-gl.h"
>>   #include "uniform-types.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.supports_gl_core_version = 31;
>>       config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | 
>> PIGLIT_GL_VISUAL_RGBA;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   static int
>>   align(int v, int a)
>>   {
>>       return (v + a - 1) & ~(a - 1);
>>   }
>>   static bool
>> diff --git 
>> a/tests/spec/arb_uniform_buffer_object/link-mismatch-blocks.c 
>> b/tests/spec/arb_uniform_buffer_object/link-mismatch-blocks.c
>> index 0b03fb9..e50216f 100644
>> --- a/tests/spec/arb_uniform_buffer_object/link-mismatch-blocks.c
>> +++ b/tests/spec/arb_uniform_buffer_object/link-mismatch-blocks.c
>> @@ -33,20 +33,21 @@
>>    *      as well as having the same member-wise layout qualification
>>    *      (see next section). Any mismatch will generate a link error. "
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_RGB | 
>> PIGLIT_GL_VISUAL_DOUBLE;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   struct test {
>>       const char *a_header;
>>       const char *a_body;
>>       const char *b_header;
>>       const char *b_body;
>>   };
>> diff --git a/tests/spec/arb_uniform_buffer_object/maxblocks.c 
>> b/tests/spec/arb_uniform_buffer_object/maxblocks.c
>> index abe07cf..6417610 100644
>> --- a/tests/spec/arb_uniform_buffer_object/maxblocks.c
>> +++ b/tests/spec/arb_uniform_buffer_object/maxblocks.c
>> @@ -45,20 +45,21 @@
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.window_width = 800;
>>       config.window_height = 100;
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_RGBA | 
>> PIGLIT_GL_VISUAL_DOUBLE;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   static char *
>>   get_shader(GLenum target, const char *block_prefix, int blocks)
>>   {
>>       char *shader = NULL;
>>       const char *vs_source =
>>           "#extension GL_ARB_uniform_buffer_object : enable\n"
>>           "\n"
>> diff --git 
>> a/tests/spec/arb_uniform_buffer_object/maxuniformblocksize.c 
>> b/tests/spec/arb_uniform_buffer_object/maxuniformblocksize.c
>> index ea2d7cd..ce7126f 100644
>> --- a/tests/spec/arb_uniform_buffer_object/maxuniformblocksize.c
>> +++ b/tests/spec/arb_uniform_buffer_object/maxuniformblocksize.c
>> @@ -32,20 +32,21 @@
>>    * "fsexceed" arguments.
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_RGBA | 
>> PIGLIT_GL_VISUAL_DOUBLE;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   static enum {
>>       VS,
>>       VS_EXCEED,
>>       FS,
>>       FS_EXCEED,
>>   } mode;
>> diff --git a/tests/spec/arb_uniform_buffer_object/minmax.c 
>> b/tests/spec/arb_uniform_buffer_object/minmax.c
>> index 6d70efa..311a4a8 100644
>> --- a/tests/spec/arb_uniform_buffer_object/minmax.c
>> +++ b/tests/spec/arb_uniform_buffer_object/minmax.c
>> @@ -27,20 +27,21 @@
>>    */
>>   #include "piglit-util-gl.h"
>>   #include "minmax-test.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | 
>> PIGLIT_GL_VISUAL_RGBA;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   enum piglit_result
>>   piglit_display(void)
>>   {
>>       /* UNREACHED */
>>       return PIGLIT_FAIL;
>>   }
>> diff --git 
>> a/tests/spec/arb_uniform_buffer_object/negative-bindbuffer-index.c 
>> b/tests/spec/arb_uniform_buffer_object/negative-bindbuffer-index.c
>> index f387b8c..2c31df8 100644
>> --- a/tests/spec/arb_uniform_buffer_object/negative-bindbuffer-index.c
>> +++ b/tests/spec/arb_uniform_buffer_object/negative-bindbuffer-index.c
> 
> You missed two piglit_check_gl_error() calls.
> 
>> @@ -26,20 +26,21 @@
>>    * Tests for errors when binding higher than the maximum uniform
>>    * buffer binding point.
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_RGBA | 
>> PIGLIT_GL_VISUAL_DOUBLE;
>> +    config.khr_no_error_support = PIGLIT_HAS_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   void
>>   piglit_init(int argc, char **argv)
>>   {
>>       bool pass = true;
>>       GLint max_bindings;
>>       GLuint bo;
>> diff --git 
>> a/tests/spec/arb_uniform_buffer_object/negative-bindbuffer-target.c 
>> b/tests/spec/arb_uniform_buffer_object/negative-bindbuffer-target.c
>> index 17561e1..2355bbe 100644
>> --- a/tests/spec/arb_uniform_buffer_object/negative-bindbuffer-target.c
>> +++ b/tests/spec/arb_uniform_buffer_object/negative-bindbuffer-target.c
> 
> Same.
> 
>> @@ -25,20 +25,21 @@
>>    *
>>    * Tests for errors when binding with a bad target.
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_RGBA | 
>> PIGLIT_GL_VISUAL_DOUBLE;
>> +    config.khr_no_error_support = PIGLIT_HAS_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   void
>>   piglit_init(int argc, char **argv)
>>   {
>>       /* We don't need to check extensions for these targets, since
>>        * we're expecting INVALID_ENUM anyway.
>>        */
>>       GLenum targets[] = {
>> diff --git 
>> a/tests/spec/arb_uniform_buffer_object/negative-bindbufferrange-range.c b/tests/spec/arb_uniform_buffer_object/negative-bindbufferrange-range.c 
>>
>> index 9afca48..72ab623 100644
>> --- 
>> a/tests/spec/arb_uniform_buffer_object/negative-bindbufferrange-range.c
>> +++ 
>> b/tests/spec/arb_uniform_buffer_object/negative-bindbufferrange-range.c
> 
> Same.
> 
>> @@ -38,20 +38,21 @@
>>    *      equivalent to calling BindBufferRange with <offset> zero and
>>    *      <size> equal to the size of <buffer>."
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_RGBA | 
>> PIGLIT_GL_VISUAL_DOUBLE;
>> +    config.khr_no_error_support = PIGLIT_HAS_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   void
>>   piglit_init(int argc, char **argv)
>>   {
>>       bool pass = true;
>>       GLint alignment;
>>       GLuint bo;
>>       int size = 1024;
>> diff --git 
>> a/tests/spec/arb_uniform_buffer_object/negative-getactiveuniformblockiv.c 
>> b/tests/spec/arb_uniform_buffer_object/negative-getactiveuniformblockiv.c
>> index 61d92aa..14c1629 100644
>> --- 
>> a/tests/spec/arb_uniform_buffer_object/negative-getactiveuniformblockiv.c
>> +++ 
>> b/tests/spec/arb_uniform_buffer_object/negative-getactiveuniformblockiv.c
> 
> Same.
> 
>> @@ -46,20 +46,21 @@
>>    *      values."
>>    */
>>   #include "piglit-util-gl.h"
>>   #include "uniform-types.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_RGBA | 
>> PIGLIT_GL_VISUAL_DOUBLE;
>> +    config.khr_no_error_support = PIGLIT_HAS_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   void
>>   piglit_init(int argc, char **argv)
>>   {
>>       bool pass = true;
>>       const char *fs_source =
>>           "#extension GL_ARB_uniform_buffer_object : require\n"
>>           "uniform ubo {\n"
>> diff --git 
>> a/tests/spec/arb_uniform_buffer_object/negative-getactiveuniformsiv.c 
>> b/tests/spec/arb_uniform_buffer_object/negative-getactiveuniformsiv.c
>> index 66fde4c..117adcf 100644
>> --- a/tests/spec/arb_uniform_buffer_object/negative-getactiveuniformsiv.c
>> +++ b/tests/spec/arb_uniform_buffer_object/negative-getactiveuniformsiv.c
> 
> Same.
> 
>> @@ -50,20 +50,21 @@
>>   #include "piglit-util-gl.h"
>>   #include "uniform-types.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_width = 10;
>>       config.window_height = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_RGBA | 
>> PIGLIT_GL_VISUAL_DOUBLE;
>> +    config.khr_no_error_support = PIGLIT_HAS_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   void
>>   piglit_init(int argc, char **argv)
>>   {
>>       bool pass = true;
>>       const char *fs_source =
>>           "#extension GL_ARB_uniform_buffer_object : require\n"
>>           "uniform ubo {\n"
>> diff --git 
>> a/tests/spec/arb_uniform_buffer_object/referenced-by-shader.c 
>> b/tests/spec/arb_uniform_buffer_object/referenced-by-shader.c
>> index 6f5cf6e..1d3723a 100644
>> --- a/tests/spec/arb_uniform_buffer_object/referenced-by-shader.c
>> +++ b/tests/spec/arb_uniform_buffer_object/referenced-by-shader.c
>> @@ -34,20 +34,21 @@
>>    *      fragment programming stage of <program>, respectively, is
>>    *      returned."
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.supports_gl_core_version = 31;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   void
>>   piglit_init(int argc, char **argv)
>>   {
>>       bool pass = true;
>>       unsigned int i;
>>       GLuint vs, gs, fs, prog;
>>       const char *vs_source =
>> diff --git a/tests/spec/arb_uniform_buffer_object/rendering-array.c 
>> b/tests/spec/arb_uniform_buffer_object/rendering-array.c
>> index 1535e92..d508635 100644
>> --- a/tests/spec/arb_uniform_buffer_object/rendering-array.c
>> +++ b/tests/spec/arb_uniform_buffer_object/rendering-array.c
>> @@ -27,20 +27,21 @@
>>    * We draw four squares with different positions, sizes, rotations 
>> and colors
>>    * where those parameters come from an array in a UBO.  Each draw 
>> command
>>    * indexes into a different element of that array.
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 20;
>>       config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | 
>> PIGLIT_GL_VISUAL_RGBA;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   static const char vert_shader_text[] =
>>       "#extension GL_ARB_uniform_buffer_object : require\n"
>>       "\n"
>>       "layout(std140) uniform;\n"
>>       "uniform ub_info { \n"
>>       "   struct { \n"
>>       "      vec2 pos; \n"
>> diff --git a/tests/spec/arb_uniform_buffer_object/rendering-dsa.c 
>> b/tests/spec/arb_uniform_buffer_object/rendering-dsa.c
>> index a0cb5f7..599a6c3 100644
>> --- a/tests/spec/arb_uniform_buffer_object/rendering-dsa.c
>> +++ b/tests/spec/arb_uniform_buffer_object/rendering-dsa.c
>> @@ -26,20 +26,21 @@
>>    * Test rendering with UBOs.  We draw four squares with different 
>> positions,
>>    * sizes, rotations and colors where those parameters come from UBOs.
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_core_version = 31;
>>       config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | 
>> PIGLIT_GL_VISUAL_RGBA;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   static const char vert_shader_text[] =
>>       "#version 140\n"
>>       "in vec4 piglit_vertex;\n"
>>       "layout(std140) uniform;\n"
>>       "uniform ub_pos_size { vec2 pos; float size; };\n"
>>       "uniform ub_rot {float rotation; };\n"
>>       "\n"
>> diff --git a/tests/spec/arb_uniform_buffer_object/rendering.c 
>> b/tests/spec/arb_uniform_buffer_object/rendering.c
>> index 20c86b2..f5b1e7f 100644
>> --- a/tests/spec/arb_uniform_buffer_object/rendering.c
>> +++ b/tests/spec/arb_uniform_buffer_object/rendering.c
>> @@ -26,20 +26,21 @@
>>    * Test rendering with UBOs.  We draw four squares with different 
>> positions,
>>    * sizes, rotations and colors where those parameters come from UBOs.
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 20;
>>       config.window_visual = PIGLIT_GL_VISUAL_DOUBLE | 
>> PIGLIT_GL_VISUAL_RGBA;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   static const char vert_shader_text[] =
>>       "#extension GL_ARB_uniform_buffer_object : require\n"
>>       "\n"
>>       "layout(std140) uniform;\n"
>>       "uniform ub_pos_size { vec2 pos; float size; };\n"
>>       "uniform ub_rot {float rotation; };\n"
>>       "\n"
>> diff --git a/tests/spec/arb_uniform_buffer_object/row-major.c 
>> b/tests/spec/arb_uniform_buffer_object/row-major.c
>> index c7388c6..e6ec7d9 100644
>> --- a/tests/spec/arb_uniform_buffer_object/row-major.c
>> +++ b/tests/spec/arb_uniform_buffer_object/row-major.c
>> @@ -47,20 +47,21 @@
>>    *
>>    *      results in the qualification being column_major."
>>    */
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_RGBA | 
>> PIGLIT_GL_VISUAL_DOUBLE;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   static const char *source =
>>       "#extension GL_ARB_uniform_buffer_object : enable\n"
>>       "\n"
>>       "/* Use std140 to avoid needing to ref every single uniform */\n"
>>       "layout(std140) uniform;\n"
>>       "\n"
>>       "layout(column_major) uniform a {\n"
>> diff --git 
>> a/tests/spec/arb_uniform_buffer_object/uniformblockbinding.c 
>> b/tests/spec/arb_uniform_buffer_object/uniformblockbinding.c
>> index 9676826..8ae47d1 100644
>> --- a/tests/spec/arb_uniform_buffer_object/uniformblockbinding.c
>> +++ b/tests/spec/arb_uniform_buffer_object/uniformblockbinding.c
>> @@ -58,20 +58,21 @@
>>   #include "piglit-util-gl.h"
>>   PIGLIT_GL_TEST_CONFIG_BEGIN
>>       config.supports_gl_compat_version = 10;
>>       config.window_width = 10;
>>       config.window_height = 10;
>>       config.window_visual = PIGLIT_GL_VISUAL_RGBA | 
>> PIGLIT_GL_VISUAL_DOUBLE;
>> +    config.khr_no_error_support = PIGLIT_NO_ERRORS;
>>   PIGLIT_GL_TEST_CONFIG_END
>>   void
>>   piglit_init(int argc, char **argv)
>>   {
>>       int i;
>>       GLuint prog;
>>       const char *source =
>>           "#extension GL_ARB_uniform_buffer_object : enable\n"
>> @@ -128,29 +129,31 @@ piglit_init(int argc, char **argv)
>>           if (binding != 0) {
>>               fprintf(stderr,
>>                   "Relinked program should have binding[%d] = %d, "
>>                   "saw %d\n",
>>                   i, 0, binding);
>>               pass = false;
>>           }
>>       }
>> -    glUniformBlockBinding(prog, blocks, 0);
>> -    pass = piglit_check_gl_error(GL_INVALID_VALUE) && pass;
>> +    if (!piglit_khr_no_error) {
>> +        glUniformBlockBinding(prog, blocks, 0);
>> +        pass = piglit_check_gl_error(GL_INVALID_VALUE) && pass;
>> -    glGetIntegerv(GL_MAX_UNIFORM_BUFFER_BINDINGS, &max_bindings);
>> -    glUniformBlockBinding(prog, 0, max_bindings);
>> -    pass = piglit_check_gl_error(GL_INVALID_VALUE) && pass;
>> +        glGetIntegerv(GL_MAX_UNIFORM_BUFFER_BINDINGS, &max_bindings);
>> +        glUniformBlockBinding(prog, 0, max_bindings);
>> +        pass = piglit_check_gl_error(GL_INVALID_VALUE) && pass;
>> -    glUniformBlockBinding(0xd0d0, 0, 0);
>> -    pass = piglit_check_gl_error(GL_INVALID_VALUE) && pass;
>> +        glUniformBlockBinding(0xd0d0, 0, 0);
>> +        pass = piglit_check_gl_error(GL_INVALID_VALUE) && pass;
>> +    }
>>       glDeleteProgram(prog);
>>       piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL);
>>   }
>>   enum piglit_result piglit_display(void)
>>   {
>>       /* UNREACHED */
>>       return PIGLIT_FAIL;
>>


More information about the Piglit mailing list