aboutsummaryrefslogtreecommitdiffstats
path: root/include/vk-renderer.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/vk-renderer.hpp')
-rw-r--r--include/vk-renderer.hpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/include/vk-renderer.hpp b/include/vk-renderer.hpp
index 614569a..6c6d2f0 100644
--- a/include/vk-renderer.hpp
+++ b/include/vk-renderer.hpp
@@ -124,20 +124,22 @@ class vkrenderer {
class RingBuffer {
public:
- static const off_t invalid_alloc = -1;
+ static const size_t invalid_alloc = -1;
RingBuffer(size_t size);
- [[nodiscard]]off_t alloc(size_t alloc_size) const {
- assert(alloc_size > 0);
+ [[nodiscard]]size_t alloc(size_t alloc_size) {
+ assert(alloc_size > 0 && alloc_size <= buffer_size);
- if (ptr + alloc_size < buffer_size) {
+ if (ptr <= buffer_size - alloc_size) {
+ ptr += alloc_size;
return ptr;
}
+
return invalid_alloc;
}
- void write(void* data, off_t alloc_offset, size_t data_size) const {
+ void write(void* data, size_t alloc_offset, size_t data_size) const {
auto api_buffer = vkrenderer::api.get_buffer(device_buffer);
std::memcpy((uint8_t*)api_buffer.device_ptr + alloc_offset, data, data_size);
@@ -150,7 +152,7 @@ class RingBuffer {
handle device_buffer;
size_t buffer_size;
- off_t ptr = 0;
+ size_t ptr = 0;
};
class Sampler {