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