Mesa (master): gallium/radeon: zero all query buffers
Nicolai Hähnle
nh at kemper.freedesktop.org
Thu Sep 29 09:24:02 UTC 2016
Module: Mesa
Branch: master
Commit: 2c9d546402a4e3fb55bc3a01a5843dfca82b4a6a
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2c9d546402a4e3fb55bc3a01a5843dfca82b4a6a
Author: Nicolai Hähnle <nicolai.haehnle at amd.com>
Date: Thu Sep 15 15:58:36 2016 +0200
gallium/radeon: zero all query buffers
To ensure that fences are properly initialized.
Reviewed-by: Edward O'Callaghan <funfunctor at folklore1984.net>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
---
src/gallium/drivers/radeon/r600_query.c | 26 ++++++++++----------------
src/gallium/drivers/radeon/r600_query.h | 2 +-
2 files changed, 11 insertions(+), 17 deletions(-)
diff --git a/src/gallium/drivers/radeon/r600_query.c b/src/gallium/drivers/radeon/r600_query.c
index c1c3599..d96f9fc 100644
--- a/src/gallium/drivers/radeon/r600_query.c
+++ b/src/gallium/drivers/radeon/r600_query.c
@@ -338,11 +338,9 @@ static struct r600_resource *r600_new_query_buffer(struct r600_common_context *c
if (!buf)
return NULL;
- if (query->flags & R600_QUERY_HW_FLAG_PREDICATE) {
- if (!query->ops->prepare_buffer(ctx, query, buf)) {
- r600_resource_reference(&buf, NULL);
- return NULL;
- }
+ if (!query->ops->prepare_buffer(ctx, query, buf)) {
+ r600_resource_reference(&buf, NULL);
+ return NULL;
}
return buf;
@@ -440,7 +438,6 @@ static struct pipe_query *r600_query_hw_create(struct r600_common_context *rctx,
query->result_size += 16; /* for the fence + alignment */
query->num_cs_dw_begin = 6;
query->num_cs_dw_end = 6 + r600_gfx_write_fence_dwords(rctx->screen);
- query->flags |= R600_QUERY_HW_FLAG_PREDICATE;
break;
case PIPE_QUERY_TIME_ELAPSED:
query->result_size = 24;
@@ -461,7 +458,6 @@ static struct pipe_query *r600_query_hw_create(struct r600_common_context *rctx,
query->num_cs_dw_begin = 6;
query->num_cs_dw_end = 6;
query->stream = index;
- query->flags |= R600_QUERY_HW_FLAG_PREDICATE;
break;
case PIPE_QUERY_PIPELINE_STATISTICS:
/* 11 values on EG, 8 on R600. */
@@ -793,16 +789,14 @@ void r600_query_hw_reset_buffers(struct r600_common_context *rctx,
query->buffer.results_end = 0;
query->buffer.previous = NULL;
- if (query->flags & R600_QUERY_HW_FLAG_PREDICATE) {
- /* Obtain a new buffer if the current one can't be mapped without a stall. */
- if (r600_rings_is_buffer_referenced(rctx, query->buffer.buf->buf, RADEON_USAGE_READWRITE) ||
- !rctx->ws->buffer_wait(query->buffer.buf->buf, 0, RADEON_USAGE_READWRITE)) {
+ /* Obtain a new buffer if the current one can't be mapped without a stall. */
+ if (r600_rings_is_buffer_referenced(rctx, query->buffer.buf->buf, RADEON_USAGE_READWRITE) ||
+ !rctx->ws->buffer_wait(query->buffer.buf->buf, 0, RADEON_USAGE_READWRITE)) {
+ r600_resource_reference(&query->buffer.buf, NULL);
+ query->buffer.buf = r600_new_query_buffer(rctx, query);
+ } else {
+ if (!query->ops->prepare_buffer(rctx, query, query->buffer.buf))
r600_resource_reference(&query->buffer.buf, NULL);
- query->buffer.buf = r600_new_query_buffer(rctx, query);
- } else {
- if (!query->ops->prepare_buffer(rctx, query, query->buffer.buf))
- r600_resource_reference(&query->buffer.buf, NULL);
- }
}
}
diff --git a/src/gallium/drivers/radeon/r600_query.h b/src/gallium/drivers/radeon/r600_query.h
index 4f5aa3a..8c637a5 100644
--- a/src/gallium/drivers/radeon/r600_query.h
+++ b/src/gallium/drivers/radeon/r600_query.h
@@ -99,7 +99,7 @@ struct r600_query {
enum {
R600_QUERY_HW_FLAG_NO_START = (1 << 0),
- R600_QUERY_HW_FLAG_PREDICATE = (1 << 1),
+ /* gap */
/* whether begin_query doesn't clear the result */
R600_QUERY_HW_FLAG_BEGIN_RESUMES = (1 << 2),
};
More information about the mesa-commit
mailing list