mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 11:48:06 +02:00
mesa: Delay s_texcombine.c memory allocation until it's used.
Generally we're using fragment programs in all our drivers, so wasting 4MB for code that's never called is pretty lame. Reduces i965 memory allocation for a short shader program from 21,932,128B to 17,737,816B.
This commit is contained in:
parent
f7f678331d
commit
617cdcd4c7
2 changed files with 20 additions and 11 deletions
|
|
@ -780,17 +780,6 @@ _swrast_CreateContext( struct gl_context *ctx )
|
|||
swrast->PointSpan.facing = 0;
|
||||
swrast->PointSpan.array = swrast->SpanArrays;
|
||||
|
||||
/* TexelBuffer is also global and normally shared by all SWspan instances;
|
||||
* when running with multiple threads, create one per thread.
|
||||
*/
|
||||
swrast->TexelBuffer = (GLfloat *) MALLOC(ctx->Const.MaxTextureImageUnits * maxThreads *
|
||||
MAX_WIDTH * 4 * sizeof(GLfloat));
|
||||
if (!swrast->TexelBuffer) {
|
||||
FREE(swrast->SpanArrays);
|
||||
FREE(swrast);
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
init_program_native_limits(&ctx->Const.VertexProgram);
|
||||
init_program_native_limits(&ctx->Const.GeometryProgram);
|
||||
init_program_native_limits(&ctx->Const.FragmentProgram);
|
||||
|
|
|
|||
|
|
@ -93,6 +93,26 @@ texture_combine( struct gl_context *ctx, GLuint unit, GLuint n,
|
|||
float4_array ccolor[4], rgba;
|
||||
GLuint i, term;
|
||||
|
||||
if (!swrast->TexelBuffer) {
|
||||
#ifdef _OPENMP
|
||||
const GLint maxThreads = omp_get_max_threads();
|
||||
#else
|
||||
const GLint maxThreads = 1;
|
||||
#endif
|
||||
|
||||
/* TexelBuffer is also global and normally shared by all SWspan
|
||||
* instances; when running with multiple threads, create one per
|
||||
* thread.
|
||||
*/
|
||||
swrast->TexelBuffer =
|
||||
(GLfloat *) MALLOC(ctx->Const.MaxTextureImageUnits * maxThreads *
|
||||
MAX_WIDTH * 4 * sizeof(GLfloat));
|
||||
if (!swrast->TexelBuffer) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "texture_combine");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* alloc temp pixel buffers */
|
||||
rgba = (float4_array) malloc(4 * n * sizeof(GLfloat));
|
||||
if (!rgba) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue