diff options
author | Brian Paul <[email protected]> | 2016-01-05 13:03:04 -0700 |
---|---|---|
committer | Brian Paul <[email protected]> | 2016-01-05 13:03:04 -0700 |
commit | f04d7439a0ad6e13ff2912ff824553b6bcf511a4 (patch) | |
tree | 60b2e7da243918d1e2cc582a68f0743b4ededa33 | |
parent | eec8d7e7e059c19b86cce0360cb7db28aef1f1dd (diff) |
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 <[email protected]>
-rw-r--r-- | src/mesa/main/api_loopback.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/mesa/main/api_loopback.c b/src/mesa/main/api_loopback.c index a7fd82c531f..8b63d9c0e95 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 |