diff options
author | Keith Packard <keithp@keithp.com> | 2014-07-24 11:02:35 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2014-09-12 13:51:16 -0700 |
commit | 876185cceeb9589ae395e0c2eedd163129f1e51b (patch) | |
tree | 269b9fe9ffa7d2548d7c26667bf943727d36605a | |
parent | 616dea2c67847101fd43b5d89b556b3702c7f0bb (diff) |
Add intel_flush to abstract flushing pending acceleration operations
intel_flush flushes any pending acceleration operations to the
hardware, just like intel_uxa_batch_submit does today except that it is
not uxa-specific.
Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
-rw-r--r-- | src/uxa/intel.h | 3 | ||||
-rw-r--r-- | src/uxa/intel_display.c | 9 | ||||
-rw-r--r-- | src/uxa/intel_driver.c | 14 |
3 files changed, 15 insertions, 11 deletions
diff --git a/src/uxa/intel.h b/src/uxa/intel.h index 3dddc645..28f11b6e 100644 --- a/src/uxa/intel.h +++ b/src/uxa/intel.h @@ -536,4 +536,7 @@ intel_get_pixmap_bo(PixmapPtr pixmap); void intel_set_pixmap_bo(PixmapPtr pixmap, dri_bo *bo); +void +intel_flush(intel_screen_private *intel); + #endif /* _I830_H_ */ diff --git a/src/uxa/intel_display.c b/src/uxa/intel_display.c index afff357d..46aafe39 100644 --- a/src/uxa/intel_display.c +++ b/src/uxa/intel_display.c @@ -439,8 +439,7 @@ intel_crtc_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode, crtc->y = y; crtc->rotation = rotation; - intel_glamor_flush(intel); - intel_batch_submit(crtc->scrn); + intel_flush(intel); mode_to_kmode(crtc->scrn, &intel_crtc->kmode, mode); ret = intel_crtc_apply(crtc); @@ -1573,8 +1572,7 @@ intel_xf86crtc_resize(ScrnInfoPtr scrn, int width, int height) if (scrn->virtualX == width && scrn->virtualY == height) return TRUE; - intel_glamor_flush(intel); - intel_batch_submit(scrn); + intel_flush(intel); old_width = scrn->virtualX; old_height = scrn->virtualY; @@ -1688,8 +1686,7 @@ intel_do_pageflip(intel_screen_private *intel, goto error_out; drm_intel_bo_disable_reuse(new_front); - intel_glamor_flush(intel); - intel_batch_submit(scrn); + intel_flush(intel); mode->pageflip_data = pageflip_data; mode->pageflip_handler = pageflip_handler; diff --git a/src/uxa/intel_driver.c b/src/uxa/intel_driver.c index c99cfeb6..30bfd7b1 100644 --- a/src/uxa/intel_driver.c +++ b/src/uxa/intel_driver.c @@ -181,6 +181,12 @@ intel_get_pixmap_bo(PixmapPtr pixmap) return intel_uxa_get_pixmap_bo(pixmap); } +void +intel_flush(intel_screen_private *intel) +{ + intel_batch_submit(intel->scrn); +} + static void PreInitCleanup(ScrnInfoPtr scrn) { if (!scrn || !scrn->driverPrivate) @@ -647,7 +653,7 @@ redisplay_dirty(ScreenPtr screen, PixmapDirtyUpdatePtr dirty) PixmapSyncDirtyHelper(dirty, &pixregion); RegionUninit(&pixregion); - intel_batch_submit(scrn); + intel_flush(intel); if (!intel->has_prime_vmap_flush) { drm_intel_bo *bo = intel_uxa_get_pixmap_bo(dirty->slave_dst->master_pixmap); was_blocked = xf86BlockSIGIO(); @@ -732,10 +738,8 @@ intel_flush_callback(CallbackListPtr *list, pointer user_data, pointer call_data) { ScrnInfoPtr scrn = user_data; - if (scrn->vtSema) { - intel_batch_submit(scrn); - intel_glamor_flush(intel_get_screen_private(scrn)); - } + if (scrn->vtSema) + intel_flush(intel_get_screen_private(scrn)); } #if HAVE_UDEV |