radeonsi: add helper si_get_minimum_num_gfx_cs_dwords
authorMarek Olšák <marek.olsak@amd.com>
Tue, 12 Feb 2019 20:23:01 +0000 (15:23 -0500)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 23 Apr 2019 15:36:34 +0000 (11:36 -0400)
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
Acked-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeonsi/si_gfx_cs.c
src/gallium/drivers/radeonsi/si_pipe.h

index 922fc560d74225d2be8abf394252b022e772e477..39184e0e9dacecad5becbc89e2e13a132856ce03 100644 (file)
@@ -54,13 +54,7 @@ void si_need_gfx_cs_space(struct si_context *ctx)
        ctx->gtt = 0;
        ctx->vram = 0;
 
-       /* If the IB is sufficiently large, don't count the space needed
-        * and just flush if there is not enough space left.
-        *
-        * Also reserve space for stopping queries at the end of IB, because
-        * the number of active queries is mostly unlimited.
-        */
-       unsigned need_dwords = 2048 + ctx->num_cs_dw_queries_suspend;
+       unsigned need_dwords = si_get_minimum_num_gfx_cs_dwords(ctx);
        if (!ctx->ws->cs_check_space(cs, need_dwords))
                si_flush_gfx_cs(ctx, RADEON_FLUSH_ASYNC_START_NEXT_GFX_IB_NOW, NULL);
 }
index e45ef62ecfeb500a90955faf88293a341c1b9638..26b12a8a674bd14955c7e317a4b0e40dec0a4e80 100644 (file)
@@ -1434,6 +1434,17 @@ si_tile_mode_index(struct si_texture *tex, unsigned level, bool stencil)
                return tex->surface.u.legacy.tiling_index[level];
 }
 
+static inline unsigned
+si_get_minimum_num_gfx_cs_dwords(struct si_context *sctx)
+{
+       /* Don't count the needed CS space exactly and just use an upper bound.
+        *
+        * Also reserve space for stopping queries at the end of IB, because
+        * the number of active queries is unlimited in theory.
+        */
+       return 2048 + sctx->num_cs_dw_queries_suspend;
+}
+
 static inline void
 si_context_add_resource_size(struct si_context *sctx, struct pipe_resource *r)
 {