Every article tag can be clicked to get a list of all articles in that category. Every article tag also has an RSS feed! You can customize an RSS feed too!
Apex Legends without stutters now possible.
Page: «2/3»
  Go to:
mr-victory 12 Jul, 2022
Quoting: mr-victoryI had a few bugs on the dropship like neon lights in the middle on the screen and a very loud sound. I was going to upload a video but I couldn't login to Proton
Never had neither the neon lights nor the sound in dropship before.
Xpander 12 Jul, 2022
Hmm, from the video it looks like its compiling shaders during the flight and after landing.. CPU usage goes high and fps drops like crazy. Are you sure you are even using this DXVK version. Never seen those issues myself but those look something like what you might get with DXVK_ASYNC or something, which is unofficial hack.
mr-victory 12 Jul, 2022
Quoting: XpanderHmm, from the video it looks like its compiling shaders during the flight and after landing.. CPU usage goes high and fps drops like crazy.
These are caused by recording even if I use no compression preset and ended up with a 3 GiB video file. (the uploaded video is smaller because it is reencoded)
Without recording I have good FPS and low CPU usage.
aufkrawall 14 Jul, 2022
Works great in HotS with D3D11. Should it work the same with D3D9? As e.g. Borderlands 2 still has compile stutter (and the newly created state cache file still seems to contain the actual shaders, unlike with HotS, where it's just a 1KB stub).
Patched in some open PRs, didn't yet try without.
Xpander 14 Jul, 2022
Quoting: aufkrawallShould it work the same with D3D9? As e.g.
D3D9 is not supported at the moment afaik, unless its super recently added. D3D11 and D3D10 only for now
Xpander 14 Jul, 2022
For those who dont want to get shaders compiled every time due to steam shader cache not working with this new dxvk graphics pipeline library, you can use launch command:
__GL_SHADER_DISK_CACHE_PATH=/home/xpander/.cache/nvidia/apex __GL_SHADER_DISK_CACHE_SIZE=2147483647 %command%
ofc make sure you add your own correct path. This way all the cache will be stored for faster access on each game reboot. This is only needed until the steam shader pre-cache system is fixed for this method.

also there was a proton-experimental update recently, so you need to replace the dxvk files again as the latest experimental doesn't seem to include the graphics pipeline library stuff.

EDIT looks like steam client beta has fixed the steam shader pre-cache for it already. So you don't need this anymore. Damn things move quickly!

EDIT2: it looks like i also had steam launch options -dev -preload +max_fps 144 for apex. no idea what -preload does, maybe thats the one that makes it pre-compile all in the menus? I must have copy pasted the command blindly from somewhere some time ago.

Last edited by Xpander on 15 July 2022 at 5:50 am UTC
aufkrawall 16 Jul, 2022
Quoting: XpanderEDIT2: it looks like i also had steam launch options -dev -preload +max_fps 144 for apex. no idea what -preload does, maybe thats the one that makes it pre-compile all in the menus?
The game does that by default also with native D3D11.
mr-victory 23 Aug, 2022
I have created PKGBUILDs that can install vulkan beta drivers, could you test and review them? 515.49.10 didn't work for me (segfault if I run vkcube or vulkaninfo, I suspect using open dkms drivers EDIT: Nope, closed source also segfaults EDIT2: Nvidia official installer also segfaults, Linus' voice echoes in my mind) so I used 515.49.06. Also I don't know what to write for "maintainers" part because both PKGBUILDs are derivates of non-vulkan beta PKGBUILDs. Should I mention only myself with a note to refer to other PKGBUILD or include other maintainers?
Closed Source Vulkan Beta Drivers. Name change, version bump and some modifications (dlpkgver and source) because awkward file name. I tried to make minimal changes so rest of the PKGBUILD remains the same.
# Maintainer : Daniel Bermond <[email protected]>
# Contributor: Sibren Vasse <arch at sibrenvasse dot nl>
# Contributor: Matt Welch <matt dot welch at gmail dot com>
# Contributor: Anish Bhatt <anish at gatech dot edu>
# Contributor: Det <nimetonmaili gmail a-dot com>
# Contributor: Alucryd <alucryd at gmail dot com>
# Contributor: Jason Melton <jason dot melton at gmail dot com>
# Contributor: Youpi <max dot flocard at gmail dot com>
# Contributor: sl1pkn07 <sl1pkn07 at gmail dot com>

