glsl: add EXT_shader_image_load_store new image functions
This extension has 2 functions that are missing from the ARB versions: - imageAtomicIncWrap - imageAtomicDecWrap Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:

committed by
Marek Olšák

parent
70a47fb032
commit
fc0a2e5d01
@@ -4423,6 +4423,18 @@ builtin_builder::add_image_functions(bool glsl)
|
||||
flags | IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE |
|
||||
IMAGE_FUNCTION_MS_ONLY,
|
||||
ir_intrinsic_image_samples);
|
||||
|
||||
/* EXT_shader_image_load_store */
|
||||
add_image_function(glsl ? "imageAtomicIncWrap" : "__intrinsic_image_atomic_inc_wrap",
|
||||
"__intrinsic_image_atomic_inc_wrap",
|
||||
&builtin_builder::_image_prototype, 1,
|
||||
(atom_flags | IMAGE_FUNCTION_EXT_ONLY),
|
||||
ir_intrinsic_image_atomic_inc_wrap);
|
||||
add_image_function(glsl ? "imageAtomicDecWrap" : "__intrinsic_image_atomic_dec_wrap",
|
||||
"__intrinsic_image_atomic_dec_wrap",
|
||||
&builtin_builder::_image_prototype, 1,
|
||||
(atom_flags | IMAGE_FUNCTION_EXT_ONLY),
|
||||
ir_intrinsic_image_atomic_dec_wrap);
|
||||
}
|
||||
|
||||
ir_variable *
|
||||
|
@@ -1106,6 +1106,8 @@ enum ir_intrinsic_id {
|
||||
ir_intrinsic_image_atomic_comp_swap,
|
||||
ir_intrinsic_image_size,
|
||||
ir_intrinsic_image_samples,
|
||||
ir_intrinsic_image_atomic_inc_wrap,
|
||||
ir_intrinsic_image_atomic_dec_wrap,
|
||||
|
||||
ir_intrinsic_ssbo_load,
|
||||
ir_intrinsic_ssbo_store = MAKE_INTRINSIC_FOR_TYPE(store, ssbo),
|
||||
|
@@ -3938,6 +3938,12 @@ glsl_to_tgsi_visitor::visit_image_intrinsic(ir_call *ir)
|
||||
case ir_intrinsic_image_atomic_comp_swap:
|
||||
opcode = TGSI_OPCODE_ATOMCAS;
|
||||
break;
|
||||
case ir_intrinsic_image_atomic_inc_wrap:
|
||||
opcode = TGSI_OPCODE_ATOMINC_WRAP;
|
||||
break;
|
||||
case ir_intrinsic_image_atomic_dec_wrap:
|
||||
opcode = TGSI_OPCODE_ATOMDEC_WRAP;
|
||||
break;
|
||||
default:
|
||||
assert(!"Unexpected intrinsic");
|
||||
return;
|
||||
@@ -4063,6 +4069,8 @@ glsl_to_tgsi_visitor::visit(ir_call *ir)
|
||||
case ir_intrinsic_image_atomic_comp_swap:
|
||||
case ir_intrinsic_image_size:
|
||||
case ir_intrinsic_image_samples:
|
||||
case ir_intrinsic_image_atomic_inc_wrap:
|
||||
case ir_intrinsic_image_atomic_dec_wrap:
|
||||
visit_image_intrinsic(ir);
|
||||
return;
|
||||
|
||||
|
Reference in New Issue
Block a user