[Mesa-stable] [PATCH 2/2] i965: Set ForceZeroRTAIndexEnable based on slots_valid

Emil Velikov emil.l.velikov at gmail.com
Thu Nov 8 15:30:29 UTC 2018


Hi Jason,

On Sat, 27 Oct 2018 at 22:35, Jason Ekstrand <jason at jlekstrand.net> wrote:
>
> Instead of setting it based on the number of layers in the framebuffer,
> disable it whenever the shader does not explicitly write the value.
> Otherwise, if the shader doesn't write the value but you do have a
> layered framebuffer, we may end up with a garbage layer and write off
> into the ether.
>
> https://bugs.freedesktop.org/show_bug.cgi?id=108571
> Cc: mesa-stable at lists.freedesktop.org
> ---
>  src/mesa/drivers/dri/i965/genX_state_upload.c | 7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/genX_state_upload.c b/src/mesa/drivers/dri/i965/genX_state_upload.c
> index 56fa5969725..d4915e86e9b 100644
> --- a/src/mesa/drivers/dri/i965/genX_state_upload.c
> +++ b/src/mesa/drivers/dri/i965/genX_state_upload.c
> @@ -1458,7 +1458,6 @@ genX(upload_clip_state)(struct brw_context *brw)
>     struct brw_wm_prog_data *wm_prog_data =
>        brw_wm_prog_data(brw->wm.base.prog_data);
>
> -#if GEN_GEN < 8
>     /* BRW_NEW_VS_PROG_DATA | BRW_NEW_TES_PROG_DATA | BRW_NEW_GS_PROG_DATA */
>     const struct brw_vue_prog_data *vue_prog_data;
>     if (brw->gs.base.prog_data)
> @@ -1467,7 +1466,6 @@ genX(upload_clip_state)(struct brw_context *brw)
>        vue_prog_data = brw_vue_prog_data(brw->tes.base.prog_data);
>     else
>        vue_prog_data = brw_vue_prog_data(brw->vs.base.prog_data);
> -#endif
>
>     brw_batch_emit(brw, GENX(3DSTATE_CLIP), clip) {
>        clip.StatisticsEnable = !brw->meta_in_progress;
> @@ -1561,8 +1559,9 @@ genX(upload_clip_state)(struct brw_context *brw)
>        clip.MinimumPointWidth = 0.125;
>        clip.MaximumPointWidth = 255.875;
>        clip.MaximumVPIndex = viewport_count - 1;
> -      if (_mesa_geometric_layers(fb) == 0)
> -         clip.ForceZeroRTAIndexEnable = true;
> +      clip.ForceZeroRTAIndexEnable =
> +         _mesa_geometric_layers(fb) == 0 ||
> +         !(vue_prog_data->vue_map.slots_valid & VARYING_BIT_LAYER);
>     }
>  }
>
> --
What the status here - did this patch fall through the cracks, is
lacking review, other?

HTH
Emil


More information about the mesa-stable mailing list