summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNguyen Dac Nam <nam.kazt.91@gmail.com>2020-03-22 04:36:33 +0100
committernamkazy <nam.kazt.91@gmail.com>2020-03-22 04:53:41 +0100
commit63c2635e6fa3bcbff000cab7483cb94616db959e (patch)
treea5ad00decbad04d6249d5f23866bc39242442d0d
parentmaxwell_3d: implement MME shadow RAM (diff)
downloadyuzu-63c2635e6fa3bcbff000cab7483cb94616db959e.tar
yuzu-63c2635e6fa3bcbff000cab7483cb94616db959e.tar.gz
yuzu-63c2635e6fa3bcbff000cab7483cb94616db959e.tar.bz2
yuzu-63c2635e6fa3bcbff000cab7483cb94616db959e.tar.lz
yuzu-63c2635e6fa3bcbff000cab7483cb94616db959e.tar.xz
yuzu-63c2635e6fa3bcbff000cab7483cb94616db959e.tar.zst
yuzu-63c2635e6fa3bcbff000cab7483cb94616db959e.zip
-rw-r--r--src/video_core/engines/maxwell_3d.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp
index ce536e29b..96cbe374c 100644
--- a/src/video_core/engines/maxwell_3d.cpp
+++ b/src/video_core/engines/maxwell_3d.cpp
@@ -160,6 +160,12 @@ void Maxwell3D::CallMethod(const GPU::MethodCall& method_call) {
ASSERT_MSG(method < Regs::NUM_REGS,
"Invalid Maxwell3D register, increase the size of the Regs structure");
+ // Keep track of the register value in shadow_regs when requested.
+ if (regs.shadow_ram_control == Regs::ShadowRamControl::Track ||
+ regs.shadow_ram_control == Regs::ShadowRamControl::TrackWithFilter) {
+ shadow_state.reg_array[method] = method_call.argument;
+ }
+
if (regs.reg_array[method] != method_call.argument) {
regs.reg_array[method] = method_call.argument;
@@ -169,6 +175,10 @@ void Maxwell3D::CallMethod(const GPU::MethodCall& method_call) {
}
switch (method) {
+ case MAXWELL3D_REG_INDEX(shadow_ram_control): {
+ shadow_state.shadow_ram_control = static_cast<Regs::ShadowRamControl>(method_call.argument);
+ break;
+ }
case MAXWELL3D_REG_INDEX(macros.data): {
ProcessMacroUpload(method_call.argument);
break;