From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915: Don't wait for vblank for sprite plane flips Date: Fri, 28 Jun 2013 17:24:50 +0300 Message-ID: <20130628142450.GH5004@intel.com> References: <1372428931-24144-1-git-send-email-vijay.a.purushothaman@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Return-path: Received: from mga14.intel.com (mga14.intel.com [143.182.124.37]) by gabe.freedesktop.org (Postfix) with ESMTP id 7D785E6662 for ; Fri, 28 Jun 2013 07:31:46 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1372428931-24144-1-git-send-email-vijay.a.purushothaman@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Vijay Purushothaman Cc: Intel Graphics List-Id: intel-gfx@lists.freedesktop.org On Fri, Jun 28, 2013 at 07:45:31PM +0530, Vijay Purushothaman wrote: > Since the sprite planes are using synchronized MMIO based flip, no need > to wait for vblank. Removing this wait allows us to get a nice > performance boost to both 3D & media workloads based on sprite (~60 fps > from ~20 fps) Nak. We can't unpin the buffer until the hardware has finished reading from it. The proper fix is to do the unpin asynchronously after the flip has completed. That's one part of the bigger atomic pageflip story. > = > Signed-off-by: Vijay Purushothaman > Signed-off-by: Gary Smith > --- > drivers/gpu/drm/i915/intel_sprite.c | 14 +------------- > 1 file changed, 1 insertion(+), 13 deletions(-) > = > diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/i= ntel_sprite.c > index 1fa5612..1d14fc0 100644 > --- a/drivers/gpu/drm/i915/intel_sprite.c > +++ b/drivers/gpu/drm/i915/intel_sprite.c > @@ -828,20 +828,8 @@ intel_update_plane(struct drm_plane *plane, struct d= rm_crtc *crtc, > intel_disable_primary(crtc); > = > /* Unpin old obj after new one is active to avoid ugliness */ > - if (old_obj) { > - /* > - * It's fairly common to simply update the position of > - * an existing object. In that case, we don't need to > - * wait for vblank to avoid ugliness, we only need to > - * do the pin & ref bookkeeping. > - */ > - if (old_obj !=3D obj) { > - mutex_unlock(&dev->struct_mutex); > - intel_wait_for_vblank(dev, to_intel_crtc(crtc)->pipe); > - mutex_lock(&dev->struct_mutex); > - } > + if (old_obj) > intel_unpin_fb_obj(old_obj); > - } > = > out_unlock: > mutex_unlock(&dev->struct_mutex); > -- = > 1.7.9.5 > = > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- = Ville Syrj=E4l=E4 Intel OTC