glx: Require __DRI_SWRAST >= 4 for doing swrast.
The only implementer in tree is v4. Reviewed-by: Adam Jackson <ajax@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20044>
This commit is contained in:
+14
-31
@@ -569,9 +569,6 @@ drisw_create_context_attribs(struct glx_screen *base,
|
||||
if (!psc->base.driScreen)
|
||||
return NULL;
|
||||
|
||||
if (psc->swrast->base.version < 3)
|
||||
return NULL;
|
||||
|
||||
*error = dri_convert_glx_attribs(num_attribs, attribs, &dca);
|
||||
if (*error != __DRI_CTX_ERROR_SUCCESS)
|
||||
return NULL;
|
||||
@@ -812,19 +809,15 @@ driswBindExtensions(struct drisw_screen *psc, const __DRIextension **extensions)
|
||||
int i;
|
||||
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_SGI_make_current_read");
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context");
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_profile");
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_EXT_no_config_context");
|
||||
|
||||
if (psc->swrast->base.version >= 3) {
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context");
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_ARB_create_context_profile");
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_EXT_no_config_context");
|
||||
|
||||
/* DRISW version >= 2 implies support for OpenGL ES.
|
||||
*/
|
||||
__glXEnableDirectExtension(&psc->base,
|
||||
"GLX_EXT_create_context_es_profile");
|
||||
__glXEnableDirectExtension(&psc->base,
|
||||
"GLX_EXT_create_context_es2_profile");
|
||||
}
|
||||
/* DRISW version >= 2 implies support for OpenGL ES. */
|
||||
__glXEnableDirectExtension(&psc->base,
|
||||
"GLX_EXT_create_context_es_profile");
|
||||
__glXEnableDirectExtension(&psc->base,
|
||||
"GLX_EXT_create_context_es2_profile");
|
||||
|
||||
if (psc->copySubBuffer)
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_MESA_copy_sub_buffer");
|
||||
@@ -835,11 +828,7 @@ driswBindExtensions(struct drisw_screen *psc, const __DRIextension **extensions)
|
||||
psc->texBuffer = (__DRItexBufferExtension *) extensions[i];
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_EXT_texture_from_pixmap");
|
||||
}
|
||||
/* DRISW version 3 is also required because GLX_MESA_query_renderer
|
||||
* requires GLX_ARB_create_context_profile.
|
||||
*/
|
||||
if (psc->swrast->base.version >= 3
|
||||
&& strcmp(extensions[i]->name, __DRI2_RENDERER_QUERY) == 0) {
|
||||
if (strcmp(extensions[i]->name, __DRI2_RENDERER_QUERY) == 0) {
|
||||
psc->rendererQuery = (__DRI2rendererQueryExtension *) extensions[i];
|
||||
__glXEnableDirectExtension(&psc->base, "GLX_MESA_query_renderer");
|
||||
unsigned int no_error = 0;
|
||||
@@ -975,21 +964,15 @@ driswCreateScreenDriver(int screen, struct glx_display *priv,
|
||||
psc->copySubBuffer = (__DRIcopySubBufferExtension *) extensions[i];
|
||||
}
|
||||
|
||||
if (psc->core == NULL || psc->swrast == NULL) {
|
||||
if (psc->core == NULL || psc->swrast == NULL || psc->swrast->base.version < 4) {
|
||||
ErrorMessageF("core dri extension not found\n");
|
||||
goto handle_error;
|
||||
}
|
||||
|
||||
if (psc->swrast->base.version >= 4) {
|
||||
psc->driScreen =
|
||||
psc->swrast->createNewScreen2(screen, loader_extensions_local,
|
||||
extensions,
|
||||
&driver_configs, psc);
|
||||
} else {
|
||||
psc->driScreen =
|
||||
psc->swrast->createNewScreen(screen, loader_extensions_local,
|
||||
&driver_configs, psc);
|
||||
}
|
||||
psc->driScreen =
|
||||
psc->swrast->createNewScreen2(screen, loader_extensions_local,
|
||||
extensions,
|
||||
&driver_configs, psc);
|
||||
if (psc->driScreen == NULL) {
|
||||
ErrorMessageF("glx: failed to create drisw screen\n");
|
||||
goto handle_error;
|
||||
|
||||
Reference in New Issue
Block a user