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

buffer_cache: Simplify clear logic

Use existing helper functions and avoid looping when
only one buffer has to be active.
ReinUsesLisp 5 лет назад
Родитель
Сommit
6e2ca7fbee
1 измененных файлов с 2 добавлено и 6 удалено
  1. 2 6
      src/video_core/buffer_cache/buffer_cache.h

+ 2 - 6
src/video_core/buffer_cache/buffer_cache.h

@@ -553,13 +553,9 @@ bool BufferCache<P>::DMAClear(GPUVAddr dst_address, u64 amount, u32 value) {
     ClearDownload(subtract_interval);
     ClearDownload(subtract_interval);
     common_ranges.subtract(subtract_interval);
     common_ranges.subtract(subtract_interval);
 
 
-    BufferId buffer;
-    do {
-        has_deleted_buffers = false;
-        buffer = FindBuffer(*cpu_dst_address, static_cast<u32>(size));
-    } while (has_deleted_buffers);
+    const BufferId buffer = FindBuffer(*cpu_dst_address, static_cast<u32>(size));
     auto& dest_buffer = slot_buffers[buffer];
     auto& dest_buffer = slot_buffers[buffer];
-    const u32 offset = static_cast<u32>(*cpu_dst_address - dest_buffer.CpuAddr());
+    const u32 offset = dest_buffer.Offset(*cpu_dst_address);
     runtime.ClearBuffer(dest_buffer, offset, size, value);
     runtime.ClearBuffer(dest_buffer, offset, size, value);
     return true;
     return true;
 }
 }