On 10/04/2013 11:47 AM, Paul Berry wrote: > On 21 August 2013 09:08, Ian Romanick <i...@freedesktop.org > <mailto:i...@freedesktop.org>> wrote: > > From: Ian Romanick <ian.d.roman...@intel.com > <mailto:ian.d.roman...@intel.com>> > > This test fails on NVIDIA (304.64 on GTX 260). It fails because the > value of GL_PROGRAM_BINARY_RETRIEVABLE_HINT is not "latched" by > glLinkProgram. The spec is a little unclear on this topic, and I filed > a bug in the Khronos bugzilla. After some discussion about which state > should be latches vs. live, the concensus was that > > GL_PROGRAM_BINARY_RETRIEVABLE_HINT. > > > s/concensus/consensus/. Also this sentence kind of trails off. I > assume you mean "the consensuse was that > GL_PROGRAM_BINARY_RETRIEVABLE_HINT should be latched by gl_LinkProgram."
It looks like I fixed the trailing sentence after sending the patch out. I updated the commit message to: This test fails on NVIDIA (304.64 on GTX 260). It fails because the value of GL_PROGRAM_BINARY_RETRIEVABLE_HINT is not "patched" by glLinkProgram. The spec is a little unclear on this topic, and I filed a bug in the Khronos bugzilla. After some discussion about which state should be latches vs. live, the consensus was that GL_PROGRAM_BINARY_RETRIEVABLE_HINT should be latched. Updated language has been proposed, but a new spec has not been spun. > With that fixed, the patch is: > > Reviewed-by: Paul Berry <stereotype...@gmail.com > <mailto:stereotype...@gmail.com>> > > > > Updated language has been proposed, > but a new spec has not been spun. > > Signed-off-by: Ian Romanick <ian.d.roman...@intel.com > <mailto:ian.d.roman...@intel.com>> > Cc: James Jones <jajo...@nvidia.com <mailto:jajo...@nvidia.com>> > --- > tests/all.tests | 1 + > .../spec/arb_get_program_binary/CMakeLists.gl.txt | 1 + > .../spec/arb_get_program_binary/retrievable_hint.c | 143 > +++++++++++++++++++++ > 3 files changed, 145 insertions(+) > create mode 100644 tests/spec/arb_get_program_binary/retrievable_hint.c > > diff --git a/tests/all.tests b/tests/all.tests > index fa3812f..35e1002 100644 > --- a/tests/all.tests > +++ b/tests/all.tests > @@ -1038,6 +1038,7 @@ > arb_es2_compatibility['NUM_SHADER_BINARY_FORMATS over-run check'] = > concurrent_t > arb_get_program_binary = Group() > spec['ARB_get_program_binary'] = arb_get_program_binary > arb_get_program_binary['NUM_PROGRAM_BINARY_FORMATS over-run check'] > = concurrent_test('arb_get_program_binary-overrun program') > +arb_get_program_binary['PROGRAM_BINARY_RETRIEVABLE_HINT'] = > concurrent_test('arb_get_program_binary-retrievable_hint') > > arb_depth_clamp = Group() > spec['ARB_depth_clamp'] = arb_depth_clamp > diff --git a/tests/spec/arb_get_program_binary/CMakeLists.gl.txt > b/tests/spec/arb_get_program_binary/CMakeLists.gl.txt > index be52044..caaa617 100644 > --- a/tests/spec/arb_get_program_binary/CMakeLists.gl.txt > +++ b/tests/spec/arb_get_program_binary/CMakeLists.gl.txt > @@ -10,5 +10,6 @@ link_libraries ( > ) > > piglit_add_executable (arb_get_program_binary-overrun overrun.c) > +piglit_add_executable (arb_get_program_binary-retrievable_hint > retrievable_hint.c) > > # vim: ft=cmake: > diff --git a/tests/spec/arb_get_program_binary/retrievable_hint.c > b/tests/spec/arb_get_program_binary/retrievable_hint.c > new file mode 100644 > index 0000000..7c5f316 > --- /dev/null > +++ b/tests/spec/arb_get_program_binary/retrievable_hint.c > @@ -0,0 +1,143 @@ > +/* > + * Copyright © 2012 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. > + */ > + > +/** > + * \file coverage.c > + * Attempt quering every enum in the spec. Sanity check initial > values. > + * > + * GL_NUM_PROGRAM_BINARY_FORMATS and GL_PROGRAM_BINARY_FORMATS are not > + * covered by this test because they are heavily covered by the > + * overrun test. > + */ > + > +#include "piglit-util-gl-common.h" > + > +PIGLIT_GL_TEST_CONFIG_BEGIN > + > + config.supports_gl_compat_version = 10; > + config.window_visual = PIGLIT_GL_VISUAL_RGB; > + > +PIGLIT_GL_TEST_CONFIG_END > + > +static const char *vs_text = > + "#version 110\n" > + "void main() { gl_Position = vec4(0.); }" > + ; > + > +static const char *fs_text = > + "#version 110\n" > + "void main() { gl_FragColor = vec4(0.); }" > + ; > + > +enum piglit_result > +piglit_display(void) > +{ > + return PIGLIT_FAIL; > +} > + > +void > +piglit_init(int argc, char **argv) > +{ > + GLuint vs; > + GLuint fs; > + GLuint prog; > + GLint value; > + bool pass = true; > + bool got_error; > + > + piglit_require_gl_version(20); > + piglit_require_extension("GL_ARB_get_program_binary"); > + > + vs = piglit_compile_shader_text(GL_VERTEX_SHADER, vs_text); > + fs = piglit_compile_shader_text(GL_FRAGMENT_SHADER, fs_text); > + > + prog = piglit_link_simple_program(vs, fs); > + > + /* Check the initial state of > GL_PROGRAM_BINARY_RETRIEVABLE_HINT. The > + * state table in the extension spec says the initial state is > + * GL_FALSE. > + */ > + value = 0xDEADBEEF; > + glGetProgramiv(prog, GL_PROGRAM_BINARY_RETRIEVABLE_HINT, > &value); > + got_error = piglit_check_gl_error(0); > + > + if (!got_error) { > + if (value == 0xDEADBEEF) { > + fprintf(stderr, > + "No error generated for " > + "GL_PROGRAM_BINARY_RETRIEVABLE_HINT, > but " > + "no value was written either.\n"); > + pass = false; > + } else if (value != 0) { > + fprintf(stderr, > + "Initial state of " > + "GL_PROGRAM_BINARY_RETRIEVABLE_HINT " > + "was %d instead of 0.\n", > + value); > + pass = false; > + } > + } else > + pass = false; > + > + /* The ARB_get_program_binary spec says: > + * > + * "This hint will not take effect until the next time > LinkProgram > + * or ProgramBinary has been called successfully." > + * > + * The GL spec contains similar language for attribute > locations and > + * fragment data locations. In those cases, the queried > value is only > + * updated after relinking. We'll assume this text means > the same > + * thing. > + */ > + > + glProgramParameteri(prog, > GL_PROGRAM_BINARY_RETRIEVABLE_HINT, GL_TRUE); > + got_error = piglit_check_gl_error(0); > + > + glGetProgramiv(prog, GL_PROGRAM_BINARY_RETRIEVABLE_HINT, > &value); > + got_error = piglit_check_gl_error(0); > + > + if (value != 0) { > + fprintf(stderr, > + "State of GL_PROGRAM_BINARY_RETRIEVABLE_HINT " > + "changed without relinking.\n"); > + pass = false; > + } > + > + glLinkProgram(prog); > + got_error = piglit_check_gl_error(0); > + > + glGetProgramiv(prog, GL_PROGRAM_BINARY_RETRIEVABLE_HINT, > &value); > + got_error = piglit_check_gl_error(0); > + > + if (value != GL_TRUE) { > + fprintf(stderr, > + "State of GL_PROGRAM_BINARY_RETRIEVABLE_HINT " > + "did not change across relinking.\n"); > + pass = false; > + } > + > + glDeleteShader(vs); > + glDeleteShader(fs); > + glDeleteProgram(prog); > + piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL); > +} > -- > 1.8.1.4 > > _______________________________________________ > Piglit mailing list > Piglit@lists.freedesktop.org <mailto:Piglit@lists.freedesktop.org> > http://lists.freedesktop.org/mailman/listinfo/piglit > > _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit