radeonsi: reduce the size of si_pm4_state
authorMarek Olšák <marek.olsak@amd.com>
Tue, 30 Dec 2014 22:49:59 +0000 (23:49 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 7 Jan 2015 11:06:43 +0000 (12:06 +0100)
- the relocs array is unused, remove it
- ndw is at most 115 (init), set 140 as the maximum
- compute needs 4 buffers per state, graphics only needs 1; set 4 as the maximum

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
src/gallium/drivers/radeonsi/si_pm4.c
src/gallium/drivers/radeonsi/si_pm4.h

index 954eb6e5ff1cc20c33b7b5b41d38666e44c360aa..21ab9f24b2138804674af3e8750946c406da4cb8 100644 (file)
@@ -145,17 +145,13 @@ unsigned si_pm4_dirty_dw(struct si_context *sctx)
 void si_pm4_emit(struct si_context *sctx, struct si_pm4_state *state)
 {
        struct radeon_winsys_cs *cs = sctx->b.rings.gfx.cs;
+
        for (int i = 0; i < state->nbo; ++i) {
                r600_context_bo_reloc(&sctx->b, &sctx->b.rings.gfx, state->bo[i],
                                      state->bo_usage[i], state->bo_priority[i]);
        }
 
        memcpy(&cs->buf[cs->cdw], state->pm4, state->ndw * 4);
-
-       for (int i = 0; i < state->nrelocs; ++i) {
-               cs->buf[cs->cdw + state->relocs[i]] += cs->cdw << 2;
-       }
-
        cs->cdw += state->ndw;
 
 #if SI_TRACE_CS
index 8680a9ef11c93bb7c2efd741185ab9ce07fd144b..388bb4b47f13a29ff7d56b8abd647a2086e47e45 100644 (file)
@@ -29,9 +29,8 @@
 
 #include "radeon/drm/radeon_winsys.h"
 
-#define SI_PM4_MAX_DW          256
-#define SI_PM4_MAX_BO          32
-#define SI_PM4_MAX_RELOCS      4
+#define SI_PM4_MAX_DW          140
+#define SI_PM4_MAX_BO          4
 
 // forward defines
 struct si_context;
@@ -54,10 +53,6 @@ struct si_pm4_state
        enum radeon_bo_usage    bo_usage[SI_PM4_MAX_BO];
        enum radeon_bo_priority bo_priority[SI_PM4_MAX_BO];
 
-       /* relocs for shader data */
-       unsigned        nrelocs;
-       unsigned        relocs[SI_PM4_MAX_RELOCS];
-
        bool compute_pkt;
 };