gallium/radeon: count contexts
authorMarek Olšák <marek.olsak@amd.com>
Fri, 15 Jul 2016 21:17:43 +0000 (23:17 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Sat, 6 Aug 2016 12:29:30 +0000 (14:29 +0200)
We don't wanna use unflushed fences when we have multiple contexts.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeon/r600_pipe_common.c
src/gallium/drivers/radeon/r600_pipe_common.h

index 7fd3fe0..5e9d0b6 100644 (file)
@@ -471,6 +471,7 @@ bool r600_common_context_init(struct r600_common_context *rctx,
                rctx->dma.flush = r600_flush_dma_ring;
        }
 
+       p_atomic_inc(&rscreen->num_contexts);
        return true;
 }
 
@@ -478,6 +479,8 @@ void r600_common_context_cleanup(struct r600_common_context *rctx)
 {
        unsigned i,j;
 
+       p_atomic_dec(&rctx->screen->num_contexts);
+
        /* Release DCC stats. */
        for (i = 0; i < ARRAY_SIZE(rctx->dcc_stats); i++) {
                assert(!rctx->dcc_stats[i].query_active);
index 91e3cb2..ccaaeeb 100644 (file)
@@ -363,6 +363,7 @@ struct r600_common_screen {
        uint64_t                        debug_flags;
        bool                            has_cp_dma;
        bool                            has_streamout;
+       int                             num_contexts;
 
        /* Texture filter settings. */
        int                             force_aniso; /* -1 = disabled */