<p dir="ltr"><br>
On Dec 15, 2015 3:52 AM, "Iago Toral Quiroga" <<a href="mailto:itoral@igalia.com">itoral@igalia.com</a>> wrote:<br>
><br>
> We want to make sure that the driver does not disable the FS unit if<br>
> the shader code only has SSBO writes (i.e. no color or depth output).<br>
><br>
> We could go a step further and check if the shader storage is actually<br>
> used for writing, but does not seem worth the trouble. Also, we do the<br>
> same thing for atomic buffers.<br>
><br>
> Fixes the following CTS test:<br>
> ES31-CTS.shader_storage_buffer_object.advanced-usage-sync-vsfs<br>
> ---<br>
>  src/mesa/drivers/dri/i965/gen7_wm_state.c | 3 ++-<br>
>  src/mesa/drivers/dri/i965/gen8_ps_state.c | 1 +<br>
>  2 files changed, 3 insertions(+), 1 deletion(-)<br>
><br>
> diff --git a/src/mesa/drivers/dri/i965/gen7_wm_state.c b/src/mesa/drivers/dri/i965/gen7_wm_state.c<br>
> index 06d5e65..d292b13 100644<br>
> --- a/src/mesa/drivers/dri/i965/gen7_wm_state.c<br>
> +++ b/src/mesa/drivers/dri/i965/gen7_wm_state.c<br>
> @@ -77,7 +77,8 @@ upload_wm_state(struct brw_context *brw)<br>
>        dw1 |= GEN7_WM_KILL_ENABLE;<br>
>     }<br>
><br>
> -   if (_mesa_active_fragment_shader_has_atomic_ops(&brw->ctx)) {<br>
> +   if (_mesa_active_fragment_shader_has_atomic_ops(&brw->ctx ) ||<br>
> +       _mesa_active_fragment_shader_has_shader_storage(&brw->ctx)) {</p>
<p dir="ltr">Ugh... We also need to be checking for images.</p>
<p dir="ltr">How about we change it to active_fragment_shader_has_side_effects and make it check all three?</p>
<p dir="ltr">>        dw1 |= GEN7_WM_DISPATCH_ENABLE;<br>
>     }<br>
><br>
> diff --git a/src/mesa/drivers/dri/i965/gen8_ps_state.c b/src/mesa/drivers/dri/i965/gen8_ps_state.c<br>
> index 945f710..8769269 100644<br>
> --- a/src/mesa/drivers/dri/i965/gen8_ps_state.c<br>
> +++ b/src/mesa/drivers/dri/i965/gen8_ps_state.c<br>
> @@ -91,6 +91,7 @@ gen8_upload_ps_extra(struct brw_context *brw,<br>
>      * BRW_NEW_FS_PROG_DATA | BRW_NEW_FRAGMENT_PROGRAM | _NEW_BUFFERS | _NEW_COLOR<br>
>      */<br>
>     if ((_mesa_active_fragment_shader_has_atomic_ops(&brw->ctx) ||<br>
> +        _mesa_active_fragment_shader_has_shader_storage(&brw->ctx) ||<br>
>          prog_data->base.nr_image_params) &&<br>
>         !brw_color_buffer_write_enabled(brw))<br>
>        dw1 |= GEN8_PSX_SHADER_HAS_UAV;<br>
> --<br>
> 1.9.1<br>
><br>
> _______________________________________________<br>
> mesa-dev mailing list<br>
> <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
> <a href="http://lists.freedesktop.org/mailman/listinfo/mesa-dev">http://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</p>