chrg6
9065d1485f
Let FSR 3.1 and FSR 4 destroy a context they let go of once the GPU is past its last upscale, instead of waiting for the device.
...
vk_ffx.cpp context_for (two places) and vk_ffx4.cpp context_for (three) waited for the whole device to be idle, with
the queue lock held, on the thread that replays the game's submissions, before they destroyed an upscale context of
another render size, the least recently used one for a new output size, or (FSR 4) every idle one after a refused
creation: a stall of the present's flip, the completion thread and upload submits at every pause-screen size, reload,
window size, dynamic resolution step or mode change with FSR on.
A context that goes is now let go of (retire_up): it goes into a list (vk_up_defer.h) with the timeline value of the
submission of its last upscale (Up.fence, set after each dispatch) and is destroyed on the same thread once the GPU is
past it, at the points where vk_dlaa.c takes its own list (every evaluation, every pass while none runs, and after
something is let go of). The 90-second trims, vk_ffx_trim_idle and vk_ffx_release_idle (the upscaler off, which no
longer needs retire_idle's wait) let go of theirs the same way. FSR 4's create descriptors, which the API asks to stay
live until the context is destroyed, move from the slot into a calloc'd Made that goes with the context, so the slot
can take a new context while the old one waits. A refused FSR 4 creation now waits on the timeline from the host for
the contexts let go of, no queue touched (vk_upscaler_gpu_wait), and tries again when any went; with
NX2NAVI_UPSCALER_IDLE_WAIT=1 that wait and every let go wait for the device as before. docs/architecture.md says
where the upscalers' releases go.
C-5 is narrowed: on the default path no upscaler waits for the device any more, so these waits no longer touch the
frame generation swapchain's own queues; vk_fg.cpp, vk_fg4.cpp, gfx_present.c, vk_hdr.c, vk_fsr.c and vk_color.c keep
theirs.
Not reproduced before the change (no FSR session log here). Every runtime file compiles, vk_dlaa.c, vk_ffx.cpp and
vk_ffx4.cpp with -Wall -Wextra and no warning; vk_ffx4.cpp's non-Windows stubs compile against vk_ffx.h;
up_defer_check passes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-13 20:13:01 -05:00
..
2026-11-13 20:12:50 -05:00
2026-11-13 18:43:24 -05:00
2026-11-13 12:54:24 -05:00
2026-11-13 04:37:01 -05:00
2026-11-13 18:41:39 -05:00
2026-11-11 00:39:50 -05:00
2026-11-10 23:16:17 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:38 -05:00
2026-11-12 02:11:46 -05:00
2026-11-10 22:59:02 -05:00
2026-11-09 08:19:19 -05:00
2026-11-07 05:04:40 -05:00
2026-11-07 05:04:40 -05:00
2026-11-13 18:41:46 -05:00
2026-11-07 05:04:40 -05:00
2026-11-07 05:04:40 -05:00
2026-11-13 18:41:46 -05:00
2026-11-13 18:41:46 -05:00
2026-11-12 22:24:22 -05:00
2026-11-13 18:42:10 -05:00
2026-11-13 06:22:18 -05:00
2026-11-13 06:22:18 -05:00
2026-11-13 18:41:46 -05:00
2026-11-13 03:37:26 -05:00
2026-11-13 09:08:40 -05:00
2026-11-13 20:13:01 -05:00
2026-11-13 06:23:01 -05:00
2026-11-13 18:43:23 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:40 -05:00
2026-11-13 09:08:40 -05:00
2026-11-13 06:22:18 -05:00
2026-11-08 01:25:12 -05:00
2026-11-09 09:10:36 -05:00
2026-11-13 20:12:26 -05:00
2026-11-13 18:43:24 -05:00
2026-11-13 20:12:26 -05:00
2026-11-07 05:04:38 -05:00
2026-11-09 03:34:46 -05:00
2026-11-12 15:16:30 -05:00
2026-11-13 18:41:39 -05:00
2026-11-13 09:52:43 -05:00
2026-11-13 07:08:49 -05:00
2026-11-13 07:08:49 -05:00
2026-11-07 05:04:40 -05:00
2026-11-09 13:13:43 -05:00
2026-11-09 13:13:43 -05:00
2026-11-11 00:11:41 -05:00
2026-11-13 20:12:26 -05:00
2026-11-13 15:57:52 -05:00
2026-11-13 18:43:23 -05:00
2026-11-13 18:42:10 -05:00
2026-11-11 14:06:16 -05:00
2026-11-12 17:41:47 -05:00
2026-11-13 20:12:25 -05:00
2026-11-13 07:55:56 -05:00
2026-11-13 07:55:56 -05:00
2026-11-13 18:41:45 -05:00
2026-11-07 05:04:38 -05:00
2026-11-11 19:38:18 -05:00
2026-11-13 18:43:23 -05:00
2026-11-13 18:43:24 -05:00
2026-11-13 20:12:49 -05:00
2026-11-10 23:24:12 -05:00
2026-11-13 18:42:34 -05:00
2026-11-13 20:12:50 -05:00
2026-11-07 05:04:40 -05:00
2026-11-09 08:21:07 -05:00
2026-11-09 08:21:07 -05:00
2026-11-09 08:21:07 -05:00
2026-11-13 06:06:27 -05:00
2026-11-13 06:06:27 -05:00
2026-11-10 12:48:50 -05:00
2026-11-13 06:22:18 -05:00
2026-11-09 03:34:46 -05:00
2026-11-07 05:04:38 -05:00
2026-11-09 03:34:46 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:38 -05:00
2026-11-13 18:42:10 -05:00
2026-11-13 09:52:43 -05:00
2026-11-13 18:41:46 -05:00
2026-11-13 18:41:46 -05:00
2026-11-09 21:54:40 -05:00
2026-11-10 23:16:17 -05:00
2026-11-13 18:43:24 -05:00
2026-11-09 20:48:10 -05:00
2026-11-11 19:38:18 -05:00
2026-11-13 18:43:23 -05:00
2026-11-13 18:43:23 -05:00
2026-11-13 20:12:26 -05:00
2026-11-13 07:55:56 -05:00
2026-11-13 07:55:56 -05:00
2026-11-13 06:46:31 -05:00
2026-11-11 04:48:36 -05:00
2026-11-13 20:12:50 -05:00
2026-11-11 00:39:08 -05:00
2026-11-07 09:26:51 -05:00
2026-11-10 23:14:00 -05:00
2026-11-08 15:51:48 -05:00
2026-11-07 05:04:40 -05:00
2026-11-12 16:23:02 +01:00
2026-11-12 16:23:02 +01:00
2026-11-11 05:58:43 -05:00
2026-11-11 19:38:17 -05:00
2026-11-11 05:58:32 -05:00
2026-11-08 15:51:48 -05:00
2026-11-09 08:09:25 -05:00
2026-11-08 15:51:48 -05:00
2026-11-07 05:04:40 -05:00
2026-11-12 14:38:26 -05:00
2026-11-12 12:09:37 -05:00
2026-11-11 02:36:54 -05:00
2026-11-11 00:39:58 -05:00
2026-11-07 05:04:40 -05:00
2026-11-13 18:46:50 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:38 -05:00
2026-11-13 18:41:46 -05:00
2026-11-13 00:50:21 -05:00
2026-11-13 20:12:49 -05:00
2026-11-13 15:57:52 -05:00
2026-11-12 12:09:36 -05:00
2026-11-07 05:04:40 -05:00
2026-11-12 12:09:36 -05:00
2026-11-07 05:04:40 -05:00
2026-11-11 19:38:17 -05:00
2026-11-07 05:04:39 -05:00
2026-11-07 05:04:39 -05:00
2026-11-11 19:38:18 -05:00
2026-11-11 19:38:18 -05:00
2026-11-11 19:38:18 -05:00
2026-11-07 05:04:38 -05:00
2026-11-09 08:54:25 -05:00
2026-11-08 15:51:48 -05:00
2026-11-07 05:04:38 -05:00
2026-11-10 22:59:02 -05:00
2026-11-07 13:31:07 -05:00
2026-11-13 00:53:22 -05:00
2026-11-07 05:04:40 -05:00
2026-11-13 18:41:46 -05:00
2026-11-07 05:04:40 -05:00
2026-11-09 13:13:43 -05:00
2026-11-09 02:40:51 -05:00
2026-11-12 15:18:25 -05:00
2026-11-09 02:40:51 -05:00
2026-11-13 08:35:42 -05:00
2026-11-13 08:35:42 -05:00
2026-11-12 22:34:22 -05:00
2026-11-13 05:54:58 -05:00
2026-11-13 18:41:39 -05:00
2026-11-13 20:12:50 -05:00
2026-11-10 06:35:28 -05:00
2026-11-10 06:35:28 -05:00
2026-11-13 07:08:49 -05:00
2026-11-13 07:08:49 -05:00
2026-11-13 15:57:51 -05:00
2026-11-13 15:57:51 -05:00
2026-11-11 04:36:33 -05:00
2026-11-07 05:04:38 -05:00
2026-11-12 22:09:37 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:40 -05:00
2026-11-13 08:23:11 -05:00
2026-11-13 20:12:26 -05:00
2026-11-13 20:12:26 -05:00
2026-11-12 22:28:36 -05:00
2026-11-12 22:28:36 -05:00
2026-11-10 23:16:17 -05:00
2026-11-10 23:16:17 -05:00
2026-11-13 03:37:26 -05:00
2026-11-09 13:13:43 -05:00
2026-11-09 13:13:43 -05:00
2026-11-09 13:13:43 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:40 -05:00
2026-11-12 21:33:21 -05:00
2026-11-12 20:03:45 -05:00
2026-11-12 07:55:57 -05:00
2026-11-12 07:55:57 -05:00
2026-11-13 03:42:40 -05:00
2026-11-12 22:57:56 -05:00
2026-11-13 07:55:56 -05:00
2026-11-13 18:43:23 -05:00
2026-11-13 18:43:23 -05:00
2026-11-13 18:43:24 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:38 -05:00
2026-11-07 05:04:40 -05:00
2026-11-07 05:04:38 -05:00
2026-11-13 03:37:26 -05:00
2026-11-07 05:04:38 -05:00
2026-11-12 02:11:46 -05:00
2026-11-12 02:11:46 -05:00
2026-11-13 08:35:42 -05:00
2026-11-13 20:12:50 -05:00
2026-11-13 08:35:42 -05:00
2026-11-13 00:53:22 -05:00
2026-11-13 00:53:22 -05:00
2026-11-13 18:41:39 -05:00
2026-11-13 18:41:39 -05:00
2026-11-07 05:04:38 -05:00
2026-11-13 06:23:01 -05:00
2026-11-13 18:41:40 -05:00
2026-11-13 20:12:49 -05:00
2026-11-11 04:42:07 -05:00
2026-11-11 04:29:31 -05:00
2026-11-12 16:22:15 +01:00
2026-11-09 03:34:46 -05:00
2026-11-12 04:39:12 -05:00
2026-11-13 12:54:24 -05:00
2026-11-13 18:43:23 -05:00
2026-11-13 20:13:01 -05:00
2026-11-13 00:49:30 -05:00
2026-11-13 20:12:50 -05:00
2026-11-13 20:12:49 -05:00
2026-11-13 09:52:43 -05:00
2026-11-13 18:41:40 -05:00
2026-11-13 15:57:52 -05:00
2026-11-11 04:35:30 -05:00
2026-11-13 12:54:24 -05:00
2026-11-13 18:41:40 -05:00
2026-11-13 06:46:31 -05:00
2026-11-11 04:49:01 -05:00
2026-11-13 20:13:01 -05:00
2026-11-13 20:13:01 -05:00
2026-11-13 20:13:01 -05:00
2026-11-13 06:46:31 -05:00
2026-11-12 20:03:59 -05:00
2026-11-12 12:09:37 -05:00
2026-11-13 18:41:39 -05:00
2026-11-13 06:46:31 -05:00
2026-11-07 05:04:40 -05:00
2026-11-13 06:23:01 -05:00
2026-11-12 22:18:14 -05:00
2026-11-12 22:18:14 -05:00
2026-11-13 00:46:26 -05:00
2026-11-13 18:41:39 -05:00
2026-11-13 08:36:46 -05:00
2026-11-13 18:46:49 -05:00
2026-11-12 22:30:56 -05:00
2026-11-13 20:12:50 -05:00
2026-11-13 12:54:24 -05:00
2026-11-13 12:54:24 -05:00
2026-11-13 12:54:24 -05:00
2026-11-07 05:04:38 -05:00
2026-11-13 00:49:30 -05:00
2026-11-07 05:04:38 -05:00
2026-11-13 08:36:46 -05:00
2026-11-13 18:43:23 -05:00
2026-11-12 13:00:13 -05:00
2026-11-11 05:58:42 -05:00
2026-11-11 05:25:38 -05:00
2026-11-12 23:21:17 -05:00
2026-11-13 00:49:30 -05:00
2026-11-13 12:54:24 -05:00
2026-11-13 18:42:34 -05:00
2026-11-10 12:14:29 -05:00
2026-11-12 22:33:29 -05:00
2026-11-13 15:57:52 -05:00
2026-11-13 20:12:50 -05:00
2026-11-13 00:50:21 -05:00
2026-11-13 20:13:01 -05:00
2026-11-13 00:49:30 -05:00
2026-11-13 05:09:47 -05:00
2026-11-07 05:04:38 -05:00
2026-11-10 09:13:35 -05:00
2026-11-13 20:12:50 -05:00
2026-11-10 15:20:47 -05:00
2026-11-13 00:43:03 -05:00