Module: Mesa Branch: main Commit: c25564b552234c383bf4a96e21f1bcffc96ceb01 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c25564b552234c383bf4a96e21f1bcffc96ceb01
Author: Qiang Yu <[email protected]> Date: Wed Jun 29 15:46:23 2022 +0800 ac/nir/ngg: ngg_gs_load_out_vtx_primflag support stream Streamout need primflag for any stream. Reviewed-by: Timur Kristóf <[email protected]> Signed-off-by: Qiang Yu <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17654> --- src/amd/common/ac_nir_lower_ngg.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/amd/common/ac_nir_lower_ngg.c b/src/amd/common/ac_nir_lower_ngg.c index 2db9ee44049..91b60855a24 100644 --- a/src/amd/common/ac_nir_lower_ngg.c +++ b/src/amd/common/ac_nir_lower_ngg.c @@ -2413,17 +2413,19 @@ ngg_gs_setup_vertex_compaction(nir_builder *b, nir_ssa_def *vertex_live, nir_ssa } static nir_ssa_def * -ngg_gs_load_out_vtx_primflag_0(nir_builder *b, nir_ssa_def *tid_in_tg, nir_ssa_def *vtx_lds_addr, - nir_ssa_def *max_num_out_vtx, lower_ngg_gs_state *s) +ngg_gs_load_out_vtx_primflag(nir_builder *b, unsigned stream, nir_ssa_def *tid_in_tg, + nir_ssa_def *vtx_lds_addr, nir_ssa_def *max_num_out_vtx, + lower_ngg_gs_state *s) { nir_ssa_def *zero = nir_imm_int(b, 0); nir_if *if_outvtx_thread = nir_push_if(b, nir_ilt(b, tid_in_tg, max_num_out_vtx)); - nir_ssa_def *primflag_0 = nir_load_shared(b, 1, 8, vtx_lds_addr, .base = s->lds_offs_primflags, .align_mul = 4u); - primflag_0 = nir_u2u32(b, primflag_0); + nir_ssa_def *primflag = nir_load_shared(b, 1, 8, vtx_lds_addr, + .base = s->lds_offs_primflags + stream); + primflag = nir_u2u32(b, primflag); nir_pop_if(b, if_outvtx_thread); - return nir_if_phi(b, primflag_0, zero); + return nir_if_phi(b, primflag, zero); } static void @@ -2568,7 +2570,7 @@ ngg_gs_finale(nir_builder *b, lower_ngg_gs_state *s) nir_scoped_barrier(b, .execution_scope=NIR_SCOPE_WORKGROUP, .memory_scope=NIR_SCOPE_WORKGROUP, .memory_semantics=NIR_MEMORY_ACQ_REL, .memory_modes=nir_var_mem_shared); - nir_ssa_def *out_vtx_primflag_0 = ngg_gs_load_out_vtx_primflag_0(b, tid_in_tg, out_vtx_lds_addr, max_vtxcnt, s); + nir_ssa_def *out_vtx_primflag_0 = ngg_gs_load_out_vtx_primflag(b, 0, tid_in_tg, out_vtx_lds_addr, max_vtxcnt, s); if (s->output_compile_time_known) { ngg_gs_export_primitives(b, max_vtxcnt, tid_in_tg, tid_in_tg, out_vtx_primflag_0, s);
