summaryrefslogtreecommitdiff
path: root/src/glx
diff options
context:
space:
mode:
authorAdam Jackson <ajax@redhat.com>2021-08-06 17:53:38 -0400
committerMarge Bot <eric+marge@anholt.net>2021-08-18 21:11:02 +0000
commitbfad9e75c0421b6665e35ee9731a71bd50366c68 (patch)
tree24d3b9f57fa795b991501c69c8967941ba5f5c2e /src/glx
parent145992890caeb24c02bd358f7a96dc1d8b730626 (diff)
downloadmesa-bfad9e75c0421b6665e35ee9731a71bd50366c68.tar.gz
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>
Diffstat (limited to 'src/glx')
-rw-r--r--src/glx/dri2_glx.c3
-rw-r--r--src/glx/dri3_glx.c3
-rw-r--r--src/glx/drisw_glx.c3
-rw-r--r--src/glx/glxclient.h1
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