mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-22 23:58:10 +02:00
glsl: only expose int64 atomics when extension is enabled
This limits the exposure of these functions to when the extension is available. Prevents crashes otherwise, as the rest of the infrastructure doesn't necessarily expect these functions when the extension is not available. Fixes:40c1f9883e("mesa,glsl: add support for GL_NV_shader_atomic_int64") Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8533> (cherry picked from commita0f4affcf6)
This commit is contained in:
parent
98706b7754
commit
7d2ccf574c
2 changed files with 34 additions and 27 deletions
|
|
@ -742,7 +742,7 @@
|
|||
"description": "glsl: only expose int64 atomics when extension is enabled",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": "40c1f9883e59f1a4a36b236debba7305ff57b0b0"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -764,6 +764,13 @@ buffer_atomics_supported(const _mesa_glsl_parse_state *state)
|
|||
return compute_shader(state) || shader_storage_buffer_object(state);
|
||||
}
|
||||
|
||||
static bool
|
||||
buffer_int64_atomics_supported(const _mesa_glsl_parse_state *state)
|
||||
{
|
||||
return state->NV_shader_atomic_int64_enable &&
|
||||
buffer_atomics_supported(state);
|
||||
}
|
||||
|
||||
static bool
|
||||
barrier_supported(const _mesa_glsl_parse_state *state)
|
||||
{
|
||||
|
|
@ -1368,7 +1375,7 @@ builtin_builder::create_intrinsics()
|
|||
_atomic_intrinsic2(NV_shader_atomic_float_supported,
|
||||
glsl_type::float_type,
|
||||
ir_intrinsic_generic_atomic_add),
|
||||
_atomic_intrinsic2(buffer_atomics_supported,
|
||||
_atomic_intrinsic2(buffer_int64_atomics_supported,
|
||||
glsl_type::int64_t_type,
|
||||
ir_intrinsic_generic_atomic_add),
|
||||
_atomic_counter_intrinsic1(shader_atomic_counter_ops_or_v460_desktop,
|
||||
|
|
@ -1384,10 +1391,10 @@ builtin_builder::create_intrinsics()
|
|||
_atomic_intrinsic2(INTEL_shader_atomic_float_minmax_supported,
|
||||
glsl_type::float_type,
|
||||
ir_intrinsic_generic_atomic_min),
|
||||
_atomic_intrinsic2(buffer_atomics_supported,
|
||||
_atomic_intrinsic2(buffer_int64_atomics_supported,
|
||||
glsl_type::uint64_t_type,
|
||||
ir_intrinsic_generic_atomic_min),
|
||||
_atomic_intrinsic2(buffer_atomics_supported,
|
||||
_atomic_intrinsic2(buffer_int64_atomics_supported,
|
||||
glsl_type::int64_t_type,
|
||||
ir_intrinsic_generic_atomic_min),
|
||||
_atomic_counter_intrinsic1(shader_atomic_counter_ops_or_v460_desktop,
|
||||
|
|
@ -1403,10 +1410,10 @@ builtin_builder::create_intrinsics()
|
|||
_atomic_intrinsic2(INTEL_shader_atomic_float_minmax_supported,
|
||||
glsl_type::float_type,
|
||||
ir_intrinsic_generic_atomic_max),
|
||||
_atomic_intrinsic2(buffer_atomics_supported,
|
||||
_atomic_intrinsic2(buffer_int64_atomics_supported,
|
||||
glsl_type::uint64_t_type,
|
||||
ir_intrinsic_generic_atomic_max),
|
||||
_atomic_intrinsic2(buffer_atomics_supported,
|
||||
_atomic_intrinsic2(buffer_int64_atomics_supported,
|
||||
glsl_type::int64_t_type,
|
||||
ir_intrinsic_generic_atomic_max),
|
||||
_atomic_counter_intrinsic1(shader_atomic_counter_ops_or_v460_desktop,
|
||||
|
|
@ -1419,10 +1426,10 @@ builtin_builder::create_intrinsics()
|
|||
_atomic_intrinsic2(buffer_atomics_supported,
|
||||
glsl_type::int_type,
|
||||
ir_intrinsic_generic_atomic_and),
|
||||
_atomic_intrinsic2(buffer_atomics_supported,
|
||||
_atomic_intrinsic2(buffer_int64_atomics_supported,
|
||||
glsl_type::uint64_t_type,
|
||||
ir_intrinsic_generic_atomic_and),
|
||||
_atomic_intrinsic2(buffer_atomics_supported,
|
||||
_atomic_intrinsic2(buffer_int64_atomics_supported,
|
||||
glsl_type::int64_t_type,
|
||||
ir_intrinsic_generic_atomic_and),
|
||||
_atomic_counter_intrinsic1(shader_atomic_counter_ops_or_v460_desktop,
|
||||
|
|
@ -1435,10 +1442,10 @@ builtin_builder::create_intrinsics()
|
|||
_atomic_intrinsic2(buffer_atomics_supported,
|
||||
glsl_type::int_type,
|
||||
ir_intrinsic_generic_atomic_or),
|
||||
_atomic_intrinsic2(buffer_atomics_supported,
|
||||
_atomic_intrinsic2(buffer_int64_atomics_supported,
|
||||
glsl_type::uint64_t_type,
|
||||
ir_intrinsic_generic_atomic_or),
|
||||
_atomic_intrinsic2(buffer_atomics_supported,
|
||||
_atomic_intrinsic2(buffer_int64_atomics_supported,
|
||||
glsl_type::int64_t_type,
|
||||
ir_intrinsic_generic_atomic_or),
|
||||
_atomic_counter_intrinsic1(shader_atomic_counter_ops_or_v460_desktop,
|
||||
|
|
@ -1451,10 +1458,10 @@ builtin_builder::create_intrinsics()
|
|||
_atomic_intrinsic2(buffer_atomics_supported,
|
||||
glsl_type::int_type,
|
||||
ir_intrinsic_generic_atomic_xor),
|
||||
_atomic_intrinsic2(buffer_atomics_supported,
|
||||
_atomic_intrinsic2(buffer_int64_atomics_supported,
|
||||
glsl_type::uint64_t_type,
|
||||
ir_intrinsic_generic_atomic_xor),
|
||||
_atomic_intrinsic2(buffer_atomics_supported,
|
||||
_atomic_intrinsic2(buffer_int64_atomics_supported,
|
||||
glsl_type::int64_t_type,
|
||||
ir_intrinsic_generic_atomic_xor),
|
||||
_atomic_counter_intrinsic1(shader_atomic_counter_ops_or_v460_desktop,
|
||||
|
|
@ -1467,7 +1474,7 @@ builtin_builder::create_intrinsics()
|
|||
_atomic_intrinsic2(buffer_atomics_supported,
|
||||
glsl_type::int_type,
|
||||
ir_intrinsic_generic_atomic_exchange),
|
||||
_atomic_intrinsic2(buffer_atomics_supported,
|
||||
_atomic_intrinsic2(buffer_int64_atomics_supported,
|
||||
glsl_type::int64_t_type,
|
||||
ir_intrinsic_generic_atomic_exchange),
|
||||
_atomic_intrinsic2(NV_shader_atomic_float_supported,
|
||||
|
|
@ -1483,7 +1490,7 @@ builtin_builder::create_intrinsics()
|
|||
_atomic_intrinsic3(buffer_atomics_supported,
|
||||
glsl_type::int_type,
|
||||
ir_intrinsic_generic_atomic_comp_swap),
|
||||
_atomic_intrinsic3(buffer_atomics_supported,
|
||||
_atomic_intrinsic3(buffer_int64_atomics_supported,
|
||||
glsl_type::int64_t_type,
|
||||
ir_intrinsic_generic_atomic_comp_swap),
|
||||
_atomic_intrinsic3(INTEL_shader_atomic_float_minmax_supported,
|
||||
|
|
@ -4103,7 +4110,7 @@ builtin_builder::create_builtins()
|
|||
shader_atomic_float_add,
|
||||
glsl_type::float_type),
|
||||
_atomic_op2("__intrinsic_atomic_add",
|
||||
buffer_atomics_supported,
|
||||
buffer_int64_atomics_supported,
|
||||
glsl_type::int64_t_type),
|
||||
NULL);
|
||||
add_function("atomicMin",
|
||||
|
|
@ -4117,10 +4124,10 @@ builtin_builder::create_builtins()
|
|||
shader_atomic_float_minmax,
|
||||
glsl_type::float_type),
|
||||
_atomic_op2("__intrinsic_atomic_min",
|
||||
buffer_atomics_supported,
|
||||
buffer_int64_atomics_supported,
|
||||
glsl_type::uint64_t_type),
|
||||
_atomic_op2("__intrinsic_atomic_min",
|
||||
buffer_atomics_supported,
|
||||
buffer_int64_atomics_supported,
|
||||
glsl_type::int64_t_type),
|
||||
NULL);
|
||||
add_function("atomicMax",
|
||||
|
|
@ -4134,10 +4141,10 @@ builtin_builder::create_builtins()
|
|||
shader_atomic_float_minmax,
|
||||
glsl_type::float_type),
|
||||
_atomic_op2("__intrinsic_atomic_max",
|
||||
buffer_atomics_supported,
|
||||
buffer_int64_atomics_supported,
|
||||
glsl_type::uint64_t_type),
|
||||
_atomic_op2("__intrinsic_atomic_max",
|
||||
buffer_atomics_supported,
|
||||
buffer_int64_atomics_supported,
|
||||
glsl_type::int64_t_type),
|
||||
NULL);
|
||||
add_function("atomicAnd",
|
||||
|
|
@ -4148,10 +4155,10 @@ builtin_builder::create_builtins()
|
|||
buffer_atomics_supported,
|
||||
glsl_type::int_type),
|
||||
_atomic_op2("__intrinsic_atomic_and",
|
||||
buffer_atomics_supported,
|
||||
buffer_int64_atomics_supported,
|
||||
glsl_type::uint64_t_type),
|
||||
_atomic_op2("__intrinsic_atomic_and",
|
||||
buffer_atomics_supported,
|
||||
buffer_int64_atomics_supported,
|
||||
glsl_type::int64_t_type),
|
||||
NULL);
|
||||
add_function("atomicOr",
|
||||
|
|
@ -4162,10 +4169,10 @@ builtin_builder::create_builtins()
|
|||
buffer_atomics_supported,
|
||||
glsl_type::int_type),
|
||||
_atomic_op2("__intrinsic_atomic_or",
|
||||
buffer_atomics_supported,
|
||||
buffer_int64_atomics_supported,
|
||||
glsl_type::uint64_t_type),
|
||||
_atomic_op2("__intrinsic_atomic_or",
|
||||
buffer_atomics_supported,
|
||||
buffer_int64_atomics_supported,
|
||||
glsl_type::int64_t_type),
|
||||
NULL);
|
||||
add_function("atomicXor",
|
||||
|
|
@ -4176,10 +4183,10 @@ builtin_builder::create_builtins()
|
|||
buffer_atomics_supported,
|
||||
glsl_type::int_type),
|
||||
_atomic_op2("__intrinsic_atomic_xor",
|
||||
buffer_atomics_supported,
|
||||
buffer_int64_atomics_supported,
|
||||
glsl_type::uint64_t_type),
|
||||
_atomic_op2("__intrinsic_atomic_xor",
|
||||
buffer_atomics_supported,
|
||||
buffer_int64_atomics_supported,
|
||||
glsl_type::int64_t_type),
|
||||
NULL);
|
||||
add_function("atomicExchange",
|
||||
|
|
@ -4190,7 +4197,7 @@ builtin_builder::create_builtins()
|
|||
buffer_atomics_supported,
|
||||
glsl_type::int_type),
|
||||
_atomic_op2("__intrinsic_atomic_exchange",
|
||||
buffer_atomics_supported,
|
||||
buffer_int64_atomics_supported,
|
||||
glsl_type::int64_t_type),
|
||||
_atomic_op2("__intrinsic_atomic_exchange",
|
||||
shader_atomic_float_exchange,
|
||||
|
|
@ -4204,7 +4211,7 @@ builtin_builder::create_builtins()
|
|||
buffer_atomics_supported,
|
||||
glsl_type::int_type),
|
||||
_atomic_op3("__intrinsic_atomic_comp_swap",
|
||||
buffer_atomics_supported,
|
||||
buffer_int64_atomics_supported,
|
||||
glsl_type::int64_t_type),
|
||||
_atomic_op3("__intrinsic_atomic_comp_swap",
|
||||
shader_atomic_float_minmax,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue