From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] intel: Set bo size from lseek if kernel supports it Date: Fri, 11 Oct 2013 01:10:15 +0200 Message-ID: <20131010231015.GE8303@phenom.ffwll.local> References: <1381442821-9033-1-git-send-email-krh@bitplanet.net> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Return-path: Received: from mail-ee0-f52.google.com (mail-ee0-f52.google.com [74.125.83.52]) by gabe.freedesktop.org (Postfix) with ESMTP id 1145DE6307 for ; Thu, 10 Oct 2013 16:09:55 -0700 (PDT) Received: by mail-ee0-f52.google.com with SMTP id c41so1493226eek.39 for ; Thu, 10 Oct 2013 16:09:54 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1381442821-9033-1-git-send-email-krh@bitplanet.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: Kristian =?iso-8859-1?Q?H=F8gsberg?= Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org On Thu, Oct 10, 2013 at 03:07:01PM -0700, Kristian H=F8gsberg wrote: > The various create and open functions set the buffer size, but > drm_intel_bo_gem_create_from_prime() is an exception. In the 3.12 kernel > we can now use lseek on the prime fd to determine the size of the bo. > Use that and override the userprovided size. If the kernel doesn't > support this, we get an error and fall back to the user provided size. > = > Signed-off-by: Kristian H=F8gsberg Reviewed-by: Daniel Vetter > --- > intel/intel_bufmgr_gem.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > = > diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c > index f98f7a7..278f5c8 100644 > --- a/intel/intel_bufmgr_gem.c > +++ b/intel/intel_bufmgr_gem.c > @@ -2452,7 +2452,17 @@ drm_intel_bo_gem_create_from_prime(drm_intel_bufmg= r *bufmgr, int prime_fd, int s > if (!bo_gem) > return NULL; > = > - bo_gem->bo.size =3D size; > + /* Determine size of bo. The fd-to-handle ioctl really should > + * return the size, but it doesn't. If we have kernel 3.12 or > + * later, we can lseek on the prime fd to get the size. Older > + * kernels will just fail, in which case we fall back to the > + * provided (estimated or guess size). */ > + ret =3D lseek(prime_fd, 0, SEEK_END); > + if (ret !=3D -1) > + bo_gem->bo.size =3D ret; > + else > + bo_gem->bo.size =3D size; > + > bo_gem->bo.handle =3D handle; > bo_gem->bo.bufmgr =3D bufmgr; > = > -- = > 1.8.3.1 > = > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel -- = Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch