diff options
author | Alex Deucher <[email protected]> | 2011-06-07 16:44:40 -0400 |
---|---|---|
committer | Alex Deucher <[email protected]> | 2011-06-07 16:44:40 -0400 |
commit | 7c1d4781920e34ad5419b4c5cf9d54ae14938844 (patch) | |
tree | c9e1e10a72daf28634a896b9097a0c671ebe76f9 /src/gallium/winsys | |
parent | d7111353bd52fa54ae6c0defd6d1c4a86fbfb3b3 (diff) |
r600g: always clear query memory
According to the hw documentation, the driver needs to:
- allocate 128 bits for each possible DB
- clear the 128 bits for each possible DB
- write 1 to bits 127 and 63 for upper DBs that don't
exist on a particular asic
Previously we were only doing these steps if the
asic had less than the max possible DBs.
Signed-off-by: Alex Deucher <[email protected]>
Diffstat (limited to 'src/gallium/winsys')
-rw-r--r-- | src/gallium/winsys/r600/drm/r600_hw_context.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c b/src/gallium/winsys/r600/drm/r600_hw_context.c index cb244f2b9ee..2159d410f7e 100644 --- a/src/gallium/winsys/r600/drm/r600_hw_context.c +++ b/src/gallium/winsys/r600/drm/r600_hw_context.c @@ -1667,7 +1667,7 @@ void r600_query_begin(struct r600_context *ctx, struct r600_query *query) } if (query->type == PIPE_QUERY_OCCLUSION_COUNTER && - num_backends > 0 && num_backends < ctx->max_db) { + num_backends > 0) { /* as per info on ZPASS the driver must set the unusued DB top bits */ u32 *results; int i; @@ -1675,7 +1675,7 @@ void r600_query_begin(struct r600_context *ctx, struct r600_query *query) results = r600_bo_map(ctx->radeon, query->buffer, PB_USAGE_DONTBLOCK | PB_USAGE_CPU_WRITE, NULL); if (results) { memset(results + (query->num_results * 4), 0, ctx->max_db * 4 * 4); - + for (i = num_backends; i < ctx->max_db; i++) { results[(i * 4)+1] = 0x80000000; results[(i * 4)+3] = 0x80000000; @@ -1683,7 +1683,7 @@ void r600_query_begin(struct r600_context *ctx, struct r600_query *query) r600_bo_unmap(ctx->radeon, query->buffer); } } - + /* emit begin query */ if (query->type == PIPE_QUERY_TIME_ELAPSED) { ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_EVENT_WRITE_EOP, 4, 0); |