On Mon, May 07, 2018 at 12:49:33PM -0700, Jason Ekstrand wrote: > --- > src/mesa/drivers/dri/i965/gen6_depth_state.c | 34 > ++++++++++++++-------------- > src/mesa/drivers/dri/i965/gen7_misc_state.c | 32 +++++++++++++------------- > src/mesa/drivers/dri/i965/gen8_depth_state.c | 28 +++++++++++------------ > 3 files changed, 47 insertions(+), 47 deletions(-)
I have locally re-ordered blorp packets in order to ease comparison of state dumps between blorp and non-blorp paths. Thanks for doing this properly. Reviewed-by: Topi Pohjolainen <topi.pohjolai...@intel.com> > > diff --git a/src/mesa/drivers/dri/i965/gen6_depth_state.c > b/src/mesa/drivers/dri/i965/gen6_depth_state.c > index 8a1d580..bca956e 100644 > --- a/src/mesa/drivers/dri/i965/gen6_depth_state.c > +++ b/src/mesa/drivers/dri/i965/gen6_depth_state.c > @@ -155,44 +155,44 @@ gen6_emit_depth_stencil_hiz(struct brw_context *brw, > * failure to do so causes hangs on gen5 and a stall on gen6. > */ > > - /* Emit hiz buffer. */ > - if (hiz) { > - assert(depth_mt); > + /* Emit stencil buffer. */ > + if (separate_stencil) { > + assert(stencil_mt->format == MESA_FORMAT_S_UINT8); > + assert(stencil_mt->surf.size > 0); > > uint32_t offset; > - isl_surf_get_image_offset_B_tile_sa(&depth_mt->aux_buf->surf, > + isl_surf_get_image_offset_B_tile_sa(&stencil_mt->surf, > lod, 0, 0, &offset, NULL, NULL); > > BEGIN_BATCH(3); > - OUT_BATCH((_3DSTATE_HIER_DEPTH_BUFFER << 16) | (3 - 2)); > - OUT_BATCH(depth_mt->aux_buf->surf.row_pitch - 1); > - OUT_RELOC(depth_mt->aux_buf->bo, RELOC_WRITE, offset); > + OUT_BATCH((_3DSTATE_STENCIL_BUFFER << 16) | (3 - 2)); > + OUT_BATCH(stencil_mt->surf.row_pitch - 1); > + OUT_RELOC(stencil_mt->bo, RELOC_WRITE, offset); > ADVANCE_BATCH(); > } else { > BEGIN_BATCH(3); > - OUT_BATCH((_3DSTATE_HIER_DEPTH_BUFFER << 16) | (3 - 2)); > + OUT_BATCH((_3DSTATE_STENCIL_BUFFER << 16) | (3 - 2)); > OUT_BATCH(0); > OUT_BATCH(0); > ADVANCE_BATCH(); > } > > - /* Emit stencil buffer. */ > - if (separate_stencil) { > - assert(stencil_mt->format == MESA_FORMAT_S_UINT8); > - assert(stencil_mt->surf.size > 0); > + /* Emit hiz buffer. */ > + if (hiz) { > + assert(depth_mt); > > uint32_t offset; > - isl_surf_get_image_offset_B_tile_sa(&stencil_mt->surf, > + isl_surf_get_image_offset_B_tile_sa(&depth_mt->aux_buf->surf, > lod, 0, 0, &offset, NULL, NULL); > > BEGIN_BATCH(3); > - OUT_BATCH((_3DSTATE_STENCIL_BUFFER << 16) | (3 - 2)); > - OUT_BATCH(stencil_mt->surf.row_pitch - 1); > - OUT_RELOC(stencil_mt->bo, RELOC_WRITE, offset); > + OUT_BATCH((_3DSTATE_HIER_DEPTH_BUFFER << 16) | (3 - 2)); > + OUT_BATCH(depth_mt->aux_buf->surf.row_pitch - 1); > + OUT_RELOC(depth_mt->aux_buf->bo, RELOC_WRITE, offset); > ADVANCE_BATCH(); > } else { > BEGIN_BATCH(3); > - OUT_BATCH((_3DSTATE_STENCIL_BUFFER << 16) | (3 - 2)); > + OUT_BATCH((_3DSTATE_HIER_DEPTH_BUFFER << 16) | (3 - 2)); > OUT_BATCH(0); > OUT_BATCH(0); > ADVANCE_BATCH(); > diff --git a/src/mesa/drivers/dri/i965/gen7_misc_state.c > b/src/mesa/drivers/dri/i965/gen7_misc_state.c > index 1508473..e3a355f 100644 > --- a/src/mesa/drivers/dri/i965/gen7_misc_state.c > +++ b/src/mesa/drivers/dri/i965/gen7_misc_state.c > @@ -137,39 +137,39 @@ gen7_emit_depth_stencil_hiz(struct brw_context *brw, > OUT_BATCH((depth - 1) << 21); > ADVANCE_BATCH(); > > - if (!hiz) { > + if (stencil_mt == NULL) { > BEGIN_BATCH(3); > - OUT_BATCH(GEN7_3DSTATE_HIER_DEPTH_BUFFER << 16 | (3 - 2)); > + OUT_BATCH(GEN7_3DSTATE_STENCIL_BUFFER << 16 | (3 - 2)); > OUT_BATCH(0); > OUT_BATCH(0); > ADVANCE_BATCH(); > } else { > - assert(depth_mt); > + stencil_mt->r8stencil_needs_update = true; > + const int enabled = devinfo->is_haswell ? HSW_STENCIL_ENABLED : 0; > > BEGIN_BATCH(3); > - OUT_BATCH(GEN7_3DSTATE_HIER_DEPTH_BUFFER << 16 | (3 - 2)); > - OUT_BATCH((mocs << 25) | > - (depth_mt->aux_buf->pitch - 1)); > - OUT_RELOC(depth_mt->aux_buf->bo, RELOC_WRITE, 0); > + OUT_BATCH(GEN7_3DSTATE_STENCIL_BUFFER << 16 | (3 - 2)); > + OUT_BATCH(enabled | > + mocs << 25 | > + (stencil_mt->surf.row_pitch - 1)); > + OUT_RELOC(stencil_mt->bo, RELOC_WRITE, 0); > ADVANCE_BATCH(); > } > > - if (stencil_mt == NULL) { > + if (!hiz) { > BEGIN_BATCH(3); > - OUT_BATCH(GEN7_3DSTATE_STENCIL_BUFFER << 16 | (3 - 2)); > + OUT_BATCH(GEN7_3DSTATE_HIER_DEPTH_BUFFER << 16 | (3 - 2)); > OUT_BATCH(0); > OUT_BATCH(0); > ADVANCE_BATCH(); > } else { > - stencil_mt->r8stencil_needs_update = true; > - const int enabled = devinfo->is_haswell ? HSW_STENCIL_ENABLED : 0; > + assert(depth_mt); > > BEGIN_BATCH(3); > - OUT_BATCH(GEN7_3DSTATE_STENCIL_BUFFER << 16 | (3 - 2)); > - OUT_BATCH(enabled | > - mocs << 25 | > - (stencil_mt->surf.row_pitch - 1)); > - OUT_RELOC(stencil_mt->bo, RELOC_WRITE, 0); > + OUT_BATCH(GEN7_3DSTATE_HIER_DEPTH_BUFFER << 16 | (3 - 2)); > + OUT_BATCH((mocs << 25) | > + (depth_mt->aux_buf->pitch - 1)); > + OUT_RELOC(depth_mt->aux_buf->bo, RELOC_WRITE, 0); > ADVANCE_BATCH(); > } > > diff --git a/src/mesa/drivers/dri/i965/gen8_depth_state.c > b/src/mesa/drivers/dri/i965/gen8_depth_state.c > index 0fc0273..1c77218 100644 > --- a/src/mesa/drivers/dri/i965/gen8_depth_state.c > +++ b/src/mesa/drivers/dri/i965/gen8_depth_state.c > @@ -82,39 +82,39 @@ emit_depth_packets(struct brw_context *brw, > (depth_mt ? depth_mt->surf.array_pitch_el_rows >> 2 : 0)); > ADVANCE_BATCH(); > > - if (!hiz) { > + if (stencil_mt == NULL) { > BEGIN_BATCH(5); > - OUT_BATCH(GEN7_3DSTATE_HIER_DEPTH_BUFFER << 16 | (5 - 2)); > + OUT_BATCH(GEN7_3DSTATE_STENCIL_BUFFER << 16 | (5 - 2)); > OUT_BATCH(0); > OUT_BATCH(0); > OUT_BATCH(0); > OUT_BATCH(0); > ADVANCE_BATCH(); > } else { > - assert(depth_mt); > BEGIN_BATCH(5); > - OUT_BATCH(GEN7_3DSTATE_HIER_DEPTH_BUFFER << 16 | (5 - 2)); > - OUT_BATCH((depth_mt->aux_buf->pitch - 1) | mocs_wb << 25); > - OUT_RELOC64(depth_mt->aux_buf->bo, RELOC_WRITE, 0); > - OUT_BATCH(depth_mt->aux_buf->qpitch >> 2); > + OUT_BATCH(GEN7_3DSTATE_STENCIL_BUFFER << 16 | (5 - 2)); > + OUT_BATCH(HSW_STENCIL_ENABLED | mocs_wb << 22 | > + (stencil_mt->surf.row_pitch - 1)); > + OUT_RELOC64(stencil_mt->bo, RELOC_WRITE, 0); > + OUT_BATCH(stencil_mt->surf.array_pitch_el_rows >> 2); > ADVANCE_BATCH(); > } > > - if (stencil_mt == NULL) { > + if (!hiz) { > BEGIN_BATCH(5); > - OUT_BATCH(GEN7_3DSTATE_STENCIL_BUFFER << 16 | (5 - 2)); > + OUT_BATCH(GEN7_3DSTATE_HIER_DEPTH_BUFFER << 16 | (5 - 2)); > OUT_BATCH(0); > OUT_BATCH(0); > OUT_BATCH(0); > OUT_BATCH(0); > ADVANCE_BATCH(); > } else { > + assert(depth_mt); > BEGIN_BATCH(5); > - OUT_BATCH(GEN7_3DSTATE_STENCIL_BUFFER << 16 | (5 - 2)); > - OUT_BATCH(HSW_STENCIL_ENABLED | mocs_wb << 22 | > - (stencil_mt->surf.row_pitch - 1)); > - OUT_RELOC64(stencil_mt->bo, RELOC_WRITE, 0); > - OUT_BATCH(stencil_mt->surf.array_pitch_el_rows >> 2); > + OUT_BATCH(GEN7_3DSTATE_HIER_DEPTH_BUFFER << 16 | (5 - 2)); > + OUT_BATCH((depth_mt->aux_buf->pitch - 1) | mocs_wb << 25); > + OUT_RELOC64(depth_mt->aux_buf->bo, RELOC_WRITE, 0); > + OUT_BATCH(depth_mt->aux_buf->qpitch >> 2); > ADVANCE_BATCH(); > } > > -- > 2.5.0.400.gff86faf > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev