[Mesa-dev] [PATCH] glsl: correct compute shader checks for memoryBarrier functions
Anuj Phogat
anuj.phogat at gmail.com
Fri Feb 3 19:52:17 UTC 2017
On Fri, Feb 3, 2017 at 7:25 AM, Marc Di Luzio
<mdiluzio at feralinteractive.com> wrote:
> As per the spec -
> "The functions memoryBarrierShared() and groupMemoryBarrier() are
> available only in compute shaders; the other functions are available
> in all shader types."
>
> Conform to this by adding another delegate to check for compute
> shader support instead of only whether the current stage is compute
>
> This allows some fragment shaders in Dirt Rally to compile
> ---
> src/compiler/glsl/builtin_functions.cpp | 18 ++++++++++++------
> 1 file changed, 12 insertions(+), 6 deletions(-)
>
> diff --git a/src/compiler/glsl/builtin_functions.cpp b/src/compiler/glsl/builtin_functions.cpp
> index 6d3b950..ac74636 100644
> --- a/src/compiler/glsl/builtin_functions.cpp
> +++ b/src/compiler/glsl/builtin_functions.cpp
> @@ -538,6 +538,12 @@ compute_shader(const _mesa_glsl_parse_state *state)
> }
>
> static bool
> +compute_shader_supported(const _mesa_glsl_parse_state *state)
> +{
> + return state->has_compute_shader();
> +}
> +
> +static bool
> buffer_atomics_supported(const _mesa_glsl_parse_state *state)
> {
> return compute_shader(state) || shader_storage_buffer_object(state);
> @@ -1098,15 +1104,15 @@ builtin_builder::create_intrinsics()
> ir_intrinsic_group_memory_barrier),
> NULL);
> add_function("__intrinsic_memory_barrier_atomic_counter",
> - _memory_barrier_intrinsic(compute_shader,
> + _memory_barrier_intrinsic(compute_shader_supported,
> ir_intrinsic_memory_barrier_atomic_counter),
> NULL);
> add_function("__intrinsic_memory_barrier_buffer",
> - _memory_barrier_intrinsic(compute_shader,
> + _memory_barrier_intrinsic(compute_shader_supported,
> ir_intrinsic_memory_barrier_buffer),
> NULL);
> add_function("__intrinsic_memory_barrier_image",
> - _memory_barrier_intrinsic(compute_shader,
> + _memory_barrier_intrinsic(compute_shader_supported,
> ir_intrinsic_memory_barrier_image),
> NULL);
> add_function("__intrinsic_memory_barrier_shared",
> @@ -2958,15 +2964,15 @@ builtin_builder::create_builtins()
> NULL);
> add_function("memoryBarrierAtomicCounter",
> _memory_barrier("__intrinsic_memory_barrier_atomic_counter",
> - compute_shader),
> + compute_shader_supported),
> NULL);
> add_function("memoryBarrierBuffer",
> _memory_barrier("__intrinsic_memory_barrier_buffer",
> - compute_shader),
> + compute_shader_supported),
> NULL);
> add_function("memoryBarrierImage",
> _memory_barrier("__intrinsic_memory_barrier_image",
> - compute_shader),
> + compute_shader_supported),
> NULL);
> add_function("memoryBarrierShared",
> _memory_barrier("__intrinsic_memory_barrier_shared",
> --
> 2.9.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Cross checked the GLSL 4.5 spec. Please add:
Cc: 17.0 <mesa-stable at lists.freedesktop.org>
Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>
More information about the mesa-dev
mailing list