|
|
|
@@ -753,7 +753,10 @@ int r600_context_init(struct r600_context *ctx, struct radeon *radeon) |
|
|
|
LIST_INITHEAD(&ctx->dirty); |
|
|
|
|
|
|
|
/* TODO update this value correctly */ |
|
|
|
ctx->num_db = 4; |
|
|
|
if (radeon->family >= CHIP_CEDAR) |
|
|
|
ctx->max_db = 8; |
|
|
|
else |
|
|
|
ctx->max_db = 4; |
|
|
|
|
|
|
|
return 0; |
|
|
|
out_err: |
|
|
|
@@ -1265,7 +1268,7 @@ static boolean r600_query_result(struct r600_context *ctx, struct r600_query *qu |
|
|
|
if (!results) |
|
|
|
return FALSE; |
|
|
|
|
|
|
|
size = query->num_results * (query->type == PIPE_QUERY_OCCLUSION_COUNTER ? ctx->num_db : 1); |
|
|
|
size = query->num_results * (query->type == PIPE_QUERY_OCCLUSION_COUNTER ? ctx->max_db : 1); |
|
|
|
for (i = 0; i < size; i += 4) { |
|
|
|
start = (u64)results[i] | (u64)results[i + 1] << 32; |
|
|
|
end = (u64)results[i + 2] | (u64)results[i + 3] << 32; |
|
|
|
@@ -1344,7 +1347,7 @@ void r600_query_end(struct r600_context *ctx, struct r600_query *query) |
|
|
|
ctx->pm4[ctx->pm4_cdwords++] = 0; |
|
|
|
r600_context_bo_reloc(ctx, &ctx->pm4[ctx->pm4_cdwords - 1], query->buffer); |
|
|
|
|
|
|
|
query->num_results += 4 * (query->type == PIPE_QUERY_OCCLUSION_COUNTER ? ctx->num_db : 1); |
|
|
|
query->num_results += 4 * (query->type == PIPE_QUERY_OCCLUSION_COUNTER ? ctx->max_db : 1); |
|
|
|
query->state ^= R600_QUERY_STATE_STARTED; |
|
|
|
query->state |= R600_QUERY_STATE_ENDED; |
|
|
|
ctx->num_query_running--; |