[Piglit] [PATCH 1/3] GL 3.2: Test for INVALID_ENUM when DrawBuffers() is passed incorrect color buffers
Paul Berry
stereotype441 at gmail.com
Thu Aug 8 14:24:19 PDT 2013
On 6 August 2013 10:29, Nicholas Mack <nichmack at gmail.com> wrote:
> ---
> tests/spec/gl-3.2/CMakeLists.gl.txt | 1 +
> tests/spec/gl-3.2/draw-buffers-errors.c | 116
> ++++++++++++++++++++++++++++++++
> 2 files changed, 117 insertions(+)
> create mode 100644 tests/spec/gl-3.2/draw-buffers-errors.c
>
> diff --git a/tests/spec/gl-3.2/CMakeLists.gl.txt
> b/tests/spec/gl-3.2/CMakeLists.gl.txt
> index c6c99b8..49e9279 100644
> --- a/tests/spec/gl-3.2/CMakeLists.gl.txt
> +++ b/tests/spec/gl-3.2/CMakeLists.gl.txt
> @@ -10,5 +10,6 @@ link_libraries (
> )
>
> piglit_add_executable (gl-3.2-minmax minmax.c)
> +piglit_add_executable (gl-3.2-draw-buffers-errors draw-buffers-errors.c)
>
> # vim: ft=cmake:
> diff --git a/tests/spec/gl-3.2/draw-buffers-errors.c
> b/tests/spec/gl-3.2/draw-buffers-errors.c
> new file mode 100644
> index 0000000..dae753a
> --- /dev/null
> +++ b/tests/spec/gl-3.2/draw-buffers-errors.c
> @@ -0,0 +1,116 @@
> +/**
> + * Copyright © 2013 Intel Corporation
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the
> "Software"),
> + * to deal in the Software without restriction, including without
> limitation
> + * the rights to use, copy, modify, merge, publish, distribute,
> sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice (including the
> next
> + * paragraph) shall be included in all copies or substantial portions of
> the
> + * Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
> SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
> OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
> DEALINGS
> + * IN THE SOFTWARE.
> + */
> +
> +/**
> + * Test that DrawBuffers() returns correct error message for different
> values
> + *
> + * Section 4.2.1(Selecting a Buffer for Writing) of OpenGL 3.2 Core says:
> + *
> + * "For both the default framebuffer and framebuffer objects, the
> constants
> + * FRONT, BACK, LEFT, RIGHT, and FRONT_AND_BACK are not valid in the bufs
> + * array passed to DrawBuffers, and will result in the error
> INVALID_ENUM."
> + *
> + * "If the GL is bound to the default framebuffer and DrawBuffers is
> supplied
> + * with a constant (other than NONE) that does not indicate any of the
> color
> + * buffers allocated to the GL context by the window system, the error
> + * INVALID_OPERATION will be generated."
> + *
> + */
> +
> +#include "piglit-util-gl-common.h"
> +
> +PIGLIT_GL_TEST_CONFIG_BEGIN
> +
> + config.supports_gl_compat_version = 10;
> +
> + config.window_visual = PIGLIT_GL_VISUAL_DOUBLE;
> +
> +PIGLIT_GL_TEST_CONFIG_END
> +
> +
> +static GLenum invalids[]={GL_FRONT,
> + GL_BACK,
> + GL_LEFT,
> + GL_RIGHT,
> + GL_FRONT_AND_BACK};
> +
> +static GLenum valids[] = {GL_NONE,
> + GL_FRONT_LEFT,
> + GL_FRONT_RIGHT,
> + GL_BACK_LEFT,
> + GL_BACK_RIGHT};
> +
> +enum piglit_result
> +piglit_display(void)
> +{
> + bool pass = true;
> + int i = 0;
> +
> + glClearColor(0, 1, 0 , 1);
> + glClear(GL_COLOR_BUFFER_BIT);
> +
> +// printf("Expected GL_WAIT_FAILED but returned: %s\n",
> +// piglit_get_gl_enum_name(status1));
> +// pass = false;
> +
> + for (i = 0; i < 5; i++) {
> + GLenum err = 0;
> + glDrawBuffers(1, &valids[i]);
> + err = glGetError();
> + /* err = INVALID_OPERATION if that color buffer is not
> + allocated to the window system */
>
Sorry, I accidentally hit send too early.
The above comment should be formatted like so:
/* err = INVALID_OPERATION if that color buffer is not
* allocated to the window system
*/
> + if(err != GL_NONE && err != GL_INVALID_OPERATION) {
> + printf("Expected GL_NONE or GL_INVALID_OPERATION
> with"
> + " %s but received: %s\n",
> + piglit_get_gl_enum_name(valids[i]),
> + piglit_get_gl_enum_name(err));
> + pass = false;
> + }
> + }
> +
> + for (i = 0; i < 5; i++) {
> + GLenum err = 0;
> + glDrawBuffers(1, &invalids[i]);
> + err = glGetError();
> + if(err != GL_INVALID_ENUM) {
> + printf("Expected GL_INVALID_ENUM with %s but "
> + "received: %s\n",
> + piglit_get_gl_enum_name(invalids[i]),
> + piglit_get_gl_enum_name(err));
> + pass = false;
> + }
> + }
> +
> + if(!pass) {
> + glClearColor(1, 0, 0 , 1);
> + glClear(GL_COLOR_BUFFER_BIT);
> + }
> +
> + piglit_present_results();
>
It's not necessary to render anything for an API test like this one. I'd
recommend dropping the calls to glClearColor(), glClear(), and
piglit_present_results().
With those items fixed (and the issues from my previous email), this test
is:
Reviewed-by: Paul Berry <stereotype441 at gmail.com>
>
> +
> + return pass ? PIGLIT_PASS : PIGLIT_FAIL;
> +}
> +void
> +piglit_init(int argc, char **argv)
> +{
> +}
> --
> 1.8.3.1
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20130808/36df5360/attachment.html>
More information about the Piglit
mailing list