From be7bd71a8696659c54028a6cfe3619f33a6d66a9 Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Mon, 1 Aug 2022 08:55:09 +0200 Subject: [PATCH] r600/sfn: Handle pre-EG GS input fetch Signed-off-by: Gert Wollny Reviewed-by: Filip Gawin Part-of: --- src/gallium/drivers/r600/sfn/sfn_shader_gs.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_gs.cpp b/src/gallium/drivers/r600/sfn/sfn_shader_gs.cpp index c2ef2ba93a9..6a37e2aa0c2 100644 --- a/src/gallium/drivers/r600/sfn/sfn_shader_gs.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_shader_gs.cpp @@ -326,13 +326,21 @@ bool GeometryShader::emit_load_per_vertex_input(nir_intrinsic_instr* instr) assert(literal_index->u32 < 6); assert(nir_intrinsic_io_semantics(instr).num_slots == 1); + + EVTXDataFormat fmt = chip_class() >= ISA_CC_EVERGREEN ? + fmt_invalid: + fmt_32_32_32_32_float; + + auto addr = m_per_vertex_offsets[literal_index->u32]; auto fetch = new LoadFromBuffer(dest, dest_swz, addr, 16 * nir_intrinsic_base(instr), R600_GS_RING_CONST_BUFFER, nullptr, - fmt_invalid); + fmt); + + if (chip_class() >= ISA_CC_EVERGREEN) + fetch->set_fetch_flag(FetchInstr::use_const_field); - fetch->set_fetch_flag(FetchInstr::use_const_field); fetch->set_num_format(vtx_nf_norm); fetch->reset_fetch_flag(FetchInstr::format_comp_signed);