[Mesa-dev] [PATCH 01/11] intel/isl: Stop padding surfaces
Jason Ekstrand
jason at jlekstrand.net
Tue Aug 8 01:32:40 UTC 2017
On Mon, Aug 7, 2017 at 5:51 PM, Chad Versace <chadversary at chromium.org>
wrote:
> On Fri 04 Aug 2017, Jason Ekstrand wrote:
> > Ken and I had a fairly lengthy conversation about this on IRC today:
> >
> > [1]https://people.freedesktop.org/~jekstrand/isl-padding
> >
> > The conclusion was that we both hate the patch but it's probably safe
> and it
> > does fix bugs. The thing that really wins me over is that we have
> historically
> > done none of this padding in the GL driver (except for one bit about
> cube maps)
> > and seem to have gotten away with it. We have had some underallocation
> issues
> > in the past but none have them have tracked back to this.
>
> I also hate this patch. But I understand why something like it is
> needed. To expect external allocators to arrive at
> an interpretation of the hw spec similar to isl's (and there's no
> guarantee that isl's interpretation is correct here), and therefore
> expect the external allocator to apply no less padding than padding
> does---that expectation borders on the unreasonable.
>
> More thoughts below...
>
> > On Wed, Aug 2, 2017 at 1:35 PM, Jason Ekstrand <[2]jason at jlekstrand.net>
> wrote:
> >
> > The docs contain a bunch of commentary about the need to pad various
> > surfaces out to multiples of something or other. However, all of
> those
> > requirements are about avoiding GTT errors due to missing pages when
> the
> > data port or sampler accesses slightly out-of-bounds. However,
> because
> > the kernel already fills all the empty space in our GTT with the
> scratch
> > page, we never have to worry about faulting due to OOB reads. There
> are
> > two caveats to this:
> >
> > 1) There is some potential for issues with caches here if extra data
> > ends up in a cache we don't expect due to OOB reads. However,
> > because we always trash the entire cache whenever we need to move
> > anything between cache domains, this shouldn't be an issue.
> >
> > 2) There is a potential issue if a surface gets placed at the very
> top
> > of the GTT by the kernel. In this case, the hardware could
> > potentially end up trying to read past the top of the GTT. If it
> > nicely wraps around at the 48-bit (or 32-bit) boundary, then this
> > shouldn't be an issue thanks to the scratch page. If it doesn't,
> > then we need to come up with something to handle it.
>
> I'm not worried #2 because all the hw spec's padding requirements add
> padding to the *bottom* of the surface. So I doubt that the hw would
> ever read OOB past the *top* of the surface.
>
By "top of the GTT, I mean "as high an address as possible"
> >
> > Up until some of the GL move to ISL, having the padding code in there
> > just caused us to harmlessly use a bit more memory in Vulkan.
> However,
> > now that we're using ISL sizes to validate external dma-buf images,
> > these padding requirements are causing us to reject otherwise valid
> > images due to the size of the BO being too small.
>
> Is it too much to ask that the surface size be padded to 64B, for cache
> alignment? I don't know exactly why, but that makes me feel a little
> safer.
>
I don't know. There's no guarantee that the base address will be
cache-line aligned and the end of the BO is aligned to a page...
> With or without that padding to cache-alignment, this is
> Reviewed-by: Chad Versace <chadversary at chromium.org>
>
> I don't like it, but you convinced me that it's safe... until someone
> proves that it's not.
>
Heh. That's where I'm at too.
> >
> > Cc: "17.2" <[3]mesa-stable at lists.freedesktop.org>
> > Cc: Chad Versace <[4]chadversary at chromium.org>
> > Tested-by: Tapani Pälli <[5]tapani.palli at intel.com>
> > Tested-by: Tomasz Figa <[6]tfiga at chromium.org>
> > ---
> > src/intel/isl/isl.c | 119 +-----------------------------
> > ----------------------
> > 1 file changed, 2 insertions(+), 117 deletions(-)
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170807/e043dde9/attachment-0001.html>
More information about the mesa-dev
mailing list