mesa: enable OpenGL 3.1 with ARB_compatibility
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de> Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
605a7f6db5
commit
a0c8b49284
|
@ -24,10 +24,10 @@ not started
|
|||
|
||||
# OpenGL Core and Compatibility context support
|
||||
|
||||
OpenGL 3.1 and later versions are only supported with the Core profile.
|
||||
There are no plans to support GL_ARB_compatibility. The last supported OpenGL
|
||||
version with all deprecated features is 3.0. Some of the later GL features
|
||||
are exposed in the 3.0 context as extensions.
|
||||
Some drivers do not support the Compatibility profile or ARB_compatibility.
|
||||
Such drivers are limited to OpenGL 3.0 if the Core profile is not requested
|
||||
by applications. Some of the later GL features are exposed in the 3.0 context
|
||||
as extensions.
|
||||
|
||||
|
||||
Feature Status
|
||||
|
|
|
@ -26,8 +26,8 @@ Mesa 18.1.0 implements the OpenGL 4.5 API, but the version reported by
|
|||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 4.5. OpenGL
|
||||
4.5 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
4.5 is <strong>only</strong> available if requested at context creation.
|
||||
Compatibility contexts may report a lower version depending on each driver.
|
||||
</p>
|
||||
|
||||
|
||||
|
@ -44,6 +44,7 @@ Note: some of the new features are only available with certain drivers.
|
|||
</p>
|
||||
|
||||
<ul>
|
||||
<li>OpenGL 3.1 with ARB_compatibility on nv50, nvc0, r600, radeonsi, softpipe, llvmpipe, svga</li>
|
||||
<li>GL_ARB_bindless_texture on nvc0/maxwell+</li>
|
||||
<li>GL_EXT_semaphore on radeonsi</li>
|
||||
<li>GL_EXT_semaphore_fd on radeonsi</li>
|
||||
|
|
|
@ -381,14 +381,6 @@ driCreateContextAttribs(__DRIscreen *screen, int api,
|
|||
}
|
||||
}
|
||||
|
||||
/* Mesa does not support the GL_ARB_compatibilty extension or the
|
||||
* compatibility profile. This means that we treat a API_OPENGL_COMPAT 3.1 as
|
||||
* API_OPENGL_CORE and reject API_OPENGL_COMPAT 3.2+.
|
||||
*/
|
||||
if (mesa_api == API_OPENGL_COMPAT &&
|
||||
ctx_config.major_version == 3 && ctx_config.minor_version == 1)
|
||||
mesa_api = API_OPENGL_CORE;
|
||||
|
||||
if (mesa_api == API_OPENGL_COMPAT
|
||||
&& ((ctx_config.major_version > 3)
|
||||
|| (ctx_config.major_version == 3 &&
|
||||
|
|
|
@ -580,11 +580,11 @@ _mesa_get_version(const struct gl_extensions *extensions,
|
|||
{
|
||||
switch (api) {
|
||||
case API_OPENGL_COMPAT:
|
||||
/* Disable GLSL 1.40 and later for legacy contexts.
|
||||
* This disallows creation of the GL 3.1 compatibility context. */
|
||||
/* Disable higher GLSL versions for legacy contexts.
|
||||
* This disallows creation of higher compatibility contexts. */
|
||||
if (!consts->AllowHigherCompatVersion) {
|
||||
if (consts->GLSLVersion > 130) {
|
||||
consts->GLSLVersion = 130;
|
||||
if (consts->GLSLVersion > 140) {
|
||||
consts->GLSLVersion = 140;
|
||||
}
|
||||
}
|
||||
/* fall through */
|
||||
|
@ -607,7 +607,7 @@ void
|
|||
_mesa_compute_version(struct gl_context *ctx)
|
||||
{
|
||||
if (ctx->Version)
|
||||
return;
|
||||
goto done;
|
||||
|
||||
ctx->Version = _mesa_get_version(&ctx->Extensions, &ctx->Const, ctx->API);
|
||||
ctx->Extensions.Version = ctx->Version;
|
||||
|
@ -615,7 +615,7 @@ _mesa_compute_version(struct gl_context *ctx)
|
|||
/* Make sure that the GLSL version lines up with the GL version. In some
|
||||
* cases it can be too high, e.g. if an extension is missing.
|
||||
*/
|
||||
if (ctx->API == API_OPENGL_CORE) {
|
||||
if (_mesa_is_desktop_gl(ctx) && ctx->Version >= 31) {
|
||||
switch (ctx->Version) {
|
||||
case 31:
|
||||
ctx->Const.GLSLVersion = 140;
|
||||
|
@ -651,6 +651,10 @@ _mesa_compute_version(struct gl_context *ctx)
|
|||
create_version_string(ctx, "OpenGL ES ");
|
||||
break;
|
||||
}
|
||||
|
||||
done:
|
||||
if (ctx->API == API_OPENGL_COMPAT && ctx->Version >= 31)
|
||||
ctx->Extensions.ARB_compatibility = GL_TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue