[Buildroot] [External] - [PATCH] package/nvidia-driver: bump version to 550.78

Vincent Fazio vfazio at xes-inc.com
Mon May 13 18:03:18 UTC 2024


Nick, All,

> -----Original Message-----
> From: buildroot <buildroot-bounces at buildroot.org> On Behalf Of Nick
> Whitlock
> Sent: Monday, May 13, 2024 10:59 AM
> To: buildroot at buildroot.org
> Cc: Yann E. MORIN <yann.morin.1998 at free.fr>; Nick Whitlock
> <nick.whitlock at eizo.com>
> Subject: [External] - [Buildroot] [PATCH] package/nvidia-driver: bump version
> to 550.78
> 
> The NVIDIA drivers now have 64-bit and 32-bit versions bundled
> into one .run file.
> 

I believe this was always the case. See the /32 folder in the x86_64 run files for 390.x

> A configuration value was also added to check if the user wants
> to install GTK integration for the NVIDIA driver.
> 
> The legacy version of libGL.so was removed in favor of the
> vendor neutral version.
> 
> This has been confirmed to work on kernel 6.1.4.
> 
> Signed-off-by: Nick Whitlock <nick.whitlock at eizo.com>
> ---
>  package/nvidia-driver/Config.in          |  3 ++
>  package/nvidia-driver/nvidia-driver.hash |  7 ++-
>  package/nvidia-driver/nvidia-driver.mk   | 69 +++++++++++++-----------
>  3 files changed, 43 insertions(+), 36 deletions(-)
> 
> diff --git a/package/nvidia-driver/Config.in b/package/nvidia-driver/Config.in
> index a8617a939b..0fcce93e28 100644
> --- a/package/nvidia-driver/Config.in
> +++ b/package/nvidia-driver/Config.in
> @@ -90,4 +90,7 @@ config BR2_PACKAGE_NVIDIA_DRIVER_MODULE
>           provides Unified Memory access to the GPU and CPU memories for
>           CUDA programs.
> 
> +config BR2_PACKAGE_NVIDIA_DRIVER_GTK
> +       bool "nvidia GTK acceleration"
> +
>  endif # BR2_PACKAGE_NVIDIA_DRIVER
> diff --git a/package/nvidia-driver/nvidia-driver.hash b/package/nvidia-
> driver/nvidia-driver.hash
> index 620112e6c8..06e3314d53 100644
> --- a/package/nvidia-driver/nvidia-driver.hash
> +++ b/package/nvidia-driver/nvidia-driver.hash
> @@ -1,4 +1,3 @@
> -# Locally computed
> -sha256
> 94e399b459659c12b1344e8c8f4f5eee1ed5915ff459fc8bb831c9e1d44677
> db  NVIDIA-Linux-x86-390.151.run
> -sha256
> 6e4fd2258465f5d5527fe80abd46de925a30348b4a84658498a6d75caf42c4
> 7c  NVIDIA-Linux-x86_64-390.151-no-compat32.run
> -sha256
> bd28b0c5aeeb00eb11d3ec6f6f3449d4b3a40100914258332734a53527997
> 526  LICENSE
> +# Locally computed:
> +sha256
> 34070434527ec9d575483e7f11ca078e467e73f6defc54366ecfbdcfe4a3bf7
> 3  NVIDIA-Linux-x86_64-550.78.run
> +sha256
> 5ac626496a6388d37cdd53e0300525267a4b8c89fb5980da060783afd561faf
> 7  LICENSE
> diff --git a/package/nvidia-driver/nvidia-driver.mk b/package/nvidia-
> driver/nvidia-driver.mk
> index f1217b00aa..9ea97a2a9f 100644
> --- a/package/nvidia-driver/nvidia-driver.mk
> +++ b/package/nvidia-driver/nvidia-driver.mk
> @@ -4,10 +4,9 @@
>  #
> 
> ############################################################
> ####################
> 
> -NVIDIA_DRIVER_VERSION = 390.151
> -NVIDIA_DRIVER_SUFFIX = $(if $(BR2_x86_64),_64)
> -NVIDIA_DRIVER_SITE = http://download.nvidia.com/XFree86/Linux-
> x86$(NVIDIA_DRIVER_SUFFIX)/$(NVIDIA_DRIVER_VERSION)
> -NVIDIA_DRIVER_SOURCE = NVIDIA-Linux-x86$(NVIDIA_DRIVER_SUFFIX)-
> $(NVIDIA_DRIVER_VERSION)$(if $(BR2_x86_64),-no-compat32).run

I think we did this so that 32bit builds didn't need to: 
1) fetch the 64bit bundle
2) handle the /32 subdirectory based on the target bitness

If we used the installer's native logic, IIRC, it would install both 32bit and 64bit libraries, hence we stage the files and copy out what we need.

