forked from ShuriZma/suyu
buffer_cache: Minor fixes
Loop through the tmp_intervals by reference, rather than by copy, and fix gl clear buffer size calculation.
This commit is contained in:
parent
a9c3619d26
commit
1ea8073783
|
@ -570,13 +570,12 @@ bool BufferCache<P>::DMACopy(GPUVAddr src_address, GPUVAddr dest_address, u64 am
|
||||||
ForEachWrittenRange(*cpu_src_address, amount, mirror);
|
ForEachWrittenRange(*cpu_src_address, amount, mirror);
|
||||||
// This subtraction in this order is important for overlapping copies.
|
// This subtraction in this order is important for overlapping copies.
|
||||||
common_ranges.subtract(subtract_interval);
|
common_ranges.subtract(subtract_interval);
|
||||||
bool atleast_1_download = tmp_intervals.size() != 0;
|
const bool has_new_downloads = tmp_intervals.size() != 0;
|
||||||
for (const IntervalType add_interval : tmp_intervals) {
|
for (const IntervalType& add_interval : tmp_intervals) {
|
||||||
common_ranges.add(add_interval);
|
common_ranges.add(add_interval);
|
||||||
}
|
}
|
||||||
|
|
||||||
runtime.CopyBuffer(dest_buffer, src_buffer, copies);
|
runtime.CopyBuffer(dest_buffer, src_buffer, copies);
|
||||||
if (atleast_1_download) {
|
if (has_new_downloads) {
|
||||||
dest_buffer.MarkRegionAsGpuModified(*cpu_dest_address, amount);
|
dest_buffer.MarkRegionAsGpuModified(*cpu_dest_address, amount);
|
||||||
}
|
}
|
||||||
std::vector<u8> tmp_buffer(amount);
|
std::vector<u8> tmp_buffer(amount);
|
||||||
|
|
|
@ -147,8 +147,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_RED, GL_UNSIGNED_INT,
|
static_cast<GLsizeiptr>(size), GL_RED, GL_UNSIGNED_INT, &value);
|
||||||
&value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void BufferCacheRuntime::BindIndexBuffer(Buffer& buffer, u32 offset, u32 size) {
|
void BufferCacheRuntime::BindIndexBuffer(Buffer& buffer, u32 offset, u32 size) {
|
||||||
|
|
Loading…
Reference in New Issue