Optimize StreamBuffer::getUsableSize to not be a virtual method.

This commit is contained in:
Alex Szpakowski
2018-09-29 14:50:49 -03:00
parent 0cf106fa6a
commit 535be96f03
3 changed files with 7 additions and 34 deletions
+1
View File
@@ -28,6 +28,7 @@ namespace graphics
StreamBuffer::StreamBuffer(BufferType mode, size_t size)
: bufferSize(size)
, frameGPUReadOffset(0)
, mode(mode)
{
}
+2 -1
View File
@@ -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
+4 -33
View File
@@ -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;