Drops Blackmagic (product itself, obvious) and Sheridan Computers (libc++ rollback writeup is referenced only as future-work in NOTES.md, not used by the installer). Keeps Omarchy, davincibox, davinci-resolve-checker, and the Arch Wiki — all directly referenced in install-davinci-resolve.sh. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
159 lines
8 KiB
Markdown
159 lines
8 KiB
Markdown
# DaVinci Resolve - AMD Omarchy
|
|
|
|
## Video Guide
|
|
|
|
<p align="center">
|
|
<a href="https://youtu.be/2-Nmg8yBqDI">
|
|
<img src="https://img.youtube.com/vi/2-Nmg8yBqDI/0.jpg" width="700">
|
|
</a>
|
|
</p>
|
|
|
|
Install [DaVinci Resolve](https://www.blackmagicdesign.com/products/davinciresolve) on [Omarchy](https://omarchy.com) (Arch Linux + Hyprland) on AMD GPUs — RDNA 2, RDNA 3, and the new RDNA 4 cards (RX 9060 / 9070 / 9080).
|
|
|
|
The script does a **manual install to `/opt/resolve`** (no AUR PKGBUILD), pins **ROCm 7.1.1** from the Arch Linux Archive (current 7.2.x is broken with Resolve), patches every ELF's RPATH, fixes audio (DeckLink → ALSA + snd-aloop + PipeWire bridge), and writes a launcher with the right `HSA_OVERRIDE` / `DRI_PRIME` / `MESA_VK_DEVICE_SELECT` env vars baked in.
|
|
|
|
For the full design rationale, root-cause analysis, and recovery procedures see **[NOTES.md](NOTES.md)**.
|
|
|
|
## Requirements
|
|
|
|
- **OS**: [Omarchy](https://omarchy.com) (Arch Linux) or any Arch-based distro
|
|
- **GPU**: AMD RDNA 2 / 3 / 4 (see [GPU support](#gpu-support) below)
|
|
- **Compositor**: Hyprland (optional — script adds window rules if detected)
|
|
- **DaVinci Resolve ZIP** in `~/Downloads/` — Blackmagic gates this behind a registration form, no direct link
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
# 1. Download DaVinci Resolve from blackmagicdesign.com into ~/Downloads/
|
|
# 2. Clone and run:
|
|
git clone https://git.no-signal.uk/nosignal/DaVinci-Resolve-AMD-Omarchy.git
|
|
cd DaVinci-Resolve-AMD-Omarchy
|
|
chmod +x install-davinci-resolve.sh
|
|
./install-davinci-resolve.sh
|
|
```
|
|
|
|
The script scans your system, shows what it found, asks before making changes, and is idempotent — safe to re-run any time.
|
|
|
|
## Why ROCm 7.1.1 (and not the current 7.2.x)
|
|
|
|
ROCm 7.2.x's OpenCL stack breaks DaVinci Resolve on **every** AMD GPU — `clCreateContext` either fails outright or hangs on the Color page. ROCm 7.1.1 is the last known-good release.
|
|
|
|
The script downloads 7.1.1 from the [Arch Linux Archive](https://archive.archlinux.org/packages/), installs via `pacman -U`, and adds an `IgnorePkg` line to `/etc/pacman.conf` so `pacman -Syu` won't quietly upgrade you back into the broken stack.
|
|
|
|
References:
|
|
- [ROCm/ROCm#5982](https://github.com/ROCm/ROCm/issues/5982) — upstream issue, still open
|
|
- [CachyOS thread](https://discuss.cachyos.org/t/davinci-resolve-amd-rocm-fails-without-downgrade/28036) — community recipe
|
|
- [NixOS#481483](https://github.com/NixOS/nixpkgs/issues/481483) — RDNA4-specific report
|
|
|
|
When ROCm 7.3+ ships and is verified working, the pin can be lifted — see NOTES.md.
|
|
|
|
## What it does
|
|
|
|
1. **System scan** — kernel, GPU(s) with gfx target + PCI bus address, audio stack, display server, existing Resolve install
|
|
2. **ROCm 7.1.1 pinned install** — downloads from Arch Linux Archive, `pacman -U`, adds `IgnorePkg` to `/etc/pacman.conf`. Aborts on partial-downgrade failure (won't silently leave you on a broken stack)
|
|
3. **Manual Resolve install** — `unzip` → `.run` AppImage → `--appimage-extract` → `rsync` to `/opt/resolve` → `patchelf --set-rpath` every ELF
|
|
4. **glib-family symlink swap** — replaces all five bundled glib libs (`libglib-2.0`, `libgio-2.0`, `libgmodule-2.0`, `libgobject-2.0`, `libgthread-2.0`) with system symlinks. Bundled `libc++` / `libc++abi` are deliberately **kept** (Resolve was compiled against specific ABI versions; replacing them crashes on launch)
|
|
5. **Audio fixes** — DeckLink → ALSA backend, snd-aloop kernel module, PipeWire loopback bridge, wireplumber rule keeping aloop off the default-sink rotation
|
|
6. **Hyprland window rules** — v3 syntax (not deprecated `windowrulev2`), cosmetic-only on the modal dialogs to avoid the trapped-cursor problem
|
|
7. **Launcher** at `~/.local/bin/davinci-resolve` with `HSA_OVERRIDE_GFX_VERSION`, `ROCR_VISIBLE_DEVICES`, `DRI_PRIME=pci-<bus>` (explicit tag, not `=1` — see below), and `MESA_VK_DEVICE_SELECT` baked in
|
|
8. **Stale-config wipe** — clears `~/.local/share/DaVinciResolve/{configs,logs}` if it sees a known crash marker, and unconditionally on fresh installs
|
|
|
|
## Hybrid GPU note (Intel iGPU + AMD dGPU)
|
|
|
|
On hybrid laptops where the monitor is wired to the AMD discrete card, Mesa already defaults OpenGL to the AMD card. Setting `DRI_PRIME=1` in this scenario actually flips OpenGL to the **Intel** iGPU — Resolve then has OpenGL on Intel and OpenCL on AMD, CL/GL interop fails, and Resolve hangs on the Color page.
|
|
|
|
The launcher uses the **explicit PCI tag form** (`DRI_PRIME=pci-0000_BB_DD_F`) derived from the AMD card's `lspci` ID. `switcherooctl` is **not** used — it internally sets `DRI_PRIME=1` and inherits the same flip bug.
|
|
|
|
## GPU support
|
|
|
|
The script auto-detects the gfx target and applies the right HSA override unattended.
|
|
|
|
### Confirmed working (tested directly)
|
|
|
|
| Card | gfx target | HSA value |
|
|
|------|-----------|-----------|
|
|
| **RX 9060 / 9060 XT** (Navi 44) | gfx1200 | `12.0.0` |
|
|
|
|
### Should work — natively supported by ROCm 7.1.1
|
|
|
|
| Card | gfx target | HSA value |
|
|
|------|-----------|-----------|
|
|
| **RX 9070 / 9070 XT** (Navi 48) | gfx1201 | `12.0.1` |
|
|
| **RX 7900 / 7900 XT / 7900 XTX** (Navi 31) | gfx1100 | `11.0.0` |
|
|
| **RX 7700 XT / 7800 XT** (Navi 32) | gfx1101 | `11.0.1` |
|
|
| **RX 6800 / 6800 XT / 6900 XT / 6950 XT** (Navi 21) | gfx1030 | `10.3.0` |
|
|
|
|
### Should work via HSA spoof — not natively supported, spoofed to nearest target
|
|
|
|
| Card | Real gfx | Spoofs as | HSA value |
|
|
|------|----------|-----------|-----------|
|
|
| **RX 7600 / 7600 XT** (Navi 33) | gfx1102 | gfx1100 | `11.0.0` |
|
|
| **RX 6700 / 6750 XT** (Navi 22) | gfx1031 | gfx1030 | `10.3.0` |
|
|
| **RX 6600 / 6650 XT** (Navi 23) | gfx1032 | gfx1030 | `10.3.0` |
|
|
| **RX 6500 XT / 6400** (Navi 24) | gfx1034 | gfx1030 | `10.3.0` |
|
|
|
|
### Not supported — ROCm 7.x dropped these before our pinned baseline
|
|
|
|
- **RX 5000 series** (RDNA 1)
|
|
- **Vega**
|
|
- **Polaris and earlier** (rusticl-only path, this script isn't tuned for it)
|
|
|
|
## Free-version codec limitation
|
|
|
|
DaVinci Resolve Free on Linux can't decode H.264/H.265. Convert media first:
|
|
|
|
```bash
|
|
resolve-convert video.mp4 # writes video_dnxhr.mov (DNxHR)
|
|
```
|
|
|
|
## Environment variables
|
|
|
|
| Var | Effect |
|
|
|-----|--------|
|
|
| `RESOLVE_NO_ALOOP=1` | Skip the snd-aloop / PipeWire bridge audio setup (use this if you have a real audio interface) |
|
|
|
|
## Uninstall
|
|
|
|
The script does **not** track itself with pacman. To remove cleanly:
|
|
|
|
```bash
|
|
sudo rm -rf /opt/resolve
|
|
sudo rm -f /usr/share/applications/{DaVinciResolve,blackmagicraw-*}.desktop
|
|
sudo rm -f /usr/lib/udev/rules.d/{99-BlackmagicDevices,99-ResolveKeyboardHID,99-DavinciPanel}.rules
|
|
rm -f ~/.local/bin/davinci-resolve ~/.local/bin/davinci-resolve-rusticl ~/.local/bin/davinci-resolve-igpu
|
|
rm -f ~/.local/bin/resolve-convert ~/.local/bin/davinci-resolve-checker
|
|
|
|
# Optional — also remove user data (DELETES ALL PROJECTS)
|
|
rm -rf ~/.local/share/DaVinciResolve
|
|
```
|
|
|
|
To lift the ROCm pin:
|
|
|
|
```bash
|
|
sudo sed -i '/^IgnorePkg.*rocm-/d' /etc/pacman.conf
|
|
sudo pacman -Syu
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
If first launch fails or Resolve hangs on the Color page, **[NOTES.md](NOTES.md)** has the full recovery playbook — quick sanity checks at the bottom let you verify the OpenCL stack, launcher env vars, and PipeWire bridge in a few lines of paste.
|
|
|
|
Common quick checks:
|
|
|
|
```bash
|
|
clinfo -l # should show your AMD gfx target
|
|
pacman -Q rocm-core rocm-opencl-runtime # should show 7.1.1
|
|
grep IgnorePkg /etc/pacman.conf # should pin the rocm packages
|
|
grep -E 'DRI_PRIME|HSA_OVERRIDE' ~/.local/bin/davinci-resolve # DRI_PRIME must be pci-... form, NEVER =1
|
|
```
|
|
|
|
## Credits
|
|
|
|
- [Omarchy](https://omarchy.com) — the Arch + Hyprland distribution this targets
|
|
- [davincibox](https://github.com/zelikos/davincibox) — patchelf RPATH technique, OpenCL conflict references
|
|
- [davinci-resolve-checker](https://github.com/Ashark/davinci-resolve-checker) — diagnostic tool, installed by this script
|
|
- [Arch Wiki — DaVinci Resolve](https://wiki.archlinux.org/title/DaVinci_Resolve) — community documentation
|
|
|
|
## License
|
|
|
|
Provided as-is for the Omarchy community.
|