mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-03 16:39:01 -06:00 
			
		
		
		
	Merge pull request #6690 from ReinUsesLisp/dma-clear-fixups
buffer_cache: Misc fixups related to buffer clears
This commit is contained in:
		@@ -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;
 | 
					    const BufferId buffer = FindBuffer(*cpu_dst_address, static_cast<u32>(size));
 | 
				
			||||||
    do {
 | 
					 | 
				
			||||||
        has_deleted_buffers = false;
 | 
					 | 
				
			||||||
        buffer = FindBuffer(*cpu_dst_address, static_cast<u32>(size));
 | 
					 | 
				
			||||||
    } while (has_deleted_buffers);
 | 
					 | 
				
			||||||
    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;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -100,7 +100,7 @@ void BufferCacheRuntime::CopyBuffer(Buffer& dst_buffer, Buffer& src_buffer,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void BufferCacheRuntime::ClearBuffer(Buffer& dest_buffer, u32 offset, size_t size, u32 value) {
 | 
					void BufferCacheRuntime::ClearBuffer(Buffer& dest_buffer, u32 offset, size_t size, u32 value) {
 | 
				
			||||||
    glClearNamedBufferSubData(dest_buffer.Handle(), GL_R32UI, static_cast<GLintptr>(offset),
 | 
					    glClearNamedBufferSubData(dest_buffer.Handle(), GL_R32UI, static_cast<GLintptr>(offset),
 | 
				
			||||||
                              static_cast<GLsizeiptr>(size / sizeof(u32)), GL_RGBA, GL_UNSIGNED_INT,
 | 
					                              static_cast<GLsizeiptr>(size / sizeof(u32)), GL_RED, GL_UNSIGNED_INT,
 | 
				
			||||||
                              &value);
 | 
					                              &value);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user