[Mesa-dev] Core Profile and extension strings question
Ian Romanick
idr at freedesktop.org
Tue Oct 22 19:01:34 CEST 2013
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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list