diff options
author | Keith Whitwell <keith@tungstengraphics.com> | 2007-12-11 17:10:26 +0000 |
---|---|---|
committer | Keith Whitwell <keith@tungstengraphics.com> | 2007-12-11 17:10:48 +0000 |
commit | 13699463a33c1adf44005125c488e886e074a05b (patch) | |
tree | cb9e0b85f96fd931f87d3b1fc813723013d2a2b7 /src/mesa/pipe/softpipe/sp_quad_occlusion.c | |
parent | b247ab036327d66b8b9b1aff2dbcf4520ed0284f (diff) |
Rework gallium and mesa queries a little.
Add a 'CheckQuery()' driver callback to mesa to check query completion.
Make pipe_query an opaque type.
Rework softpipe queries, support overlapping occlusion queries.
Diffstat (limited to 'src/mesa/pipe/softpipe/sp_quad_occlusion.c')
-rw-r--r-- | src/mesa/pipe/softpipe/sp_quad_occlusion.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/mesa/pipe/softpipe/sp_quad_occlusion.c b/src/mesa/pipe/softpipe/sp_quad_occlusion.c index d65fdbdab7..54254df1f1 100644 --- a/src/mesa/pipe/softpipe/sp_quad_occlusion.c +++ b/src/mesa/pipe/softpipe/sp_quad_occlusion.c @@ -39,18 +39,22 @@ #include "sp_surface.h" #include "sp_quad.h" +static unsigned count_bits( unsigned val ) +{ + unsigned i; + + for (i = 0; val ; val >>= 1) + i += (val & 1); + + return i; +} static void occlusion_count_quad(struct quad_stage *qs, struct quad_header *quad) { struct softpipe_context *softpipe = qs->softpipe; - struct pipe_query_object *occ - = softpipe->queries[PIPE_QUERY_OCCLUSION_COUNTER]; - occ->count += (quad->mask ) & 1; - occ->count += (quad->mask >> 1) & 1; - occ->count += (quad->mask >> 2) & 1; - occ->count += (quad->mask >> 3) & 1; + softpipe->occlusion_count += count_bits(quad->mask); qs->next->run(qs->next, quad); } |