On 02/05/18 16:45, Kenneth Graunke wrote:
On Wednesday, May 2, 2018 3:52:22 AM PDT Lionel Landwerlin wrote:
On 02/05/18 06:50, Kenneth Graunke wrote:
Given an arbitrary batch, we don't always know what the size of certain
things are, such as how many entries are in a binding table.  But it's
easy for the driver to track that information, so with a simple callback
we can calculate this correctly for INTEL_DEBUG=bat.
---
   src/intel/common/gen_batch_decoder.c     | 23 +++++++++++++++++++----
   src/intel/common/gen_decoder.h           |  4 ++++
   src/intel/tools/aubinator.c              |  2 +-
   src/intel/tools/aubinator_error_decode.c |  2 +-
   4 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/src/intel/common/gen_batch_decoder.c 
b/src/intel/common/gen_batch_decoder.c
index c6b908758b2..37eac1ab2a1 100644
--- a/src/intel/common/gen_batch_decoder.c
+++ b/src/intel/common/gen_batch_decoder.c
@@ -33,11 +33,13 @@ gen_batch_decode_ctx_init(struct gen_batch_decode_ctx *ctx,
                             const char *xml_path,
                             struct gen_batch_decode_bo (*get_bo)(void *,
                                                                  uint64_t),
+                          unsigned (*get_state_size)(void *, uint32_t),
                             void *user_data)
   {
      memset(ctx, 0, sizeof(*ctx));
ctx->get_bo = get_bo;
+   ctx->get_state_size = get_state_size;
      ctx->user_data = user_data;
      ctx->fp = fp;
      ctx->flags = flags;
@@ -103,6 +105,21 @@ ctx_get_bo(struct gen_batch_decode_ctx *ctx, uint64_t addr)
      return bo;
   }
+static int
+update_count(struct gen_batch_decode_ctx *ctx,
+             uint32_t offset_from_dsba,
+             unsigned element_dwords,
+             unsigned guess)
+{
+   unsigned size = ctx->get_state_size(ctx->user_data, offset_from_dsba);
You probably want to get the fact that ctx->get_state_size might be NULL?
Eep, yes...thanks!  I'd done that at first, but botched it in a
refactor...clearly I hadn't actually tested the aubinator tools...

I've changed it to:

-   unsigned size = ctx->get_state_size(ctx->user_data, offset_from_dsba);
+   unsigned size = 0;
+
+   if (ctx->get_state_size)
+      size = ctx->get_state_size(ctx->user_data, offset_from_dsba);

Thanks,

Reviewed-by: Lionel Landwerlin <[email protected]>
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to