glsl: add intrinsics for ARB_shader_group_vote and ARB_shader_ballot
These operations are currently implemented as IR expressions. However, they cannot be transformed and moved in the way that other IR expressions can because they have non-trivial interactions with control-flow. Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
@@ -1098,6 +1098,13 @@ enum ir_intrinsic_id {
|
||||
ir_intrinsic_memory_barrier_image,
|
||||
ir_intrinsic_memory_barrier_shared,
|
||||
|
||||
ir_intrinsic_vote_all,
|
||||
ir_intrinsic_vote_any,
|
||||
ir_intrinsic_vote_eq,
|
||||
ir_intrinsic_ballot,
|
||||
ir_intrinsic_read_invocation,
|
||||
ir_intrinsic_read_first_invocation,
|
||||
|
||||
ir_intrinsic_shared_load,
|
||||
ir_intrinsic_shared_store = MAKE_INTRINSIC_FOR_TYPE(store, shared),
|
||||
ir_intrinsic_shared_atomic_add = MAKE_INTRINSIC_FOR_TYPE(atomic_add, shared),
|
||||
|
@@ -3994,6 +3994,12 @@ glsl_to_tgsi_visitor::visit(ir_call *ir)
|
||||
return;
|
||||
}
|
||||
|
||||
case ir_intrinsic_vote_all:
|
||||
case ir_intrinsic_vote_any:
|
||||
case ir_intrinsic_vote_eq:
|
||||
case ir_intrinsic_ballot:
|
||||
case ir_intrinsic_read_first_invocation:
|
||||
case ir_intrinsic_read_invocation:
|
||||
case ir_intrinsic_invalid:
|
||||
case ir_intrinsic_generic_load:
|
||||
case ir_intrinsic_generic_store:
|
||||
|
Reference in New Issue
Block a user