[Mesa-dev] [PATCH 3/7] i965: Add gen7+ sampler state to batch debug

Pohjolainen, Topi topi.pohjolainen at intel.com
Fri Apr 24 10:29:51 PDT 2015


On Fri, Apr 24, 2015 at 08:20:49PM +0300, Pohjolainen, Topi wrote:
> On Thu, Apr 23, 2015 at 04:49:59PM -0700, Ben Widawsky wrote:
> > OLD:
> > 0x00007e00:      0x10000000: WM SAMP0: filtering
> > 0x00007e04:      0x000d0000: WM SAMP0: wrapping, lod
> > 0x00007e08:      0x00000000: WM SAMP0: default color pointer
> > 0x00007e0c:      0x00000090: WM SAMP0: chroma key, aniso
> > 
> > NEW:
> > 0x00007e00:      0x10000000: SAMPLER_STATE 0: Disabled = no, Base Mip: 0.0, Mip/Mag/Min Filter: NONE/NEAREST/NEAREST, LOD Bias: 0.0
> > 0x00007e04:      0x000d0000: SAMPLER_STATE 0: Min LOD: 0.0, Max LOD: 13.0
> > 0x00007e08:      0x00000000: SAMPLER_STATE 0: Border Color
> > 0x00007e0c:      0x00000090: SAMPLER_STATE 0: Max aniso: RATIO 2:1, TC[XYZ] Address Control: CLAMP|CLAMP|WRAP
> > 
> > Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
> 
> Reviewed-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
> 
> > ---
> >  src/mesa/drivers/dri/i965/brw_state_dump.c | 71 +++++++++++++++++++++++++++++-
> >  1 file changed, 70 insertions(+), 1 deletion(-)
> > 
> > diff --git a/src/mesa/drivers/dri/i965/brw_state_dump.c b/src/mesa/drivers/dri/i965/brw_state_dump.c
> > index 89c1a29..21a3d8f 100644
> > --- a/src/mesa/drivers/dri/i965/brw_state_dump.c
> > +++ b/src/mesa/drivers/dri/i965/brw_state_dump.c
> > @@ -32,6 +32,33 @@
> >  #include "brw_defines.h"
> >  #include "brw_eu.h"
> >  
> > +static const char *sampler_mip_filter[] = {
> > +   "NONE",
> > +   "NEAREST",
> > +   "RSVD",
> > +   "LINEAR"
> > +};
> > +
> > +static const char *sampler_mag_filter[] = {
> > +   "NEAREST",
> > +   "LINEAR",
> > +   "ANISOTROPIC",
> > +   "FLEXIBLE (GEN8+)",
> > +   "RSVD", "RSVD",
> > +   "MONO",
> > +   "RSVD"
> > +};
> > +
> > +static const char *sampler_addr_mode[] = {
> > +   "WRAP",
> > +   "MIRROR",
> > +   "CLAMP",
> > +   "CUBE",
> > +   "CLAMP_BORDER",
> > +   "MIRROR_ONCE",
> > +   "HALF_BORDER"
> > +};
> > +
> >  static void
> >  batch_out(struct brw_context *brw, const char *name, uint32_t offset,
> >  	  int index, char *fmt, ...) PRINTFLIKE(5, 6);
> > @@ -483,6 +510,45 @@ static void dump_sampler_state(struct brw_context *brw,
> >     }
> >  }
> >  
> > +static void gen7_dump_sampler_state(struct brw_context *brw,
> > +                                    uint32_t offset, uint32_t size)
> > +{
> > +   uint32_t *samp = brw->batch.bo->virtual + offset;

Sorry, small nit, use const here, we are only reading.

> > +   char name[20];
> > +
> > +   for (int i = 0; i < size / 16; i++) {
> > +      sprintf(name, "SAMPLER_STATE %d", i);
> > +      batch_out(brw, name, offset, i,
> > +                "Disabled = %s, Base Mip: %u.%u, Mip/Mag/Min Filter: %s/%s/%s, LOD Bias: %d.%d\n",
> > +                GET_BITS(samp[0], 31, 31) ? "yes" : "no",
> > +                GET_BITS(samp[0], 26, 23),
> > +                GET_BITS(samp[0], 22, 22),
> > +                sampler_mip_filter[GET_FIELD(samp[0], BRW_SAMPLER_MIP_FILTER)],
> > +                sampler_mag_filter[GET_FIELD(samp[0], BRW_SAMPLER_MAG_FILTER)],
> > +                /* min filter defs are the same as mag */
> > +                sampler_mag_filter[GET_FIELD(samp[0], BRW_SAMPLER_MIN_FILTER)],
> > +                GET_BITS(samp[0], 13, 10),
> > +                GET_BITS(samp[0], 9, 1)
> > +               );
> > +      batch_out(brw, name, offset, i+1, "Min LOD: %u.%u, Max LOD: %u.%u\n",
> > +                GET_BITS(samp[1], 31, 28),
> > +                GET_BITS(samp[1], 27, 20),
> > +                GET_BITS(samp[1], 19, 16),
> > +                GET_BITS(samp[1], 15, 8)
> > +               );
> > +      batch_out(brw, name, offset, i+2, "Border Color\n"); /* FINISHME: gen8+ */
> > +      batch_out(brw, name, offset, i+3, "Max aniso: RATIO %d:1, TC[XYZ] Address Control: %s|%s|%s\n",
> > +                (GET_FIELD(samp[3], BRW_SAMPLER_MAX_ANISOTROPY) + 1) * 2,
> > +                sampler_addr_mode[GET_FIELD(samp[3], BRW_SAMPLER_TCX_WRAP_MODE)],
> > +                sampler_addr_mode[GET_FIELD(samp[3], BRW_SAMPLER_TCY_WRAP_MODE)],
> > +                sampler_addr_mode[GET_FIELD(samp[3], BRW_SAMPLER_TCZ_WRAP_MODE)]
> > +               );
> > +
> > +      samp += 4;
> > +      offset += 4 * sizeof(uint32_t);
> > +   }
> > +}
> > +
> >  static void dump_sf_viewport_state(struct brw_context *brw,
> >  				   uint32_t offset)
> >  {
> > @@ -784,7 +850,10 @@ dump_state_batch(struct brw_context *brw)
> >  	 }
> >  	 break;
> >        case AUB_TRACE_SAMPLER_STATE:
> > -         dump_sampler_state(brw, offset, size);
> > +         if (brw->gen >= 7)
> > +            gen7_dump_sampler_state(brw, offset, size);
> > +         else
> > +            dump_sampler_state(brw, offset, size);
> >  	 break;
> >        case AUB_TRACE_SAMPLER_DEFAULT_COLOR:
> >  	 dump_sdc(brw, offset);
> > -- 
> > 2.3.6
> > 
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list