aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/buffer_cache/buffer_cache.cpp
diff options
context:
space:
mode:
authorPaulo Rossatto <alcinopolis@pm.ms.gov.br>2026-11-01 06:16:35 -0400
committerkraibse <33869366+kraibse@users.noreply.github.com>2026-11-01 21:01:51 +0100
commitd9e4ac8360b3b63b7ddba05757c87e867f9163fa (patch)
tree800630faf0742b96189e9e1681eedb4758fbe452 /src/video_core/buffer_cache/buffer_cache.cpp
parenteb99da60729bcc9fa4d3a03607a719f7e220ad62 (diff)
nx2/ampere: implement ISBERD (0x923) and accept ISBEWR (0x927)
Mario Kart World submits native programs that use ISBERD/ISBEWR (stage buffer entry read/write, Ampere/Turing era). Both fell into the default branch and the whole program was rejected, so the objects and effects those programs draw popped in and out of the scene every frame. ISBERD has a direct Maxwell counterpart (maxwell.inc: "1110 1111 1101 0---"), and the Maxwell frontend already implements the full semantics (patches, primitives, indexed attributes and the per-lane skewed global read), so lower it there instead of failing: Ampere fields (Mesa NAK sm70_encode.rs, OpIsberd): dst 16-23, offset 24-31, imm 40-55, mem_type 74-75, access 76-77, skew 78, output 79. ISBEWR has no Maxwell equivalent. Rejecting the program makes the object disappear, so the write is dropped instead: the value written is a stage output, and losing it only leaves that one output stale. Measured on Mario Kart World (Windows 11, MSVC 19.44, AMD RX 5700): rejected native programs per session drop from 11 to 2, and the remaining two are the unrelated \"Unsupported native graphics shader stage 3/4\" path. Objects that used to flicker now render consistently.
Diffstat (limited to 'src/video_core/buffer_cache/buffer_cache.cpp')
0 files changed, 0 insertions, 0 deletions