> +NVIDIA_DRIVER_VERSION = 550.78

We had some discussions about a bump a year or two ago and there was never any real consensus about what we should do.

The challenge, I think, is that the 5xx series drops support for some common NVIDIA products that may be more likely be used in embedded environments (like some of the Wolf GPU products).

https://www.nvidia.com/en-us/drivers/unix/legacy-gpu/

At the time, we discussed having different selectable, but mutually exclusive, driver versions so that users could choose the version that provided support for their GPU.

I had intended to do this but never found the time. I was also rewriting the installer to be manifest based but that too stalled due to lack of time.

> +NVIDIA_DRIVER_SITE = http://download.nvidia.com/XFree86/Linux-
> x86_64/$(NVIDIA_DRIVER_VERSION)
> +NVIDIA_DRIVER_SOURCE = NVIDIA-Linux-x86_64-
> $(NVIDIA_DRIVER_VERSION).run
>  NVIDIA_DRIVER_LICENSE = NVIDIA Software License
>  NVIDIA_DRIVER_LICENSE_FILES = LICENSE
>  NVIDIA_DRIVER_REDISTRIBUTE = NO
> @@ -23,30 +22,15 @@ ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_XORG),y)
>  NVIDIA_DRIVER_DEPENDENCIES += mesa3d-headers xlib_libX11 xlib_libXext
>  NVIDIA_DRIVER_PROVIDES += libgl libegl libgles
> 
> -# libGL.so.$(NVIDIA_DRIVER_VERSION) is the legacy libGL.so library; it
> -# has been replaced with libGL.so.1.0.0. Installing both is technically
> -# possible, but great care must be taken to ensure they do not conflict,
> -# so that EGL still works. The legacy library exposes an NVidia-specific
> -# API, so it should not be needed, except for legacy, binary-only
> -# applications (in other words: we don't care).
> -#
> -# libGL.so.1.0.0 is the new vendor-neutral library, aimed at replacing
> -# the old libGL.so.$(NVIDIA_DRIVER_VERSION) library. The latter contains
> -# NVidia extensions (which is deemed bad now), while the former follows
> -# the newly-introduced vendor-neutral "dispatching" API/ABI:
> -#   https://github.com/aritger/linux-opengl-abi-proposal/blob/master/linux-
> opengl-abi-proposal.txt
> -# However, this is not very useful to us, as we don't support multiple
> -# GL providers at the same time on the system, which this proposal is
> -# aimed at supporting.
> -#
> -# So we only install the legacy library for now.
>  NVIDIA_DRIVER_LIBS_GL = \
>         libGLX.so.0 \
> -       libGL.so.$(NVIDIA_DRIVER_VERSION) \
> +       libglxserver_nvidia.so.$(NVIDIA_DRIVER_VERSION) \
> +       libGL.so.1.7.0 \
>         libGLX_nvidia.so.$(NVIDIA_DRIVER_VERSION)
> 
>  NVIDIA_DRIVER_LIBS_EGL = \
>         libEGL.so.1.1.0 \
> +       libEGL.so.$(NVIDIA_DRIVER_VERSION) \
>         libGLdispatch.so.0 \
>         libEGL_nvidia.so.$(NVIDIA_DRIVER_VERSION)
> 
> @@ -57,13 +41,18 @@ NVIDIA_DRIVER_LIBS_GLES = \
>         libGLESv2_nvidia.so.$(NVIDIA_DRIVER_VERSION)
> 
>  NVIDIA_DRIVER_LIBS_MISC = \
> +       libnvidia-allocator.so.$(NVIDIA_DRIVER_VERSION) \
> +       libnvidia-api.so.$(NVIDIA_DRIVER_VERSION) \
> +       libnvidia-cfg.so.$(NVIDIA_DRIVER_VERSION) \
>         libnvidia-eglcore.so.$(NVIDIA_DRIVER_VERSION) \
> -       libnvidia-egl-wayland.so.1.0.2 \
> +       libnvidia-egl-gbm.so.1.1.1 \
> +       libnvidia-egl-wayland.so.1.1.13 \
> +       libnvidia-wayland-client.so.$(NVIDIA_DRIVER_VERSION) \
>         libnvidia-glcore.so.$(NVIDIA_DRIVER_VERSION) \
>         libnvidia-glsi.so.$(NVIDIA_DRIVER_VERSION) \
> -       tls/libnvidia-tls.so.$(NVIDIA_DRIVER_VERSION) \
> -       libvdpau_nvidia.so.$(NVIDIA_DRIVER_VERSION):vdpau/ \
> -       libnvidia-ml.so.$(NVIDIA_DRIVER_VERSION)
> +       libnvidia-glvkspirv.so.$(NVIDIA_DRIVER_VERSION) \
> +       libnvidia-ml.so.$(NVIDIA_DRIVER_VERSION) \
> +       libnvidia-rtcore.so.$(NVIDIA_DRIVER_VERSION)
> 
>  NVIDIA_DRIVER_LIBS += \
>         $(NVIDIA_DRIVER_LIBS_GL) \
> @@ -87,13 +76,26 @@ endef
>  # wants to run a third-party program developed under such an agreement).
>  ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_PRIVATE_LIBS),y)
>  NVIDIA_DRIVER_LIBS += \
> +       libnvidia-fbc.so.$(NVIDIA_DRIVER_VERSION) \
>         libnvidia-ifr.so.$(NVIDIA_DRIVER_VERSION) \
> -       libnvidia-fbc.so.$(NVIDIA_DRIVER_VERSION)
> +       libnvidia-ngx.so.$(NVIDIA_DRIVER_VERSION) \
> +       libnvidia-opticalflow.so.$(NVIDIA_DRIVER_VERSION) \
> +       libnvoptix.so.$(NVIDIA_DRIVER_VERSION)
> +endif
> +
> +# Include GTK libraries (if required)
> +ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_GTK),y)
> +NVIDIA_DRIVER_LIBS += \
> +       libnvidia-gtk2.so.$(NVIDIA_DRIVER_VERSION) \
> +       libnvidia-gtk3.so.$(NVIDIA_DRIVER_VERSION)
>  endif
> 
>  # We refer to the destination path; the origin file has no directory
> component
>  NVIDIA_DRIVER_LIBS += \
>         nvidia_drv.so:xorg/modules/drivers/ \
> +       libnvidia-pkcs11.so.$(NVIDIA_DRIVER_VERSION) \
> +       libnvidia-pkcs11-openssl3.so.$(NVIDIA_DRIVER_VERSION) \
> +       libnvidia-tls.so.$(NVIDIA_DRIVER_VERSION) \
>         libglx.so.$(NVIDIA_DRIVER_VERSION):xorg/modules/extensions/
> 
>  # libglx needs a symlink according to the driver README. It has no SONAME
> @@ -107,11 +109,13 @@ endif # X drivers
>  ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA),y)
>  NVIDIA_DRIVER_LIBS += \
>         libcuda.so.$(NVIDIA_DRIVER_VERSION) \
> -       libnvidia-compiler.so.$(NVIDIA_DRIVER_VERSION) \
> +       libcudadebugger.so.$(NVIDIA_DRIVER_VERSION) \
>         libnvcuvid.so.$(NVIDIA_DRIVER_VERSION) \
> -       libnvidia-fatbinaryloader.so.$(NVIDIA_DRIVER_VERSION) \
> +       libnvidia-encode.so.$(NVIDIA_DRIVER_VERSION) \
> +       libnvidia-gpucomp.so.$(NVIDIA_DRIVER_VERSION) \
> +       libnvidia-nvvm.so.$(NVIDIA_DRIVER_VERSION) \
>         libnvidia-ptxjitcompiler.so.$(NVIDIA_DRIVER_VERSION) \
> -       libnvidia-encode.so.$(NVIDIA_DRIVER_VERSION)
> +       libvdpau_nvidia.so.$(NVIDIA_DRIVER_VERSION)
>  ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA_PROGS),y)
>  NVIDIA_DRIVER_PROGS = nvidia-cuda-mps-control nvidia-cuda-mps-server
>  endif
> @@ -152,8 +156,9 @@ endif # BR2_PACKAGE_NVIDIA_DRIVER_MODULE ==
> y
>  # virtually everywhere, and it is fine enough to provide useful options.
>  # Except it can't extract into an existing (even empty) directory.
>  define NVIDIA_DRIVER_EXTRACT_CMDS
> -       $(SHELL) $(NVIDIA_DRIVER_DL_DIR)/$(NVIDIA_DRIVER_SOURCE) --
> extract-only --target \
> -               $(@D)/tmp-extract
> +       $(SHELL) $(NVIDIA_DRIVER_DL_DIR)/$(NVIDIA_DRIVER_SOURCE) --
> extract-only \
> +               $(if $(BR2_x86_64),--no-install-compat32-libs) \
> +               --target $(@D)/tmp-extract
>         chmod u+w -R $(@D)
>         mv $(@D)/tmp-extract/* $(@D)/tmp-extract/.manifest $(@D)
>         rm -rf $(@D)/tmp-extract
> --
> 2.43.0
> 
> _______________________________________________
> buildroot mailing list
> buildroot at buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
> CAUTION: This email originated from outside of the organization. Do not click
> links or open attachments unless you recognize the sender and know the
> content is safe.




More information about the buildroot mailing list