glx: Require __DRI_SWRAST >= 4 for doing swrast.
authorEmma Anholt <emma@anholt.net>
Mon, 28 Nov 2022 19:27:09 +0000 (11:27 -0800)
committerMarge Bot <emma+marge@anholt.net>
Thu, 1 Dec 2022 09:17:31 +0000 (09:17 +0000)
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>

src/glx/drisw_glx.c

index 393ea71..775d52b 100644 (file)
@@ -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;