diff options
author | Alex Deucher <alex@samba.(none)> | 2008-03-13 18:38:26 -0400 |
---|---|---|
committer | Alex Deucher <alex@samba.(none)> | 2008-03-13 18:38:26 -0400 |
commit | 081fc9e892fa3d2e07b7db65b2e2719646255463 (patch) | |
tree | 6c020f175c9a0405277e9b129b7f6f867890b330 | |
parent | 2bf0236c03538ace3ce6d0e68f0829fc47d1385b (diff) |
R3xx: more mask work
-rw-r--r-- | src/radeon_exa_render.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c index 6cbe0bb3..afc63606 100644 --- a/src/radeon_exa_render.c +++ b/src/radeon_exa_render.c @@ -1279,7 +1279,10 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, break; } - BEGIN_ACCEL(17); + if (pMask) + BEGIN_ACCEL(18); + else + BEGIN_ACCEL(17); OUT_ACCEL_REG(R300_RS_COUNT, ((2 << R300_RS_COUNT_IT_COUNT_SHIFT) | R300_RS_COUNT_HIRES_EN)); @@ -1331,10 +1334,17 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, R300_TEX_DST_ADDR(0) | R300_TEX_ID(0) | R300_TEX_INST(R300_TEX_INST_LD))); + if (pMask) { + OUT_ACCEL_REG(R300_US_TEX_INST_1, + (R300_TEX_SRC_ADDR(1) | + R300_TEX_DST_ADDR(1) | + R300_TEX_ID(1) | + R300_TEX_INST(R300_TEX_INST_LD))); + } OUT_ACCEL_REG(R300_US_ALU_RGB_ADDR_0, (R300_ALU_RGB_ADDR0(0) | - R300_ALU_RGB_ADDR1(0) | + R300_ALU_RGB_ADDR1(1) | R300_ALU_RGB_ADDR2(0) | R300_ALU_RGB_ADDRD(0) | R300_ALU_RGB_WMASK((R300_ALU_RGB_MASK_R | @@ -1355,7 +1365,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, R300_ALU_RGB_OMOD(R300_ALU_RGB_OMOD_NONE))); OUT_ACCEL_REG(R300_US_ALU_ALPHA_ADDR_0, (R300_ALU_ALPHA_ADDR0(0) | - R300_ALU_ALPHA_ADDR1(0) | + R300_ALU_ALPHA_ADDR1(1) | R300_ALU_ALPHA_ADDR2(0) | R300_ALU_ALPHA_ADDRD(0) | R300_ALU_ALPHA_WMASK(R300_ALU_ALPHA_MASK_A) | |