GLX support via LD_LIBRARY_PATH
This commit is contained in:
parent
314da66ae5
commit
4d4b5e2dad
|
@ -79,6 +79,8 @@ NVIDIA_DSO_PATTERNS = [
|
||||||
|
|
||||||
CUDA_DSO_PATTERNS = ["libcudadebugger\.so.*$", "libcuda\.so.*$"]
|
CUDA_DSO_PATTERNS = ["libcudadebugger\.so.*$", "libcuda\.so.*$"]
|
||||||
|
|
||||||
|
GLX_DSO_PATTERNS = ["libGLX_nvidia\.so.*$"]
|
||||||
|
|
||||||
|
|
||||||
def find_files(path: str, files_patterns: List[str]):
|
def find_files(path: str, files_patterns: List[str]):
|
||||||
"""Scans the PATH directory looking for the files complying with
|
"""Scans the PATH directory looking for the files complying with
|
||||||
|
@ -240,10 +242,12 @@ def nvidia_main(cache_dir: str, gl_vendor_path: str):
|
||||||
cache_dir = os.path.join(cache_dir, "nvidia")
|
cache_dir = os.path.join(cache_dir, "nvidia")
|
||||||
libs_dir = os.path.join(cache_dir, "lib")
|
libs_dir = os.path.join(cache_dir, "lib")
|
||||||
cuda_dir = os.path.join(cache_dir, "cuda")
|
cuda_dir = os.path.join(cache_dir, "cuda")
|
||||||
|
glx_dir = os.path.join(cache_dir, "glx")
|
||||||
log_info(f"Nvidia libs dir: {libs_dir}")
|
log_info(f"Nvidia libs dir: {libs_dir}")
|
||||||
log_info(f"Nvidia cuda dir: {libs_dir}")
|
log_info(f"Nvidia cuda dir: {libs_dir}")
|
||||||
os.makedirs(libs_dir, exist_ok=True)
|
os.makedirs(libs_dir, exist_ok=True)
|
||||||
os.makedirs(cuda_dir, exist_ok=True)
|
os.makedirs(cuda_dir, exist_ok=True)
|
||||||
|
os.makedirs(glx_dir, exist_ok=True)
|
||||||
log_info(f"Searching for the Nvidia OpenGL DSOs in {gl_vendor_path}")
|
log_info(f"Searching for the Nvidia OpenGL DSOs in {gl_vendor_path}")
|
||||||
# Nvidia OpenGL DSOs
|
# Nvidia OpenGL DSOs
|
||||||
opengl_dsos = find_files(gl_vendor_path, NVIDIA_DSO_PATTERNS)
|
opengl_dsos = find_files(gl_vendor_path, NVIDIA_DSO_PATTERNS)
|
||||||
|
@ -251,7 +255,6 @@ def nvidia_main(cache_dir: str, gl_vendor_path: str):
|
||||||
[log_info(dso) for dso in opengl_dsos]
|
[log_info(dso) for dso in opengl_dsos]
|
||||||
log_info("Patching the DSOs.")
|
log_info("Patching the DSOs.")
|
||||||
copy_and_patch_libs(opengl_dsos, libs_dir)
|
copy_and_patch_libs(opengl_dsos, libs_dir)
|
||||||
log_info("Setting NVIDIA-specific env variables.")
|
|
||||||
# Nvidia Cuda DSOs
|
# Nvidia Cuda DSOs
|
||||||
log_info(f"Searching for the Nvidia Cuda DSOs in {gl_vendor_path}")
|
log_info(f"Searching for the Nvidia Cuda DSOs in {gl_vendor_path}")
|
||||||
cuda_dsos = find_files(gl_vendor_path, CUDA_DSO_PATTERNS)
|
cuda_dsos = find_files(gl_vendor_path, CUDA_DSO_PATTERNS)
|
||||||
|
@ -259,8 +262,15 @@ def nvidia_main(cache_dir: str, gl_vendor_path: str):
|
||||||
[log_info(dso) for dso in cuda_dsos]
|
[log_info(dso) for dso in cuda_dsos]
|
||||||
log_info("Patching the DSOs.")
|
log_info("Patching the DSOs.")
|
||||||
copy_and_patch_libs(cuda_dsos, cuda_dir, libs_dir)
|
copy_and_patch_libs(cuda_dsos, cuda_dir, libs_dir)
|
||||||
log_info("Setting NVIDIA-specific env variables.")
|
# GLX DSOs
|
||||||
|
log_info(f"Searching for the Nvidia GLX DSOs in {gl_vendor_path}")
|
||||||
|
glx_dsos = find_files(gl_vendor_path, GLX_DSO_PATTERNS)
|
||||||
|
log_info(f"Found the following DSOs:")
|
||||||
|
[log_info(dso) for dso in glx_dsos]
|
||||||
|
log_info("Patching the DSOs.")
|
||||||
|
copy_and_patch_libs(glx_dsos, glx_dir, libs_dir)
|
||||||
# Preparing the env
|
# Preparing the env
|
||||||
|
log_info("Setting NVIDIA-specific env variables.")
|
||||||
new_env = {}
|
new_env = {}
|
||||||
log_info(f"__GLX_VENDOR_LIBRARY_NAME = nvidia")
|
log_info(f"__GLX_VENDOR_LIBRARY_NAME = nvidia")
|
||||||
new_env["__GLX_VENDOR_LIBRARY_NAME"] = "nvidia"
|
new_env["__GLX_VENDOR_LIBRARY_NAME"] = "nvidia"
|
||||||
|
@ -268,8 +278,11 @@ def nvidia_main(cache_dir: str, gl_vendor_path: str):
|
||||||
log_info(f"__EGL_VENDOR_LIBRARY_DIRS = {egl_config_files}")
|
log_info(f"__EGL_VENDOR_LIBRARY_DIRS = {egl_config_files}")
|
||||||
new_env["__EGL_VENDOR_LIBRARY_DIRS"] = egl_config_files
|
new_env["__EGL_VENDOR_LIBRARY_DIRS"] = egl_config_files
|
||||||
ld_library_path = os.environ.get("LD_LIBRARY_PATH", None)
|
ld_library_path = os.environ.get("LD_LIBRARY_PATH", None)
|
||||||
|
nv_ld_library_path = f"{cuda_dir}:{glx_dir}"
|
||||||
ld_library_path = (
|
ld_library_path = (
|
||||||
cuda_dir if ld_library_path is None else f"{cuda_dir}:{ld_library_path}"
|
nv_ld_library_path
|
||||||
|
if ld_library_path is None
|
||||||
|
else f"{nv_ld_library_path}:{ld_library_path}"
|
||||||
)
|
)
|
||||||
log_info(f"LD_LIBRARY_PATH = {ld_library_path}")
|
log_info(f"LD_LIBRARY_PATH = {ld_library_path}")
|
||||||
new_env["LD_LIBRARY_PATH"] = ld_library_path
|
new_env["LD_LIBRARY_PATH"] = ld_library_path
|
||||||
|
|
Loading…
Reference in a new issue