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