A while ago while debugging some driver errors, I added a basic image
dumping mechanism to dump images to PPM files.  This little series improves
things and adds support for dumping the framebuffer at the end of every
renderpass.  With these patches, you can dump rendering for a frame as
follows:

 1) Start the application in GDB
 2) Run until you get to the point where the rendering errors occur
 3) Pause in GDB and set a breakpoint in anv_QueuePresentKHR
 4) Continue until it reaches anv_QueuePresentKHR
 5) Call anv_dump_start(queue->device, ANV_DUMP_FRAMEBUFFERS_BIT)
 6) Continue until the next anv_QueuePresentKHR call
 7) Call anv_dump_finish() to complete the dump and write files

While it's a bit manual, the process does allow you to do some very
valuable debugging by dumping every render target at the end of every
render pass.  It's worth noting that this assumes that the application
creates all of the command buffers more-or-less in-order and between the
two anv_QueuePresentKHR calls.

Jason Ekstrand (5):
  anv/dump: Take an aspect in dump_image_to_ppm
  anv/dump: Use anv_minify instead of hand-rolling it
  anv/dump: Refactor the guts into helpers
  anv/dump: Add a barrier for the source image
  anv/dump: Add support for dumping framebuffers

 src/intel/vulkan/anv_dump.c        | 356 +++++++++++++++++++++++++++++--------
 src/intel/vulkan/anv_private.h     |  13 +-
 src/intel/vulkan/genX_cmd_buffer.c |   4 +
 3 files changed, 298 insertions(+), 75 deletions(-)

-- 
2.5.0.400.gff86faf

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

Reply via email to