Mesa (master): mesa: shrink gl_vertex_array
Brian Paul
brianp at kemper.freedesktop.org
Tue Jan 30 04:30:15 UTC 2018
Module: Mesa
Branch: master
Commit: 79cafa0df342f9fdc142ad2ed7d910044f5f4c4f
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=79cafa0df342f9fdc142ad2ed7d910044f5f4c4f
Author: Brian Paul <brianp at vmware.com>
Date: Fri Jan 26 14:49:41 2018 -0700
mesa: shrink gl_vertex_array
Inspired by Marek's earlier patch, but goes a little further.
Sort fields from largest to smallest. Use bitfields.
Reduced from 48 bytes to 32. Also reduces size of gl_vertex_array_object
from 4144 to 3632
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
---
src/mesa/main/mtypes.h | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index b0eeeafbcd..78132de425 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -1497,18 +1497,19 @@ struct gl_pixelstore_attrib
*/
struct gl_vertex_array
{
- GLint Size; /**< components per element (1,2,3,4) */
- GLenum16 Type; /**< datatype: GL_FLOAT, GL_INT, etc */
- GLenum16 Format; /**< default: GL_RGBA, but may be GL_BGRA */
+ /** if NULL, vertex data are in user memory */
+ struct gl_buffer_object *BufferObj;
+ /** Pointer into user memory, or offset into the BufferObj */
+ const GLubyte *Ptr;
GLsizei StrideB; /**< actual stride in bytes */
- GLuint _ElementSize; /**< size of each element in bytes */
- const GLubyte *Ptr; /**< Points to array data */
- GLboolean Normalized; /**< GL_ARB_vertex_program */
- GLboolean Integer; /**< Integer-valued? */
- GLboolean Doubles; /**< double precision values are not converted to floats */
GLuint InstanceDivisor; /**< GL_ARB_instanced_arrays */
-
- struct gl_buffer_object *BufferObj;/**< GL_ARB_vertex_buffer_object */
+ GLenum16 Type; /**< datatype: GL_FLOAT, GL_INT, etc */
+ GLenum16 Format; /**< default: GL_RGBA, but may be GL_BGRA */
+ unsigned Size:4; /**< components per element (1,2,3,4) */
+ unsigned _ElementSize:8; /**< in bytes, up to 4*sizeof(GLdouble) */
+ unsigned Normalized:1; /**< GL_ARB_vertex_program */
+ unsigned Integer:1; /**< Integer-valued? */
+ unsigned Doubles:1; /**< doubles not converted to floats */
};
More information about the mesa-commit
mailing list