diff --git a/src/amd/common/ac_nir.c b/src/amd/common/ac_nir.c index 3c485b0b7e8..c34c1d5bc65 100644 --- a/src/amd/common/ac_nir.c +++ b/src/amd/common/ac_nir.c @@ -491,16 +491,12 @@ ac_nir_export_parameters(nir_builder *b, * including a stride to the base and component offsets. */ nir_def * -ac_nir_calc_io_offset(nir_builder *b, - nir_intrinsic_instr *intrin, - nir_def *base_stride, - unsigned component_stride, - ac_nir_map_io_driver_location map_io) +ac_nir_calc_io_offset_mapped(nir_builder *b, + nir_intrinsic_instr *intrin, + nir_def *base_stride, + unsigned component_stride, + unsigned mapped_driver_location) { - unsigned base = nir_intrinsic_base(intrin); - unsigned semantic = nir_intrinsic_io_semantics(intrin).location; - unsigned mapped_driver_location = map_io ? map_io(semantic) : base; - /* base is the driver_location, which is in slots (1 slot = 4x4 bytes) */ nir_def *base_op = nir_imul_imm(b, base_stride, mapped_driver_location); @@ -517,6 +513,21 @@ ac_nir_calc_io_offset(nir_builder *b, return nir_iadd_imm_nuw(b, nir_iadd_nuw(b, base_op, offset_op), const_op); } +nir_def * +ac_nir_calc_io_offset(nir_builder *b, + nir_intrinsic_instr *intrin, + nir_def *base_stride, + unsigned component_stride, + ac_nir_map_io_driver_location map_io) +{ + unsigned base = nir_intrinsic_base(intrin); + unsigned semantic = nir_intrinsic_io_semantics(intrin).location; + unsigned mapped_driver_location = map_io ? map_io(semantic) : base; + + return ac_nir_calc_io_offset_mapped(b, intrin, base_stride, component_stride, + mapped_driver_location); +} + bool ac_nir_lower_indirect_derefs(nir_shader *shader, enum amd_gfx_level gfx_level) diff --git a/src/amd/common/ac_nir.h b/src/amd/common/ac_nir.h index a4617b2e42c..a7112eb1f56 100644 --- a/src/amd/common/ac_nir.h +++ b/src/amd/common/ac_nir.h @@ -104,6 +104,13 @@ ac_nir_calc_io_offset(nir_builder *b, unsigned component_stride, ac_nir_map_io_driver_location map_io); +nir_def * +ac_nir_calc_io_offset_mapped(nir_builder *b, + nir_intrinsic_instr *intrin, + nir_def *base_stride, + unsigned component_stride, + unsigned mapped_location); + bool ac_nir_optimize_outputs(nir_shader *nir, bool sprite_tex_disallowed, int8_t slot_remap[NUM_TOTAL_VARYING_SLOTS], uint8_t param_export_index[NUM_TOTAL_VARYING_SLOTS]);