[Mesa-dev] [PATCH 1/2] glsl: don't skip GLSL IR opts on first-time compiles

Marek Olšák maraeo at gmail.com
Thu Jan 17 16:08:57 UTC 2019


Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Thu, Jan 17, 2019 at 1:17 AM Timothy Arceri <tarceri at itsqueeze.com>
wrote:

> This basically reverts c2bc0aa7b188.
>
> 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 commit
> c2bc0aa7b188. However currently 32bit games like Team Fortress 2
> can run out of memory on low memory systems, so that seems more
> important.
> ---
>  src/compiler/glsl/glsl_parser_extras.cpp | 16 +---------------
>  src/compiler/glsl/shader_cache.cpp       | 17 -----------------
>  src/mesa/main/mtypes.h                   |  3 +--
>  3 files changed, 2 insertions(+), 34 deletions(-)
>
> diff --git a/src/compiler/glsl/glsl_parser_extras.cpp
> b/src/compiler/glsl/glsl_parser_extras.cpp
> index 2048a7f900..200df7759b 100644
> --- a/src/compiler/glsl/glsl_parser_extras.cpp
> +++ b/src/compiler/glsl/glsl_parser_extras.cpp
> @@ -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) {
> diff --git a/src/compiler/glsl/shader_cache.cpp
> b/src/compiler/glsl/shader_cache.cpp
> index 31d0aa6296..879511a9d7 100644
> --- a/src/compiler/glsl/shader_cache.cpp
> +++ b/src/compiler/glsl/shader_cache.cpp
> @@ -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;
> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
> index 241c2b92f7..0fdeba4732 100644
> --- a/src/mesa/main/mtypes.h
> +++ b/src/mesa/main/mtypes.h
> @@ -2576,8 +2576,7 @@ enum gl_compile_status
>  {
>     COMPILE_FAILURE = 0,
>     COMPILE_SUCCESS,
> -   COMPILE_SKIPPED,
> -   COMPILED_NO_OPTS
> +   COMPILE_SKIPPED
>  };
>
>  /**
> --
> 2.20.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20190117/4a1f8321/attachment.html>


More information about the mesa-dev mailing list