This basically revertstags/19.0-branchpointc2bc0aa7b1
. By running the opts we reduce memory using in Team Fortress 2 from 1.5GB -> 1.3GB from start-up to game menu. This will likely increase Deus Ex start up times as per commitc2bc0aa7b1
. However currently 32bit games like Team Fortress 2 can run out of memory on low memory systems, so that seems more important. Reviewed-by: Marek Olšák <marek.olsak@amd.com>
@@ -2090,14 +2090,6 @@ _mesa_glsl_compile_shader(struct gl_context *ctx, struct gl_shader *shader, | |||
*/ | |||
if (shader->CompileStatus == COMPILE_SUCCESS) | |||
return; | |||
if (shader->CompileStatus == COMPILED_NO_OPTS) { | |||
opt_shader_and_create_symbol_table(ctx, | |||
NULL, /* source_symbols */ | |||
shader); | |||
shader->CompileStatus = COMPILE_SUCCESS; | |||
return; | |||
} | |||
} | |||
struct _mesa_glsl_parse_state *state = | |||
@@ -2153,13 +2145,7 @@ _mesa_glsl_compile_shader(struct gl_context *ctx, struct gl_shader *shader, | |||
if (!state->error && !shader->ir->is_empty()) { | |||
assign_subroutine_indexes(state); | |||
lower_subroutine(shader->ir, state); | |||
if (!ctx->Cache || force_recompile) | |||
opt_shader_and_create_symbol_table(ctx, state->symbols, shader); | |||
else { | |||
reparent_ir(shader->ir, shader->ir); | |||
shader->CompileStatus = COMPILED_NO_OPTS; | |||
} | |||
opt_shader_and_create_symbol_table(ctx, state->symbols, shader); | |||
} | |||
if (!force_recompile) { |
@@ -264,23 +264,6 @@ shader_cache_read_program_metadata(struct gl_context *ctx, | |||
/* This is used to flag a shader retrieved from cache */ | |||
prog->data->LinkStatus = LINKING_SKIPPED; | |||
/* Since the program load was successful, CompileStatus of all shaders at | |||
* this point should normally be compile_skipped. However because of how | |||
* the eviction works, it may happen that some of the individual shader keys | |||
* have been evicted, resulting in unnecessary recompiles on this load, so | |||
* mark them again to skip such recompiles next time. | |||
*/ | |||
char sha1_buf[41]; | |||
for (unsigned i = 0; i < prog->NumShaders; i++) { | |||
if (prog->Shaders[i]->CompileStatus == COMPILED_NO_OPTS) { | |||
disk_cache_put_key(cache, prog->Shaders[i]->sha1); | |||
if (ctx->_Shader->Flags & GLSL_CACHE_INFO) { | |||
_mesa_sha1_format(sha1_buf, prog->Shaders[i]->sha1); | |||
fprintf(stderr, "re-marking shader: %s\n", sha1_buf); | |||
} | |||
} | |||
} | |||
free (buffer); | |||
return true; |
@@ -2576,8 +2576,7 @@ enum gl_compile_status | |||
{ | |||
COMPILE_FAILURE = 0, | |||
COMPILE_SUCCESS, | |||
COMPILE_SKIPPED, | |||
COMPILED_NO_OPTS | |||
COMPILE_SKIPPED | |||
}; | |||
/** |