mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 09:00:10 +01:00
gallium: make pipe_context::begin_query return a boolean
GL_AMD_performance_monitor must return an error when a monitoring session cannot be started. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Martin Peres <martin.peres@free.fr>
This commit is contained in:
parent
546ec980f8
commit
96f164f6f0
18 changed files with 51 additions and 34 deletions
|
|
@ -59,11 +59,11 @@ fd_destroy_query(struct pipe_context *pctx, struct pipe_query *pq)
|
||||||
q->funcs->destroy_query(fd_context(pctx), q);
|
q->funcs->destroy_query(fd_context(pctx), q);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static boolean
|
||||||
fd_begin_query(struct pipe_context *pctx, struct pipe_query *pq)
|
fd_begin_query(struct pipe_context *pctx, struct pipe_query *pq)
|
||||||
{
|
{
|
||||||
struct fd_query *q = fd_query(pq);
|
struct fd_query *q = fd_query(pq);
|
||||||
q->funcs->begin_query(fd_context(pctx), q);
|
return q->funcs->begin_query(fd_context(pctx), q);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ struct fd_query;
|
||||||
struct fd_query_funcs {
|
struct fd_query_funcs {
|
||||||
void (*destroy_query)(struct fd_context *ctx,
|
void (*destroy_query)(struct fd_context *ctx,
|
||||||
struct fd_query *q);
|
struct fd_query *q);
|
||||||
void (*begin_query)(struct fd_context *ctx, struct fd_query *q);
|
boolean (*begin_query)(struct fd_context *ctx, struct fd_query *q);
|
||||||
void (*end_query)(struct fd_context *ctx, struct fd_query *q);
|
void (*end_query)(struct fd_context *ctx, struct fd_query *q);
|
||||||
boolean (*get_query_result)(struct fd_context *ctx,
|
boolean (*get_query_result)(struct fd_context *ctx,
|
||||||
struct fd_query *q, boolean wait,
|
struct fd_query *q, boolean wait,
|
||||||
|
|
|
||||||
|
|
@ -131,12 +131,12 @@ fd_hw_destroy_query(struct fd_context *ctx, struct fd_query *q)
|
||||||
free(hq);
|
free(hq);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static boolean
|
||||||
fd_hw_begin_query(struct fd_context *ctx, struct fd_query *q)
|
fd_hw_begin_query(struct fd_context *ctx, struct fd_query *q)
|
||||||
{
|
{
|
||||||
struct fd_hw_query *hq = fd_hw_query(q);
|
struct fd_hw_query *hq = fd_hw_query(q);
|
||||||
if (q->active)
|
if (q->active)
|
||||||
return;
|
return false;
|
||||||
|
|
||||||
/* begin_query() should clear previous results: */
|
/* begin_query() should clear previous results: */
|
||||||
destroy_periods(ctx, &hq->periods);
|
destroy_periods(ctx, &hq->periods);
|
||||||
|
|
@ -149,6 +149,7 @@ fd_hw_begin_query(struct fd_context *ctx, struct fd_query *q)
|
||||||
/* add to active list: */
|
/* add to active list: */
|
||||||
list_del(&hq->list);
|
list_del(&hq->list);
|
||||||
list_addtail(&hq->list, &ctx->active_queries);
|
list_addtail(&hq->list, &ctx->active_queries);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@ is_rate_query(struct fd_query *q)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static boolean
|
||||||
fd_sw_begin_query(struct fd_context *ctx, struct fd_query *q)
|
fd_sw_begin_query(struct fd_context *ctx, struct fd_query *q)
|
||||||
{
|
{
|
||||||
struct fd_sw_query *sq = fd_sw_query(q);
|
struct fd_sw_query *sq = fd_sw_query(q);
|
||||||
|
|
@ -93,6 +93,7 @@ fd_sw_begin_query(struct fd_context *ctx, struct fd_query *q)
|
||||||
sq->begin_value = read_counter(ctx, q->type);
|
sq->begin_value = read_counter(ctx, q->type);
|
||||||
if (is_rate_query(q))
|
if (is_rate_query(q))
|
||||||
sq->begin_time = os_time_get();
|
sq->begin_time = os_time_get();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
|
|
@ -54,9 +54,10 @@ static void i915_destroy_query(struct pipe_context *ctx,
|
||||||
FREE(query);
|
FREE(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void i915_begin_query(struct pipe_context *ctx,
|
static boolean i915_begin_query(struct pipe_context *ctx,
|
||||||
struct pipe_query *query)
|
struct pipe_query *query)
|
||||||
{
|
{
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void i915_end_query(struct pipe_context *ctx, struct pipe_query *query)
|
static void i915_end_query(struct pipe_context *ctx, struct pipe_query *query)
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,7 @@ ilo_destroy_query(struct pipe_context *pipe, struct pipe_query *query)
|
||||||
FREE(q);
|
FREE(q);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static boolean
|
||||||
ilo_begin_query(struct pipe_context *pipe, struct pipe_query *query)
|
ilo_begin_query(struct pipe_context *pipe, struct pipe_query *query)
|
||||||
{
|
{
|
||||||
struct ilo_query *q = ilo_query(query);
|
struct ilo_query *q = ilo_query(query);
|
||||||
|
|
@ -124,6 +124,7 @@ ilo_begin_query(struct pipe_context *pipe, struct pipe_query *query)
|
||||||
q->active = true;
|
q->active = true;
|
||||||
|
|
||||||
ilo_query_table[q->type].begin(ilo_context(pipe), q);
|
ilo_query_table[q->type].begin(ilo_context(pipe), q);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
|
|
@ -184,7 +184,7 @@ llvmpipe_get_query_result(struct pipe_context *pipe,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static boolean
|
||||||
llvmpipe_begin_query(struct pipe_context *pipe, struct pipe_query *q)
|
llvmpipe_begin_query(struct pipe_context *pipe, struct pipe_query *q)
|
||||||
{
|
{
|
||||||
struct llvmpipe_context *llvmpipe = llvmpipe_context( pipe );
|
struct llvmpipe_context *llvmpipe = llvmpipe_context( pipe );
|
||||||
|
|
@ -235,6 +235,7 @@ llvmpipe_begin_query(struct pipe_context *pipe, struct pipe_query *q)
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,8 +58,9 @@ static void noop_destroy_query(struct pipe_context *ctx, struct pipe_query *quer
|
||||||
FREE(query);
|
FREE(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void noop_begin_query(struct pipe_context *ctx, struct pipe_query *query)
|
static boolean noop_begin_query(struct pipe_context *ctx, struct pipe_query *query)
|
||||||
{
|
{
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void noop_end_query(struct pipe_context *ctx, struct pipe_query *query)
|
static void noop_end_query(struct pipe_context *ctx, struct pipe_query *query)
|
||||||
|
|
|
||||||
|
|
@ -144,7 +144,7 @@ nv30_query_destroy(struct pipe_context *pipe, struct pipe_query *pq)
|
||||||
FREE(pq);
|
FREE(pq);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static boolean
|
||||||
nv30_query_begin(struct pipe_context *pipe, struct pipe_query *pq)
|
nv30_query_begin(struct pipe_context *pipe, struct pipe_query *pq)
|
||||||
{
|
{
|
||||||
struct nv30_context *nv30 = nv30_context(pipe);
|
struct nv30_context *nv30 = nv30_context(pipe);
|
||||||
|
|
@ -160,7 +160,7 @@ nv30_query_begin(struct pipe_context *pipe, struct pipe_query *pq)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PIPE_QUERY_TIMESTAMP:
|
case PIPE_QUERY_TIMESTAMP:
|
||||||
return;
|
return true;
|
||||||
default:
|
default:
|
||||||
BEGIN_NV04(push, NV30_3D(QUERY_RESET), 1);
|
BEGIN_NV04(push, NV30_3D(QUERY_RESET), 1);
|
||||||
PUSH_DATA (push, q->report);
|
PUSH_DATA (push, q->report);
|
||||||
|
|
@ -171,6 +171,7 @@ nv30_query_begin(struct pipe_context *pipe, struct pipe_query *pq)
|
||||||
BEGIN_NV04(push, SUBC_3D(q->enable), 1);
|
BEGIN_NV04(push, SUBC_3D(q->enable), 1);
|
||||||
PUSH_DATA (push, 1);
|
PUSH_DATA (push, 1);
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,7 @@ nv50_query_get(struct nouveau_pushbuf *push, struct nv50_query *q,
|
||||||
PUSH_DATA (push, get);
|
PUSH_DATA (push, get);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static boolean
|
||||||
nv50_query_begin(struct pipe_context *pipe, struct pipe_query *pq)
|
nv50_query_begin(struct pipe_context *pipe, struct pipe_query *pq)
|
||||||
{
|
{
|
||||||
struct nv50_context *nv50 = nv50_context(pipe);
|
struct nv50_context *nv50 = nv50_context(pipe);
|
||||||
|
|
@ -201,6 +201,7 @@ nv50_query_begin(struct pipe_context *pipe, struct pipe_query *pq)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
q->ready = FALSE;
|
q->ready = FALSE;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
|
|
@ -250,7 +250,7 @@ nvc0_query_rotate(struct nvc0_context *nvc0, struct nvc0_query *q)
|
||||||
nvc0_query_allocate(nvc0, q, NVC0_QUERY_ALLOC_SPACE);
|
nvc0_query_allocate(nvc0, q, NVC0_QUERY_ALLOC_SPACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static boolean
|
||||||
nvc0_query_begin(struct pipe_context *pipe, struct pipe_query *pq)
|
nvc0_query_begin(struct pipe_context *pipe, struct pipe_query *pq)
|
||||||
{
|
{
|
||||||
struct nvc0_context *nvc0 = nvc0_context(pipe);
|
struct nvc0_context *nvc0 = nvc0_context(pipe);
|
||||||
|
|
@ -332,6 +332,7 @@ nvc0_query_begin(struct pipe_context *pipe, struct pipe_query *pq)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
q->state = NVC0_QUERY_STATE_ACTIVE;
|
q->state = NVC0_QUERY_STATE_ACTIVE;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
|
|
@ -85,24 +85,25 @@ void r300_resume_query(struct r300_context *r300,
|
||||||
r300_mark_atom_dirty(r300, &r300->query_start);
|
r300_mark_atom_dirty(r300, &r300->query_start);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void r300_begin_query(struct pipe_context* pipe,
|
static boolean r300_begin_query(struct pipe_context* pipe,
|
||||||
struct pipe_query* query)
|
struct pipe_query* query)
|
||||||
{
|
{
|
||||||
struct r300_context* r300 = r300_context(pipe);
|
struct r300_context* r300 = r300_context(pipe);
|
||||||
struct r300_query* q = r300_query(query);
|
struct r300_query* q = r300_query(query);
|
||||||
|
|
||||||
if (q->type == PIPE_QUERY_GPU_FINISHED)
|
if (q->type == PIPE_QUERY_GPU_FINISHED)
|
||||||
return;
|
return true;
|
||||||
|
|
||||||
if (r300->query_current != NULL) {
|
if (r300->query_current != NULL) {
|
||||||
fprintf(stderr, "r300: begin_query: "
|
fprintf(stderr, "r300: begin_query: "
|
||||||
"Some other query has already been started.\n");
|
"Some other query has already been started.\n");
|
||||||
assert(0);
|
assert(0);
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
q->num_results = 0;
|
q->num_results = 0;
|
||||||
r300_resume_query(r300, q);
|
r300_resume_query(r300, q);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void r300_stop_query(struct r300_context *r300)
|
void r300_stop_query(struct r300_context *r300)
|
||||||
|
|
|
||||||
|
|
@ -425,7 +425,8 @@ static void r600_destroy_query(struct pipe_context *ctx, struct pipe_query *quer
|
||||||
FREE(query);
|
FREE(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void r600_begin_query(struct pipe_context *ctx, struct pipe_query *query)
|
static boolean r600_begin_query(struct pipe_context *ctx,
|
||||||
|
struct pipe_query *query)
|
||||||
{
|
{
|
||||||
struct r600_common_context *rctx = (struct r600_common_context *)ctx;
|
struct r600_common_context *rctx = (struct r600_common_context *)ctx;
|
||||||
struct r600_query *rquery = (struct r600_query *)query;
|
struct r600_query *rquery = (struct r600_query *)query;
|
||||||
|
|
@ -433,7 +434,7 @@ static void r600_begin_query(struct pipe_context *ctx, struct pipe_query *query)
|
||||||
|
|
||||||
if (!r600_query_needs_begin(rquery->type)) {
|
if (!r600_query_needs_begin(rquery->type)) {
|
||||||
assert(0);
|
assert(0);
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Non-GPU queries. */
|
/* Non-GPU queries. */
|
||||||
|
|
@ -442,7 +443,7 @@ static void r600_begin_query(struct pipe_context *ctx, struct pipe_query *query)
|
||||||
return;
|
return;
|
||||||
case R600_QUERY_DRAW_CALLS:
|
case R600_QUERY_DRAW_CALLS:
|
||||||
rquery->begin_result = rctx->num_draw_calls;
|
rquery->begin_result = rctx->num_draw_calls;
|
||||||
return;
|
return true;
|
||||||
case R600_QUERY_REQUESTED_VRAM:
|
case R600_QUERY_REQUESTED_VRAM:
|
||||||
case R600_QUERY_REQUESTED_GTT:
|
case R600_QUERY_REQUESTED_GTT:
|
||||||
case R600_QUERY_VRAM_USAGE:
|
case R600_QUERY_VRAM_USAGE:
|
||||||
|
|
@ -451,19 +452,19 @@ static void r600_begin_query(struct pipe_context *ctx, struct pipe_query *query)
|
||||||
case R600_QUERY_CURRENT_GPU_SCLK:
|
case R600_QUERY_CURRENT_GPU_SCLK:
|
||||||
case R600_QUERY_CURRENT_GPU_MCLK:
|
case R600_QUERY_CURRENT_GPU_MCLK:
|
||||||
rquery->begin_result = 0;
|
rquery->begin_result = 0;
|
||||||
return;
|
return true;
|
||||||
case R600_QUERY_BUFFER_WAIT_TIME:
|
case R600_QUERY_BUFFER_WAIT_TIME:
|
||||||
rquery->begin_result = rctx->ws->query_value(rctx->ws, RADEON_BUFFER_WAIT_TIME_NS);
|
rquery->begin_result = rctx->ws->query_value(rctx->ws, RADEON_BUFFER_WAIT_TIME_NS);
|
||||||
return;
|
return true;
|
||||||
case R600_QUERY_NUM_CS_FLUSHES:
|
case R600_QUERY_NUM_CS_FLUSHES:
|
||||||
rquery->begin_result = rctx->ws->query_value(rctx->ws, RADEON_NUM_CS_FLUSHES);
|
rquery->begin_result = rctx->ws->query_value(rctx->ws, RADEON_NUM_CS_FLUSHES);
|
||||||
return;
|
return true;
|
||||||
case R600_QUERY_NUM_BYTES_MOVED:
|
case R600_QUERY_NUM_BYTES_MOVED:
|
||||||
rquery->begin_result = rctx->ws->query_value(rctx->ws, RADEON_NUM_BYTES_MOVED);
|
rquery->begin_result = rctx->ws->query_value(rctx->ws, RADEON_NUM_BYTES_MOVED);
|
||||||
return;
|
return true;
|
||||||
case R600_QUERY_GPU_LOAD:
|
case R600_QUERY_GPU_LOAD:
|
||||||
rquery->begin_result = r600_gpu_load_begin(rctx->screen);
|
rquery->begin_result = r600_gpu_load_begin(rctx->screen);
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Discard the old query buffers. */
|
/* Discard the old query buffers. */
|
||||||
|
|
@ -489,6 +490,7 @@ static void r600_begin_query(struct pipe_context *ctx, struct pipe_query *query)
|
||||||
if (!r600_is_timer_query(rquery->type)) {
|
if (!r600_is_timer_query(rquery->type)) {
|
||||||
LIST_ADDTAIL(&rquery->list, &rctx->active_nontimer_queries);
|
LIST_ADDTAIL(&rquery->list, &rctx->active_nontimer_queries);
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void r600_end_query(struct pipe_context *ctx, struct pipe_query *query)
|
static void r600_end_query(struct pipe_context *ctx, struct pipe_query *query)
|
||||||
|
|
|
||||||
|
|
@ -164,17 +164,18 @@ rbug_destroy_query(struct pipe_context *_pipe,
|
||||||
pipe_mutex_unlock(rb_pipe->call_mutex);
|
pipe_mutex_unlock(rb_pipe->call_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static boolean
|
||||||
rbug_begin_query(struct pipe_context *_pipe,
|
rbug_begin_query(struct pipe_context *_pipe,
|
||||||
struct pipe_query *query)
|
struct pipe_query *query)
|
||||||
{
|
{
|
||||||
struct rbug_context *rb_pipe = rbug_context(_pipe);
|
struct rbug_context *rb_pipe = rbug_context(_pipe);
|
||||||
struct pipe_context *pipe = rb_pipe->pipe;
|
struct pipe_context *pipe = rb_pipe->pipe;
|
||||||
|
boolean ret;
|
||||||
|
|
||||||
pipe_mutex_lock(rb_pipe->call_mutex);
|
pipe_mutex_lock(rb_pipe->call_mutex);
|
||||||
pipe->begin_query(pipe,
|
ret = pipe->begin_query(pipe, query);
|
||||||
query);
|
|
||||||
pipe_mutex_unlock(rb_pipe->call_mutex);
|
pipe_mutex_unlock(rb_pipe->call_mutex);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ softpipe_destroy_query(struct pipe_context *pipe, struct pipe_query *q)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static boolean
|
||||||
softpipe_begin_query(struct pipe_context *pipe, struct pipe_query *q)
|
softpipe_begin_query(struct pipe_context *pipe, struct pipe_query *q)
|
||||||
{
|
{
|
||||||
struct softpipe_context *softpipe = softpipe_context( pipe );
|
struct softpipe_context *softpipe = softpipe_context( pipe );
|
||||||
|
|
@ -130,6 +130,7 @@ softpipe_begin_query(struct pipe_context *pipe, struct pipe_query *q)
|
||||||
}
|
}
|
||||||
softpipe->active_query_count++;
|
softpipe->active_query_count++;
|
||||||
softpipe->dirty |= SP_NEW_QUERY;
|
softpipe->dirty |= SP_NEW_QUERY;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -166,7 +166,7 @@ svga_destroy_query(struct pipe_context *pipe, struct pipe_query *q)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static boolean
|
||||||
svga_begin_query(struct pipe_context *pipe, struct pipe_query *q)
|
svga_begin_query(struct pipe_context *pipe, struct pipe_query *q)
|
||||||
{
|
{
|
||||||
struct svga_screen *svgascreen = svga_screen(pipe->screen);
|
struct svga_screen *svgascreen = svga_screen(pipe->screen);
|
||||||
|
|
@ -222,6 +222,7 @@ svga_begin_query(struct pipe_context *pipe, struct pipe_query *q)
|
||||||
default:
|
default:
|
||||||
assert(!"unexpected query type in svga_begin_query()");
|
assert(!"unexpected query type in svga_begin_query()");
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -185,12 +185,13 @@ trace_context_destroy_query(struct pipe_context *_pipe,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static INLINE void
|
static INLINE boolean
|
||||||
trace_context_begin_query(struct pipe_context *_pipe,
|
trace_context_begin_query(struct pipe_context *_pipe,
|
||||||
struct pipe_query *query)
|
struct pipe_query *query)
|
||||||
{
|
{
|
||||||
struct trace_context *tr_ctx = trace_context(_pipe);
|
struct trace_context *tr_ctx = trace_context(_pipe);
|
||||||
struct pipe_context *pipe = tr_ctx->pipe;
|
struct pipe_context *pipe = tr_ctx->pipe;
|
||||||
|
boolean ret;
|
||||||
|
|
||||||
query = trace_query_unwrap(query);
|
query = trace_query_unwrap(query);
|
||||||
|
|
||||||
|
|
@ -199,9 +200,10 @@ trace_context_begin_query(struct pipe_context *_pipe,
|
||||||
trace_dump_arg(ptr, pipe);
|
trace_dump_arg(ptr, pipe);
|
||||||
trace_dump_arg(ptr, query);
|
trace_dump_arg(ptr, query);
|
||||||
|
|
||||||
pipe->begin_query(pipe, query);
|
ret = pipe->begin_query(pipe, query);
|
||||||
|
|
||||||
trace_dump_call_end();
|
trace_dump_call_end();
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,7 @@ struct pipe_context {
|
||||||
void (*destroy_query)(struct pipe_context *pipe,
|
void (*destroy_query)(struct pipe_context *pipe,
|
||||||
struct pipe_query *q);
|
struct pipe_query *q);
|
||||||
|
|
||||||
void (*begin_query)(struct pipe_context *pipe, struct pipe_query *q);
|
boolean (*begin_query)(struct pipe_context *pipe, struct pipe_query *q);
|
||||||
void (*end_query)(struct pipe_context *pipe, struct pipe_query *q);
|
void (*end_query)(struct pipe_context *pipe, struct pipe_query *q);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue