diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2022-02-09 15:00:05 +0100 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2023-01-01 22:43:57 +0100 |
commit | a5a94f52ffcbf3119d272a9369021a213ea6dad2 (patch) | |
tree | ba6d42b142894d0f3f0ac34fb6ce491442bae8fd /src/video_core/dma_pusher.cpp | |
parent | Merge pull request #9538 from merryhime/char-concat (diff) | |
download | yuzu-a5a94f52ffcbf3119d272a9369021a213ea6dad2.tar yuzu-a5a94f52ffcbf3119d272a9369021a213ea6dad2.tar.gz yuzu-a5a94f52ffcbf3119d272a9369021a213ea6dad2.tar.bz2 yuzu-a5a94f52ffcbf3119d272a9369021a213ea6dad2.tar.lz yuzu-a5a94f52ffcbf3119d272a9369021a213ea6dad2.tar.xz yuzu-a5a94f52ffcbf3119d272a9369021a213ea6dad2.tar.zst yuzu-a5a94f52ffcbf3119d272a9369021a213ea6dad2.zip |
Diffstat (limited to 'src/video_core/dma_pusher.cpp')
-rw-r--r-- | src/video_core/dma_pusher.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/video_core/dma_pusher.cpp b/src/video_core/dma_pusher.cpp index 322de2606..eb1371612 100644 --- a/src/video_core/dma_pusher.cpp +++ b/src/video_core/dma_pusher.cpp @@ -61,7 +61,7 @@ bool DmaPusher::Step() { } else { const CommandListHeader command_list_header{ command_list.command_lists[dma_pushbuffer_subindex++]}; - const GPUVAddr dma_get = command_list_header.addr; + dma_state.dma_get = command_list_header.addr; if (dma_pushbuffer_subindex >= command_list.command_lists.size()) { // We've gone through the current list, remove it from the queue @@ -75,11 +75,11 @@ bool DmaPusher::Step() { // Push buffer non-empty, read a word command_headers.resize_destructive(command_list_header.size); - if (Settings::IsGPULevelHigh()) { - memory_manager.ReadBlock(dma_get, command_headers.data(), + if (Settings::IsGPULevelExtreme()) { + memory_manager.ReadBlock(dma_state.dma_get, command_headers.data(), command_list_header.size * sizeof(u32)); } else { - memory_manager.ReadBlockUnsafe(dma_get, command_headers.data(), + memory_manager.ReadBlockUnsafe(dma_state.dma_get, command_headers.data(), command_list_header.size * sizeof(u32)); } ProcessCommands(command_headers); @@ -174,8 +174,10 @@ void DmaPusher::CallMultiMethod(const u32* base_start, u32 num_methods) const { puller.CallMultiMethod(dma_state.method, dma_state.subchannel, base_start, num_methods, dma_state.method_count); } else { - subchannels[dma_state.subchannel]->CallMultiMethod(dma_state.method, base_start, - num_methods, dma_state.method_count); + auto subchannel = subchannels[dma_state.subchannel]; + subchannel->current_dma_segment = dma_state.dma_get; + subchannel->CallMultiMethod(dma_state.method, base_start, num_methods, + dma_state.method_count); } } |