draw: fix key comparison with uninitialized value
Discovered by accident, valgrind was complaining (could have possibly caused us to create redundant geometry shader variants). v2: convinced by Brian and Jose, just use memset for both gs and vs keys, just as easy and less error prone.
This commit is contained in:
@@ -1861,6 +1861,8 @@ draw_llvm_make_variant_key(struct draw_llvm *llvm, char *store)
|
||||
|
||||
key = (struct draw_llvm_variant_key *)store;
|
||||
|
||||
memset(key, 0, offsetof(struct draw_llvm_variant_key, vertex_element[0]));
|
||||
|
||||
key->clamp_vertex_color = llvm->draw->rasterizer->clamp_vertex_color; /**/
|
||||
|
||||
/* Presumably all variants of the shader should have the same
|
||||
@@ -1883,7 +1885,6 @@ draw_llvm_make_variant_key(struct draw_llvm *llvm, char *store)
|
||||
key->ucp_enable = llvm->draw->rasterizer->clip_plane_enable;
|
||||
key->has_gs = llvm->draw->gs.geometry_shader != NULL;
|
||||
key->num_outputs = draw_total_vs_outputs(llvm->draw);
|
||||
key->pad1 = 0;
|
||||
|
||||
/* All variants of this shader will have the same value for
|
||||
* nr_samplers. Not yet trying to compact away holes in the
|
||||
@@ -2315,6 +2316,8 @@ draw_gs_llvm_make_variant_key(struct draw_llvm *llvm, char *store)
|
||||
|
||||
key = (struct draw_gs_llvm_variant_key *)store;
|
||||
|
||||
memset(key, 0, offsetof(struct draw_gs_llvm_variant_key, samplers[0]));
|
||||
|
||||
key->num_outputs = draw_total_gs_outputs(llvm->draw);
|
||||
|
||||
/* All variants of this shader will have the same value for
|
||||
|
||||
@@ -311,12 +311,8 @@ struct draw_llvm_variant_key
|
||||
unsigned need_edgeflags:1;
|
||||
unsigned has_gs:1;
|
||||
unsigned num_outputs:8;
|
||||
/*
|
||||
* it is important there are no holes in this struct
|
||||
* (and all padding gets zeroed).
|
||||
*/
|
||||
unsigned ucp_enable:PIPE_MAX_CLIP_PLANES;
|
||||
unsigned pad1:24-PIPE_MAX_CLIP_PLANES;
|
||||
/* note padding here - must use memset */
|
||||
|
||||
/* Variable number of vertex elements:
|
||||
*/
|
||||
@@ -332,6 +328,7 @@ struct draw_gs_llvm_variant_key
|
||||
unsigned nr_samplers:8;
|
||||
unsigned nr_sampler_views:8;
|
||||
unsigned num_outputs:8;
|
||||
/* note padding here - must use memset */
|
||||
|
||||
struct draw_sampler_static_state samplers[1];
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user