diff options
author | Marek Olšák <[email protected]> | 2010-05-15 19:39:11 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2010-05-15 19:39:11 +0200 |
commit | 00704370e42eb9c828dc1699a033b8da9a2521b0 (patch) | |
tree | 59c043663e5f20f340a8779eb8e94ea1d61aa6d3 /src/gallium/drivers/r300/r300_query.c | |
parent | 16690366e66b0f37c76aff71e13ab91541b3807f (diff) |
r300g: forbid overlapping queries and print error messages
Diffstat (limited to 'src/gallium/drivers/r300/r300_query.c')
-rw-r--r-- | src/gallium/drivers/r300/r300_query.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/gallium/drivers/r300/r300_query.c b/src/gallium/drivers/r300/r300_query.c index 5c27796e894..9bd28537e00 100644 --- a/src/gallium/drivers/r300/r300_query.c +++ b/src/gallium/drivers/r300/r300_query.c @@ -59,6 +59,7 @@ static struct pipe_query *r300_create_query(struct pipe_context *pipe, /* XXX */ if (q->offset >= 4096) { q->offset = 0; + fprintf(stderr, "r300: Rewinding OQBO...\n"); } return (struct pipe_query*)q; @@ -80,7 +81,12 @@ static void r300_begin_query(struct pipe_context* pipe, struct r300_context* r300 = r300_context(pipe); struct r300_query* q = (struct r300_query*)query; - assert(r300->query_current == NULL); + if (r300->query_current != NULL) { + fprintf(stderr, "r300: begin_query: " + "Some other query has already been started.\n"); + assert(0); + return; + } pipe_buffer_write(pipe, r300->oqbo, @@ -99,6 +105,12 @@ static void r300_end_query(struct pipe_context* pipe, struct r300_context* r300 = r300_context(pipe); struct r300_query* q = (struct r300_query*)query; + if ((struct r300_query*)query != r300->query_current) { + fprintf(stderr, "r300: end_query: Got invalid query.\n"); + assert(0); + return; + } + r300_emit_query_end(r300); q->begin_emitted = false; r300->query_current = NULL; |