diff options
author | Nicolai Hähnle <[email protected]> | 2016-04-06 16:21:28 -0500 |
---|---|---|
committer | Nicolai Hähnle <[email protected]> | 2016-04-07 13:15:05 -0500 |
commit | 84c4d069ac7be1dece2f5eeed277089a79e6acbf (patch) | |
tree | 1c8c6f377e521b533fe07b8e5358b0b301de3cab /src/mesa/state_tracker | |
parent | 4bfcc86bf977ac18465c7be0a0fa14354b18d7c6 (diff) |
st/glsl_to_tgsi: make samplers_used an uint32_t (v2)
It is used as a bitfield, so it seems cleaner to keep it unsigned.
The literal 1 is a (signed) int, and shifting into the sign bit is undefined
in C, so change occurences of 1 to 1u.
v2: add an assert for bitfield size and use 1u << idx
Reviewed-by: Brian Paul <[email protected]>
Reviewed-by: Roland Scheidegger <[email protected]> (v1)
Reviewed-by: Marek Olšák <[email protected]> (v1)
Diffstat (limited to 'src/mesa/state_tracker')
-rw-r--r-- | src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index cd481c166e7..b9ab7ae9919 100644 --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -389,7 +389,7 @@ public: unsigned num_output_arrays; int num_address_regs; - int samplers_used; + uint32_t samplers_used; glsl_base_type sampler_types[PIPE_MAX_SAMPLERS]; int sampler_targets[PIPE_MAX_SAMPLERS]; /**< One of TGSI_TEXTURE_* */ int buffers_used; @@ -4290,6 +4290,8 @@ glsl_to_tgsi_visitor::visit(ir_barrier *ir) glsl_to_tgsi_visitor::glsl_to_tgsi_visitor() { + STATIC_ASSERT(sizeof(samplers_used) * 8 >= PIPE_MAX_SAMPLERS); + result.file = PROGRAM_UNDEFINED; next_temp = 1; array_sizes = NULL; @@ -4346,7 +4348,7 @@ count_resources(glsl_to_tgsi_visitor *v, gl_program *prog) if (inst->info->is_tex) { for (int i = 0; i < inst->sampler_array_size; i++) { unsigned idx = inst->sampler_base + i; - v->samplers_used |= 1 << idx; + v->samplers_used |= 1u << idx; debug_assert(idx < (int)ARRAY_SIZE(v->sampler_types)); v->sampler_types[idx] = inst->tex_type; @@ -6325,7 +6327,7 @@ st_translate_program( /* texture samplers */ for (i = 0; i < frag_const->MaxTextureImageUnits; i++) { - if (program->samplers_used & (1 << i)) { + if (program->samplers_used & (1u << i)) { unsigned type; t->samplers[i] = ureg_DECL_sampler(ureg, i); |