mesa: reset linked_stages bitmask when re-linking

34953f8907 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 <kenneth@whitecape.org>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98917
This commit is contained in:
Timothy Arceri
2016-12-01 08:52:20 +11:00
parent 45eef9af03
commit 966567aa12

View File

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