# Set ${_dlpkgver} to ${pkgver} without dots
pkgdesc='NVIDIA driver sources for linux (Vulkan beta version)'
provides=("nvidia=${pkgver}" "nvidia-dkms=${pkgver}" "nvidia-vulkan-beta=${pkgver}"
conflicts=('nvidia' 'nvidia-dkms')

prepare() {
    # extract the source file
    [ -d "$_pkg" ] && rm -rf "$_pkg"
    printf '%s\n' "  -> Self-Extracting ${_pkg}.run..."
    sh "${_pkg}.run" --extract-only
    patch -d "$_pkg" -Np1 -i "${srcdir}/110-nvidia-change-dkms-conf.patch"
    patch -d "$_pkg" -Np1 -i "${srcdir}/120-nvidia-linux-rt-gift.patch"

package() {
    depends=('dkms' "nvidia-utils-vulkan-beta=${pkgver}" 'libglvnd')
    mkdir -p "${pkgdir}/usr/src"
    cp -dr --no-preserve='ownership' "${_pkg}/kernel" "${pkgdir}/usr/src/nvidia-${pkgver}"
    install -D -m644 "${_pkg}/LICENSE" -t "${pkgdir}/usr/share/licenses/${pkgname}"

Open Source Vulkan Beta Drivers: (this is only name change and version bump)
# Maintainer : Daniel Bermond <[email protected]>

pkgname=('nvidia-open-vulkan-beta' 'nvidia-open-vulkan-beta-dkms')
pkgdesc='NVIDIA open GPU kernel modules (Vulkan beta version)'
license=('MIT' 'GPL2')
options=('!buildflags' '!lto' '!strip')

prepare() {
    patch -d "open-gpu-kernel-modules-${pkgver}" -Np1 -i "${srcdir}/110-nvidia-open-change-dkms-conf.patch"
    patch -d "open-gpu-kernel-modules-${pkgver}" -Np1 -i "${srcdir}/120-nvidia-open-linux-rt-gift.patch"
    patch -d "open-gpu-kernel-modules-${pkgver}" -Np1 -i "${srcdir}/130-nvidia-open-reproducible-build.patch"
    patch -d "open-gpu-kernel-modules-${pkgver}" -Np1 -i "${srcdir}/140-nvidia-open-gcc-ibt-sls.patch"
    [ -d dkms-src ] && rm -rf dkms-src
    cp -a "open-gpu-kernel-modules-${pkgver}/kernel-open" dkms-src

build() {
    local -x KERNEL_UNAME
    # allow usage of custom kernel and building in a chroot
    if [ -d "/usr/lib/modules/$(uname -r)" ]
        KERNEL_UNAME="$(uname -r)"
        KERNEL_UNAME="$(find /usr/lib/modules -mindepth 1 -maxdepth 1 -type d | sed -n 's|.*/||;1p')"
    unset -v SYSSRC
    make -C "open-gpu-kernel-modules-${pkgver}" modules

package_nvidia-open-vulkan-beta() {
    depends=('linux' "nvidia-utils-vulkan-beta=${pkgver}" 'libglvnd')
    provides=("nvidia-open=${pkgver}" 'NVIDIA-MODULE')
    conflicts=('nvidia-open' 'NVIDIA-MODULE')
    local _kernver
    if [ -d "/usr/lib/modules/$(uname -r)" ]
        _kernver="$(<"/usr/lib/modules/$(uname -r)/build/version")"
        _kernver="$(find /usr/lib/modules -mindepth 1 -maxdepth 1 -type d | head -n1)"
    install -D -m644 "open-gpu-kernel-modules-${pkgver}/kernel-open"/*.ko -t "${pkgdir}/usr/lib/modules/${_kernver}/extramodules"
    install -D -m644 "open-gpu-kernel-modules-${pkgver}/COPYING" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
    find "$pkgdir" -name '*.ko' -exec strip --strip-debug {} +
    find "$pkgdir" -name '*.ko' -exec xz -T1 {} +
    install -D -m644 <(printf '%s\n' 'options nvidia NVreg_OpenRmEnableUnsupportedGpus=1') "${pkgdir}/usr/lib/modprobe.d/nvidia-open.conf"

package_nvidia-open-vulkan-beta-dkms() {
    pkgdesc="$(sed 's/(\(Vulkan beta[[:space:]]version\)/(sources; \1/' <<< "$pkgdesc")"
    depends=('dkms' "nvidia-utils-vulkan-beta=${pkgver}" 'libglvnd')
    provides=("nvidia-open=${pkgver}" 'NVIDIA-MODULE')
    conflicts=('nvidia-open' 'NVIDIA-MODULE')
    install -D -m644 "open-gpu-kernel-modules-${pkgver}/src/nvidia/_out/Linux_x86_64/nv-kernel.o" \
    install -D -m644 "open-gpu-kernel-modules-${pkgver}/src/nvidia-modeset/_out/Linux_x86_64/nv-modeset-kernel.o" \
    install -d -m755 "${pkgdir}/usr/src"
    cp -dr --no-preserve='ownership' dkms-src "${pkgdir}/usr/src/nvidia-${pkgver}"
    install -D -m644 "open-gpu-kernel-modules-${pkgver}/COPYING" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
    install -D -m644 <(printf '%s\n' 'options nvidia NVreg_OpenRmEnableUnsupportedGpus=1') "${pkgdir}/usr/lib/modprobe.d/nvidia-open.conf"

Vulkan Beta Utilities. Changes are same with closed source drivers. (name change, version bump, _dlpkgver and source)
# Maintainer : Daniel Bermond <[email protected]>
# Contributor: Det <nimetonmaili g-mail>
# Contributor: Ng Oon-Ee
# Contributor: Dan Vratil

pkgname=('nvidia-utils-vulkan-beta' 'opencl-nvidia-vulkan-beta' 'nvidia-settings-vulkan-beta')
# Set ${_dlpkgver} to ${pkgver} without dots
pkgdesc='NVIDIA drivers utilities (Vulkan beta version)'

# create soname links
_create_links() {
    local _lib
    local _soname
    local _base
    find "$pkgdir" -type f -name '*.so*' ! -path '*xorg/*' -print0 | while read -d $'\0' _lib
        _soname="$(dirname "$_lib")/$(readelf -d "$_lib" | grep -Po 'SONAME.*: \[\K[^]]*' || true)"
        _base="$(printf '%s' "$_soname" | sed -r 's/(.*)\.so.*/\1.so/')"
        [ -e "$_soname" ] || ln -s "$(basename "$_lib")"    "$_soname"
        [ -e "$_base"   ] || ln -s "$(basename "$_soname")" "$_base"

prepare() {
    # extract the source file
    [ -d "$_pkg" ] && rm -rf "$_pkg"
    printf '%s\n' "  -> Self-Extracting ${_pkg}.run..."
    sh "${_pkg}.run" --extract-only
    bsdtar -C "$_pkg" -xf "${_pkg}/nvidia-persistenced-init.tar.bz2"
    gunzip "$_pkg"/nvidia-{cuda-mps-control,modprobe,persistenced,settings,smi,xconfig}.1.gz
    patch -d "$_pkg" -Np1 -i "${srcdir}/120-nvidia-settings-change-desktop-paths.patch"

package_nvidia-settings-vulkan-beta() {
    pkgdesc='Tool for configuring the NVIDIA graphics driver (Vulkan beta version)'
    depends=("nvidia-utils-vulkan-beta>=${pkgver}" 'gtk3')
    provides=("nvidia-settings=${pkgver}" "nvidia-settings-vulkan-beta=${pkgver}")
    cd "$_pkg"
    install -D -m755 nvidia-settings         -t "${pkgdir}/usr/bin"
    install -D -m644 nvidia-settings.1       -t "${pkgdir}/usr/share/man/man1"
    install -D -m644 nvidia-settings.png     -t "${pkgdir}/usr/share/pixmaps"
    install -D -m644 nvidia-settings.desktop -t "${pkgdir}/usr/share/applications"
    install -D -m755 "libnvidia-gtk3.so.${pkgver}" -t "${pkgdir}/usr/lib"
    # license
    install -D -m644 LICENSE -t "${pkgdir}/usr/share/licenses/${pkgname}"

package_opencl-nvidia-vulkan-beta() {
    pkgdesc='OpenCL implemention for NVIDIA (Vulkan beta version)'
    depends=('zlib' "nvidia-utils-vulkan-beta>=${pkgver}")
    optdepends=('opencl-headers: headers necessary for OpenCL development')
    provides=("opencl-nvidia=${pkgver}" 'opencl-driver')
    cd "$_pkg"
    # OpenCL
    install -D -m644 nvidia.icd "${pkgdir}/etc/OpenCL/vendors/nvidia.icd"
    install -D -m755 "libnvidia-compiler.so.${pkgver}" -t "${pkgdir}/usr/lib"
    install -D -m755 "libnvidia-opencl.so.${pkgver}"   -t "${pkgdir}/usr/lib"

    # license
    install -D -m644 LICENSE -t "${pkgdir}/usr/share/licenses/${pkgname}"

package_nvidia-utils-vulkan-beta() {
    depends=('xorg-server' 'libglvnd' 'egl-wayland')
    optdepends=('nvidia-settings-vulkan-beta: for the configuration tool'
                'xorg-server-devel: for nvidia-xconfig'
                'opencl-nvidia-vulkan-beta: for OpenCL support')
    provides=("nvidia-utils=${pkgver}" 'vulkan-driver' 'opengl-driver' "nvidia-libgl=${pkgver}"
    conflicts=('nvidia-utils' 'nvidia-libgl')
    cd "$_pkg"
    # X driver
    install -D -m755 nvidia_drv.so -t "${pkgdir}/usr/lib/xorg/modules/drivers"
    # firmware
    install -D -m644 firmware/gsp.bin -t "${pkgdir}/usr/lib/firmware/nvidia/${pkgver}"
    # GLX extension module for X
    install -D -m755 "libglxserver_nvidia.so.${pkgver}" -t "${pkgdir}/usr/lib/nvidia/xorg"
    # Ensure that X finds glx
    ln -s "libglxserver_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/xorg/libglxserver_nvidia.so.1"
    ln -s "libglxserver_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/nvidia/xorg/libglxserver_nvidia.so"
    install -D -m755 "libGLX_nvidia.so.${pkgver}" -t "${pkgdir}/usr/lib"
    # OpenGL libraries
    install -D -m755 "libEGL_nvidia.so.${pkgver}"       -t "${pkgdir}/usr/lib"
    install -D -m755 "libGLESv1_CM_nvidia.so.${pkgver}" -t "${pkgdir}/usr/lib"
    install -D -m755 "libGLESv2_nvidia.so.${pkgver}"    -t "${pkgdir}/usr/lib"
    install -D -m644 10_nvidia.json                     -t "${pkgdir}/usr/share/glvnd/egl_vendor.d"
    # OpenGL core library
    install -D -m755 "libnvidia-glcore.so.${pkgver}"  -t "${pkgdir}/usr/lib"
    install -D -m755 "libnvidia-eglcore.so.${pkgver}" -t "${pkgdir}/usr/lib"
    install -D -m755 "libnvidia-glsi.so.${pkgver}"    -t "${pkgdir}/usr/lib"
    # misc
    install -D -m755 "libnvidia-fbc.so.${pkgver}"       -t "${pkgdir}/usr/lib"
    install -D -m755 "libnvidia-encode.so.${pkgver}"    -t "${pkgdir}/usr/lib"
    install -D -m755 "libnvidia-cfg.so.${pkgver}"       -t "${pkgdir}/usr/lib"
    install -D -m755 "libnvidia-ml.so.${pkgver}"        -t "${pkgdir}/usr/lib"
    install -D -m755 "libnvidia-glvkspirv.so.${pkgver}" -t "${pkgdir}/usr/lib"
    install -D -m755 "libnvidia-vulkan-producer.so.${pkgver}" -t "${pkgdir}/usr/lib"
    ln -s "libnvidia-vulkan-producer.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-vulkan-producer.so.1"
    ln -s libnvidia-vulkan-producer.so.1 "${pkgdir}/usr/lib/libnvidia-vulkan-producer.so"
    # Vulkan ICD
    install -D -m644 nvidia_icd.json    -t "${pkgdir}/usr/share/vulkan/icd.d"
    install -D -m644 nvidia_layers.json -t "${pkgdir}/usr/share/vulkan/implicit_layer.d"
    # VDPAU
    install -D -m755 "libvdpau_nvidia.so.${pkgver}" -t "${pkgdir}/usr/lib/vdpau"
    # nvidia-tls library
    install -D -m755 "libnvidia-tls.so.${pkgver}" -t "${pkgdir}/usr/lib"
    # CUDA
    install -D -m755 "libcuda.so.${pkgver}"    -t "${pkgdir}/usr/lib"
    install -D -m755 "libnvcuvid.so.${pkgver}" -t "${pkgdir}/usr/lib"
    # PTX JIT Compiler (Parallel Thread Execution (PTX) is a pseudo-assembly language for CUDA)
    install -D -m755 "libnvidia-ptxjitcompiler.so.${pkgver}" -t "${pkgdir}/usr/lib"
    # NVVM Compiler (JIT link-time-optimization for CUDA)
    install -D -m755 "libnvidia-nvvm.so.${pkgver}" -t "${pkgdir}/usr/lib"
    # raytracing
    install -D -m755 "libnvoptix.so.${pkgver}"       -t "${pkgdir}/usr/lib"
    install -D -m755 "libnvidia-rtcore.so.${pkgver}" -t "${pkgdir}/usr/lib"
    # Optical flow
    install -D -m755 "libnvidia-opticalflow.so.${pkgver}" -t "${pkgdir}/usr/lib"
    # NGX
    install -D -m755 "libnvidia-ngx.so.${pkgver}" -t "${pkgdir}/usr/lib"
    # DLSS
    install -D -m755 nvidia-ngx-updater -t "${pkgdir}/usr/bin"
    install -D -m644 {,_}nvngx.dll -t "${pkgdir}/usr/lib/nvidia/wine"
    # GBM
    install -D -m755 "libnvidia-allocator.so.${pkgver}" -t "${pkgdir}/usr/lib"
    install -D -m755 libnvidia-egl-gbm.so.1.1.0         -t "${pkgdir}/usr/lib"
    install -D -m644 15_nvidia_gbm.json -t "${pkgdir}/usr/share/egl/egl_external_platform.d"
    install -d -m755 "${pkgdir}/usr/lib/gbm"
    ln -s "../libnvidia-allocator.so.${pkgver}" "${pkgdir}/usr/lib/gbm/nvidia-drm_gbm.so"
    # DEBUG
    install -D -m755 nvidia-debugdump -t "${pkgdir}/usr/bin"
    # nvidia-xconfig
    install -D -m755 nvidia-xconfig   -t "${pkgdir}/usr/bin"
    install -D -m644 nvidia-xconfig.1 -t "${pkgdir}/usr/share/man/man1"
    # nvidia-bug-report
    install -D -m755 nvidia-bug-report.sh -t "${pkgdir}/usr/bin"
    # nvidia-smi
    install -D -m755 nvidia-smi   -t "${pkgdir}/usr/bin"
    install -D -m644 nvidia-smi.1 -t "${pkgdir}/usr/share/man/man1"
    # nvidia-cuda-mps
    install -D -m755 nvidia-cuda-mps-server    -t "${pkgdir}/usr/bin"
    install -D -m755 nvidia-cuda-mps-control   -t "${pkgdir}/usr/bin"
    install -D -m644 nvidia-cuda-mps-control.1 -t "${pkgdir}/usr/share/man/man1"
    # nvidia-modprobe
    # This should be removed if nvidia fixed their uvm module!
    install -D -m4755 nvidia-modprobe  -t "${pkgdir}/usr/bin"
    install -D -m644 nvidia-modprobe.1 -t "${pkgdir}/usr/share/man/man1"
    # nvidia-persistenced
    install -D -m755 nvidia-persistenced   -t "${pkgdir}/usr/bin"
    install -D -m644 nvidia-persistenced.1 -t "${pkgdir}/usr/share/man/man1"
    install -D -m644 nvidia-persistenced-init/systemd/nvidia-persistenced.service.template "${pkgdir}/usr/lib/systemd/system/nvidia-persistenced.service"
    sed -i 's/__USER__/nvidia-persistenced/' "${pkgdir}/usr/lib/systemd/system/nvidia-persistenced.service"
    # application profiles
    install -D -m644 "nvidia-application-profiles-${pkgver}-rc"                -t "${pkgdir}/usr/share/nvidia"
    install -D -m644 "nvidia-application-profiles-${pkgver}-key-documentation" -t "${pkgdir}/usr/share/nvidia"
    install -D -m644 LICENSE -t "${pkgdir}/usr/share/licenses/${pkgname}"
    install -D -m644 README.txt "${pkgdir}/usr/share/doc/${pkgname}/README"
    install -D -m644 NVIDIA_Changelog -t "${pkgdir}/usr/share/doc/${pkgname}"
    install -D -m644 supported-gpus/supported-gpus.json -t "${pkgdir}/usr/share/doc/${pkgname}"
    cp -dr --no-preserve='ownership' html "${pkgdir}/usr/share/doc/${pkgname}/"
    #ln -s nvidia "${pkgdir}/usr/share/doc/nvidia-utils"
    # new power management support
    install -D -m644 systemd/system/*.service -t "${pkgdir}/usr/lib/systemd/system"
    install -D -m755 systemd/system-sleep/nvidia -t "${pkgdir}/usr/lib/systemd/system-sleep"
    install -D -m755 systemd/nvidia-sleep.sh -t "${pkgdir}/usr/bin"
    # dynamic boost power management
    install -D -m755 nvidia-powerd -t "${pkgdir}/usr/bin"
    install -D -m644 nvidia-dbus.conf -t "${pkgdir}/usr/share/dbus-1/system.d"
    # distro specific files must be installed in /usr/share/X11/xorg.conf.d
    install -D -m644 "${srcdir}/nvidia-drm-outputclass.conf" "${pkgdir}/usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf"
    install -D -m644 "${srcdir}/nvidia-utils.sysusers" "${pkgdir}/usr/lib/sysusers.d/${pkgname}.conf"
    install -D -m644 "${srcdir}/nvidia.rules" "${pkgdir}/usr/lib/udev/rules.d/60-nvidia.rules"
    install -D -m644 <(printf '%s\n' 'blacklist nouveau') "${pkgdir}/usr/lib/modprobe.d/${pkgname}.conf"
    install -D -m644 <(printf '%s\n' 'nvidia-uvm') "${pkgdir}/usr/lib/modules-load.d/${pkgname}.conf"

Last edited by mr-victory on 23 August 2022 at 10:58 am UTC
Xpander 23 Aug, 2022
Just use this to pick the driver you want (can even manually specify the version):

personally i havent had any issues with 515.49.10. Been using it since July 20th.
apexlegend 26 Aug, 2022
Hi, I'm new to the forum and made an account just for this. Thank you Xpander on the guide(s) on how to make Apex Legends (finally!) stutter-free without community based shader caches. There is just one "bug" left for me at least, sometimes when I move around or press "E" for opening loot caches, the character is unable to move in Apex Legends. I've tried playing on Full Screen, Borderless Windowed etc. and it doesn't seem to help. This doesn't happen every time, but it's usually once or twice per game.

I get back into able to move my character by pressing "Esc", I'm unsure if some other key could also do this but that is what works at the moment. I'm using all the default keybinds.

This is really frustrating and I never had such problems on Windows. Anyone know what the problem or solution could be? Thanks.

I'm running POP!_OS on the newest drivers btw.
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone with no article paywalls. We also don't have tons of adverts, there's also no tracking and we respect your privacy. Just good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Login / Register

Or login with...
Sign in with Steam Sign in with Google
Social logins require cookies to stay logged in.