From f04d7439a0ad6e13ff2912ff824553b6bcf511a4 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Tue, 5 Jan 2016 13:03:04 -0700 Subject: [PATCH] mesa: check for z=0 in _mesa_Vertex3dv() It's very rare that a GL app calls glVertex3dv(), but one in particular calls it lot, always with Z = 0. Check for that condition and convert the call into glVertex2f. This reduces VBO memory used and reduces the number of times we have to switch between float[2] and float[3] vertex formats in the svga driver. This results in a small but measurable performance improvement. Reviewed-by: Charmaine Lee --- src/mesa/main/api_loopback.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mesa/main/api_loopback.c b/src/mesa/main/api_loopback.c index a7fd82c..8b63d9c 100644 --- a/src/mesa/main/api_loopback.c +++ b/src/mesa/main/api_loopback.c @@ -629,7 +629,10 @@ _mesa_Vertex2sv( const GLshort *v ) void GLAPIENTRY _mesa_Vertex3dv( const GLdouble *v ) { - VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); + if (v[2] == 0.0) + VERTEX2( (GLfloat) v[0], (GLfloat) v[1] ); + else + VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] ); } void GLAPIENTRY -- 2.7.4