[Mesa-dev] [PATCH 8/9] i965: Pass consistent args along gen6_queryobj.c
Chris Wilson
chris at chris-wilson.co.uk
Tue Oct 2 18:06:24 UTC 2018
Be consistent in passing along brw_context rather than switching between
that and gl_context.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
---
src/mesa/drivers/dri/i965/gen6_queryobj.c | 30 +++++++++++------------
1 file changed, 14 insertions(+), 16 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/gen6_queryobj.c b/src/mesa/drivers/dri/i965/gen6_queryobj.c
index f73f29e8524..f3b9dd24624 100644
--- a/src/mesa/drivers/dri/i965/gen6_queryobj.c
+++ b/src/mesa/drivers/dri/i965/gen6_queryobj.c
@@ -101,11 +101,10 @@ write_xfb_primitives_written(struct brw_context *brw,
}
static void
-write_xfb_overflow_streams(struct gl_context *ctx,
+write_xfb_overflow_streams(struct brw_context *brw,
struct brw_bo *bo, int stream, int count,
int idx)
{
- struct brw_context *brw = brw_context(ctx);
const struct gen_device_info *devinfo = &brw->screen->devinfo;
brw_emit_mi_flush(brw);
@@ -209,16 +208,12 @@ emit_pipeline_stat(struct brw_context *brw, struct brw_bo *bo,
* Wait on the query object's BO and calculate the final result.
*/
static void
-gen6_queryobj_get_results(struct gl_context *ctx,
+gen6_queryobj_get_results(struct brw_context *brw,
struct brw_query_object *query,
uint64_t *results)
{
- struct brw_context *brw = brw_context(ctx);
const struct gen_device_info *devinfo = &brw->screen->devinfo;
- if (query->bo == NULL)
- return;
-
switch (query->Base.Target) {
case GL_TIME_ELAPSED:
/* The query BO contains the starting and ending timestamps.
@@ -235,7 +230,7 @@ gen6_queryobj_get_results(struct gl_context *ctx,
/* Ensure the scaled timestamp overflows according to
* GL_QUERY_COUNTER_BITS
*/
- query->Base.Result &= (1ull << ctx->Const.QueryCounterBits.Timestamp) - 1;
+ query->Base.Result &= (1ull << brw->ctx.Const.QueryCounterBits.Timestamp) - 1;
break;
case GL_SAMPLES_PASSED_ARB:
@@ -401,7 +396,7 @@ gen6_begin_query(struct gl_context *ctx, struct gl_query_object *q)
case GL_PRIMITIVES_GENERATED:
write_primitives_generated(brw, query->bo, query->Base.Stream, idx);
if (query->Base.Stream == 0)
- ctx->NewDriverState |= BRW_NEW_RASTERIZER_DISCARD;
+ brw->ctx.NewDriverState |= BRW_NEW_RASTERIZER_DISCARD;
break;
case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:
@@ -409,11 +404,11 @@ gen6_begin_query(struct gl_context *ctx, struct gl_query_object *q)
break;
case GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB:
- write_xfb_overflow_streams(ctx, query->bo, query->Base.Stream, 1, idx);
+ write_xfb_overflow_streams(brw, query->bo, query->Base.Stream, 1, idx);
break;
case GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB:
- write_xfb_overflow_streams(ctx, query->bo, 0, MAX_VERTEX_STREAMS, idx);
+ write_xfb_overflow_streams(brw, query->bo, 0, MAX_VERTEX_STREAMS, idx);
break;
case GL_VERTICES_SUBMITTED_ARB:
@@ -464,7 +459,7 @@ gen6_end_query(struct gl_context *ctx, struct gl_query_object *q)
case GL_PRIMITIVES_GENERATED:
write_primitives_generated(brw, query->bo, query->Base.Stream, idx);
if (query->Base.Stream == 0)
- ctx->NewDriverState |= BRW_NEW_RASTERIZER_DISCARD;
+ brw->ctx.NewDriverState |= BRW_NEW_RASTERIZER_DISCARD;
break;
case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:
@@ -472,11 +467,11 @@ gen6_end_query(struct gl_context *ctx, struct gl_query_object *q)
break;
case GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB:
- write_xfb_overflow_streams(ctx, query->bo, query->Base.Stream, 1, idx);
+ write_xfb_overflow_streams(brw, query->bo, query->Base.Stream, 1, idx);
break;
case GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB:
- write_xfb_overflow_streams(ctx, query->bo, 0, MAX_VERTEX_STREAMS, idx);
+ write_xfb_overflow_streams(brw, query->bo, 0, MAX_VERTEX_STREAMS, idx);
break;
/* calculate overflow here */
@@ -535,6 +530,9 @@ static void gen6_wait_query(struct gl_context *ctx, struct gl_query_object *q)
struct brw_context *brw = brw_context(ctx);
struct brw_query_object *query = (struct brw_query_object *)q;
+ if (query->bo == NULL)
+ return;
+
/* If the application has requested the query result, but this batch is
* still contributing to it, flush it now to finish that work so the
* result will become available (eventually).
@@ -545,7 +543,7 @@ static void gen6_wait_query(struct gl_context *ctx, struct gl_query_object *q)
if (!results[GEN6_QUERY_PREDICATE]) /* not yet available, must wait */
brw_bo_wait_rendering(query->bo);
- gen6_queryobj_get_results(ctx, query, results + GEN6_QUERY_RESULTS);
+ gen6_queryobj_get_results(brw, query, results + GEN6_QUERY_RESULTS);
}
/**
@@ -577,7 +575,7 @@ static void gen6_check_query(struct gl_context *ctx, struct gl_query_object *q)
uint64_t *results = query->results;
if (results[GEN6_QUERY_PREDICATE] || /* already available, can read async */
!brw_bo_map_busy(query->bo, MAP_READ)) /* GPU hang, results lost? */
- gen6_queryobj_get_results(ctx, query, results + GEN6_QUERY_RESULTS);
+ gen6_queryobj_get_results(brw, query, results + GEN6_QUERY_RESULTS);
}
static void
--
2.19.0
More information about the mesa-dev
mailing list