[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