[Piglit] [PATCH v2] Implement piglit tests for EXT_blend_func_extended
Ilia Mirkin
imirkin at alum.mit.edu
Thu Nov 19 08:33:04 PST 2015
Pushed, thanks!
On Tue, Nov 17, 2015 at 6:57 PM, Ryan Houdek <sonicadvance1 at gmail.com> wrote:
> ---
> tests/all.py | 13 +++
> .../api/CMakeLists.gles2.txt | 5 +
> .../api/CMakeLists.gles3.txt | 6 ++
> .../api/bindfragdataindexed-invalid-parameters.c | 8 ++
> tests/spec/arb_blend_func_extended/api/blend-api.c | 8 ++
> tests/spec/arb_blend_func_extended/api/builtins.c | 111 +++++++++++++++++++++
> .../arb_blend_func_extended/api/getfragdataindex.c | 38 ++++++-
> .../arb_blend_func_extended/api/output-location.c | 29 +++++-
> .../execution/CMakeLists.gles2.txt | 4 +
> .../execution/CMakeLists.gles3.txt | 6 ++
> .../execution/fbo-extended-blend-explicit.c | 69 +++++++++++--
> .../execution/fbo-extended-blend-pattern.c | 77 +++++++++++++-
> .../execution/fbo-extended-blend.c | 69 +++++++++++--
> 13 files changed, 425 insertions(+), 18 deletions(-)
> create mode 100644 tests/spec/arb_blend_func_extended/api/CMakeLists.gles2.txt
> create mode 100644 tests/spec/arb_blend_func_extended/api/CMakeLists.gles3.txt
> create mode 100644 tests/spec/arb_blend_func_extended/api/builtins.c
> create mode 100644 tests/spec/arb_blend_func_extended/execution/CMakeLists.gles2.txt
> create mode 100644 tests/spec/arb_blend_func_extended/execution/CMakeLists.gles3.txt
>
> diff --git a/tests/all.py b/tests/all.py
> index ee2b7d9..b81578d 100644
> --- a/tests/all.py
> +++ b/tests/all.py
> @@ -3982,6 +3982,19 @@ with profile.group_manager(
> run_concurrent=False)
> g(['arb_blend_func_extended-fbo-extended-blend-pattern'],
> run_concurrent=False)
> + g(['arb_blend_func_extended-blend-api_gles2'], run_concurrent=False)
> + g(['arb_blend_func_extended-builtins_gles2'], run_concurrent=False)
> + g(['arb_blend_func_extended-bindfragdataindexed-invalid-parameters_gles3'],
> + run_concurrent=False)
> + g(['arb_blend_func_extended-output-location_gles3'], run_concurrent=False)
> + g(['arb_blend_func_extended-getfragdataindex_gles3'], run_concurrent=False)
> + g(['arb_blend_func_extended-fbo-extended-blend-pattern_gles2'],
> + run_concurrent=False)
> + g(['arb_blend_func_extended-fbo-extended-blend-pattern_gles3'],
> + run_concurrent=False)
> + g(['arb_blend_func_extended-fbo-extended-blend_gles3'], run_concurrent=False)
> + g(['arb_blend_func_extended-fbo-extended-blend-explicit_gles3'],
> + run_concurrent=False)
>
> with profile.group_manager(
> PiglitGLTest,
> diff --git a/tests/spec/arb_blend_func_extended/api/CMakeLists.gles2.txt b/tests/spec/arb_blend_func_extended/api/CMakeLists.gles2.txt
> new file mode 100644
> index 0000000..2966073
> --- /dev/null
> +++ b/tests/spec/arb_blend_func_extended/api/CMakeLists.gles2.txt
> @@ -0,0 +1,5 @@
> +link_libraries(piglitutil_${piglit_target_api})
> +
> +piglit_add_executable (arb_blend_func_extended-blend-api_${piglit_target_api} blend-api)
> +piglit_add_executable (arb_blend_func_extended-builtins_${piglit_target_api} builtins.c)
> +# vim: ft=cmake:
> diff --git a/tests/spec/arb_blend_func_extended/api/CMakeLists.gles3.txt b/tests/spec/arb_blend_func_extended/api/CMakeLists.gles3.txt
> new file mode 100644
> index 0000000..a005fc2
> --- /dev/null
> +++ b/tests/spec/arb_blend_func_extended/api/CMakeLists.gles3.txt
> @@ -0,0 +1,6 @@
> +link_libraries(piglitutil_${piglit_target_api})
> +
> +piglit_add_executable (arb_blend_func_extended-bindfragdataindexed-invalid-parameters_${piglit_target_api} bindfragdataindexed-invalid-parameters.c)
> +piglit_add_executable (arb_blend_func_extended-output-location_${piglit_target_api} output-location.c)
> +piglit_add_executable (arb_blend_func_extended-getfragdataindex_${piglit_target_api} getfragdataindex.c)
> +# vim: ft=cmake:
> diff --git a/tests/spec/arb_blend_func_extended/api/bindfragdataindexed-invalid-parameters.c b/tests/spec/arb_blend_func_extended/api/bindfragdataindexed-invalid-parameters.c
> index 7ef6048..c4a8d53 100644
> --- a/tests/spec/arb_blend_func_extended/api/bindfragdataindexed-invalid-parameters.c
> +++ b/tests/spec/arb_blend_func_extended/api/bindfragdataindexed-invalid-parameters.c
> @@ -31,7 +31,11 @@
>
> PIGLIT_GL_TEST_CONFIG_BEGIN
>
> +#ifdef PIGLIT_USE_OPENGL
> config.supports_gl_compat_version = 10;
> +#else // PIGLIT_USE_OPENGLES3
> + config.supports_gl_es_version = 30;
> +#endif
> config.window_visual = PIGLIT_GL_VISUAL_RGB | PIGLIT_GL_VISUAL_DOUBLE;
>
> PIGLIT_GL_TEST_CONFIG_END
> @@ -47,8 +51,12 @@ void piglit_init(int argc, char **argv)
> GLint max_draw_buffers, max_dual_source;
> GLuint prog;
>
> +#ifdef PIGLIT_USE_OPENGL
> piglit_require_gl_version(30);
> piglit_require_extension("GL_ARB_blend_func_extended");
> +#else // PIGLIT_USE_OPENGLES3
> + piglit_require_extension("GL_EXT_blend_func_extended");
> +#endif
>
> glGetIntegerv(GL_MAX_DRAW_BUFFERS, &max_draw_buffers);
> glGetIntegerv(GL_MAX_DUAL_SOURCE_DRAW_BUFFERS, &max_dual_source);
> diff --git a/tests/spec/arb_blend_func_extended/api/blend-api.c b/tests/spec/arb_blend_func_extended/api/blend-api.c
> index 00e4c7b..4c34bc7 100644
> --- a/tests/spec/arb_blend_func_extended/api/blend-api.c
> +++ b/tests/spec/arb_blend_func_extended/api/blend-api.c
> @@ -30,7 +30,11 @@
>
> PIGLIT_GL_TEST_CONFIG_BEGIN
>
> +#ifdef PIGLIT_USE_OPENGL
> config.supports_gl_compat_version = 10;
> +#else // PIGLIT_USE_OPENGL_ES2
> + config.supports_gl_es_version = 20;
> +#endif
> config.window_visual = PIGLIT_GL_VISUAL_RGB | PIGLIT_GL_VISUAL_DOUBLE;
>
> PIGLIT_GL_TEST_CONFIG_END
> @@ -45,8 +49,12 @@ void piglit_init(int argc, char **argv)
> {
> GLint max_dual_source;
>
> +#ifdef PIGLIT_USE_OPENGL
> piglit_require_gl_version(30);
> piglit_require_extension("GL_ARB_blend_func_extended");
> +#else // PIGLIT_USE_OPENGL_ES2
> + piglit_require_extension("GL_EXT_blend_func_extended");
> +#endif
>
> /* This test needs some number of draw buffers, so make sure the
> * implementation isn't broken. This enables the test to generate a
> diff --git a/tests/spec/arb_blend_func_extended/api/builtins.c b/tests/spec/arb_blend_func_extended/api/builtins.c
> new file mode 100644
> index 0000000..e0a6c6f
> --- /dev/null
> +++ b/tests/spec/arb_blend_func_extended/api/builtins.c
> @@ -0,0 +1,111 @@
> +/*
> + * Copyright (c) 2015 Ryan Houdek <Sonicadvance1 at gmail.com>
> + *
> + * 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.
> + */
> +
> +#include "piglit-util-gl.h"
> +
> +PIGLIT_GL_TEST_CONFIG_BEGIN
> +
> + config.supports_gl_es_version = 20;
> + config.window_visual = PIGLIT_GL_VISUAL_RGB | PIGLIT_GL_VISUAL_DOUBLE;
> +
> +PIGLIT_GL_TEST_CONFIG_END
> +
> +bool compile_simple_program(const char* vs_text, const char* fs_text)
> +{
> + GLuint vs;
> + GLuint fs;
> + GLuint prog;
> +
> + prog = glCreateProgram();
> +
> + vs = piglit_compile_shader_text_nothrow(GL_VERTEX_SHADER, vs_text);
> + fs = piglit_compile_shader_text_nothrow(GL_FRAGMENT_SHADER, fs_text);
> +
> + if (!vs || !fs)
> + return false;
> +
> + glAttachShader(prog, vs);
> + glAttachShader(prog, fs);
> + glLinkProgram(prog);
> +
> + return !!prog;
> +}
> +
> +enum piglit_result
> +piglit_display(void)
> +{
> + return PIGLIT_FAIL;
> +}
> +
> +void piglit_init(int argc, char **argv)
> +{
> + bool pass = true;
> + char fs_text[256];
> +
> + piglit_require_extension("GL_EXT_blend_func_extended");
> +
> + static const char *vs_text =
> + "#version 100\n"
> + "void main() {\n"
> + " gl_Position = vec4(0);\n"
> + "}\n"
> + ;
> +
> + static const char *fs_template =
> + "#version 100\n"
> + "#extension GL_EXT_blend_func_extended : enable\n"
> + "void main() {\n"
> + " %s = vec4(0);\n"
> + " %s = vec4(0);\n"
> + "}\n"
> + ;
> +
> + // Tests that should pass
> + // Regular FragColor
> + snprintf(fs_text, 256, fs_template,
> + "gl_FragColor",
> + "gl_SecondaryFragColorEXT");
> + pass = compile_simple_program(vs_text, fs_text) && pass;
> +
> + // Regular FragData
> + snprintf(fs_text, 256, fs_template,
> + "gl_FragData[0]",
> + "gl_SecondaryFragDataEXT[0]");
> + pass = compile_simple_program(vs_text, fs_text) && pass;
> +
> + // Tests that should fail
> + // FragColor & SecondaryFragData
> + snprintf(fs_text, 256, fs_template,
> + "gl_FragColor",
> + "gl_SecondaryFragDataEXT[0]");
> + pass = !compile_simple_program(vs_text, fs_text) && pass;
> +
> + // FragData & SecondaryFragColor
> + snprintf(fs_text, 256, fs_template,
> + "gl_FragData[0]",
> + "gl_SecondaryFragColorEXT");
> + pass = !compile_simple_program(vs_text, fs_text) && pass;
> +
> + piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL);
> +
> +}
> diff --git a/tests/spec/arb_blend_func_extended/api/getfragdataindex.c b/tests/spec/arb_blend_func_extended/api/getfragdataindex.c
> index 3fb8aa8..a30263e 100644
> --- a/tests/spec/arb_blend_func_extended/api/getfragdataindex.c
> +++ b/tests/spec/arb_blend_func_extended/api/getfragdataindex.c
> @@ -30,11 +30,16 @@
>
> PIGLIT_GL_TEST_CONFIG_BEGIN
>
> +#ifdef PIGLIT_USE_OPENGL
> config.supports_gl_compat_version = 10;
> +#else // PIGLIT_USE_OPENGL_ES3
> + config.supports_gl_es_version = 30;
> +#endif
> config.window_visual = PIGLIT_GL_VISUAL_RGB | PIGLIT_GL_VISUAL_DOUBLE;
>
> PIGLIT_GL_TEST_CONFIG_END
>
> +#ifdef PIGLIT_USE_OPENGL
> static const char *vs_text =
> "#version 130\n"
> "in vec4 vertex;\n"
> @@ -51,6 +56,25 @@ static const char *fs_text =
> " a[1] = vec4(2.0);\n"
> "}\n"
> ;
> +#else // PIGLIT_USE_OPENGL_ES3
> +static const char *vs_text =
> + "#version 300 es\n"
> + "in vec4 vertex;\n"
> + "void main() { gl_Position = vertex; }\n"
> + ;
> +
> +static const char *fs_text =
> + "#version 300 es\n"
> + "#extension GL_EXT_blend_func_extended : enable\n"
> + "out highp vec4 v;\n"
> + "out highp vec4 a[2];\n"
> + "void main() {\n"
> + " v = vec4(0.0);\n"
> + " a[0] = vec4(1.0);\n"
> + " a[1] = vec4(2.0);\n"
> + "}\n"
> + ;
> +#endif
>
> enum piglit_result
> piglit_display(void)
> @@ -66,8 +90,12 @@ void piglit_init(int argc, char **argv)
> GLuint fs;
> GLint idx;
>
> +#ifdef PIGLIT_USE_OPENGL
> piglit_require_gl_version(30);
> piglit_require_extension("GL_ARB_blend_func_extended");
> +#else // PIGLIT_USE_OPENGL_ES3
> + piglit_require_extension("GL_EXT_blend_func_extended");
> +#endif
>
> /* This test needs some number of draw buffers, so make sure the
> * implementation isn't broken. This enables the test to generate a
> @@ -84,7 +112,7 @@ void piglit_init(int argc, char **argv)
> glGetIntegerv(GL_MAX_DUAL_SOURCE_DRAW_BUFFERS, &max_dual_source);
> if (max_dual_source < 1) {
> fprintf(stderr,
> - "ARB_blend_func_extended requires GL_MAX_DUAL_SOURCE_DRAW_BUFFERS >= 1. "
> + "blend_func_extended requires GL_MAX_DUAL_SOURCE_DRAW_BUFFERS >= 1. "
> "Only got %d!\n",
> max_dual_source);
> piglit_report_result(PIGLIT_FAIL);
> @@ -105,7 +133,11 @@ void piglit_init(int argc, char **argv)
> * or if an error occurs, -1 will be returned."
> */
> printf("Querying index before linking...\n");
> +#ifdef PIGLIT_USE_OPENGL
> idx = glGetFragDataIndex(prog, "v");
> +#else // PIGLIT_USE_OPENGLES3
> + idx = glGetFragDataIndexEXT(prog, "v");
> +#endif
> if (!piglit_check_gl_error(GL_INVALID_OPERATION))
> piglit_report_result(PIGLIT_FAIL);
>
> @@ -123,7 +155,11 @@ void piglit_init(int argc, char **argv)
> }
>
> printf("Querying index of nonexistent variable...\n");
> +#ifdef PIGLIT_USE_OPENGL
> idx = glGetFragDataIndex(prog, "waldo");
> +#else // PIGLIT_USE_OPENGLES3
> + idx = glGetFragDataIndexEXT(prog, "waldo");
> +#endif
> if (!piglit_check_gl_error(GL_NO_ERROR))
> piglit_report_result(PIGLIT_FAIL);
>
> diff --git a/tests/spec/arb_blend_func_extended/api/output-location.c b/tests/spec/arb_blend_func_extended/api/output-location.c
> index b95ee72..1fc9203 100644
> --- a/tests/spec/arb_blend_func_extended/api/output-location.c
> +++ b/tests/spec/arb_blend_func_extended/api/output-location.c
> @@ -30,11 +30,16 @@
>
> PIGLIT_GL_TEST_CONFIG_BEGIN
>
> +#ifdef PIGLIT_USE_OPENGL
> config.supports_gl_core_version = 31;
> +#else // PIGLIT_USE_OPENGLES3
> + config.supports_gl_es_version = 30;
> +#endif
> config.window_visual = PIGLIT_GL_VISUAL_RGB | PIGLIT_GL_VISUAL_DOUBLE;
>
> PIGLIT_GL_TEST_CONFIG_END
>
> +#ifdef PIGLIT_USE_OPENGL
> static const char *vs_text =
> "#version 150\n"
> "in vec4 vertex;\n"
> @@ -51,6 +56,24 @@ static const char *fs_template =
> " b = vec4(1.0);\n"
> "}\n"
> ;
> +#else // PIGLIT_USE_OPENGLES3
> +static const char *vs_text =
> + "#version 300 es\n"
> + "in vec4 vertex;\n"
> + "void main() { gl_Position = vertex; }\n"
> + ;
> +
> +static const char *fs_template =
> + "#version 300 es\n"
> + "#extension GL_EXT_blend_func_extended : enable\n"
> + "layout(location = 0, index = 0) out highp vec4 a;\n"
> + "layout(location = %d, index = 1) out highp vec4 b;\n"
> + "void main() {\n"
> + " a = vec4(0.0);\n"
> + " b = vec4(1.0);\n"
> + "}\n"
> + ;
> +#endif
>
> enum piglit_result
> piglit_display(void)
> @@ -64,8 +87,12 @@ void piglit_init(int argc, char **argv)
> GLuint prog;
> char fs_text[256];
>
> - piglit_require_extension("GL_ARB_blend_func_extended");
>
> +#ifdef PIGLIT_USE_OPENGL
> + piglit_require_extension("GL_ARB_blend_func_extended");
> +#else // PIGLIT_USE_OPENGLES3
> + piglit_require_extension("GL_EXT_blend_func_extended");
> +#endif
> glGetIntegerv(GL_MAX_DUAL_SOURCE_DRAW_BUFFERS, &max_dual_source);
>
> if (max_dual_source < 1) {
> diff --git a/tests/spec/arb_blend_func_extended/execution/CMakeLists.gles2.txt b/tests/spec/arb_blend_func_extended/execution/CMakeLists.gles2.txt
> new file mode 100644
> index 0000000..8039d99
> --- /dev/null
> +++ b/tests/spec/arb_blend_func_extended/execution/CMakeLists.gles2.txt
> @@ -0,0 +1,4 @@
> +link_libraries(piglitutil_${piglit_target_api})
> +
> +piglit_add_executable (arb_blend_func_extended-fbo-extended-blend-pattern_${piglit_target_api} fbo-extended-blend-pattern.c)
> +# vim: ft=cmake:
> diff --git a/tests/spec/arb_blend_func_extended/execution/CMakeLists.gles3.txt b/tests/spec/arb_blend_func_extended/execution/CMakeLists.gles3.txt
> new file mode 100644
> index 0000000..a70e9fa
> --- /dev/null
> +++ b/tests/spec/arb_blend_func_extended/execution/CMakeLists.gles3.txt
> @@ -0,0 +1,6 @@
> +link_libraries(piglitutil_${piglit_target_api})
> +
> +piglit_add_executable (arb_blend_func_extended-fbo-extended-blend_${piglit_target_api} fbo-extended-blend.c)
> +piglit_add_executable (arb_blend_func_extended-fbo-extended-blend-explicit_${piglit_target_api} fbo-extended-blend-explicit.c)
> +piglit_add_executable (arb_blend_func_extended-fbo-extended-blend-pattern_${piglit_target_api} fbo-extended-blend-pattern.c)
> +# vim: ft=cmake:
> diff --git a/tests/spec/arb_blend_func_extended/execution/fbo-extended-blend-explicit.c b/tests/spec/arb_blend_func_extended/execution/fbo-extended-blend-explicit.c
> index a6450b8..ce3f7e4 100644
> --- a/tests/spec/arb_blend_func_extended/execution/fbo-extended-blend-explicit.c
> +++ b/tests/spec/arb_blend_func_extended/execution/fbo-extended-blend-explicit.c
> @@ -39,7 +39,11 @@
>
> PIGLIT_GL_TEST_CONFIG_BEGIN
>
> +#ifdef PIGLIT_USE_OPENGL
> config.supports_gl_compat_version = 30;
> +#else // PIGLIT_USE_OPENGL_ES3
> + config.supports_gl_es_version = 30;
> +#endif
> config.window_visual = PIGLIT_GL_VISUAL_RGB;
>
> PIGLIT_GL_TEST_CONFIG_END
> @@ -92,13 +96,13 @@ static void blend(const float *src, const float *src1, const float *dst,
> GLenum blendsrc, GLenum blenddst, GLenum blendop)
> {
> glUniform4fv(uniform_src0, 1, dst);
> - piglit_draw_rect(0, 0, piglit_width, piglit_height);
> + piglit_draw_rect(-1, -1, 2, 2);
> glEnable(GL_BLEND);
> glBlendEquation(blendop);
> glBlendFunc(blendsrc, blenddst);
> glUniform4fv(uniform_src0, 1, src);
> glUniform4fv(uniform_src1, 1, src1);
> - piglit_draw_rect(0, 0, piglit_width, piglit_height);
> + piglit_draw_rect(-1, -1, 2, 2);
> glDisable(GL_BLEND);
> }
>
> @@ -200,11 +204,12 @@ static void blend_expected(float *expected, const float *src, const float *src1,
> }
> }
>
> +#ifdef PIGLIT_USE_OPENGL
> static const char *vs_text =
> "#version 130\n"
> + "in vec4 piglit_vertex;\n"
> "void main() {\n"
> - " gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n"
> - " gl_FrontColor = gl_Color;\n"
> + " gl_Position = piglit_vertex;\n"
> "}\n"
> ;
>
> @@ -220,6 +225,28 @@ static const char *fs_text =
> " col1 = src1;\n"
> "}\n"
> ;
> +#else // PIGLIT_USE_OPENGL_ES3
> +static const char *vs_text =
> + "#version 300 es\n"
> + "in vec4 piglit_vertex;\n"
> + "void main() {\n"
> + " gl_Position = piglit_vertex;\n"
> + "}\n"
> + ;
> +
> +static const char *fs_text =
> + "#version 300 es\n"
> + "#extension GL_EXT_blend_func_extended : enable\n"
> + "uniform highp vec4 src0;\n"
> + "uniform highp vec4 src1;\n"
> + "layout(location = 0, index = 0) out highp vec4 col0;\n"
> + "layout(location = 0, index = 1) out highp vec4 col1;\n"
> + "void main() {\n"
> + " col0 = src0;\n"
> + " col1 = src1;\n"
> + "}\n"
> + ;
> +#endif
>
> static void
> create_fbo(void)
> @@ -227,6 +254,7 @@ create_fbo(void)
> GLuint rb[32];
> int i;
>
> +#ifdef PIGLIT_USE_OPENGL
> glGenFramebuffersEXT(1, &fbo);
> glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);
>
> @@ -247,6 +275,28 @@ create_fbo(void)
> piglit_width, piglit_height);
> check_error(__LINE__);
> }
> +#else // PIGLIT_USE_OPENGL_ES3
> + glGenFramebuffers(1, &fbo);
> + glBindFramebuffer(GL_FRAMEBUFFER_EXT, fbo);
> +
> + glGenRenderbuffers(max_ds_buffers, rb);
> + check_error(__LINE__);
> +
> + for (i = 0; i < max_ds_buffers; i++) {
> + glBindRenderbuffer(GL_RENDERBUFFER_EXT, rb[i]);
> + check_error(__LINE__);
> +
> + glFramebufferRenderbuffer(GL_FRAMEBUFFER_EXT,
> + GL_COLOR_ATTACHMENT0 + i,
> + GL_RENDERBUFFER_EXT,
> + rb[i]);
> + check_error(__LINE__);
> +
> + glRenderbufferStorage(GL_RENDERBUFFER_EXT, GL_RGBA8,
> + piglit_width, piglit_height);
> + check_error(__LINE__);
> + }
> +#endif
> }
>
> static enum piglit_result
> @@ -266,7 +316,12 @@ test(void)
>
> create_fbo();
>
> +#ifdef PIGLIT_USE_OPENGL
> glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
> +#else // PIGLIT_USE_OPENGL_ES3
> + GLenum bufs[] = {GL_COLOR_ATTACHMENT0_EXT};
> + glDrawBuffers(1, bufs);
> +#endif
>
> prog = piglit_build_simple_program(vs_text, fs_text);
> glUseProgram(prog);
> @@ -315,10 +370,12 @@ void
> piglit_init(int argc, char**argv)
> {
> enum piglit_result result;
> - piglit_ortho_projection(piglit_width, piglit_height, GL_FALSE);
> -
> +#ifdef PIGLIT_USE_OPENGL
> piglit_require_extension("GL_ARB_blend_func_extended");
> piglit_require_extension("GL_ARB_explicit_attrib_location");
> +#else // PIGLIT_USE_OPENGL_ES3
> + piglit_require_extension("GL_EXT_blend_func_extended");
> +#endif
>
> glGetIntegerv(GL_MAX_DUAL_SOURCE_DRAW_BUFFERS, &max_ds_buffers);
>
> diff --git a/tests/spec/arb_blend_func_extended/execution/fbo-extended-blend-pattern.c b/tests/spec/arb_blend_func_extended/execution/fbo-extended-blend-pattern.c
> index 7168a2c..50f84af 100644
> --- a/tests/spec/arb_blend_func_extended/execution/fbo-extended-blend-pattern.c
> +++ b/tests/spec/arb_blend_func_extended/execution/fbo-extended-blend-pattern.c
> @@ -48,7 +48,13 @@
>
> PIGLIT_GL_TEST_CONFIG_BEGIN
>
> +#ifdef PIGLIT_USE_OPENGL
> config.supports_gl_compat_version = 30;
> +#elif PIGLIT_USE_OPENGL_ES3
> + config.supports_gl_es_version = 30;
> +#else // PIGLIT_USE_OPENGL_ES2
> + config.supports_gl_es_version = 20;
> +#endif
> config.window_visual = PIGLIT_GL_VISUAL_RGB;
>
> PIGLIT_GL_TEST_CONFIG_END
> @@ -57,10 +63,12 @@ static const char *TestName = "fbo-extended-blend-pattern";
>
> static GLint uniform_src0, uniform_src1, uniform_src2;
>
> +#ifdef PIGLIT_USE_OPENGL
> static const char *vs_text =
> "#version 130\n"
> + "in vec4 piglit_vertex;\n"
> "void main() {\n"
> - " gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n"
> + " gl_Position = piglit_vertex;\n"
> "}\n"
> ;
>
> @@ -83,6 +91,64 @@ static const char *fs_text =
> " col1 = src2;\n"
> "}\n"
> ;
> +#elif PIGLIT_USE_OPENGL_ES3
> +static const char *vs_text =
> + "#version 300 es\n"
> + "in vec4 piglit_vertex;\n"
> + "void main() {\n"
> + " gl_Position = piglit_vertex;\n"
> + "}\n"
> + ;
> +
> +static const char *fs_text =
> + "#version 300 es\n"
> + "#extension GL_EXT_blend_func_extended : enable\n"
> + "precision highp float;\n"
> + "uniform vec4 src0;\n"
> + "uniform vec4 src1;\n"
> + "uniform vec4 src2;\n"
> + "layout(location = 0, index = 0) out vec4 col0;\n"
> + "layout(location = 0, index = 1) out vec4 col1;\n"
> + "void main() {\n"
> + " int a = int(gl_FragCoord.x) / 10;\n"
> + " int b = int(gl_FragCoord.y) / 10;\n"
> + " int c = int(mod(a + b, 2));\n"
> + " col0 = src0;\n"
> + " if (c == 0)\n"
> + " col1 = src1;\n"
> + " else\n"
> + " col1 = src2;\n"
> + "}\n"
> + ;
> +#else // PIGLIT_USE_OPENGL_ES2
> +static const char *vs_text =
> + "#version 100\n"
> + "attribute vec4 piglit_vertex;\n"
> + "void main() {\n"
> + " gl_Position = piglit_vertex;\n"
> + "}\n"
> + ;
> +
> +static const char *fs_text =
> + "#version 100\n"
> + "#extension GL_EXT_blend_func_extended : enable\n"
> + "precision highp float;\n"
> + "uniform vec4 src0;\n"
> + "uniform vec4 src1;\n"
> + "uniform vec4 src2;\n"
> + "void main() {\n"
> + " float a = floor(gl_FragCoord.x / 10.0);\n"
> + " float b = floor(gl_FragCoord.y / 10.0);\n"
> + " float c = floor(mod(a + b, 2.0));\n"
> + " gl_FragColor = src0;\n"
> + " if (c == 0.0)\n"
> + " gl_SecondaryFragColorEXT = src1;\n"
> + " else\n"
> + " gl_SecondaryFragColorEXT = src2;\n"
> + "}\n"
> + ;
> +
> +#endif
>
> static void
> check_error(int line)
> @@ -98,13 +164,13 @@ static void
> blend(const float *src, const float *src1, const float *src2, const float *dst)
> {
> glUniform4fv(uniform_src0, 1, dst);
> - piglit_draw_rect(0, 0, piglit_width, piglit_height);
> + piglit_draw_rect(-1, -1, 2, 2);
> glEnable(GL_BLEND);
> glBlendFunc(GL_SRC_COLOR, GL_SRC1_COLOR);
> glUniform4fv(uniform_src0, 1, src);
> glUniform4fv(uniform_src1, 1, src1);
> glUniform4fv(uniform_src2, 1, src2);
> - piglit_draw_rect(0, 0, piglit_width, piglit_height);
> + piglit_draw_rect(-1, -1, 2, 2);
> glDisable(GL_BLEND);
> glFinish();
> }
> @@ -148,7 +214,10 @@ piglit_display(void)
> void
> piglit_init(int argc, char **argv)
> {
> +#ifdef PIGLIT_USE_OPENGL
> piglit_require_extension("GL_ARB_blend_func_extended");
> piglit_require_extension("GL_ARB_explicit_attrib_location");
> - piglit_ortho_projection(piglit_width, piglit_height, GL_FALSE);
> +#else // PIGLIT_USE_OPENGL_ES{2, 3}
> + piglit_require_extension("GL_EXT_blend_func_extended");
> +#endif
> }
> diff --git a/tests/spec/arb_blend_func_extended/execution/fbo-extended-blend.c b/tests/spec/arb_blend_func_extended/execution/fbo-extended-blend.c
> index 523d07c..0902a4b 100644
> --- a/tests/spec/arb_blend_func_extended/execution/fbo-extended-blend.c
> +++ b/tests/spec/arb_blend_func_extended/execution/fbo-extended-blend.c
> @@ -39,7 +39,11 @@
>
> PIGLIT_GL_TEST_CONFIG_BEGIN
>
> +#ifdef PIGLIT_USE_OPENGL
> config.supports_gl_compat_version = 30;
> +#else // PIGLIT_USE_OPENGL_ES3
> + config.supports_gl_es_version = 30;
> +#endif
> config.window_visual = PIGLIT_GL_VISUAL_RGB;
>
> PIGLIT_GL_TEST_CONFIG_END
> @@ -92,13 +96,13 @@ static void blend(const float *src, const float *src1, const float *dst,
> GLenum blendsrc, GLenum blenddst, GLenum blendop)
> {
> glUniform4fv(uniform_src0, 1, dst);
> - piglit_draw_rect(0, 0, piglit_width, piglit_height);
> + piglit_draw_rect(-1, -1, 2, 2);
> glEnable(GL_BLEND);
> glBlendEquation(blendop);
> glBlendFunc(blendsrc, blenddst);
> glUniform4fv(uniform_src0, 1, src);
> glUniform4fv(uniform_src1, 1, src1);
> - piglit_draw_rect(0, 0, piglit_width, piglit_height);
> + piglit_draw_rect(-1, -1, 2, 2);
> glDisable(GL_BLEND);
> }
>
> @@ -200,11 +204,12 @@ static void blend_expected(float *expected, const float *src, const float *src1,
> }
> }
>
> +#ifdef PIGLIT_USE_OPENGL
> static const char *vs_text =
> "#version 130\n"
> + "in vec4 piglit_vertex;\n"
> "void main() {\n"
> - " gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n"
> - " gl_FrontColor = gl_Color;\n"
> + " gl_Position = piglit_vertex;\n"
> "}\n"
> ;
>
> @@ -219,6 +224,28 @@ static const char *fs_text =
> " col1 = src1;\n"
> "}\n"
> ;
> +#else // PIGLIT_USE_OPENGL_ES3
> +static const char *vs_text =
> + "#version 300 es\n"
> + "in vec4 piglit_vertex;\n"
> + "void main() {\n"
> + " gl_Position = piglit_vertex;\n"
> + "}\n"
> + ;
> +
> +static const char *fs_text =
> + "#version 300 es\n"
> + "#extension GL_EXT_blend_func_extended : enable\n"
> + "uniform highp vec4 src0;\n"
> + "uniform highp vec4 src1;\n"
> + "out highp vec4 col0;\n"
> + "out highp vec4 col1;\n"
> + "void main() {\n"
> + " col0 = src0;\n"
> + " col1 = src1;\n"
> + "}\n"
> + ;
> +#endif
>
> static void
> create_fbo(void)
> @@ -226,6 +253,7 @@ create_fbo(void)
> GLuint rb[32];
> int i;
>
> +#ifdef PIGLIT_USE_OPENGL
> glGenFramebuffersEXT(1, &fbo);
> glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);
>
> @@ -246,6 +274,28 @@ create_fbo(void)
> piglit_width, piglit_height);
> check_error(__LINE__);
> }
> +#else // PIGLIT_USE_OPENGL_ES3
> + glGenFramebuffers(1, &fbo);
> + glBindFramebuffer(GL_FRAMEBUFFER_EXT, fbo);
> +
> + glGenRenderbuffers(max_ds_buffers, rb);
> + check_error(__LINE__);
> +
> + for (i = 0; i < max_ds_buffers; i++) {
> + glBindRenderbuffer(GL_RENDERBUFFER_EXT, rb[i]);
> + check_error(__LINE__);
> +
> + glFramebufferRenderbuffer(GL_FRAMEBUFFER_EXT,
> + GL_COLOR_ATTACHMENT0 + i,
> + GL_RENDERBUFFER_EXT,
> + rb[i]);
> + check_error(__LINE__);
> +
> + glRenderbufferStorage(GL_RENDERBUFFER_EXT, GL_RGBA8,
> + piglit_width, piglit_height);
> + check_error(__LINE__);
> + }
> +#endif
> }
>
> static enum piglit_result
> @@ -278,7 +328,12 @@ test(void)
>
> create_fbo();
>
> +#ifdef PIGLIT_USE_OPENGL
> glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
> +#else // PIGLIT_USE_OPENGL_ES3
> + GLenum bufs[] = {GL_COLOR_ATTACHMENT0_EXT};
> + glDrawBuffers(1, bufs);
> +#endif
>
> glLinkProgram(prog);
> glUseProgram(prog);
> @@ -327,9 +382,11 @@ void
> piglit_init(int argc, char**argv)
> {
> enum piglit_result result;
> - piglit_ortho_projection(piglit_width, piglit_height, GL_FALSE);
> -
> +#ifdef PIGLIT_USE_OPENGL
> piglit_require_extension("GL_ARB_blend_func_extended");
> +#else // PIGLIT_USE_OPENGL_ES3
> + piglit_require_extension("GL_EXT_blend_func_extended");
> +#endif
>
> glGetIntegerv(GL_MAX_DUAL_SOURCE_DRAW_BUFFERS, &max_ds_buffers);
>
> --
> 2.5.0
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit
More information about the Piglit
mailing list