glx: Store the context vtable on the glx screen
authorAdam Jackson <ajax@redhat.com>
Fri, 6 Aug 2021 21:53:38 +0000 (17:53 -0400)
committerMarge Bot <eric+marge@anholt.net>
Wed, 18 Aug 2021 21:11:02 +0000 (21:11 +0000)
Again this is rewriting part of driX_create_context_attribs to be
caller-agnostic, so that we can eventually unify it among the DRI
backends.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12456>

src/glx/dri2_glx.c
src/glx/dri3_glx.c
src/glx/drisw_glx.c
src/glx/glxclient.h

index 4247cb7b32c2b8ef74e9b8d446557037d057ec5b..a3ad50941c9eda7bb56a19925f32621db7b15e07 100644 (file)
@@ -287,7 +287,7 @@ dri2_create_context_attribs(struct glx_screen *base,
    if (pcp->driContext == NULL)
       goto error_exit;
 
-   pcp->base.vtable = &dri2_context_vtable;
+   pcp->base.vtable = base->context_vtable;
 
    return &pcp->base;
 
@@ -1275,6 +1275,7 @@ dri2CreateScreen(int screen, struct glx_display * priv)
    psc->driver_configs = driver_configs;
 
    psc->base.vtable = &dri2_screen_vtable;
+   psc->base.context_vtable = &dri2_context_vtable;
    psp = &psc->vtable;
    psc->base.driScreen = psp;
    psp->destroyScreen = dri2DestroyScreen;
index e73cba6028cb756e44210f2f5dcca6d5777d9f88..0bccefdb041058cb6cebdcdeeeae3161fd47c9ca 100644 (file)
@@ -330,7 +330,7 @@ dri3_create_context_attribs(struct glx_screen *base,
    if (pcp->driContext == NULL)
       goto error_exit;
 
-   pcp->base.vtable = &dri3_context_vtable;
+   pcp->base.vtable = base->context_vtable;
 
    return &pcp->base;
 
@@ -988,6 +988,7 @@ dri3_create_screen(int screen, struct glx_display * priv)
    psc->driver_configs = driver_configs;
 
    psc->base.vtable = &dri3_screen_vtable;
+   psc->base.context_vtable = &dri3_context_vtable;
    psp = &psc->vtable;
    psc->base.driScreen = psp;
    psp->destroyScreen = dri3_destroy_screen;
index 02fd2d5aad77a6e6d1783730d57080bdb029f99c..8c48165bb24eb4d244ba41fb1b3f6391a4a55df8 100644 (file)
@@ -602,7 +602,7 @@ drisw_create_context_attribs(struct glx_screen *base,
       return NULL;
    }
 
-   pcp->base.vtable = &drisw_context_vtable;
+   pcp->base.vtable = base->context_vtable;
 
    return &pcp->base;
 }
@@ -902,6 +902,7 @@ driswCreateScreen(int screen, struct glx_display *priv)
    psc->driver_configs = driver_configs;
 
    psc->base.vtable = &drisw_screen_vtable;
+   psc->base.context_vtable = &drisw_context_vtable;
    psp = &psc->vtable;
    psc->base.driScreen = psp;
    psp->destroyScreen = driswDestroyScreen;
index 68df42f53b0ee3acfc19da970a5b37467a68a4f8..9e304b75761e879abc6690cf3189f7b9cd72a14f 100644 (file)
@@ -502,6 +502,7 @@ struct glx_screen_vtable {
 struct glx_screen
 {
    const struct glx_screen_vtable *vtable;
+   const struct glx_context_vtable *context_vtable;
 
     /**
      * \name Storage for the GLX vendor, version, and extension strings