Hi all,

GALLIUM_DDEBUG is a useful facility for understanding what the driver
actually does, but it can occasionally be hard to follow the IB dumps,
especially when you want to understand a sequence of draws that are
all placed in the same IB, without submits in between.

The goal of this series is to properly interleave the IB chunks that
are emitted for each draw with the corresponding state. On top, this
should be done in a way that doesn't slow down pipelined hang detection
too much.

This series refactors the logging done by ddebug, somewhat putting it
on its head. Rather than asking the driver to provide information at
specific times, the ddebug module passes a u_log_context to the driver.
The driver then appends opaque "chunks" to the log as it does its thing.
The ddebug module will cut of "pages" of chunks associated with Gallium
level draw calls, and request actual formatting (printing) of those
pages only when needed.

There are probably still some aspects to be tweaked over time, but
I found this mode quite useful for GALLIUM_DDEBUG="always noflush"
of some smaller tests, and I can see it being quite useful for pipelined
hang detection as well -- although that needs some separate fixes and
improvements, e.g. because those fence writes that ddebug does actually
end up as SDMA writes (aka useless) nowadays! Anyway, I feel the
current state is already an improvement.

Please review!
Thanks,
Nicolai
--
 src/amd/common/ac_debug.c                    |  37 +-
 src/amd/common/ac_debug.h                    |   3 +
 src/gallium/auxiliary/Makefile.sources       |   2 +
 src/gallium/auxiliary/util/u_log.c           | 234 ++++++++
 src/gallium/auxiliary/util/u_log.h           | 100 ++++
 src/gallium/drivers/ddebug/dd_context.c      |   9 +
 src/gallium/drivers/ddebug/dd_draw.c         |  95 +---
 src/gallium/drivers/ddebug/dd_pipe.h         |   5 +-
 .../drivers/radeon/r600_pipe_common.h        |   5 +-
 src/gallium/drivers/radeon/r600_texture.c    |  41 +-
 src/gallium/drivers/radeonsi/si_blit.c       |  13 +
 src/gallium/drivers/radeonsi/si_compute.c    |  30 +-
 src/gallium/drivers/radeonsi/si_compute.h    |  14 +
 src/gallium/drivers/radeonsi/si_debug.c      | 493 ++++++++++++-----
 src/gallium/drivers/radeonsi/si_hw_context.c |  64 ++-
 src/gallium/drivers/radeonsi/si_pipe.c       |  19 +-
 src/gallium/drivers/radeonsi/si_pipe.h       |  33 +-
 src/gallium/drivers/radeonsi/si_shader.h     |  14 +
 src/gallium/drivers/radeonsi/si_state_draw.c |  31 +-
 .../drivers/radeonsi/si_state_shaders.c      |  17 +-
 src/gallium/include/pipe/p_context.h         |  14 +
 src/gallium/include/pipe/p_defines.h         |   3 -
 22 files changed, 978 insertions(+), 298 deletions(-)

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to