Browse Source

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

Alex Szpakowski 6 years ago
parent
commit
535be96f03

+ 1 - 0
src/modules/graphics/StreamBuffer.cpp

@@ -28,6 +28,7 @@ namespace graphics
 
 StreamBuffer::StreamBuffer(BufferType mode, size_t size)
 	: bufferSize(size)
+	, frameGPUReadOffset(0)
 	, mode(mode)
 {
 }

+ 2 - 1
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

+ 4 - 33
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;