mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 22:49:13 +02:00
ac/nir: Introduce ac_nir_calc_io_offset_mapped.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28487>
This commit is contained in:
parent
3d43f8c1a1
commit
10acebf88f
2 changed files with 27 additions and 9 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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]);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue