forked from suyu/suyu
buffer_cache: Return stream buffer invalidation in Map instead of Unmap
We have to invalidate whatever cache is being used before uploading the data, hence it makes more sense to return this on Map instead of Unmap.
This commit is contained in:
parent
2293e8a11a
commit
6e122f0b2c
1 changed files with 9 additions and 7 deletions
|
@ -110,19 +110,23 @@ public:
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void Map(std::size_t max_size) {
|
/// Prepares the buffer cache for data uploading
|
||||||
|
/// @param max_size Maximum number of bytes that will be uploaded
|
||||||
|
/// @return True when a stream buffer invalidation was required, false otherwise
|
||||||
|
bool Map(std::size_t max_size) {
|
||||||
std::lock_guard lock{mutex};
|
std::lock_guard lock{mutex};
|
||||||
|
|
||||||
|
bool invalidated;
|
||||||
std::tie(buffer_ptr, buffer_offset_base, invalidated) = stream_buffer->Map(max_size, 4);
|
std::tie(buffer_ptr, buffer_offset_base, invalidated) = stream_buffer->Map(max_size, 4);
|
||||||
buffer_offset = buffer_offset_base;
|
buffer_offset = buffer_offset_base;
|
||||||
|
|
||||||
|
return invalidated;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Finishes the upload stream, returns true on bindings invalidation.
|
/// Finishes the upload stream
|
||||||
bool Unmap() {
|
void Unmap() {
|
||||||
std::lock_guard lock{mutex};
|
std::lock_guard lock{mutex};
|
||||||
|
|
||||||
stream_buffer->Unmap(buffer_offset - buffer_offset_base);
|
stream_buffer->Unmap(buffer_offset - buffer_offset_base);
|
||||||
return std::exchange(invalidated, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TickFrame() {
|
void TickFrame() {
|
||||||
|
@ -576,8 +580,6 @@ private:
|
||||||
std::unique_ptr<StreamBuffer> stream_buffer;
|
std::unique_ptr<StreamBuffer> stream_buffer;
|
||||||
BufferType stream_buffer_handle{};
|
BufferType stream_buffer_handle{};
|
||||||
|
|
||||||
bool invalidated = false;
|
|
||||||
|
|
||||||
u8* buffer_ptr = nullptr;
|
u8* buffer_ptr = nullptr;
|
||||||
u64 buffer_offset = 0;
|
u64 buffer_offset = 0;
|
||||||
u64 buffer_offset_base = 0;
|
u64 buffer_offset_base = 0;
|
||||||
|
|
Loading…
Reference in a new issue