From edfd8d42a9ac870a6ebc5a56fc003f60f86b702c Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Tue, 5 Sep 2017 15:46:30 -0700 Subject: [PATCH] i965: Add an INTEL_DEBUG=submit option for printing batch statistics. When a batch is submitted, INTEL_DEBUG=bat prints a message indicating which part of the code triggered the flush, and some statistics about the batch/state buffer utilization. It also decodes the batchbuffer in debug builds...which is so much output that it drowns out the utilization messages, if that's all you care about. INTEL_DEBUG=submit now just does the utilization messages. INTEL_DEBUG=bat continues to do both (as the message is a good indicator that we're starting decode of a new batch). v2: Rename from "flush" to "submit" (suggested by Chris) because we might want "flush" for PIPE_CONTROL debugging someday. Reviewed-by: Chris Wilson --- docs/envvars.html | 1 + src/intel/common/gen_debug.c | 1 + src/intel/common/gen_debug.h | 2 +- src/mesa/drivers/dri/i965/intel_batchbuffer.c | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/envvars.html b/docs/envvars.html index 17d69dc4cd4..6c2bdab1554 100644 --- a/docs/envvars.html +++ b/docs/envvars.html @@ -197,6 +197,7 @@ See the Xlib software driver page for details.
  • spill_fs - force spilling of all registers in the scalar backend (useful to debug spilling code)
  • spill_vec4 - force spilling of all registers in the vec4 backend (useful to debug spilling code)
  • state - emit messages about state flag tracking
  • +
  • submit - emit batchbuffer usage statistics
  • sync - after sending each batch, emit a message and wait for that batch to finish rendering
  • tcs - dump shader assembly for tessellation control shaders
  • tes - dump shader assembly for tessellation evaluation shaders
  • diff --git a/src/intel/common/gen_debug.c b/src/intel/common/gen_debug.c index b604d56ef86..4677bfd582b 100644 --- a/src/intel/common/gen_debug.c +++ b/src/intel/common/gen_debug.c @@ -57,6 +57,7 @@ static const struct debug_control debug_control[] = { { "vert", DEBUG_VERTS }, { "dri", DEBUG_DRI }, { "sf", DEBUG_SF }, + { "submit", DEBUG_SUBMIT }, { "wm", DEBUG_WM }, { "urb", DEBUG_URB }, { "vs", DEBUG_VS }, diff --git a/src/intel/common/gen_debug.h b/src/intel/common/gen_debug.h index d290303682e..da98f852a4b 100644 --- a/src/intel/common/gen_debug.h +++ b/src/intel/common/gen_debug.h @@ -57,7 +57,7 @@ extern uint64_t INTEL_DEBUG; #define DEBUG_VERTS (1ull << 13) #define DEBUG_DRI (1ull << 14) #define DEBUG_SF (1ull << 15) -/* Hole - feel free to reuse (1ull << 16) */ +#define DEBUG_SUBMIT (1ull << 16) #define DEBUG_WM (1ull << 17) #define DEBUG_URB (1ull << 18) #define DEBUG_VS (1ull << 19) diff --git a/src/mesa/drivers/dri/i965/intel_batchbuffer.c b/src/mesa/drivers/dri/i965/intel_batchbuffer.c index 08d35ace135..515b595bc92 100644 --- a/src/mesa/drivers/dri/i965/intel_batchbuffer.c +++ b/src/mesa/drivers/dri/i965/intel_batchbuffer.c @@ -731,7 +731,7 @@ _intel_batchbuffer_flush_fence(struct brw_context *brw, brw_bo_reference(brw->throttle_batch[0]); } - if (unlikely(INTEL_DEBUG & DEBUG_BATCH)) { + if (unlikely(INTEL_DEBUG & (DEBUG_BATCH | DEBUG_SUBMIT))) { int bytes_for_commands = 4 * USED_BATCH(brw->batch); int bytes_for_state = brw->batch.bo->size - brw->batch.state_batch_offset; int total_bytes = bytes_for_commands + bytes_for_state; -- 2.30.2