diff options
author | Alex Deucher <alex@cube.(none)> | 2008-04-27 21:08:00 -0400 |
---|---|---|
committer | Alex Deucher <alex@cube.(none)> | 2008-04-27 21:08:00 -0400 |
commit | 211e0041c7fc2df494b77428553943a2b526ee4e (patch) | |
tree | 9d6a3a45755b3361930558b78fb395209c9895f4 /src | |
parent | 656b06bdde129ca4fc370f5a2cf7311c9179b0ff (diff) |
IGP: fix EXA composite corruption
Diffstat (limited to 'src')
-rw-r--r-- | src/radeon_commonfuncs.c | 8 | ||||
-rw-r--r-- | src/radeon_exa_render.c | 8 |
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(); |