Bug 80821

Summary: When LIBGL_ALWAYS_SOFTWARE is set, KHR_create_context is not supported
Product: Mesa Reporter: Kalrish Bäakjen <kalrish.antrax>
Component: EGLAssignee: mesa-dev
Status: RESOLVED FIXED QA Contact:
Severity: enhancement    
Priority: medium CC: genpfault, kalrish.antrax
Version: git   
Hardware: All   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: Enable KHR_create_context in EGL state tracker

Description Kalrish Bäakjen 2014-07-02 16:50:48 UTC
When the environment variable LIBGL_ALWAYS_SOFTWARE is set (to request the use of the LLVMpipe driver), EGL does not support the KHR_create_context extension, and thus does not support
 ·  specifying the minor version of the API (i.e. asking for an OpenGL 3.x context), which is quite inconvenient
 ·  specifying context flags, such as the debug flag or the forward-compatible flag, which is also inconvenient
 ·  specifying the OpenGL profile mask, i.e., requesting a core or compatibility context, which is currently irrelevant because Mesa does not support the later flavour of context
 ·  requesting support for OpenGL ES 3 in an EGL configuration (note that creating an OpenGL ES 3 context is still possible, with EGL_CONTEXT_CLIENT_VERSION)

On many systems, mainly for development purposes, the LLVMpipe driver is the only way to try newer versions of OpenGL. That the KHR_create_context extension is not supported prevents the creation of, for instance, an OpenGL 3.3 context, which would otherwise be supported by LLVMpipe. Could you please implement the extension for software EGL?

Tip: As a workaround for this issue, the OpenGL version can be forced by the MESA_GL_VERSION_OVERRIDE and MESA_GLSL_VERSION_OVERRIDE environment variables, as described in http://www.mesa3d.org/envvars.html.
Comment 1 Kalrish Bäakjen 2014-09-27 12:09:51 UTC
(In reply to comment #0)
> Tip: As a workaround for this issue, the OpenGL version can be forced by the
> MESA_GL_VERSION_OVERRIDE and MESA_GLSL_VERSION_OVERRIDE environment
> variables, as described in http://www.mesa3d.org/envvars.html.

Sorry; it turns out those variables only affect GL's reported version, not GL's _real_ version.
Comment 2 Matt Turner 2014-09-27 19:33:02 UTC
Presumably you mean EGL_KHR_create_context?

(GL 3.3 is available on Intel Sandybridge and newer, new Nvidia and new Radeons. Why do you need LLVMpipe for GL 3.3?)
Comment 3 Kalrish Bäakjen 2014-09-27 19:41:44 UTC
(In reply to comment #2)
> Presumably you mean EGL_KHR_create_context?
> 
> (GL 3.3 is available on Intel Sandybridge and newer, new Nvidia and new
> Radeons. Why do you need LLVMpipe for GL 3.3?)

Oh, yes. That
Comment 4 Kalrish Bäakjen 2014-09-27 19:46:08 UTC
(In reply to comment #2)
> Presumably you mean EGL_KHR_create_context?
> 
> (GL 3.3 is available on Intel Sandybridge and newer, new Nvidia and new
> Radeons. Why do you need LLVMpipe for GL 3.3?)

Oh, yes. That was a typo. Thanks.

(I need it because my GPU is under r200, and I would like to use versions newer than 1.3, along with EGL.)
Comment 5 Charles Huber 2015-04-10 16:16:43 UTC
Created attachment 115006 [details] [review]
Enable KHR_create_context in EGL state tracker

Works For Me(TM), semi-depends on this (https://bugs.freedesktop.org/attachment.cgi?id=115005) patch.
Comment 6 Emil Velikov 2015-09-09 10:41:21 UTC
Props to Boyan, a slightly different version has landed for the DRI based libEGL.
On the st/egl side, it has been dropped from upstream due lack of interested maintainer :'(

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.