From 4d7ae4ac41ffcbc3bf4bf84c0fb8717da1dd1684 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Tue, 1 Feb 2022 19:49:56 +0100 Subject: [PATCH] nvidia: initial package 510.47.03 --- .../nvidia/modprobe.d/nvidia-modesetting.conf | 1 + packages/graphics/nvidia/package.mk | 129 ++++++++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 packages/graphics/nvidia/modprobe.d/nvidia-modesetting.conf create mode 100644 packages/graphics/nvidia/package.mk diff --git a/packages/graphics/nvidia/modprobe.d/nvidia-modesetting.conf b/packages/graphics/nvidia/modprobe.d/nvidia-modesetting.conf new file mode 100644 index 0000000000..0ea2309390 --- /dev/null +++ b/packages/graphics/nvidia/modprobe.d/nvidia-modesetting.conf @@ -0,0 +1 @@ +options nvidia-drm modeset=1 diff --git a/packages/graphics/nvidia/package.mk b/packages/graphics/nvidia/package.mk new file mode 100644 index 0000000000..9887c4ee65 --- /dev/null +++ b/packages/graphics/nvidia/package.mk @@ -0,0 +1,129 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="nvidia" +PKG_VERSION="510.47.03" +PKG_SHA256="694cda690ecffde7e9987f1fc0985d796a624185a2f5bda0a7e804ca791bf227" +PKG_ARCH="x86_64" +PKG_LICENSE="nonfree" +PKG_SITE="https://www.nvidia.com/en-us/drivers/unix/" +PKG_URL="http://us.download.nvidia.com/XFree86/Linux-x86_64/${PKG_VERSION}/NVIDIA-Linux-x86_64-${PKG_VERSION}-no-compat32.run" +PKG_DEPENDS_TARGET="toolchain util-macros libglvnd" +PKG_LONGDESC="The GBM/Wayland graphic driver for NVIDIA GPUs supporting the GeForce 700 Series & above." +PKG_TOOLCHAIN="manual" + +PKG_IS_KERNEL_PKG="yes" + +if [ "${VULKAN_SUPPORT}" = "yes" ]; then + PKG_DEPENDS_TARGET+=" ${VULKAN} vulkan-tools" +fi + +unpack() { + [ -d ${PKG_BUILD} ] && rm -rf ${PKG_BUILD} + + sh ${SOURCES}/${PKG_NAME}/${PKG_SOURCE_NAME} --extract-only --target ${PKG_BUILD} +} + +make_target() { + unset LDFLAGS + + cd kernel + make module CC=${CC} LD=${LD} SYSSRC=$(kernel_path) SYSOUT=$(kernel_path) + ${STRIP} --strip-debug nvidia.ko + cd .. +} + +makeinstall_target() { + # Linux kernel modules + mkdir -p ${INSTALL}/$(get_full_module_dir)/nvidia + cp -P kernel/nvidia.ko ${INSTALL}/$(get_full_module_dir)/nvidia + cp -P kernel/nvidia-drm.ko ${INSTALL}/$(get_full_module_dir)/nvidia + cp -P kernel/nvidia-uvm.ko ${INSTALL}/$(get_full_module_dir)/nvidia + cp -P kernel/nvidia-modeset.ko ${INSTALL}/$(get_full_module_dir)/nvidia + + # GBM + mkdir -p ${INSTALL}/usr/lib/gbm + cp -p libnvidia-allocator.so.${PKG_VERSION} ${INSTALL}/usr/lib + ln -sf libnvidia-allocator.so.${PKG_VERSION} ${INSTALL}/usr/lib/liballocator.so.0 + ln -sf ../libnvidia-allocator.so.${PKG_VERSION} ${INSTALL}/usr/lib/gbm/nvidia-drm_gbm.so + + mkdir -p ${INSTALL}/usr/share/egl/egl_external_platform.d + cp -p 15_nvidia_gbm.json ${INSTALL}/usr/share/egl/egl_external_platform.d + cp -p libnvidia-egl-gbm.so.1.1.0 ${INSTALL}/usr/lib + ln -sf libnvidia-egl-gbm.so.1.1.0 ${INSTALL}/usr/lib/libnvidia-egl-gbm.so.1 + ln -sf libnvidia-egl-gbm.so.1 ${INSTALL}/usr/lib/libnvidia-egl-gbm.so + + # GLVND + mkdir -p ${INSTALL}/usr/share/glvnd/egl_vendor.d + cp -p 10_nvidia.json ${INSTALL}/usr/share/glvnd/egl_vendor.d + + # Wayland + mkdir -p ${INSTALL}/usr/lib + cp -p libnvidia-egl-wayland.so.1.1.9 ${INSTALL}/usr/lib/ + ln -sf libnvidia-egl-wayland.so.1.1.9 ${INSTALL}/usr/lib/libnvidia-egl-wayland.so.1 + ln -sf libnvidia-egl-wayland.so.1 ${INSTALL}/usr/lib/libnvidia-egl-wayland.so + + mkdir -p ${INSTALL}/usr/share/egl/egl_external_platform.d + cp -p 10_nvidia_wayland.json ${INSTALL}/usr/share/egl/egl_external_platform.d + + # OpenGL / EGL + mkdir -p ${INSTALL}/usr/lib + cp -p libEGL_nvidia.so.${PKG_VERSION} ${INSTALL}/usr/lib/ + ln -sf libEGL_nvidia.so.${PKG_VERSION} ${INSTALL}/usr/lib/libEGL_nvidia.so.0 + ln -sf libEGL_nvidia.so.0 ${INSTALL}/usr/lib/libEGL_nvidia.so + + # OpenGL core + mkdir -p ${INSTALL}/usr/lib + cp -p libnvidia-eglcore.so.${PKG_VERSION} ${INSTALL}/usr/lib/ + ln -sf libnvidia-eglcore.so.${PKG_VERSION} ${INSTALL}/usr/lib/libnvidia-eglcore.so + cp -p libnvidia-glsi.so.${PKG_VERSION} ${INSTALL}/usr/lib + ln -sf libnvidia-glsi.so.${PKG_VERSION} ${INSTALL}/usr/lib/libnvidia-glsi.so + + # OpenGL ES + mkdir -p ${INSTALL}/usr/lib + cp -p libGLESv2_nvidia.so.${PKG_VERSION} ${INSTALL}/usr/lib + ln -sf libGLESv2_nvidia.so.${PKG_VERSION} ${INSTALL}/usr/lib/libGLESv2_nvidia.so.2 + ln -sf libGLESv2_nvidia.so.2 ${INSTALL}/usr/lib/libGLESv2_nvidia.so + + # Vulkan + if [ "${VULKAN_SUPPORT}" = "yes" ]; then + mkdir -p ${INSTALL}/usr/lib + cp -P libnvidia-glvkspirv.so.${PKG_VERSION} ${INSTALL}/usr/lib + ln -sf libnvidia-glvkspirv.so.${PKG_VERSION} ${INSTALL}/usr/lib/libnvidia-glvkspirv.so + + mkdir -p ${INSTALL}/usr/share/vulkan/implicit_layer.d + cp -P nvidia_layers.json ${INSTALL}/usr/share/vulkan/implicit_layer.d + mkdir -p ${INSTALL}/usr/share/vulkan/icd.d + cp -P nvidia_icd.json ${INSTALL}/usr/share/vulkan/icd.d + fi + + # CUDA + mkdir -p ${INSTALL}/usr/lib + cp -p libcuda.so.${PKG_VERSION} ${INSTALL}/usr/lib + ln -sf libcuda.so.${PKG_VERSION} ${INSTALL}/usr/lib/libcuda.so.1 + ln -sf libcuda.so.1 ${INSTALL}/usr/lib/libcuda.so + + # NVDEC + mkdir -p ${INSTALL}/usr/lib + cp -p libnvcuvid.so.${PKG_VERSION} ${INSTALL}/usr/lib + ln -sf libnvcuvid.so.${PKG_VERSION} ${INSTALL}/usr/lib/libnvcuvid.so.1 + ln -sf libnvcuvid.so.1 ${INSTALL}/usr/lib/libnvcuvid.so + + # nvidia-tls + mkdir -p ${INSTALL}/usr/lib + cp -P libnvidia-tls.so.${PKG_VERSION} ${INSTALL}/usr/lib + ln -sf libnvidia-tls.so.${PKG_VERSION} ${INSTALL}/usr/lib/libnvidia-tls.so + + # NVML + mkdir -p ${INSTALL}/usr/bin + cp -P nvidia-smi ${INSTALL}/usr/bin + + mkdir -p ${INSTALL}/usr/lib + cp -P libnvidia-ml.so.${PKG_VERSION} ${INSTALL}/usr/lib + ln -sf libnvidia-ml.so.${PKG_VERSION} ${INSTALL}/usr/lib/libnvidia-ml.so.1 + ln -sf libnvidia-ml.so.1 ${INSTALL}/usr/lib/libnvidia-ml.so + + # App profiles + mkdir -p ${INSTALL}/usr/share/nvidia + cp -P nvidia-application-profiles-${PKG_VERSION}-rc ${INSTALL}/usr/share/nvidia +}