From: Marek Olšák <marek.ol...@amd.com> for debugging --- src/compiler/glsl/linker.cpp | 8 ++++++++ src/mesa/main/mtypes.h | 1 + 2 files changed, 9 insertions(+)
diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp index 61a029c..9678a74 100644 --- a/src/compiler/glsl/linker.cpp +++ b/src/compiler/glsl/linker.cpp @@ -2290,20 +2290,28 @@ link_intrastage_shaders(void *mem_ctx, array_resize_visitor input_resize_visitor(num_vertices, prog, MESA_SHADER_GEOMETRY); foreach_in_list(ir_instruction, ir, linked->ir) { ir->accept(&input_resize_visitor); } } if (ctx->Const.VertexID_is_zero_based) lower_vertex_id(linked); + /* Compute the source checksum. */ + linked->SourceChecksum = 0; + for (unsigned i = 0; i < num_shaders; i++) { + if (shader_list[i] == NULL) + continue; + linked->SourceChecksum ^= shader_list[i]->SourceChecksum; + } + return linked; } /** * Update the sizes of linked shader uniform arrays to the maximum * array index used. * * From page 81 (page 95 of the PDF) of the OpenGL 2.1 spec: * * If one or more elements of an array are active, diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index e870053..e6ae6d6 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -2275,20 +2275,21 @@ struct gl_shader_info bool LocalSizeVariable; } Comp; }; /** * A linked GLSL shader object. */ struct gl_linked_shader { gl_shader_stage Stage; + unsigned SourceChecksum; struct gl_program *Program; /**< Post-compile assembly code */ /** * \name Sampler tracking * * \note Each of these fields is only set post-linking. */ /*@{*/ unsigned num_samplers; /**< Number of samplers used by this shader. */ -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev