[Mesa-dev] [PATCH 11/36] i965/blorp: Use the ISL aux_layout for deciding whether to do an MCS fetch
Pohjolainen, Topi
topi.pohjolainen at intel.com
Fri Jul 1 06:26:05 UTC 2016
On Wed, Jun 29, 2016 at 05:37:30PM -0700, Jason Ekstrand wrote:
> AUX USAGE
Commit message looks a little incomplete. Otherwise patches 10-12 are
Reviewed-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
> ---
> src/mesa/drivers/dri/i965/brw_blorp.h | 2 ++
> src/mesa/drivers/dri/i965/brw_blorp_blit.cpp | 16 +++++++++-------
> 2 files changed, 11 insertions(+), 7 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_blorp.h b/src/mesa/drivers/dri/i965/brw_blorp.h
> index a85d368..89a799a 100644
> --- a/src/mesa/drivers/dri/i965/brw_blorp.h
> +++ b/src/mesa/drivers/dri/i965/brw_blorp.h
> @@ -272,6 +272,8 @@ struct brw_blorp_blit_prog_key
> */
> enum intel_msaa_layout tex_layout;
>
> + enum isl_aux_usage tex_aux_usage;
> +
> /* Actual number of samples per pixel in the source image. */
> unsigned src_samples;
>
> diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
> index 963432b..53c6cd8 100644
> --- a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
> @@ -901,7 +901,7 @@ static inline int count_trailing_one_bits(unsigned value)
> static nir_ssa_def *
> blorp_nir_manual_blend_average(nir_builder *b, nir_ssa_def *pos,
> unsigned tex_samples,
> - enum intel_msaa_layout tex_layout,
> + enum isl_aux_usage tex_aux_usage,
> enum brw_reg_type dst_type)
> {
> /* If non-null, this is the outer-most if statement */
> @@ -911,7 +911,7 @@ blorp_nir_manual_blend_average(nir_builder *b, nir_ssa_def *pos,
> nir_local_variable_create(b->impl, glsl_vec4_type(), "color");
>
> nir_ssa_def *mcs = NULL;
> - if (tex_layout == INTEL_MSAA_LAYOUT_CMS)
> + if (tex_aux_usage == ISL_AUX_USAGE_MCS)
> mcs = blorp_nir_txf_ms_mcs(b, pos);
>
> /* We add together samples using a binary tree structure, e.g. for 4x MSAA:
> @@ -956,7 +956,7 @@ blorp_nir_manual_blend_average(nir_builder *b, nir_ssa_def *pos,
> nir_imm_int(b, i));
> texture_data[stack_depth++] = blorp_nir_txf_ms(b, ms_pos, mcs, dst_type);
>
> - if (i == 0 && tex_layout == INTEL_MSAA_LAYOUT_CMS) {
> + if (i == 0 && tex_aux_usage == ISL_AUX_USAGE_MCS) {
> /* The Ivy Bridge PRM, Vol4 Part1 p27 (Multisample Control Surface)
> * suggests an optimization:
> *
> @@ -1073,7 +1073,7 @@ blorp_nir_manual_blend_bilinear(nir_builder *b, nir_ssa_def *pos,
> * here inside the loop after computing the pixel coordinates.
> */
> nir_ssa_def *mcs = NULL;
> - if (key->tex_layout == INTEL_MSAA_LAYOUT_CMS)
> + if (key->tex_aux_usage == ISL_AUX_USAGE_MCS)
> mcs = blorp_nir_txf_ms_mcs(b, sample_coords_int);
>
> /* Compute sample index and map the sample index to a sample number.
> @@ -1430,7 +1430,7 @@ brw_blorp_build_nir_shader(struct brw_context *brw,
> } else {
> /* Gen7+ hardware doesn't automaticaly blend. */
> color = blorp_nir_manual_blend_average(&b, src_pos, key->src_samples,
> - key->src_layout,
> + key->tex_aux_usage,
> key->texture_data_type);
> }
> } else if (key->blend && key->blit_scaled) {
> @@ -1482,7 +1482,7 @@ brw_blorp_build_nir_shader(struct brw_context *brw,
> color = blorp_nir_txf(&b, &v, src_pos, key->texture_data_type);
> } else {
> nir_ssa_def *mcs = NULL;
> - if (key->tex_layout == INTEL_MSAA_LAYOUT_CMS)
> + if (key->tex_aux_usage == ISL_AUX_USAGE_MCS)
> mcs = blorp_nir_txf_ms_mcs(&b, src_pos);
>
> color = blorp_nir_txf_ms(&b, src_pos, mcs, key->texture_data_type);
> @@ -1516,7 +1516,7 @@ brw_blorp_get_blit_kernel(struct brw_context *brw,
> struct brw_wm_prog_key wm_key;
> brw_blorp_init_wm_prog_key(&wm_key);
> wm_key.tex.compressed_multisample_layout_mask =
> - prog_key->tex_layout == INTEL_MSAA_LAYOUT_CMS;
> + prog_key->tex_aux_usage == ISL_AUX_USAGE_MCS;
> wm_key.tex.msaa_16 = prog_key->tex_samples == 16;
> wm_key.multisample_fbo = prog_key->rt_samples > 1;
>
> @@ -1788,6 +1788,8 @@ brw_blorp_blit_miptrees(struct brw_context *brw,
> wm_prog_key.tex_samples = params.src.surf.samples;
> wm_prog_key.rt_samples = params.dst.surf.samples;
>
> + wm_prog_key.tex_aux_usage = params.src.aux_usage;
> +
> /* tex_layout and rt_layout indicate the MSAA layout the GPU pipeline will
> * use to access the source and destination surfaces.
> */
> --
> 2.5.0.400.gff86faf
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list