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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev