Jason Ekstrand <ja...@jlekstrand.net> writes:

> ---
>  src/intel/compiler/brw_shader.cpp | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
>
> diff --git a/src/intel/compiler/brw_shader.cpp 
> b/src/intel/compiler/brw_shader.cpp
> index 34b8f3acf93..5cb91e0dce9 100644
> --- a/src/intel/compiler/brw_shader.cpp
> +++ b/src/intel/compiler/brw_shader.cpp
> @@ -1007,6 +1007,18 @@ backend_instruction::has_side_effects() const
>     case SHADER_OPCODE_SEND:
>        return send_has_side_effects;
>  
> +   case SHADER_OPCODE_TYPED_SURFACE_READ:
> +   case SHADER_OPCODE_TYPED_SURFACE_READ_LOGICAL:
> +   case SHADER_OPCODE_UNTYPED_SURFACE_READ:
> +   case SHADER_OPCODE_UNTYPED_SURFACE_READ_LOGICAL:
> +   case SHADER_OPCODE_BYTE_SCATTERED_READ:
> +   case SHADER_OPCODE_BYTE_SCATTERED_READ_LOGICAL:
> +      /* The back-end compilers don't know how to properly re-order reads 
> with
> +       * respect to writes.  In order to prevent accidental re-ordering and
> +       * CSE, flag them as having side-effects.
> +       */
> +      return true;
> +

Why would that be necessary?  Don't surface writes and atomics act as a
scheduling barrier?

>     case SHADER_OPCODE_UNTYPED_ATOMIC:
>     case SHADER_OPCODE_UNTYPED_ATOMIC_LOGICAL:
>     case SHADER_OPCODE_UNTYPED_ATOMIC_FLOAT:
> -- 
> 2.19.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Attachment: signature.asc
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to