[GPU] Async shader compilation for D3D12 and Vulkan

Adds async_shader_compilation cvar (default true) that forces new
pipelines to be created async from the main thread, skips draws entirely
on D3D12 and on vulkan replaces pixel shader with placeholder until the
real one is ready. Causes some visual artifacts on first load but
greatly reduces load times and stutter.
This commit is contained in:
Herman S.
2025-12-31 20:23:37 +09:00
parent ccf8fb66f5
commit 5845f3437b
14 changed files with 702 additions and 99 deletions

View File

@@ -94,3 +94,12 @@ DEFINE_bool(gpu_3d_to_2d_texture, true,
"Handle shaders that sample 3D textures as 2D by creating a 2D "
"texture from slice 0 of the guest memory.",
"GPU");
DEFINE_bool(
async_shader_compilation, true,
"Compile shaders and create pipelines asynchronously in background "
"threads. "
"Eliminates shader compilation stutter but may cause brief rendering "
"artifacts while pipelines are being created. When disabled, pipelines are "
"created synchronously which causes stutter but no visual artifacts.",
"GPU");