summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/shaderobj.c
diff options
context:
space:
mode:
authorTimothy Arceri <[email protected]>2016-12-01 08:52:20 +1100
committerTimothy Arceri <[email protected]>2016-12-01 10:24:16 +1100
commit966567aa1296f99b16baec1ce92d64a8b3533d25 (patch)
treeaad8e5c66fbe0b9b93737cf7c880c569c9e08eaf /src/mesa/main/shaderobj.c
parent45eef9af03639a409ef54b136bb4902b9825864b (diff)
mesa: reset linked_stages bitmask when re-linking
34953f8907fdd added this bitmask but it wasn't being reset when a program was relinked. If a stage was removed from the new program then it could case a crash as we expect the linked shader for that stage to not be null. Fixes crashes in: ESEXT-CTS.tessellation_shader.single.xfb_captures_data_from_correct_stage ES31-CTS.core.tessellation_shader.single.xfb_captures_data_from_correct_stage Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Dave Airlie <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98917
Diffstat (limited to 'src/mesa/main/shaderobj.c')
-rw-r--r--src/mesa/main/shaderobj.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/mesa/main/shaderobj.c b/src/mesa/main/shaderobj.c
index 998656af9c8..6fcdf442828 100644
--- a/src/mesa/main/shaderobj.c
+++ b/src/mesa/main/shaderobj.c
@@ -348,6 +348,8 @@ _mesa_clear_shader_program_data(struct gl_context *ctx,
}
}
+ shProg->data->linked_stages = 0;
+
if (shProg->data->UniformStorage) {
for (unsigned i = 0; i < shProg->data->NumUniformStorage; ++i)
_mesa_uniform_detach_all_driver_storage(&shProg->data->