From 48e0fcb6ba86c5f4b1a58d3e2f606569cf59b659 Mon Sep 17 00:00:00 2001 From: Daniel Langbein Date: Fri, 12 Jan 2024 22:24:03 +0100 Subject: [PATCH] docs: graphic driver --- NixOS.md | 50 ++++++++++++++++++++++++++++++++++++++++ assets/doc/eglgears.png | Bin 0 -> 28974 bytes 2 files changed, 50 insertions(+) create mode 100644 assets/doc/eglgears.png diff --git a/NixOS.md b/NixOS.md index b02b632..5a1ade8 100644 --- a/NixOS.md +++ b/NixOS.md @@ -414,6 +414,56 @@ nix-shell -p appimage-run appimage-run ~/Downloads/ubports-installer_0.10.0_linux_x86_64.AppImage ``` +## Graphic drivers + +Usually most of this should work out of the box on NixOS. + +Vulkan: +- Verification: If `vulkaninfo` returns information about your GPU, Vulkan is working. https://wiki.archlinux.org/title/Vulkan#Verification + +OpenGL: +- Verification: https://wiki.archlinux.org/title/OpenGL#Verification + - `eglinfo -B` should not return `eglInitialize failed` + - `eglgears_x11` and `eglgears_wayland` -> ![eglgears.png](assets/doc/eglgears.png) + +Video acceleration: +- 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 + - 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. +- VDPAU + - Video Decode and Presentation API for Unix (VDPAU). + - Verifying: `vdpauinfo`. https://wiki.archlinux.org/title/Hardware_video_acceleration#Verifying_VDPAU + +Configuration example for an AMD GPU: + +```nix +hardware.opengl = { + enable = true; + # Whether to enable accelerated OpenGL rendering through the Direct Rendering Interface (DRI). + # 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. + driSupport = true; + extraPackages = [ + # AMD Open Source Driver For Vulkan + pkgs.amdvlk + + # 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 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 + ]; +}; +``` + ## Additional resources * Simple NixOS flake template for NixOS with HomeManager. https://github.com/Misterio77/nix-starter-configs#readme diff --git a/assets/doc/eglgears.png b/assets/doc/eglgears.png new file mode 100644 index 0000000000000000000000000000000000000000..9926821bfe18820b8ba296ad4a0392c53ded7a98 GIT binary patch literal 28974 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