[Mesa-dev] [PATCH] intel/isl: Add support for blitter restrictions
Jason Ekstrand
jason at jlekstrand.net
Fri Jul 21 19:34:57 UTC 2017
On Fri, Jul 21, 2017 at 12:27 PM, Chris Wilson <chris at chris-wilson.co.uk>
wrote:
> Quoting Jason Ekstrand (2017-07-21 20:11:27)
> > + if (surf_info->usage & ISL_SURF_USAGE_BLIT_BIT) {
> > + /* According to the Ivy Bridge PRM, Vol1 Part4, section 1.2.1.2
> > + * (Graphics Data Size Limitations):
> > + *
> > + * The BLT engine is capable of transferring very large
> quantities of
> > + * graphics data. Any graphics data read from and written to
> the
> > + * destination is permitted to represent a number of pixels
> that
> > + * occupies up to 65,536 scan lines and up to 32,768 bytes per
> scan
> > + * line at the destination. The maximum number of pixels that
> may be
> > + * represented per scan line’s worth of graphics data depends
> on the
> > + * color depth.
> > + *
> > + * The blitter's pitch is a signed 16-bit integer, but measured
> in bytes
> > + * for linear surfaces and DWords for tiled surfaces. So the
> maximum
> > + * pitch is 32k linear and 128k tiled.
> > + */
> > + const uint32_t blt_pitch =
> > + tile_info->tiling == ISL_TILING_LINEAR ? row_pitch : row_pitch
> / 4;
> > + if (blt_pitch > 32768)
> > + return false;
>
> Ben will probably remember better since he did the same limits for GL,
> but isn't the field for pitch in XY_SRC_COPY a s16 (as it allows
> negative pitches)? So that test should be >= 32768.
Yes, yes it should.
Also, I did some more reading and it's not a pitch restriction at all.
It's a restriction on base address. The only reason why we treat it as a
pitch restriction in GL is because that ensures that most miplevels are
aligned to 64 bits (not all!) and got us to not notice the real problem.
--Jason
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170721/d8b311bd/attachment.html>
More information about the mesa-dev
mailing list