[Mesa-dev] [PATCH 3/4] glsl: add gl_linked_shader::SourceChecksum

Timothy Arceri timothy.arceri at collabora.com
Tue Nov 22 03:15:46 UTC 2016


IMO we should wrap all these with:

#ifdef DEBUG

Including the existing SourceChecksum declaration of SourceChecksum in
gl_shader.

With those changes series is:

Reviewed-by: Timothy Arceri <timothy.arceri at collabora.com>

On Tue, 2016-11-22 at 02:20 +0100, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at 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. */


More information about the mesa-dev mailing list