egl+glx: Always support no_error contexts.
Since we know we're loading this Mesa build, we know that no_error is always supported (the renderer query always returned true). Reviewed-by: Adam Jackson <ajax@redhat.com> Acked-by: Eric Engestrom <eric@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20069>
This commit is contained in:
@@ -1847,8 +1847,8 @@ struct __DRIrobustnessExtensionRec {
|
|||||||
* Existence of this extension means the driver can accept the
|
* Existence of this extension means the driver can accept the
|
||||||
* __DRI_CTX_FLAG_NO_ERROR flag.
|
* __DRI_CTX_FLAG_NO_ERROR flag.
|
||||||
*
|
*
|
||||||
* This extension is deprecated, and modern loaders will not use it. Please
|
* This extension is deprecated, and modern Mesa knows that it's always
|
||||||
* use __DRI2_RENDERER_HAS_NO_ERROR_CONTEXT instead.
|
* supported.
|
||||||
*
|
*
|
||||||
* Not used by the X server.
|
* Not used by the X server.
|
||||||
*/
|
*/
|
||||||
@@ -1932,7 +1932,6 @@ typedef struct __DRIconfigOptionsExtensionRec {
|
|||||||
#define __DRI2_RENDERER_HAS_FRAMEBUFFER_SRGB 0x000c
|
#define __DRI2_RENDERER_HAS_FRAMEBUFFER_SRGB 0x000c
|
||||||
|
|
||||||
#define __DRI2_RENDERER_PREFER_BACK_BUFFER_REUSE 0x000f
|
#define __DRI2_RENDERER_PREFER_BACK_BUFFER_REUSE 0x000f
|
||||||
#define __DRI2_RENDERER_HAS_NO_ERROR_CONTEXT 0x0010
|
|
||||||
|
|
||||||
typedef struct __DRI2rendererQueryExtensionRec __DRI2rendererQueryExtension;
|
typedef struct __DRI2rendererQueryExtensionRec __DRI2rendererQueryExtension;
|
||||||
struct __DRI2rendererQueryExtensionRec {
|
struct __DRI2rendererQueryExtensionRec {
|
||||||
|
@@ -875,6 +875,7 @@ dri2_setup_screen(_EGLDisplay *disp)
|
|||||||
|
|
||||||
assert(dri2_dpy->image_driver || dri2_dpy->dri2 || dri2_dpy->swrast);
|
assert(dri2_dpy->image_driver || dri2_dpy->dri2 || dri2_dpy->swrast);
|
||||||
disp->Extensions.KHR_create_context = EGL_TRUE;
|
disp->Extensions.KHR_create_context = EGL_TRUE;
|
||||||
|
disp->Extensions.KHR_create_context_no_error = EGL_TRUE;
|
||||||
disp->Extensions.KHR_no_config_context = EGL_TRUE;
|
disp->Extensions.KHR_no_config_context = EGL_TRUE;
|
||||||
disp->Extensions.KHR_surfaceless_context = EGL_TRUE;
|
disp->Extensions.KHR_surfaceless_context = EGL_TRUE;
|
||||||
|
|
||||||
@@ -894,10 +895,6 @@ dri2_setup_screen(_EGLDisplay *disp)
|
|||||||
if (dri2_dpy->robustness)
|
if (dri2_dpy->robustness)
|
||||||
disp->Extensions.EXT_create_context_robustness = EGL_TRUE;
|
disp->Extensions.EXT_create_context_robustness = EGL_TRUE;
|
||||||
|
|
||||||
if (dri2_renderer_query_integer(dri2_dpy,
|
|
||||||
__DRI2_RENDERER_HAS_NO_ERROR_CONTEXT))
|
|
||||||
disp->Extensions.KHR_create_context_no_error = EGL_TRUE;
|
|
||||||
|
|
||||||
if (dri2_dpy->fence) {
|
if (dri2_dpy->fence) {
|
||||||
disp->Extensions.KHR_fence_sync = EGL_TRUE;
|
disp->Extensions.KHR_fence_sync = EGL_TRUE;
|
||||||
disp->Extensions.KHR_wait_sync = EGL_TRUE;
|
disp->Extensions.KHR_wait_sync = EGL_TRUE;
|
||||||
|
@@ -18,7 +18,6 @@
|
|||||||
* - \c __DRI2_RENDERER_OPENGL_COMPATIBLITY_PROFILE_VERSION
|
* - \c __DRI2_RENDERER_OPENGL_COMPATIBLITY_PROFILE_VERSION
|
||||||
* - \c __DRI2_RENDERER_ES_PROFILE_VERSION
|
* - \c __DRI2_RENDERER_ES_PROFILE_VERSION
|
||||||
* - \c __DRI2_RENDERER_ES2_PROFILE_VERSION
|
* - \c __DRI2_RENDERER_ES2_PROFILE_VERSION
|
||||||
* - \c __DRI2_RENDERER_HAS_NO_ERROR_CONTEXT
|
|
||||||
*
|
*
|
||||||
* \returns
|
* \returns
|
||||||
* Zero if a recognized value of \c param is supplied, -1 otherwise.
|
* Zero if a recognized value of \c param is supplied, -1 otherwise.
|
||||||
@@ -69,9 +68,6 @@ driQueryRendererIntegerCommon(struct dri_screen *screen, int param, unsigned int
|
|||||||
value[0] = screen->max_gl_es2_version / 10;
|
value[0] = screen->max_gl_es2_version / 10;
|
||||||
value[1] = screen->max_gl_es2_version % 10;
|
value[1] = screen->max_gl_es2_version % 10;
|
||||||
return 0;
|
return 0;
|
||||||
case __DRI2_RENDERER_HAS_NO_ERROR_CONTEXT:
|
|
||||||
value[0] = GL_TRUE;
|
|
||||||
return 0;
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@@ -965,6 +965,7 @@ dri2BindExtensions(struct dri2_screen *psc, struct glx_display * priv,
|
|||||||
|
|
||||||
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context");
|
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context");
|
||||||
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_profile");
|
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_profile");
|
||||||
|
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_no_error");
|
||||||
__glXEnableDirectExtension(&psc->base, "GLX_EXT_no_config_context");
|
__glXEnableDirectExtension(&psc->base, "GLX_EXT_no_config_context");
|
||||||
|
|
||||||
if ((mask & ((1 << __DRI_API_GLES) |
|
if ((mask & ((1 << __DRI_API_GLES) |
|
||||||
@@ -1000,15 +1001,8 @@ dri2BindExtensions(struct dri2_screen *psc, struct glx_display * priv,
|
|||||||
if (psc->texBuffer)
|
if (psc->texBuffer)
|
||||||
__glXEnableDirectExtension(&psc->base, "GLX_EXT_texture_from_pixmap");
|
__glXEnableDirectExtension(&psc->base, "GLX_EXT_texture_from_pixmap");
|
||||||
|
|
||||||
if (psc->rendererQuery) {
|
if (psc->rendererQuery)
|
||||||
__glXEnableDirectExtension(&psc->base, "GLX_MESA_query_renderer");
|
__glXEnableDirectExtension(&psc->base, "GLX_MESA_query_renderer");
|
||||||
unsigned int no_error = 0;
|
|
||||||
if (psc->rendererQuery->queryInteger(psc->driScreen,
|
|
||||||
__DRI2_RENDERER_HAS_NO_ERROR_CONTEXT,
|
|
||||||
&no_error) == 0 && no_error)
|
|
||||||
__glXEnableDirectExtension(&psc->base,
|
|
||||||
"GLX_ARB_create_context_no_error");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
|
@@ -739,6 +739,7 @@ dri3_bind_extensions(struct dri3_screen *psc, struct glx_display * priv,
|
|||||||
|
|
||||||
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context");
|
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context");
|
||||||
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_profile");
|
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_profile");
|
||||||
|
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_no_error");
|
||||||
__glXEnableDirectExtension(&psc->base, "GLX_EXT_no_config_context");
|
__glXEnableDirectExtension(&psc->base, "GLX_EXT_no_config_context");
|
||||||
|
|
||||||
if ((mask & ((1 << __DRI_API_GLES) |
|
if ((mask & ((1 << __DRI_API_GLES) |
|
||||||
@@ -779,16 +780,8 @@ dri3_bind_extensions(struct dri3_screen *psc, struct glx_display * priv,
|
|||||||
"GLX_ARB_context_flush_control");
|
"GLX_ARB_context_flush_control");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (psc->rendererQuery) {
|
if (psc->rendererQuery)
|
||||||
__glXEnableDirectExtension(&psc->base, "GLX_MESA_query_renderer");
|
__glXEnableDirectExtension(&psc->base, "GLX_MESA_query_renderer");
|
||||||
unsigned int no_error = 0;
|
|
||||||
if (psc->rendererQuery->queryInteger(psc->driScreen,
|
|
||||||
__DRI2_RENDERER_HAS_NO_ERROR_CONTEXT,
|
|
||||||
&no_error) == 0 && no_error) {
|
|
||||||
__glXEnableDirectExtension(&psc->base,
|
|
||||||
"GLX_ARB_create_context_no_error");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
|
@@ -811,6 +811,7 @@ driswBindExtensions(struct drisw_screen *psc, const __DRIextension **extensions)
|
|||||||
__glXEnableDirectExtension(&psc->base, "GLX_SGI_make_current_read");
|
__glXEnableDirectExtension(&psc->base, "GLX_SGI_make_current_read");
|
||||||
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context");
|
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context");
|
||||||
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_profile");
|
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_profile");
|
||||||
|
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_no_error");
|
||||||
__glXEnableDirectExtension(&psc->base, "GLX_EXT_no_config_context");
|
__glXEnableDirectExtension(&psc->base, "GLX_EXT_no_config_context");
|
||||||
|
|
||||||
/* DRISW version >= 2 implies support for OpenGL ES. */
|
/* DRISW version >= 2 implies support for OpenGL ES. */
|
||||||
@@ -848,13 +849,6 @@ driswBindExtensions(struct drisw_screen *psc, const __DRIextension **extensions)
|
|||||||
|
|
||||||
if (psc->rendererQuery) {
|
if (psc->rendererQuery) {
|
||||||
__glXEnableDirectExtension(&psc->base, "GLX_MESA_query_renderer");
|
__glXEnableDirectExtension(&psc->base, "GLX_MESA_query_renderer");
|
||||||
unsigned int no_error = 0;
|
|
||||||
if (psc->rendererQuery->queryInteger(psc->driScreen,
|
|
||||||
__DRI2_RENDERER_HAS_NO_ERROR_CONTEXT,
|
|
||||||
&no_error) == 0 && no_error) {
|
|
||||||
__glXEnableDirectExtension(&psc->base,
|
|
||||||
"GLX_ARB_create_context_no_error");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (psc->kopper) {
|
if (psc->kopper) {
|
||||||
|
Reference in New Issue
Block a user