From efd9a85ce2eb699c05a38794b513b4ec3f36a2fc Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Tue, 28 Oct 2025 14:17:57 -0500 Subject: [PATCH] assembler/fs: TEX: swap a/rgb order in write mask --- drm/texture_cube.fs.asm | 2 +- regs/assembler/fs/tex_validator.py | 14 +++++++------- regs/us_disassemble2.py | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/drm/texture_cube.fs.asm b/drm/texture_cube.fs.asm index f7755d5..4ea62a6 100644 --- a/drm/texture_cube.fs.asm +++ b/drm/texture_cube.fs.asm @@ -1,5 +1,5 @@ TEX TEX_SEM_WAIT TEX_SEM_ACQUIRE - temp[0].argb = LD tex[0].rgba temp[0].rgaa ; + temp[0].rgba = LD tex[0].rgba temp[0].rgaa ; OUT TEX_SEM_WAIT src0.a = temp[0], src0.rgb = temp[0] : diff --git a/regs/assembler/fs/tex_validator.py b/regs/assembler/fs/tex_validator.py index f1e4268..8c929d0 100644 --- a/regs/assembler/fs/tex_validator.py +++ b/regs/assembler/fs/tex_validator.py @@ -64,13 +64,13 @@ def validate_mask_swizzle(token) -> tuple[AlphaMask, RGBMask]: (b"rb" , (AlphaMask.NONE, RGBMask.RB)), (b"gb" , (AlphaMask.NONE, RGBMask.GB)), (b"rgb" , (AlphaMask.NONE, RGBMask.RGB)), - (b"ar" , (AlphaMask.A, RGBMask.R)), - (b"ag" , (AlphaMask.A, RGBMask.G)), - (b"arg" , (AlphaMask.A, RGBMask.RG)), - (b"ab" , (AlphaMask.A, RGBMask.B)), - (b"arb" , (AlphaMask.A, RGBMask.RB)), - (b"agb" , (AlphaMask.A, RGBMask.GB)), - (b"argb" , (AlphaMask.A, RGBMask.RGB)), + (b"ra" , (AlphaMask.A, RGBMask.R)), + (b"ga" , (AlphaMask.A, RGBMask.G)), + (b"rga" , (AlphaMask.A, RGBMask.RG)), + (b"ba" , (AlphaMask.A, RGBMask.B)), + (b"rba" , (AlphaMask.A, RGBMask.RB)), + (b"gba" , (AlphaMask.A, RGBMask.GB)), + (b"rgba" , (AlphaMask.A, RGBMask.RGB)), ]) if token.lexeme not in argb_masks: raise ValidatorError("invalid destination mask", token) diff --git a/regs/us_disassemble2.py b/regs/us_disassemble2.py index 7404d3e..1e5da7f 100644 --- a/regs/us_disassemble2.py +++ b/regs/us_disassemble2.py @@ -420,7 +420,7 @@ def disassemble_tex_dest(code): a_wmask, a_wmask_str, _ = US_CMN_INST._ALPHA_WMASK(code) wmask_bool = rgb_wmask != 0 or a_wmask != 0 - rgba_wmask = (a_wmask_str if a_wmask else "") + (rgb_wmask_str if rgb_wmask else "") + rgba_wmask = (rgb_wmask_str if rgb_wmask else "") + (a_wmask_str if a_wmask else "") temp_str = f"temp[{dst_addr}].{rgba_wmask.lower().ljust(4)} = " if wmask_bool else ""