[PATCH 12/22] drm/i915: Kill the pending_flip counter manipulations
ville.syrjala at linux.intel.com
ville.syrjala at linux.intel.com
Mon Nov 12 09:32:50 PST 2012
From: Ville Syrjälä <ville.syrjala at linux.intel.com>
The pending_flip counter is probably going to be remove entirely,
along with i915_gem_execbuffer_wait_for_flips() so don't even try to
use it.
Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
---
drivers/gpu/drm/i915/intel_atomic.c | 74 +----------------------------------
1 files changed, 2 insertions(+), 72 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_atomic.c b/drivers/gpu/drm/i915/intel_atomic.c
index 1fce359..ac7fe88 100644
--- a/drivers/gpu/drm/i915/intel_atomic.c
+++ b/drivers/gpu/drm/i915/intel_atomic.c
@@ -1536,45 +1536,9 @@ static void atomic_pipe_commit(struct drm_device *dev,
struct intel_atomic_state *state,
int pipe);
-static int apply_nonblocking(struct drm_device *dev, struct intel_atomic_state *s)
+static void apply_nonblocking(struct drm_device *dev, struct intel_atomic_state *s)
{
struct intel_crtc *intel_crtc;
- int i;
-
- for (i = 0; i < dev->mode_config.num_crtc; i++) {
- struct intel_crtc_state *st = &s->crtc[i];
- struct intel_crtc *intel_crtc = to_intel_crtc(st->crtc);
- struct drm_i915_gem_object *obj;
-
- if (!st->old.fb)
- continue;
-
- obj = to_intel_framebuffer(st->old.fb)->obj;
-
- /* Only one bit per plane in pending_flips */
- if (atomic_read(&obj->pending_flip) & (1 << intel_crtc->plane))
- return -EBUSY;
- }
-
- for (i = 0; i < dev->mode_config.num_plane; i++) {
- struct intel_plane_state *st = &s->plane[i];
- struct intel_plane *intel_plane = to_intel_plane(st->plane);
- struct drm_i915_gem_object *obj;
-
- if (!st->old.fb)
- continue;
-
- obj = to_intel_framebuffer(st->old.fb)->obj;
-
- if (!st->old.fb)
- continue;
-
- obj = to_intel_framebuffer(st->old.fb)->obj;
-
- /* Only one bit per plane in pending_flips */
- if (atomic_read(&obj->pending_flip) & (1 << (16 + intel_plane->pipe)))
- return -EBUSY;
- }
list_for_each_entry(intel_crtc, &dev->mode_config.crtc_list, base.head)
atomic_pipe_commit(dev, s, intel_crtc->pipe);
@@ -1582,8 +1546,6 @@ static int apply_nonblocking(struct drm_device *dev, struct intel_atomic_state *
/* don't restore the old state in end() */
s->dirty = false;
s->restore_state = false;
-
- return 0;
}
static int alloc_flip_data(struct drm_device *dev, struct intel_atomic_state *s)
@@ -1695,12 +1657,7 @@ static int intel_atomic_commit(struct drm_device *dev, void *state)
/* try to apply in a non blocking manner */
if (s->flags & DRM_MODE_ATOMIC_NONBLOCK) {
- ret = apply_nonblocking(dev, s);
- if (ret) {
- unpin_cursors(dev, s);
- unpin_fbs(dev, s);
- return ret;
- }
+ apply_nonblocking(dev, s);
} else {
/* apply in a blocking manner */
ret = apply_config(dev, s);
@@ -1823,7 +1780,6 @@ static void intel_flip_complete(struct drm_flip *flip)
struct intel_flip *intel_flip =
container_of(flip, struct intel_flip, base);
struct drm_device *dev = intel_flip->crtc->dev;
- struct drm_i915_private *dev_priv = dev->dev_private;
struct drm_crtc *crtc = intel_flip->crtc;
struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
int pipe = intel_crtc->pipe;
@@ -1841,18 +1797,6 @@ static void intel_flip_complete(struct drm_flip *flip)
if (intel_flip->vblank_ref)
drm_vblank_put(dev, pipe);
-
- /* Possibly allow rendering to old_bo again */
- if (intel_flip->old_bo) {
- if (intel_flip->plane) {
- struct intel_plane *intel_plane = to_intel_plane(intel_flip->plane);
- atomic_clear_mask(1 << (16 + intel_plane->pipe), &intel_flip->old_bo->pending_flip.counter);
- } else
- atomic_clear_mask(1 << intel_crtc->plane, &intel_flip->old_bo->pending_flip.counter);
-
- if (atomic_read(&intel_flip->old_bo->pending_flip) == 0)
- wake_up(&dev_priv->pending_flip_queue);
- }
}
static void intel_flip_finish(struct drm_flip *flip)
@@ -2193,13 +2137,6 @@ static void atomic_pipe_commit(struct drm_device *dev,
mutex_lock(&dev->struct_mutex);
drm_gem_object_reference(&intel_flip->old_bo->base);
mutex_unlock(&dev->struct_mutex);
-
- /*
- * Block clients from rendering to the new back buffer until
- * the flip occurs and the object is no longer visible.
- */
- atomic_set_mask(1 << intel_crtc->plane,
- &intel_flip->old_bo->pending_flip.counter);
}
list_add_tail(&intel_flip->base.list, &flips);
@@ -2244,13 +2181,6 @@ static void atomic_pipe_commit(struct drm_device *dev,
mutex_lock(&dev->struct_mutex);
drm_gem_object_reference(&intel_flip->old_bo->base);
mutex_unlock(&dev->struct_mutex);
-
- /*
- * Block clients from rendering to the new back buffer until
- * the flip occurs and the object is no longer visible.
- */
- atomic_set_mask(1 << (16 + intel_plane->pipe),
- &intel_flip->old_bo->pending_flip.counter);
}
list_add_tail(&intel_flip->base.list, &flips);
--
1.7.8.6
More information about the dri-devel
mailing list