X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fr300%2Fr300_query.c;h=f9e4aca0e929fefa28b9fceaa0e4aa7cb0ef4150;hb=e3b249f1665612cab63795cfee4dd54ec7f513f6;hp=79e2198d3a78a237b39a92f632e693a969e73c82;hpb=544967faf59b20b6254d713fca94f6e9aa86754c;p=mesa.git diff --git a/src/gallium/drivers/r300/r300_query.c b/src/gallium/drivers/r300/r300_query.c index 79e2198d3a7..f9e4aca0e92 100644 --- a/src/gallium/drivers/r300/r300_query.c +++ b/src/gallium/drivers/r300/r300_query.c @@ -39,6 +39,7 @@ static struct pipe_query *r300_create_query(struct pipe_context *pipe, if (query_type != PIPE_QUERY_OCCLUSION_COUNTER && query_type != PIPE_QUERY_OCCLUSION_PREDICATE && + query_type != PIPE_QUERY_OCCLUSION_PREDICATE_CONSERVATIVE && query_type != PIPE_QUERY_GPU_FINISHED) { return NULL; } @@ -61,7 +62,8 @@ static struct pipe_query *r300_create_query(struct pipe_context *pipe, q->buf = r300->rws->buffer_create(r300->rws, r300screen->info.gart_page_size, r300screen->info.gart_page_size, - RADEON_DOMAIN_GTT, 0); + RADEON_DOMAIN_GTT, + RADEON_FLAG_NO_INTERPROCESS_SHARING); if (!q->buf) { FREE(q); return NULL; @@ -85,8 +87,8 @@ void r300_resume_query(struct r300_context *r300, r300_mark_atom_dirty(r300, &r300->query_start); } -static boolean r300_begin_query(struct pipe_context* pipe, - struct pipe_query* query) +static bool r300_begin_query(struct pipe_context* pipe, + struct pipe_query* query) { struct r300_context* r300 = r300_context(pipe); struct r300_query* q = r300_query(query); @@ -120,7 +122,7 @@ static bool r300_end_query(struct pipe_context* pipe, if (q->type == PIPE_QUERY_GPU_FINISHED) { pb_reference(&q->buf, NULL); - r300_flush(pipe, RADEON_FLUSH_ASYNC, + r300_flush(pipe, PIPE_FLUSH_ASYNC, (struct pipe_fence_handle**)&q->buf); return true; } @@ -136,10 +138,10 @@ static bool r300_end_query(struct pipe_context* pipe, return true; } -static boolean r300_get_query_result(struct pipe_context* pipe, - struct pipe_query* query, - boolean wait, - union pipe_query_result *vresult) +static bool r300_get_query_result(struct pipe_context* pipe, + struct pipe_query* query, + bool wait, + union pipe_query_result *vresult) { struct r300_context* r300 = r300_context(pipe); struct r300_query *q = r300_query(query); @@ -171,7 +173,8 @@ static boolean r300_get_query_result(struct pipe_context* pipe, map++; } - if (q->type == PIPE_QUERY_OCCLUSION_PREDICATE) { + if (q->type == PIPE_QUERY_OCCLUSION_PREDICATE || + q->type == PIPE_QUERY_OCCLUSION_PREDICATE_CONSERVATIVE) { vresult->b = temp != 0; } else { vresult->u64 = temp; @@ -181,12 +184,12 @@ static boolean r300_get_query_result(struct pipe_context* pipe, static void r300_render_condition(struct pipe_context *pipe, struct pipe_query *query, - boolean condition, - uint mode) + bool condition, + enum pipe_render_cond_flag mode) { struct r300_context *r300 = r300_context(pipe); union pipe_query_result result; - boolean wait; + bool wait; r300->skip_rendering = FALSE; @@ -195,7 +198,8 @@ static void r300_render_condition(struct pipe_context *pipe, mode == PIPE_RENDER_COND_BY_REGION_WAIT; if (r300_get_query_result(pipe, query, wait, &result)) { - if (r300_query(query)->type == PIPE_QUERY_OCCLUSION_PREDICATE) { + if (r300_query(query)->type == PIPE_QUERY_OCCLUSION_PREDICATE || + r300_query(query)->type == PIPE_QUERY_OCCLUSION_PREDICATE_CONSERVATIVE) { r300->skip_rendering = condition == result.b; } else { r300->skip_rendering = condition == !!result.u64; @@ -205,7 +209,7 @@ static void r300_render_condition(struct pipe_context *pipe, } static void -r300_set_active_query_state(struct pipe_context *pipe, boolean enable) +r300_set_active_query_state(struct pipe_context *pipe, bool enable) { }