Browse Source

Added 'drawcallsbatched' field to the table returned by love.graphics.getStats.

It has the number of draw calls that were saved by auto-batching.

--HG--
branch : minor
Alex Szpakowski 8 years ago
parent
commit
b3d4443f9d

+ 5 - 0
src/modules/graphics/Graphics.cpp

@@ -112,6 +112,7 @@ Graphics::Graphics()
 	, streamBufferState()
 	, streamBufferState()
 	, projectionMatrix()
 	, projectionMatrix()
 	, canvasSwitchCount(0)
 	, canvasSwitchCount(0)
+	, drawCallsBatched(0)
 	, capabilities()
 	, capabilities()
 {
 {
 	transformStack.reserve(16);
 	transformStack.reserve(16);
@@ -879,6 +880,9 @@ Graphics::StreamVertexData Graphics::requestStreamDraw(const StreamDrawRequest &
 		}
 		}
 	}
 	}
 
 
+	if (state.vertexCount > 0)
+		drawCallsBatched++;
+
 	state.vertexCount += req.vertexCount;
 	state.vertexCount += req.vertexCount;
 	state.indexCount  += reqIndexCount;
 	state.indexCount  += reqIndexCount;
 
 
@@ -1273,6 +1277,7 @@ Graphics::Stats Graphics::getStats() const
 		stats.drawCalls++;
 		stats.drawCalls++;
 
 
 	stats.canvasSwitches = canvasSwitchCount;
 	stats.canvasSwitches = canvasSwitchCount;
+	stats.drawCallsBatched = drawCallsBatched;
 	stats.canvases = Canvas::canvasCount;
 	stats.canvases = Canvas::canvasCount;
 	stats.images = Image::imageCount;
 	stats.images = Image::imageCount;
 	stats.fonts = Font::fontCount;
 	stats.fonts = Font::fontCount;

+ 2 - 0
src/modules/graphics/Graphics.h

@@ -216,6 +216,7 @@ public:
 	struct Stats
 	struct Stats
 	{
 	{
 		int drawCalls;
 		int drawCalls;
+		int drawCallsBatched;
 		int canvasSwitches;
 		int canvasSwitches;
 		int shaderSwitches;
 		int shaderSwitches;
 		int canvases;
 		int canvases;
@@ -900,6 +901,7 @@ protected:
 	std::vector<Canvas *> temporaryCanvases;
 	std::vector<Canvas *> temporaryCanvases;
 
 
 	int canvasSwitchCount;
 	int canvasSwitchCount;
+	int drawCallsBatched;
 
 
 	Capabilities capabilities;
 	Capabilities capabilities;
 
 

+ 1 - 0
src/modules/graphics/opengl/Graphics.cpp

@@ -1010,6 +1010,7 @@ void Graphics::present(void *screenshotCallbackData)
 	gl.stats.drawCalls = 0;
 	gl.stats.drawCalls = 0;
 	gl.stats.shaderSwitches = 0;
 	gl.stats.shaderSwitches = 0;
 	canvasSwitchCount = 0;
 	canvasSwitchCount = 0;
+	drawCallsBatched = 0;
 }
 }
 
 
 void Graphics::setScissor(const Rect &rect)
 void Graphics::setScissor(const Rect &rect)

+ 3 - 0
src/modules/graphics/wrap_Graphics.cpp

@@ -2073,6 +2073,9 @@ int w_getStats(lua_State *L)
 	lua_pushinteger(L, stats.drawCalls);
 	lua_pushinteger(L, stats.drawCalls);
 	lua_setfield(L, -2, "drawcalls");
 	lua_setfield(L, -2, "drawcalls");
 
 
+	lua_pushinteger(L, stats.drawCallsBatched);
+	lua_setfield(L, -2, "drawcallsbatched");
+
 	lua_pushinteger(L, stats.canvasSwitches);
 	lua_pushinteger(L, stats.canvasSwitches);
 	lua_setfield(L, -2, "canvasswitches");
 	lua_setfield(L, -2, "canvasswitches");