On Wed, Sep 24, 2014 at 02:20:30PM -0300, Gustavo Padovan wrote: > From: Gustavo Padovan <gustavo.padovan@xxxxxxxxxxxxxxx> > > take out pin_fb code so the commit phase can't fail anymore. Yeah making commit() void is a good step. For patches 8 and 9: Reviewed-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Signed-off-by: Gustavo Padovan <gustavo.padovan@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_sprite.c | 63 +++++++++++++++++++++++-------------- > 1 file changed, 40 insertions(+), 23 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c > index 750b634..8e5445b 100644 > --- a/drivers/gpu/drm/i915/intel_sprite.c > +++ b/drivers/gpu/drm/i915/intel_sprite.c > @@ -1189,34 +1189,18 @@ intel_check_sprite_plane(struct drm_plane *plane, > } > > static int > -intel_commit_sprite_plane(struct drm_plane *plane, > - struct intel_plane_state *state) > +intel_prepare_sprite_plane(struct drm_plane *plane, > + struct intel_plane_state *state) > { > struct drm_device *dev = plane->dev; > struct drm_crtc *crtc = state->crtc; > struct intel_crtc *intel_crtc = to_intel_crtc(crtc); > - struct intel_plane *intel_plane = to_intel_plane(plane); > enum pipe pipe = intel_crtc->pipe; > struct drm_framebuffer *fb = state->fb; > - struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); > - struct drm_i915_gem_object *obj = intel_fb->obj; > - struct drm_i915_gem_object *old_obj = intel_plane->obj; > - int crtc_x, crtc_y; > - unsigned int crtc_w, crtc_h; > - uint32_t src_x, src_y, src_w, src_h; > - struct drm_rect *dst = &state->dst; > - const struct drm_rect *clip = &state->clip; > - bool primary_enabled; > + struct drm_i915_gem_object *obj = intel_fb_obj(fb); > + struct drm_i915_gem_object *old_obj = intel_fb_obj(plane->fb); > int ret; > > - /* > - * If the sprite is completely covering the primary plane, > - * we can disable the primary and save power. > - */ > - primary_enabled = !drm_rect_equals(dst, clip) || colorkey_enabled(intel_plane); > - WARN_ON(!primary_enabled && !state->visible && intel_crtc->active); > - > - > if (old_obj != obj) { > mutex_lock(&dev->struct_mutex); > > @@ -1235,6 +1219,36 @@ intel_commit_sprite_plane(struct drm_plane *plane, > return ret; > } > > + return 0; > +} > + > +static void > +intel_commit_sprite_plane(struct drm_plane *plane, > + struct intel_plane_state *state) > +{ > + struct drm_device *dev = plane->dev; > + struct drm_crtc *crtc = state->crtc; > + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); > + struct intel_plane *intel_plane = to_intel_plane(plane); > + enum pipe pipe = intel_crtc->pipe; > + struct drm_framebuffer *fb = state->fb; > + struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); > + struct drm_i915_gem_object *obj = intel_fb->obj; > + struct drm_i915_gem_object *old_obj = intel_plane->obj; > + int crtc_x, crtc_y; > + unsigned int crtc_w, crtc_h; > + uint32_t src_x, src_y, src_w, src_h; > + struct drm_rect *dst = &state->dst; > + const struct drm_rect *clip = &state->clip; > + bool primary_enabled; > + > + /* > + * If the sprite is completely covering the primary plane, > + * we can disable the primary and save power. > + */ > + primary_enabled = !drm_rect_equals(dst, clip) || colorkey_enabled(intel_plane); > + WARN_ON(!primary_enabled && !state->visible && intel_crtc->active); > + > intel_plane->crtc_x = state->orig_dst.x1; > intel_plane->crtc_y = state->orig_dst.y1; > intel_plane->crtc_w = drm_rect_width(&state->orig_dst); > @@ -1295,8 +1309,6 @@ intel_commit_sprite_plane(struct drm_plane *plane, > intel_unpin_fb_obj(old_obj); > mutex_unlock(&dev->struct_mutex); > } > - > - return 0; > } > > static int > @@ -1336,7 +1348,12 @@ intel_update_plane(struct drm_plane *plane, struct drm_crtc *crtc, > if (ret) > return ret; > > - return intel_commit_sprite_plane(plane, &state); > + ret = intel_prepare_sprite_plane(plane, &state); > + if (ret) > + return ret; > + > + intel_commit_sprite_plane(plane, &state); > + return 0; > } > > static int > -- > 1.9.3 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/dri-devel -- Ville Syrjälä Intel OTC _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel