Am 07.03.19 um 17:20 schrieb Brian Paul: > Move the variant key declarations inside the scope they're used. > Use designated initializers instead of memset() calls. I don't think this will always work as intended, since there's non-explicit padding bits in the key, and AFAIK even with c11 compilers are not required to set such padding to zero too.
Roland > --- > src/mesa/state_tracker/st_atom_shader.c | 8 ++++---- > src/mesa/state_tracker/st_program.c | 9 +++------ > 2 files changed, 7 insertions(+), 10 deletions(-) > > diff --git a/src/mesa/state_tracker/st_atom_shader.c > b/src/mesa/state_tracker/st_atom_shader.c > index c6faa3f..ac7a1a5 100644 > --- a/src/mesa/state_tracker/st_atom_shader.c > +++ b/src/mesa/state_tracker/st_atom_shader.c > @@ -97,7 +97,6 @@ void > st_update_fp( struct st_context *st ) > { > struct st_fragment_program *stfp; > - struct st_fp_variant_key key; > > assert(st->ctx->FragmentProgram._Current); > stfp = st_fragment_program(st->ctx->FragmentProgram._Current); > @@ -113,7 +112,8 @@ st_update_fp( struct st_context *st ) > !stfp->variants->key.bitmap) { > shader = stfp->variants->driver_shader; > } else { > - memset(&key, 0, sizeof(key)); > + struct st_fp_variant_key key = {0}; > + > key.st = st->has_shareable_shaders ? NULL : st; > > /* _NEW_FRAG_CLAMP */ > @@ -155,7 +155,6 @@ void > st_update_vp( struct st_context *st ) > { > struct st_vertex_program *stvp; > - struct st_vp_variant_key key; > > /* find active shader and params -- Should be covered by > * ST_NEW_VERTEX_PROGRAM > @@ -169,7 +168,8 @@ st_update_vp( struct st_context *st ) > stvp->variants->key.passthrough_edgeflags == st->vertdata_edgeflags) { > st->vp_variant = stvp->variants; > } else { > - memset(&key, 0, sizeof key); > + struct st_vp_variant_key key = {0}; > + > key.st = st->has_shareable_shaders ? NULL : st; > > /* When this is true, we will add an extra input to the vertex > diff --git a/src/mesa/state_tracker/st_program.c > b/src/mesa/state_tracker/st_program.c > index c2daa4d..5e43a2e 100644 > --- a/src/mesa/state_tracker/st_program.c > +++ b/src/mesa/state_tracker/st_program.c > @@ -1772,9 +1772,8 @@ st_get_cp_variant(struct st_context *st, > { > struct pipe_context *pipe = st->pipe; > struct st_basic_variant *v; > - struct st_basic_variant_key key; > + struct st_basic_variant_key key = {0}; > > - memset(&key, 0, sizeof(key)); > key.st = st->has_shareable_shaders ? NULL : st; > > /* Search for existing variant */ > @@ -1996,9 +1995,8 @@ st_precompile_shader_variant(struct st_context *st, > switch (prog->Target) { > case GL_VERTEX_PROGRAM_ARB: { > struct st_vertex_program *p = (struct st_vertex_program *)prog; > - struct st_vp_variant_key key; > + struct st_vp_variant_key key = {0}; > > - memset(&key, 0, sizeof(key)); > key.st = st->has_shareable_shaders ? NULL : st; > st_get_vp_variant(st, p, &key); > break; > @@ -2024,9 +2022,8 @@ st_precompile_shader_variant(struct st_context *st, > > case GL_FRAGMENT_PROGRAM_ARB: { > struct st_fragment_program *p = (struct st_fragment_program *)prog; > - struct st_fp_variant_key key; > + struct st_fp_variant_key key = {0}; > > - memset(&key, 0, sizeof(key)); > key.st = st->has_shareable_shaders ? NULL : st; > st_get_fp_variant(st, p, &key); > break; > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev