[Mesa-dev] [PATCH v2 02/16] intel: aubinator: remove standard input processing option

Rafael Antognolli rafael.antognolli at intel.com
Tue Jun 19 18:40:30 UTC 2018


On Tue, Jun 19, 2018 at 02:45:17PM +0100, Lionel Landwerlin wrote:
> Now that we rely on mmap of the data to parse, we can't process the
> standard input anymore.

Didn't we rely on mmap of the data since forever?

> This isn't much of a big deal because we have in-process batch decoder
> (run with INTEL_DEBUG=batch) that supports essentially doing the same
> thing.
> 
> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
> ---
>  src/intel/tools/aubinator.c | 102 +++++-------------------------------
>  1 file changed, 12 insertions(+), 90 deletions(-)
> 
> diff --git a/src/intel/tools/aubinator.c b/src/intel/tools/aubinator.c
> index 949ba96e556..3f9047e69a8 100644
> --- a/src/intel/tools/aubinator.c
> +++ b/src/intel/tools/aubinator.c
> @@ -350,17 +350,6 @@ aub_file_open(const char *filename)
>     return file;
>  }
>  
> -static struct aub_file *
> -aub_file_stdin(void)
> -{
> -   struct aub_file *file;
> -
> -   file = calloc(1, sizeof *file);
> -   file->stream = stdin;
> -
> -   return file;
> -}
> -
>  #define TYPE(dw)       (((dw) >> 29) & 7)
>  #define OPCODE(dw)     (((dw) >> 23) & 0x3f)
>  #define SUBOPCODE(dw)  (((dw) >> 16) & 0x7f)
> @@ -398,8 +387,7 @@ aub_file_decode_batch(struct aub_file *file)
>     uint32_t *p, h, *new_cursor;
>     int header_length, bias;
>  
> -   if (file->end - file->cursor < 1)
> -      return AUB_ITEM_DECODE_NEED_MORE_DATA;
> +   assert(file->cursor < file->end);
>  
>     p = file->cursor;
>     h = *p;
> @@ -421,13 +409,11 @@ aub_file_decode_batch(struct aub_file *file)
>  
>     new_cursor = p + header_length + bias;
>     if ((h & 0xffff0000) == MAKE_HEADER(TYPE_AUB, OPCODE_AUB, SUBOPCODE_BLOCK)) {
> -      if (file->end - file->cursor < 4)
> -         return AUB_ITEM_DECODE_NEED_MORE_DATA;
> +      assert(file->end - file->cursor >= 4);
>        new_cursor += p[4] / 4;
>     }
>  
> -   if (new_cursor > file->end)
> -      return AUB_ITEM_DECODE_NEED_MORE_DATA;
> +   assert(new_cursor <= file->end);
>  
>     switch (h & 0xffff0000) {
>     case MAKE_HEADER(TYPE_AUB, OPCODE_AUB, SUBOPCODE_HEADER):
> @@ -468,48 +454,6 @@ aub_file_more_stuff(struct aub_file *file)
>     return file->cursor < file->end || (file->stream && !feof(file->stream));
>  }
>  
> -#define AUB_READ_BUFFER_SIZE (4096)
> -#define MAX(a, b) ((a) < (b) ? (b) : (a))
> -
> -static void
> -aub_file_data_grow(struct aub_file *file)
> -{
> -   size_t old_size = (file->mem_end - file->map) * 4;
> -   size_t new_size = MAX(old_size * 2, AUB_READ_BUFFER_SIZE);
> -   uint32_t *new_start = realloc(file->map, new_size);
> -
> -   file->cursor = new_start + (file->cursor - file->map);
> -   file->end = new_start + (file->end - file->map);
> -   file->map = new_start;
> -   file->mem_end = file->map + (new_size / 4);
> -}
> -
> -static bool
> -aub_file_data_load(struct aub_file *file)
> -{
> -   size_t r;
> -
> -   if (file->stream == NULL)
> -      return false;
> -
> -   /* First remove any consumed data */
> -   if (file->cursor > file->map) {
> -      memmove(file->map, file->cursor,
> -              (file->end - file->cursor) * 4);
> -      file->end -= file->cursor - file->map;
> -      file->cursor = file->map;
> -   }
> -
> -   /* Then load some new data in */
> -   if ((file->mem_end - file->end) < (AUB_READ_BUFFER_SIZE / 4))
> -      aub_file_data_grow(file);
> -
> -   r = fread(file->end, 1, (file->mem_end - file->end) * 4, file->stream);
> -   file->end += r / 4;
> -
> -   return r != 0;
> -}
> -
>  static void
>  setup_pager(void)
>  {
> @@ -541,9 +485,8 @@ static void
>  print_help(const char *progname, FILE *file)
>  {
>     fprintf(file,
> -           "Usage: %s [OPTION]... [FILE]\n"
> -           "Decode aub file contents from either FILE or the standard input.\n\n"
> -           "A valid --gen option must be provided.\n\n"
> +           "Usage: %s [OPTION]... FILE\n"
> +           "Decode aub file contents from FILE.\n\n"
>             "      --help             display this help and exit\n"
>             "      --gen=platform     decode for given platform (3 letter platform name)\n"
>             "      --headers          decode only command headers\n"
> @@ -612,14 +555,14 @@ int main(int argc, char *argv[])
>        }
>     }
>  
> -   if (help || argc == 1) {
> +   if (optind < argc)
> +      input_file = argv[optind];
> +
> +   if (help || !input_file) {
>        print_help(argv[0], stderr);
>        exit(0);
>     }
>  
> -   if (optind < argc)
> -      input_file = argv[optind];
> -
>     /* Do this before we redirect stdout to pager. */
>     if (option_color == COLOR_AUTO)
>        option_color = isatty(1) ? COLOR_ALWAYS : COLOR_NEVER;
> @@ -627,11 +570,6 @@ int main(int argc, char *argv[])
>     if (isatty(1) && pager)
>        setup_pager();
>  
> -   if (input_file == NULL)
> -      file = aub_file_stdin();
> -   else
> -      file = aub_file_open(input_file);
> -
>     /* mmap a terabyte for our gtt space. */
>     gtt_size = 1ull << 40;
>     gtt = mmap(NULL, gtt_size, PROT_READ | PROT_WRITE,
> @@ -641,26 +579,10 @@ int main(int argc, char *argv[])
>        exit(EXIT_FAILURE);
>     }
>  
> -   while (aub_file_more_stuff(file)) {
> -      switch (aub_file_decode_batch(file)) {
> -      case AUB_ITEM_DECODE_OK:
> -         break;
> -      case AUB_ITEM_DECODE_NEED_MORE_DATA:
> -         if (!file->stream) {
> -            file->cursor = file->end;
> -            break;
> -         }
> -         if (aub_file_more_stuff(file) && !aub_file_data_load(file)) {
> -            fprintf(stderr, "failed to load data from stdin\n");
> -            exit(EXIT_FAILURE);
> -         }
> -         break;
> -      default:
> -         fprintf(stderr, "failed to parse aubdump data\n");
> -         exit(EXIT_FAILURE);
> -      }
> -   }
> +   file = aub_file_open(input_file);
>  
> +   while (aub_file_more_stuff(file) &&
> +          aub_file_decode_batch(file) == AUB_ITEM_DECODE_OK);
>  
>     fflush(stdout);
>     /* close the stdout which is opened to write the output */
> -- 
> 2.17.1
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list