glsl: Add built-in functions for INTEL_shader_atomic_float_minmax
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
This commit is contained in:
@@ -676,7 +676,20 @@ shader_atomic_float_add(const _mesa_glsl_parse_state *state)
|
|||||||
static bool
|
static bool
|
||||||
shader_atomic_float_exchange(const _mesa_glsl_parse_state *state)
|
shader_atomic_float_exchange(const _mesa_glsl_parse_state *state)
|
||||||
{
|
{
|
||||||
return state->NV_shader_atomic_float_enable;
|
return state->NV_shader_atomic_float_enable ||
|
||||||
|
state->INTEL_shader_atomic_float_minmax_enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
INTEL_shader_atomic_float_minmax_supported(const _mesa_glsl_parse_state *state)
|
||||||
|
{
|
||||||
|
return state->extensions->INTEL_shader_atomic_float_minmax;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
shader_atomic_float_minmax(const _mesa_glsl_parse_state *state)
|
||||||
|
{
|
||||||
|
return state->INTEL_shader_atomic_float_minmax_enable;
|
||||||
}
|
}
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
@@ -1178,6 +1191,9 @@ builtin_builder::create_intrinsics()
|
|||||||
_atomic_intrinsic2(buffer_atomics_supported,
|
_atomic_intrinsic2(buffer_atomics_supported,
|
||||||
glsl_type::int_type,
|
glsl_type::int_type,
|
||||||
ir_intrinsic_generic_atomic_min),
|
ir_intrinsic_generic_atomic_min),
|
||||||
|
_atomic_intrinsic2(INTEL_shader_atomic_float_minmax_supported,
|
||||||
|
glsl_type::float_type,
|
||||||
|
ir_intrinsic_generic_atomic_min),
|
||||||
_atomic_counter_intrinsic1(shader_atomic_counter_ops_or_v460_desktop,
|
_atomic_counter_intrinsic1(shader_atomic_counter_ops_or_v460_desktop,
|
||||||
ir_intrinsic_atomic_counter_min),
|
ir_intrinsic_atomic_counter_min),
|
||||||
NULL);
|
NULL);
|
||||||
@@ -1188,6 +1204,9 @@ builtin_builder::create_intrinsics()
|
|||||||
_atomic_intrinsic2(buffer_atomics_supported,
|
_atomic_intrinsic2(buffer_atomics_supported,
|
||||||
glsl_type::int_type,
|
glsl_type::int_type,
|
||||||
ir_intrinsic_generic_atomic_max),
|
ir_intrinsic_generic_atomic_max),
|
||||||
|
_atomic_intrinsic2(INTEL_shader_atomic_float_minmax_supported,
|
||||||
|
glsl_type::float_type,
|
||||||
|
ir_intrinsic_generic_atomic_max),
|
||||||
_atomic_counter_intrinsic1(shader_atomic_counter_ops_or_v460_desktop,
|
_atomic_counter_intrinsic1(shader_atomic_counter_ops_or_v460_desktop,
|
||||||
ir_intrinsic_atomic_counter_max),
|
ir_intrinsic_atomic_counter_max),
|
||||||
NULL);
|
NULL);
|
||||||
@@ -1241,6 +1260,9 @@ builtin_builder::create_intrinsics()
|
|||||||
_atomic_intrinsic3(buffer_atomics_supported,
|
_atomic_intrinsic3(buffer_atomics_supported,
|
||||||
glsl_type::int_type,
|
glsl_type::int_type,
|
||||||
ir_intrinsic_generic_atomic_comp_swap),
|
ir_intrinsic_generic_atomic_comp_swap),
|
||||||
|
_atomic_intrinsic3(INTEL_shader_atomic_float_minmax_supported,
|
||||||
|
glsl_type::float_type,
|
||||||
|
ir_intrinsic_generic_atomic_comp_swap),
|
||||||
_atomic_counter_intrinsic2(shader_atomic_counter_ops_or_v460_desktop,
|
_atomic_counter_intrinsic2(shader_atomic_counter_ops_or_v460_desktop,
|
||||||
ir_intrinsic_atomic_counter_comp_swap),
|
ir_intrinsic_atomic_counter_comp_swap),
|
||||||
NULL);
|
NULL);
|
||||||
@@ -3186,6 +3208,9 @@ builtin_builder::create_builtins()
|
|||||||
_atomic_op2("__intrinsic_atomic_min",
|
_atomic_op2("__intrinsic_atomic_min",
|
||||||
buffer_atomics_supported,
|
buffer_atomics_supported,
|
||||||
glsl_type::int_type),
|
glsl_type::int_type),
|
||||||
|
_atomic_op2("__intrinsic_atomic_min",
|
||||||
|
shader_atomic_float_minmax,
|
||||||
|
glsl_type::float_type),
|
||||||
NULL);
|
NULL);
|
||||||
add_function("atomicMax",
|
add_function("atomicMax",
|
||||||
_atomic_op2("__intrinsic_atomic_max",
|
_atomic_op2("__intrinsic_atomic_max",
|
||||||
@@ -3194,6 +3219,9 @@ builtin_builder::create_builtins()
|
|||||||
_atomic_op2("__intrinsic_atomic_max",
|
_atomic_op2("__intrinsic_atomic_max",
|
||||||
buffer_atomics_supported,
|
buffer_atomics_supported,
|
||||||
glsl_type::int_type),
|
glsl_type::int_type),
|
||||||
|
_atomic_op2("__intrinsic_atomic_max",
|
||||||
|
shader_atomic_float_minmax,
|
||||||
|
glsl_type::float_type),
|
||||||
NULL);
|
NULL);
|
||||||
add_function("atomicAnd",
|
add_function("atomicAnd",
|
||||||
_atomic_op2("__intrinsic_atomic_and",
|
_atomic_op2("__intrinsic_atomic_and",
|
||||||
@@ -3237,6 +3265,9 @@ builtin_builder::create_builtins()
|
|||||||
_atomic_op3("__intrinsic_atomic_comp_swap",
|
_atomic_op3("__intrinsic_atomic_comp_swap",
|
||||||
buffer_atomics_supported,
|
buffer_atomics_supported,
|
||||||
glsl_type::int_type),
|
glsl_type::int_type),
|
||||||
|
_atomic_op3("__intrinsic_atomic_comp_swap",
|
||||||
|
shader_atomic_float_minmax,
|
||||||
|
glsl_type::float_type),
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
add_function("min3",
|
add_function("min3",
|
||||||
|
Reference in New Issue
Block a user