From: Brian P. <br...@tu...> - 2003-03-31 17:48:45
|
I've made some changes to Mesa's tnl module to reduce the amount of memory needed for storing vertex data. This has been an outstanding problem for some time now, especially for apps that create lots of display lists. Basically, in the 'immediate' struct I've changed the vertex attribute storage from: GLfloat Attrib[VERT_ATTRIB_MAX][IMM_SIZE][4]; /* GL_NV_vertex_program */ to: GLfloat (*Attrib[VERT_ATTRIB_MAX])[4]; and now allocate the attribute arrays on an as-needed basis. In extreme cases, display lists may only use about 1/16 the memory that they used to. There is a small performance hit associated with this change. I haven't measured it but it shouldn't be an issue. I've checked in my changes to the Mesa trunk. After a lot of testing and fixing I _think_ it's in pretty good shape now. I'd like people to give it a try. Any failures are likely to show up as segfaults from dereferencing NULL pointers and those are pretty easy to solve. If you do get a failure, you might try enabling the code in real_alloc_immediate() in t_imm_alloc.c which will allocate all vertex attribute arrays up-front. -Brian |