program: Don't reset SamplersValidated when restoring from shader cache

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103988
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
Jordan Justen 2017-12-12 11:44:01 -08:00
parent 729fec6eab
commit dc07bb5fd1

View file

@ -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 */