diff --git a/src/shader_recompiler/frontend/maxwell/translate/impl/internal_stage_buffer_entry_read.cpp b/src/shader_recompiler/frontend/maxwell/translate/impl/internal_stage_buffer_entry_read.cpp index 323f35f59..5b5016f4b 100644 --- a/src/shader_recompiler/frontend/maxwell/translate/impl/internal_stage_buffer_entry_read.cpp +++ b/src/shader_recompiler/frontend/maxwell/translate/impl/internal_stage_buffer_entry_read.cpp @@ -33,6 +33,7 @@ void TranslatorVisitor::ISBERD(u64 insn) { BitField<47, 2, Shift> shift; } const isberd{insn}; + // Validate unsupported features first if (isberd.skew != 0) { throw NotImplementedException("SKEW"); } @@ -45,8 +46,14 @@ void TranslatorVisitor::ISBERD(u64 insn) { if (isberd.shift != Shift::Default) { throw NotImplementedException("Shift {}", isberd.shift.Value()); } - LOG_WARNING(Shader, "(STUBBED) called"); - X(isberd.dest_reg, X(isberd.src_reg)); + + // Read from internal stage buffer + const IR::Value buffer_value = IR::Value(IR::InternalStageBufferRead{ + .buffer = X(isberd.src_reg), + }); + + // Store the result + X(isberd.dest_reg, buffer_value); } } // namespace Shader::Maxwell