summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/shader_recompiler/frontend/maxwell/translate/impl/internal_stage_buffer_entry_read.cpp11
1 files changed, 9 insertions, 2 deletions
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