From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id A03926E222 for ; Tue, 21 Jan 2020 16:35:23 +0000 (UTC) Date: Tue, 21 Jan 2020 18:35:17 +0200 From: Imre Deak Message-ID: <20200121163517.GA7975@ideak-desk.fi.intel.com> References: <20200120220320.17092-1-imre.deak@intel.com> <20200120220320.17092-2-imre.deak@intel.com> <885187ed-0ba3-8bba-729a-cf5e3fca1dc0@gmail.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <885187ed-0ba3-8bba-729a-cf5e3fca1dc0@gmail.com> Subject: Re: [igt-dev] [PATCH i-g-t 2/3] lib/igt_fb: Use render copy/blit for tiled formats on platforms w/o HW detiling List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: imre.deak@intel.com Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Juha-Pekka Heikkila Cc: igt-dev@lists.freedesktop.org List-ID: On Tue, Jan 21, 2020 at 06:19:30PM +0200, Juha-Pekka Heikkila wrote: > On 21.1.2020 0.03, Imre Deak wrote: > > On platforms without HW detiling use render copy or blitting to convert > > between a tiled and a linear framebuffer. > > > > Signed-off-by: Imre Deak > > --- > > lib/igt_fb.c | 16 +++++++++++++--- > > 1 file changed, 13 insertions(+), 3 deletions(-) > > > > diff --git a/lib/igt_fb.c b/lib/igt_fb.c > > index c81b9de8..b5b1750e 100644 > > --- a/lib/igt_fb.c > > +++ b/lib/igt_fb.c > > @@ -1975,17 +1975,27 @@ static bool blitter_ok(const struct igt_fb *fb) > > return true; > > } > > +static bool hw_can_detile(const struct igt_fb *fb) > > +{ > > + if (fb->modifier == DRM_FORMAT_MOD_NONE) > > + return true; > > + > > + if (!gem_has_legacy_hw_tiling(fb->fd)) > > + return false; > > + > > + return fb->modifier != I915_FORMAT_MOD_Yf_TILED; > > Should above line depend on gen? Like > return (gen < 12 || fb->modifier != I915_FORMAT_MOD_Yf_TILED); ? AFAIK no platform can detile the Yf format (only X or Y), but this shouldn't change the logic in any case, except for !gem_has_legacy_hw_tiling(). > > > +} > > + > > static bool use_enginecopy(const struct igt_fb *fb) > > { > > return is_ccs_modifier(fb->modifier) || > > - (fb->modifier == I915_FORMAT_MOD_Yf_TILED && > > - !blitter_ok(fb)); > > + (!hw_can_detile(fb) && !blitter_ok(fb)); > > } > > static bool use_blitter(const struct igt_fb *fb) > > { > > return (fb->modifier == I915_FORMAT_MOD_Y_TILED || > > - fb->modifier == I915_FORMAT_MOD_Yf_TILED) && > > + !hw_can_detile(fb)) && > > blitter_ok(fb); > > } > > > _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev