diff options
Diffstat (limited to 'src/radeon.h')
-rw-r--r-- | src/radeon.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/radeon.h b/src/radeon.h index 605b0578..227ffc6d 100644 --- a/src/radeon.h +++ b/src/radeon.h @@ -1292,6 +1292,41 @@ do { \ #endif /* XF86DRI */ +#if defined(XF86DRI) && defined(USE_EXA) +#define RADEON_SWITCH_TO_2D() \ +do { \ + uint32_t flush = 0; \ + switch (info->accel_state->engineMode) { \ + case EXA_ENGINEMODE_UNKNOWN: \ + case EXA_ENGINEMODE_3D: \ + flush = 1; \ + case EXA_ENGINEMODE_2D: \ + break; \ + } \ + if (flush) \ + RADEONCPFlushIndirect(pScrn, 1); \ + info->accel_state->engineMode = EXA_ENGINEMODE_2D; \ +} while (0); + +#define RADEON_SWITCH_TO_3D() \ +do { \ + uint32_t flush = 0; \ + switch (info->accel_state->engineMode) { \ + case EXA_ENGINEMODE_UNKNOWN: \ + case EXA_ENGINEMODE_2D: \ + flush = 1; \ + case EXA_ENGINEMODE_3D: \ + break; \ + } \ + if (flush) \ + RADEONCPFlushIndirect(pScrn, 1); \ + info->accel_state->engineMode = EXA_ENGINEMODE_3D; \ +} while (0); +#else +#define RADEON_SWITCH_TO_2D() +#define RADEON_SWITCH_TO_3D() +#endif + static __inline__ void RADEON_MARK_SYNC(RADEONInfoPtr info, ScrnInfoPtr pScrn) { #ifdef USE_EXA |