diff --git a/src/radeon.h b/src/radeon.h index 902d1c0..86cee4b 100644 --- a/src/radeon.h +++ b/src/radeon.h @@ -1318,8 +1318,10 @@ do { \ case EXA_ENGINEMODE_3D: \ break; \ } \ - if (flush && info->directRenderingEnabled) \ + if (flush && info->directRenderingEnabled) { \ RADEONCPFlushIndirect(pScrn, 1); \ + RADEONInit3DEngine(pScrn); \ + } \ info->accel_state->engineMode = EXA_ENGINEMODE_3D; \ } while (0); #else diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c index c75c6a5..b797200 100644 --- a/src/radeon_exa_render.c +++ b/src/radeon_exa_render.c @@ -558,9 +558,6 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op, RADEON_SWITCH_TO_3D(); - if (!info->accel_state->XInited3D) - RADEONInit3DEngine(pScrn); - if (!FUNC_NAME(R100TextureSetup)(pSrcPicture, pSrc, 0)) return FALSE; pp_cntl = RADEON_TEX_0_ENABLE | RADEON_TEX_BLEND_0_ENABLE; @@ -859,9 +856,6 @@ static Bool FUNC_NAME(R200PrepareComposite)(int op, PicturePtr pSrcPicture, RADEON_SWITCH_TO_3D(); - if (!info->accel_state->XInited3D) - RADEONInit3DEngine(pScrn); - if (!FUNC_NAME(R200TextureSetup)(pSrcPicture, pSrc, 0)) return FALSE; pp_cntl = RADEON_TEX_0_ENABLE | RADEON_TEX_BLEND_0_ENABLE; @@ -1223,9 +1217,6 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, RADEON_SWITCH_TO_3D(); - if (!info->accel_state->XInited3D) - RADEONInit3DEngine(pScrn); - if (!FUNC_NAME(R300TextureSetup)(pSrcPicture, pSrc, 0)) return FALSE; txenable = R300_TEX_0_ENABLE; diff --git a/src/radeon_textured_videofuncs.c b/src/radeon_textured_videofuncs.c index 7a4ffc2..63434c6 100644 --- a/src/radeon_textured_videofuncs.c +++ b/src/radeon_textured_videofuncs.c @@ -142,10 +142,10 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv RADEON_WAIT_3D_IDLECLEAN | RADEON_WAIT_DMA_GUI_IDLE); FINISH_ACCEL(); - } - if (!info->accel_state->XInited3D) - RADEONInit3DEngine(pScrn); + if (!info->accel_state->XInited3D) + RADEONInit3DEngine(pScrn); + } if (pPriv->bicubic_enabled) vtx_count = 6;