summaryrefslogtreecommitdiff
path: root/src/atimach64.c
diff options
context:
space:
mode:
authorMarc Aurele La France <tsi@xfree86.org>2006-07-29 01:00:56 +0300
committerGeorge Sapountzis <gsap7@yahoo.gr>2006-07-29 01:00:56 +0300
commit7800407a2db4b7307192bf3b43fffb9c4748b9c0 (patch)
tree97c90ce49f10f520f1d76672fded9e31578d417d /src/atimach64.c
parent49b11c540d37152eee4907ab30353ede01e4fb56 (diff)
Bug #807: invalidate read-back cache.
Fix corruption when scaling 1-pixel wide pixmaps, in which case the first CPU read of the framebuffer will return stale data. This bug always manifests itself in mach64 EXA (to be committed soon), with this patch mach64 EXA passes rendercheck.
Diffstat (limited to 'src/atimach64.c')
-rw-r--r--src/atimach64.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/atimach64.c b/src/atimach64.c
index 166aaf0c..2cdec787 100644
--- a/src/atimach64.c
+++ b/src/atimach64.c
@@ -183,6 +183,7 @@ ATIMach64PreInit
if (pATI->Chip >= ATI_CHIP_264VTB)
{
+ pATIHW->mem_buf_cntl = inr(MEM_BUF_CNTL) | INVALIDATE_RB_CACHE;
pATIHW->mem_cntl = (pATI->LockData.mem_cntl &
~(CTL_MEM_LOWER_APER_ENDIAN | CTL_MEM_UPPER_APER_ENDIAN)) |
SetBits(CTL_MEM_APER_BYTE_ENDIAN, CTL_MEM_LOWER_APER_ENDIAN);
@@ -424,6 +425,7 @@ ATIMach64Save
if (pATI->Chip >= ATI_CHIP_264VTB)
{
+ pATIHW->mem_buf_cntl = inr(MEM_BUF_CNTL) | INVALIDATE_RB_CACHE;
pATIHW->mem_cntl = inr(MEM_CNTL);
pATIHW->mpp_config = inr(MPP_CONFIG);
pATIHW->mpp_strobe_seq = inr(MPP_STROBE_SEQ);
@@ -1057,6 +1059,7 @@ ATIMach64Set
if (pATI->Chip >= ATI_CHIP_264VTB)
{
+ outr(MEM_BUF_CNTL, pATIHW->mem_buf_cntl);
outr(MEM_CNTL, pATIHW->mem_cntl);
outr(MPP_CONFIG, pATIHW->mpp_config);
outr(MPP_STROBE_SEQ, pATIHW->mpp_strobe_seq);