glx: directly link to gallium
this eliminates the loader interface, which avoids an entire class of issues and simplifies a bunch of code Acked-by: Daniel Stone <daniels@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29771>
This commit is contained in:

committed by
Marge Bot

parent
67b778445a
commit
50fc7cc290
@@ -94,7 +94,7 @@ fi
|
||||
# Fix prefix confusion: the build installs to $CI_PROJECT_DIR, but we expect
|
||||
# it in /install
|
||||
ln -sf $CI_PROJECT_DIR/install /install
|
||||
export LD_LIBRARY_PATH=/install/lib
|
||||
export LD_LIBRARY_PATH=/install/lib:/install/lib/dri
|
||||
export LIBGL_DRIVERS_PATH=/install/lib/dri
|
||||
|
||||
# https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22495#note_1876691
|
||||
@@ -113,7 +113,7 @@ export PYTHONPATH=$(python3 -c "import sys;print(\":\".join(sys.path))")
|
||||
if [ -n "$MESA_LOADER_DRIVER_OVERRIDE" ]; then
|
||||
rm /install/lib/dri/!($MESA_LOADER_DRIVER_OVERRIDE)_dri.so
|
||||
fi
|
||||
ls -1 /install/lib/dri/*_dri.so || true
|
||||
ls -1 /install/lib/dri/*.so || true
|
||||
|
||||
if [ "$HWCI_FREQ_MAX" = "true" ]; then
|
||||
# Ensure initialization of the DRM device (needed by MSM)
|
||||
|
@@ -7,7 +7,7 @@ _FLAG_FILE="/xorg-started"
|
||||
|
||||
echo "touch ${_FLAG_FILE}; sleep 100000" > "${_XORG_SCRIPT}"
|
||||
if [ "x$1" != "x" ]; then
|
||||
export LD_LIBRARY_PATH="${1}/lib"
|
||||
export LD_LIBRARY_PATH="${1}/lib:${1}/lib/dri"
|
||||
export LIBGL_DRIVERS_PATH="${1}/lib/dri"
|
||||
fi
|
||||
xinit /bin/sh "${_XORG_SCRIPT}" -- /usr/bin/Xorg vt45 -noreset -s 0 -dpms -logfile /Xorg.0.log &
|
||||
|
@@ -6,7 +6,7 @@ set -xe
|
||||
|
||||
export HOME=/cuttlefish
|
||||
export PATH=$PATH:/cuttlefish/bin
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${CI_PROJECT_DIR}/install/lib/:/cuttlefish/lib64
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${CI_PROJECT_DIR}/install/lib/:${CI_PROJECT_DIR}/install/lib/dri:/cuttlefish/lib64
|
||||
export EGL_PLATFORM=surfaceless
|
||||
|
||||
syslogd
|
||||
|
@@ -16,7 +16,7 @@ fi
|
||||
INSTALL=$(realpath -s "$PWD"/install)
|
||||
|
||||
# Set up the driver environment.
|
||||
export LD_LIBRARY_PATH="$INSTALL"/lib/:$LD_LIBRARY_PATH
|
||||
export LD_LIBRARY_PATH="$INSTALL"/lib/:"$INSTALL"/lib/dri:$LD_LIBRARY_PATH
|
||||
export EGL_PLATFORM=surfaceless
|
||||
ARCH=$(uname -m)
|
||||
export VK_DRIVER_FILES="$PWD"/install/share/vulkan/icd.d/"$VK_DRIVER"_icd."$ARCH".json
|
||||
|
@@ -10,7 +10,7 @@ fi
|
||||
INSTALL=$PWD/install
|
||||
|
||||
# Set up the driver environment.
|
||||
export LD_LIBRARY_PATH="$INSTALL/lib/"
|
||||
export LD_LIBRARY_PATH="$INSTALL/lib/:$INSTALL/lib/dri"
|
||||
export VK_DRIVER_FILES="$INSTALL/share/vulkan/icd.d/${VK_DRIVER}_icd.x86_64.json"
|
||||
|
||||
# To store Fossilize logs on failure.
|
||||
|
@@ -6,7 +6,7 @@ set -ex
|
||||
INSTALL=$PWD/install
|
||||
|
||||
# Set up the driver environment.
|
||||
export LD_LIBRARY_PATH=$INSTALL/lib/
|
||||
export LD_LIBRARY_PATH=$INSTALL/lib/:$INSTALL/lib/dri
|
||||
|
||||
RESULTS="$PWD/${GTEST_RESULTS_DIR:-results}"
|
||||
mkdir -p "$RESULTS"
|
||||
|
@@ -11,7 +11,7 @@ fi
|
||||
INSTALL="$PWD/install"
|
||||
|
||||
# Set up the driver environment.
|
||||
export LD_LIBRARY_PATH="$INSTALL/lib/"
|
||||
export LD_LIBRARY_PATH="$INSTALL/lib/:$INSTALL/lib/dri"
|
||||
export EGL_PLATFORM=surfaceless
|
||||
ARCH=$(uname -m)
|
||||
export VK_DRIVER_FILES="$INSTALL/share/vulkan/icd.d/${VK_DRIVER}_icd.$ARCH.json"
|
||||
|
@@ -47,7 +47,7 @@ export WINEDLLOVERRIDES="mscoree=d;mshtml=d" # FIXME: drop, not needed anymore?
|
||||
# Modifiying here directly LD_LIBRARY_PATH may cause problems when
|
||||
# using a command wrapper. Hence, we will just set it when running the
|
||||
# command.
|
||||
export __LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$INSTALL/lib/"
|
||||
export __LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$INSTALL/lib/:$INSTALL/lib/dri"
|
||||
if [ -n "${VK_DRIVER}" ]; then
|
||||
# Set environment for DXVK.
|
||||
export DXVK_LOG_LEVEL="info"
|
||||
|
@@ -6,7 +6,7 @@ mkdir -p "$ARTIFACTSDIR"
|
||||
export DRM_SHIM_DEBUG=true
|
||||
|
||||
LIBDIR=$(pwd)/install/lib
|
||||
export LD_LIBRARY_PATH=$LIBDIR
|
||||
export LD_LIBRARY_PATH=$LIBDIR:$LIBDIR/dri
|
||||
|
||||
cd /usr/local/shader-db
|
||||
|
||||
|
@@ -17,7 +17,7 @@ mkdir -p "$RESULTS"
|
||||
# Modifiying here directly LD_LIBRARY_PATH may cause problems when
|
||||
# using a command wrapper. Hence, we will just set it when running the
|
||||
# command.
|
||||
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$INSTALL/lib/:/vkd3d-proton-tests/x64/"
|
||||
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$INSTALL/lib/:$INSTALL/lib/dri/vkd3d-proton-tests/x64/"
|
||||
|
||||
|
||||
# Set the Vulkan driver to use.
|
||||
|
@@ -1,6 +1,7 @@
|
||||
{
|
||||
global:
|
||||
__driDriverGetExtensions*;
|
||||
dri_loader_get_extensions;
|
||||
@nouveau_drm_screen_create@
|
||||
@radeon_drm_winsys_create@
|
||||
@amdgpu_winsys_create@
|
||||
|
@@ -158,3 +158,196 @@ PUBLIC const __DRIextension **__driDriverGetExtensions_zink(void)
|
||||
#if defined(GALLIUM_D3D12)
|
||||
DEFINE_LOADER_DRM_ENTRYPOINT(d3d12);
|
||||
#endif
|
||||
|
||||
const __DRIextension **
|
||||
dri_loader_get_extensions(const char *driver_name);
|
||||
|
||||
PUBLIC const __DRIextension **
|
||||
dri_loader_get_extensions(const char *driver_name)
|
||||
{
|
||||
#if defined(HAVE_I915)
|
||||
if (!strcmp(driver_name, "i915"))
|
||||
return __driDriverGetExtensions_i915();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_IRIS)
|
||||
if (!strcmp(driver_name, "iris"))
|
||||
return __driDriverGetExtensions_iris();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_CROCUS)
|
||||
if (!strcmp(driver_name, "crocus"))
|
||||
return __driDriverGetExtensions_crocus();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_NOUVEAU)
|
||||
if (!strcmp(driver_name, "nouveau"))
|
||||
return __driDriverGetExtensions_nouveau();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_R300)
|
||||
if (!strcmp(driver_name, "r300"))
|
||||
return __driDriverGetExtensions_r300();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_R600)
|
||||
if (!strcmp(driver_name, "r600"))
|
||||
return __driDriverGetExtensions_r600();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_RADEONSI)
|
||||
if (!strcmp(driver_name, "radeonsi"))
|
||||
return __driDriverGetExtensions_radeonsi();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_VMWGFX)
|
||||
if (!strcmp(driver_name, "vmwgfx"))
|
||||
return __driDriverGetExtensions_vmwgfx();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_FREEDRENO)
|
||||
if (!strcmp(driver_name, "msm"))
|
||||
return __driDriverGetExtensions_msm();
|
||||
if (!strcmp(driver_name, "kgsl"))
|
||||
return __driDriverGetExtensions_kgsl();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_VIRGL) || (defined(HAVE_FREEDRENO) && !defined(PIPE_LOADER_DYNAMIC))
|
||||
if (!strcmp(driver_name, "virtio_gpu"))
|
||||
return __driDriverGetExtensions_virtio_gpu();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_V3D)
|
||||
if (!strcmp(driver_name, "v3d"))
|
||||
return __driDriverGetExtensions_v3d();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_VC4)
|
||||
if (!strcmp(driver_name, "vc4"))
|
||||
return __driDriverGetExtensions_vc4();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_PANFROST)
|
||||
if (!strcmp(driver_name, "panfrost"))
|
||||
return __driDriverGetExtensions_panfrost();
|
||||
if (!strcmp(driver_name, "panthor"))
|
||||
return __driDriverGetExtensions_panthor();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_ASAHI)
|
||||
if (!strcmp(driver_name, "asahi"))
|
||||
return __driDriverGetExtensions_asahi();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_ETNAVIV)
|
||||
if (!strcmp(driver_name, "etnaviv"))
|
||||
return __driDriverGetExtensions_etnaviv();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_TEGRA)
|
||||
if (!strcmp(driver_name, "tegra"))
|
||||
return __driDriverGetExtensions_tegra();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_KMSRO)
|
||||
if (!strcmp(driver_name, "armada_drm"))
|
||||
return __driDriverGetExtensions_armada_drm();
|
||||
if (!strcmp(driver_name, "exynos"))
|
||||
return __driDriverGetExtensions_exynos();
|
||||
if (!strcmp(driver_name, "gm12u320"))
|
||||
return __driDriverGetExtensions_gm12u320();
|
||||
if (!strcmp(driver_name, "hdlcd"))
|
||||
return __driDriverGetExtensions_hdlcd();
|
||||
if (!strcmp(driver_name, "hx8357d"))
|
||||
return __driDriverGetExtensions_hx8357d();
|
||||
if (!strcmp(driver_name, "ili9163"))
|
||||
return __driDriverGetExtensions_ili9163();
|
||||
if (!strcmp(driver_name, "ili9225"))
|
||||
return __driDriverGetExtensions_ili9225();
|
||||
if (!strcmp(driver_name, "ili9341"))
|
||||
return __driDriverGetExtensions_ili9341();
|
||||
if (!strcmp(driver_name, "ili9486"))
|
||||
return __driDriverGetExtensions_ili9486();
|
||||
if (!strcmp(driver_name, "imx_drm"))
|
||||
return __driDriverGetExtensions_imx_drm();
|
||||
if (!strcmp(driver_name, "imx_dcss"))
|
||||
return __driDriverGetExtensions_imx_dcss();
|
||||
if (!strcmp(driver_name, "imx_lcdif"))
|
||||
return __driDriverGetExtensions_imx_lcdif();
|
||||
if (!strcmp(driver_name, "ingenic_drm"))
|
||||
return __driDriverGetExtensions_ingenic_drm();
|
||||
if (!strcmp(driver_name, "kirin"))
|
||||
return __driDriverGetExtensions_kirin();
|
||||
if (!strcmp(driver_name, "komeda"))
|
||||
return __driDriverGetExtensions_komeda();
|
||||
if (!strcmp(driver_name, "mali_dp"))
|
||||
return __driDriverGetExtensions_mali_dp();
|
||||
if (!strcmp(driver_name, "mcde"))
|
||||
return __driDriverGetExtensions_mcde();
|
||||
if (!strcmp(driver_name, "mediatek"))
|
||||
return __driDriverGetExtensions_mediatek();
|
||||
if (!strcmp(driver_name, "meson"))
|
||||
return __driDriverGetExtensions_meson();
|
||||
if (!strcmp(driver_name, "mi0283qt"))
|
||||
return __driDriverGetExtensions_mi0283qt();
|
||||
if (!strcmp(driver_name, "mxsfb_drm"))
|
||||
return __driDriverGetExtensions_mxsfb_drm();
|
||||
if (!strcmp(driver_name, "panel_mipi_dbi"))
|
||||
return __driDriverGetExtensions_panel_mipi_dbi();
|
||||
if (!strcmp(driver_name, "pl111"))
|
||||
return __driDriverGetExtensions_pl111();
|
||||
if (!strcmp(driver_name, "rcar_du"))
|
||||
return __driDriverGetExtensions_rcar_du();
|
||||
if (!strcmp(driver_name, "repaper"))
|
||||
return __driDriverGetExtensions_repaper();
|
||||
if (!strcmp(driver_name, "rockchip"))
|
||||
return __driDriverGetExtensions_rockchip();
|
||||
if (!strcmp(driver_name, "rzg2l_du"))
|
||||
return __driDriverGetExtensions_rzg2l_du();
|
||||
if (!strcmp(driver_name, "ssd130x"))
|
||||
return __driDriverGetExtensions_ssd130x();
|
||||
if (!strcmp(driver_name, "st7586"))
|
||||
return __driDriverGetExtensions_st7586();
|
||||
if (!strcmp(driver_name, "st7735r"))
|
||||
return __driDriverGetExtensions_st7735r();
|
||||
if (!strcmp(driver_name, "sti"))
|
||||
return __driDriverGetExtensions_sti();
|
||||
if (!strcmp(driver_name, "stm"))
|
||||
return __driDriverGetExtensions_stm();
|
||||
if (!strcmp(driver_name, "sun4i_drm"))
|
||||
return __driDriverGetExtensions_sun4i_drm();
|
||||
if (!strcmp(driver_name, "udl"))
|
||||
return __driDriverGetExtensions_udl();
|
||||
if (!strcmp(driver_name, "vkms"))
|
||||
return __driDriverGetExtensions_vkms();
|
||||
if (!strcmp(driver_name, "zynqmp_dpsub"))
|
||||
return __driDriverGetExtensions_zynqmp_dpsub();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_LIMA)
|
||||
if (!strcmp(driver_name, "lima"))
|
||||
return __driDriverGetExtensions_lima();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_ZINK)
|
||||
if (!strcmp(driver_name, "zink"))
|
||||
return __driDriverGetExtensions_zink();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_D3D12)
|
||||
if (!strcmp(driver_name, "d3d12"))
|
||||
return __driDriverGetExtensions_d3d12();
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_SWRAST)
|
||||
if (!strcmp(driver_name, "swrast"))
|
||||
return __driDriverGetExtensions_swrast();
|
||||
|
||||
#if defined(HAVE_LIBDRM)
|
||||
if (!strcmp(driver_name, "kms_swrast"))
|
||||
return __driDriverGetExtensions_kms_swrast();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@@ -34,7 +34,7 @@ libgallium_dri = shared_library(
|
||||
link_depends : gallium_dri_link_depends,
|
||||
link_with : [
|
||||
libdri, libmesa, libgalliumvl,
|
||||
libgallium, libglapi, libloader, libpipe_loader_static, libws_null, libwsw, libswdri,
|
||||
libgallium, libglapi, libpipe_loader_static, libws_null, libwsw, libswdri,
|
||||
libswkmsdri,
|
||||
],
|
||||
dependencies : [
|
||||
@@ -45,7 +45,6 @@ libgallium_dri = shared_library(
|
||||
driver_panfrost, driver_iris, driver_lima, driver_zink, driver_d3d12,
|
||||
driver_asahi, driver_crocus
|
||||
],
|
||||
# Will be deleted during installation, see install_megadrivers.py
|
||||
install : true,
|
||||
install_dir : dri_drivers_path,
|
||||
name_suffix : 'so',
|
||||
|
@@ -130,8 +130,6 @@ endforeach
|
||||
# This only works on Unix-like oses, which is probably fine for dri
|
||||
prog_ln = find_program('ln', required : false)
|
||||
if prog_ln.found()
|
||||
devenv.set('LIBGL_DRIVERS_PATH', meson.current_build_dir())
|
||||
|
||||
foreach d : dril_drivers
|
||||
custom_target(
|
||||
'devenv_@0@'.format(d),
|
||||
|
@@ -1058,7 +1058,7 @@ dri2CreateScreen(int screen, struct glx_display * priv, bool driver_name_is_infe
|
||||
}
|
||||
psc->driverName = driverName;
|
||||
|
||||
extensions = driOpenDriver(driverName, &psc->driver, driver_name_is_inferred);
|
||||
extensions = driOpenDriver(driverName, driver_name_is_inferred);
|
||||
if (extensions == NULL)
|
||||
goto handle_error;
|
||||
|
||||
@@ -1178,8 +1178,6 @@ handle_error:
|
||||
psc->driScreen = NULL;
|
||||
if (psc->fd >= 0)
|
||||
close(psc->fd);
|
||||
if (psc->driver)
|
||||
dlclose(psc->driver);
|
||||
|
||||
free(deviceName);
|
||||
glx_screen_cleanup(&psc->base);
|
||||
|
@@ -56,7 +56,6 @@ struct dri2_screen {
|
||||
const __DRI2interopExtension *interop;
|
||||
const __DRIconfig **driver_configs;
|
||||
|
||||
void *driver;
|
||||
char *driverName;
|
||||
int fd;
|
||||
|
||||
|
@@ -842,7 +842,7 @@ dri3_create_screen(int screen, struct glx_display * priv, bool driver_name_is_in
|
||||
goto handle_error;
|
||||
}
|
||||
|
||||
extensions = driOpenDriver(driverName, &psc->driver, driver_name_is_inferred);
|
||||
extensions = driOpenDriver(driverName, driver_name_is_inferred);
|
||||
if (extensions == NULL)
|
||||
goto handle_error;
|
||||
|
||||
@@ -1033,8 +1033,6 @@ handle_error:
|
||||
close(psc->fd_display_gpu);
|
||||
if (psc->fd_render_gpu >= 0)
|
||||
close(psc->fd_render_gpu);
|
||||
if (psc->driver)
|
||||
dlclose(psc->driver);
|
||||
|
||||
free(driverName);
|
||||
glx_screen_cleanup(&psc->base);
|
||||
|
@@ -98,7 +98,6 @@ struct dri3_screen {
|
||||
const __DRI2interopExtension *interop;
|
||||
const __DRIconfig **driver_configs;
|
||||
|
||||
void *driver;
|
||||
/* fd of the GPU used for rendering. */
|
||||
int fd_render_gpu;
|
||||
/* fd of the GPU used for display. If the same GPU is used for display
|
||||
|
@@ -55,13 +55,12 @@
|
||||
#define GL_LIB_NAME "libGL.so.1"
|
||||
#endif
|
||||
|
||||
const __DRIextension **
|
||||
dri_loader_get_extensions(const char *driver_name);
|
||||
|
||||
/**
|
||||
* Try to \c dlopen the named driver.
|
||||
*
|
||||
* This function adds the "_dri.so" suffix to the driver name and searches the
|
||||
* directories specified by the \c LIBGL_DRIVERS_PATH environment variable in
|
||||
* order to find the driver.
|
||||
*
|
||||
* \param driverName - a name like "i965", "radeon", "nouveau", etc.
|
||||
* \param out_driver_handle - Address to return the resulting dlopen() handle.
|
||||
*
|
||||
@@ -70,21 +69,19 @@
|
||||
* file not found.
|
||||
*/
|
||||
_X_HIDDEN const __DRIextension **
|
||||
driOpenDriver(const char *driverName, void **out_driver_handle, bool driver_name_is_inferred)
|
||||
driOpenDriver(const char *driverName, bool driver_name_is_inferred)
|
||||
{
|
||||
void *glhandle;
|
||||
|
||||
/* Attempt to make sure libGL symbols will be visible to the driver */
|
||||
glhandle = dlopen(GL_LIB_NAME, RTLD_NOW | RTLD_GLOBAL);
|
||||
|
||||
static const char *search_path_vars[] = {
|
||||
"LIBGL_DRIVERS_PATH",
|
||||
"LIBGL_DRIVERS_DIR", /* deprecated */
|
||||
NULL
|
||||
};
|
||||
const __DRIextension **extensions = dri_loader_get_extensions(driverName);
|
||||
|
||||
const __DRIextension **extensions =
|
||||
loader_open_driver(driverName, out_driver_handle, search_path_vars, driver_name_is_inferred);
|
||||
if (driver_name_is_inferred) {
|
||||
glx_message(_LOADER_WARNING,
|
||||
"MESA-LOADER: failed to open %s: driver not built!)\n", driverName);
|
||||
}
|
||||
|
||||
if (glhandle)
|
||||
dlclose(glhandle);
|
||||
@@ -742,9 +739,8 @@ clear_driver_config_cache()
|
||||
static char *
|
||||
get_driver_config(const char *driverName)
|
||||
{
|
||||
void *handle;
|
||||
char *config = NULL;
|
||||
const __DRIextension **extensions = driOpenDriver(driverName, &handle, false);
|
||||
const __DRIextension **extensions = driOpenDriver(driverName, false);
|
||||
if (extensions) {
|
||||
for (int i = 0; extensions[i]; i++) {
|
||||
if (strcmp(extensions[i]->name, __DRI_CONFIG_OPTIONS) != 0)
|
||||
@@ -760,8 +756,6 @@ get_driver_config(const char *driverName)
|
||||
}
|
||||
}
|
||||
|
||||
dlclose(handle);
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
|
@@ -64,7 +64,6 @@ extern void
|
||||
driReleaseDrawables(struct glx_context *gc);
|
||||
|
||||
extern const __DRIextension **driOpenDriver(const char *driverName,
|
||||
void **out_driver_handle,
|
||||
bool driver_name_is_inferred);
|
||||
|
||||
struct dri_ctx_attribs {
|
||||
|
@@ -800,8 +800,6 @@ driswDestroyScreen(struct glx_screen *base)
|
||||
psc->core->destroyScreen(psc->driScreen);
|
||||
driDestroyConfigs(psc->driver_configs);
|
||||
psc->driScreen = NULL;
|
||||
if (psc->driver)
|
||||
dlclose(psc->driver);
|
||||
free(psc);
|
||||
}
|
||||
|
||||
@@ -955,7 +953,7 @@ driswCreateScreenDriver(int screen, struct glx_display *priv,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
extensions = driOpenDriver(driver, &psc->driver, driver_name_is_inferred);
|
||||
extensions = driOpenDriver(driver, driver_name_is_inferred);
|
||||
if (extensions == NULL)
|
||||
goto handle_error;
|
||||
psc->name = driver;
|
||||
@@ -1051,8 +1049,6 @@ driswCreateScreenDriver(int screen, struct glx_display *priv,
|
||||
psc->core->destroyScreen(psc->driScreen);
|
||||
psc->driScreen = NULL;
|
||||
|
||||
if (psc->driver)
|
||||
dlclose(psc->driver);
|
||||
glx_screen_cleanup(&psc->base);
|
||||
free(psc);
|
||||
|
||||
|
@@ -53,7 +53,6 @@ struct drisw_screen
|
||||
|
||||
const __DRIconfig **driver_configs;
|
||||
|
||||
void *driver;
|
||||
const char *name;
|
||||
|
||||
bool has_multibuffer;
|
||||
|
@@ -105,6 +105,13 @@ else
|
||||
)
|
||||
endif
|
||||
|
||||
glx_gallium_link = []
|
||||
if with_dri
|
||||
glx_gallium_link += libgallium_dri
|
||||
endif
|
||||
if with_platform_windows
|
||||
glx_gallium_link += libgallium_wgl
|
||||
endif
|
||||
libglx = static_library(
|
||||
'glx',
|
||||
[files_libglx, glx_generated],
|
||||
@@ -115,7 +122,7 @@ libglx = static_library(
|
||||
gnu_symbol_visibility : 'hidden',
|
||||
link_with : [
|
||||
libloader, libloader_dri3_helper,
|
||||
extra_libs_libglx,
|
||||
extra_libs_libglx, glx_gallium_link
|
||||
],
|
||||
dependencies : [
|
||||
idep_mesautil, idep_xmlconfig,
|
||||
@@ -137,6 +144,7 @@ libgl = shared_library(
|
||||
version : gl_lib_version,
|
||||
darwin_versions : '4.0.0',
|
||||
install : true,
|
||||
install_rpath : dri_drivers_path,
|
||||
)
|
||||
|
||||
if with_tests
|
||||
|
@@ -26,7 +26,7 @@ if with_shared_glapi
|
||||
executable(
|
||||
'glx-test',
|
||||
[files_glx_test, glx_indirect_size_h, main_dispatch_h],
|
||||
link_with : [libglx, libglapi, libloader],
|
||||
link_with : [libglx, libglapi, glx_gallium_link, libloader],
|
||||
include_directories : [
|
||||
inc_src, inc_include, inc_mesa, inc_mapi, inc_glx, inc_loader, inc_gallium
|
||||
],
|
||||
|
Reference in New Issue
Block a user