nir: add nir_address_format_2x32bit_global

This adds support for global 64-bit GPU addresses as a pair of
32-bit values. This is useful for platforms with 32-bit GPUs
that want to support VK_KHR_buffer_device_address, which makes
GPU addresses explicitly 64-bit.

With the new format we also add new global intrinsics with 2x32
suffix that consume the new address format.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17275>
This commit is contained in:
Iago Toral Quiroga
2022-06-22 11:28:53 +02:00
parent ea3acbef8d
commit b18cecbfb6
4 changed files with 89 additions and 10 deletions

View File

@@ -351,6 +351,7 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr)
case nir_intrinsic_load_shared:
case nir_intrinsic_load_shared2_amd:
case nir_intrinsic_load_global:
case nir_intrinsic_load_global_2x32:
case nir_intrinsic_load_global_constant:
case nir_intrinsic_load_global_amd:
case nir_intrinsic_load_uniform:
@@ -558,6 +559,20 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr)
case nir_intrinsic_global_atomic_fmin_amd:
case nir_intrinsic_global_atomic_fmax_amd:
case nir_intrinsic_global_atomic_fcomp_swap_amd:
case nir_intrinsic_global_atomic_add_2x32:
case nir_intrinsic_global_atomic_imin_2x32:
case nir_intrinsic_global_atomic_umin_2x32:
case nir_intrinsic_global_atomic_imax_2x32:
case nir_intrinsic_global_atomic_umax_2x32:
case nir_intrinsic_global_atomic_and_2x32:
case nir_intrinsic_global_atomic_or_2x32:
case nir_intrinsic_global_atomic_xor_2x32:
case nir_intrinsic_global_atomic_exchange_2x32:
case nir_intrinsic_global_atomic_comp_swap_2x32:
case nir_intrinsic_global_atomic_fadd_2x32:
case nir_intrinsic_global_atomic_fmin_2x32:
case nir_intrinsic_global_atomic_fmax_2x32:
case nir_intrinsic_global_atomic_fcomp_swap_2x32:
case nir_intrinsic_atomic_counter_add:
case nir_intrinsic_atomic_counter_min:
case nir_intrinsic_atomic_counter_max: