diff options
author | Jason Ekstrand <jason.ekstrand@collabora.com> | 2022-11-29 14:04:50 -0600 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2022-12-01 04:56:48 +0000 |
commit | 19ad2629d067bb38b47dcb03733bd6609a774f44 (patch) | |
tree | 793ee73048fdba91e67fa20c4cc6924e9f5b1287 /src/intel | |
parent | 3c09571f67ccb7e0804be44e8d27cc97156c0ea7 (diff) |
hasvk: Implement lower_base_workgroup_id
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20068>
Diffstat (limited to 'src/intel')
-rw-r--r-- | src/intel/vulkan_hasvk/anv_nir_apply_pipeline_layout.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/intel/vulkan_hasvk/anv_nir_apply_pipeline_layout.c b/src/intel/vulkan_hasvk/anv_nir_apply_pipeline_layout.c index 0dec0744516..3fa424cf4d4 100644 --- a/src/intel/vulkan_hasvk/anv_nir_apply_pipeline_layout.c +++ b/src/intel/vulkan_hasvk/anv_nir_apply_pipeline_layout.c @@ -1106,6 +1106,21 @@ lower_load_constant(nir_builder *b, nir_intrinsic_instr *intrin, return true; } +static bool +lower_base_workgroup_id(nir_builder *b, nir_intrinsic_instr *intrin, + struct apply_pipeline_layout_state *state) +{ + b->cursor = nir_instr_remove(&intrin->instr); + + nir_ssa_def *base_workgroup_id = + nir_load_push_constant(b, 3, 32, nir_imm_int(b, 0), + .base = offsetof(struct anv_push_constants, cs.base_work_group_id), + .range = 3 * sizeof(uint32_t)); + nir_ssa_def_rewrite_uses(&intrin->dest.ssa, base_workgroup_id); + + return true; +} + static void lower_tex_deref(nir_builder *b, nir_tex_instr *tex, nir_tex_src_type deref_src_type, @@ -1377,6 +1392,8 @@ apply_pipeline_layout(nir_builder *b, nir_instr *instr, void *_state) return lower_image_intrinsic(b, intrin, state); case nir_intrinsic_load_constant: return lower_load_constant(b, intrin, state); + case nir_intrinsic_load_base_workgroup_id: + return lower_base_workgroup_id(b, intrin, state); case nir_intrinsic_load_ray_query_global_intel: return lower_ray_query_globals(b, intrin, state); default: |