-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 06/12/2012 02:30 PM, Ian Romanick wrote: > From: Ian Romanick <ian.d.roman...@intel.com> > > NVIDIA's closed-source driver passes this test. AMD's closed-source > driver has not been tested. NVIDIA's closed-source driver supports > both core and compatibility profiles. > > Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> > --- > tests/all.tests | 1 + > .../spec/glx_arb_create_context/CMakeLists.gl.txt | 1 + > tests/spec/glx_arb_create_context/core-profile.c | 108 > ++++++++++++++++++++ > 3 files changed, 110 insertions(+), 0 deletions(-) > create mode 100644 tests/spec/glx_arb_create_context/core-profile.c > > diff --git a/tests/all.tests b/tests/all.tests > index 7b1f341..a5ac403 100644 > --- a/tests/all.tests > +++ b/tests/all.tests > @@ -686,6 +686,7 @@ create_context['forward-compatible flag with 3.0'] = > PlainExecTest(['glx-create- > > create_context_profile = Group(); > glx['GLX_ARB_create_context_profile'] = create_context_profile > +create_context_profile['3.2 core profile required'] = > PlainExecTest(['glx-create-context-core-profile']) > create_context_profile['invalid profile'] = > PlainExecTest(['glx-create-context-invalid-profile']) > > texturing = Group() > diff --git a/tests/spec/glx_arb_create_context/CMakeLists.gl.txt > b/tests/spec/glx_arb_create_context/CMakeLists.gl.txt > index 94c6d19..f318266 100644 > --- a/tests/spec/glx_arb_create_context/CMakeLists.gl.txt > +++ b/tests/spec/glx_arb_create_context/CMakeLists.gl.txt > @@ -22,6 +22,7 @@ IF(BUILD_GLX_TESTS) > link_libraries ( > ${X11_X11_LIB} > ) > + piglit_add_executable (glx-create-context-core-profile core-profile.c > common.c) > piglit_add_executable (glx-create-context-default-major-version > default-major-version.c common.c) > piglit_add_executable (glx-create-context-default-minor-version > default-minor-version.c common.c) > piglit_add_executable (glx-create-context-invalid-attribute > invalid-attribute.c common.c) > diff --git a/tests/spec/glx_arb_create_context/core-profile.c > b/tests/spec/glx_arb_create_context/core-profile.c > new file mode 100644 > index 0000000..0c98bc2 > --- /dev/null > +++ b/tests/spec/glx_arb_create_context/core-profile.c > @@ -0,0 +1,108 @@ > +/* 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. > + */ > +#include "piglit-util.h" > +#include "piglit-glx-util.h" > +#include "common.h" > + > +int main(int argc, char **argv) > +{ > + static const int attribs[] = { > + GLX_CONTEXT_PROFILE_MASK_ARB, > + GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB, > + GLX_CONTEXT_MAJOR_VERSION_ARB, > + 3, > + GLX_CONTEXT_MINOR_VERSION_ARB, > + 2, > + None > + }; > + > + bool pass = true; > + bool got_core = false; > + bool got_compatibility = false; > + GLXContext ctx; > + > + > + GLX_ARB_create_context_setup(); > + piglit_require_glx_extension(dpy, "GLX_ARB_create_context_profile"); > + > + /* The GLX_ARB_create_context_profile spec says: > + * > + * "All OpenGL 3.2 implementations are required to implement the > + * core profile, but implementation of the compatibility profile > + * is optional." > + * > + * If it is possible to create a context with the compatibility > + * profile, then it must also be possible to create a context with the > + * core profile. Conversely, if it is not possible to create a > + * context with the core profile, it must also not possible to create > + * a context with the compatibility profile. > + */ > + ctx = glXCreateContextAttribsARB(dpy, fbconfig, NULL, True, > + attribs + 2); > + XSync(dpy, 0); > + > + if (ctx != NULL) { > + glXDestroyContext(dpy, ctx); > + got_core = true; > + } else { > + /* The GLX_ARB_create_context_profile spec says: > + * > + * "* If <config> does not support compatible OpenGL > + * contexts providing the requested API major and minor > + * version, forward-compatible flag, and debug context > + * flag, GLXBadFBConfig is generated." > + */ > + if (!validate_glx_error_code(Success, GLXBadFBConfig)) > + pass = false; > + } > + > + ctx = glXCreateContextAttribsARB(dpy, fbconfig, NULL, True, > + attribs); > + XSync(dpy, 0); > + > + if (ctx != NULL) { > + glXDestroyContext(dpy, ctx); > + got_compatibility = true; > + } else { > + /* The GLX_ARB_create_context_profile spec says: > + * > + * "* If <config> does not support compatible OpenGL > + * contexts providing the requested API major and minor > + * version, forward-compatible flag, and debug context > + * flag, GLXBadFBConfig is generated." > + */ > + if (!validate_glx_error_code(Success, GLXBadFBConfig)) > + pass = false; > + } > + > + GLX_ARB_create_context_teardown(); > + > + if (!got_core && got_compatibility) { > + fprintf(stderr, > + "Compatibility profile context was created, but core " > + "context was not.\n"); > + pass = false; > + } > + > + piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL); > + return 0; > +}
This test attempts to create a core profile in only one way: by omitting GLX_CONTEXT_PROFILE_MASK, and relying on its default value. I quickly scanned the rest of this series, and was unable to find a test that set GLX_CONTEXT_PROFILE_MASK = GLX_CONTEXT_CORE_PROFILE with the intention that glXCreateContext would pass. That's a path that needs testing. I'm thinking that this test should have three bools, named something like this, got_compatibility got_core_with_mask_omitted got_core_with_mask_set and check that got_core_with_mask_omitted if and only if got_core_with_mask_set. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQIcBAEBAgAGBQJP2QVjAAoJEAIvNt057x8if9kP/irwx/VAJItxF77Ex+p1xIPr stY7IH4iS2EI+QK9EW7GlLOqKtvubCE2CA6mKRvehtq8dUnde1LGYzAUhgO7NZjT MkrbdpfdXAe0/EyWb298PPI+ZT/C8/cqAANmsw3gcJFqv3i4OOgcolhlK2QThyl4 XKdMbU0XH0pVv/mXR+AicuV9CkmWYYd4ek+2gmDCXJtUWIIYheShvM9e2zcMXYPI 0ky/IH6FV5aeW6jTyg1KaLXgXO06g99elGu70wJ4F7FRR8tKcJ8x67qMeBdU9Jnu gl+W5RdOJryiGT3smzLmDdeGu0KD510n4HFWlpdcOTVW5oYSb+oiZAA5VGGKlEXp X+/PX8Uv9YjG/CnkkPtpKyAnB33EXwkAtbYmtf13V5D9fDDdPZOcfVLJ6u3ggXgn O3Uorj6yCVazZqElhHaVgyMxxZY0Cg1Nom9XUQEEfG+YiGKeWMca7UFEEWHDf77i IhiHArBMqj+85pWwvzM8qz2pOiRCZCksBBmhEilTcxriSSEDGqFdzWu4tX5DdJJM cmVNhXZEeEvT5VX9/KVlQlsGN3y8tMs5fnnB8qsseY8ti0BndmZC4u6buise2whj KcjnV54CL0w/V/zIO8NPhUsPwRz51GZpaVr7ohvJYaJB7Zafy5oiBgJxnwRAkkjj UQ3m/DxBvjAAVsICbpev =NxqC -----END PGP SIGNATURE----- _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit