mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 04:30:10 +01:00
nir: Add a get_io_index_src() helper
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33402>
This commit is contained in:
parent
61108eb1b5
commit
7ac6ec2ceb
2 changed files with 42 additions and 0 deletions
|
|
@ -5154,9 +5154,11 @@ nir_lower_shader_calls(nir_shader *shader,
|
|||
void *mem_ctx);
|
||||
|
||||
int nir_get_io_offset_src_number(const nir_intrinsic_instr *instr);
|
||||
int nir_get_io_index_src_number(const nir_intrinsic_instr *instr);
|
||||
int nir_get_io_arrayed_index_src_number(const nir_intrinsic_instr *instr);
|
||||
|
||||
nir_src *nir_get_io_offset_src(nir_intrinsic_instr *instr);
|
||||
nir_src *nir_get_io_index_src(nir_intrinsic_instr *instr);
|
||||
nir_src *nir_get_io_arrayed_index_src(nir_intrinsic_instr *instr);
|
||||
nir_src *nir_get_shader_call_payload_src(nir_intrinsic_instr *call);
|
||||
|
||||
|
|
|
|||
|
|
@ -2873,6 +2873,46 @@ nir_get_io_offset_src(nir_intrinsic_instr *instr)
|
|||
return idx >= 0 ? &instr->src[idx] : NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the index or handle source number for a load/store intrinsic or -1
|
||||
* if there's no index or handle.
|
||||
*/
|
||||
int
|
||||
nir_get_io_index_src_number(const nir_intrinsic_instr *instr)
|
||||
{
|
||||
switch (instr->intrinsic) {
|
||||
case nir_intrinsic_load_ubo:
|
||||
case nir_intrinsic_load_ssbo:
|
||||
case nir_intrinsic_load_input_vertex:
|
||||
case nir_intrinsic_load_per_vertex_input:
|
||||
case nir_intrinsic_load_per_vertex_output:
|
||||
case nir_intrinsic_load_per_view_output:
|
||||
case nir_intrinsic_load_per_primitive_output:
|
||||
case nir_intrinsic_load_interpolated_input:
|
||||
case nir_intrinsic_load_smem_amd:
|
||||
case nir_intrinsic_ldc_nv:
|
||||
case nir_intrinsic_ldcx_nv:
|
||||
return 0;
|
||||
case nir_intrinsic_store_ssbo:
|
||||
case nir_intrinsic_store_per_vertex_output:
|
||||
case nir_intrinsic_store_per_view_output:
|
||||
case nir_intrinsic_store_per_primitive_output:
|
||||
return 1;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the offset or handle source for a load/store intrinsic.
|
||||
*/
|
||||
nir_src *
|
||||
nir_get_io_index_src(nir_intrinsic_instr *instr)
|
||||
{
|
||||
const int idx = nir_get_io_index_src_number(instr);
|
||||
return idx >= 0 ? &instr->src[idx] : NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the array index source number for an arrayed load/store intrinsic or -1 if there's no offset.
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue