r300g: fix BO space accounting for occlusion queries
This commit is contained in:
parent
00704370e4
commit
251fae69e5
|
@ -651,6 +651,8 @@ void r300_emit_query_end(struct r300_context* r300)
|
|||
rv530_emit_query_end_single_z(r300, query);
|
||||
} else
|
||||
r300_emit_query_end_frag_pipes(r300, query);
|
||||
|
||||
query->begin_emitted = FALSE;
|
||||
}
|
||||
|
||||
void r300_emit_rs_state(struct r300_context* r300, unsigned size, void* state)
|
||||
|
@ -1094,7 +1096,8 @@ validate:
|
|||
}
|
||||
}
|
||||
/* ...occlusion query buffer... */
|
||||
if (r300->query_start.dirty) {
|
||||
if (r300->query_start.dirty ||
|
||||
(r300->query_current && r300->query_current->begin_emitted)) {
|
||||
if (!r300_add_buffer(r300->rws, r300->oqbo,
|
||||
0, RADEON_GEM_DOMAIN_GTT)) {
|
||||
r300->context.flush(&r300->context, 0, NULL);
|
||||
|
|
|
@ -48,9 +48,9 @@ static void r300_flush(struct pipe_context* pipe,
|
|||
draw_flush(r300->draw);
|
||||
}
|
||||
|
||||
r300_emit_query_end(r300);
|
||||
|
||||
if (r300->dirty_hw) {
|
||||
r300_emit_query_end(r300);
|
||||
|
||||
FLUSH_CS;
|
||||
r300->dirty_hw = 0;
|
||||
|
||||
|
|
|
@ -103,7 +103,6 @@ static void r300_end_query(struct pipe_context* pipe,
|
|||
struct pipe_query* query)
|
||||
{
|
||||
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");
|
||||
|
@ -112,7 +111,6 @@ static void r300_end_query(struct pipe_context* pipe,
|
|||
}
|
||||
|
||||
r300_emit_query_end(r300);
|
||||
q->begin_emitted = false;
|
||||
r300->query_current = NULL;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue