[Mesa-dev] [PATCH] program: Don't reset SamplersValidated when restoring from shader cache

Andres Gomez agomez at igalia.com
Tue Feb 20 14:46:24 UTC 2018


Jordan, this looks like a good candidate to nominate for inclusion in
the 17.3 stable queue.

What do you think?

On Tue, 2017-12-12 at 14:20 -0800, Jordan Justen wrote:
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103988
> Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
> ---
>  src/mesa/program/ir_to_mesa.cpp | 16 +++++++++-------
>  1 file changed, 9 insertions(+), 7 deletions(-)
> 
> diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp
> index 5f663b3d09f..051ed2225b7 100644
> --- a/src/mesa/program/ir_to_mesa.cpp
> +++ b/src/mesa/program/ir_to_mesa.cpp
> @@ -3115,15 +3115,17 @@ _mesa_glsl_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
>        link_shaders(ctx, prog);
>     }
>  
> -   if (prog->data->LinkStatus) {
> -      /* Reset sampler validated to true, validation happens via the
> -       * LinkShader call below.
> -       */
> +   /* If LinkStatus is linking_success, then reset sampler validated to true,
> +    * validation happens via the LinkShader call below. If LinkStatus is
> +    * linking_skipped, then SamplersValidated will have been restored from the
> +    * shader cache.
> +    */
> +   if (prog->data->LinkStatus == linking_success) {
>        prog->SamplersValidated = GL_TRUE;
> +   }
>  
> -      if (!ctx->Driver.LinkShader(ctx, prog)) {
> -         prog->data->LinkStatus = linking_failure;
> -      }
> +   if (prog->data->LinkStatus && !ctx->Driver.LinkShader(ctx, prog)) {
> +      prog->data->LinkStatus = linking_failure;
>     }
>  
>     /* Return early if we are loading the shader from on-disk cache */
-- 
Br,

Andres


More information about the mesa-dev mailing list