On 10/22/2013 09:00 AM, Courtney Goeltzenleuchter wrote: > I'm curious about what the proper behavior should be for extensions that > have been integrated into core. In particular I'm looking at > ARB_texture_cube_map as we are using that in one of the ARB_texture_view > piglit tests and when run on the Mesa driver the piglit > function piglit_require_extension("GL_ARB_texture_cube_map") fails.
We've basically taken a page from Apple's playbook. See the extension list at https://developer.apple.com/graphicsimaging/opengl/capabilities/. They don't list *anything* that's part of OpenGL 3.2 Core Profile. Applications have to specifically request a core profile context, so we're assuming that they're not going to check for extensions that have been part of core for years. We set the cut-off at GL 1.5. See 0fef911 and the few patches just before it. This has been Mesa behavior for over a year, and we haven't encountered any application problems. > Running with MESA_INFO on I see: > Mesa: Mesa GL_VERSION = 3.1 (Core Profile) Mesa 9.3.0-devel (git-0398dd3) > Mesa: Mesa GL_RENDERER = Mesa DRI Intel(R) Ivybridge Server > Mesa: Mesa GL_VENDOR = Intel Open Source Technology Center > Mesa: Mesa GL_EXTENSIONS does not contain ARB_texture_cube_map > > When we run the same test on the NVIDIA closed source driver the test > does find an ARB_texture_cube_map extension. It also is given a > compatibility context and not a Core Profile context. This will depend on how you set the config.supports_gl_core_version and config.supports_gl_compat_version values in the test. I believe the framework first tries the requested compatibility version. If that fails, it tries the requested core version. We only support up to 3.0 in compatibility profile. There are quite a few piglit tests that do things like (from tests/spec/arb_sync/DeleteSync.c): if (piglit_get_gl_version() < 32) { piglit_require_extension("GL_ARB_sync"); } However, there are probably many other tests that have latent bugs in core profile checking because they always get a sufficiently high compatibility profile version. > The spec says that deprecated features may not be available in newer > Core Profiles. ARB_texture_cube_map has not been deprecated, it's been > promoted into core. According to the OpenGL Spec: > > H.3.2 > Promoting Extensions to Core Features > Extensions can be promoted to required core features in later > revisions of OpenGL. > When this occurs, the extension specifications are merged into the > core specifica- > tion. Functions and enumerants that are part of such promoted > extensions will have > the ARB, KHR, EXT, or vendor affix removed. > I*mplementations of such later revisions should continue to export > the name* > *strings of promoted extensions in the EXTENSIONS strings and > continue to support* > *the affixed versions of functions and enumerants as a transition aid.* > For descriptions of extensions promoted to core features in OpenGL > 1.3 and > beyond, see the corresponding version of the OpenGL specification, > or the de- > scriptions of that version in version-specific appendices to later > versions of the > specification. > > > This says to me that the Mesa driver should be listing > GL_ARB_texture_cube_map in it's extension string. So, why isn't it > there? What am I missing? > > What should the piglit test do? > Is this going to be a compatibility issue for applications? > > Thanks, > Courtney > > -- > Courtney Goeltzenleuchter > LunarG > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev