[Mesa-dev] [PATCH] intel: Fix decoding for partial STATE_BASE_ADDRESS updates.
Lionel Landwerlin
lionel.g.landwerlin at intel.com
Mon Oct 22 09:57:10 UTC 2018
Could you maybe update src/intel/tools/aubinator_viewer_decoder.cpp
(function handle_state_base_address) ?
Either way :
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at 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
More information about the mesa-dev
mailing list