Module: Mesa
Branch: master
Commit: d7cd9bfc7f4cf6ae63dae7e41086fb4f08f379c0
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d7cd9bfc7f4cf6ae63dae7e41086fb4f08f379c0

Author: Marek Olšák <marek.ol...@amd.com>
Date:   Thu Jan  8 00:10:18 2015 +0100

Revert "radeonsi: reduce the size of si_pm4_state"

This reverts commit 9141d8855555e45a057970e78969e1518ad3617d.

It broke OpenCL.

---

 src/gallium/drivers/radeonsi/si_pm4.c |    6 +++++-
 src/gallium/drivers/radeonsi/si_pm4.h |    9 +++++++--
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_pm4.c 
b/src/gallium/drivers/radeonsi/si_pm4.c
index 2729346..5edf152 100644
--- a/src/gallium/drivers/radeonsi/si_pm4.c
+++ b/src/gallium/drivers/radeonsi/si_pm4.c
@@ -145,13 +145,17 @@ 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
diff --git a/src/gallium/drivers/radeonsi/si_pm4.h 
b/src/gallium/drivers/radeonsi/si_pm4.h
index 388bb4b..8680a9e 100644
--- a/src/gallium/drivers/radeonsi/si_pm4.h
+++ b/src/gallium/drivers/radeonsi/si_pm4.h
@@ -29,8 +29,9 @@
 
 #include "radeon/drm/radeon_winsys.h"
 
-#define SI_PM4_MAX_DW          140
-#define SI_PM4_MAX_BO          4
+#define SI_PM4_MAX_DW          256
+#define SI_PM4_MAX_BO          32
+#define SI_PM4_MAX_RELOCS      4
 
 // forward defines
 struct si_context;
@@ -53,6 +54,10 @@ 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;
 };
 

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to