diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2010-09-19 10:05:13 -0400 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2010-09-21 06:19:59 -0400 |
commit | c7f9f9a8b89bb4d53edc030f5b61ae11d6859721 (patch) | |
tree | 1cc879aa1b228a0fd5569f56776ad12f811cfd68 /drivers/gpu/drm/i915/intel_display.c | |
parent | e070868ef2101ce548d4fbb25edfd301e59fb719 (diff) |
drm/i915: Use ring->flush() instead of MI_FLUSH
Use the ring abstraction to hide the details of having choose the
appropriate flushing method.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index c3f0400963de..0505ddb76a10 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -5056,24 +5056,23 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc, | |||
5056 | atomic_inc(&obj_priv->pending_flip); | 5056 | atomic_inc(&obj_priv->pending_flip); |
5057 | work->pending_flip_obj = obj; | 5057 | work->pending_flip_obj = obj; |
5058 | 5058 | ||
5059 | if (was_dirty || IS_GEN3(dev) || IS_GEN2(dev)) { | 5059 | /* Schedule the pipelined flush */ |
5060 | BEGIN_LP_RING(2); | 5060 | if (was_dirty) |
5061 | if (IS_GEN3(dev) || IS_GEN2(dev)) { | 5061 | i915_gem_flush_ring(dev, obj_priv->ring, 0, was_dirty); |
5062 | u32 flip_mask; | ||
5063 | 5062 | ||
5064 | /* Can't queue multiple flips, so wait for the previous | 5063 | if (IS_GEN3(dev) || IS_GEN2(dev)) { |
5065 | * one to finish before executing the next. | 5064 | u32 flip_mask; |
5066 | */ | ||
5067 | 5065 | ||
5068 | if (intel_crtc->plane) | 5066 | /* Can't queue multiple flips, so wait for the previous |
5069 | flip_mask = MI_WAIT_FOR_PLANE_B_FLIP; | 5067 | * one to finish before executing the next. |
5070 | else | 5068 | */ |
5071 | flip_mask = MI_WAIT_FOR_PLANE_A_FLIP; | 5069 | BEGIN_LP_RING(2); |
5072 | 5070 | if (intel_crtc->plane) | |
5073 | OUT_RING(MI_WAIT_FOR_EVENT | flip_mask); | 5071 | flip_mask = MI_WAIT_FOR_PLANE_B_FLIP; |
5074 | } else | 5072 | else |
5075 | OUT_RING(MI_NOOP); | 5073 | flip_mask = MI_WAIT_FOR_PLANE_A_FLIP; |
5076 | OUT_RING(MI_FLUSH); | 5074 | OUT_RING(MI_WAIT_FOR_EVENT | flip_mask); |
5075 | OUT_RING(MI_NOOP); | ||
5077 | ADVANCE_LP_RING(); | 5076 | ADVANCE_LP_RING(); |
5078 | } | 5077 | } |
5079 | 5078 | ||