diff options
Diffstat (limited to '')
| -rw-r--r-- | src/video_core/buffer_cache/buffer_cache.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index f0f450edb..8be7bd594 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h | |||
| @@ -289,8 +289,11 @@ std::pair<typename P::Buffer*, u32> BufferCache<P>::ObtainBuffer(GPUVAddr gpu_ad | |||
| 289 | MarkWrittenBuffer(buffer_id, *cpu_addr, size); | 289 | MarkWrittenBuffer(buffer_id, *cpu_addr, size); |
| 290 | break; | 290 | break; |
| 291 | case ObtainBufferOperation::DiscardWrite: { | 291 | case ObtainBufferOperation::DiscardWrite: { |
| 292 | IntervalType interval{*cpu_addr, size}; | 292 | VAddr cpu_addr_start = Common::AlignDown(*cpu_addr, 64); |
| 293 | VAddr cpu_addr_end = Common::AlignUp(*cpu_addr + size, 64); | ||
| 294 | IntervalType interval{cpu_addr_start, cpu_addr_end}; | ||
| 293 | ClearDownload(interval); | 295 | ClearDownload(interval); |
| 296 | common_ranges.subtract(interval); | ||
| 294 | break; | 297 | break; |
| 295 | } | 298 | } |
| 296 | default: | 299 | default: |
| @@ -1159,6 +1162,11 @@ void BufferCache<P>::UpdateDrawIndirect() { | |||
| 1159 | .size = static_cast<u32>(size), | 1162 | .size = static_cast<u32>(size), |
| 1160 | .buffer_id = FindBuffer(*cpu_addr, static_cast<u32>(size)), | 1163 | .buffer_id = FindBuffer(*cpu_addr, static_cast<u32>(size)), |
| 1161 | }; | 1164 | }; |
| 1165 | VAddr cpu_addr_start = Common::AlignDown(*cpu_addr, 64); | ||
| 1166 | VAddr cpu_addr_end = Common::AlignUp(*cpu_addr + size, 64); | ||
| 1167 | IntervalType interval{cpu_addr_start, cpu_addr_end}; | ||
| 1168 | ClearDownload(interval); | ||
| 1169 | common_ranges.subtract(interval); | ||
| 1162 | }; | 1170 | }; |
| 1163 | if (current_draw_indirect->include_count) { | 1171 | if (current_draw_indirect->include_count) { |
| 1164 | update(current_draw_indirect->count_start_address, sizeof(u32), | 1172 | update(current_draw_indirect->count_start_address, sizeof(u32), |