This will be used to enable us to store the current gl_program rather than gl_shader_program in the gl_pipline_object allowing us to simplify handing of validation.
Also we should not be depending on _LinkedShader for this information as it may contain shaders from a failed linking attempt rather than the current program still in use. We could also use this mask to iterate over the stages during linking with _mesa_bit_scan() rather then the current method of NULL checking each stage. --- src/compiler/glsl/linker.cpp | 1 + src/mesa/main/mtypes.h | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp index a0341c2..be4e18c 100644 --- a/src/compiler/glsl/linker.cpp +++ b/src/compiler/glsl/linker.cpp @@ -4873,6 +4873,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) } prog->_LinkedShaders[stage] = sh; + prog->data->linked_stages |= 1 << stage; } } diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index bf604c3..6047c8f 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -2647,6 +2647,9 @@ struct gl_shader_program_data GLboolean LinkStatus; /**< GL_LINK_STATUS */ GLboolean Validated; GLchar *InfoLog; + + /* Mask of stages this program was linked against */ + unsigned linked_stages; }; /** -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev