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);