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>
This commit is contained in:
parent
145992890c
commit
bfad9e75c0
|
@ -287,7 +287,7 @@ dri2_create_context_attribs(struct glx_screen *base,
|
||||||
if (pcp->driContext == NULL)
|
if (pcp->driContext == NULL)
|
||||||
goto error_exit;
|
goto error_exit;
|
||||||
|
|
||||||
pcp->base.vtable = &dri2_context_vtable;
|
pcp->base.vtable = base->context_vtable;
|
||||||
|
|
||||||
return &pcp->base;
|
return &pcp->base;
|
||||||
|
|
||||||
|
@ -1275,6 +1275,7 @@ dri2CreateScreen(int screen, struct glx_display * priv)
|
||||||
psc->driver_configs = driver_configs;
|
psc->driver_configs = driver_configs;
|
||||||
|
|
||||||
psc->base.vtable = &dri2_screen_vtable;
|
psc->base.vtable = &dri2_screen_vtable;
|
||||||
|
psc->base.context_vtable = &dri2_context_vtable;
|
||||||
psp = &psc->vtable;
|
psp = &psc->vtable;
|
||||||
psc->base.driScreen = psp;
|
psc->base.driScreen = psp;
|
||||||
psp->destroyScreen = dri2DestroyScreen;
|
psp->destroyScreen = dri2DestroyScreen;
|
||||||
|
|
|
@ -330,7 +330,7 @@ dri3_create_context_attribs(struct glx_screen *base,
|
||||||
if (pcp->driContext == NULL)
|
if (pcp->driContext == NULL)
|
||||||
goto error_exit;
|
goto error_exit;
|
||||||
|
|
||||||
pcp->base.vtable = &dri3_context_vtable;
|
pcp->base.vtable = base->context_vtable;
|
||||||
|
|
||||||
return &pcp->base;
|
return &pcp->base;
|
||||||
|
|
||||||
|
@ -988,6 +988,7 @@ dri3_create_screen(int screen, struct glx_display * priv)
|
||||||
psc->driver_configs = driver_configs;
|
psc->driver_configs = driver_configs;
|
||||||
|
|
||||||
psc->base.vtable = &dri3_screen_vtable;
|
psc->base.vtable = &dri3_screen_vtable;
|
||||||
|
psc->base.context_vtable = &dri3_context_vtable;
|
||||||
psp = &psc->vtable;
|
psp = &psc->vtable;
|
||||||
psc->base.driScreen = psp;
|
psc->base.driScreen = psp;
|
||||||
psp->destroyScreen = dri3_destroy_screen;
|
psp->destroyScreen = dri3_destroy_screen;
|
||||||
|
|
|
@ -602,7 +602,7 @@ drisw_create_context_attribs(struct glx_screen *base,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
pcp->base.vtable = &drisw_context_vtable;
|
pcp->base.vtable = base->context_vtable;
|
||||||
|
|
||||||
return &pcp->base;
|
return &pcp->base;
|
||||||
}
|
}
|
||||||
|
@ -902,6 +902,7 @@ driswCreateScreen(int screen, struct glx_display *priv)
|
||||||
psc->driver_configs = driver_configs;
|
psc->driver_configs = driver_configs;
|
||||||
|
|
||||||
psc->base.vtable = &drisw_screen_vtable;
|
psc->base.vtable = &drisw_screen_vtable;
|
||||||
|
psc->base.context_vtable = &drisw_context_vtable;
|
||||||
psp = &psc->vtable;
|
psp = &psc->vtable;
|
||||||
psc->base.driScreen = psp;
|
psc->base.driScreen = psp;
|
||||||
psp->destroyScreen = driswDestroyScreen;
|
psp->destroyScreen = driswDestroyScreen;
|
||||||
|
|
|
@ -502,6 +502,7 @@ struct glx_screen_vtable {
|
||||||
struct glx_screen
|
struct glx_screen
|
||||||
{
|
{
|
||||||
const struct glx_screen_vtable *vtable;
|
const struct glx_screen_vtable *vtable;
|
||||||
|
const struct glx_context_vtable *context_vtable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \name Storage for the GLX vendor, version, and extension strings
|
* \name Storage for the GLX vendor, version, and extension strings
|
||||||
|
|
Loading…
Reference in New Issue