From 66e0d1262754edb6e0790ce84130159c1d9be70f Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 22 Jul 2024 10:44:15 -0400 Subject: [PATCH] glx: inline DRI_CORE functions Reviewed-by: Adam Jackson Part-of: --- src/glx/dri2_glx.c | 27 +++++++++++---------------- src/glx/dri2_priv.h | 1 - src/glx/dri3_glx.c | 25 ++++++++++--------------- src/glx/dri3_priv.h | 1 - src/glx/dri_common.c | 16 +++++++--------- src/glx/dri_common.h | 3 +-- src/glx/drisw_glx.c | 27 +++++++++++---------------- src/glx/drisw_priv.h | 1 - 8 files changed, 40 insertions(+), 61 deletions(-) diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c index 779d6d43efb..d091571e3f3 100644 --- a/src/glx/dri2_glx.c +++ b/src/glx/dri2_glx.c @@ -50,6 +50,7 @@ #include "dri2_priv.h" #include "loader.h" #include "loader_dri_helper.h" +#include "dri_util.h" #undef DRI2_MINOR #define DRI2_MINOR 1 @@ -90,13 +91,11 @@ merge_counter(uint32_t hi, uint32_t lo) static void dri2_destroy_context(struct glx_context *context) { - struct dri2_screen *psc = (struct dri2_screen *) context->psc; - driReleaseDrawables(context); free((char *) context->extensions); - psc->core->destroyContext(context->driContext); + driDestroyContext(context->driContext); free(context); } @@ -104,7 +103,6 @@ dri2_destroy_context(struct glx_context *context) static Bool dri2_bind_context(struct glx_context *context, GLXDrawable draw, GLXDrawable read) { - struct dri2_screen *psc = (struct dri2_screen *) context->psc; struct dri2_drawable *pdraw, *pread; __DRIdrawable *dri_draw = NULL, *dri_read = NULL; @@ -123,7 +121,7 @@ dri2_bind_context(struct glx_context *context, GLXDrawable draw, GLXDrawable rea else if (read != None) return GLXBadDrawable; - if (!psc->core->bindContext(context->driContext, dri_draw, dri_read)) + if (!driBindContext(context->driContext, dri_draw, dri_read)) return GLXBadContext; return Success; @@ -132,9 +130,7 @@ dri2_bind_context(struct glx_context *context, GLXDrawable draw, GLXDrawable rea static void dri2_unbind_context(struct glx_context *context) { - struct dri2_screen *psc = (struct dri2_screen *) context->psc; - - psc->core->unbindContext(context->driContext); + driUnbindContext(context->driContext); } static struct glx_context * @@ -260,7 +256,7 @@ dri2DestroyDrawable(__GLXDRIdrawable *base) struct glx_display *dpyPriv = psc->base.display; __glxHashDelete(dpyPriv->dri2Hash, pdraw->base.xDrawable); - psc->core->destroyDrawable(pdraw->driDrawable); + driDestroyDrawable(pdraw->driDrawable); /* If it's a GLX 1.3 drawables, we can destroy the DRI2 drawable * now, as the application explicitly asked to destroy the GLX @@ -314,7 +310,7 @@ dri2CreateDrawable(struct glx_screen *base, XID xDrawable, } if (__glxHashInsert(dpyPriv->dri2Hash, xDrawable, pdraw)) { - psc->core->destroyDrawable(pdraw->driDrawable); + driDestroyDrawable(pdraw->driDrawable); DRI2DestroyDrawable(psc->base.dpy, xDrawable); free(pdraw); return None; @@ -596,7 +592,7 @@ dri2DestroyScreen(struct glx_screen *base) struct dri2_screen *psc = (struct dri2_screen *) base; /* Free the direct rendering per screen data */ - psc->core->destroyScreen(psc->driScreen); + driDestroyScreen(psc->driScreen); driDestroyConfigs(psc->driver_configs); free(psc->driverName); close(psc->fd); @@ -876,7 +872,7 @@ dri2BindExtensions(struct dri2_screen *psc, struct glx_display * priv, const __DRIextension **extensions; int i; - extensions = psc->core->getExtensions(psc->driScreen); + extensions = driGetExtensions(psc->driScreen); __glXEnableDirectExtension(&psc->base, "GLX_EXT_swap_control"); __glXEnableDirectExtension(&psc->base, "GLX_SGI_swap_control"); @@ -1027,7 +1023,6 @@ dri2CreateScreen(int screen, struct glx_display * priv, bool driver_name_is_infe goto handle_error; static const struct dri_extension_match exts[] = { - { __DRI_CORE, 1, offsetof(struct dri2_screen, core), false }, { __DRI_DRI2, 5, offsetof(struct dri2_screen, dri2), false }, { __DRI_MESA, 2, offsetof(struct dri2_screen, mesa), false }, }; @@ -1047,8 +1042,8 @@ dri2CreateScreen(int screen, struct glx_display * priv, bool driver_name_is_infe dri2BindExtensions(psc, priv, driverName); - configs = driConvertConfigs(psc->core, psc->base.configs, driver_configs); - visuals = driConvertConfigs(psc->core, psc->base.visuals, driver_configs); + configs = driConvertConfigs(psc->base.configs, driver_configs); + visuals = driConvertConfigs(psc->base.visuals, driver_configs); if (!configs || !visuals) { ErrorMessageF("No matching fbConfigs or visuals found\n"); @@ -1140,7 +1135,7 @@ handle_error: if (visuals) glx_config_destroy_list(visuals); if (psc->driScreen) - psc->core->destroyScreen(psc->driScreen); + driDestroyScreen(psc->driScreen); psc->driScreen = NULL; if (psc->fd >= 0) close(psc->fd); diff --git a/src/glx/dri2_priv.h b/src/glx/dri2_priv.h index 376e977a9b7..a5f69aaed69 100644 --- a/src/glx/dri2_priv.h +++ b/src/glx/dri2_priv.h @@ -45,7 +45,6 @@ struct dri2_screen { __DRIscreen *driScreen; __GLXDRIscreen vtable; const __DRIdri2Extension *dri2; - const __DRIcoreExtension *core; const __DRImesaCoreExtension *mesa; const __DRI2flushExtension *f; diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c index 4827c30846f..d5f591f84bc 100644 --- a/src/glx/dri3_glx.c +++ b/src/glx/dri3_glx.c @@ -148,13 +148,11 @@ static const struct glx_context_vtable dri3_context_vtable; static void dri3_destroy_context(struct glx_context *context) { - struct dri3_screen *psc = (struct dri3_screen *) context->psc; - driReleaseDrawables(context); free((char *) context->extensions); - psc->core->destroyContext(context->driContext); + driDestroyContext(context->driContext); free(context); } @@ -181,7 +179,7 @@ dri3_bind_context(struct glx_context *context, GLXDrawable draw, GLXDrawable rea else if (read != None) return GLXBadDrawable; - if (!psc->core->bindContext(context->driContext, dri_draw, dri_read)) + if (!driBindContext(context->driContext, dri_draw, dri_read)) return GLXBadContext; if (dri_draw) @@ -195,9 +193,7 @@ dri3_bind_context(struct glx_context *context, GLXDrawable draw, GLXDrawable rea static void dri3_unbind_context(struct glx_context *context) { - struct dri3_screen *psc = (struct dri3_screen *) context->psc; - - psc->core->unbindContext(context->driContext); + driUnbindContext(context->driContext); } static struct glx_context * @@ -590,12 +586,12 @@ dri3_destroy_screen(struct glx_screen *base) /* Free the direct rendering per screen data */ if (psc->fd_render_gpu != psc->fd_display_gpu && psc->driScreenDisplayGPU) { loader_dri3_close_screen(psc->driScreenDisplayGPU); - psc->core->destroyScreen(psc->driScreenDisplayGPU); + driDestroyScreen(psc->driScreenDisplayGPU); } if (psc->fd_render_gpu != psc->fd_display_gpu) close(psc->fd_display_gpu); loader_dri3_close_screen(psc->driScreenRenderGPU); - psc->core->destroyScreen(psc->driScreenRenderGPU); + driDestroyScreen(psc->driScreenRenderGPU); driDestroyConfigs(psc->driver_configs); close(psc->fd_render_gpu); free(psc); @@ -698,7 +694,7 @@ dri3_bind_extensions(struct dri3_screen *psc, struct glx_display * priv, unsigned mask; int i; - extensions = psc->core->getExtensions(psc->driScreenRenderGPU); + extensions = driGetExtensions(psc->driScreenRenderGPU); __glXEnableDirectExtension(&psc->base, "GLX_EXT_swap_control"); __glXEnableDirectExtension(&psc->base, "GLX_EXT_swap_control_tear"); @@ -843,7 +839,6 @@ dri3_create_screen(int screen, struct glx_display * priv, bool driver_name_is_in goto handle_error; static const struct dri_extension_match exts[] = { - { __DRI_CORE, 1, offsetof(struct dri3_screen, core), false }, { __DRI_MESA, 2, offsetof(struct dri3_screen, mesa), false }, }; if (!loader_bind_extensions(psc, exts, ARRAY_SIZE(exts), extensions)) @@ -917,8 +912,8 @@ dri3_create_screen(int screen, struct glx_display * priv, bool driver_name_is_in psc->loader_dri3_ext.image = psc->image; psc->loader_dri3_ext.config = psc->config; - configs = driConvertConfigs(psc->core, psc->base.configs, driver_configs); - visuals = driConvertConfigs(psc->core, psc->base.visuals, driver_configs); + configs = driConvertConfigs(psc->base.configs, driver_configs); + visuals = driConvertConfigs(psc->base.visuals, driver_configs); if (!configs || !visuals) { ErrorMessageF("No matching fbConfigs or visuals found\n"); @@ -1017,10 +1012,10 @@ handle_error: if (visuals) glx_config_destroy_list(visuals); if (psc->driScreenRenderGPU) - psc->core->destroyScreen(psc->driScreenRenderGPU); + driDestroyScreen(psc->driScreenRenderGPU); psc->driScreenRenderGPU = NULL; if (psc->fd_render_gpu != psc->fd_display_gpu && psc->driScreenDisplayGPU) - psc->core->destroyScreen(psc->driScreenDisplayGPU); + driDestroyScreen(psc->driScreenDisplayGPU); psc->driScreenDisplayGPU = NULL; if (psc->fd_display_gpu >= 0 && psc->fd_render_gpu != psc->fd_display_gpu) close(psc->fd_display_gpu); diff --git a/src/glx/dri3_priv.h b/src/glx/dri3_priv.h index 4ebd7004d3d..ce552af9a05 100644 --- a/src/glx/dri3_priv.h +++ b/src/glx/dri3_priv.h @@ -80,7 +80,6 @@ struct dri3_screen { __DRIscreen *driScreenRenderGPU; const __DRIimageExtension *image; - const __DRIcoreExtension *core; const __DRImesaCoreExtension *mesa; const __DRI2flushExtension *f; const __DRI2configQueryExtension *config; diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c index a07e07d06f1..7a3a0d80bff 100644 --- a/src/glx/dri_common.c +++ b/src/glx/dri_common.c @@ -43,6 +43,7 @@ #include "loader.h" #include #include +#include "dri_util.h" #ifndef RTLD_NOW #define RTLD_NOW 0 @@ -135,14 +136,13 @@ scalarEqual(struct glx_config *mode, unsigned int attrib, unsigned int value) } static int -driConfigEqual(const __DRIcoreExtension *core, - struct glx_config *config, const __DRIconfig *driConfig) +driConfigEqual(struct glx_config *config, const __DRIconfig *driConfig) { unsigned int attrib, value, glxValue; int i; i = 0; - while (core->indexConfigAttrib(driConfig, i++, &attrib, &value)) { + while (driIndexConfigAttrib(driConfig, i++, &attrib, &value)) { switch (attrib) { case __DRI_ATTRIB_RENDER_TYPE: glxValue = 0; @@ -230,14 +230,13 @@ driConfigEqual(const __DRIcoreExtension *core, } static struct glx_config * -createDriMode(const __DRIcoreExtension * core, - struct glx_config *config, const __DRIconfig **driConfigs) +createDriMode(struct glx_config *config, const __DRIconfig **driConfigs) { __GLXDRIconfigPrivate *driConfig; int i; for (i = 0; driConfigs[i]; i++) { - if (driConfigEqual(core, config, driConfigs[i])) + if (driConfigEqual(config, driConfigs[i])) break; } @@ -255,15 +254,14 @@ createDriMode(const __DRIcoreExtension * core, } _X_HIDDEN struct glx_config * -driConvertConfigs(const __DRIcoreExtension * core, - struct glx_config *configs, const __DRIconfig **driConfigs) +driConvertConfigs(struct glx_config *configs, const __DRIconfig **driConfigs) { struct glx_config head, *tail, *m; tail = &head; head.next = NULL; for (m = configs; m; m = m->next) { - tail->next = createDriMode(core, m, driConfigs); + tail->next = createDriMode(m, driConfigs); if (tail->next == NULL) { /* no matching dri config for m */ continue; diff --git a/src/glx/dri_common.h b/src/glx/dri_common.h index cfa07955c74..f5c022854b7 100644 --- a/src/glx/dri_common.h +++ b/src/glx/dri_common.h @@ -51,8 +51,7 @@ struct __GLXDRIconfigPrivateRec const __DRIconfig *driConfig; }; -extern struct glx_config *driConvertConfigs(const __DRIcoreExtension * core, - struct glx_config * modes, +extern struct glx_config *driConvertConfigs(struct glx_config * modes, const __DRIconfig ** configs); extern void driDestroyConfigs(const __DRIconfig **configs); diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c index 4daeb34ef03..4d72487ad07 100644 --- a/src/glx/drisw_glx.c +++ b/src/glx/drisw_glx.c @@ -42,6 +42,7 @@ #include "util/u_debug.h" #include "kopper_interface.h" #include "loader_dri_helper.h" +#include "dri_util.h" static int xshm_error = 0; static int xshm_opcode = -1; @@ -421,13 +422,11 @@ static const __DRIextension *kopper_extensions_noshm[] = { static void drisw_destroy_context(struct glx_context *context) { - struct drisw_screen *psc = (struct drisw_screen *) context->psc; - driReleaseDrawables(context); free((char *) context->extensions); - psc->core->destroyContext(context->driContext); + driDestroyContext(context->driContext); free(context); } @@ -443,7 +442,7 @@ drisw_bind_context(struct glx_context *context, GLXDrawable draw, GLXDrawable re driReleaseDrawables(context); - if (!psc->core->bindContext(context->driContext, + if (!driBindContext(context->driContext, pdraw ? pdraw->driDrawable : NULL, pread ? pread->driDrawable : NULL)) return GLXBadContext; @@ -460,9 +459,7 @@ drisw_bind_context(struct glx_context *context, GLXDrawable draw, GLXDrawable re static void drisw_unbind_context(struct glx_context *context) { - struct drisw_screen *psc = (struct drisw_screen *) context->psc; - - psc->core->unbindContext(context->driContext); + driUnbindContext(context->driContext); } static void @@ -660,9 +657,8 @@ static void driswDestroyDrawable(__GLXDRIdrawable * pdraw) { struct drisw_drawable *pdp = (struct drisw_drawable *) pdraw; - struct drisw_screen *psc = (struct drisw_screen *) pdp->base.psc; - psc->core->destroyDrawable(pdp->driDrawable); + driDestroyDrawable(pdp->driDrawable); XDestroyDrawable(pdp, pdraw->psc->dpy, pdraw->drawable); free(pdp); @@ -769,7 +765,7 @@ driswSwapBuffers(__GLXDRIdrawable * pdraw, if (psc->kopper) return psc->kopper->swapBuffers (pdp->driDrawable, 0); - psc->core->swapBuffers(pdp->driDrawable); + driSwapBuffers(pdp->driDrawable); return 0; } @@ -794,7 +790,7 @@ driswDestroyScreen(struct glx_screen *base) struct drisw_screen *psc = (struct drisw_screen *) base; /* Free the direct rendering per screen data */ - psc->core->destroyScreen(psc->driScreen); + driDestroyScreen(psc->driScreen); driDestroyConfigs(psc->driver_configs); psc->driScreen = NULL; free(psc->name); @@ -966,7 +962,6 @@ driswCreateScreen(int screen, struct glx_display *priv, enum glx_driver glx_driv loader_extensions_local = loader_extensions_shm; static const struct dri_extension_match exts[] = { - { __DRI_CORE, 1, offsetof(struct drisw_screen, core), false }, { __DRI_SWRAST, 5, offsetof(struct drisw_screen, swrast), false }, { __DRI_KOPPER, 1, offsetof(struct drisw_screen, kopper), true }, { __DRI_COPY_SUB_BUFFER, 1, offsetof(struct drisw_screen, copySubBuffer), true }, @@ -985,11 +980,11 @@ driswCreateScreen(int screen, struct glx_display *priv, enum glx_driver glx_driv goto handle_error; } - extensions = psc->core->getExtensions(psc->driScreen); + extensions = driGetExtensions(psc->driScreen); driswBindExtensions(psc, extensions); - configs = driConvertConfigs(psc->core, psc->base.configs, driver_configs); - visuals = driConvertConfigs(psc->core, psc->base.visuals, driver_configs); + configs = driConvertConfigs(psc->base.configs, driver_configs); + visuals = driConvertConfigs(psc->base.visuals, driver_configs); if (!configs || !visuals) { ErrorMessageF("No matching fbConfigs or visuals found\n"); @@ -1033,7 +1028,7 @@ driswCreateScreen(int screen, struct glx_display *priv, enum glx_driver glx_driv if (visuals) glx_config_destroy_list(visuals); if (psc->driScreen) - psc->core->destroyScreen(psc->driScreen); + driDestroyScreen(psc->driScreen); psc->driScreen = NULL; glx_screen_cleanup(&psc->base); diff --git a/src/glx/drisw_priv.h b/src/glx/drisw_priv.h index 7c7d770e9f4..2360437eae8 100644 --- a/src/glx/drisw_priv.h +++ b/src/glx/drisw_priv.h @@ -39,7 +39,6 @@ struct drisw_screen __DRIscreen *driScreen; __GLXDRIscreen vtable; - const __DRIcoreExtension *core; const __DRImesaCoreExtension *mesa; const __DRIswrastExtension *swrast; const __DRIkopperExtension *kopper;