mirror of
https://codeberg.org/privacy1st/nix-git
synced 2024-12-12 01:00:43 +01:00
NixOS 24.11: amd gpu driver
This commit is contained in:
parent
d1e95d19b5
commit
40ed2bc37b
20
NixOS.md
20
NixOS.md
@ -869,27 +869,45 @@ Usually most of this should work out of the box on NixOS.
|
|||||||
Vulkan:
|
Vulkan:
|
||||||
- Verification:
|
- Verification:
|
||||||
- If `vulkaninfo` returns information about your GPU, Vulkan is working. https://wiki.archlinux.org/title/Vulkan#Verification
|
- If `vulkaninfo` returns information about your GPU, Vulkan is working. https://wiki.archlinux.org/title/Vulkan#Verification
|
||||||
|
- `nix-shell -p vulkan-tools --run vulkaninfo`
|
||||||
- Run `vkcube` (X11) or `vkcube-wayland` (Wayland). It should view a spinning 3D cube and output e.g. `Selected GPU 0: AMD Radeon Graphics (RADV RENOIR)`
|
- Run `vkcube` (X11) or `vkcube-wayland` (Wayland). It should view a spinning 3D cube and output e.g. `Selected GPU 0: AMD Radeon Graphics (RADV RENOIR)`
|
||||||
|
- `nix-shell -p vulkan-tools --run vkcube-wayland`
|
||||||
|
|
||||||
OpenGL:
|
OpenGL:
|
||||||
- Verification: https://wiki.archlinux.org/title/OpenGL#Verification
|
- Verification: https://wiki.archlinux.org/title/OpenGL#Verification
|
||||||
- `eglinfo -B` should not return `eglInitialize failed`
|
- `eglinfo -B` should not return `eglInitialize failed`
|
||||||
|
- `nix-shell -p glxinfo --run 'eglinfo -B'`
|
||||||
- `eglgears_x11` and `eglgears_wayland` -> ![eglgears.png](assets/doc/eglgears.png)
|
- `eglgears_x11` and `eglgears_wayland` -> ![eglgears.png](assets/doc/eglgears.png)
|
||||||
|
- `nix-shell -p mesa-demos --run eglgears_wayland`
|
||||||
|
|
||||||
Video acceleration:
|
Video acceleration:
|
||||||
- VA-API
|
- VA-API
|
||||||
|
- Video Acceleration API (VA-API). Provides both hardware accelerated video encoding and decoding.
|
||||||
- Verifying: `vainfo` -> E.g. `Driver version: Mesa Gallium driver 23.1.9 for AMD Radeon Graphics`. https://wiki.archlinux.org/title/Hardware_video_acceleration#Verifying_VA-API
|
- Verifying: `vainfo` -> E.g. `Driver version: Mesa Gallium driver 23.1.9 for AMD Radeon Graphics`. https://wiki.archlinux.org/title/Hardware_video_acceleration#Verifying_VA-API
|
||||||
|
- `nix-shell -p libva-utils --run vainfo`
|
||||||
- Driver comparison chart. https://wiki.archlinux.org/title/Hardware_video_acceleration#VA-API_drivers
|
- Driver comparison chart. https://wiki.archlinux.org/title/Hardware_video_acceleration#VA-API_drivers
|
||||||
- With `libva-mesa-driver` on "Radeon RX 7900 and higher/newer" a codec for encoding AV1 8 and 10 bit is available.
|
- With `libva-mesa-driver` on "Radeon RX 7900 and higher/newer" a codec for encoding AV1 8 and 10 bit is available.
|
||||||
- VDPAU
|
- VDPAU
|
||||||
- Video Decode and Presentation API for Unix (VDPAU).
|
- Video Decode and Presentation API for Unix (VDPAU). Offload portions of the video decoding process and video post-processing to the GPU video-hardware.
|
||||||
- Verifying: `vdpauinfo`. https://wiki.archlinux.org/title/Hardware_video_acceleration#Verifying_VDPAU
|
- Verifying: `vdpauinfo`. https://wiki.archlinux.org/title/Hardware_video_acceleration#Verifying_VDPAU
|
||||||
|
- `nix-shell -p vdpauinfo --run vdpauinfo`
|
||||||
|
|
||||||
|
GPGPU (General-purpose computing on graphics processing units):
|
||||||
|
- OpenCL
|
||||||
|
- Verification using `clinfo`
|
||||||
|
- `nix-shell -p clinfo --run 'clinfo -l'`
|
||||||
|
- Should produce non-empty output, e.g. `Platform #0: AMD Accelerated Parallel Processing`
|
||||||
|
- `nix-shell -p clinfo --run clinfo`
|
||||||
|
- This output is more verbose.
|
||||||
|
- `Number of platforms` should be >= 1
|
||||||
|
|
||||||
Verify video driver in use:
|
Verify video driver in use:
|
||||||
- `lspci -k | grep -EA3 'VGA|3D|Display'`. Example: `Kernel driver in use: amdgpu`
|
- `lspci -k | grep -EA3 'VGA|3D|Display'`. Example: `Kernel driver in use: amdgpu`
|
||||||
|
- `nix-shell -p pciutils --run 'lspci -k | grep -EA3 "VGA|3D|Display"'`
|
||||||
|
|
||||||
Verification in general:
|
Verification in general:
|
||||||
- Encode a video or play a game and watch AMD GPU usage with `radeontop`.
|
- Encode a video or play a game and watch AMD GPU usage with `radeontop`.
|
||||||
|
- `nix-shell -p radeontop --run radeontop`
|
||||||
|
|
||||||
Configuration example to disable integrated GUP: See [./hosts/yodaGaming/configuration.nix](./hosts/yodaGaming/configuration.nix)
|
Configuration example to disable integrated GUP: See [./hosts/yodaGaming/configuration.nix](./hosts/yodaGaming/configuration.nix)
|
||||||
|
|
||||||
|
@ -1,36 +1,50 @@
|
|||||||
|
# See `NixOS.md` at section "Graphic drivers".
|
||||||
|
# There more details are given including commands to verify working hardware acceleration.
|
||||||
|
|
||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
|
let
|
||||||
|
extra = [
|
||||||
|
];
|
||||||
|
in
|
||||||
{
|
{
|
||||||
# See `NixOS.md` at section "Graphic drivers"
|
hardware = {
|
||||||
|
graphics = {
|
||||||
hardware.opengl = {
|
# This is enabled by default. We have this for cosmetical reasons only.
|
||||||
|
# It provides the RADV driver.
|
||||||
enable = true;
|
enable = true;
|
||||||
|
# Required for wine.
|
||||||
|
enable32Bit = true;
|
||||||
|
|
||||||
# Whether to enable accelerated OpenGL rendering through the Direct Rendering Interface (DRI).
|
# Additional packages to add to the default graphics driver lookup path. This can be used to add OpenCL drivers, VA-API/VDPAU drivers, etc.
|
||||||
# The Direct Rendering Infrastructure (DRI) is the framework comprising the modern Linux graphics [...]. The main use of DRI is to provide hardware acceleration for the Mesa implementation of OpenGL.
|
extraPackages = extra;
|
||||||
driSupport = true;
|
# Required for wine.
|
||||||
driSupport32Bit = true;
|
extraPackages32 = extra;
|
||||||
|
};
|
||||||
|
|
||||||
extraPackages = [
|
amdgpu = {
|
||||||
# AMD Open Source Driver For Vulkan
|
# Load amdgpu kernelModule in stage 1. Can fix lower resolution in boot screen during initramfs phase.
|
||||||
pkgs.amdvlk
|
#initrd.enable = true;
|
||||||
|
|
||||||
# Encoding/decoding acceleration
|
|
||||||
#
|
|
||||||
# VDPAU driver with OpenGL/VAAPI backend
|
|
||||||
pkgs.libvdpau-va-gl
|
|
||||||
# VDPAU driver for the VAAPI library
|
|
||||||
pkgs.vaapiVdpau
|
|
||||||
|
|
||||||
# OpenCL (Open Computing Language) is a framework for writing programs that execute across heterogeneous platforms.
|
# OpenCL (Open Computing Language) is a framework for writing programs that execute across heterogeneous platforms.
|
||||||
#
|
opencl.enable = true;
|
||||||
# OpenCL ICD definition for AMD GPUs using the ROCm stack.
|
|
||||||
pkgs.rocm-opencl-icd
|
|
||||||
# OpenCL runtime for AMD GPUs, part of the ROCm stack.
|
|
||||||
pkgs.rocm-opencl-runtime
|
|
||||||
|
|
||||||
# Xorg driver for AMD Radeon GPUs using the amdgpu kernel driver
|
# AMD driver for Vulkan.
|
||||||
# https://gitlab.freedesktop.org/xorg/driver/xf86-video-amdgpu
|
#
|
||||||
pkgs.xorg.xf86videoamdgpu
|
# => Please use RADV instead except if some Windows games don't run with it.
|
||||||
];
|
# https://www.reddit.com/r/NixOS/comments/1dmkim8/comment/l9zaz75/
|
||||||
|
# > Side note: you don't need to enable amdvlk unless you have a very specific reason to. Mesa has radv by default which is better for vulkan.
|
||||||
|
#
|
||||||
|
#amdvlk.enable = true;
|
||||||
|
#amdvlk.support32Bit.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.variables = {
|
||||||
|
# VDPAU does not pick up correct driver. Thus, we need to configure it manually.
|
||||||
|
# https://wiki.archlinux.org/title/Hardware_video_acceleration#Failed_to_open_VDPAU_backend
|
||||||
|
#
|
||||||
|
# https://discourse.nixos.org/t/24-11-amd-gpu-how-to-use-mesa-radv-instead-of-amdvlk/57110/5
|
||||||
|
# https://github.com/NixOS/nixpkgs/issues/221535#issuecomment-1473815585
|
||||||
|
"VDPAU_DRIVER" = "radeonsi";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user