Turn the recorder thread back on by default on AMD GPUs

The AMD device losses with the recorder (#5, #40) stopped after objects
were kept until their submission completed and the recorder began ending
its own parts; RDNA 1 and 2 cards in #5 ran with vk_recorder on and off.
vk_recorder = 0 still turns it off.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Valiantsin DzerakhandClaude Opus 5.5 committed 2026-10-31 18:41:38 +03:00
1 parent bf7c507e4c
commit e38eaa8224
2 files changed
+5 -9

No files matched your search

+4 -8
View File
@@ -127,14 +127,10 @@ void rec_drain(void) {
void rec_begin(VkCommandBuffer cb) {
static int mode = -1;
if (mode < 0) {
// Default off on AMD GPUs: with the recorder their drivers lost the device within the first frames or at menu
// opens, 1 boot in 3 on an RX 9070 XT, and TOTK_VK_RECORDER=0 ended it for three users (issue #5); under RADV
// the kernel saw an illegal opcode at the end of a command buffer (issue #40). Letting the recorder end its own
// parts (rec_end_cb) fixed the white scene on an RX 6700 XT; the default stays off until more AMD cards run it.
const char *set = cfg_get("TOTK_VK_RECORDER");
mode = rt_knob("VK_RECORDER", vk_caps.amd ? "0" : "1");
if (!mode && vk_caps.amd && !(set && *set))
rt_log("vk_rec: no recorder thread on AMD GPUs (TOTK_VK_RECORDER=1 turns it on)");
// Default on for every GPU. AMD drivers once lost the device with the recorder (issues #5 and #40); after
// vk_mem_note_recording kept objects alive until their submission completed and the recorder began ending
// its own parts (rec_end_cb), RDNA 1 and 2 cards ran with it on and off without a loss or a white scene.
mode = rt_knob("VK_RECORDER", "1");
if (mode) {
plat_event_init(&wake_ev, 0, 0);
rec_prio = plat_thread_priority_get();
+1 -1
View File
@@ -88,7 +88,7 @@
# Vulkan.
# Vulkan validation layer: checks every call and slows the game down a lot. Needs the layer installed (Vulkan SDK).
# vk_validation = 0
# A thread of its own makes the Vulkan calls of each frame, 0 or 1. Default: on, except on AMD GPUs.
# A thread of its own makes the Vulkan calls of each frame, 0 or 1. Default: on.
# vk_recorder = 1
# Dynamic vertex input, 0 or 1. Default: on, except on Intel's older integrated GPU drivers (Vulkan 1.3.215 and older).
# vk_dyn_vertex = 1