r600/sfn: Fix ssbo resource offset for buffer loads
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7142>
diff --git a/src/gallium/drivers/r600/sfn/sfn_emitssboinstruction.cpp b/src/gallium/drivers/r600/sfn/sfn_emitssboinstruction.cpp
index 7f839be..ce1f7b9 100644
--- a/src/gallium/drivers/r600/sfn/sfn_emitssboinstruction.cpp
+++ b/src/gallium/drivers/r600/sfn/sfn_emitssboinstruction.cpp
@@ -301,7 +301,8 @@
/* TODO fix resource index */
auto ir = new FetchInstruction(dest, addr_temp,
- R600_IMAGE_REAL_RESOURCE_OFFSET, from_nir(instr->src[0], 0),
+ R600_IMAGE_REAL_RESOURCE_OFFSET + m_ssbo_image_offset
+ , from_nir(instr->src[0], 0),
formats[nir_dest_num_components(instr->dest) - 1], vtx_nf_int);
ir->set_dest_swizzle(dest_swt[nir_dest_num_components(instr->dest) - 1]);
ir->set_flag(vtx_use_tc);
diff --git a/src/gallium/drivers/r600/sfn/sfn_shader_base.cpp b/src/gallium/drivers/r600/sfn/sfn_shader_base.cpp
index c38a665..60e4bc2 100644
--- a/src/gallium/drivers/r600/sfn/sfn_shader_base.cpp
+++ b/src/gallium/drivers/r600/sfn/sfn_shader_base.cpp
@@ -408,6 +408,7 @@
void ShaderFromNirProcessor::emit_shader_start()
{
/* placeholder, may become an abstract method */
+ m_ssbo_instr.set_ssbo_offset(m_image_count);
}
bool ShaderFromNirProcessor::emit_jump_instruction(nir_jump_instr *instr)