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
|
# Fix prefix confusion: the build installs to $CI_PROJECT_DIR, but we expect
|
||||||
# it in /install
|
# it in /install
|
||||||
ln -sf $CI_PROJECT_DIR/install /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
|
export LIBGL_DRIVERS_PATH=/install/lib/dri
|
||||||
|
|
||||||
# https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22495#note_1876691
|
# 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
|
if [ -n "$MESA_LOADER_DRIVER_OVERRIDE" ]; then
|
||||||
rm /install/lib/dri/!($MESA_LOADER_DRIVER_OVERRIDE)_dri.so
|
rm /install/lib/dri/!($MESA_LOADER_DRIVER_OVERRIDE)_dri.so
|
||||||
fi
|
fi
|
||||||
ls -1 /install/lib/dri/*_dri.so || true
|
ls -1 /install/lib/dri/*.so || true
|
||||||
|
|
||||||
if [ "$HWCI_FREQ_MAX" = "true" ]; then
|
if [ "$HWCI_FREQ_MAX" = "true" ]; then
|
||||||
# Ensure initialization of the DRM device (needed by MSM)
|
# 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}"
|
echo "touch ${_FLAG_FILE}; sleep 100000" > "${_XORG_SCRIPT}"
|
||||||
if [ "x$1" != "x" ]; then
|
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"
|
export LIBGL_DRIVERS_PATH="${1}/lib/dri"
|
||||||
fi
|
fi
|
||||||
xinit /bin/sh "${_XORG_SCRIPT}" -- /usr/bin/Xorg vt45 -noreset -s 0 -dpms -logfile /Xorg.0.log &
|
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 HOME=/cuttlefish
|
||||||
export PATH=$PATH:/cuttlefish/bin
|
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
|
export EGL_PLATFORM=surfaceless
|
||||||
|
|
||||||
syslogd
|
syslogd
|
||||||
|
@@ -16,7 +16,7 @@ fi
|
|||||||
INSTALL=$(realpath -s "$PWD"/install)
|
INSTALL=$(realpath -s "$PWD"/install)
|
||||||
|
|
||||||
# Set up the driver environment.
|
# 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
|
export EGL_PLATFORM=surfaceless
|
||||||
ARCH=$(uname -m)
|
ARCH=$(uname -m)
|
||||||
export VK_DRIVER_FILES="$PWD"/install/share/vulkan/icd.d/"$VK_DRIVER"_icd."$ARCH".json
|
export VK_DRIVER_FILES="$PWD"/install/share/vulkan/icd.d/"$VK_DRIVER"_icd."$ARCH".json
|
||||||
|
@@ -10,7 +10,7 @@ fi
|
|||||||
INSTALL=$PWD/install
|
INSTALL=$PWD/install
|
||||||
|
|
||||||
# Set up the driver environment.
|
# 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"
|
export VK_DRIVER_FILES="$INSTALL/share/vulkan/icd.d/${VK_DRIVER}_icd.x86_64.json"
|
||||||
|
|
||||||
# To store Fossilize logs on failure.
|
# To store Fossilize logs on failure.
|
||||||
|
@@ -6,7 +6,7 @@ set -ex
|
|||||||
INSTALL=$PWD/install
|
INSTALL=$PWD/install
|
||||||
|
|
||||||
# Set up the driver environment.
|
# 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}"
|
RESULTS="$PWD/${GTEST_RESULTS_DIR:-results}"
|
||||||
mkdir -p "$RESULTS"
|
mkdir -p "$RESULTS"
|
||||||
|
@@ -11,7 +11,7 @@ fi
|
|||||||
INSTALL="$PWD/install"
|
INSTALL="$PWD/install"
|
||||||
|
|
||||||
# Set up the driver environment.
|
# Set up the driver environment.
|
||||||
export LD_LIBRARY_PATH="$INSTALL/lib/"
|
export LD_LIBRARY_PATH="$INSTALL/lib/:$INSTALL/lib/dri"
|
||||||
export EGL_PLATFORM=surfaceless
|
export EGL_PLATFORM=surfaceless
|
||||||
ARCH=$(uname -m)
|
ARCH=$(uname -m)
|
||||||
export VK_DRIVER_FILES="$INSTALL/share/vulkan/icd.d/${VK_DRIVER}_icd.$ARCH.json"
|
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
|
# Modifiying here directly LD_LIBRARY_PATH may cause problems when
|
||||||
# using a command wrapper. Hence, we will just set it when running the
|
# using a command wrapper. Hence, we will just set it when running the
|
||||||
# command.
|
# 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
|
if [ -n "${VK_DRIVER}" ]; then
|
||||||
# Set environment for DXVK.
|
# Set environment for DXVK.
|
||||||
export DXVK_LOG_LEVEL="info"
|
export DXVK_LOG_LEVEL="info"
|
||||||
|
@@ -6,7 +6,7 @@ mkdir -p "$ARTIFACTSDIR"
|
|||||||
export DRM_SHIM_DEBUG=true
|
export DRM_SHIM_DEBUG=true
|
||||||
|
|
||||||
LIBDIR=$(pwd)/install/lib
|
LIBDIR=$(pwd)/install/lib
|
||||||
export LD_LIBRARY_PATH=$LIBDIR
|
export LD_LIBRARY_PATH=$LIBDIR:$LIBDIR/dri
|
||||||
|
|
||||||
cd /usr/local/shader-db
|
cd /usr/local/shader-db
|
||||||
|
|
||||||
|
@@ -17,7 +17,7 @@ mkdir -p "$RESULTS"
|
|||||||
# Modifiying here directly LD_LIBRARY_PATH may cause problems when
|
# Modifiying here directly LD_LIBRARY_PATH may cause problems when
|
||||||
# using a command wrapper. Hence, we will just set it when running the
|
# using a command wrapper. Hence, we will just set it when running the
|
||||||
# command.
|
# 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.
|
# Set the Vulkan driver to use.
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
global:
|
global:
|
||||||
__driDriverGetExtensions*;
|
__driDriverGetExtensions*;
|
||||||
|
dri_loader_get_extensions;
|
||||||
@nouveau_drm_screen_create@
|
@nouveau_drm_screen_create@
|
||||||
@radeon_drm_winsys_create@
|
@radeon_drm_winsys_create@
|
||||||
@amdgpu_winsys_create@
|
@amdgpu_winsys_create@
|
||||||
|
@@ -158,3 +158,196 @@ PUBLIC const __DRIextension **__driDriverGetExtensions_zink(void)
|
|||||||
#if defined(GALLIUM_D3D12)
|
#if defined(GALLIUM_D3D12)
|
||||||
DEFINE_LOADER_DRM_ENTRYPOINT(d3d12);
|
DEFINE_LOADER_DRM_ENTRYPOINT(d3d12);
|
||||||
#endif
|
#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_depends : gallium_dri_link_depends,
|
||||||
link_with : [
|
link_with : [
|
||||||
libdri, libmesa, libgalliumvl,
|
libdri, libmesa, libgalliumvl,
|
||||||
libgallium, libglapi, libloader, libpipe_loader_static, libws_null, libwsw, libswdri,
|
libgallium, libglapi, libpipe_loader_static, libws_null, libwsw, libswdri,
|
||||||
libswkmsdri,
|
libswkmsdri,
|
||||||
],
|
],
|
||||||
dependencies : [
|
dependencies : [
|
||||||
@@ -45,7 +45,6 @@ libgallium_dri = shared_library(
|
|||||||
driver_panfrost, driver_iris, driver_lima, driver_zink, driver_d3d12,
|
driver_panfrost, driver_iris, driver_lima, driver_zink, driver_d3d12,
|
||||||
driver_asahi, driver_crocus
|
driver_asahi, driver_crocus
|
||||||
],
|
],
|
||||||
# Will be deleted during installation, see install_megadrivers.py
|
|
||||||
install : true,
|
install : true,
|
||||||
install_dir : dri_drivers_path,
|
install_dir : dri_drivers_path,
|
||||||
name_suffix : 'so',
|
name_suffix : 'so',
|
||||||
|
@@ -130,8 +130,6 @@ endforeach
|
|||||||
# This only works on Unix-like oses, which is probably fine for dri
|
# This only works on Unix-like oses, which is probably fine for dri
|
||||||
prog_ln = find_program('ln', required : false)
|
prog_ln = find_program('ln', required : false)
|
||||||
if prog_ln.found()
|
if prog_ln.found()
|
||||||
devenv.set('LIBGL_DRIVERS_PATH', meson.current_build_dir())
|
|
||||||
|
|
||||||
foreach d : dril_drivers
|
foreach d : dril_drivers
|
||||||
custom_target(
|
custom_target(
|
||||||
'devenv_@0@'.format(d),
|
'devenv_@0@'.format(d),
|
||||||
|
@@ -1058,7 +1058,7 @@ dri2CreateScreen(int screen, struct glx_display * priv, bool driver_name_is_infe
|
|||||||
}
|
}
|
||||||
psc->driverName = driverName;
|
psc->driverName = driverName;
|
||||||
|
|
||||||
extensions = driOpenDriver(driverName, &psc->driver, driver_name_is_inferred);
|
extensions = driOpenDriver(driverName, driver_name_is_inferred);
|
||||||
if (extensions == NULL)
|
if (extensions == NULL)
|
||||||
goto handle_error;
|
goto handle_error;
|
||||||
|
|
||||||
@@ -1178,8 +1178,6 @@ handle_error:
|
|||||||
psc->driScreen = NULL;
|
psc->driScreen = NULL;
|
||||||
if (psc->fd >= 0)
|
if (psc->fd >= 0)
|
||||||
close(psc->fd);
|
close(psc->fd);
|
||||||
if (psc->driver)
|
|
||||||
dlclose(psc->driver);
|
|
||||||
|
|
||||||
free(deviceName);
|
free(deviceName);
|
||||||
glx_screen_cleanup(&psc->base);
|
glx_screen_cleanup(&psc->base);
|
||||||
|
@@ -56,7 +56,6 @@ struct dri2_screen {
|
|||||||
const __DRI2interopExtension *interop;
|
const __DRI2interopExtension *interop;
|
||||||
const __DRIconfig **driver_configs;
|
const __DRIconfig **driver_configs;
|
||||||
|
|
||||||
void *driver;
|
|
||||||
char *driverName;
|
char *driverName;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
|
@@ -842,7 +842,7 @@ dri3_create_screen(int screen, struct glx_display * priv, bool driver_name_is_in
|
|||||||
goto handle_error;
|
goto handle_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
extensions = driOpenDriver(driverName, &psc->driver, driver_name_is_inferred);
|
extensions = driOpenDriver(driverName, driver_name_is_inferred);
|
||||||
if (extensions == NULL)
|
if (extensions == NULL)
|
||||||
goto handle_error;
|
goto handle_error;
|
||||||
|
|
||||||
@@ -1033,8 +1033,6 @@ handle_error:
|
|||||||
close(psc->fd_display_gpu);
|
close(psc->fd_display_gpu);
|
||||||
if (psc->fd_render_gpu >= 0)
|
if (psc->fd_render_gpu >= 0)
|
||||||
close(psc->fd_render_gpu);
|
close(psc->fd_render_gpu);
|
||||||
if (psc->driver)
|
|
||||||
dlclose(psc->driver);
|
|
||||||
|
|
||||||
free(driverName);
|
free(driverName);
|
||||||
glx_screen_cleanup(&psc->base);
|
glx_screen_cleanup(&psc->base);
|
||||||
|
@@ -98,7 +98,6 @@ struct dri3_screen {
|
|||||||
const __DRI2interopExtension *interop;
|
const __DRI2interopExtension *interop;
|
||||||
const __DRIconfig **driver_configs;
|
const __DRIconfig **driver_configs;
|
||||||
|
|
||||||
void *driver;
|
|
||||||
/* fd of the GPU used for rendering. */
|
/* fd of the GPU used for rendering. */
|
||||||
int fd_render_gpu;
|
int fd_render_gpu;
|
||||||
/* fd of the GPU used for display. If the same GPU is used for display
|
/* 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"
|
#define GL_LIB_NAME "libGL.so.1"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const __DRIextension **
|
||||||
|
dri_loader_get_extensions(const char *driver_name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Try to \c dlopen the named driver.
|
* 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 driverName - a name like "i965", "radeon", "nouveau", etc.
|
||||||
* \param out_driver_handle - Address to return the resulting dlopen() handle.
|
* \param out_driver_handle - Address to return the resulting dlopen() handle.
|
||||||
*
|
*
|
||||||
@@ -70,21 +69,19 @@
|
|||||||
* file not found.
|
* file not found.
|
||||||
*/
|
*/
|
||||||
_X_HIDDEN const __DRIextension **
|
_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;
|
void *glhandle;
|
||||||
|
|
||||||
/* Attempt to make sure libGL symbols will be visible to the driver */
|
/* Attempt to make sure libGL symbols will be visible to the driver */
|
||||||
glhandle = dlopen(GL_LIB_NAME, RTLD_NOW | RTLD_GLOBAL);
|
glhandle = dlopen(GL_LIB_NAME, RTLD_NOW | RTLD_GLOBAL);
|
||||||
|
|
||||||
static const char *search_path_vars[] = {
|
const __DRIextension **extensions = dri_loader_get_extensions(driverName);
|
||||||
"LIBGL_DRIVERS_PATH",
|
|
||||||
"LIBGL_DRIVERS_DIR", /* deprecated */
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
const __DRIextension **extensions =
|
if (driver_name_is_inferred) {
|
||||||
loader_open_driver(driverName, out_driver_handle, search_path_vars, driver_name_is_inferred);
|
glx_message(_LOADER_WARNING,
|
||||||
|
"MESA-LOADER: failed to open %s: driver not built!)\n", driverName);
|
||||||
|
}
|
||||||
|
|
||||||
if (glhandle)
|
if (glhandle)
|
||||||
dlclose(glhandle);
|
dlclose(glhandle);
|
||||||
@@ -742,9 +739,8 @@ clear_driver_config_cache()
|
|||||||
static char *
|
static char *
|
||||||
get_driver_config(const char *driverName)
|
get_driver_config(const char *driverName)
|
||||||
{
|
{
|
||||||
void *handle;
|
|
||||||
char *config = NULL;
|
char *config = NULL;
|
||||||
const __DRIextension **extensions = driOpenDriver(driverName, &handle, false);
|
const __DRIextension **extensions = driOpenDriver(driverName, false);
|
||||||
if (extensions) {
|
if (extensions) {
|
||||||
for (int i = 0; extensions[i]; i++) {
|
for (int i = 0; extensions[i]; i++) {
|
||||||
if (strcmp(extensions[i]->name, __DRI_CONFIG_OPTIONS) != 0)
|
if (strcmp(extensions[i]->name, __DRI_CONFIG_OPTIONS) != 0)
|
||||||
@@ -760,8 +756,6 @@ get_driver_config(const char *driverName)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dlclose(handle);
|
|
||||||
|
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -64,7 +64,6 @@ extern void
|
|||||||
driReleaseDrawables(struct glx_context *gc);
|
driReleaseDrawables(struct glx_context *gc);
|
||||||
|
|
||||||
extern const __DRIextension **driOpenDriver(const char *driverName,
|
extern const __DRIextension **driOpenDriver(const char *driverName,
|
||||||
void **out_driver_handle,
|
|
||||||
bool driver_name_is_inferred);
|
bool driver_name_is_inferred);
|
||||||
|
|
||||||
struct dri_ctx_attribs {
|
struct dri_ctx_attribs {
|
||||||
|
@@ -800,8 +800,6 @@ driswDestroyScreen(struct glx_screen *base)
|
|||||||
psc->core->destroyScreen(psc->driScreen);
|
psc->core->destroyScreen(psc->driScreen);
|
||||||
driDestroyConfigs(psc->driver_configs);
|
driDestroyConfigs(psc->driver_configs);
|
||||||
psc->driScreen = NULL;
|
psc->driScreen = NULL;
|
||||||
if (psc->driver)
|
|
||||||
dlclose(psc->driver);
|
|
||||||
free(psc);
|
free(psc);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -955,7 +953,7 @@ driswCreateScreenDriver(int screen, struct glx_display *priv,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
extensions = driOpenDriver(driver, &psc->driver, driver_name_is_inferred);
|
extensions = driOpenDriver(driver, driver_name_is_inferred);
|
||||||
if (extensions == NULL)
|
if (extensions == NULL)
|
||||||
goto handle_error;
|
goto handle_error;
|
||||||
psc->name = driver;
|
psc->name = driver;
|
||||||
@@ -1051,8 +1049,6 @@ driswCreateScreenDriver(int screen, struct glx_display *priv,
|
|||||||
psc->core->destroyScreen(psc->driScreen);
|
psc->core->destroyScreen(psc->driScreen);
|
||||||
psc->driScreen = NULL;
|
psc->driScreen = NULL;
|
||||||
|
|
||||||
if (psc->driver)
|
|
||||||
dlclose(psc->driver);
|
|
||||||
glx_screen_cleanup(&psc->base);
|
glx_screen_cleanup(&psc->base);
|
||||||
free(psc);
|
free(psc);
|
||||||
|
|
||||||
|
@@ -53,7 +53,6 @@ struct drisw_screen
|
|||||||
|
|
||||||
const __DRIconfig **driver_configs;
|
const __DRIconfig **driver_configs;
|
||||||
|
|
||||||
void *driver;
|
|
||||||
const char *name;
|
const char *name;
|
||||||
|
|
||||||
bool has_multibuffer;
|
bool has_multibuffer;
|
||||||
|
@@ -105,6 +105,13 @@ else
|
|||||||
)
|
)
|
||||||
endif
|
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(
|
libglx = static_library(
|
||||||
'glx',
|
'glx',
|
||||||
[files_libglx, glx_generated],
|
[files_libglx, glx_generated],
|
||||||
@@ -115,7 +122,7 @@ libglx = static_library(
|
|||||||
gnu_symbol_visibility : 'hidden',
|
gnu_symbol_visibility : 'hidden',
|
||||||
link_with : [
|
link_with : [
|
||||||
libloader, libloader_dri3_helper,
|
libloader, libloader_dri3_helper,
|
||||||
extra_libs_libglx,
|
extra_libs_libglx, glx_gallium_link
|
||||||
],
|
],
|
||||||
dependencies : [
|
dependencies : [
|
||||||
idep_mesautil, idep_xmlconfig,
|
idep_mesautil, idep_xmlconfig,
|
||||||
@@ -137,6 +144,7 @@ libgl = shared_library(
|
|||||||
version : gl_lib_version,
|
version : gl_lib_version,
|
||||||
darwin_versions : '4.0.0',
|
darwin_versions : '4.0.0',
|
||||||
install : true,
|
install : true,
|
||||||
|
install_rpath : dri_drivers_path,
|
||||||
)
|
)
|
||||||
|
|
||||||
if with_tests
|
if with_tests
|
||||||
|
@@ -26,7 +26,7 @@ if with_shared_glapi
|
|||||||
executable(
|
executable(
|
||||||
'glx-test',
|
'glx-test',
|
||||||
[files_glx_test, glx_indirect_size_h, main_dispatch_h],
|
[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 : [
|
include_directories : [
|
||||||
inc_src, inc_include, inc_mesa, inc_mapi, inc_glx, inc_loader, inc_gallium
|
inc_src, inc_include, inc_mesa, inc_mapi, inc_glx, inc_loader, inc_gallium
|
||||||
],
|
],
|
||||||
|
Reference in New Issue
Block a user