[Mesa-dev] [PATCH] intel/compiler: Flag surface reads as having side-effects

Francisco Jerez currojerez at riseup.net
Mon Nov 26 20:07:57 UTC 2018


Jason Ekstrand <jason at 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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 227 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20181126/f033875f/attachment.sig>


More information about the mesa-dev mailing list