[Mesa-dev] [PATCH 00/11] intel/tools: Unify batch decoding between aubinators

Lionel Landwerlin lionel.g.landwerlin at intel.com
Thu Dec 14 11:40:42 UTC 2017


This looks really good :)
I can't find anything to nitpick :

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>


On 13/12/17 20:05, Jason Ekstrand wrote:
> Both aubinator and aubinator_error_decode try and do the same task of
> decoding batches.  They both have code to try and decode various things
> such as shaders from the batch.  All of that code is completely different
> between the two.
>
> This little series reworks the two to use a common gen_print_batch
> function.  In order to handle dynamic states, a callback is provided that
> lets the decoder ask for a mapped buffer given a memory address.  The basic
> structure of the new code is taken from aubinator but many of the state
> decoding details are taken from aubinator_error_decode.  This new version
> should have all the goodness of both.  In particular, aubinator_error_decode
> should now properly handle 48-bit addresses (not well tested) and it should
> also be able to handle batch chaining.  Meanwhile, aubinator gains the
> field-based decoding scheme so there are a lot fewer gen-specific manual
> decoding paths.  Everyone wins!
>
> The reason I haven't converted INTEL_DEBUG=bat yet is treefold:
>
>   1) We really should come up with some mechanism to say how many dynamic
>      states you have for a given pointers packet.  We could do some sort of
>      callback but, if we want it to work for aubinator or error_decode, we
>      will need some form of batch annotations.
>
>   2) I'm not convinced I didn't break gen4-5.  (I don't think it worked in
>      either of those tools in the first place).
>
>   3) I put it in src/intel/tools because I really don't want to rewrite the
>      build system right now to put it somewhere more common.  We can't put
>      it in src/intel/common along with the other decoder stuff because it
>      depends on the compiler and we don't want i965 to depend on
>      src/intel/tools.
>
> Jason Ekstrand (11):
>    intel/decoder: Expose the raw field value in the iterator
>    intel/tools: Add the start of a generic batch decoder
>    intel/batch-decoder: Decode MEDIA_INTERFACE_DESCRIPTOR_LOAD
>    intel/batch-decoder: Decode vertex and index buffers
>    intel/batch-decoder: Decode graphics shaders
>    intel/tools: Switch aubinator_error_decode over to the gen_print_batch
>    intel/batch-decoder: Decode constants, binding tables, and samplers
>    intel/decoder: Add a gen_print_group_length helper
>    intel/batch-decoder: Decode dynamic state
>    intel/batch-decoder: Decode registers
>    intel/tools: Convert aubinator over to the common framework
>
>   src/intel/Makefile.tools.am              |   2 +
>   src/intel/common/gen_decoder.c           |  20 +-
>   src/intel/common/gen_decoder.h           |  56 +++
>   src/intel/tools/aubinator.c              | 719 ++------------------------
>   src/intel/tools/aubinator_error_decode.c | 238 ++-------
>   src/intel/tools/gen_batch_decoder.c      | 834 +++++++++++++++++++++++++++++++
>   src/intel/tools/meson.build              |   6 +-
>   7 files changed, 976 insertions(+), 899 deletions(-)
>   create mode 100644 src/intel/tools/gen_batch_decoder.c
>



More information about the mesa-dev mailing list