summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/radeonsi/radeonsi_pm4.c
diff options
context:
space:
mode:
authorJerome Glisse <[email protected]>2013-03-25 11:46:38 -0400
committerJerome Glisse <[email protected]>2013-03-27 11:38:02 -0400
commit3f7d9710e8f128c6bf6da3a87789afac8524ccd7 (patch)
treedff5d9c4ae9d5acd6aeec9f91239814fa02739d6 /src/gallium/drivers/radeonsi/radeonsi_pm4.c
parent21a2dfa55d7a797022de267efbfebaf630940c13 (diff)
radeonsi: add cs tracing v3
Same as on r600, trace cs execution by writting cs offset after each states, this allow to pin point lockup inside command stream and narrow down the scope of lockup investigation. v2: Use WRITE_DATA packet instead of WRITE_MEM v3: Remove useless nop packet Signed-off-by: Jerome Glisse <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi/radeonsi_pm4.c')
-rw-r--r--src/gallium/drivers/radeonsi/radeonsi_pm4.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeonsi/radeonsi_pm4.c b/src/gallium/drivers/radeonsi/radeonsi_pm4.c
index 79a2521f339..8e01738253e 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_pm4.c
+++ b/src/gallium/drivers/radeonsi/radeonsi_pm4.c
@@ -199,6 +199,12 @@ unsigned si_pm4_dirty_dw(struct r600_context *rctx)
continue;
count += state->ndw;
+#if R600_TRACE_CS
+ /* for tracing each states */
+ if (rctx->screen->trace_bo) {
+ count += R600_TRACE_CS_DWORDS;
+ }
+#endif
}
return count;
@@ -219,6 +225,12 @@ void si_pm4_emit(struct r600_context *rctx, struct si_pm4_state *state)
}
cs->cdw += state->ndw;
+
+#if R600_TRACE_CS
+ if (rctx->screen->trace_bo) {
+ r600_trace_emit(rctx);
+ }
+#endif
}
void si_pm4_emit_dirty(struct r600_context *rctx)