On Fri, Oct 12, 2018 at 01:46:54PM -0500, Jason Ekstrand wrote: > This commit just adds a miptail start field to isl_surf and wires it up > in the RENDER_SURFACE_STATE and 3DSTATE_DEPTH code. We also add a > minimum miptail LOD so that client drivers have a knob to control the > miptails a bit. > --- > src/intel/isl/isl.c | 1 + > src/intel/isl/isl.h | 11 +++++++++++ > src/intel/isl/isl_emit_depth_stencil.c | 2 +- > src/intel/isl/isl_surface_state.c | 5 +---- > 4 files changed, 14 insertions(+), 5 deletions(-) > > diff --git a/src/intel/isl/isl.c b/src/intel/isl/isl.c > index 3d0741bc207..4a8380ad540 100644 > --- a/src/intel/isl/isl.c > +++ b/src/intel/isl/isl.c > @@ -1653,6 +1653,7 @@ isl_surf_init_s(const struct isl_device *dev, > .row_pitch_B = row_pitch_B, > .array_pitch_el_rows = array_pitch_el_rows, > .array_pitch_span = array_pitch_span, > + .miptail_start_level = 15, > > .usage = info->usage, > }; > diff --git a/src/intel/isl/isl.h b/src/intel/isl/isl.h > index 213f5b408e2..4fb212e33d5 100644 > --- a/src/intel/isl/isl.h > +++ b/src/intel/isl/isl.h > @@ -1145,6 +1145,9 @@ struct isl_surf_init_info { > /** Lower bound for isl_surf::alignment, in bytes. */ > uint32_t min_alignment_B; > > + /** Lower bound for where to start the miptail */ > + uint32_t min_miptail_start_level; > + > /** > * Exact value for isl_surf::row_pitch. Ignored if zero. isl_surf_init() > * will fail if this is misaligned or out of bounds. > @@ -1219,6 +1222,14 @@ struct isl_surf { > > enum isl_array_pitch_span array_pitch_span; > > + /** > + * Level at which the miptail starts. > + * > + * This value is inclusive in the sense that the miptail contains this > + * level. > + */ > + uint32_t miptail_start_level; > + > /** Copy of isl_surf_init_info::usage. */ > isl_surf_usage_flags_t usage; > }; > diff --git a/src/intel/isl/isl_emit_depth_stencil.c > b/src/intel/isl/isl_emit_depth_stencil.c > index b07da781be8..c1a40ee20f0 100644 > --- a/src/intel/isl/isl_emit_depth_stencil.c > +++ b/src/intel/isl/isl_emit_depth_stencil.c > @@ -115,7 +115,7 @@ isl_genX(emit_depth_stencil_hiz_s)(const struct > isl_device *dev, void *batch, > /* We don't use miptails yet. The PRM recommends that you set "Mip > Tail > * Start LOD" to 15 to prevent the hardware from trying to use them. > */ > - db.MipTailStartLOD = 15; > + db.MipTailStartLOD = info->depth_surf->miptail_start_level; > #elif GEN_GEN >= 7 > /* Gen7+ depth is always Y-tiled. We don't even have a bit for it */ > #else > diff --git a/src/intel/isl/isl_surface_state.c > b/src/intel/isl/isl_surface_state.c > index abd4767acd7..b3e51d6f5e0 100644 > --- a/src/intel/isl/isl_surface_state.c > +++ b/src/intel/isl/isl_surface_state.c > @@ -423,10 +423,7 @@ isl_genX(surf_fill_state_s)(const struct isl_device > *dev, void *state, > } > > #if GEN_GEN >= 9 > - /* We don't use miptails yet. The PRM recommends that you set "Mip Tail > - * Start LOD" to 15 to prevent the hardware from trying to use them. > - */
Maybe add the "The PRM recommends..." part into isl_surf_init_s() to document the magic value 15 now there. Reviewed-by: Topi Pohjolainen <topi.pohjolai...@intel.com> > - s.MipTailStartLOD = 15; > + s.MipTailStartLOD = info->surf->miptail_start_level; > #endif > > #if GEN_GEN >= 6 > -- > 2.19.1 > > _______________________________________________ > 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