[Mesa-dev] [PATCH 00/11] Make aubinator_error_decode support extra buffers

Kenneth Graunke kenneth at whitecape.org
Sun Nov 12 08:35:01 UTC 2017


Hello,

This series does a pretty substantial rework of aubinator_error_decode
(the new error state decoder).

The first few patches fix a whole bunch of bugs in the decoding, where
we parsed the file wrong, decoded the wrong data in the wrong places,
or decoded non-batch data as commands (generally resulting in piles of
bogus MI_NOOPs), among other bugs.

The last few patches change it to parse all the buffer data before
decoding, and decode those at the end.  This means that we have all
user buffers available to use when decoding the batch.  Now that i965
has switched to using a separate state buffer, indirect state is in a
user buffer instead of the main batch.  Without doing this, we could not
decode any indirect state at all, such as BLEND_STATE.  We were also
unable to disassemble compute shaders, as they require hopping across
three different buffers to find the assembly.

This also fixes decoding of shaders in general, which were broken due
to incorrect indexing into the programs array.  Further, it removes the
arbitrary 4096 program limit.  Go wild.  It should work.

This should also pave the way for a future unification of aubinator,
aubinator_error_decode, and INTEL_DEBUG=bat indirect state handling.
Right now, all three cut-and-paste the code to print out shaders and
other state.  That's gross, and should change.  It's not done here yet.

The only downside - and it's a pretty major one - is that I eliminated
support for error states generated on pre-4.10 kernels.  The code to
handle that was already a giant mess, and I wasn't sure how to do this
rework without making it even more of a disaster.  We really want 4.13+
anyway, in order to capture shaders, and the separate statebuffer.

--Ken



More information about the mesa-dev mailing list