summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/radeon.h18
-rw-r--r--src/radeon_dri.c16
2 files changed, 12 insertions, 22 deletions
diff --git a/src/radeon.h b/src/radeon.h
index 5bb005b9..8d0115e9 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -964,6 +964,16 @@ do { \
info->CPStarted = TRUE; \
} while (0)
+#define RADEONCP_RELEASE(pScrn, info) \
+do { \
+ if (info->CPInUse) { \
+ RADEON_PURGE_CACHE(); \
+ RADEON_WAIT_UNTIL_IDLE(); \
+ RADEONCPReleaseIndirect(pScrn); \
+ info->CPInUse = FALSE; \
+ } \
+} while (0)
+
#define RADEONCP_STOP(pScrn, info) \
do { \
int _ret; \
@@ -1128,14 +1138,6 @@ do { \
ADVANCE_RING(); \
} while (0)
-#define RADEON_FLUSH_CACHE() \
-do { \
- BEGIN_RING(2); \
- OUT_RING(CP_PACKET0(RADEON_RB3D_DSTCACHE_CTLSTAT, 0)); \
- OUT_RING(RADEON_RB3D_DC_FLUSH); \
- ADVANCE_RING(); \
-} while (0)
-
#define RADEON_PURGE_CACHE() \
do { \
BEGIN_RING(2); \
diff --git a/src/radeon_dri.c b/src/radeon_dri.c
index ee6192e9..7ebf958d 100644
--- a/src/radeon_dri.c
+++ b/src/radeon_dri.c
@@ -409,13 +409,7 @@ static void RADEONLeaveServer(ScreenPtr pScreen)
/* The CP is always running, but if we've generated any CP commands
* we must flush them to the kernel module now.
*/
- if (info->CPInUse) {
- RADEON_FLUSH_CACHE();
- RADEON_WAIT_UNTIL_IDLE();
- RADEONCPReleaseIndirect(pScrn);
-
- info->CPInUse = FALSE;
- }
+ RADEONCP_RELEASE(pScrn, info);
#ifdef USE_EXA
info->engineMode = EXA_ENGINEMODE_UNKNOWN;
@@ -1703,13 +1697,7 @@ void RADEONDRIStop(ScreenPtr pScreen)
/* If we've generated any CP commands, we must flush them to the
* kernel module now.
*/
- if (info->CPInUse) {
- RADEON_FLUSH_CACHE();
- RADEON_WAIT_UNTIL_IDLE();
- RADEONCPReleaseIndirect(pScrn);
-
- info->CPInUse = FALSE;
- }
+ RADEONCP_RELEASE(pScrn, info);
RADEONCP_STOP(pScrn, info);
}
info->directRenderingInited = FALSE;