diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2009-03-02 04:08:09 -0500 |
---|---|---|
committer | Alex Deucher <alexdeucher@gmail.com> | 2009-03-02 04:08:09 -0500 |
commit | b7164ac4ad55e5d0fc474df8ae762b469b91ba30 (patch) | |
tree | 5c2914edcf594868e395cc3098d118a5d7fb7d95 /src/r6xx_accel.c | |
parent | fa98f424de739be2c6005b740a74bbf1ee968a8b (diff) |
R6xx/R7xx EXA: combine composite mask/non-mask VS
Also fix set_bool_const()
the CF bool consts are not contiguous by shader type
There are 96 boolean constants (32 each for PS, VS, GS) and
they are ordered as follows:
ps, vs, gs ... ps, vs, gs
Diffstat (limited to 'src/r6xx_accel.c')
-rw-r--r-- | src/r6xx_accel.c | 22 |
1 files changed, 3 insertions, 19 deletions
diff --git a/src/r6xx_accel.c b/src/r6xx_accel.c index aa2ab86b..114ccf50 100644 --- a/src/r6xx_accel.c +++ b/src/r6xx_accel.c @@ -433,26 +433,10 @@ set_alu_consts(ScrnInfoPtr pScrn, drmBufPtr ib, int offset, int count, float *co } void -set_bool_consts(ScrnInfoPtr pScrn, drmBufPtr ib, int offset, int count, uint32_t *const_buf) +set_bool_const(ScrnInfoPtr pScrn, drmBufPtr ib, int offset, uint32_t val) { - int i; - const int countreg = count * (SQ_BOOL_CONST_offset >> 2); - - PACK0(ib, SQ_BOOL_CONST + offset * SQ_BOOL_CONST_offset, countreg); - for (i = 0; i < countreg; i++) - E32(ib, const_buf[i]); - -} - -void -set_loop_consts(ScrnInfoPtr pScrn, drmBufPtr ib, int offset, int count, uint32_t *const_buf) -{ - int i; - const int countreg = count * (SQ_LOOP_CONST_offset >> 2); - - PACK0(ib, SQ_LOOP_CONST + offset * SQ_LOOP_CONST_offset, countreg); - for (i = 0; i < countreg; i++) - E32(ib, const_buf[i]); + /* bool order is: ps, vs, gs, ps, vs, gs, ... */ + EREG(ib, SQ_BOOL_CONST_0 + (offset << 2), val); } void |