[Mesa-dev] [PATCH 02/15] i965: Add helper for converting isl tiling to bufmgr tiling

Jason Ekstrand jason at jlekstrand.net
Fri Jun 16 01:23:24 UTC 2017


On Thu, Jun 15, 2017 at 5:18 PM, Nanley Chery <nanleychery at gmail.com> wrote:

> On Tue, Jun 13, 2017 at 05:50:00PM +0300, Topi Pohjolainen wrote:
> > Signed-off-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
> > ---
> >  src/mesa/drivers/dri/i965/intel_blit.h | 13 +++++++++++++
> >  1 file changed, 13 insertions(+)
> >
> > diff --git a/src/mesa/drivers/dri/i965/intel_blit.h
> b/src/mesa/drivers/dri/i965/intel_blit.h
> > index 2604417e2d..5e4d1f5eb4 100644
> > --- a/src/mesa/drivers/dri/i965/intel_blit.h
> > +++ b/src/mesa/drivers/dri/i965/intel_blit.h
> > @@ -28,6 +28,19 @@
> >
> >  #include "brw_context.h"
> >
> > +static inline unsigned
> > +isl_tiling_to_bufmgr_tiling(enum isl_tiling tiling)
> > +{
> > +   if (tiling == ISL_TILING_X)
> > +      return I915_TILING_X;
> > +
> > +   if (tiling == ISL_TILING_Y0)
>
> I actually just read the patch where this function is used. Don't we
> also need to return I915_TILING_Y for ISL_TILING_W? Maybe Jason can
> confirm.
>

I'd rather the function not lie... Also, most places in the driver today
that do W-tiling use I915_TILING_NONE.  Yes, I915_TILING_NONE is sort of
LINEAR but you could also interpret it as LINEAR || UNKNOWN.


> > +      return I915_TILING_Y;
> > +
> > +   /* All other are unknown to buffer allocator. */
>
> It would seem that we'd like to assert for unexpected values instead of
> failing silently.
>

I just pulled up my version:

https://cgit.freedesktop.org/~jekstrand/mesa/commit/?h=wip/i965-ccs-mod-v3&id=6133059904aeaa7bd6d4ee364014f491f59083e2

and I went with I915_TILING_NONE there.  The reason I did so was so that
you could call

brw_bo_alloc_tiled(brw, name, surf.size,
isl_tiling_to_i915_tiling(surf.tiling), surf.row_pitch, 0);

without having to worry about isl_tiling_to_i915_tiling asserting on you.

The only two things that the tiling is used for are scanout and fenced
maps.  Even when we enable things like Yf scan-out, we'll probably do it
through modifiers and not set_tiling.  At that point, the only thing that
the I915_TILING parameters are actually needed for is doing fenced GTT maps
(which detile on the fly).  Since you can't do a fenced map of anything
other than X and Y-tiled,  I don't think we'll ever need to add I915_TILING
parameters for the others because you can't do a fenced (GTT) map of a Yf,
Ys, or W-tiled buffer anyway.

On the other hand, when used in something such as the blit code, asserting
is probably the right thing to do.  One option would be to add a little
alloc_bo_for_isl_surf helper which knows to map everything other than X and
Y to LINEAR and make the general function assert.

--Jason


> > +   return I915_TILING_NONE;
> > +}
> > +
> >  bool
> >  intelEmitCopyBlit(struct brw_context *brw,
> >                    GLuint cpp,
> > --
> > 2.11.0
> >
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170615/76bc9484/attachment.html>


More information about the mesa-dev mailing list