diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2011-11-21 11:35:40 +1100 |
---|---|---|
committer | Alex Deucher <alexdeucher@gmail.com> | 2011-11-21 11:48:40 -0500 |
commit | d669c34f140c000f88c4b4e464e44e6c8694f581 (patch) | |
tree | fbcd881f46fb7c304bc95e11f3e8e2e055375fb2 /src/evergreen_exa.c | |
parent | 422bdd4fe6cb728e1dd08a56f6ee2d0f009cbfcb (diff) |
ddx/evergreen: Fix endian of ALU constants
The constants are written directly into a buffer object shared with the
card and we "forget" to swap them. This patch fixes it by doing the swap
in evergreen_set_alu_consts() in-place (ie, it modifies the buffer),
which should be fine with the way we use it in the ddx.
This makes everything work fine on my caicos card on a G5 including some
quik tests with Xv, gnome3 shell, etc...
Thanks a lot to Jerome Glisse for holding my hand through debugging that
(and finding the actual bug).
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Diffstat (limited to 'src/evergreen_exa.c')
-rw-r--r-- | src/evergreen_exa.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/evergreen_exa.c b/src/evergreen_exa.c index 6becbb32..603d8546 100644 --- a/src/evergreen_exa.c +++ b/src/evergreen_exa.c @@ -172,6 +172,7 @@ EVERGREENPrepareSolid(PixmapPtr pPix, int alu, Pixel pm, Pixel fg) ps_alu_consts = radeon_vbo_space(pScrn, &accel_state->cbuf, 256); ps_const_conf.bo = accel_state->cbuf.vb_bo; ps_const_conf.const_addr = accel_state->cbuf.vb_mc_addr + accel_state->cbuf.vb_offset; + ps_const_conf.cpu_ptr = (uint32_t *)(char *)ps_alu_consts; if (accel_state->dst_obj.bpp == 16) { r = (fg >> 11) & 0x1f; g = (fg >> 5) & 0x3f; @@ -1320,6 +1321,7 @@ static Bool EVERGREENPrepareComposite(int op, PicturePtr pSrcPicture, vs_const_conf.bo = accel_state->cbuf.vb_bo; vs_const_conf.const_addr = accel_state->cbuf.vb_mc_addr + accel_state->cbuf.vb_offset; + vs_const_conf.cpu_ptr = (uint32_t *)(char *)cbuf; EVERGREENXFormSetup(pSrcPicture, pSrc, 0, cbuf); if (pMask) EVERGREENXFormSetup(pMaskPicture, pMask, 1, cbuf); |