diff options
| author | Paulo Rossatto <alcinopolis@pm.ms.gov.br> | 2026-11-01 06:16:35 -0400 |
|---|---|---|
| committer | kraibse <33869366+kraibse@users.noreply.github.com> | 2026-11-01 21:01:51 +0100 |
| commit | d9e4ac8360b3b63b7ddba05757c87e867f9163fa (patch) | |
| tree | 800630faf0742b96189e9e1681eedb4758fbe452 /src/video_core/buffer_cache | |
| parent | eb99da60729bcc9fa4d3a03607a719f7e220ad62 (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')
0 files changed, 0 insertions, 0 deletions
