diff --git a/src/gallium/drivers/r600/sfn/sfn_emitssboinstruction.cpp b/src/gallium/drivers/r600/sfn/sfn_emitssboinstruction.cpp index 7f839be337e..ce1f7b94b75 100644 --- a/src/gallium/drivers/r600/sfn/sfn_emitssboinstruction.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_emitssboinstruction.cpp @@ -301,7 +301,8 @@ bool EmitSSBOInstruction::emit_load_ssbo(const nir_intrinsic_instr* instr) /* 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 c38a665749c..60e4bc2ed57 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_instruction_internal(Instruction *ir) 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)