summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2014-07-24 11:02:35 -0700
committerKeith Packard <keithp@keithp.com>2014-09-12 13:51:16 -0700
commit876185cceeb9589ae395e0c2eedd163129f1e51b (patch)
tree269b9fe9ffa7d2548d7c26667bf943727d36605a
parent616dea2c67847101fd43b5d89b556b3702c7f0bb (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.h3
-rw-r--r--src/uxa/intel_display.c9
-rw-r--r--src/uxa/intel_driver.c14
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