diff options
author | Jesse Barnes <jbarnes@hobbes.virtuousgeek.org> | 2008-02-05 11:36:24 -0800 |
---|---|---|
committer | Jesse Barnes <jbarnes@hobbes.virtuousgeek.org> | 2008-02-05 11:36:24 -0800 |
commit | cabed67b6a0e4dd408eeb8d2083269100a65933c (patch) | |
tree | 5782efaccf6dd73b2bfbc175f882c4459e893ca6 | |
parent | 332587081fb05d284864aabe608dd9988eee3d44 (diff) |
Program FBC fence offset register
Just a partial fix for some of the FBC issues people have been seeing. The
other half is to disable FBC if both pipes are running.
-rw-r--r-- | src/i830.h | 1 | ||||
-rw-r--r-- | src/i830_display.c | 1 | ||||
-rw-r--r-- | src/i830_driver.c | 2 |
3 files changed, 4 insertions, 0 deletions
@@ -616,6 +616,7 @@ typedef struct _I830Rec { CARD32 saveFBC_LL_BASE; CARD32 saveFBC_CONTROL2; CARD32 saveFBC_CONTROL; + CARD32 saveFBC_FENCE_OFF; enum last_3d *last_3d; diff --git a/src/i830_display.c b/src/i830_display.c index a4916d0f..274a07d2 100644 --- a/src/i830_display.c +++ b/src/i830_display.c @@ -612,6 +612,7 @@ i830_enable_fb_compression_8xx(xf86CrtcPtr crtc) OUTREG(FBC_LL_BASE, pI830->compressed_ll_buffer->bus_addr + 6); OUTREG(FBC_CONTROL2, FBC_CTL_FENCE_DBL | FBC_CTL_IDLE_FULL | FBC_CTL_CPU_FENCE | plane); + OUTREG(FBC_FENCE_OFF, crtc->y); /* Zero buffers */ memset(pI830->FbBase + pI830->compressed_front_buffer->offset, 0, diff --git a/src/i830_driver.c b/src/i830_driver.c index a3c64de5..01418ab8 100644 --- a/src/i830_driver.c +++ b/src/i830_driver.c @@ -1932,6 +1932,7 @@ SaveHWState(ScrnInfoPtr pScrn) pI830->saveFBC_LL_BASE = INREG(FBC_LL_BASE); pI830->saveFBC_CONTROL2 = INREG(FBC_CONTROL2); pI830->saveFBC_CONTROL = INREG(FBC_CONTROL); + pI830->saveFBC_FENCE_OFF = INREG(FBC_FENCE_OFF); } /* Save video mode information for native mode-setting. */ @@ -2212,6 +2213,7 @@ RestoreHWState(ScrnInfoPtr pScrn) if (pI830->fb_compression) { OUTREG(FBC_CFB_BASE, pI830->saveFBC_CFB_BASE); OUTREG(FBC_LL_BASE, pI830->saveFBC_LL_BASE); + OUTREG(FBC_FENCE_OFF, pI830->saveFBC_FENCE_OFF); OUTREG(FBC_CONTROL2, pI830->saveFBC_CONTROL2); OUTREG(FBC_CONTROL, pI830->saveFBC_CONTROL); } |