diff options
author | Timothy Arceri <[email protected]> | 2016-12-01 08:52:20 +1100 |
---|---|---|
committer | Timothy Arceri <[email protected]> | 2016-12-01 10:24:16 +1100 |
commit | 966567aa1296f99b16baec1ce92d64a8b3533d25 (patch) | |
tree | aad8e5c66fbe0b9b93737cf7c880c569c9e08eaf /src/mesa/main | |
parent | 45eef9af03639a409ef54b136bb4902b9825864b (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')
-rw-r--r-- | src/mesa/main/shaderobj.c | 2 |
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-> |