Просмотр исходного кода

maxwell_3d: track shadow ram ctrl and hw reg value

Nguyen Dac Nam 6 лет назад
Родитель
Сommit
63c2635e6f
1 измененных файлов с 10 добавлено и 0 удалено
  1. 10 0
      src/video_core/engines/maxwell_3d.cpp

+ 10 - 0
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;