aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/gpu_thread.cpp
diff options
context:
space:
mode:
authorDuck912 <350528965+Duck912@users.noreply.github.com>2026-11-01 16:18:10 -0500
committerDuck912 <350528965+Duck912@users.noreply.github.com>2026-11-01 21:54:48 -0500
commit18b0671e1b640fc3cbca565c39f5a69a287ede9b (patch)
tree8ff328cfb15e5800e0cb9b642dc1400191fbaa18 /src/video_core/gpu_thread.cpp
parente7973dae7e2ea44665ff4ec83d7214a5d2daa366 (diff)
shader: read extra texture descriptor buffers bindless
Maxwell's bound texture instructions read every descriptor from one constant buffer per program, but Fire Emblem: Fortune's Weave's shaders sample from more than one (bindings 4-7, 14 and 15 next to an earlier one). The lowering rejected the second binding, so most of its graphics programs failed and 3D scenes stayed black. A binding that conflicts with the program's buffer is now read bindless: the handle is loaded from its buffer with an unpredicated MOV and passed as the first meta register of TEX.B, TLD.B or SUST.B. The TEXS fast path and the array depth form check the buffer instead of setting it to 2. Also lowered: TEX with the handle in a register (0x361, packed or not) or a uniform register (0xf60), TXQ on any binding and the mip count query, TXQ.B (0x370), TXD with any channel mask and .NODEP, and SUST.STRONG.GPU fenced with MEMBAR.GL on both sides. Assisted-by: Claude Opus 5.5 (debugging, implementation and drafting) Signed-off-by: duck912 <350528965+Duck912@users.noreply.github.com> Signed-off-by: Duck912 <350528965+Duck912@users.noreply.github.com>
Diffstat (limited to 'src/video_core/gpu_thread.cpp')
0 files changed, 0 insertions, 0 deletions