r600g: rework queries
authorMarek Olšák <maraeo@gmail.com>
Tue, 21 Feb 2012 23:25:55 +0000 (00:25 +0100)
committerMarek Olšák <maraeo@gmail.com>
Thu, 23 Feb 2012 19:29:56 +0000 (20:29 +0100)
commitdf00dc3c817771ac5034a44dff2b14cd7759b207
tree3527fc4b7daa84a9c87379bf89108101b845c417
parent5b84a8c3c3f85cd6b109861c6eebe3ece29d664e
r600g: rework queries

We always mapped the query buffer in begin_query, causing stalls
if the buffer was busy.

This commit reworks it such that the query buffer is only mapped
in get_query_result as it's supposed to be.

The query buffer is no longer treated as a ring buffer. Instead, the results
are just appended and when the buffer is full, we create a new one. One query
can have more than one query buffer, though that's a very rare case.
Begin_query releases all query buffers.

Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
src/gallium/drivers/r600/r600.h
src/gallium/drivers/r600/r600_hw_context.c
src/gallium/drivers/r600/r600_query.c