diff options
| -rw-r--r-- | src/video_core/buffer_cache/buffer_cache.h | 8 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_buffer_cache.cpp | 2 |
2 files changed, 3 insertions, 7 deletions
diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index 7373cb62d..5a0b6f0c0 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h | |||
| @@ -553,13 +553,9 @@ bool BufferCache<P>::DMAClear(GPUVAddr dst_address, u64 amount, u32 value) { | |||
| 553 | ClearDownload(subtract_interval); | 553 | ClearDownload(subtract_interval); |
| 554 | common_ranges.subtract(subtract_interval); | 554 | common_ranges.subtract(subtract_interval); |
| 555 | 555 | ||
| 556 | BufferId buffer; | 556 | const BufferId buffer = FindBuffer(*cpu_dst_address, static_cast<u32>(size)); |
| 557 | do { | ||
| 558 | has_deleted_buffers = false; | ||
| 559 | buffer = FindBuffer(*cpu_dst_address, static_cast<u32>(size)); | ||
| 560 | } while (has_deleted_buffers); | ||
| 561 | auto& dest_buffer = slot_buffers[buffer]; | 557 | auto& dest_buffer = slot_buffers[buffer]; |
| 562 | const u32 offset = static_cast<u32>(*cpu_dst_address - dest_buffer.CpuAddr()); | 558 | const u32 offset = dest_buffer.Offset(*cpu_dst_address); |
| 563 | runtime.ClearBuffer(dest_buffer, offset, size, value); | 559 | runtime.ClearBuffer(dest_buffer, offset, size, value); |
| 564 | return true; | 560 | return true; |
| 565 | } | 561 | } |
diff --git a/src/video_core/renderer_opengl/gl_buffer_cache.cpp b/src/video_core/renderer_opengl/gl_buffer_cache.cpp index c4189fb60..a02a45e04 100644 --- a/src/video_core/renderer_opengl/gl_buffer_cache.cpp +++ b/src/video_core/renderer_opengl/gl_buffer_cache.cpp | |||
| @@ -100,7 +100,7 @@ void BufferCacheRuntime::CopyBuffer(Buffer& dst_buffer, Buffer& src_buffer, | |||
| 100 | 100 | ||
| 101 | void BufferCacheRuntime::ClearBuffer(Buffer& dest_buffer, u32 offset, size_t size, u32 value) { | 101 | void BufferCacheRuntime::ClearBuffer(Buffer& dest_buffer, u32 offset, size_t size, u32 value) { |
| 102 | glClearNamedBufferSubData(dest_buffer.Handle(), GL_R32UI, static_cast<GLintptr>(offset), | 102 | glClearNamedBufferSubData(dest_buffer.Handle(), GL_R32UI, static_cast<GLintptr>(offset), |
| 103 | static_cast<GLsizeiptr>(size / sizeof(u32)), GL_RGBA, GL_UNSIGNED_INT, | 103 | static_cast<GLsizeiptr>(size / sizeof(u32)), GL_RED, GL_UNSIGNED_INT, |
| 104 | &value); | 104 | &value); |
| 105 | } | 105 | } |
| 106 | 106 | ||