On Wed, Jan 11, 2017 at 5:55 PM, Nanley Chery <nanleych...@gmail.com> wrote:
> Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com> > --- > src/intel/isl/isl_surface_state.c | 38 ++++++++++++++++++++++++++++++ > +++++--- > 1 file changed, 35 insertions(+), 3 deletions(-) > > diff --git a/src/intel/isl/isl_surface_state.c > b/src/intel/isl/isl_surface_state.c > index b9093cc951..54e48eb5da 100644 > --- a/src/intel/isl/isl_surface_state.c > +++ b/src/intel/isl/isl_surface_state.c > @@ -498,11 +498,14 @@ isl_genX(surf_fill_state_s)(const struct isl_device > *dev, void *state, > assert(info->y_offset_sa % y_div == 0); > s.XOffset = info->x_offset_sa / x_div; > s.YOffset = info->y_offset_sa / y_div; > -#else > - assert(info->x_offset_sa == 0); > - assert(info->y_offset_sa == 0); > #endif > > + /* If Auxiliary Surface Mode is not AUX_NONE, this field must be zero. > */ > + if ((GEN_GEN == 4 && !GEN_IS_G4X) || info->aux_usage != > ISL_AUX_USAGE_NONE) { > + assert(info->x_offset_sa == 0); > + assert(info->y_offset_sa == 0); > I believe we already handle this higher up. > + } > + > #if GEN_GEN >= 7 > if (info->aux_surf && info->aux_usage != ISL_AUX_USAGE_NONE) { > struct isl_tile_info tile_info; > @@ -520,6 +523,26 @@ isl_genX(surf_fill_state_s)(const struct isl_device > *dev, void *state, > s.AuxiliarySurfaceQPitch = > isl_surf_get_array_pitch_sa_rows(info->aux_surf) >> 2; > s.AuxiliarySurfaceBaseAddress = info->aux_address; > + > + if (info->aux_usage == ISL_AUX_USAGE_HIZ) { > + /* The number of samples must be 1 */ > + assert(info->surf->samples == 1); > + > + /* The dimension must not be 3D */ > + assert(info->surf->dim != ISL_SURF_DIM_3D); > + > + /* The format must be one of the following: */ > + switch (info->view->format) { > How about assert(info->view->format == ISL_FORMAT_R32_FLOT || info->view->format... Mostly cosmatic. Doesn't really matter. > + case ISL_FORMAT_R32_FLOAT: > + case ISL_FORMAT_R24_UNORM_X8_TYPELESS: > + case ISL_FORMAT_R16_UNORM: > + break; > + default: > + assert(!"Incompatible HiZ Sampling format"); > + break; > + } > + } > + > s.AuxiliarySurfaceMode = isl_to_gen_aux_mode[info->aux_usage]; > #else > assert(info->aux_usage == ISL_AUX_USAGE_MCS || > @@ -548,6 +571,15 @@ isl_genX(surf_fill_state_s)(const struct isl_device > *dev, void *state, > s.SamplerL2BypassModeDisable = true; > break; > default: > + /* From the SKL PRM, Programming Note under Sampler Output > Channel > + * Mapping: > + * > + * If a surface has an associated HiZ Auxilliary surface, the > + * Sampler L2 Bypass Mode Disable field in the > RENDER_SURFACE_STATE > + * must be set. > + */ > + if (GEN_GEN >= 9 && info->aux_usage == ISL_AUX_USAGE_HIZ) > + s.SamplerL2BypassModeDisable = true; > break; > } > } > -- > 2.11.0 > > _______________________________________________ > 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