diff --git a/src/modules/graphics/StreamBuffer.cpp b/src/modules/graphics/StreamBuffer.cpp index 2564c7cb6..a98897645 100644 --- a/src/modules/graphics/StreamBuffer.cpp +++ b/src/modules/graphics/StreamBuffer.cpp @@ -28,6 +28,7 @@ namespace graphics StreamBuffer::StreamBuffer(BufferType mode, size_t size) : bufferSize(size) + , frameGPUReadOffset(0) , mode(mode) { } diff --git a/src/modules/graphics/StreamBuffer.h b/src/modules/graphics/StreamBuffer.h index 5157d2abf..461f02a27 100644 --- a/src/modules/graphics/StreamBuffer.h +++ b/src/modules/graphics/StreamBuffer.h @@ -54,8 +54,8 @@ public: size_t getSize() const { return bufferSize; } BufferType getMode() const { return mode; } + size_t getUsableSize() const { return bufferSize - frameGPUReadOffset; } - virtual size_t getUsableSize() const = 0; virtual MapInfo map(size_t minsize) = 0; virtual size_t unmap(size_t usedsize) = 0; virtual void markUsed(size_t usedsize) = 0; @@ -67,6 +67,7 @@ protected: StreamBuffer(BufferType mode, size_t size); size_t bufferSize; + size_t frameGPUReadOffset; BufferType mode; }; // StreamBuffer diff --git a/src/modules/graphics/opengl/StreamBuffer.cpp b/src/modules/graphics/opengl/StreamBuffer.cpp index 4a3a8e7e3..b425be3a9 100644 --- a/src/modules/graphics/opengl/StreamBuffer.cpp +++ b/src/modules/graphics/opengl/StreamBuffer.cpp @@ -62,11 +62,6 @@ public: delete[] data; } - size_t getUsableSize() const override - { - return bufferSize; - } - MapInfo map(size_t /*minsize*/) override { return MapInfo(data, bufferSize); @@ -96,7 +91,6 @@ public: , glMode(OpenGL::getGLBufferType(mode)) , data(nullptr) , offset(0) - , frameOffset(0) { try { @@ -116,17 +110,12 @@ public: delete[] data; } - size_t getUsableSize() const override - { - return bufferSize - frameOffset; - } - MapInfo map(size_t minsize) override { if (offset + minsize > bufferSize) { offset = 0; - frameOffset = 0; + frameGPUReadOffset = 0; gl.bindBuffer(mode, vbo); glBufferData(glMode, bufferSize, nullptr, GL_STREAM_DRAW); } @@ -144,12 +133,12 @@ public: void markUsed(size_t usedsize) override { offset += usedsize; - frameOffset += usedsize; + frameGPUReadOffset += usedsize; } void nextFrame() override { - frameOffset = 0; + frameGPUReadOffset = 0; } ptrdiff_t getHandle() const override { return vbo; } @@ -164,7 +153,7 @@ public: glBufferData(glMode, bufferSize, nullptr, GL_STREAM_DRAW); offset = 0; - frameOffset = 0; + frameGPUReadOffset = 0; return true; } @@ -186,7 +175,6 @@ protected: uint8 *data; size_t offset; - size_t frameOffset; }; // StreamBufferSubDataOrphan @@ -198,7 +186,6 @@ public: : love::graphics::StreamBuffer(type, size) , syncSize((size + MAX_SYNCS_PER_FRAME - 1) / MAX_SYNCS_PER_FRAME) , frameIndex(0) - , frameGPUReadOffset(0) , syncs() {} @@ -231,7 +218,6 @@ protected: const size_t syncSize; int frameIndex; - size_t frameGPUReadOffset; FenceSync syncs[MAX_SYNCS_PER_FRAME * BUFFER_FRAMES]; @@ -259,11 +245,6 @@ public: unloadVolatile(); } - size_t getUsableSize() const override - { - return bufferSize - frameGPUReadOffset; - } - MapInfo map(size_t /*minsize*/) override { gl.bindBuffer(mode, vbo); @@ -351,11 +332,6 @@ public: unloadVolatile(); } - size_t getUsableSize() const override - { - return bufferSize - frameGPUReadOffset; - } - MapInfo map(size_t /*minsize*/) override { MapInfo info; @@ -454,11 +430,6 @@ public: alignedFree(data); } - size_t getUsableSize() const override - { - return bufferSize - frameGPUReadOffset; - } - MapInfo map(size_t /*minsize*/) override { MapInfo info;