summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlex Deucher <alex@cube.(none)>2008-04-27 21:08:00 -0400
committerAlex Deucher <alex@cube.(none)>2008-04-27 21:08:00 -0400
commit211e0041c7fc2df494b77428553943a2b526ee4e (patch)
tree9d6a3a45755b3361930558b78fb395209c9895f4 /src
parent656b06bdde129ca4fc370f5a2cf7311c9179b0ff (diff)
IGP: fix EXA composite corruption
Diffstat (limited to 'src')
-rw-r--r--src/radeon_commonfuncs.c8
-rw-r--r--src/radeon_exa_render.c8
2 files changed, 10 insertions, 6 deletions
diff --git a/src/radeon_commonfuncs.c b/src/radeon_commonfuncs.c
index e8ddff86..e504979a 100644
--- a/src/radeon_commonfuncs.c
+++ b/src/radeon_commonfuncs.c
@@ -167,15 +167,15 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn)
if (info->has_tcl)
BEGIN_ACCEL(15);
else
- BEGIN_ACCEL(8);
+ BEGIN_ACCEL(9);
OUT_ACCEL_REG(R300_VAP_VTX_STATE_CNTL, 0);
OUT_ACCEL_REG(R300_VAP_PVS_STATE_FLUSH_REG, 0);
- if (info->has_tcl) {
+ if (info->has_tcl)
OUT_ACCEL_REG(R300_VAP_CNTL_STATUS, 0);
- OUT_ACCEL_REG(R300_VAP_CNTL, vap_cntl);
- }else
+ else
OUT_ACCEL_REG(R300_VAP_CNTL_STATUS, R300_PVS_BYPASS);
+ OUT_ACCEL_REG(R300_VAP_CNTL, vap_cntl);
OUT_ACCEL_REG(R300_VAP_PVS_STATE_FLUSH_REG, 0);
OUT_ACCEL_REG(R300_VAP_VTE_CNTL, R300_VTX_XY_FMT | R300_VTX_Z_FMT);
OUT_ACCEL_REG(R300_VAP_PSC_SGN_NORM_CNTL, 0);
diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c
index 138216fc..ec3c06df 100644
--- a/src/radeon_exa_render.c
+++ b/src/radeon_exa_render.c
@@ -2108,8 +2108,12 @@ static void FUNC_NAME(RadeonDoneComposite)(PixmapPtr pDst)
ENTER_DRAW(0);
- if (IS_R500_3D) {
- /* r500 shows corruption on small things like glyphs without a 3D idle */
+ if (IS_R500_3D || ((info->ChipFamily == CHIP_FAMILY_RS400) ||
+ (info->ChipFamily == CHIP_FAMILY_RS690) ||
+ (info->ChipFamily == CHIP_FAMILY_RS740))) {
+ /* r500 shows corruption on small things like glyphs without a 3D idle
+ * IGP shows more substantial corruption
+ */
BEGIN_ACCEL(1);
OUT_ACCEL_REG(RADEON_WAIT_UNTIL, RADEON_WAIT_3D_IDLECLEAN);
FINISH_ACCEL();