aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/texture_cache/texture_cache.h
diff options
context:
space:
mode:
authorvibecodekun <328927837+vibecodekun@users.noreply.github.com>2026-10-31 00:08:49 -0400
committervibecodekun <328927837+vibecodekun@users.noreply.github.com>2026-10-31 00:08:49 -0400
commit38230873a4a59ad9c05651e95d2d76e0cc575228 (patch)
treea488def8aad5eed4de213e484b24cfe3895624c4 /src/video_core/texture_cache/texture_cache.h
parentb40ad217ab829226841cb71f6e4c5cb05977a225 (diff)
shader_recompiler: fold max(x, -x) of merged predicate masks
Selecting the Special Cup in Mario Kart World lost the Vulkan device on NVIDIA (RTX 3060, driver 621.01). One of its particle vertex shaders takes the abs of a predicate mask as max(x, -x), where the mask was merged from predicated moves: Phi(1 - s, -s) with s = Select(c, 0, 1). FoldSMax32 only folded selects of two constants, so this max reached the driver, and the draw faulted on an invalid instruction pointer. Track the values a mask can take through selects, negations, +/-1 and phis, and fold max(x, -x) to x & 1 when they are only -1, 0 and 1. Assisted-by: Claude Opus 5.5 (debugging, implementation, message draft)
Diffstat (limited to 'src/video_core/texture_cache/texture_cache.h')
0 files changed, 0 insertions, 0 deletions