From: Marek Olšák <marek.ol...@amd.com> --- src/gallium/drivers/radeon/r600_perfcounter.c | 12 ++++++------ src/gallium/drivers/radeon/r600_query.c | 9 ++++----- src/gallium/drivers/radeon/r600_query.h | 4 ++-- 3 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/src/gallium/drivers/radeon/r600_perfcounter.c b/src/gallium/drivers/radeon/r600_perfcounter.c index 0c2c6e9..bf24aab 100644 --- a/src/gallium/drivers/radeon/r600_perfcounter.c +++ b/src/gallium/drivers/radeon/r600_perfcounter.c @@ -92,34 +92,34 @@ struct r600_pc_counter { struct r600_query_pc { struct r600_query_hw b; unsigned shaders; unsigned num_counters; struct r600_pc_counter *counters; struct r600_pc_group *groups; }; -static void r600_pc_query_destroy(struct r600_common_context *ctx, +static void r600_pc_query_destroy(struct r600_common_screen *rscreen, struct r600_query *rquery) { struct r600_query_pc *query = (struct r600_query_pc *)rquery; while (query->groups) { struct r600_pc_group *group = query->groups; query->groups = group->next; FREE(group); } FREE(query->counters); - r600_query_hw_destroy(ctx, rquery); + r600_query_hw_destroy(rscreen, rquery); } static bool r600_pc_query_prepare_buffer(struct r600_common_screen *screen, struct r600_query_hw *hwquery, struct r600_resource *buffer) { /* no-op */ return true; } @@ -294,22 +294,22 @@ static struct r600_pc_group *get_group_state(struct r600_common_screen *screen, group->next = query->groups; query->groups = group; return group; } struct pipe_query *r600_create_batch_query(struct pipe_context *ctx, unsigned num_queries, unsigned *query_types) { - struct r600_common_context *rctx = (struct r600_common_context *)ctx; - struct r600_common_screen *screen = rctx->screen; + struct r600_common_screen *screen = + (struct r600_common_screen *)ctx->screen; struct r600_perfcounters *pc = screen->perfcounters; struct r600_perfcounter_block *block; struct r600_pc_group *group; struct r600_query_pc *query; unsigned base_gid, sub_gid, sub_index; unsigned i, j; if (!pc) return NULL; @@ -358,21 +358,21 @@ struct pipe_query *r600_create_batch_query(struct pipe_context *ctx, query->b.num_cs_dw_begin += pc->num_instance_cs_dwords; /* conservative */ query->b.num_cs_dw_end += pc->num_instance_cs_dwords; i = 0; for (group = query->groups; group; group = group->next) { struct r600_perfcounter_block *block = group->block; unsigned select_dw, read_dw; unsigned instances = 1; if ((block->flags & R600_PC_BLOCK_SE) && group->se < 0) - instances = rctx->screen->info.max_se; + instances = screen->info.max_se; if (group->instance < 0) instances *= block->num_instances; group->result_base = i; query->b.result_size += sizeof(uint64_t) * instances * group->num_counters; i += instances * group->num_counters; pc->get_size(block, group->num_counters, group->selectors, &select_dw, &read_dw); query->b.num_cs_dw_begin += select_dw; @@ -416,21 +416,21 @@ struct pipe_query *r600_create_batch_query(struct pipe_context *ctx, if (group->instance < 0) counter->qwords *= block->num_instances; } if (!r600_query_hw_init(screen, &query->b)) goto error; return (struct pipe_query *)query; error: - r600_pc_query_destroy(rctx, &query->b.b); + r600_pc_query_destroy(screen, &query->b.b); return NULL; } static bool r600_init_block_names(struct r600_common_screen *screen, struct r600_perfcounter_block *block) { unsigned i, j, k; unsigned groups_shader = 1, groups_se = 1, groups_instance = 1; unsigned namelen; char *groupname; diff --git a/src/gallium/drivers/radeon/r600_query.c b/src/gallium/drivers/radeon/r600_query.c index d834261..e269c39 100644 --- a/src/gallium/drivers/radeon/r600_query.c +++ b/src/gallium/drivers/radeon/r600_query.c @@ -44,27 +44,26 @@ struct r600_query_sw { uint64_t begin_result; uint64_t end_result; uint64_t begin_time; uint64_t end_time; /* Fence for GPU_FINISHED. */ struct pipe_fence_handle *fence; }; -static void r600_query_sw_destroy(struct r600_common_context *rctx, +static void r600_query_sw_destroy(struct r600_common_screen *rscreen, struct r600_query *rquery) { - struct pipe_screen *screen = rctx->b.screen; struct r600_query_sw *query = (struct r600_query_sw *)rquery; - screen->fence_reference(screen, &query->fence, NULL); + rscreen->b.fence_reference(&rscreen->b, &query->fence, NULL); FREE(query); } static enum radeon_value_id winsys_id_from_type(unsigned type) { switch (type) { case R600_QUERY_REQUESTED_VRAM: return RADEON_REQUESTED_VRAM_MEMORY; case R600_QUERY_REQUESTED_GTT: return RADEON_REQUESTED_GTT_MEMORY; case R600_QUERY_MAPPED_VRAM: return RADEON_MAPPED_VRAM; case R600_QUERY_MAPPED_GTT: return RADEON_MAPPED_GTT; @@ -407,21 +406,21 @@ static struct pipe_query *r600_query_sw_create(unsigned query_type) query = CALLOC_STRUCT(r600_query_sw); if (!query) return NULL; query->b.type = query_type; query->b.ops = &sw_query_ops; return (struct pipe_query *)query; } -void r600_query_hw_destroy(struct r600_common_context *rctx, +void r600_query_hw_destroy(struct r600_common_screen *rscreen, struct r600_query *rquery) { struct r600_query_hw *query = (struct r600_query_hw *)rquery; struct r600_query_buffer *prev = query->buffer.previous; /* Release all query buffers. */ while (prev) { struct r600_query_buffer *qbuf = prev; prev = prev->previous; r600_resource_reference(&qbuf->buf, NULL); @@ -869,21 +868,21 @@ static struct pipe_query *r600_create_query(struct pipe_context *ctx, unsigned q return r600_query_sw_create(query_type); return r600_query_hw_create(rscreen, query_type, index); } static void r600_destroy_query(struct pipe_context *ctx, struct pipe_query *query) { struct r600_common_context *rctx = (struct r600_common_context *)ctx; struct r600_query *rquery = (struct r600_query *)query; - rquery->ops->destroy(rctx, rquery); + rquery->ops->destroy(rctx->screen, rquery); } 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_query *rquery = (struct r600_query *)query; return rquery->ops->begin(rctx, rquery); } diff --git a/src/gallium/drivers/radeon/r600_query.h b/src/gallium/drivers/radeon/r600_query.h index 052034a..d39663a 100644 --- a/src/gallium/drivers/radeon/r600_query.h +++ b/src/gallium/drivers/radeon/r600_query.h @@ -106,21 +106,21 @@ enum { R600_QUERY_FIRST_PERFCOUNTER = PIPE_QUERY_DRIVER_SPECIFIC + 100, }; enum { R600_QUERY_GROUP_GPIN = 0, R600_NUM_SW_QUERY_GROUPS }; struct r600_query_ops { - void (*destroy)(struct r600_common_context *, struct r600_query *); + void (*destroy)(struct r600_common_screen *, struct r600_query *); bool (*begin)(struct r600_common_context *, struct r600_query *); bool (*end)(struct r600_common_context *, struct r600_query *); bool (*get_result)(struct r600_common_context *, struct r600_query *, bool wait, union pipe_query_result *result); void (*get_result_resource)(struct r600_common_context *, struct r600_query *, bool wait, enum pipe_query_value_type result_type, int index, struct pipe_resource *resource, @@ -182,21 +182,21 @@ struct r600_query_hw { unsigned num_cs_dw_begin; unsigned num_cs_dw_end; /* Linked list of queries */ struct list_head list; /* For transform feedback: which stream the query is for */ unsigned stream; }; bool r600_query_hw_init(struct r600_common_screen *rscreen, struct r600_query_hw *query); -void r600_query_hw_destroy(struct r600_common_context *rctx, +void r600_query_hw_destroy(struct r600_common_screen *rscreen, struct r600_query *rquery); bool r600_query_hw_begin(struct r600_common_context *rctx, struct r600_query *rquery); bool r600_query_hw_end(struct r600_common_context *rctx, struct r600_query *rquery); bool r600_query_hw_get_result(struct r600_common_context *rctx, struct r600_query *rquery, bool wait, union pipe_query_result *result); -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev