Re: [igt-dev] [PATCH i-g-t 4/4] lib/igt_fb: Generalize the slow read from gtt mmap handling

Ville Syrjälä
2018-11-02T19:30:32Z

On Fri, Nov 02, 2018 at 07:17:03PM +0000, Chris Wilson wrote:
> Quoting Ville Syrjala (2018-11-02 19:06:51)
> > +static void *convert_src_get(const struct fb_convert *cvt)
> > +{
> > + void *buf;
> > +
> > + if (!cvt->src.slow_reads)
> > + return cvt->src.ptr;
> > +
> > + /*
> > + * Reading from the BO is awfully slow because of lack of read caching,
> > + * it's faster to copy the whole BO to a temporary buffer and convert
> > + * from there.
> > + */
> > + buf = malloc(cvt->src.fb->size);
>
> if (!buf)
> return cvt->src.ptr;

Sure, why not.

>
> > + igt_memcpy_from_wc(buf, cvt->src.ptr, cvt->src.fb->size);
> > +
> > + return buf;
> > +}
> > +
> > +static void convert_src_put(const struct fb_convert *cvt,
> > + void *src_buf)
> > +{
> > + /*
> > + * Reading from the BO is awfully slow because of lack of read caching,
> > + * it's faster to copy the whole BO to a temporary buffer and convert
> > + * from there.
> > + */
> > + if (cvt->src.slow_reads)
>
> if (src_buf != cvt->src.ptr)

Yes, that is better (tm).

>
> > + free(src_buf);
> > +}

--
Ville Syrjälä
Intel