diff options
-rw-r--r-- | src/drmmode_display.c | 2 | ||||
-rw-r--r-- | src/radeon_kms.c | 8 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/drmmode_display.c b/src/drmmode_display.c index c7bec59c..54b09730 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -785,6 +785,7 @@ drmmode_crtc_scanout_update(xf86CrtcPtr crtc, DisplayModePtr mode, radeon_scanout_do_update(crtc, scanout_id, screen->GetWindowPixmap(screen->root), *box); + radeon_cs_flush_indirect(scrn); radeon_bo_wait(drmmode_crtc->scanout[scanout_id].bo); } } @@ -3225,6 +3226,7 @@ Bool radeon_do_pageflip(ScrnInfoPtr scrn, ClientPtr client, radeon_scanout_do_update(crtc, scanout_id, new_front, extents); + radeon_cs_flush_indirect(crtc->scrn); drmmode_crtc_wait_pending_event(drmmode_crtc, pRADEONEnt->fd, drmmode_crtc->scanout_update_pending); diff --git a/src/radeon_kms.c b/src/radeon_kms.c index 7ff66bf3..8579aaf8 100644 --- a/src/radeon_kms.c +++ b/src/radeon_kms.c @@ -985,8 +985,6 @@ radeon_scanout_do_update(xf86CrtcPtr xf86_crtc, int scanout_id, FreeScratchGC(gc); } - radeon_cs_flush_indirect(scrn); - info->accel_state->force = force; return TRUE; @@ -1013,8 +1011,10 @@ radeon_scanout_update_handler(xf86CrtcPtr crtc, uint32_t frame, uint64_t usec, drmmode_crtc->dpms_mode == DPMSModeOn) { if (radeon_scanout_do_update(crtc, drmmode_crtc->scanout_id, screen->GetWindowPixmap(screen->root), - region->extents)) + region->extents)) { + radeon_cs_flush_indirect(crtc->scrn); RegionEmpty(region); + } } radeon_scanout_update_abort(crtc, event_data); @@ -1096,6 +1096,8 @@ radeon_scanout_flip(ScreenPtr pScreen, RADEONInfoPtr info, pScreen->GetWindowPixmap(pScreen->root), region->extents)) return; + + radeon_cs_flush_indirect(scrn); RegionEmpty(region); drm_queue_seq = radeon_drm_queue_alloc(xf86_crtc, |