Mesa (main): glx: Store the context vtable on the glx screen

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Aug 18 22:18:19 UTC 2021


Module: Mesa
Branch: main
Commit: bfad9e75c0421b6665e35ee9731a71bd50366c68
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=bfad9e75c0421b6665e35ee9731a71bd50366c68

Author: Adam Jackson <ajax at redhat.com>
Date:   Fri Aug  6 17:53:38 2021 -0400

glx: Store the context vtable on the glx screen

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  | 3 ++-
 src/glx/dri3_glx.c  | 3 ++-
 src/glx/drisw_glx.c | 3 ++-
 src/glx/glxclient.h | 1 +
 4 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index 4247cb7b32c..a3ad50941c9 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -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;
diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c
index e73cba6028c..0bccefdb041 100644
--- a/src/glx/dri3_glx.c
+++ b/src/glx/dri3_glx.c
@@ -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;
diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c
index 02fd2d5aad7..8c48165bb24 100644
--- a/src/glx/drisw_glx.c
+++ b/src/glx/drisw_glx.c
@@ -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;
diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h
index 68df42f53b0..9e304b75761 100644
--- a/src/glx/glxclient.h
+++ b/src/glx/glxclient.h
@@ -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



More information about the mesa-commit mailing list