[Mesa-dev] [PATCH 00/33] intel: UI for aubinator

Lionel Landwerlin lionel.g.landwerlin at intel.com
Mon Oct 30 16:58:13 UTC 2017


Hi all,

This is a proposal for a tool to help debug intel driver through
aubdumps. Having gone through implementing (& mostly debugging) the
ycbcr extension for anv, I wished I had a better tool than the text
output of aubinator.

This is the current state of about 1 & 1/2 month of experimenting with
a UI toolkit called ImGui (for Immediate Mode Gui). It turned out much
better than the previous attempts I had tried with a html UI.

Some of the commits in this series probably won't make it to the
mailing list. You can find the branch here :

   https://github.com/djdeath/mesa/tree/aubinator-imgui

I've already sent some of the commits fixing bits of the decoder.
Others are refactoring/abstractions for allowing a UI that doesn't
print out on stdout.

Some screenshots :
    https://i.imgur.com/0JTLkTo.png
    https://i.imgur.com/ABq31XD.png

Hopefully people find this interesting.

Cheers,

Lionel Landwerlin (33):
  intel: common: expose gen_spec fields
  intel: common: silence compiler warning
  intel: decoder: build sorted linked lists of fields
  intel: common: print out all dword with field spanning multiple dwords
  intel: decoder: reorder iterator init function
  intel: decoder: move field name copy
  intel: decoder: split out getting the next field and decoding it
  intel: decoder: don't read qword outside instruction/struct limit
  aubinator: print number of dwords per instruction
  intel: decoder: expose helper to test header fields
  intel: decoder: add destructor for gen_spec
  intel: decoder: simplify creation of struct when 0-allocated
  intel: decoder: pack iterator variable declarations
  intel: decoder: extract instruction/structs length
  intel: error-decode: implement a rolling window of programs
  intel: decoder: remove unused platform field
  intel: common: make intel utils available from C++
  intel: decoder: simplify field_is_header()
  intel: decoder: rename internal function to free name
  intel: decoder: rename field() to field_value()
  intel: decoder: extract field value computation
  intel: decoder: expose missing find_enum()
  intel: decoder: group enum related declarations
  intel: decoder: enable decoding a single field
  intel: compiler: abstract printing
  intel: genxml: add blitter instructions for gen6->10
  intel: genxml: be consistent about register offset naming
  intel: genxml: rename output urb offset field
  intel: decoder: change group_get_length() to take first dword
  intel: decoder: change find_instruction() to take first dword
  intel: decoder: decouple decoding from memory pointers
  intel: decoder: add function to query shader length
  intel: add aubinator ui

 configure.ac                                   |    16 +
 meson.build                                    |     5 +-
 meson_options.txt                              |     6 +
 src/intel/Makefile.tools.am                    |    58 +
 src/intel/common/gen_decoder.c                 |   519 +-
 src/intel/common/gen_decoder.h                 |    75 +-
 src/intel/common/gen_device_info.h             |     8 +
 src/intel/compiler/brw_compile_clip.c          |     5 +-
 src/intel/compiler/brw_compile_sf.c            |     5 +-
 src/intel/compiler/brw_disasm.c                |   645 +-
 src/intel/compiler/brw_eu.c                    |    39 -
 src/intel/compiler/brw_eu.h                    |    13 +-
 src/intel/compiler/brw_eu_compact.c            |     9 +-
 src/intel/compiler/intel_asm_annotation.c      |     5 +-
 src/intel/compiler/test_eu_compact.cpp         |     7 +-
 src/intel/genxml/gen10.xml                     |   782 +-
 src/intel/genxml/gen4.xml                      |     2 +-
 src/intel/genxml/gen45.xml                     |     2 +-
 src/intel/genxml/gen5.xml                      |     2 +-
 src/intel/genxml/gen6.xml                      |   748 +-
 src/intel/genxml/gen7.xml                      |   750 +-
 src/intel/genxml/gen75.xml                     |   754 +-
 src/intel/genxml/gen8.xml                      |   739 +-
 src/intel/genxml/gen9.xml                      |   782 +-
 src/intel/tools/.gitignore                     |     2 +
 src/intel/tools/aubinator.c                    |    30 +-
 src/intel/tools/aubinator_error_decode.c       |    28 +-
 src/intel/tools/aubinator_imgui_widgets.cpp    |   183 +
 src/intel/tools/aubinator_imgui_widgets.h      |    12 +
 src/intel/tools/aubinator_ui.cpp               |  3116 +++++++
 src/intel/tools/disasm.c                       |    97 +-
 src/intel/tools/gen_disasm.h                   |    17 +-
 src/intel/tools/imgui/LICENSE.txt              |    21 +
 src/intel/tools/imgui/imconfig.h               |    57 +
 src/intel/tools/imgui/imgui.cpp                | 10725 +++++++++++++++++++++++
 src/intel/tools/imgui/imgui.h                  |  1516 ++++
 src/intel/tools/imgui/imgui_demo.cpp           |  2827 ++++++
 src/intel/tools/imgui/imgui_draw.cpp           |  2673 ++++++
 src/intel/tools/imgui/imgui_impl_gtk3_cogl.cpp |   784 ++
 src/intel/tools/imgui/imgui_impl_gtk3_cogl.h   |    27 +
 src/intel/tools/imgui/imgui_internal.h         |   864 ++
 src/intel/tools/imgui/stb_rect_pack.h          |   583 ++
 src/intel/tools/imgui/stb_textedit.h           |  1322 +++
 src/intel/tools/imgui/stb_truetype.h           |  4018 +++++++++
 src/intel/tools/memory.c                       |   545 ++
 src/intel/tools/memory.h                       |    55 +
 src/intel/tools/meson.build                    |    37 +
 src/intel/vulkan/genX_cmd_buffer.c             |     6 +-
 src/intel/vulkan/genX_gpu_memcpy.c             |     4 +-
 src/intel/vulkan/genX_query.c                  |    20 +-
 src/mesa/drivers/dri/i965/genX_state_upload.c  |     2 +-
 src/mesa/drivers/dri/i965/intel_batchbuffer.c  |    30 +-
 52 files changed, 34936 insertions(+), 641 deletions(-)
 create mode 100644 src/intel/tools/aubinator_imgui_widgets.cpp
 create mode 100644 src/intel/tools/aubinator_imgui_widgets.h
 create mode 100644 src/intel/tools/aubinator_ui.cpp
 create mode 100644 src/intel/tools/imgui/LICENSE.txt
 create mode 100644 src/intel/tools/imgui/imconfig.h
 create mode 100644 src/intel/tools/imgui/imgui.cpp
 create mode 100644 src/intel/tools/imgui/imgui.h
 create mode 100644 src/intel/tools/imgui/imgui_demo.cpp
 create mode 100644 src/intel/tools/imgui/imgui_draw.cpp
 create mode 100644 src/intel/tools/imgui/imgui_impl_gtk3_cogl.cpp
 create mode 100644 src/intel/tools/imgui/imgui_impl_gtk3_cogl.h
 create mode 100644 src/intel/tools/imgui/imgui_internal.h
 create mode 100644 src/intel/tools/imgui/stb_rect_pack.h
 create mode 100644 src/intel/tools/imgui/stb_textedit.h
 create mode 100644 src/intel/tools/imgui/stb_truetype.h
 create mode 100644 src/intel/tools/memory.c
 create mode 100644 src/intel/tools/memory.h

--
2.15.0.rc2


More information about the mesa-dev mailing list