diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index fff0609539d..6639d715f31 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -8187,6 +8187,7 @@ visit_intrinsic(isel_context* ctx, nir_intrinsic_instr* instr) case nir_intrinsic_image_deref_samples: visit_image_samples(ctx, instr); break; case nir_intrinsic_load_ssbo: visit_load_ssbo(ctx, instr); break; case nir_intrinsic_store_ssbo: visit_store_ssbo(ctx, instr); break; + case nir_intrinsic_load_global_constant: case nir_intrinsic_load_global: visit_load_global(ctx, instr); break; case nir_intrinsic_load_buffer_amd: visit_load_buffer(ctx, instr); break; case nir_intrinsic_store_buffer_amd: visit_store_buffer(ctx, instr); break; diff --git a/src/amd/compiler/aco_instruction_selection_setup.cpp b/src/amd/compiler/aco_instruction_selection_setup.cpp index bb2e930684e..767e6fbf124 100644 --- a/src/amd/compiler/aco_instruction_selection_setup.cpp +++ b/src/amd/compiler/aco_instruction_selection_setup.cpp @@ -805,6 +805,7 @@ init_context(isel_context* ctx, nir_shader* shader) case nir_intrinsic_load_ubo: case nir_intrinsic_load_ssbo: case nir_intrinsic_load_global: + case nir_intrinsic_load_global_constant: case nir_intrinsic_vulkan_resource_index: case nir_intrinsic_get_ssbo_size: type = nir_dest_is_divergent(intrinsic->dest) ? RegType::vgpr : RegType::sgpr; diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c index 0f3524177b1..aae8fd77c78 100644 --- a/src/amd/llvm/ac_nir_to_llvm.c +++ b/src/amd/llvm/ac_nir_to_llvm.c @@ -3703,6 +3703,7 @@ static void visit_intrinsic(struct ac_nir_context *ctx, nir_intrinsic_instr *ins case nir_intrinsic_load_ssbo: result = visit_load_buffer(ctx, instr); break; + case nir_intrinsic_load_global_constant: case nir_intrinsic_load_global: result = visit_load_global(ctx, instr); break; diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index 034f4503a3d..37d3b3be5b2 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -516,6 +516,7 @@ radv_shader_compile_to_nir(struct radv_device *device, struct vk_shader_module * .phys_ssbo_addr_format = nir_address_format_64bit_global, .push_const_addr_format = nir_address_format_logical, .shared_addr_format = nir_address_format_32bit_offset, + .constant_addr_format = nir_address_format_64bit_global, .frag_coord_is_sysval = true, .use_deref_buffer_array_length = true, .debug = @@ -719,7 +720,8 @@ radv_shader_compile_to_nir(struct radv_device *device, struct vk_shader_module * } } - nir_lower_explicit_io(nir, nir_var_mem_global, nir_address_format_64bit_global); + nir_lower_explicit_io(nir, nir_var_mem_global | nir_var_mem_constant, + nir_address_format_64bit_global); /* Lower large variables that are always constant with load_constant * intrinsics, which get turned into PC-relative loads from a data