Re: [igt-dev] [HAX 3/5] lib/igt_fb: Use rendercopy for rendering into compressed buffers

Ville Syrjälä
2019-02-22T17:26:55Z

On Thu, Feb 21, 2019 at 03:20:35PM -0800, Dhinakaran Pandiyan wrote:
> On Thu, 2019-02-21 at 16:06 +0200, Ville Syrjälä wrote:
> > On Wed, Feb 20, 2019 at 06:41:21PM -0800, Dhinakaran Pandiyan wrote:
> > > @@ -2397,8 +2523,10 @@ cairo_surface_t *igt_get_cairo_surface(int
> > > fd, struct igt_fb *fb)
> > > ((f->cairo_id == CAIRO_FORMAT_INVALID) &&
> > > (f->pixman_id != PIXMAN_invalid)))
> > > create_cairo_surface__convert(fd, fb);
> All BGR formats will take this path and it somehow results in Yf-CCS
> tests specifically failing.

Hmm. Should be a matter of

if (...
+ is_ccs) {
setup_linear_mapping();
} else {
...

no? Or was that already in there?

It is slightly suboptimal since in theory we could just use
rendercopy to do the full conversion for us, skipping the expensive
software step. IIRC I briefly mentioned this option when Maarten
was adding the !32bpp support to rendercopy. Anyways, we could
consider doing that in the future if we are willing to expand
our use of rendercopy. The counter argument is that it's one
more extra thing that could fail.

>
>
> > > + else if (is_ccs_modifier(fb->tiling))
> > > + create_cairo_surface__rendercopy(fd, fb);
> > > else if (fb->tiling == LOCAL_I915_FORMAT_MOD_Y_TILED ||
> > > - fb->tiling == LOCAL_I915_FORMAT_MOD_Yf_TILED)
> > > + fb->tiling == LOCAL_I915_FORMAT_MOD_Yf_TILED)
> > > create_cairo_surface__blit(fd, fb);
> > > else
> > > create_cairo_surface__gtt(fd, fb);
> >
> > Oh, and this reminds me that we still have the <32k byte blitter
> > stride
> > problem, which I tried to address a bit in
> > https://patchwork.freedesktop.org/patch/248543/
> > by using gtt mmaps instead. However that failed for Yf since fences
> > can't
> > handle Yf.
> Wonder if this has got something to do with BGR format failures.
>
> > My initial idea was to cpu mmap and tile/detile manually,
> > but we could actually consider using rendercopy instead.
> >
>
> More work for Yf then.
> -DK

--
Ville Syrjälä
Intel