DaVinci Resolve: Difference between revisions

From NixOS Wiki
imported>Klaymore
Basic troubleshooting/AMD driver information
 
Opengears (talk | contribs)
m updated descriptions and reworked some sections
 
(13 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[https://www.blackmagicdesign.com/products/davinciresolve Black Magic Davinci Resolve] is a program for video editing, color effects and A/V post production. For FOSS alternatives you might want to look into [https://www.shotcut.org/ Shotcut] and [https://kdenlive.org/ Kdenlive].
== Installation ==
== Installation ==


Install the <code>davinci-resolve</code> package.
There are [https://github.com/NixOS/nixpkgs/blob/504dc57774510c1213a8a3a04d03048893d8edce/pkgs/by-name/da/davinci-resolve/package.nix#L37 two versions] of [https://www.blackmagicdesign.com/products/davinciresolve Black Magic Davinci Resolve] on NixOS.
* <code>davinci-resolve</code> (the free version)
* <code>davinci-resolve-studio</code> (the paid version)


For Linux, Davinci Resolve Free has [https://www.reddit.com/r/davinciresolve/comments/y4ytkl/why_no_mp4h264_support_on_linux/ only partial h.264 and h.265 support due to licensing restrictions]. AAC audio is also not supported in the Free version.


== Drivers ==
== Drivers ==
DaVinci Resolve requires a GPU that supports either OpenCL 1.2 or CUDA 11.
=== AMD ===
=== AMD ===


Contrary to the [https://wiki.archlinux.org/title/DaVinci_Resolve#Installation Arch Wiki], DaVinci Resolve seems to work (on an RX 570) without switching to proprietary GPU drivers.
There are multiple options to run Davinci Resolve with AMD cards, but it strongly depends on the generation of your AMD card. Also make sure to read the [[AMD_GPU|AMD GPU page]] (this wiki) and the [https://wiki.archlinux.org/title/DaVinci_Resolve Davinci Resolve entry on Archwiki].
{| class="wikitable"
|+ AMD GPU Compatibility with DaVinci Resolve on Linux
|-
! GPU Generation !! Series !! DaVinci Resolve Compatibility !! ROCm Support !! AMDGPU Support !! Rusticl Support !! Confirmed
|-
|Pre-GCN (Terascale)
|Radeon HD 2000–6000 Series
|❌ No GPU Compute (Software Only)
|❌ Not Supported
|❌ Uses Radeon DRM
|❌ Most Terascale GPUs lack OpenCL support in Rusticl. Rusticl officially targets Gallium drivers, but <code>r600g</code> lacks full OpenCL support.
|❌ No OpenCL. Please let us know if you got it running with <code>r600g</code>
|-
|GCN 1.0 & 1.1
|Radeon HD 7000, R9 270/280 Series
|Limited (OpenCL 1.1)
|❌ Not Supported
|Experimental
|Partially (Some support via <code>radeonsi</code> but limited OpenCL)
|Only working if card is supported in <code>amdgpu</code> open-source driver!
|-
| GCN 1.2 (Gen 3) || Radeon R9 285, R9 380, R9 Fury || Moderate (OpenCL 1.2) || ❌ Not Supported || ✅ Yes || ✅ Rusticl supported via <code>radeonsi</code> & Mesa || ✅ Confirmed with amdgpu, radeonsi and OpenCL via Mesa (Rusticl). See the demo configuration below
|-
| GCN 4th Gen (Polaris) || Radeon RX 400/500 Series || Moderate (OpenCL 1.2) || Supported up to ROCm 5.6 || ✅ Yes || ✅ Rusticl supported via <code>radeonsi</code> & Mesa || ✅ Confirmed with <code>amdgpu</code>, <code>radeonsi</code>, and OpenCL via Rusticl (Mesa)
|-
| GCN 5th Gen (Vega) || Radeon RX Vega Series || Moderate (OpenCL 1.2) || Supported up to ROCm 5.6 || ✅ Yes || ✅ Rusticl supported via <code>radeonsi</code> & Mesa || ✅ Confirmed
|-
| RDNA (Navi) || Radeon RX 5000 Series || Good (OpenCL 1.2) || Supported || ✅ Yes || ✅ Rusticl supported via <code>radeonsi</code> & Mesa || ✅ Confirmed
|-
| RDNA2 (Navi 2x) || Radeon RX 6000 Series || Good (OpenCL 1.2) || Supported || ✅ Yes || ✅ Rusticl supported via <code>radeonsi</code> & Mesa || ✅ Confirmed
|-
| RDNA3 (Navi 3x) || Radeon RX 7000 Series || Good (OpenCL 1.2) || Supported || ✅ Yes || ✅ Rusticl supported via <code>radeonsi</code> & Mesa || ✅ Confirmed
|}
Cheap and minimal supported cards to look out for are the ''Radeon R9'' series starting from GCN 1.2 and higher. Find more information about the [[wikipedia:AMDgpu_(Linux_kernel_module)|AMDgpu (Linux kernel module)]] which is upstreamed with Linux. There is also the proprietary '''amdgpu-pro''' driver which has [https://www.reddit.com/r/NixOS/comments/13vcufk/install_radeon_6650xt_pro_drivers/ mixed results]. The free drivers (amdgpu) are better.
 
 
'''Here is a confirmed minimal system configuration for amdgpu, radeonsi and OpenCL via Mesa (Rusticl):'''<syntaxhighlight lang="nix">
{ config, lib, pkgs, ... }:
{
  imports = [ ./hardware-configuration.nix];
  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;
  boot.kernelPackages=pkgs.linuxPackages_latest;
  boot.initrd.kernelModules=["amdgpu"];
  nixpkgs.config.allowUnfree = true;
  networking.hostName = "davinci-test";
  networking.networkmanager.enable = true;
  time.timeZone = "Europe/Amsterdam";
  services.pipewire = {
    enable = true;
    pulse.enable = true;
  };
  environment.systemPackages = with pkgs; [
kitty
mesa-demos
vulkan-tools
clinfo
  davinci-resolve
  ];
  programs.hyprland.enable=true;
  services.dbus.enable=true;
  services.xserver.videoDrivers =["amdgpu"];
  environment.variables={
RUSTICL_ENABLE="radeonsi";
ROC_ENABLE_PRE_VEGA = "1";
  };
hardware.graphics = {
  enable = true;
  extraPackages = with pkgs; [
    mesa
    libva
    libvdpau-va-gl
    vulkan-loader
    vulkan-validation-layers
    amdvlk  # Optional: AMD's proprietary Vulkan driver
    mesa.opencl  # Enables Rusticl (OpenCL) support
  ];
};
  system.stateVersion = "24.11";
}
</syntaxhighlight>
 
=== Intel ===
 
DaVinci Resolve has partial support for Intel GPUs on Linux. Audio playback works on the Fairlight page, but the video timeline does not work. To add Intel support, add the following setting to your <code>configuration.nix</code>:
 
<syntaxhighlight lang="nix">
hardware.opengl = {
    enable = true;
    driSupport32Bit = true;
    extraPackages = with pkgs; [
        intel-compute-runtime
    ];
  };
</syntaxhighlight>
 
== X11 or Wayland ==
 
Davinci Resolve can run on both X11 and on Wayland.
 
If you want to maximize your chances you can try and start davinci in the following way to check for ROCM or Rusticl support
 
<code>ROC_ENABLE_PRE_VEGA=1 RUSTICL_ENABLE=amdgpu,amdgpu-pro,radv,radeon DRI_PRIME=1 QT_QPA_PLATFORM=xcb davinci-resolve</code>




== Troubleshooting ==
== Troubleshooting ==


=== Resolve crashes/fails to start ===
If it doesn't launch, and crashes when running <code>davinci-resolve</code>, then try running it as root.
If it doesn't launch, and crashes when running <code>davinci-resolve</code>, then try running it as root.
If it didn't help, you can view the error log at <code>~/.local/share/DaVinciResolve/logs/ResolveDebug.txt</code> to pinpoint the issue.
If you can spot a line similar to <code>Cannot mix incompatible Qt library (5.15.12) with this library (5.15.2)</code>, and have configured QT options in your NixOS configuration (<code>qt.enable = true;</code>), try disabling them.
=== Cannot import video file ===
DaVinci Resolve's free edition does not come with H264/H265 support. You need to convert your video to a supported video format, like DNxHD/DNxHR and Cineform.  you can do this with <code>ffmpeg</code>. With FFmpeg installed, assuming your video is called <code>video.mp4</code>, you can use the following command to convert:
<code>ffmpeg -i video.mp4 -c:v dnxhd -profile:v dnxhr_hq -c:a pcm_s16le -pix_fmt yuv422p output.mov</code>
This command will convert your video to a DNxHR video and your audio to uncompressed 16bit PCM. For 24bit PCM, use <code>-c:a pcm_s24le</code> instead.
You can know more about DNxHD/HR profiles with the command <code>ffmpeg -h encoder=dnxhd</code>
Resolve also supports Cineform and a few other formats. For Cineform encoding, use the <code>cfhd</code> encoder.
=== Unsupported GPU Processing Mode ===
If DaVinci Resolve shows a popup asking to review GPU configuration in preferences, and if there is no GPU detected in "Memory and GPU" in preferences, you can try the following in your <code>configuration.nix</code>:
<syntaxhighlight lang="nix">
hardware.opengl = {
  enable = true;
  extraPackages = with pkgs; [
    rocmPackages.clr.icd
  ];
};
</syntaxhighlight>

Latest revision as of 14:51, 17 February 2025

Black Magic Davinci Resolve is a program for video editing, color effects and A/V post production. For FOSS alternatives you might want to look into Shotcut and Kdenlive.

Installation

There are two versions of Black Magic Davinci Resolve on NixOS.

* davinci-resolve (the free version)
* davinci-resolve-studio (the paid version)

For Linux, Davinci Resolve Free has only partial h.264 and h.265 support due to licensing restrictions. AAC audio is also not supported in the Free version.

Drivers

DaVinci Resolve requires a GPU that supports either OpenCL 1.2 or CUDA 11.

AMD

There are multiple options to run Davinci Resolve with AMD cards, but it strongly depends on the generation of your AMD card. Also make sure to read the AMD GPU page (this wiki) and the Davinci Resolve entry on Archwiki.

AMD GPU Compatibility with DaVinci Resolve on Linux
GPU Generation Series DaVinci Resolve Compatibility ROCm Support AMDGPU Support Rusticl Support Confirmed
Pre-GCN (Terascale) Radeon HD 2000–6000 Series ❌ No GPU Compute (Software Only) ❌ Not Supported ❌ Uses Radeon DRM ❌ Most Terascale GPUs lack OpenCL support in Rusticl. Rusticl officially targets Gallium drivers, but r600g lacks full OpenCL support. ❌ No OpenCL. Please let us know if you got it running with r600g
GCN 1.0 & 1.1 Radeon HD 7000, R9 270/280 Series Limited (OpenCL 1.1) ❌ Not Supported Experimental Partially (Some support via radeonsi but limited OpenCL) Only working if card is supported in amdgpu open-source driver!
GCN 1.2 (Gen 3) Radeon R9 285, R9 380, R9 Fury Moderate (OpenCL 1.2) ❌ Not Supported ✅ Yes ✅ Rusticl supported via radeonsi & Mesa ✅ Confirmed with amdgpu, radeonsi and OpenCL via Mesa (Rusticl). See the demo configuration below
GCN 4th Gen (Polaris) Radeon RX 400/500 Series Moderate (OpenCL 1.2) Supported up to ROCm 5.6 ✅ Yes ✅ Rusticl supported via radeonsi & Mesa ✅ Confirmed with amdgpu, radeonsi, and OpenCL via Rusticl (Mesa)
GCN 5th Gen (Vega) Radeon RX Vega Series Moderate (OpenCL 1.2) Supported up to ROCm 5.6 ✅ Yes ✅ Rusticl supported via radeonsi & Mesa ✅ Confirmed
RDNA (Navi) Radeon RX 5000 Series Good (OpenCL 1.2) Supported ✅ Yes ✅ Rusticl supported via radeonsi & Mesa ✅ Confirmed
RDNA2 (Navi 2x) Radeon RX 6000 Series Good (OpenCL 1.2) Supported ✅ Yes ✅ Rusticl supported via radeonsi & Mesa ✅ Confirmed
RDNA3 (Navi 3x) Radeon RX 7000 Series Good (OpenCL 1.2) Supported ✅ Yes ✅ Rusticl supported via radeonsi & Mesa ✅ Confirmed

Cheap and minimal supported cards to look out for are the Radeon R9 series starting from GCN 1.2 and higher. Find more information about the AMDgpu (Linux kernel module) which is upstreamed with Linux. There is also the proprietary amdgpu-pro driver which has mixed results. The free drivers (amdgpu) are better.


Here is a confirmed minimal system configuration for amdgpu, radeonsi and OpenCL via Mesa (Rusticl):

{ config, lib, pkgs, ... }:
{
  imports = [ ./hardware-configuration.nix];
  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;
  boot.kernelPackages=pkgs.linuxPackages_latest;
  boot.initrd.kernelModules=["amdgpu"];
  nixpkgs.config.allowUnfree = true;
  networking.hostName = "davinci-test";
  networking.networkmanager.enable = true; 
  time.timeZone = "Europe/Amsterdam";
  services.pipewire = {
     enable = true;
     pulse.enable = true;
  };
   environment.systemPackages = with pkgs; [
	kitty
	mesa-demos
	vulkan-tools
	clinfo
  	davinci-resolve
   ];
   programs.hyprland.enable=true;
   services.dbus.enable=true;
   services.xserver.videoDrivers =["amdgpu"]; 
   environment.variables={
	RUSTICL_ENABLE="radeonsi";
	ROC_ENABLE_PRE_VEGA = "1";
   };
 hardware.graphics = {
   enable = true;
   extraPackages = with pkgs; [
     mesa
     libva
     libvdpau-va-gl
     vulkan-loader
     vulkan-validation-layers
     amdvlk  # Optional: AMD's proprietary Vulkan driver
     mesa.opencl  # Enables Rusticl (OpenCL) support
   ];
 };
  system.stateVersion = "24.11";
}

Intel

DaVinci Resolve has partial support for Intel GPUs on Linux. Audio playback works on the Fairlight page, but the video timeline does not work. To add Intel support, add the following setting to your configuration.nix:

 hardware.opengl = {
    enable = true;
    driSupport32Bit = true;
    extraPackages = with pkgs; [
        intel-compute-runtime
    ];
  };

X11 or Wayland

Davinci Resolve can run on both X11 and on Wayland.

If you want to maximize your chances you can try and start davinci in the following way to check for ROCM or Rusticl support

ROC_ENABLE_PRE_VEGA=1 RUSTICL_ENABLE=amdgpu,amdgpu-pro,radv,radeon DRI_PRIME=1 QT_QPA_PLATFORM=xcb davinci-resolve


Troubleshooting

Resolve crashes/fails to start

If it doesn't launch, and crashes when running davinci-resolve, then try running it as root.

If it didn't help, you can view the error log at ~/.local/share/DaVinciResolve/logs/ResolveDebug.txt to pinpoint the issue.

If you can spot a line similar to Cannot mix incompatible Qt library (5.15.12) with this library (5.15.2), and have configured QT options in your NixOS configuration (qt.enable = true;), try disabling them.

Cannot import video file

DaVinci Resolve's free edition does not come with H264/H265 support. You need to convert your video to a supported video format, like DNxHD/DNxHR and Cineform. you can do this with ffmpeg. With FFmpeg installed, assuming your video is called video.mp4, you can use the following command to convert:

ffmpeg -i video.mp4 -c:v dnxhd -profile:v dnxhr_hq -c:a pcm_s16le -pix_fmt yuv422p output.mov

This command will convert your video to a DNxHR video and your audio to uncompressed 16bit PCM. For 24bit PCM, use -c:a pcm_s24le instead.

You can know more about DNxHD/HR profiles with the command ffmpeg -h encoder=dnxhd

Resolve also supports Cineform and a few other formats. For Cineform encoding, use the cfhd encoder.

Unsupported GPU Processing Mode

If DaVinci Resolve shows a popup asking to review GPU configuration in preferences, and if there is no GPU detected in "Memory and GPU" in preferences, you can try the following in your configuration.nix:

 hardware.opengl = {
   enable = true;
   extraPackages = with pkgs; [
     rocmPackages.clr.icd
   ];
 };