aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/CMakeLists.txt
diff options
context:
space:
mode:
authorTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-31 16:03:16 -0400
committerTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-31 16:03:16 -0400
commit561f87abec2f76b3ca40c59277752ed4d3b6bf16 (patch)
treef64d85c11e42b225f0b7d62a87391f8dff22f4a8 /src/video_core/CMakeLists.txt
parent77ea16e2f26edb443341a12e8169018fc1fa648e (diff)
shader: compute texture handles read from storage buffers for each draw
Switch 2 shaders can read a texture handle from a storage buffer (Switch Sports' scenery: a per-object entry of a table whose pointer is in the driver constant buffer). The bindless handle search looked through the load into its address and returned the table pointer's constant buffer word as the handle, which named an arbitrary descriptor; the game repoints that one at transient render targets every few seconds, so the island and menu lighting flipped between correct, dark and red. The search no longer looks into memory loads. A handle it cannot trace is now built into a small program over constant buffer words, storage buffer words and integer operations (Shader::Info::handle_programs), which the pipelines evaluate when they bind the texture. Handles a single evaluation cannot give (one that changes in a loop) keep the previous search.
Diffstat (limited to 'src/video_core/CMakeLists.txt')
-rw-r--r--src/video_core/CMakeLists.txt1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt
index 5ed43fc903..b3ef88c5f1 100644
--- a/src/video_core/CMakeLists.txt
+++ b/src/video_core/CMakeLists.txt
@@ -235,6 +235,7 @@ add_library(video_core STATIC
shader_cache.h
shader_environment.cpp
shader_environment.h
+ shader_handle_program.h
shader_notify.cpp
shader_notify.h
smaa_area_tex.h