[Mesa-dev] [PATCH 05/17] intel/isl: Aling non-tiled horizontally by cache line
Pohjolainen, Topi
topi.pohjolainen at gmail.com
Fri Jul 21 18:29:57 UTC 2017
On Fri, Jul 21, 2017 at 11:09:47AM -0700, Jason Ekstrand wrote:
> s/Aling/Align/
>
> On Fri, Jul 21, 2017 at 8:00 AM, Topi Pohjolainen <
> topi.pohjolainen at gmail.com> wrote:
>
> > in order to support blit engine.
> >
> > Signed-off-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
> > ---
> > src/intel/isl/isl.c | 16 +++++++++++++++-
> > 1 file changed, 15 insertions(+), 1 deletion(-)
> >
> > diff --git a/src/intel/isl/isl.c b/src/intel/isl/isl.c
> > index 4393088409..90a8be2c58 100644
> > --- a/src/intel/isl/isl.c
> > +++ b/src/intel/isl/isl.c
> > @@ -1268,9 +1268,23 @@ isl_calc_row_pitch(const struct isl_device *dev,
> > const struct isl_extent2d *phys_total_el,
> > uint32_t *out_row_pitch)
> > {
> > - const uint32_t alignment =
> > + uint32_t alignment =
> > isl_calc_row_pitch_alignment(surf_info, tile_info);
> >
> > + /* If pitch isn't given and it can be chosen freely, align it by cache
> > line
> > + * allowing one to use blit engine on the surface.
> > + */
> > + if (surf_info->row_pitch == 0 && tile_info->tiling ==
> > ISL_TILING_LINEAR) {
> > + /* From the Broadwell PRM docs for XY_SRC_COPY_BLT::
> > SourceBaseAddress:
> > + *
> > + * "Base address of the destination surface: X=0, Y=0. Lower
> > 32bits
> > + * of the 48bit addressing. When Src Tiling is enabled (Bit_15
> > + * enabled), this address must be 4KB-aligned. When Tiling is not
> > + * enabled, this address should be CL (64byte) aligned."
> > + */
> > + alignment = MAX2(alignment, 64);
> > + }
> >
>
> I think we want this to be part of isl_calc_row_pitch_alignment
In that case we need to add out_row_pitch as argument so that it can omit
the alignment restriction for already given pitch. In i965 we get buffers that
don't align by 64.
I had it originally in isl_calc_row_pitch_alignment() but decided it
would be cleaner in isl_calc_row_pitch() due to the special case.
>
> Also, eventually, I'd like us to add an ISL_SURF_USAGE_BLIT_BIT and key
> this as well as the row pitch too large fallback in patch 3 to it. When we
> go to implement GL_EXT_external_objects, any of these sorts of things which
> apply on gen7+ will have to be in ISL because we need to guarantee that
> Vulkan and GL have the same fallbacks at least for external things. For
> external, Vulkan will have to set the ISL_SURF_USAGE_BLIT_BIT for this
> reason.
>
> --Jason
>
>
> > +
> > const uint32_t min_row_pitch =
> > isl_calc_min_row_pitch(dev, surf_info, tile_info, phys_total_el,
> > alignment);
> > --
> > 2.11.0
> >
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> >
More information about the mesa-dev
mailing list