From 49c3814cd165fc6f6c4e61b38b7294d216eb0f41 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 22 Jul 2024 10:11:59 -0400 Subject: [PATCH] dri: declare IMAGE_DRIVER symbols PUBLIC this is a temporary hackaround for a linker issue where dri frontend functions need to be called directly by (glx/egl/gbm) but can't due to linkage/visibility eventually all of these frontends will be a single linkage into a single library, which will avoid the intermediate linking and solve the problem Reviewed-by: Adam Jackson Part-of: --- src/gallium/frontends/dri/dri_util.c | 4 ++-- src/gallium/frontends/dri/dri_util.h | 9 ++++++--- src/gallium/targets/dri/dri.sym.in | 2 ++ 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/gallium/frontends/dri/dri_util.c b/src/gallium/frontends/dri/dri_util.c index 69f01b78c56..8a8b7016c49 100644 --- a/src/gallium/frontends/dri/dri_util.c +++ b/src/gallium/frontends/dri/dri_util.c @@ -762,7 +762,7 @@ static int driUnbindContext(__DRIcontext *pcp) /*@}*/ -static __DRIdrawable * +__DRIdrawable * driCreateNewDrawable(__DRIscreen *psp, const __DRIconfig *config, void *data) @@ -855,7 +855,7 @@ dri2ConfigQuerys(__DRIscreen *psp, const char *var, char **val) return 0; } -static unsigned int +unsigned int driGetAPIMask(__DRIscreen *screen) { return dri_screen(screen)->api_mask; diff --git a/src/gallium/frontends/dri/dri_util.h b/src/gallium/frontends/dri/dri_util.h index d619e2f516c..76a46e90f3e 100644 --- a/src/gallium/frontends/dri/dri_util.h +++ b/src/gallium/frontends/dri/dri_util.h @@ -103,7 +103,7 @@ struct __DriverContextConfig { #define __DRIVER_CONTEXT_ATTRIB_NO_ERROR (1 << 3) #define __DRIVER_CONTEXT_ATTRIB_PROTECTED (1 << 4) -__DRIscreen * +PUBLIC __DRIscreen * driCreateNewScreen3(int scrn, int fd, const __DRIextension **loader_extensions, const __DRIextension **driver_extensions, @@ -113,7 +113,7 @@ driCreateNewScreen2(int scrn, int fd, const __DRIextension **loader_extensions, const __DRIextension **driver_extensions, const __DRIconfig ***driver_configs, void *data); -__DRIcontext * +PUBLIC __DRIcontext * driCreateContextAttribs(__DRIscreen *psp, int api, const __DRIconfig *config, __DRIcontext *shared, @@ -124,7 +124,10 @@ driCreateContextAttribs(__DRIscreen *psp, int api, extern uint32_t driImageFormatToSizedInternalGLFormat(uint32_t image_format); - +PUBLIC unsigned int +driGetAPIMask(__DRIscreen *screen); +PUBLIC __DRIdrawable * +driCreateNewDrawable(__DRIscreen *psp, const __DRIconfig *config, void *data); extern const __DRIimageDriverExtension driImageDriverExtension; #endif /* _DRI_UTIL_H_ */ diff --git a/src/gallium/targets/dri/dri.sym.in b/src/gallium/targets/dri/dri.sym.in index 4d2391dd86e..3f54c55dc0b 100644 --- a/src/gallium/targets/dri/dri.sym.in +++ b/src/gallium/targets/dri/dri.sym.in @@ -1,6 +1,8 @@ { global: __driDriverGetExtensions*; + driCreate*; + driGet*; dri_loader_get_extensions; @nouveau_drm_screen_create@ @radeon_drm_winsys_create@