aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJordan Justen <[email protected]>2017-12-12 11:44:01 -0800
committerJordan Justen <[email protected]>2017-12-13 00:31:06 -0800
commitdc07bb5fd188a4352ec90edb6c6107ae1ce11b50 (patch)
tree2ac2206360c323df3bcd7fe034196754df671609 /src
parent729fec6eababd3d3f5f5367f6ff797b65c626db2 (diff)
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 <[email protected]> Reviewed-by: Timothy Arceri <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/mesa/program/ir_to_mesa.cpp16
1 files 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..29198509a6c 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 */