diff --git a/x11/linux-nvidia-libs/Makefile b/x11/linux-nvidia-libs/Makefile index 7ced8627efe8..0ae55317f5b9 100644 --- a/x11/linux-nvidia-libs/Makefile +++ b/x11/linux-nvidia-libs/Makefile @@ -1,7 +1,7 @@ # $FreeBSD$ PORTNAME= nvidia-libs -DISTVERSION?= 440.100 +DISTVERSION?= 460.39 # Always try to set PORTREVISION as it can be overridden by the slave ports PORTREVISION?= 0 CATEGORIES= x11 linux @@ -40,9 +40,6 @@ LINUX_LIBS= libcuda.so.${PORTVERSION} \ libnvidia-opencl.so.${PORTVERSION} \ libnvidia-tls.so.${PORTVERSION} \ libvdpau_nvidia.so.${PORTVERSION} -.if ${NVVERSION} < 415.013 -LINUX_LIBS+= tls/libnvidia-tls.so.${PORTVERSION} -.endif LINUX_LINKS= libcuda.so.${PORTVERSION} libcuda.so.1 \ libcuda.so.${PORTVERSION} libcuda.so \ libnvcuvid.so.${PORTVERSION} libnvcuvid.so.1 \ @@ -61,6 +58,7 @@ LINUX32_LIBS= libcuda.so.${PORTVERSION} \ libnvidia-tls.so.${PORTVERSION} \ libvdpau_nvidia.so.${PORTVERSION} .if ${NVVERSION} < 415.013 +LINUX_LIBS+= tls/libnvidia-tls.so.${PORTVERSION} LINUX32_LIBS+= tls/libnvidia-tls.so.${PORTVERSION} .endif LINUX32_LINKS= libcuda.so.${PORTVERSION} libcuda.so.1 \ @@ -93,11 +91,16 @@ PLIST_RE+= '\,${LINUXBASE}.*libEGL_nvidia\.so\.${PORTVERSION},d' .else PLIST_RE+= '\,${LINUXBASE}.*libEGL_nvidia\.so,d' .endif +.if ${NVVERSION} >= 361.016 && ${NVVERSION} < 450.051 +LINUX_LIBS+= libnvidia-fatbinaryloader.so.${PORTVERSION} +LINUX32_LIBS+= libnvidia-fatbinaryloader.so.${PORTVERSION} +.else +PLIST_RE+= '\,${LINUXBASE}.*libnvidia-fatbinaryloader\.so,d' +.endif .if ${NVVERSION} >= 361.016 LINUX_LIBS+= libGLESv1_CM_nvidia.so.${PORTVERSION} \ libGLESv2_nvidia.so.${PORTVERSION} \ libGLX_nvidia.so.${PORTVERSION} \ - libnvidia-fatbinaryloader.so.${PORTVERSION} \ libnvidia-ptxjitcompiler.so.${PORTVERSION} LINUX_LINKS+= libGLESv1_CM_nvidia.so.${PORTVERSION} libGLESv1_CM_nvidia.so.1 \ libGLESv2_nvidia.so.${PORTVERSION} libGLESv2_nvidia.so.2 \ @@ -108,7 +111,6 @@ LINUX_LINKS+= libGLESv1_CM_nvidia.so.${PORTVERSION} libGLESv1_CM_nvidia.so.1 \ LINUX32_LIBS+= libGLESv1_CM_nvidia.so.${PORTVERSION} \ libGLESv2_nvidia.so.${PORTVERSION} \ libGLX_nvidia.so.${PORTVERSION} \ - libnvidia-fatbinaryloader.so.${PORTVERSION} \ libnvidia-ptxjitcompiler.so.${PORTVERSION} LINUX32_LINKS+= libGLESv1_CM_nvidia.so.${PORTVERSION} libGLESv1_CM_nvidia.so.1 \ libGLESv2_nvidia.so.${PORTVERSION} libGLESv2_nvidia.so.2 \ @@ -119,10 +121,13 @@ LINUX32_LINKS+= libGLESv1_CM_nvidia.so.${PORTVERSION} libGLESv1_CM_nvidia.so.1 \ .else PLIST_RE+= '\,${LINUXBASE}.*libGLESv(1_CM|2)_nvidia\.so,d' \ '\,${LINUXBASE}.*libGLX_(nvidia|indirect)\.so,d' \ - '\,${LINUXBASE}.*libnvidia-fatbinaryloader\.so,d' \ '\,${LINUXBASE}.*libnvidia-ptxjitcompiler\.so,d' .endif -.if ${NVVERSION} >= 440.026 +.if ${NVVERSION:R} >= 460 # 460.27.04 +LINUX_LIBS+= libnvidia-egl-wayland.so.1.1.5 +LINUX_LINKS+= libnvidia-egl-wayland.so.1.1.5 libnvidia-egl-wayland.so.1 +PLIST_RE+= '\,${LINUXBASE},s/(libnvidia-egl-wayland\.so)\.X/\1.1.1.5/' +.elif ${NVVERSION} >= 440.026 LINUX_LIBS+= libnvidia-egl-wayland.so.1.1.4 LINUX_LINKS+= libnvidia-egl-wayland.so.1.1.4 libnvidia-egl-wayland.so.1 PLIST_RE+= '\,${LINUXBASE},s/(libnvidia-egl-wayland\.so)\.X/\1.1.1.4/' diff --git a/x11/linux-nvidia-libs/distinfo b/x11/linux-nvidia-libs/distinfo index 7b7d8d92196a..4c2bddd426e2 100644 --- a/x11/linux-nvidia-libs/distinfo +++ b/x11/linux-nvidia-libs/distinfo @@ -1,6 +1,6 @@ TIMESTAMP = 1482026038 -SHA256 (NVIDIA-Linux-x86_64-440.100.run) = 649684fab4f37b178afb6cae012e7f9736377d89fa8abdfca26f24a13bbacf1f -SIZE (NVIDIA-Linux-x86_64-440.100.run) = 144653408 +SHA256 (NVIDIA-Linux-x86_64-460.39.run) = 0bf0664078013aa62ed6840caed0637b226884b9398e1fb647e127ad3ad9a37f +SIZE (NVIDIA-Linux-x86_64-460.39.run) = 178310565 SHA256 (NVIDIA-Linux-x86_64-390.141.run) = 4b389a374412c80b2eda356c0fb9e8bef5768831d2cb77c8c9f906f6172c3f7e SIZE (NVIDIA-Linux-x86_64-390.141.run) = 85330901 SHA256 (NVIDIA-Linux-x86-390.141.run) = 8dfbc8ce77d2f49780105dd7e3058bbf8e663e9b17495507b7544ece34ffaf43 diff --git a/x11/nvidia-driver/Makefile b/x11/nvidia-driver/Makefile index 35b33c147f21..57f9fbc2c1fa 100644 --- a/x11/nvidia-driver/Makefile +++ b/x11/nvidia-driver/Makefile @@ -11,9 +11,9 @@ # or `x11/nvidia-driver-304'). PORTNAME= nvidia-driver -DISTVERSION?= 440.100 +DISTVERSION?= 460.39 # Always try to set PORTREVISION as it can be overridden by the slave ports -PORTREVISION?= 1 +PORTREVISION?= 0 CATEGORIES= x11 MASTER_SITES= NVIDIA/XFree86/FreeBSD-${ARCH_SUFX}/${DISTVERSION} DISTNAME= NVIDIA-FreeBSD-${ARCH_SUFX}-${DISTVERSION} @@ -47,9 +47,7 @@ SUB_FILES+= pkg-deinstall pkg-install SUB_PATCHES= extra-patch-src-Makefile \ extra-patch-src-nv-freebsd.h \ extra-patch-src-nv-misc.h \ - extra-patch-src-nvidia_ctl.c \ extra-patch-src-nvidia_dev.c \ - extra-patch-src-nvidia_linux.c \ extra-patch-src-nvidia_pci.c DOCSDIR= ${PREFIX}/share/doc/NVIDIA_GLX-1.0 MODULESDIR= lib/xorg/modules @@ -67,8 +65,15 @@ NVSRC= . NVSRC= nvidia .endif -.if ${NVVERSION} >= 358.009 +.if ${NVVERSION} < 460.039 +. if ${NVVERSION} >= 358.009 EXTRA_PATCHES+= ${FILESDIR}/extra-patch-src_nvidia-modeset_nvidia-modeset-freebsd.c +. endif +SUB_PATCHES+= extra-patch-src-nvidia_ctl.c \ + extra-patch-src-nvidia_linux.c +.else +EXTRA_PATCHES+= ${FILESDIR}/460-patch-lib-libGLX_nvidia-Makefile +SUB_PATCHES+= 460-patch-src-nvidia_linux.c .endif OPTIONS_DEFINE= ACPI_PM LINUX WBINVD DOCS @@ -99,7 +104,7 @@ EXTRA_PATCHES+= ${WRKDIR}/${p} post-patch: .SILENT # We should support -CURRENT: kill the check (first #if __FreeBSD_version) - linenum=$$(${SED} -ne '/^#if __FreeBSD_version/ {=; q;}' \ + linenum=$$(${SED} -ne '/^#if __FreeBSD_version/ { = ; q ; }' \ ${WRKSRC}/src/${NVSRC}/nv-freebsd.h) ; ${REINPLACE_CMD} \ -e "$$linenum,+2d" ${WRKSRC}/src/${NVSRC}/nv-freebsd.h # Adjust Linux headers #include's after FreeBSD src r246085 @@ -213,6 +218,10 @@ post-install: .SILENT ${INSTALL_SCRIPT} ${WRKSRC}/obj/nvidia-bug-report.sh \ ${STAGEDIR}${PREFIX}/bin # pkg-plist is already overbloated, so use these hacks instead of PLIST_SUB's +.if ${NVVERSION:R} < 460 + ${REINPLACE_CMD} -e '/libnvidia-glvkspirv\.so/d ; \ + /nvidia_icd\.json/d ; /nvidia_layers\.json/d' ${TMPPLIST} +.endif .if ${NVVERSION} >= 304.128 && ${NVVERSION} < 310.019 || ${NVVERSION} >= 361.016 ${REINPLACE_CMD} -E '/libvdpau(_trace)?\.so/d' ${TMPPLIST} .endif diff --git a/x11/nvidia-driver/distinfo b/x11/nvidia-driver/distinfo index 8c20408f1312..7b62e53d5e14 100644 --- a/x11/nvidia-driver/distinfo +++ b/x11/nvidia-driver/distinfo @@ -1,6 +1,6 @@ TIMESTAMP = 1482026038 -SHA256 (NVIDIA-FreeBSD-x86_64-440.100.tar.gz) = da5abe605560890405976785eb28e6d9fa79181ac7d158e52e5327d4d0faef5f -SIZE (NVIDIA-FreeBSD-x86_64-440.100.tar.gz) = 82523267 +SHA256 (NVIDIA-FreeBSD-x86_64-460.39.tar.gz) = a666f04313e9c919e3c6ecebe3c8d75d91246147955d9497ce6dae64738a314e +SIZE (NVIDIA-FreeBSD-x86_64-460.39.tar.gz) = 108214308 SHA256 (NVIDIA-FreeBSD-x86_64-390.141.tar.gz) = d51fb464a52773c285ba075628f4a513a3ece5bba8e500be8b65fd0c122f78a4 SIZE (NVIDIA-FreeBSD-x86_64-390.141.tar.gz) = 65303462 SHA256 (NVIDIA-FreeBSD-x86-390.141.tar.gz) = c0e2abc13ec350ba7d34bf68225261cf1bfa0f5b07e30c71dd090c83c0542f7d diff --git a/x11/nvidia-driver/files/460-patch-lib-libGLX_nvidia-Makefile b/x11/nvidia-driver/files/460-patch-lib-libGLX_nvidia-Makefile new file mode 100644 index 000000000000..44dbc0e633b3 --- /dev/null +++ b/x11/nvidia-driver/files/460-patch-lib-libGLX_nvidia-Makefile @@ -0,0 +1,27 @@ +--- lib/libGLX_nvidia/Makefile.orig ++++ lib/libGLX_nvidia/Makefile +@@ -16,18 +16,18 @@ EXTRADEPS= nvidia-application-profiles-rc nvidia_icd.j + # look for this file. + + nvidia_icd.json: +- @mkdir -p ${VKICD_PATH} ++ @mkdir -p ${DESTDIR}${VKICD_PATH} + @${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + ${NVIDIA_ROOT}/nvidia_icd.json \ +- ${VKICD_PATH} +- @sed -i '' -e "s/__NV_VK_ICD__/lib${LIB}.so/" ${VKICD_PATH}/nvidia_icd.json ++ ${DESTDIR}${VKICD_PATH} ++ @sed -i '' -e "s/__NV_VK_ICD__/lib${LIB}.so/" ${DESTDIR}${VKICD_PATH}/nvidia_icd.json + + nvidia_layers.json: +- @mkdir -p ${VKLAYERS_PATH} ++ @mkdir -p ${DESTDIR}${VKLAYERS_PATH} + @${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + ${NVIDIA_ROOT}/nvidia_layers.json \ +- ${VKLAYERS_PATH} +- @sed -i '' -e "s/__NV_VK_ICD__/lib${LIB}.so/" ${VKLAYERS_PATH}/nvidia_layers.json ++ ${DESTDIR}${VKLAYERS_PATH} ++ @sed -i '' -e "s/__NV_VK_ICD__/lib${LIB}.so/" ${DESTDIR}${VKLAYERS_PATH}/nvidia_layers.json + + + nvidia-application-profiles-rc: diff --git a/x11/nvidia-driver/files/460-patch-src-nvidia_linux.c.in b/x11/nvidia-driver/files/460-patch-src-nvidia_linux.c.in new file mode 100644 index 000000000000..083c7a1c1642 --- /dev/null +++ b/x11/nvidia-driver/files/460-patch-src-nvidia_linux.c.in @@ -0,0 +1,33 @@ +--- src/%%NVSRC%%/nvidia_linux.c.orig 2017-09-14 20:46:30 UTC ++++ src/%%NVSRC%%/nvidia_linux.c +@@ -35,21 +35,16 @@ int linux_ioctl_nvidia( + struct linux_ioctl_args *args + ) + { +- struct file *fp; +- int error; +- cap_rights_t rights; +- u_long cmd; ++ static const uint32_t dir[4] = { IOC_VOID, IOC_IN, IOC_OUT, IOC_INOUT }; + +- error = fget(td, args->fd, cap_rights_init(&rights, CAP_IOCTL), &fp); +- if (error != 0) +- return error; +- +- cmd = args->cmd; +- +- error = fo_ioctl(fp, cmd, (caddr_t)args->arg, td->td_ucred, td); +- fdrop(fp, td); +- +- return error; ++ if ((args->cmd & (1<<29)) != 0) { ++ /* FreeBSD has only 13 bits to encode the size. */ ++ printf("nvidia: pid %d (%s): ioctl cmd=0x%x size too large\n", ++ (int)td->td_proc->p_pid, td->td_proc->p_comm, args->cmd); ++ return (EINVAL); ++ } ++ args->cmd = (args->cmd & ~IOC_DIRMASK) | dir[args->cmd >> 30]; ++ return (sys_ioctl(td, (struct ioctl_args *)args)); + } + + struct linux_ioctl_handler nvidia_handler = { diff --git a/x11/nvidia-driver/pkg-plist b/x11/nvidia-driver/pkg-plist index c75a6d458cd0..5edd9ad4242c 100644 --- a/x11/nvidia-driver/pkg-plist +++ b/x11/nvidia-driver/pkg-plist @@ -37,6 +37,8 @@ lib/libnvidia-glcore.so lib/libnvidia-glcore.so.1 lib/libnvidia-glsi.so lib/libnvidia-glsi.so.1 +lib/libnvidia-glvkspirv.so +lib/libnvidia-glvkspirv.so.1 lib/libnvidia-ml.so lib/libnvidia-ml.so.1 lib/libnvidia-tls.so @@ -79,6 +81,8 @@ lib32/vdpau/libvdpau_nvidia.so.1 man/man1/nvidia-smi.1.gz @comment share/egl/egl_external_platform.d/10_nvidia_wayland.json share/glvnd/egl_vendor.d/10_nvidia.json +share/vulkan/icd.d/nvidia_icd.json +share/vulkan/implicit_layer.d/nvidia_layers.json %%MODULESDIR%%/drivers/nvidia_drv.so %%MODULESDIR%%/extensions/.nvidia/libglx.so %%MODULESDIR%%/extensions/.nvidia/libglx.so.1 diff --git a/x11/nvidia-settings/Makefile b/x11/nvidia-settings/Makefile index fc9701fb3529..242b0b20d9ad 100644 --- a/x11/nvidia-settings/Makefile +++ b/x11/nvidia-settings/Makefile @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= nvidia-settings -PORTVERSION= 440.100 +PORTVERSION= 460.39 CATEGORIES= x11 MAINTAINER= x11@FreeBSD.org diff --git a/x11/nvidia-settings/distinfo b/x11/nvidia-settings/distinfo index db7412abb5a3..c846eb308b9d 100644 --- a/x11/nvidia-settings/distinfo +++ b/x11/nvidia-settings/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1593032511 -SHA256 (NVIDIA-nvidia-settings-440.100_GH0.tar.gz) = 562e487261986f4e5241f554b14b799fd9184cdb121532c0e3fe309709c37719 -SIZE (NVIDIA-nvidia-settings-440.100_GH0.tar.gz) = 1314731 +TIMESTAMP = 1611681405 +SHA256 (NVIDIA-nvidia-settings-460.39_GH0.tar.gz) = ea4183fcf38f4cdfedbf782f101de57a88e2c38fc25b9bd691b101087da0e5e2 +SIZE (NVIDIA-nvidia-settings-460.39_GH0.tar.gz) = 1233261 diff --git a/x11/nvidia-xconfig/Makefile b/x11/nvidia-xconfig/Makefile index 7239b90b9d06..368c93aaaea6 100644 --- a/x11/nvidia-xconfig/Makefile +++ b/x11/nvidia-xconfig/Makefile @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= nvidia-xconfig -PORTVERSION= 440.100 +PORTVERSION= 460.39 CATEGORIES= x11 MAINTAINER= x11@FreeBSD.org diff --git a/x11/nvidia-xconfig/distinfo b/x11/nvidia-xconfig/distinfo index 3fcf17929081..88b75ebd926f 100644 --- a/x11/nvidia-xconfig/distinfo +++ b/x11/nvidia-xconfig/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1593032427 -SHA256 (NVIDIA-nvidia-xconfig-440.100_GH0.tar.gz) = 2517e614b8500f69099b74abceb782ca4741c61dc288560d9d39c40cfa458b1d -SIZE (NVIDIA-nvidia-xconfig-440.100_GH0.tar.gz) = 141048 +TIMESTAMP = 1611681275 +SHA256 (NVIDIA-nvidia-xconfig-460.39_GH0.tar.gz) = eb6e6034389a3ed2ea39d89b9a7a49e9f1cc4669f620abff114964867c05ed9f +SIZE (NVIDIA-nvidia-xconfig-460.39_GH0.tar.gz) = 142321