Commit Graph

1 Commits

Author SHA1 Message Date
Dean Galvin b556b87db3 fix(recompiler): select v_fma_mix source precision by OP_SEL_HI and the half by OP_SEL
v_fma_mix_f32 and v_fma_mixlo/hi_f16 read a source as f16 when its OP_SEL_HI bit is set, with
OP_SEL choosing the high half; otherwise the source is an f32. readMixF32 had the two bits swapped,
so a low-half f16 source (op_sel_hi set, op_sel clear) was read as the whole register's f32 bits.
PPSA21564's material shaders lerp packed f16 colours this way: red and blue (the low halves)
collapsed to near zero while green and alpha survived, giving the green cast on lit surfaces.

agc_driver_mix_precision_tests runs the mix encodings on the GPU against a model of the guest
instructions.
2026-10-01 16:21:48 +13:00