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

Reply via email to