mirror of
https://github.com/love2d/love.git
synced 2026-08-12 16:40:57 +02:00
Optimize StreamBuffer::getUsableSize to not be a virtual method.
This commit is contained in:
@@ -28,6 +28,7 @@ namespace graphics
|
||||
|
||||
StreamBuffer::StreamBuffer(BufferType mode, size_t size)
|
||||
: bufferSize(size)
|
||||
, frameGPUReadOffset(0)
|
||||
, mode(mode)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user