[Mesa-dev] [PATCH 5/9] glsl: explicitly zero out padding to gl_shader_variable bitfield

Nicolai Hähnle nhaehnle at gmail.com
Mon Jun 26 09:40:43 UTC 2017


From: Nicolai Hähnle <nicolai.haehnle at amd.com>

Otherwise, the padding bits remain undefined, which leads to valgrind
errors when storing the gl_shader_variable in the disk cache.
---
 src/compiler/glsl/linker.cpp | 1 +
 src/mesa/main/mtypes.h       | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp
index cfda263..691c4cb 100644
--- a/src/compiler/glsl/linker.cpp
+++ b/src/compiler/glsl/linker.cpp
@@ -3755,20 +3755,21 @@ create_shader_variable(struct gl_shader_program *shProg,
    out->type = type;
    out->outermost_struct_type = outermost_struct_type;
    out->interface_type = interface_type;
    out->component = in->data.location_frac;
    out->index = in->data.index;
    out->patch = in->data.patch;
    out->mode = in->data.mode;
    out->interpolation = in->data.interpolation;
    out->explicit_location = in->data.explicit_location;
    out->precision = in->data.precision;
+   out->padding = 0;
 
    return out;
 }
 
 static bool
 add_shader_variable(const struct gl_context *ctx,
                     struct gl_shader_program *shProg,
                     struct set *resource_set,
                     unsigned stage_mask,
                     GLenum programInterface, ir_variable *var,
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 0cb0024..a1fc743 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -2813,20 +2813,22 @@ struct gl_shader_variable
     * If the location is explicitly set in the shader, it \b cannot be changed
     * by the linker or by the API (e.g., calls to \c glBindAttribLocation have
     * no effect).
     */
    unsigned explicit_location:1;
 
    /**
     * Precision qualifier.
     */
    unsigned precision:2;
+
+   unsigned padding:19;
 };
 
 /**
  * Active resource in a gl_shader_program
  */
 struct gl_program_resource
 {
    GLenum Type; /** Program interface type. */
    const void *Data; /** Pointer to resource associated data structure. */
    uint8_t StageReferences; /** Bitmask of shader stage references. */
-- 
2.9.3



More information about the mesa-dev mailing list