On Wed, Jul 19, 2017 at 02:01:37PM -0700, Jason Ekstrand wrote: > --- > src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 59 > ++++++++++++++++++--------- > src/mesa/drivers/dri/i965/intel_mipmap_tree.h | 4 ++ > 2 files changed, 43 insertions(+), 20 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c > b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c > index 2d2a813..0a63178 100644 > --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c > +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c > @@ -2679,6 +2679,33 @@ can_texture_with_ccs(struct brw_context *brw, > return true; > } > > +enum isl_aux_usage > +intel_miptree_texture_aux_usage(struct brw_context *brw, > + struct intel_mipmap_tree *mt,
Could be const. > + enum isl_format view_format) > +{ > + switch (mt->aux_usage) { > + case ISL_AUX_USAGE_HIZ: > + if (intel_miptree_sample_with_hiz(brw, mt)) > + return ISL_AUX_USAGE_HIZ; > + break; > + > + case ISL_AUX_USAGE_MCS: > + return ISL_AUX_USAGE_MCS; > + > + case ISL_AUX_USAGE_CCS_D: > + case ISL_AUX_USAGE_CCS_E: > + if (mt->mcs_buf && can_texture_with_ccs(brw, mt, view_format)) > + return ISL_AUX_USAGE_CCS_E; > + break; > + > + default: > + break; > + } > + > + return ISL_AUX_USAGE_NONE; > +} > + > static void > intel_miptree_prepare_texture_slices(struct brw_context *brw, > struct intel_mipmap_tree *mt, > @@ -2687,31 +2714,23 @@ intel_miptree_prepare_texture_slices(struct > brw_context *brw, > uint32_t start_layer, uint32_t > num_layers, > bool *aux_supported_out) > { > - bool aux_supported, clear_supported; > - if (_mesa_is_format_color_format(mt->format)) { > - if (mt->num_samples > 1) { > - aux_supported = clear_supported = true; > - } else { > - aux_supported = can_texture_with_ccs(brw, mt, view_format); > - } > + enum isl_aux_usage aux_usage = > + intel_miptree_texture_aux_usage(brw, mt, view_format); This as well. > + bool clear_supported = aux_usage != ISL_AUX_USAGE_NONE; > > - /* Clear color is specified as ints or floats and the conversion is > - * done by the sampler. If we have a texture view, we would have to > - * perform the clear color conversion manually. Just disable clear > - * color. > - */ > - clear_supported = aux_supported && (mt->format == view_format); > - } else if (mt->format == MESA_FORMAT_S_UINT8) { > - aux_supported = clear_supported = false; > - } else { > - aux_supported = clear_supported = intel_miptree_sample_with_hiz(brw, > mt); > - } > + /* Clear color is specified as ints or floats and the conversion is done > by > + * the sampler. If we have a texture view, we would have to perform the > + * clear color conversion manually. Just disable clear color. > + */ > + if (mt->format != view_format) > + clear_supported = false; > > intel_miptree_prepare_access(brw, mt, start_level, num_levels, > start_layer, num_layers, > - aux_supported, clear_supported); > + aux_usage != ISL_AUX_USAGE_NONE, > + clear_supported); > if (aux_supported_out) > - *aux_supported_out = aux_supported; > + *aux_supported_out = aux_usage != ISL_AUX_USAGE_NONE; > } > > void > diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h > b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h > index 45ac5df..64ea413 100644 > --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h > +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h > @@ -923,6 +923,10 @@ intel_miptree_access_raw(struct brw_context *brw, > intel_miptree_finish_write(brw, mt, level, layer, 1, false); > } > > +enum isl_aux_usage > +intel_miptree_texture_aux_usage(struct brw_context *brw, > + struct intel_mipmap_tree *mt, > + enum isl_format view_format); > void > intel_miptree_prepare_texture(struct brw_context *brw, > struct intel_mipmap_tree *mt, > -- > 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