Browse Source

DMA Pusher: Fix regression caused by guest memory optimizations

Fernando Sahmkow 2 years ago
parent
commit
8beda6a2bf
1 changed files with 8 additions and 0 deletions
  1. 8 0
      src/video_core/dma_pusher.cpp

+ 8 - 0
src/video_core/dma_pusher.cpp

@@ -83,6 +83,14 @@ bool DmaPusher::Step() {
                     dma_state.dma_get, command_list_header.size * sizeof(u32));
                     dma_state.dma_get, command_list_header.size * sizeof(u32));
             }
             }
         }
         }
+        if (Settings::IsGPULevelHigh() && dma_state.method < MacroRegistersStart) {
+            Core::Memory::GpuGuestMemory<Tegra::CommandHeader,
+                                         Core::Memory::GuestMemoryFlags::SafeRead>
+                headers(memory_manager, dma_state.dma_get, command_list_header.size,
+                        &command_headers);
+            ProcessCommands(headers);
+            return true;
+        }
         Core::Memory::GpuGuestMemory<Tegra::CommandHeader,
         Core::Memory::GpuGuestMemory<Tegra::CommandHeader,
                                      Core::Memory::GuestMemoryFlags::UnsafeRead>
                                      Core::Memory::GuestMemoryFlags::UnsafeRead>
             headers(memory_manager, dma_state.dma_get, command_list_header.size, &command_headers);
             headers(memory_manager, dma_state.dma_get, command_list_header.size, &command_headers);