Could you maybe update src/intel/tools/aubinator_viewer_decoder.cpp (function handle_state_base_address) ?

Either way :

Reviewed-by: Lionel Landwerlin <lionel.g.landwer...@intel.com>

On 22/10/2018 06:18, Kenneth Graunke wrote:
STATE_BASE_ADDRESS only modifies various bases if the "modify" bit is
set.  Otherwise, we want to keep the existing base address.

Iris uses this for updating Surface State Base Address while leaving the
others as-is.
---
  src/intel/common/gen_batch_decoder.c | 24 +++++++++++++++++++++---
  1 file changed, 21 insertions(+), 3 deletions(-)

diff --git a/src/intel/common/gen_batch_decoder.c 
b/src/intel/common/gen_batch_decoder.c
index 1a5c8c37968..827f3dbdd2f 100644
--- a/src/intel/common/gen_batch_decoder.c
+++ b/src/intel/common/gen_batch_decoder.c
@@ -200,15 +200,33 @@ handle_state_base_address(struct gen_batch_decode_ctx 
*ctx, const uint32_t *p)
     struct gen_field_iterator iter;
     gen_field_iterator_init(&iter, inst, p, 0, false);
+ uint64_t surface_base = 0, dynamic_base = 0, instruction_base = 0;
+   bool surface_modify = 0, dynamic_modify = 0, instruction_modify = 0;
+
     while (gen_field_iterator_next(&iter)) {
        if (strcmp(iter.name, "Surface State Base Address") == 0) {
-         ctx->surface_base = iter.raw_value;
+         surface_base = iter.raw_value;
        } else if (strcmp(iter.name, "Dynamic State Base Address") == 0) {
-         ctx->dynamic_base = iter.raw_value;
+         dynamic_base = iter.raw_value;
        } else if (strcmp(iter.name, "Instruction Base Address") == 0) {
-         ctx->instruction_base = iter.raw_value;
+         instruction_base = iter.raw_value;
+      } else if (strcmp(iter.name, "Surface State Base Address Modify Enable") 
== 0) {
+         surface_modify = iter.raw_value;
+      } else if (strcmp(iter.name, "Dynamic State Base Address Modify Enable") 
== 0) {
+         dynamic_modify = iter.raw_value;
+      } else if (strcmp(iter.name, "Insntruction Base Address Modify Enable") 
== 0) {
+         instruction_modify = iter.raw_value;
        }
     }
+
+   if (dynamic_modify)
+      ctx->dynamic_base = dynamic_base;
+
+   if (surface_modify)
+      ctx->surface_base = surface_base;
+
+   if (instruction_modify)
+      ctx->instruction_base = instruction_base;
  }
static void


_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to