dri2: Fix bug in attribute handling for non-desktop OpenGL contexts
Previously an error would be generated if any attributes were specified when creating a non-desktop OpenGL context. This was a mistake, and it will prevent old drivers from working with new EGL libraries that add support for the createContextAttribs interface. Instead, match the behavior of EGL_KHR_create_context: allow versions that make sense, reject non-zero flags. NOTE: This is a candidate for the 8.0 branch. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Cc: Kristian Høgsberg <krh@bitplanet.net> Reviewed-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
This commit is contained in:
parent
102617bc52
commit
63adb6b9ea
|
@ -197,12 +197,6 @@ dri2CreateContextAttribs(__DRIscreen *screen, int api,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mesa_api != API_OPENGL && num_attribs != 0) {
|
|
||||||
*error = __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE;
|
|
||||||
assert(!"Should not get here.");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (unsigned i = 0; i < num_attribs; i++) {
|
for (unsigned i = 0; i < num_attribs; i++) {
|
||||||
switch (attribs[i * 2]) {
|
switch (attribs[i * 2]) {
|
||||||
case __DRI_CTX_ATTRIB_MAJOR_VERSION:
|
case __DRI_CTX_ATTRIB_MAJOR_VERSION:
|
||||||
|
@ -224,6 +218,23 @@ dri2CreateContextAttribs(__DRIscreen *screen, int api,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The EGL_KHR_create_context spec says:
|
||||||
|
*
|
||||||
|
* "Flags are only defined for OpenGL context creation, and specifying
|
||||||
|
* a flags value other than zero for other types of contexts,
|
||||||
|
* including OpenGL ES contexts, will generate an error."
|
||||||
|
*
|
||||||
|
* The GLX_EXT_create_context_es2_profile specification doesn't say
|
||||||
|
* anything specific about this case. However, none of the known flags
|
||||||
|
* have any meaning in an ES context, so this seems safe.
|
||||||
|
*/
|
||||||
|
if (mesa_api != __DRI_API_OPENGL
|
||||||
|
&& mesa_api != __DRI_API_OPENGL_CORE
|
||||||
|
&& flags != 0) {
|
||||||
|
*error = __DRI_CTX_ERROR_BAD_FLAG;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* There are no forward-compatible contexts before OpenGL 3.0. The
|
/* There are no forward-compatible contexts before OpenGL 3.0. The
|
||||||
* GLX_ARB_create_context spec says:
|
* GLX_ARB_create_context spec says:
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue