summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r300
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/r300')
-rw-r--r--src/gallium/drivers/r300/r300_emit.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c
index 4cd5074379f..c50c989f01a 100644
--- a/src/gallium/drivers/r300/r300_emit.c
+++ b/src/gallium/drivers/r300/r300_emit.c
@@ -690,14 +690,19 @@ void r300_emit_vertex_format_state(struct r300_context* r300)
END_CS;
}
-/* XXX This should probably go to util ... */
+/* XXX This should go to util ... */
/* Return the number of bits set in the given number. */
static unsigned bitcount(unsigned n)
{
- unsigned bits;
- for (bits = 0; n > 0; n = n >> 1) {
- bits += n & 1;
+ unsigned bits = 0;
+
+ while (n) {
+ if (n & 1) {
+ bits++;
+ }
+ n >>= 1;
}
+
return bits;
}
@@ -714,7 +719,7 @@ void r300_emit_vertex_program_code(struct r300_context* r300,
int temp_count = MAX2(code->num_temporaries, 1);
int pvs_num_slots = MIN3(vtx_mem_size / input_count,
vtx_mem_size / output_count, 10);
- int pvs_num_controllers = MIN2(6, vtx_mem_size / temp_count);
+ int pvs_num_controllers = MIN2(vtx_mem_size / temp_count, 6);
CS_LOCALS(r300);