diff options
| author | 2022-11-27 00:58:06 +0100 | |
|---|---|---|
| committer | 2023-01-01 16:43:57 -0500 | |
| commit | cb1497d0d7711a1c0e527aaa3e1dc3f95e5a6644 (patch) | |
| tree | 46e00278c6265ed501488e7c6f02fc4c12a6af6c /src/video_core/dma_pusher.cpp | |
| parent | Revert Buffer cache changes and setup additional macros. (diff) | |
| download | yuzu-cb1497d0d7711a1c0e527aaa3e1dc3f95e5a6644.tar.gz yuzu-cb1497d0d7711a1c0e527aaa3e1dc3f95e5a6644.tar.xz yuzu-cb1497d0d7711a1c0e527aaa3e1dc3f95e5a6644.zip | |
DMAPusher: Improve collection of non executing methods
Diffstat (limited to 'src/video_core/dma_pusher.cpp')
| -rw-r--r-- | src/video_core/dma_pusher.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/video_core/dma_pusher.cpp b/src/video_core/dma_pusher.cpp index b3e9cb82e..551929824 100644 --- a/src/video_core/dma_pusher.cpp +++ b/src/video_core/dma_pusher.cpp | |||
| @@ -178,6 +178,11 @@ void DmaPusher::CallMethod(u32 argument) const { | |||
| 178 | }); | 178 | }); |
| 179 | } else { | 179 | } else { |
| 180 | auto subchannel = subchannels[dma_state.subchannel]; | 180 | auto subchannel = subchannels[dma_state.subchannel]; |
| 181 | if (!subchannel->execution_mask[dma_state.method]) [[likely]] { | ||
| 182 | subchannel->method_sink.emplace_back(dma_state.method, argument); | ||
| 183 | return; | ||
| 184 | } | ||
| 185 | subchannel->ConsumeSink(); | ||
| 181 | subchannel->current_dma_segment = dma_state.dma_get + dma_state.dma_word_offset; | 186 | subchannel->current_dma_segment = dma_state.dma_get + dma_state.dma_word_offset; |
| 182 | subchannel->CallMethod(dma_state.method, argument, dma_state.is_last_call); | 187 | subchannel->CallMethod(dma_state.method, argument, dma_state.is_last_call); |
| 183 | } | 188 | } |
| @@ -189,6 +194,7 @@ void DmaPusher::CallMultiMethod(const u32* base_start, u32 num_methods) const { | |||
| 189 | dma_state.method_count); | 194 | dma_state.method_count); |
| 190 | } else { | 195 | } else { |
| 191 | auto subchannel = subchannels[dma_state.subchannel]; | 196 | auto subchannel = subchannels[dma_state.subchannel]; |
| 197 | subchannel->ConsumeSink(); | ||
| 192 | subchannel->current_dma_segment = dma_state.dma_get + dma_state.dma_word_offset; | 198 | subchannel->current_dma_segment = dma_state.dma_get + dma_state.dma_word_offset; |
| 193 | subchannel->CallMultiMethod(dma_state.method, base_start, num_methods, | 199 | subchannel->CallMultiMethod(dma_state.method, base_start, num_methods, |
| 194 | dma_state.method_count); | 200 | dma_state.method_count); |