All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis
@ 2023-02-14 20:59 Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 01/30] i915/perf: Add support for 64-bit OA formats Umesh Nerlige Ramappa
                   ` (33 more replies)
  0 siblings, 34 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Add support for OAM in IGT and enable support for GPUvis to capture
OA reports on the media GT using OAM unit.

OAM test support
----------------
  i915/perf: Add support for 64-bit OA formats
  i915/perf: Define a default engine for OA
  i915/perf: Use default engine for sseu tests
  i915/perf: Ensure rcs0 is present for gen12-mi-rpc
  i915/perf: Use ARRAY_SIZE for buffer-fill test
  i915/perf: Add class:instance support to OA tests
  i915/perf: Enable tests to run on specific engines
  i915/perf: Treat ticks as 64 bit
  i915/perf: Treat timestamp as 64 bit value
  i915/perf: Add OAM format type
  i915/perf: Use a helper for OA format
  i915/perf: Add support for oa perf groups
  i915/perf: Test concurrent access to OA in different groups
  i915/perf: Add OAM support

OAM metrics support
-------------------
  lib/perf: Make chipsets aware of oa formats
  i915/perf: Choose OAM format for media metrics
  lib/perf" Set missing metric unit for some counters
  lib/perf: Add MTL to supprted HW in oa guid registry
  lib/perf: Add support for OAM format in codegen
  lib/perf: Update MTL GT2 metrics for OAM
  lib/perf: Update MTL GT3 metrics for OAM
  i915/perf: Add support for engine specific metrics
  i915/perf: Run non-zero-reason on media engines as well
  i915/perf: Make sanity check failures descriptive

GPUvis support
--------------
  lib/perf: Enable multi-tile support for perf library
  lib/perf: Update MTL OA timestamp and EU thread config
  lib/perf: Add support for MPEC format
  lib/perf: Adjust the GPU timestamp for new OA formats
  tools/perf: Choose the right card
  lib/perf: Apply shift to raw timestamp as well

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

Umesh Nerlige Ramappa (30):
  i915/perf: Add support for 64-bit OA formats
  i915/perf: Define a default engine for OA
  i915/perf: Use default engine for sseu tests
  i915/perf: Ensure rcs0 is present for gen12-mi-rpc
  i915/perf: Use ARRAY_SIZE for buffer-fill test
  i915/perf: Add class:instance support to OA tests
  i915/perf: Enable tests to run on specific engines
  i915/perf: Treat ticks as 64 bit
  i915/perf: Treat timestamp as 64 bit value
  i915/perf: Add OAM format type
  i915/perf: Use a helper for OA format
  i915/perf: Add support for oa perf groups
  i915/perf: Test concurrent access to OA in different groups
  i915/perf: Add OAM support
  lib/perf: Make chipsets aware of oa formats
  i915/perf: Choose OAM format for media metrics
  lib/perf" Set missing metric unit for some counters
  lib/perf: Add MTL to supprted HW in oa guid registry
  lib/perf: Add support for OAM format in codegen
  lib/perf: Update MTL GT2 metrics for OAM
  lib/perf: Update MTL GT3 metrics for OAM
  i915/perf: Add support for engine specific metrics
  i915/perf: Run non-zero-reason on media engines as well
  i915/perf: Make sanity check failures descriptive
  lib/perf: Enable multi-tile support for perf library
  lib/perf: Update MTL OA timestamp and EU thread config
  lib/perf: Add support for MPEC format
  lib/perf: Adjust the GPU timestamp for new OA formats
  tools/perf: Choose the right card
  lib/perf: Apply shift to raw timestamp as well

 include/drm-uapi/i915_drm.h                   |   24 +
 lib/i915/perf-configs/codegen.py              |    4 +
 lib/i915/perf-configs/guids.xml               |   36 +-
 lib/i915/perf-configs/mdapi-xml-convert.py    |  220 ++-
 lib/i915/perf-configs/oa-mtlgt2.xml           | 1014 +++++++++++--
 lib/i915/perf-configs/oa-mtlgt3.xml           | 1328 +++++++++++++---
 lib/i915/perf-configs/oa_guid_registry.py     |    3 +-
 .../perf-configs/perf-metricset-codegen.py    |   36 +-
 lib/i915/perf.c                               |   66 +-
 lib/i915/perf.h                               |    2 +-
 lib/i915/perf_data_reader.c                   |   20 +-
 lib/intel_chipset.h                           |    3 +
 lib/intel_device_info.c                       |    1 +
 tests/core_hotunplug.c                        |    2 +-
 tests/i915/perf.c                             | 1337 +++++++++++++----
 tools/i915-perf/i915_perf_configs.c           |    2 +-
 tools/i915-perf/i915_perf_recorder.c          |   90 +-
 17 files changed, 3476 insertions(+), 712 deletions(-)

-- 
2.36.1

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 01/30] i915/perf: Add support for 64-bit OA formats
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 02/30] i915/perf: Define a default engine for OA Umesh Nerlige Ramappa
                   ` (32 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Newer gen12 platforms introduced 64 bit OA formats that are used by MTL.
Add support to parse reports for 64 bit counters.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 tests/i915/perf.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 57 insertions(+), 1 deletion(-)

diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index dd1f1ac3..c74434fe 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -107,6 +107,8 @@ struct oa_format {
 	int a40_high_off; /* bytes */
 	int a40_low_off;
 	int n_a40;
+	int a64_off;
+	int n_a64;
 	int a_off;
 	int n_a;
 	int first_a;
@@ -720,6 +722,15 @@ gen8_read_40bit_a_counter(const uint32_t *report,
 	return a40_low[a_id] | high;
 }
 
+static uint64_t
+xehpsdv_read_64bit_a_counter(const uint32_t *report, enum drm_i915_oa_format fmt, int a_id)
+{
+	struct oa_format format = get_oa_format(fmt);
+	uint64_t *a64 = (uint64_t *)(((uint8_t *)report) + format.a64_off);
+
+	return a64[a_id];
+}
+
 static uint64_t
 gen8_40bit_a_delta(uint64_t value0, uint64_t value1)
 {
@@ -754,6 +765,19 @@ accumulate_uint40(int a_index,
 	*delta += gen8_40bit_a_delta(value0, value1);
 }
 
+static void
+accumulate_uint64(int a_index,
+		  const uint32_t *report0,
+		  const uint32_t *report1,
+		  enum drm_i915_oa_format format,
+		  uint64_t *delta)
+{
+	uint64_t value0 = xehpsdv_read_64bit_a_counter(report0, format, a_index),
+		 value1 = xehpsdv_read_64bit_a_counter(report1, format, a_index);
+
+	*delta += (value1 - value0);
+}
+
 static void
 accumulate_reports(struct accumulator *accumulator,
 		   uint32_t *start,
@@ -779,6 +803,11 @@ accumulate_reports(struct accumulator *accumulator,
 				  deltas + idx++);
 	}
 
+	for (int i = 0; i < format.n_a64; i++) {
+		accumulate_uint64(i, start, end, accumulator->format,
+				  deltas + idx++);
+	}
+
 	for (int i = 0; i < format.n_a; i++) {
 		accumulate_uint32(format.a_off + 4 * i,
 				  start, end, deltas + idx++);
@@ -809,6 +838,9 @@ accumulator_print(struct accumulator *accumulator, const char *title)
 
 		for (int i = 0; i < format.n_a40; i++)
 			igt_debug("\tA%u = %"PRIu64"\n", i, deltas[idx++]);
+
+		for (int i = 0; i < format.n_a64; i++)
+			igt_debug("\tA64_%u = %"PRIu64"\n", i, deltas[idx++]);
 	} else {
 		igt_debug("\ttime delta = %"PRIu64"\n", deltas[idx++]);
 	}
@@ -865,7 +897,19 @@ gen8_sanity_check_test_oa_reports(const uint32_t *oa_report0,
 		if (undefined_a_counters[j])
 			continue;
 
-		igt_debug("A%d: delta = %"PRIu64"\n", j, delta);
+		igt_debug("A40_%d: delta = %"PRIu64"\n", j, delta);
+		igt_assert(delta <= max_delta);
+	}
+
+	for (int j = 0; j < format.n_a64; j++) {
+		uint64_t delta = 0;
+
+		accumulate_uint64(j, oa_report0, oa_report1, fmt, &delta);
+
+		if (undefined_a_counters[j])
+			continue;
+
+		igt_debug("A64_%d: delta = %"PRIu64"\n", format.first_a + j, delta);
 		igt_assert(delta <= max_delta);
 	}
 
@@ -1430,6 +1474,18 @@ print_reports(uint32_t *oa_report0, uint32_t *oa_report1, int fmt)
 			  j, value0, value1, delta);
 	}
 
+	for (int j = 0; j < format.n_a64; j++) {
+		uint64_t value0 = xehpsdv_read_64bit_a_counter(oa_report0, fmt, j);
+		uint64_t value1 = xehpsdv_read_64bit_a_counter(oa_report1, fmt, j);
+		uint64_t delta = value1 - value0;
+
+		if (undefined_a_counters[j])
+			continue;
+
+		igt_debug("A_64%d: 1st = %"PRIu64", 2nd = %"PRIu64", delta = %"PRIu64"\n",
+			  format.first_a + j, value0, value1, delta);
+	}
+
 	for (int j = 0; j < format.n_a; j++) {
 		uint32_t *a0 = (uint32_t *)(((uint8_t *)oa_report0) +
 					    format.a_off);
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 02/30] i915/perf: Define a default engine for OA
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 01/30] i915/perf: Add support for 64-bit OA formats Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 03/30] i915/perf: Use default engine for sseu tests Umesh Nerlige Ramappa
                   ` (31 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Use a helper to set the default engine for use with OA.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 tests/i915/perf.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index c74434fe..15ffb50e 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -228,6 +228,7 @@ static int sysfs = -1;
 static int pm_fd = -1;
 static int stream_fd = -1;
 static uint32_t devid;
+static struct intel_execution_engine2 default_e2;
 
 static uint64_t gt_max_freq_mhz = 0;
 static struct intel_perf *intel_perf = NULL;
@@ -5097,8 +5098,19 @@ static bool has_class_instance(int i915, uint16_t class, uint16_t instance)
 	return false;
 }
 
+static void set_default_engine(const intel_ctx_t *ctx)
+{
+	const struct intel_execution_engine2 *e;
+
+	for_each_ctx_engine(drm_fd, ctx, e)
+		if (e->class == I915_ENGINE_CLASS_RENDER && e->instance == 0)
+			default_e2 = *e;
+}
+
 igt_main
 {
+	const intel_ctx_t *ctx;
+
 	igt_fixture {
 		struct stat sb;
 
@@ -5136,6 +5148,8 @@ igt_main
 
 		igt_require(init_sys_info());
 
+		ctx = intel_ctx_create_all_physical(drm_fd);
+		set_default_engine(ctx);
 		write_u64_file("/proc/sys/dev/i915/perf_stream_paranoid", 1);
 		write_u64_file("/proc/sys/dev/i915/oa_max_sample_rate", 100000);
 
@@ -5323,6 +5337,7 @@ igt_main
 		if (intel_perf)
 			intel_perf_free(intel_perf);
 
+		intel_ctx_destroy(drm_fd, ctx);
 		close(drm_fd);
 	}
 }
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 03/30] i915/perf: Use default engine for sseu tests
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 01/30] i915/perf: Add support for 64-bit OA formats Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 02/30] i915/perf: Define a default engine for OA Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 04/30] i915/perf: Ensure rcs0 is present for gen12-mi-rpc Umesh Nerlige Ramappa
                   ` (30 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Explicitly pass the default engine for the sseu tests.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 tests/i915/perf.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index 15ffb50e..015693e7 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -4482,6 +4482,9 @@ test_global_sseu_config_invalid(void)
 	};
 
 	memset(&default_sseu, 0, sizeof(default_sseu));
+	default_sseu.flags = I915_CONTEXT_SSEU_FLAG_ENGINE_INDEX;
+	default_sseu.engine.engine_class = default_e2.class;
+	default_sseu.engine.engine_instance = default_e2.flags;
 	igt_require(__gem_context_get_param(drm_fd, &ctx_gp) == 0);
 
 	igt_debug("Default context sseu:\n");
@@ -4557,6 +4560,9 @@ test_global_sseu_config(void)
 	};
 
 	memset(&default_sseu, 0, sizeof(default_sseu));
+	default_sseu.flags = I915_CONTEXT_SSEU_FLAG_ENGINE_INDEX;
+	default_sseu.engine.engine_class = default_e2.class;
+	default_sseu.engine.engine_instance = default_e2.flags;
 	igt_require(__gem_context_get_param(drm_fd, &ctx_gp) == 0);
 
 	igt_debug("Default context sseu:\n");
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 04/30] i915/perf: Ensure rcs0 is present for gen12-mi-rpc
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (2 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 03/30] i915/perf: Use default engine for sseu tests Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 05/30] i915/perf: Use ARRAY_SIZE for buffer-fill test Umesh Nerlige Ramappa
                   ` (29 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Make sure rcs0 is present for gen12-mi-rpc.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 tests/i915/perf.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index 015693e7..02414e06 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -5287,8 +5287,12 @@ igt_main
 		igt_fixture igt_require(intel_gen(devid) >= 12);
 
 		igt_describe("Test MI REPORT PERF COUNT for Gen 12");
-		igt_subtest("gen12-mi-rpc")
+		igt_subtest("gen12-mi-rpc") {
+			igt_require_f(has_class_instance(drm_fd,
+							 I915_ENGINE_CLASS_RENDER,
+							 0), "no render engine\n");
 			gen12_test_mi_rpc();
+		}
 
 		igt_describe("Test OA TLB invalidate");
 		igt_subtest("gen12-oa-tlb-invalidate")
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 05/30] i915/perf: Use ARRAY_SIZE for buffer-fill test
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (3 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 04/30] i915/perf: Ensure rcs0 is present for gen12-mi-rpc Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 06/30] i915/perf: Add class:instance support to OA tests Umesh Nerlige Ramappa
                   ` (28 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

A prior patch changed the way size of properties is calculated. It
missed one test. Replace the sizeof with ARRAY_SIZE for buffer-fill
test.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 tests/i915/perf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index 02414e06..77bda442 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -2573,7 +2573,7 @@ test_buffer_fill(void)
 	};
 	struct drm_i915_perf_open_param param = {
 		.flags = I915_PERF_FLAG_FD_CLOEXEC,
-		.num_properties = sizeof(properties) / 16,
+		.num_properties = ARRAY_SIZE(properties) / 2,
 		.properties_ptr = to_user_pointer(properties),
 	};
 	struct drm_i915_perf_record_header *header;
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 06/30] i915/perf: Add class:instance support to OA tests
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (4 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 05/30] i915/perf: Use ARRAY_SIZE for buffer-fill test Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 07/30] i915/perf: Enable tests to run on specific engines Umesh Nerlige Ramappa
                   ` (27 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Add test to verify class:instance interface to perf OA.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 include/drm-uapi/i915_drm.h | 20 +++++++++++++++
 tests/i915/perf.c           | 49 +++++++++++++++++++++++++++++++++++++
 2 files changed, 69 insertions(+)

diff --git a/include/drm-uapi/i915_drm.h b/include/drm-uapi/i915_drm.h
index b71acfba..5fab3066 100644
--- a/include/drm-uapi/i915_drm.h
+++ b/include/drm-uapi/i915_drm.h
@@ -2627,6 +2627,26 @@ enum drm_i915_perf_property_id {
 	 */
 	DRM_I915_PERF_PROP_POLL_OA_PERIOD,
 
+	/**
+	 * In platforms with multiple OA buffers, the engine class instance must
+	 * be passed to open a stream to a OA unit corresponding to the engine.
+	 * Multiple engines may be mapped to the same OA unit.
+	 *
+	 * In addition to the class:instance, if a gem context is also passed, then
+	 * 1) the report headers of OA reports from other engines are squashed.
+	 * 2) OAR is enabled for the class:instance
+	 *
+	 * This property is available in perf revision 6.
+	 */
+	DRM_I915_PERF_PROP_OA_ENGINE_CLASS,
+
+	/**
+	 * This parameter specifies the engine instance.
+	 *
+	 * This property is available in perf revision 6.
+	 */
+	DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE,
+
 	DRM_I915_PERF_PROP_MAX /* non-ABI */
 };
 
diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index 77bda442..13cfe895 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -1188,6 +1188,47 @@ test_invalid_open_flags(void)
 	do_ioctl_err(drm_fd, DRM_IOCTL_I915_PERF_OPEN, &param, EINVAL);
 }
 
+static void
+test_invalid_class_instance(void)
+{
+	uint64_t properties[] = {
+		DRM_I915_PERF_PROP_SAMPLE_OA, true,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
+		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
+		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, 0,
+		DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, 0,
+	};
+	struct drm_i915_perf_open_param param = {
+		.flags = I915_PERF_FLAG_FD_CLOEXEC,
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+
+#define OA_E_CLASS 9
+#define OA_E_INSTANCE 11
+
+	properties[OA_E_CLASS] = I915_ENGINE_CLASS_COPY;
+	do_ioctl_err(drm_fd, DRM_IOCTL_I915_PERF_OPEN, &param, EINVAL);
+
+	properties[OA_E_CLASS] = 10;
+	do_ioctl_err(drm_fd, DRM_IOCTL_I915_PERF_OPEN, &param, EINVAL);
+
+	properties[OA_E_CLASS] = I915_ENGINE_CLASS_RENDER;
+
+	properties[OA_E_INSTANCE] = 100;
+	do_ioctl_err(drm_fd, DRM_IOCTL_I915_PERF_OPEN, &param, EINVAL);
+
+	properties[OA_E_INSTANCE] = 248;
+	do_ioctl_err(drm_fd, DRM_IOCTL_I915_PERF_OPEN, &param, EINVAL);
+
+	properties[OA_E_CLASS] = default_e2.class;
+	properties[OA_E_INSTANCE] = default_e2.instance;
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+	__perf_close(stream_fd);
+}
+
 static void
 test_invalid_oa_metric_set_id(void)
 {
@@ -5305,6 +5346,14 @@ igt_main
 		}
 	}
 
+	igt_subtest_group {
+		igt_fixture igt_require(i915_perf_revision(drm_fd) >= 6);
+
+		igt_describe("Verify invalid class instance");
+		igt_subtest("gen12-invalid-class-instance")
+			test_invalid_class_instance();
+	}
+
 	igt_subtest("rc6-disable")
 		test_rc6_disable();
 
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 07/30] i915/perf: Enable tests to run on specific engines
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (5 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 06/30] i915/perf: Add class:instance support to OA tests Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 08/30] i915/perf: Treat ticks as 64 bit Umesh Nerlige Ramappa
                   ` (26 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

New perf interface enabled passing engine class instance to the perf
interface. Enable some tests to utlize this interface to run the test on
supported engines.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 tests/i915/perf.c | 388 +++++++++++++++++++++++++++++++---------------
 1 file changed, 264 insertions(+), 124 deletions(-)

diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index 13cfe895..bd3cdb6a 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -87,6 +87,13 @@ IGT_TEST_DESCRIPTION("Test the i915 perf metrics streaming interface");
 
 #define MAX_OA_BUF_SIZE (16 * 1024 * 1024)
 
+#define ADD_PROPS(_head, _tail, _key, _value) \
+	do { \
+		igt_assert((_tail - _head) < (DRM_I915_PERF_PROP_MAX * 2)); \
+		*_tail++ = DRM_I915_PERF_PROP_##_key; \
+		*_tail++ = _value; \
+	} while (0)
+
 struct accumulator {
 #define MAX_RAW_OA_COUNTERS 62
 	enum drm_i915_oa_format format;
@@ -327,6 +334,50 @@ __perf_open(int fd, struct drm_i915_perf_open_param *param, bool prevent_pm)
 	return ret;
 }
 
+static int i915_perf_revision(int fd)
+{
+	drm_i915_getparam_t gp;
+	int value = 1, ret;
+
+	gp.param = I915_PARAM_PERF_REVISION;
+	gp.value = &value;
+	ret = igt_ioctl(drm_fd, DRM_IOCTL_I915_GETPARAM, &gp);
+	if (ret == -1) {
+		/* If the param is missing, consider version 1. */
+		igt_assert_eq(errno, EINVAL);
+		return 1;
+	}
+
+	return value;
+}
+
+/*
+ * perf_supports_engine is used in the for loop that iterates over engines and
+ * determines if perf test can be run on a particular engine. For perf revisions
+ * below 10, we only need to run the test once, so we return true only for rcs0.
+ * Note that the test itself ignores the class instance parameters if they are
+ * not supported by the perf interface. This enables us to use a single for-loop
+ * construct to run the same test on all platforms and all perf revisions.
+ */
+static bool
+perf_supports_engine(const struct intel_execution_engine2 *e)
+{
+	return e->class == I915_ENGINE_CLASS_RENDER &&
+	       e->instance == 0;
+}
+
+static bool
+has_param_class_instance(void)
+{
+	return i915_perf_revision(drm_fd) >= 6;
+}
+
+static bool
+has_param_poll_period(void)
+{
+	return i915_perf_revision(drm_fd) >= 5;
+}
+
 static int
 lookup_format(int i915_perf_fmt_id)
 {
@@ -1436,7 +1487,8 @@ open_and_read_2_oa_reports(int format_id,
 			   int exponent,
 			   uint32_t *oa_report0,
 			   uint32_t *oa_report1,
-			   bool timer_only)
+			   bool timer_only,
+			   const struct intel_execution_engine2 *e)
 {
 	uint64_t properties[] = {
 		/* Include OA reports in samples */
@@ -1446,11 +1498,15 @@ open_and_read_2_oa_reports(int format_id,
 		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
 		DRM_I915_PERF_PROP_OA_FORMAT, format_id,
 		DRM_I915_PERF_PROP_OA_EXPONENT, exponent,
+		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
+		DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
 
 	};
 	struct drm_i915_perf_open_param param = {
 		.flags = I915_PERF_FLAG_FD_CLOEXEC,
-		.num_properties = ARRAY_SIZE(properties) / 2,
+		.num_properties = has_param_class_instance() ?
+				  ARRAY_SIZE(properties) / 2 :
+				  (ARRAY_SIZE(properties) / 2) - 2,
 		.properties_ptr = to_user_pointer(properties),
 	};
 
@@ -1633,7 +1689,7 @@ print_report(uint32_t *report, int fmt)
 #endif
 
 static void
-test_oa_formats(void)
+test_oa_formats(const struct intel_execution_engine2 *e)
 {
 	for (int i = 0; i < I915_OA_FORMAT_MAX; i++) {
 		struct oa_format format = get_oa_format(i);
@@ -1652,7 +1708,8 @@ test_oa_formats(void)
 					   oa_exp_1_millisec,
 					   oa_report0,
 					   oa_report1,
-					   false); /* timer reports only */
+					   false, /* timer reports only */
+					   e);
 
 		print_reports(oa_report0, oa_report1, i);
 		sanity_check_reports(oa_report0, oa_report1, i);
@@ -1799,7 +1856,7 @@ static bool expected_report_timing_delta(uint32_t delta, uint32_t expected_delta
 }
 
 static void
-test_oa_exponents(void)
+test_oa_exponents(const struct intel_execution_engine2 *e)
 {
 	load_helper_init();
 	load_helper_run(HIGH);
@@ -1817,10 +1874,14 @@ test_oa_exponents(void)
 			DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
 			DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
 			DRM_I915_PERF_PROP_OA_EXPONENT, exponent,
+			DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
+			DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
 		};
 		struct drm_i915_perf_open_param param = {
 			.flags = I915_PERF_FLAG_FD_CLOEXEC,
-			.num_properties = ARRAY_SIZE(properties) / 2,
+			.num_properties = has_param_class_instance() ?
+					  ARRAY_SIZE(properties) / 2 :
+					  (ARRAY_SIZE(properties) / 2) - 2,
 			.properties_ptr = to_user_pointer(properties),
 		};
 		uint64_t expected_timestamp_delta = 2ULL << exponent;
@@ -2099,30 +2160,16 @@ get_time(void)
  * kernelspace.
  */
 static void
-test_blocking(uint64_t requested_oa_period, bool set_kernel_hrtimer, uint64_t kernel_hrtimer)
+test_blocking(uint64_t requested_oa_period,
+	      bool set_kernel_hrtimer,
+	      uint64_t kernel_hrtimer,
+	      const struct intel_execution_engine2 *e)
 {
 	int oa_exponent = max_oa_exponent_for_period_lte(requested_oa_period);
 	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
-	uint64_t properties[] = {
-		/* Include OA reports in samples */
-		DRM_I915_PERF_PROP_SAMPLE_OA, true,
-
-		/* OA unit configuration */
-		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
-		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
-
-		/* Kernel configuration (optional) */
-		DRM_I915_PERF_PROP_POLL_OA_PERIOD, kernel_hrtimer,
-	};
-	struct drm_i915_perf_open_param param = {
-		.flags = I915_PERF_FLAG_FD_CLOEXEC |
-			I915_PERF_FLAG_DISABLED,
-		.num_properties = set_kernel_hrtimer ?
-				  ARRAY_SIZE(properties) / 2 :
-				  (ARRAY_SIZE(properties) / 2) - 1,
-		.properties_ptr = to_user_pointer(properties),
-	};
+	uint64_t props[DRM_I915_PERF_PROP_MAX * 2];
+	uint64_t *idx = props;
+	struct drm_i915_perf_open_param param;
 	uint8_t buf[1024 * 1024];
 	struct tms start_times;
 	struct tms end_times;
@@ -2147,6 +2194,24 @@ test_blocking(uint64_t requested_oa_period, bool set_kernel_hrtimer, uint64_t ke
 	int64_t start, end;
 	int n = 0;
 
+	ADD_PROPS(props, idx, SAMPLE_OA, true);
+	ADD_PROPS(props, idx, OA_METRICS_SET, test_set->perf_oa_metrics_set);
+	ADD_PROPS(props, idx, OA_FORMAT, test_set->perf_oa_format);
+	ADD_PROPS(props, idx, OA_EXPONENT, oa_exponent);
+
+	if (has_param_poll_period() && set_kernel_hrtimer)
+		ADD_PROPS(props, idx, POLL_OA_PERIOD, kernel_hrtimer);
+
+	if (has_param_class_instance()) {
+		ADD_PROPS(props, idx, OA_ENGINE_CLASS, e->class);
+		ADD_PROPS(props, idx, OA_ENGINE_INSTANCE, e->instance);
+	}
+
+	param.flags = I915_PERF_FLAG_FD_CLOEXEC |
+		      I915_PERF_FLAG_DISABLED;
+	param.num_properties = (idx - props) / 2;
+	param.properties_ptr = to_user_pointer(props);
+
 	stream_fd = __perf_open(drm_fd, &param, true /* prevent_pm */);
 
 	times(&start_times);
@@ -2258,31 +2323,16 @@ test_blocking(uint64_t requested_oa_period, bool set_kernel_hrtimer, uint64_t ke
 }
 
 static void
-test_polling(uint64_t requested_oa_period, bool set_kernel_hrtimer, uint64_t kernel_hrtimer)
+test_polling(uint64_t requested_oa_period,
+	     bool set_kernel_hrtimer,
+	     uint64_t kernel_hrtimer,
+	     const struct intel_execution_engine2 *e)
 {
 	int oa_exponent = max_oa_exponent_for_period_lte(requested_oa_period);
 	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
-	uint64_t properties[] = {
-		/* Include OA reports in samples */
-		DRM_I915_PERF_PROP_SAMPLE_OA, true,
-
-		/* OA unit configuration */
-		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
-		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
-
-		/* Kernel configuration (optional) */
-		DRM_I915_PERF_PROP_POLL_OA_PERIOD, kernel_hrtimer,
-	};
-	struct drm_i915_perf_open_param param = {
-		.flags = I915_PERF_FLAG_FD_CLOEXEC |
-			I915_PERF_FLAG_DISABLED |
-			I915_PERF_FLAG_FD_NONBLOCK,
-		.num_properties = set_kernel_hrtimer ?
-				  ARRAY_SIZE(properties) / 2 :
-				  (ARRAY_SIZE(properties) / 2) - 1,
-		.properties_ptr = to_user_pointer(properties),
-	};
+	uint64_t props[DRM_I915_PERF_PROP_MAX * 2];
+	uint64_t *idx = props;
+	struct drm_i915_perf_open_param param;
 	uint8_t buf[1024 * 1024];
 	struct tms start_times;
 	struct tms end_times;
@@ -2307,6 +2357,25 @@ test_polling(uint64_t requested_oa_period, bool set_kernel_hrtimer, uint64_t ker
 	int64_t start, end;
 	int n = 0;
 
+	ADD_PROPS(props, idx, SAMPLE_OA, true);
+	ADD_PROPS(props, idx, OA_METRICS_SET, test_set->perf_oa_metrics_set);
+	ADD_PROPS(props, idx, OA_FORMAT, test_set->perf_oa_format);
+	ADD_PROPS(props, idx, OA_EXPONENT, oa_exponent);
+
+	if (has_param_poll_period() && set_kernel_hrtimer)
+		ADD_PROPS(props, idx, POLL_OA_PERIOD, kernel_hrtimer);
+
+	if (has_param_class_instance()) {
+		ADD_PROPS(props, idx, OA_ENGINE_CLASS, e->class);
+		ADD_PROPS(props, idx, OA_ENGINE_INSTANCE, e->instance);
+	}
+
+	param.flags = I915_PERF_FLAG_FD_CLOEXEC |
+		      I915_PERF_FLAG_DISABLED |
+		      I915_PERF_FLAG_FD_NONBLOCK;
+	param.num_properties = (idx - props) / 2;
+	param.properties_ptr = to_user_pointer(props);
+
 	stream_fd = __perf_open(drm_fd, &param, true /* prevent_pm */);
 
 	times(&start_times);
@@ -2557,7 +2626,7 @@ num_valid_reports_captured(struct drm_i915_perf_open_param *param,
 }
 
 static void
-gen12_test_oa_tlb_invalidate(void)
+gen12_test_oa_tlb_invalidate(const struct intel_execution_engine2 *e)
 {
 	int oa_exponent = max_oa_exponent_for_period_lte(30000000);
 	uint64_t properties[] = {
@@ -2566,11 +2635,15 @@ gen12_test_oa_tlb_invalidate(void)
 		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
 		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
+		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
+		DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
 	};
 	struct drm_i915_perf_open_param param = {
 		.flags = I915_PERF_FLAG_FD_CLOEXEC |
 			I915_PERF_FLAG_DISABLED,
-		.num_properties = ARRAY_SIZE(properties) / 2,
+		.num_properties = has_param_class_instance() ?
+				  ARRAY_SIZE(properties) / 2 :
+				  (ARRAY_SIZE(properties) / 2) - 2,
 		.properties_ptr = to_user_pointer(properties),
 	};
 	int num_reports1, num_reports2, num_expected_reports;
@@ -2598,7 +2671,7 @@ gen12_test_oa_tlb_invalidate(void)
 
 
 static void
-test_buffer_fill(void)
+test_buffer_fill(const struct intel_execution_engine2 *e)
 {
 	/* ~5 micro second period */
 	int oa_exponent = max_oa_exponent_for_period_lte(5000);
@@ -2611,10 +2684,14 @@ test_buffer_fill(void)
 		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
 		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
+		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
+		DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
 	};
 	struct drm_i915_perf_open_param param = {
 		.flags = I915_PERF_FLAG_FD_CLOEXEC,
-		.num_properties = ARRAY_SIZE(properties) / 2,
+		.num_properties = has_param_class_instance() ?
+				  ARRAY_SIZE(properties) / 2 :
+				  (ARRAY_SIZE(properties) / 2) - 2,
 		.properties_ptr = to_user_pointer(properties),
 	};
 	struct drm_i915_perf_record_header *header;
@@ -2829,7 +2906,7 @@ test_non_zero_reason(void)
 }
 
 static void
-test_enable_disable(void)
+test_enable_disable(const struct intel_execution_engine2 *e)
 {
 	/* ~5 micro second period */
 	int oa_exponent = max_oa_exponent_for_period_lte(5000);
@@ -2842,11 +2919,15 @@ test_enable_disable(void)
 		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
 		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
+		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
+		DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
 	};
 	struct drm_i915_perf_open_param param = {
 		.flags = I915_PERF_FLAG_FD_CLOEXEC |
 			 I915_PERF_FLAG_DISABLED, /* Verify we start disabled */
-		.num_properties = ARRAY_SIZE(properties) / 2,
+		.num_properties = has_param_class_instance() ?
+				  ARRAY_SIZE(properties) / 2 :
+				  (ARRAY_SIZE(properties) / 2) - 2,
 		.properties_ptr = to_user_pointer(properties),
 	};
 	int buf_size = 65536 * (256 + sizeof(struct drm_i915_perf_record_header));
@@ -3167,7 +3248,7 @@ test_disabled_read_error(void)
 }
 
 static void
-gen12_test_mi_rpc(void)
+gen12_test_mi_rpc(const struct intel_execution_engine2 *e)
 {
 	uint64_t fmt = oar_unit_default_format();
 	uint64_t properties[] = {
@@ -3191,10 +3272,14 @@ gen12_test_mi_rpc(void)
 		 */
 		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
 		DRM_I915_PERF_PROP_OA_FORMAT, fmt,
+		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
+		DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
 	};
 	struct drm_i915_perf_open_param param = {
 		.flags = I915_PERF_FLAG_FD_CLOEXEC,
-		.num_properties = ARRAY_SIZE(properties) / 2,
+		.num_properties = has_param_class_instance() ?
+				  ARRAY_SIZE(properties) / 2 :
+				  (ARRAY_SIZE(properties) / 2) - 2,
 		.properties_ptr = to_user_pointer(properties),
 	};
 	struct buf_ops *bops;
@@ -4017,7 +4102,7 @@ again:
 	} while (WEXITSTATUS(child_ret) == EAGAIN);
 }
 
-static void gen12_single_ctx_helper(void)
+static void gen12_single_ctx_helper(const struct intel_execution_engine2 *e)
 {
 	uint64_t fmt = oar_unit_default_format();
 	uint64_t properties[] = {
@@ -4036,10 +4121,14 @@ static void gen12_single_ctx_helper(void)
 		 */
 		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
 		DRM_I915_PERF_PROP_OA_FORMAT, fmt,
+		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
+		DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
 	};
 	struct drm_i915_perf_open_param param = {
 		.flags = I915_PERF_FLAG_FD_CLOEXEC,
-		.num_properties = ARRAY_SIZE(properties) / 2,
+		.num_properties = has_param_class_instance() ?
+				  ARRAY_SIZE(properties) / 2 :
+				  (ARRAY_SIZE(properties) / 2) - 2,
 		.properties_ptr = to_user_pointer(properties),
 	};
 	struct buf_ops *bops;
@@ -4323,7 +4412,7 @@ static void gen12_single_ctx_helper(void)
 }
 
 static void
-gen12_test_single_ctx_render_target_writes_a_counter(void)
+gen12_test_single_ctx_render_target_writes_a_counter(const struct intel_execution_engine2 *e)
 {
 	int child_ret;
 	struct igt_helper_process child = {};
@@ -4337,7 +4426,7 @@ gen12_test_single_ctx_render_target_writes_a_counter(void)
 			drm_fd = gem_reopen_driver(drm_fd);
 
 			igt_drop_root();
-			gen12_single_ctx_helper();
+			gen12_single_ctx_helper(e);
 
 			close(drm_fd);
 		}
@@ -4401,7 +4490,7 @@ test_rc6_disable(void)
 }
 
 static void
-test_stress_open_close(void)
+test_stress_open_close(const struct intel_execution_engine2 *e)
 {
 	load_helper_init();
 	load_helper_run(HIGH);
@@ -4418,11 +4507,15 @@ test_stress_open_close(void)
 			DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
 			DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
 			DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
+			DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
+			DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
 		};
 		struct drm_i915_perf_open_param param = {
 			.flags = I915_PERF_FLAG_FD_CLOEXEC |
 			         I915_PERF_FLAG_DISABLED, /* XXX: open disabled */
-			.num_properties = ARRAY_SIZE(properties) / 2,
+			.num_properties = has_param_class_instance() ?
+					  ARRAY_SIZE(properties) / 2 :
+					  (ARRAY_SIZE(properties) / 2) - 2,
 			.properties_ptr = to_user_pointer(properties),
 		};
 
@@ -4473,7 +4566,8 @@ static void print_sseu_config(struct drm_i915_gem_context_param_sseu *sseu)
 }
 
 static struct drm_i915_gem_context_param_sseu
-make_valid_reduced_sseu_config(struct drm_i915_gem_context_param_sseu default_sseu)
+make_valid_reduced_sseu_config(struct drm_i915_gem_context_param_sseu default_sseu,
+			       uint16_t class, uint16_t instance)
 {
 	struct drm_i915_gem_context_param_sseu sseu = default_sseu;
 
@@ -4490,11 +4584,14 @@ make_valid_reduced_sseu_config(struct drm_i915_gem_context_param_sseu default_ss
 		sseu.subslice_mask = mask_minus_one(sseu.subslice_mask);
 	}
 
+	sseu.engine.engine_class = class;
+	sseu.engine.engine_instance = instance;
+
 	return sseu;
 }
 
 static void
-test_global_sseu_config_invalid(void)
+test_global_sseu_config_invalid(const struct intel_execution_engine2 *e)
 {
 	struct drm_i915_gem_context_param_sseu default_sseu;
 	struct drm_i915_gem_context_param_sseu sseu_param;
@@ -4514,18 +4611,27 @@ test_global_sseu_config_invalid(void)
 		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
 		DRM_I915_PERF_PROP_GLOBAL_SSEU, to_user_pointer(&sseu_param),
+		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
+		DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
 	};
 	struct drm_i915_perf_open_param param = {
 		.flags = I915_PERF_FLAG_FD_CLOEXEC |
 		I915_PERF_FLAG_DISABLED, /* XXX: open disabled */
-		.num_properties = ARRAY_SIZE(properties) / 2,
+		.num_properties = has_param_class_instance() ?
+				  ARRAY_SIZE(properties) / 2 :
+				  (ARRAY_SIZE(properties) / 2) - 2,
 		.properties_ptr = to_user_pointer(properties),
 	};
 
 	memset(&default_sseu, 0, sizeof(default_sseu));
 	default_sseu.flags = I915_CONTEXT_SSEU_FLAG_ENGINE_INDEX;
-	default_sseu.engine.engine_class = default_e2.class;
-	default_sseu.engine.engine_instance = default_e2.flags;
+	if (has_param_class_instance()) {
+		default_sseu.engine.engine_class = e->class;
+		default_sseu.engine.engine_instance = e->flags;
+	} else {
+		default_sseu.engine.engine_class = default_e2.class;
+		default_sseu.engine.engine_instance = default_e2.flags;
+	}
 	igt_require(__gem_context_get_param(drm_fd, &ctx_gp) == 0);
 
 	igt_debug("Default context sseu:\n");
@@ -4564,7 +4670,9 @@ test_global_sseu_config_invalid(void)
 		igt_fork(child, 1) {
 			igt_drop_root();
 
-			sseu_param = make_valid_reduced_sseu_config(default_sseu);
+			sseu_param = make_valid_reduced_sseu_config(default_sseu,
+								    e->class,
+								    e->instance);
 			do_ioctl_err(drm_fd, DRM_IOCTL_I915_PERF_OPEN, &param, EACCES);
 		}
 		igt_waitchildren();
@@ -4572,7 +4680,7 @@ test_global_sseu_config_invalid(void)
 }
 
 static void
-test_global_sseu_config(void)
+test_global_sseu_config(const struct intel_execution_engine2 *e)
 {
 	struct drm_i915_gem_context_param_sseu default_sseu;
 	struct drm_i915_gem_context_param_sseu sseu_param;
@@ -4592,18 +4700,27 @@ test_global_sseu_config(void)
 		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
 		DRM_I915_PERF_PROP_GLOBAL_SSEU, to_user_pointer(&sseu_param),
+		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
+		DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
 	};
 	struct drm_i915_perf_open_param param = {
 		.flags = I915_PERF_FLAG_FD_CLOEXEC |
 		I915_PERF_FLAG_DISABLED, /* XXX: open disabled */
-		.num_properties = ARRAY_SIZE(properties) / 2,
+		.num_properties = has_param_class_instance() ?
+				  ARRAY_SIZE(properties) / 2 :
+				  (ARRAY_SIZE(properties) / 2) - 2,
 		.properties_ptr = to_user_pointer(properties),
 	};
 
 	memset(&default_sseu, 0, sizeof(default_sseu));
 	default_sseu.flags = I915_CONTEXT_SSEU_FLAG_ENGINE_INDEX;
-	default_sseu.engine.engine_class = default_e2.class;
-	default_sseu.engine.engine_instance = default_e2.flags;
+	if (has_param_class_instance()) {
+		default_sseu.engine.engine_class = e->class;
+		default_sseu.engine.engine_instance = e->flags;
+	} else {
+		default_sseu.engine.engine_class = default_e2.class;
+		default_sseu.engine.engine_instance = default_e2.flags;
+	}
 	igt_require(__gem_context_get_param(drm_fd, &ctx_gp) == 0);
 
 	igt_debug("Default context sseu:\n");
@@ -4613,7 +4730,9 @@ test_global_sseu_config(void)
 
 	write_u64_file("/proc/sys/dev/i915/perf_stream_paranoid", 0);
 
-	sseu_param = make_valid_reduced_sseu_config(default_sseu);
+	sseu_param = make_valid_reduced_sseu_config(default_sseu,
+						    e->class,
+						    e->instance);
 	igt_debug("Selected context sseu:\n");
 	print_sseu_config(&sseu_param);
 
@@ -5115,22 +5234,15 @@ test_sysctl_defaults(void)
 	igt_assert_eq(max_freq, 100000);
 }
 
-static int i915_perf_revision(int fd)
-{
-	drm_i915_getparam_t gp;
-	int value = 1, ret;
+#define __for_each_perf_enabled_engine(fd__, e__) \
+	for_each_physical_engine(fd__, e__) \
+		if (perf_supports_engine(e__)) \
+			igt_dynamic_f("%s", e__->name)
 
-	gp.param = I915_PARAM_PERF_REVISION;
-	gp.value = &value;
-	ret = igt_ioctl(drm_fd, DRM_IOCTL_I915_GETPARAM, &gp);
-	if (ret == -1) {
-		/* If the param is missing, consider version 1. */
-		igt_assert_eq(errno, EINVAL);
-		return 1;
-	}
-
-	return value;
-}
+#define __for_each_render_engine(fd__, e__) \
+	for_each_physical_engine(fd__, e__) \
+		if (e__->class == I915_ENGINE_CLASS_RENDER) \
+			igt_dynamic_f("%s", e__->name)
 
 static bool has_class_instance(int i915, uint16_t class, uint16_t instance)
 {
@@ -5157,6 +5269,7 @@ static void set_default_engine(const intel_ctx_t *ctx)
 igt_main
 {
 	const intel_ctx_t *ctx;
+	const struct intel_execution_engine2 *e;
 
 	igt_fixture {
 		struct stat sb;
@@ -5221,23 +5334,26 @@ igt_main
 	igt_subtest("missing-sample-flags")
 		test_missing_sample_flags();
 
-	igt_subtest("oa-formats")
-		test_oa_formats();
+	igt_subtest_with_dynamic("oa-formats")
+		__for_each_perf_enabled_engine(drm_fd, e)
+			test_oa_formats(e);
 
 	igt_subtest("invalid-oa-exponent")
 		test_invalid_oa_exponent();
 	igt_subtest("low-oa-exponent-permissions")
 		test_low_oa_exponent_permissions();
-	igt_subtest("oa-exponents")
-		test_oa_exponents();
+	igt_subtest_with_dynamic("oa-exponents")
+		__for_each_perf_enabled_engine(drm_fd, e)
+			test_oa_exponents(e);
 
 	igt_subtest("per-context-mode-unprivileged") {
 		igt_require(IS_HASWELL(devid));
 		test_per_context_mode_unprivileged();
 	}
 
-	igt_subtest("buffer-fill")
-		test_buffer_fill();
+	igt_subtest_with_dynamic("buffer-fill")
+		__for_each_perf_enabled_engine(drm_fd, e)
+			test_buffer_fill(e);
 
 	igt_describe("Test that reason field in OA reports is never 0 on Gen8+");
 	igt_subtest("non-zero-reason") {
@@ -5251,45 +5367,64 @@ igt_main
 	igt_subtest("non-sampling-read-error")
 		test_non_sampling_read_error();
 
-	igt_subtest("enable-disable")
-		test_enable_disable();
+	igt_subtest_with_dynamic("enable-disable")
+		__for_each_perf_enabled_engine(drm_fd, e)
+			test_enable_disable(e);
 
 	igt_describe("Test blocking read with default hrtimer frequency");
-	igt_subtest("blocking") {
-		test_blocking(40 * 1000 * 1000 /* 40ms oa period */,
-			      false /* set_kernel_hrtimer */,
-			      5 * 1000 * 1000 /* default 5ms/200Hz hrtimer */);
+	igt_subtest_with_dynamic("blocking") {
+		__for_each_perf_enabled_engine(drm_fd, e)
+			test_blocking(40 * 1000 * 1000 /* 40ms oa period */,
+				      false /* set_kernel_hrtimer */,
+				      5 * 1000 * 1000 /* default 5ms/200Hz hrtimer */,
+				      e);
 	}
 
 	igt_describe("Test blocking read with different hrtimer frequencies");
 	igt_subtest("blocking-parameterized") {
+		const struct intel_execution_engine2 _e = {
+		      .class = default_e2.class,
+		      .instance = default_e2.instance,
+		};
+
 		igt_require(i915_perf_revision(drm_fd) >= 5);
 
 		test_blocking(10 * 1000 * 1000 /* 10ms oa period */,
 			      true /* set_kernel_hrtimer */,
-			      40 * 1000 * 1000 /* default 40ms hrtimer */);
+			      40 * 1000 * 1000 /* default 40ms hrtimer */,
+			      &_e);
 		test_blocking(500 * 1000 /* 500us oa period */,
 			      true /* set_kernel_hrtimer */,
-			      2 * 1000 * 1000 /* default 2ms hrtimer */);
+			      2 * 1000 * 1000 /* default 2ms hrtimer */,
+			      &_e);
 	}
 
 	igt_describe("Test polled read with default hrtimer frequency");
-	igt_subtest("polling") {
-		test_polling(40 * 1000 * 1000 /* 40ms oa period */,
-			     false /* set_kernel_hrtimer */,
-			     5 * 1000 * 1000 /* default 5ms/200Hz hrtimer */);
+	igt_subtest_with_dynamic("polling") {
+		__for_each_perf_enabled_engine(drm_fd, e)
+			test_polling(40 * 1000 * 1000 /* 40ms oa period */,
+				     false /* set_kernel_hrtimer */,
+				     5 * 1000 * 1000 /* default 5ms/200Hz hrtimer */,
+				     e);
 	}
 
 	igt_describe("Test polled read with different hrtimer frequencies");
 	igt_subtest("polling-parameterized") {
+		const struct intel_execution_engine2 _e = {
+		      .class = default_e2.class,
+		      .instance = default_e2.instance,
+		};
+
 		igt_require(i915_perf_revision(drm_fd) >= 5);
 
 		test_polling(10 * 1000 * 1000 /* 10ms oa period */,
 			     true /* set_kernel_hrtimer */,
-			     40 * 1000 * 1000 /* default 40ms hrtimer */);
+			     40 * 1000 * 1000 /* default 40ms hrtimer */,
+			     &_e);
 		test_polling(500 * 1000 /* 500us oa period */,
 			     true /* set_kernel_hrtimer */,
-			     2 * 1000 * 1000 /* default 2ms hrtimer */);
+			     2 * 1000 * 1000 /* default 2ms hrtimer */,
+			     &_e);
 	}
 
 	igt_describe("Test polled read with buffer size smaller than available data");
@@ -5328,21 +5463,23 @@ igt_main
 		igt_fixture igt_require(intel_gen(devid) >= 12);
 
 		igt_describe("Test MI REPORT PERF COUNT for Gen 12");
-		igt_subtest("gen12-mi-rpc") {
-			igt_require_f(has_class_instance(drm_fd,
-							 I915_ENGINE_CLASS_RENDER,
-							 0), "no render engine\n");
-			gen12_test_mi_rpc();
+		igt_subtest_with_dynamic("gen12-mi-rpc") {
+			igt_require(has_class_instance(drm_fd, I915_ENGINE_CLASS_RENDER, 0));
+			__for_each_render_engine(drm_fd, e)
+				gen12_test_mi_rpc(e);
 		}
 
 		igt_describe("Test OA TLB invalidate");
-		igt_subtest("gen12-oa-tlb-invalidate")
-			gen12_test_oa_tlb_invalidate();
+		igt_subtest_with_dynamic("gen12-oa-tlb-invalidate")
+			__for_each_perf_enabled_engine(drm_fd, e)
+				gen12_test_oa_tlb_invalidate(e);
 
 		igt_describe("Measure performance for a specific context using OAR in Gen 12");
-		igt_subtest("gen12-unprivileged-single-ctx-counters") {
+		igt_subtest_with_dynamic("gen12-unprivileged-single-ctx-counters") {
+			igt_require(has_class_instance(drm_fd, I915_ENGINE_CLASS_RENDER, 0));
 			igt_require_f(render_copy, "no render-copy function\n");
-			gen12_test_single_ctx_render_target_writes_a_counter();
+			__for_each_render_engine(drm_fd, e)
+				gen12_test_single_ctx_render_target_writes_a_counter(e);
 		}
 	}
 
@@ -5358,8 +5495,9 @@ igt_main
 		test_rc6_disable();
 
 	igt_describe("Stress tests opening & closing the i915-perf stream in a busy loop");
-	igt_subtest("stress-open-close")
-		test_stress_open_close();
+	igt_subtest_with_dynamic("stress-open-close")
+		__for_each_perf_enabled_engine(drm_fd, e)
+			test_stress_open_close(e);
 
 	igt_subtest_group {
 		igt_fixture {
@@ -5368,12 +5506,14 @@ igt_main
 		}
 
 		igt_describe("Verify invalid SSEU opening parameters");
-		igt_subtest("global-sseu-config-invalid")
-			test_global_sseu_config_invalid();
+		igt_subtest_with_dynamic("global-sseu-config-invalid")
+			__for_each_perf_enabled_engine(drm_fd, e)
+				test_global_sseu_config_invalid(e);
 
 		igt_describe("Verify specifying SSEU opening parameters");
-		igt_subtest("global-sseu-config")
-			test_global_sseu_config();
+		igt_subtest_with_dynamic("global-sseu-config")
+			__for_each_perf_enabled_engine(drm_fd, e)
+				test_global_sseu_config(e);
 	}
 
 	igt_subtest("invalid-create-userspace-config")
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 08/30] i915/perf: Treat ticks as 64 bit
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (6 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 07/30] i915/perf: Enable tests to run on specific engines Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 09/30] i915/perf: Treat timestamp as 64 bit value Umesh Nerlige Ramappa
                   ` (25 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

To support 64 bit OA report headers, treat all ticks as 64 bits.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 tests/i915/perf.c | 79 ++++++++++++++++++++++++++++++++---------------
 1 file changed, 54 insertions(+), 25 deletions(-)

diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index bd3cdb6a..4c7b4e49 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -125,6 +125,7 @@ struct oa_format {
 	int c_off;
 	int n_c;
 	int oa_type;
+	bool report_hdr_64bit;
 };
 
 static struct oa_format hsw_oa_formats[I915_OA_FORMAT_MAX] = {
@@ -244,7 +245,7 @@ static bool *undefined_a_counters;
 static uint64_t oa_exp_1_millisec;
 
 static igt_render_copyfunc_t render_copy = NULL;
-static uint32_t (*read_report_ticks)(const uint32_t *report,
+static uint64_t (*read_report_ticks)(const uint32_t *report,
 				     enum drm_i915_oa_format format);
 static void (*sanity_check_reports)(const uint32_t *oa_report0,
 				    const uint32_t *oa_report1,
@@ -438,7 +439,7 @@ sysfs_read(enum i915_attr_id id)
  * C2 corresponds to a clock counter for the Haswell render basic metric set
  * but it's not included in all of the formats.
  */
-static uint32_t
+static uint64_t
 hsw_read_report_ticks(const uint32_t *report, enum drm_i915_oa_format format)
 {
 	uint32_t *c = (uint32_t *)(((uint8_t *)report) + get_oa_format(format).c_off);
@@ -448,10 +449,41 @@ hsw_read_report_ticks(const uint32_t *report, enum drm_i915_oa_format format)
 	return c[2];
 }
 
-static uint32_t
+static uint64_t
 gen8_read_report_ticks(const uint32_t *report, enum drm_i915_oa_format format)
 {
-	return report[3];
+
+	struct oa_format fmt = get_oa_format(format);
+
+	return fmt.report_hdr_64bit ? *(uint64_t *)&report[6] : report[3];
+}
+
+/*
+ * t0 is a value sampled before t1. width is number of bits used to represent
+ * t0/t1. Normally t1 is greater than t0. In cases where t1 < t0 use this
+ * helper. Since the size of t1/t0 is already 64 bits, no special handling is
+ * needed for width = 64.
+ */
+static uint64_t
+elapsed_delta(uint64_t t1, uint64_t t0, uint32_t width)
+{
+	uint32_t max_bits = sizeof(t1) * 8;
+
+	igt_assert(width <= max_bits);
+
+	if (t1 < t0 && width != max_bits)
+		return ((1ULL << width) - t0) + t1;
+
+	return t1 - t0;
+}
+
+static uint64_t
+oa_tick_delta(const uint32_t *report1,
+	      const uint32_t *report0,
+	      enum drm_i915_oa_format format)
+{
+	return elapsed_delta(read_report_ticks(report1, format),
+			     read_report_ticks(report0, format), 32);
 }
 
 static void
@@ -681,8 +713,8 @@ hsw_sanity_check_render_basic_reports(const uint32_t *oa_report0,
 				      enum drm_i915_oa_format fmt)
 {
 	uint32_t time_delta = timebase_scale(oa_report1[1] - oa_report0[1]);
-	uint32_t clock_delta;
-	uint32_t max_delta;
+	uint64_t clock_delta;
+	uint64_t max_delta;
 	struct oa_format format = get_oa_format(fmt);
 
 	igt_assert_neq(time_delta, 0);
@@ -697,21 +729,19 @@ hsw_sanity_check_render_basic_reports(const uint32_t *oa_report0,
 		clock_delta = (gt_max_freq_mhz *
 			       (uint64_t)time_delta) / 1000;
 	} else {
-		uint32_t ticks0 = read_report_ticks(oa_report0, fmt);
-		uint32_t ticks1 = read_report_ticks(oa_report1, fmt);
 		uint64_t freq;
 
-		clock_delta = ticks1 - ticks0;
+		clock_delta = oa_tick_delta(oa_report1, oa_report0, fmt);
 
-		igt_assert_neq(clock_delta, 0);
+		igt_assert_neq_u64(clock_delta, 0);
 
-		freq = ((uint64_t)clock_delta * 1000) / time_delta;
+		freq = (clock_delta * 1000) / time_delta;
 		igt_debug("freq = %"PRIu64"\n", freq);
 
 		igt_assert(freq <= gt_max_freq_mhz);
 	}
 
-	igt_debug("clock delta = %"PRIu32"\n", clock_delta);
+	igt_debug("clock delta = %"PRIu64"\n", clock_delta);
 
 	/* The maximum rate for any HSW counter =
 	 *   clock_delta * N EUs
@@ -844,7 +874,8 @@ accumulate_reports(struct accumulator *accumulator,
 		accumulate_uint32(4, start, end, deltas + idx++);
 
 		/* clock cycles */
-		accumulate_uint32(12, start, end, deltas + idx++);
+		deltas[idx] += oa_tick_delta(end, start, accumulator->format);
+		idx++;
 	} else {
 		/* timestamp */
 		accumulate_uint32(4, start, end, deltas + idx++);
@@ -917,10 +948,8 @@ gen8_sanity_check_test_oa_reports(const uint32_t *oa_report0,
 {
 	struct oa_format format = get_oa_format(fmt);
 	uint32_t time_delta = timebase_scale(oa_report1[1] - oa_report0[1]);
-	uint32_t ticks0 = read_report_ticks(oa_report0, fmt);
-	uint32_t ticks1 = read_report_ticks(oa_report1, fmt);
-	uint32_t clock_delta = ticks1 - ticks0;
-	uint32_t max_delta;
+	uint64_t clock_delta = oa_tick_delta(oa_report1, oa_report0, fmt);
+	uint64_t max_delta;
 	uint64_t freq;
 	uint32_t *rpt0_b = (uint32_t *)(((uint8_t *)oa_report0) +
 					format.b_off);
@@ -933,10 +962,10 @@ gen8_sanity_check_test_oa_reports(const uint32_t *oa_report0,
 		  gen8_read_report_reason(oa_report0),
 		  gen8_read_report_reason(oa_report1));
 
-	freq = time_delta ? ((uint64_t)clock_delta * 1000) / time_delta : 0;
+	freq = time_delta ? (clock_delta * 1000) / time_delta : 0;
 	igt_debug("freq = %"PRIu64"\n", freq);
 
-	igt_debug("clock delta = %"PRIu32"\n", clock_delta);
+	igt_debug("clock delta = %"PRIu64"\n", clock_delta);
 
 	max_delta = clock_delta * intel_perf->devinfo.n_eus;
 
@@ -1037,7 +1066,7 @@ gen8_sanity_check_test_oa_reports(const uint32_t *oa_report0,
 					    format.c_off);
 		uint32_t delta = c1[j] - c0[j];
 
-		igt_debug("C%d: delta = %"PRIu32", max_delta=%"PRIu32"\n",
+		igt_debug("C%d: delta = %"PRIu32", max_delta=%"PRIu64"\n",
 			  j, delta, max_delta);
 		igt_assert(delta <= max_delta);
 	}
@@ -1529,10 +1558,10 @@ print_reports(uint32_t *oa_report0, uint32_t *oa_report1, int fmt)
 	if (IS_HASWELL(devid) && format.n_c == 0) {
 		igt_debug("CLOCK = N/A\n");
 	} else {
-		uint32_t clock0 = read_report_ticks(oa_report0, fmt);
-		uint32_t clock1 = read_report_ticks(oa_report1, fmt);
+		uint64_t clock0 = read_report_ticks(oa_report0, fmt);
+		uint64_t clock1 = read_report_ticks(oa_report1, fmt);
 
-		igt_debug("CLOCK: 1st = %"PRIu32", 2nd = %"PRIu32", delta = %"PRIu32"\n",
+		igt_debug("CLOCK: 1st = %"PRIu64", 2nd = %"PRIu64", delta = %"PRIu64"\n",
 			  clock0, clock1, clock1 - clock0);
 	}
 
@@ -1634,9 +1663,9 @@ print_report(uint32_t *report, int fmt)
 	if (IS_HASWELL(devid) && format.n_c == 0) {
 		igt_debug("CLOCK = N/A\n");
 	} else {
-		uint32_t clock = read_report_ticks(report, fmt);
+		uint64_t clock = read_report_ticks(report, fmt);
 
-		igt_debug("CLOCK: %"PRIu32"\n", clock);
+		igt_debug("CLOCK: %"PRIu64"\n", clock);
 	}
 
 	if (intel_gen(devid) >= 8) {
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 09/30] i915/perf: Treat timestamp as 64 bit value
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (7 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 08/30] i915/perf: Treat ticks as 64 bit Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 10/30] i915/perf: Add OAM format type Umesh Nerlige Ramappa
                   ` (24 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

New OA formats in MTL have 64 bit OA report header. Update the timestamp
in the tests to be dafault 64 bit.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 tests/i915/perf.c | 156 +++++++++++++++++++++++++++-------------------
 1 file changed, 93 insertions(+), 63 deletions(-)

diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index 4c7b4e49..c3c5663b 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -552,9 +552,28 @@ cs_timebase_scale(uint32_t u32_delta)
 }
 
 static uint64_t
-timebase_scale(uint32_t u32_delta)
+oa_timestamp(const uint32_t *report, enum drm_i915_oa_format format)
 {
-	return ((uint64_t)u32_delta * NSEC_PER_SEC) / intel_perf->devinfo.timestamp_frequency;
+	struct oa_format fmt = get_oa_format(format);
+
+	return fmt.report_hdr_64bit ? *(uint64_t *)&report[2] : report[1];
+}
+
+static uint64_t
+oa_timestamp_delta(const uint32_t *report1,
+		   const uint32_t *report0,
+		   enum drm_i915_oa_format format)
+{
+	uint32_t width = intel_graphics_ver(devid) >= IP_VER(12, 55) ? 56 : 32;
+
+	return elapsed_delta(oa_timestamp(report1, format),
+			     oa_timestamp(report0, format), width);
+}
+
+static uint64_t
+timebase_scale(uint64_t delta)
+{
+	return (delta * NSEC_PER_SEC) / intel_perf->devinfo.timestamp_frequency;
 }
 
 /* Returns: the largest OA exponent that will still result in a sampling period
@@ -563,7 +582,7 @@ timebase_scale(uint32_t u32_delta)
 static int
 max_oa_exponent_for_period_lte(uint64_t period)
 {
-	/* NB: timebase_scale() takes a uint32_t and an exponent of 30
+	/* NB: timebase_scale() takes a uint64_t and an exponent of 30
 	 * would already represent a period of ~3 minutes so there's
 	 * really no need to consider higher exponents.
 	 */
@@ -712,12 +731,14 @@ hsw_sanity_check_render_basic_reports(const uint32_t *oa_report0,
 				      const uint32_t *oa_report1,
 				      enum drm_i915_oa_format fmt)
 {
-	uint32_t time_delta = timebase_scale(oa_report1[1] - oa_report0[1]);
+	uint64_t time_delta = timebase_scale(oa_timestamp_delta(oa_report1,
+								oa_report0,
+								fmt));
 	uint64_t clock_delta;
 	uint64_t max_delta;
 	struct oa_format format = get_oa_format(fmt);
 
-	igt_assert_neq(time_delta, 0);
+	igt_assert_neq_u64(time_delta, 0);
 
 	/* As a special case we have to consider that on Haswell we
 	 * can't explicitly derive a clock delta for all OA report
@@ -726,8 +747,7 @@ hsw_sanity_check_render_basic_reports(const uint32_t *oa_report0,
 	if (format.n_c == 0) {
 		/* Assume running at max freq for sake of
 		 * below sanity check on counters... */
-		clock_delta = (gt_max_freq_mhz *
-			       (uint64_t)time_delta) / 1000;
+		clock_delta = (gt_max_freq_mhz * time_delta) / 1000;
 	} else {
 		uint64_t freq;
 
@@ -871,7 +891,8 @@ accumulate_reports(struct accumulator *accumulator,
 
 	if (intel_gen(devid) >= 8) {
 		/* timestamp */
-		accumulate_uint32(4, start, end, deltas + idx++);
+		deltas[idx] += oa_timestamp_delta(end, start, accumulator->format);
+		idx++;
 
 		/* clock cycles */
 		deltas[idx] += oa_tick_delta(end, start, accumulator->format);
@@ -947,7 +968,9 @@ gen8_sanity_check_test_oa_reports(const uint32_t *oa_report0,
 				  enum drm_i915_oa_format fmt)
 {
 	struct oa_format format = get_oa_format(fmt);
-	uint32_t time_delta = timebase_scale(oa_report1[1] - oa_report0[1]);
+	uint64_t time_delta = timebase_scale(oa_timestamp_delta(oa_report1,
+								oa_report0,
+								fmt));
 	uint64_t clock_delta = oa_tick_delta(oa_report1, oa_report0, fmt);
 	uint64_t max_delta;
 	uint64_t freq;
@@ -1135,11 +1158,11 @@ static int
 i915_read_reports_until_timestamp(enum drm_i915_oa_format oa_format,
 				  uint8_t *buf,
 				  uint32_t max_size,
-				  uint32_t start_timestamp,
-				  uint32_t end_timestamp)
+				  uint64_t start_timestamp,
+				  uint64_t end_timestamp)
 {
 	size_t format_size = get_oa_format(oa_format).size;
-	uint32_t last_seen_timestamp = start_timestamp;
+	uint64_t last_seen_timestamp = start_timestamp;
 	int total_len = 0;
 
 	while (last_seen_timestamp < end_timestamp) {
@@ -1148,7 +1171,7 @@ i915_read_reports_until_timestamp(enum drm_i915_oa_format oa_format,
 		/* Running out of space. */
 		if ((max_size - total_len) < format_size) {
 			igt_warn("run out of space before reaching "
-				 "end timestamp (%u/%u)\n",
+				 "end timestamp (%"PRIu64"/%"PRIu64")\n",
 				 last_seen_timestamp, end_timestamp);
 			return -1;
 		}
@@ -1177,7 +1200,7 @@ i915_read_reports_until_timestamp(enum drm_i915_oa_format oa_format,
 			uint32_t *report = (uint32_t *) (header + 1);
 
 			if (header->type == DRM_I915_PERF_RECORD_SAMPLE)
-				last_seen_timestamp = report[1];
+				last_seen_timestamp = oa_timestamp(report, oa_format);
 
 			offset += header->size;
 		}
@@ -1483,11 +1506,11 @@ read_2_oa_reports(int format_id,
 			report = (const void *)(header + 1);
 			dump_report(report, format_size / 4, "oa-formats");
 
-			igt_debug("read report: reason = %x, timestamp = %x, exponent mask=%x\n",
-				  report[0], report[1], exponent_mask);
+			igt_debug("read report: reason = %x, timestamp = %"PRIx64", exponent mask=%x\n",
+				  report[0], oa_timestamp(report, format_id), exponent_mask);
 
 			/* Don't expect zero for timestamps */
-			igt_assert_neq(report[1], 0);
+			igt_assert_neq_u64(oa_timestamp(report, format_id), 0);
 
 			if (timer_only) {
 				if (!oa_report_is_periodic(exponent, report)) {
@@ -1551,9 +1574,11 @@ static void
 print_reports(uint32_t *oa_report0, uint32_t *oa_report1, int fmt)
 {
 	struct oa_format format = get_oa_format(fmt);
+	uint64_t ts0 = oa_timestamp(oa_report0, fmt);
+	uint64_t ts1 = oa_timestamp(oa_report1, fmt);
 
-	igt_debug("TIMESTAMP: 1st = %"PRIu32", 2nd = %"PRIu32", delta = %"PRIu32"\n",
-		  oa_report0[1], oa_report1[1], oa_report1[1] - oa_report0[1]);
+	igt_debug("TIMESTAMP: 1st = %"PRIu64", 2nd = %"PRIu64", delta = %"PRIu64"\n",
+		  ts0, ts1, ts1 - ts0);
 
 	if (IS_HASWELL(devid) && format.n_c == 0) {
 		igt_debug("CLOCK = N/A\n");
@@ -1658,7 +1683,7 @@ print_report(uint32_t *report, int fmt)
 {
 	struct oa_format format = get_oa_format(fmt);
 
-	igt_debug("TIMESTAMP: %"PRIu32"\n", report[1]);
+	igt_debug("TIMESTAMP: %"PRIu64"\n", oa_timestamp(report, fmt));
 
 	if (IS_HASWELL(devid) && format.n_c == 0) {
 		igt_debug("CLOCK = N/A\n");
@@ -1887,6 +1912,8 @@ static bool expected_report_timing_delta(uint32_t delta, uint32_t expected_delta
 static void
 test_oa_exponents(const struct intel_execution_engine2 *e)
 {
+	uint64_t fmt = test_set->perf_oa_format;
+
 	load_helper_init();
 	load_helper_run(HIGH);
 
@@ -1901,7 +1928,7 @@ test_oa_exponents(const struct intel_execution_engine2 *e)
 
 			/* OA unit configuration */
 			DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-			DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+			DRM_I915_PERF_PROP_OA_FORMAT, fmt,
 			DRM_I915_PERF_PROP_OA_EXPONENT, exponent,
 			DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
 			DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
@@ -1914,7 +1941,7 @@ test_oa_exponents(const struct intel_execution_engine2 *e)
 			.properties_ptr = to_user_pointer(properties),
 		};
 		uint64_t expected_timestamp_delta = 2ULL << exponent;
-		size_t format_size = get_oa_format(test_set->perf_oa_format).size;
+		size_t format_size = get_oa_format(fmt).size;
 		size_t sample_size = (sizeof(struct drm_i915_perf_record_header) +
 				      format_size);
 		int max_reports = MAX_OA_BUF_SIZE / format_size;
@@ -1978,15 +2005,16 @@ test_oa_exponents(const struct intel_execution_engine2 *e)
 
 		__perf_close(stream_fd);
 
-		igt_debug("report%04i ts=%08x hw_id=0x%08x\n", 0,
-			  timer_reports[0].report[1],
+		igt_debug("report%04i ts=%"PRIx64" hw_id=0x%08x\n", 0,
+			  oa_timestamp(timer_reports[0].report, fmt),
 			  oa_report_get_ctx_id(timer_reports[0].report));
 		for (int i = 1; i < n_timer_reports; i++) {
-			uint32_t delta =
-				timer_reports[i].report[1] - timer_reports[i - 1].report[1];
+			uint64_t delta = oa_timestamp_delta(timer_reports[i].report,
+							    timer_reports[i - 1].report,
+							    fmt);
 
-			igt_debug("report%04i ts=%08x hw_id=0x%08x delta=%u %s\n", i,
-				  timer_reports[i].report[1],
+			igt_debug("report%04i ts=%"PRIx64" hw_id=0x%08x delta=%"PRIu64" %s\n", i,
+				  oa_timestamp(timer_reports[i].report, fmt),
 				  oa_report_get_ctx_id(timer_reports[i].report),
 				  delta, expected_report_timing_delta(delta,
 								      expected_timestamp_delta) ? "" : "******");
@@ -2705,13 +2733,14 @@ test_buffer_fill(const struct intel_execution_engine2 *e)
 	/* ~5 micro second period */
 	int oa_exponent = max_oa_exponent_for_period_lte(5000);
 	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
+	uint64_t fmt = test_set->perf_oa_format;
 	uint64_t properties[] = {
 		/* Include OA reports in samples */
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		/* OA unit configuration */
 		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_FORMAT, fmt,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
 		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
 		DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
@@ -2728,7 +2757,7 @@ test_buffer_fill(const struct intel_execution_engine2 *e)
 	uint8_t *buf = malloc(buf_size);
 	int len;
 	size_t oa_buf_size = MAX_OA_BUF_SIZE;
-	size_t report_size = get_oa_format(test_set->perf_oa_format).size;
+	size_t report_size = get_oa_format(fmt).size;
 	int n_full_oa_reports = oa_buf_size / report_size;
 	uint64_t fill_duration = n_full_oa_reports * oa_period;
 
@@ -2803,17 +2832,17 @@ test_buffer_fill(const struct intel_execution_engine2 *e)
 					igt_debug("report loss, trying again\n");
 					break;
 				case DRM_I915_PERF_RECORD_SAMPLE:
-					igt_debug(" > report ts=%u"
-						  " ts_delta_last_periodic=%8u is_timer=%i ctx_id=%8x nb_periodic=%u\n",
-						  report[1],
-						  n_periodic_reports > 0 ? report[1] - last_periodic_report[1] : 0,
+					igt_debug(" > report ts=%"PRIu64""
+						  " ts_delta_last_periodic=%"PRIu64" is_timer=%i ctx_id=%8x nb_periodic=%u\n",
+						  oa_timestamp(report, fmt),
+						  n_periodic_reports > 0 ?  oa_timestamp_delta(report, last_periodic_report, fmt) : 0,
 						  oa_report_is_periodic(oa_exponent, report),
 						  oa_report_get_ctx_id(report),
 						  n_periodic_reports);
 
 					if (first_timestamp == 0)
-						first_timestamp = report[1];
-					last_timestamp = report[1];
+						first_timestamp = oa_timestamp(report, fmt);
+					last_timestamp = oa_timestamp(report, fmt);
 
 					if (((last_timestamp - first_timestamp) * oa_period) < (fill_duration / 2))
 						break;
@@ -2940,13 +2969,14 @@ test_enable_disable(const struct intel_execution_engine2 *e)
 	/* ~5 micro second period */
 	int oa_exponent = max_oa_exponent_for_period_lte(5000);
 	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
+	uint64_t fmt = test_set->perf_oa_format;
 	uint64_t properties[] = {
 		/* Include OA reports in samples */
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		/* OA unit configuration */
 		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_FORMAT, fmt,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
 		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
 		DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
@@ -2962,7 +2992,7 @@ test_enable_disable(const struct intel_execution_engine2 *e)
 	int buf_size = 65536 * (256 + sizeof(struct drm_i915_perf_record_header));
 	uint8_t *buf = malloc(buf_size);
 	size_t oa_buf_size = MAX_OA_BUF_SIZE;
-	size_t report_size = get_oa_format(test_set->perf_oa_format).size;
+	size_t report_size = get_oa_format(fmt).size;
 	int n_full_oa_reports = oa_buf_size / report_size;
 	uint64_t fill_duration = n_full_oa_reports * oa_period;
 
@@ -2975,7 +3005,7 @@ test_enable_disable(const struct intel_execution_engine2 *e)
 		int len;
 		uint32_t n_periodic_reports;
 		struct drm_i915_perf_record_header *header;
-		uint32_t first_timestamp = 0, last_timestamp = 0;
+		uint64_t first_timestamp = 0, last_timestamp = 0;
 		uint32_t last_periodic_report[64];
 
 		/* Giving enough time for an overflow might help catch whether
@@ -3022,15 +3052,15 @@ test_enable_disable(const struct intel_execution_engine2 *e)
 					break;
 				case DRM_I915_PERF_RECORD_SAMPLE:
 					if (first_timestamp == 0)
-						first_timestamp = report[1];
-					last_timestamp = report[1];
+						first_timestamp = oa_timestamp(report, fmt);
+					last_timestamp = oa_timestamp(report, fmt);
 
-					igt_debug(" > report ts=%8x"
-						  " ts_delta_last_periodic=%s%8u"
+					igt_debug(" > report ts=%"PRIx64""
+						  " ts_delta_last_periodic=%s%"PRIu64""
 						  " is_timer=%i ctx_id=0x%8x\n",
-						  report[1],
+						  oa_timestamp(report, fmt),
 						  oa_report_is_periodic(oa_exponent, report) ? " " : "*",
-						  n_periodic_reports > 0 ? (report[1] - last_periodic_report[1]) : 0,
+						  n_periodic_reports > 0 ?  oa_timestamp_delta(report, last_periodic_report, fmt) : 0,
 						  oa_report_is_periodic(oa_exponent, report),
 						  oa_report_get_ctx_id(report));
 
@@ -3060,7 +3090,7 @@ test_enable_disable(const struct intel_execution_engine2 *e)
 
 		do_ioctl(stream_fd, I915_PERF_IOCTL_DISABLE, 0);
 
-		igt_debug("first ts = %u, last ts = %u\n", first_timestamp, last_timestamp);
+		igt_debug("first ts = %lu, last ts = %lu\n", first_timestamp, last_timestamp);
 
 		igt_debug("%f < %zu < %f\n",
 			  report_size * n_full_oa_reports * 0.45,
@@ -3366,7 +3396,7 @@ gen12_test_mi_rpc(const struct intel_execution_engine2 *e)
 	 * size amount of data was written.
 	 */
 	igt_assert_eq(report32[0], REPORT_ID);
-	igt_assert_neq(report32[1], 0);
+	igt_assert(oa_timestamp(report32, test_set->perf_oa_format));
 	igt_assert_neq(report32[format.b_off >> 2], 0x80808080);
 	igt_assert_eq(report32[format_size_32], 0x80808080);
 
@@ -3427,7 +3457,7 @@ test_mi_rpc(void)
 	report32 = buf->ptr;
 	dump_report(report32, 64, "mi-rpc");
 	igt_assert_eq(report32[0], 0xdeadbeef); /* report ID */
-	igt_assert_neq(report32[1], 0); /* timestamp */
+	igt_assert(oa_timestamp(report32, test_set->perf_oa_format)); /* timestamp */
 
 	igt_assert_neq(report32[63], 0x80808080); /* end of report */
 	igt_assert_eq(report32[64], 0x80808080); /* after 256 byte report */
@@ -4166,9 +4196,9 @@ static void gen12_single_ctx_helper(const struct intel_execution_engine2 *e)
 	uint32_t context0_id, context1_id;
 	uint32_t *report0_32, *report1_32, *report2_32, *report3_32;
 	uint64_t timestamp0_64, timestamp1_64;
-	uint32_t delta_ts64, delta_oa32;
+	uint64_t delta_ts64, delta_oa32;
 	uint64_t delta_ts64_ns, delta_oa32_ns;
-	uint32_t delta_delta;
+	uint64_t delta_delta;
 	int width = 800;
 	int height = 600;
 #define INVALID_CTX_ID 0xffffffff
@@ -4323,14 +4353,14 @@ static void gen12_single_ctx_helper(const struct intel_execution_engine2 *e)
 	 */
 	report0_32 = dst_buf->ptr;
 	igt_assert_eq(report0_32[0], 0xdeadbeef);
-	igt_assert_neq(report0_32[1], 0);
+	igt_assert(oa_timestamp(report0_32, fmt));
 	ctx0_id = report0_32[2];
 	igt_debug("MI_RPC(start) CTX ID: %u\n", ctx0_id);
 	dump_report(report0_32, 64, "report0_32");
 
 	report1_32 = report0_32 + 64;
 	igt_assert_eq(report1_32[0], 0xbeefbeef);
-	igt_assert_neq(report1_32[1], 0);
+	igt_assert(oa_timestamp(report1_32, fmt));
 	ctx1_id = report1_32[2];
 	igt_debug("CTX ID1: %u\n", ctx1_id);
 	dump_report(report1_32, 64, "report1_32");
@@ -4338,7 +4368,7 @@ static void gen12_single_ctx_helper(const struct intel_execution_engine2 *e)
 	/* Verify that counters in context1 are all zeroes */
 	report2_32 = report0_32 + 128;
 	igt_assert_eq(report2_32[0], 0x00c0ffee);
-	igt_assert_neq(report2_32[1], 0);
+	igt_assert(oa_timestamp(report2_32, fmt));
 	dump_report(report2_32, 64, "report2_32");
 	igt_assert_eq(0, memcmp(&report2_32[4],
 				(uint8_t *) dst_buf->ptr + 2048,
@@ -4346,7 +4376,7 @@ static void gen12_single_ctx_helper(const struct intel_execution_engine2 *e)
 
 	report3_32 = report0_32 + 192;
 	igt_assert_eq(report3_32[0], 0x01c0ffee);
-	igt_assert_neq(report3_32[1], 0);
+	igt_assert(oa_timestamp(report3_32, fmt));
 	dump_report(report3_32, 64, "report3_32");
 	igt_assert_eq(0, memcmp(&report3_32[4],
 				(uint8_t *) dst_buf->ptr + 2048,
@@ -4360,8 +4390,8 @@ static void gen12_single_ctx_helper(const struct intel_execution_engine2 *e)
 			accumulator.deltas[2 + 21],
 			accumulator.deltas[2 + 26]);
 
-	igt_debug("oa_timestamp32 0 = %u\n", report0_32[1]);
-	igt_debug("oa_timestamp32 1 = %u\n", report1_32[1]);
+	igt_debug("oa_timestamp32 0 = %"PRIu64"\n", oa_timestamp(report0_32, fmt));
+	igt_debug("oa_timestamp32 1 = %"PRIu64"\n", oa_timestamp(report1_32, fmt));
 	igt_debug("ctx_id 0 = %u\n", report0_32[2]);
 	igt_debug("ctx_id 1 = %u\n", report1_32[2]);
 
@@ -4376,23 +4406,23 @@ static void gen12_single_ctx_helper(const struct intel_execution_engine2 *e)
 	igt_debug("ts_timestamp64 1 = %"PRIu64"\n", timestamp1_64);
 
 	delta_ts64 = timestamp1_64 - timestamp0_64;
-	delta_oa32 = report1_32[1] - report0_32[1];
+	delta_oa32 = oa_timestamp_delta(report1_32, report0_32, fmt);
 
 	/* Sanity check that we can pass the delta to timebase_scale */
-	igt_assert(delta_ts64 < UINT32_MAX);
 	delta_oa32_ns = timebase_scale(delta_oa32);
 	delta_ts64_ns = cs_timebase_scale(delta_ts64);
 
-	igt_debug("oa32 delta = %u, = %uns\n",
-			delta_oa32, (unsigned)delta_oa32_ns);
-	igt_debug("ts64 delta = %u, = %uns\n",
-			delta_ts64, (unsigned)delta_ts64_ns);
+	igt_debug("oa32 delta = %"PRIu64", = %"PRIu64"ns\n",
+			delta_oa32, delta_oa32_ns);
+	igt_debug("ts64 delta = %"PRIu64", = %"PRIu64"ns\n",
+			delta_ts64, delta_ts64_ns);
 
 	delta_delta = delta_ts64_ns > delta_oa32_ns ?
 		      (delta_ts64_ns - delta_oa32_ns) :
 		      (delta_oa32_ns - delta_ts64_ns);
 	if (delta_delta > 500) {
-		igt_debug("delta_delta exceeds margin, skipping..\n");
+		igt_debug("delta_delta = %"PRIu64". exceeds margin, skipping..\n",
+			  delta_delta);
 		exit(EAGAIN);
 	}
 
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 10/30] i915/perf: Add OAM format type
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (8 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 09/30] i915/perf: Treat timestamp as 64 bit value Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 11/30] i915/perf: Use a helper for OA format Umesh Nerlige Ramappa
                   ` (23 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Don't check for B and C counters sanity for OAM formats.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 tests/i915/perf.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index c3c5663b..e9613dc9 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -104,6 +104,7 @@ struct accumulator {
 enum {
 	OAG,
 	OAR,
+	OAM,
 
 	MAX_OA_TYPE,
 };
@@ -1035,7 +1036,7 @@ gen8_sanity_check_test_oa_reports(const uint32_t *oa_report0,
 	/* The TestOa metric set defines all B counters to be a
 	 * multiple of the gpu clock
 	 */
-	if (format.n_b) {
+	if (format.n_b && (format.oa_type == OAG || format.oa_type == OAR)) {
 		if (clock_delta > 0) {
 			b = rpt1_b[0] - rpt0_b[0];
 			igt_debug("B0: delta = %"PRIu32"\n", b);
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 11/30] i915/perf: Use a helper for OA format
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (9 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 10/30] i915/perf: Add OAM format type Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 12/30] i915/perf: Add support for oa perf groups Umesh Nerlige Ramappa
                   ` (22 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Refactor and use a helper for OA format

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 tests/i915/perf.c | 38 ++++++++++++++++++++++----------------
 1 file changed, 22 insertions(+), 16 deletions(-)

diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index e9613dc9..a23438fc 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -670,6 +670,12 @@ oar_unit_default_format(void)
 	return test_set->perf_oa_format;
 }
 
+static int
+oa_unit_default_format(void)
+{
+	return test_set->perf_oa_format;
+}
+
 /*
  * Temporary wrapper to distinguish mappings on !llc platforms,
  * where it seems cache over GEM_MMAP_OFFSET is not flushed before execution.
@@ -1913,7 +1919,7 @@ static bool expected_report_timing_delta(uint32_t delta, uint32_t expected_delta
 static void
 test_oa_exponents(const struct intel_execution_engine2 *e)
 {
-	uint64_t fmt = test_set->perf_oa_format;
+	uint64_t fmt = oa_unit_default_format();
 
 	load_helper_init();
 	load_helper_run(HIGH);
@@ -1951,7 +1957,7 @@ test_oa_exponents(const struct intel_execution_engine2 *e)
 		int ret, n_timer_reports = 0;
 		uint32_t matches = 0;
 		struct {
-			uint32_t report[64];
+			uint32_t report[format_size / 4];
 		} timer_reports[30];
 
 		igt_debug("testing OA exponent %d,"
@@ -2254,7 +2260,7 @@ test_blocking(uint64_t requested_oa_period,
 
 	ADD_PROPS(props, idx, SAMPLE_OA, true);
 	ADD_PROPS(props, idx, OA_METRICS_SET, test_set->perf_oa_metrics_set);
-	ADD_PROPS(props, idx, OA_FORMAT, test_set->perf_oa_format);
+	ADD_PROPS(props, idx, OA_FORMAT, oa_unit_default_format());
 	ADD_PROPS(props, idx, OA_EXPONENT, oa_exponent);
 
 	if (has_param_poll_period() && set_kernel_hrtimer)
@@ -2417,7 +2423,7 @@ test_polling(uint64_t requested_oa_period,
 
 	ADD_PROPS(props, idx, SAMPLE_OA, true);
 	ADD_PROPS(props, idx, OA_METRICS_SET, test_set->perf_oa_metrics_set);
-	ADD_PROPS(props, idx, OA_FORMAT, test_set->perf_oa_format);
+	ADD_PROPS(props, idx, OA_FORMAT, oa_unit_default_format());
 	ADD_PROPS(props, idx, OA_EXPONENT, oa_exponent);
 
 	if (has_param_poll_period() && set_kernel_hrtimer)
@@ -2691,7 +2697,7 @@ gen12_test_oa_tlb_invalidate(const struct intel_execution_engine2 *e)
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_FORMAT, oa_unit_default_format(),
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
 		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
 		DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
@@ -2734,7 +2740,7 @@ test_buffer_fill(const struct intel_execution_engine2 *e)
 	/* ~5 micro second period */
 	int oa_exponent = max_oa_exponent_for_period_lte(5000);
 	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
-	uint64_t fmt = test_set->perf_oa_format;
+	uint64_t fmt = oa_unit_default_format();
 	uint64_t properties[] = {
 		/* Include OA reports in samples */
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
@@ -2754,11 +2760,11 @@ test_buffer_fill(const struct intel_execution_engine2 *e)
 		.properties_ptr = to_user_pointer(properties),
 	};
 	struct drm_i915_perf_record_header *header;
-	int buf_size = 65536 * (256 + sizeof(struct drm_i915_perf_record_header));
+	size_t report_size = get_oa_format(fmt).size;
+	int buf_size = 65536 * (report_size + sizeof(struct drm_i915_perf_record_header));
 	uint8_t *buf = malloc(buf_size);
 	int len;
 	size_t oa_buf_size = MAX_OA_BUF_SIZE;
-	size_t report_size = get_oa_format(fmt).size;
 	int n_full_oa_reports = oa_buf_size / report_size;
 	uint64_t fill_duration = n_full_oa_reports * oa_period;
 
@@ -2770,7 +2776,7 @@ test_buffer_fill(const struct intel_execution_engine2 *e)
 		bool overflow_seen;
 		uint32_t n_periodic_reports;
 		uint32_t first_timestamp = 0, last_timestamp = 0;
-		uint32_t last_periodic_report[64];
+		uint32_t last_periodic_report[report_size / 4];
 
 		do_ioctl(stream_fd, I915_PERF_IOCTL_ENABLE, 0);
 
@@ -2970,7 +2976,7 @@ test_enable_disable(const struct intel_execution_engine2 *e)
 	/* ~5 micro second period */
 	int oa_exponent = max_oa_exponent_for_period_lte(5000);
 	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
-	uint64_t fmt = test_set->perf_oa_format;
+	uint64_t fmt = oa_unit_default_format();
 	uint64_t properties[] = {
 		/* Include OA reports in samples */
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
@@ -2990,10 +2996,10 @@ test_enable_disable(const struct intel_execution_engine2 *e)
 				  (ARRAY_SIZE(properties) / 2) - 2,
 		.properties_ptr = to_user_pointer(properties),
 	};
-	int buf_size = 65536 * (256 + sizeof(struct drm_i915_perf_record_header));
+	size_t report_size = get_oa_format(fmt).size;
+	int buf_size = 65536 * (report_size + sizeof(struct drm_i915_perf_record_header));
 	uint8_t *buf = malloc(buf_size);
 	size_t oa_buf_size = MAX_OA_BUF_SIZE;
-	size_t report_size = get_oa_format(fmt).size;
 	int n_full_oa_reports = oa_buf_size / report_size;
 	uint64_t fill_duration = n_full_oa_reports * oa_period;
 
@@ -3007,7 +3013,7 @@ test_enable_disable(const struct intel_execution_engine2 *e)
 		uint32_t n_periodic_reports;
 		struct drm_i915_perf_record_header *header;
 		uint64_t first_timestamp = 0, last_timestamp = 0;
-		uint32_t last_periodic_report[64];
+		uint32_t last_periodic_report[report_size / 4];
 
 		/* Giving enough time for an overflow might help catch whether
 		 * the OA unit has been enabled even if the driver might at
@@ -4565,7 +4571,7 @@ test_stress_open_close(const struct intel_execution_engine2 *e)
 
 			/* OA unit configuration */
 			DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-			DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+			DRM_I915_PERF_PROP_OA_FORMAT, oa_unit_default_format(),
 			DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
 			DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
 			DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
@@ -4668,7 +4674,7 @@ test_global_sseu_config_invalid(const struct intel_execution_engine2 *e)
 
 		/* OA unit configuration */
 		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_FORMAT, oa_unit_default_format(),
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
 		DRM_I915_PERF_PROP_GLOBAL_SSEU, to_user_pointer(&sseu_param),
 		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
@@ -4757,7 +4763,7 @@ test_global_sseu_config(const struct intel_execution_engine2 *e)
 
 		/* OA unit configuration */
 		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_FORMAT, oa_unit_default_format(),
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
 		DRM_I915_PERF_PROP_GLOBAL_SSEU, to_user_pointer(&sseu_param),
 		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 12/30] i915/perf: Add support for oa perf groups
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (10 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 11/30] i915/perf: Use a helper for OA format Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 13/30] i915/perf: Test concurrent access to OA in different groups Umesh Nerlige Ramappa
                   ` (21 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

With multiple OA buffers, we need a way to group engines per OA buffer.
Add support for oa perf groups for tests

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 tests/i915/perf.c | 169 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 169 insertions(+)

diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index a23438fc..0a74a41d 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -39,6 +39,7 @@
 #include <math.h>
 
 #include "i915/gem.h"
+#include "i915/gem_engine_topology.h"
 #include "i915/perf.h"
 #include "igt.h"
 #include "igt_perf.h"
@@ -238,6 +239,8 @@ static int pm_fd = -1;
 static int stream_fd = -1;
 static uint32_t devid;
 static struct intel_execution_engine2 default_e2;
+static struct perf_engine_group *perf_oa_groups;
+static uint32_t num_perf_oa_groups;
 
 static uint64_t gt_max_freq_mhz = 0;
 static struct intel_perf *intel_perf = NULL;
@@ -5310,6 +5313,167 @@ test_sysctl_defaults(void)
 		if (e__->class == I915_ENGINE_CLASS_RENDER) \
 			igt_dynamic_f("%s", e__->name)
 
+struct perf_engine_group {
+	/* exclusive perf fd per engine group */
+	int perf_fd;
+
+	/* gem context id passed to perf */
+	uint32_t ctx_id;
+	uint32_t oa_unit_id;
+
+	/* perf engines in a group */
+	int num_engines;
+	struct i915_engine_class_instance *ci;
+};
+
+static struct drm_i915_query_engine_info *query_engine_info(int i915)
+{
+	struct drm_i915_query_engine_info *qinfo;
+
+#define QUERY_SIZE (0x4000)
+	qinfo = malloc(QUERY_SIZE);
+	igt_assert(qinfo);
+	memset(qinfo, 0, QUERY_SIZE);
+	igt_assert(!__gem_query_engines(i915, qinfo, QUERY_SIZE));
+#undef QUERY_SIZE
+
+	return qinfo;
+}
+
+static int compare_engine_oa_unit_id(const void *e1, const void *e2)
+{
+	const struct drm_i915_engine_info *_e1 = e1;
+	const struct drm_i915_engine_info *_e2 = e2;
+
+	return (int)_e1->rsvd0 - (int)_e2->rsvd0;
+}
+
+static struct perf_engine_group *default_engine_group(uint32_t *num_groups)
+{
+	struct perf_engine_group *groups = malloc(sizeof(*groups));
+
+	igt_debug("using default engine group\n");
+
+	groups->perf_fd = -1,
+	groups->ctx_id = 0xffffffff,
+	groups->oa_unit_id = 0,
+	groups->num_engines = 1,
+
+	groups->ci = malloc(sizeof(*groups->ci));
+	groups->ci->engine_class = default_e2.class;
+	groups->ci->engine_instance = default_e2.instance;
+
+	*num_groups = 1;
+
+	return groups;
+}
+
+/* Until oa_unit_id is exposed from uapi, work around it */
+static void populate_mtl_oa_unit_ids(struct drm_i915_query_engine_info *qinfo)
+{
+	struct i915_engine_class_instance ci;
+	int i;
+
+	for (i = 0; i < qinfo->num_engines; i++) {
+		ci = qinfo->engines[i].engine;
+
+		switch (ci.engine_class) {
+		case I915_ENGINE_CLASS_RENDER:
+			qinfo->engines[i].rsvd0 = 0;
+			break;
+
+		case I915_ENGINE_CLASS_VIDEO:
+		case I915_ENGINE_CLASS_VIDEO_ENHANCE:
+			qinfo->engines[i].rsvd0 = 1;
+			break;
+
+		default:
+			qinfo->engines[i].rsvd0 = UINT32_MAX;
+			break;
+		}
+
+		igt_debug("class:instance = %d:%d, id = %d\n",
+			  ci.engine_class, ci.engine_instance,
+			  qinfo->engines[i].rsvd0);
+	}
+}
+
+static struct perf_engine_group *get_engine_groups(int i915, uint32_t *num_groups)
+{
+	struct drm_i915_query_engine_info *qinfo;
+	struct perf_engine_group *groups = NULL;
+	uint32_t id = UINT32_MAX, num_grps = 0, i = 0, j;
+
+	qinfo = query_engine_info(i915);
+	if (!qinfo)
+		return default_engine_group(num_groups);
+	igt_assert(qinfo->num_engines);
+
+	/* Currently only meteorlake is supported with engine groups */
+	if (IS_METEORLAKE(devid)) {
+		populate_mtl_oa_unit_ids(qinfo);
+	} else {
+		free(qinfo);
+		return default_engine_group(num_groups);
+	}
+
+	/* sort so that engines with same oa id are together */
+	qsort(qinfo->engines, qinfo->num_engines, sizeof(qinfo->engines[0]),
+	      compare_engine_oa_unit_id);
+
+	/* create groups */
+	for (i = 0; i < qinfo->num_engines; i++) {
+		struct i915_engine_class_instance ci = qinfo->engines[i].engine;
+
+		igt_debug("class:instance = %d:%d, id = %d\n",
+			  ci.engine_class, ci.engine_instance,
+			  qinfo->engines[i].rsvd0);
+
+		if (qinfo->engines[i].rsvd0 == UINT32_MAX)
+			continue;
+
+		if (qinfo->engines[i].rsvd0 != id) {
+			id = qinfo->engines[i].rsvd0;
+			groups = realloc(groups, ++num_grps * sizeof(*groups));
+			j = num_grps - 1;
+			groups[j].perf_fd = -1;
+			groups[j].ctx_id = 0xffffffff;
+			groups[j].oa_unit_id = id;
+			groups[j].num_engines = 0;
+			/* alloc max engines, trim later */
+			groups[j].ci = malloc(qinfo->num_engines * sizeof(ci));
+		}
+		groups[j].ci[groups[j].num_engines++] = ci;
+	}
+
+	igt_assert(num_grps);
+
+	/* trim engines */
+	for (i = 0; i < num_grps; i++) {
+		struct i915_engine_class_instance *ci = groups[i].ci;
+
+		ci = realloc(ci, groups[i].num_engines * sizeof(*ci));
+		groups[i].ci = ci;
+	}
+
+	*num_groups = num_grps;
+
+	free(qinfo);
+
+	return groups;
+}
+
+static void put_engine_groups(struct perf_engine_group *groups,
+			      unsigned int num_groups)
+{
+	int i;
+
+	for (i = 0; i < num_groups; i++)
+		free(groups[i].ci);
+
+	free(groups);
+}
+
 static bool has_class_instance(int i915, uint16_t class, uint16_t instance)
 {
 	int fd;
@@ -5380,6 +5544,8 @@ igt_main
 		write_u64_file("/proc/sys/dev/i915/oa_max_sample_rate", 100000);
 
 		gt_max_freq_mhz = sysfs_read(RPS_RP0_FREQ_MHZ);
+		perf_oa_groups = get_engine_groups(drm_fd, &num_perf_oa_groups);
+		igt_assert(perf_oa_groups && num_perf_oa_groups);
 
 		if (has_class_instance(drm_fd, I915_ENGINE_CLASS_RENDER, 0))
 			render_copy = igt_get_render_copyfunc(devid);
@@ -5602,6 +5768,9 @@ igt_main
 		if (intel_perf)
 			intel_perf_free(intel_perf);
 
+		if (perf_oa_groups)
+			put_engine_groups(perf_oa_groups, num_perf_oa_groups);
+
 		intel_ctx_destroy(drm_fd, ctx);
 		close(drm_fd);
 	}
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 13/30] i915/perf: Test concurrent access to OA in different groups
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (11 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 12/30] i915/perf: Add support for oa perf groups Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 14/30] i915/perf: Add OAM support Umesh Nerlige Ramappa
                   ` (20 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

With multiple OA buffers, verify that the perf interface allows
concurrent access to the OA buffers in different groups.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 tests/i915/perf.c | 135 ++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 131 insertions(+), 4 deletions(-)

diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index 0a74a41d..b9422964 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -2246,6 +2246,7 @@ test_blocking(uint64_t requested_oa_period,
 
 	int max_iterations = (test_duration_ns / oa_period) + 2;
 	int n_extra_iterations = 0;
+	int perf_fd;
 
 	/* It's a bit tricky to put a lower limit here, but we expect a
 	 * relatively low latency for seeing reports, while we don't currently
@@ -2279,7 +2280,7 @@ test_blocking(uint64_t requested_oa_period,
 	param.num_properties = (idx - props) / 2;
 	param.properties_ptr = to_user_pointer(props);
 
-	stream_fd = __perf_open(drm_fd, &param, true /* prevent_pm */);
+	perf_fd = __perf_open(drm_fd, &param, true /* prevent_pm */);
 
 	times(&start_times);
 
@@ -2311,14 +2312,14 @@ test_blocking(uint64_t requested_oa_period,
 	 * the error delta.
 	 */
 	start = get_time();
-	do_ioctl(stream_fd, I915_PERF_IOCTL_ENABLE, 0);
+	do_ioctl(perf_fd, I915_PERF_IOCTL_ENABLE, 0);
 	for (/* nop */; ((end = get_time()) - start) < test_duration_ns; /* nop */) {
 		struct drm_i915_perf_record_header *header;
 		bool timer_report_read = false;
 		bool non_timer_report_read = false;
 		int ret;
 
-		while ((ret = read(stream_fd, buf, sizeof(buf))) < 0 &&
+		while ((ret = read(perf_fd, buf, sizeof(buf))) < 0 &&
 		       errno == EINTR)
 			;
 
@@ -2386,7 +2387,7 @@ test_blocking(uint64_t requested_oa_period,
 	if (!set_kernel_hrtimer)
 		igt_assert(kernel_ns <= (test_duration_ns / 100ull));
 
-	__perf_close(stream_fd);
+	__perf_close(perf_fd);
 }
 
 static void
@@ -5474,6 +5475,14 @@ static void put_engine_groups(struct perf_engine_group *groups,
 	free(groups);
 }
 
+static struct i915_engine_class_instance *
+random_engine(struct perf_engine_group *group)
+{
+	srandom(time(NULL));
+
+	return &group->ci[random() % group->num_engines];
+}
+
 static bool has_class_instance(int i915, uint16_t class, uint16_t instance)
 {
 	int fd;
@@ -5496,6 +5505,112 @@ static void set_default_engine(const intel_ctx_t *ctx)
 			default_e2 = *e;
 }
 
+/*
+ * Test if OA buffer streams can be independently opened on each gt. Once a user
+ * opens a stream, that gt is exclusive to the user, other users get -EBUSY on
+ * trying to open a stream. Note that OA metrics are global to the gt and can
+ * get clobbered if we try to support concurrency.
+ */
+static void
+test_gt_exclusive_stream(const intel_ctx_t *ctx, bool exponent)
+{
+	uint64_t properties[] = {
+		DRM_I915_PERF_PROP_SAMPLE_OA, true,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
+		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, 0,
+		DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, 0,
+		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
+	};
+	struct drm_i915_perf_open_param param = {
+		.flags = I915_PERF_FLAG_FD_CLOEXEC,
+		/* for gem_context use case, we do no pass exponent */
+		.num_properties = exponent ?
+				  ARRAY_SIZE(properties) / 2 - 1:
+				  ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	uint32_t i, j;
+
+	/* for each group, open one random perf stream with sample OA */
+	for (i = 0; i < num_perf_oa_groups; i++) {
+		struct perf_engine_group *grp = &perf_oa_groups[i];
+		struct i915_engine_class_instance *ci = random_engine(grp);
+
+		if (!exponent) {
+			properties[0] = DRM_I915_PERF_PROP_CTX_HANDLE;
+			properties[1] = ctx->id;
+		}
+
+		properties[7] = ci->engine_class;
+		properties[9] = ci->engine_instance;
+		grp->perf_fd = igt_ioctl(drm_fd,
+					 DRM_IOCTL_I915_PERF_OPEN,
+					 &param);
+		igt_assert(grp->perf_fd >= 0);
+		igt_debug("opened OA buffer with c:i %d:%d\n",
+			  ci->engine_class, ci->engine_instance);
+	}
+
+	/* for each group make sure no other streams can be opened */
+	for (i = 0; i < num_perf_oa_groups; i++) {
+		struct perf_engine_group *grp = &perf_oa_groups[i];
+		int err;
+
+		for (j = 0; j < grp->num_engines; j++) {
+			struct i915_engine_class_instance *ci = grp->ci + j;
+
+			/*
+			 * case 1:
+			 * concurrent access to OAG should fail
+			 */
+			properties[0] = DRM_I915_PERF_PROP_SAMPLE_OA;
+			properties[1] = true;
+			properties[7] = ci->engine_class;
+			properties[9] = ci->engine_instance;
+			/* for SAMPLE OA use case, we must pass exponent */
+			param.num_properties = ARRAY_SIZE(properties) / 2;
+			do_ioctl_err(drm_fd, DRM_IOCTL_I915_PERF_OPEN, &param,
+				     EBUSY);
+			igt_debug("try OA buffer with c:i %d:%d\n",
+				  ci->engine_class, ci->engine_instance);
+
+			/*
+			 * case 2:
+			 * concurrent access to non-OAG unit should fail
+			 */
+			properties[0] = DRM_I915_PERF_PROP_CTX_HANDLE;
+			properties[1] = gem_context_create(drm_fd);
+			/* for gem_context use case, we do no pass exponent */
+			param.num_properties = ARRAY_SIZE(properties) / 2 - 1;
+			errno = 0;
+			err = igt_ioctl(drm_fd, DRM_IOCTL_I915_PERF_OPEN, &param);
+			igt_assert(err < 0);
+			igt_assert(errno == EBUSY || errno == ENODEV);
+			igt_debug("try OA ci unit with c:i %d:%d\n",
+				  ci->engine_class, ci->engine_instance);
+			gem_context_destroy(drm_fd, properties[1]);
+		}
+
+		if (grp->perf_fd >= 0)
+			close(grp->perf_fd);
+	}
+}
+
+static void
+test_gt_concurrent_oa_buffer_read(void)
+{
+	igt_fork(child, num_perf_oa_groups) {
+		struct intel_execution_engine2 e;
+
+		e.class = perf_oa_groups[child].ci->engine_class;
+		e.instance = perf_oa_groups[child].ci->engine_instance;
+
+		test_blocking(40 * 1000 * 1000, false, 5 * 1000 * 1000, &e);
+	}
+	igt_waitchildren();
+}
+
 igt_main
 {
 	const intel_ctx_t *ctx;
@@ -5721,6 +5836,18 @@ igt_main
 		igt_describe("Verify invalid class instance");
 		igt_subtest("gen12-invalid-class-instance")
 			test_invalid_class_instance();
+
+		igt_describe("Verify exclusivity of perf streams with sample oa option");
+		igt_subtest("gen12-gt-exclusive-stream-sample-oa")
+			test_gt_exclusive_stream(ctx, true);
+
+		igt_describe("Verify exclusivity of perf streams with ctx handle");
+		igt_subtest("gen12-gt-exclusive-stream-ctx-handle")
+			test_gt_exclusive_stream(ctx, false);
+
+		igt_describe("Verify concurrent reads from OA buffers in different gts");
+		igt_subtest("gen12-gt-concurrent-oa-buffer-read")
+			test_gt_concurrent_oa_buffer_read();
 	}
 
 	igt_subtest("rc6-disable")
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 14/30] i915/perf: Add OAM support
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (12 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 13/30] i915/perf: Test concurrent access to OA in different groups Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 15/30] lib/perf: Make chipsets aware of oa formats Umesh Nerlige Ramappa
                   ` (19 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Add OAM formats and support for media engines in perf tests

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 include/drm-uapi/i915_drm.h |   4 ++
 lib/intel_chipset.h         |   3 +
 lib/intel_device_info.c     |   1 +
 tests/i915/perf.c           | 138 +++++++++++++++++++++++++-----------
 4 files changed, 105 insertions(+), 41 deletions(-)

diff --git a/include/drm-uapi/i915_drm.h b/include/drm-uapi/i915_drm.h
index 5fab3066..ab244346 100644
--- a/include/drm-uapi/i915_drm.h
+++ b/include/drm-uapi/i915_drm.h
@@ -2545,6 +2545,10 @@ enum drm_i915_oa_format {
 	I915_OAR_FORMAT_A32u40_A4u32_B8_C8,
 	I915_OA_FORMAT_A24u40_A14u32_B8_C8,
 
+	/* MTL OAM */
+	I915_OAM_FORMAT_MPEC8u64_B8_C8,
+	I915_OAM_FORMAT_MPEC8u32_B8_C8,
+
 	I915_OA_FORMAT_MAX	    /* non-ABI */
 };
 
diff --git a/lib/intel_chipset.h b/lib/intel_chipset.h
index c9762ae6..c2c8998d 100644
--- a/lib/intel_chipset.h
+++ b/lib/intel_chipset.h
@@ -45,6 +45,7 @@ struct intel_device_info {
 	unsigned gt; /* 0 if unknown */
 	bool has_4tile : 1;
 	bool has_flatccs : 1;
+	bool has_oam : 1;
 	bool is_mobile : 1;
 	bool is_whitney : 1;
 	bool is_almador : 1;
@@ -231,4 +232,6 @@ void intel_check_pch(void);
 
 #define HAS_FLATCCS(devid)	(intel_get_device_info(devid)->has_flatccs)
 
+#define HAS_OAM(devid)		(intel_get_device_info(devid)->has_oam)
+
 #endif /* _INTEL_CHIPSET_H */
diff --git a/lib/intel_device_info.c b/lib/intel_device_info.c
index 12b81d48..0b11dfce 100644
--- a/lib/intel_device_info.c
+++ b/lib/intel_device_info.c
@@ -472,6 +472,7 @@ static const struct intel_device_info intel_meteorlake_info = {
 	.graphics_rel = 70,
 	.display_ver = 14,
 	.has_4tile = true,
+	.has_oam = true,
 	.is_meteorlake = true,
 	.codename = "meteorlake",
 	.cmds_info = &gen12_mtl_cmds_info,
diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index b9422964..f5d0726b 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -212,6 +212,40 @@ static struct oa_format dg2_oa_formats[I915_OA_FORMAT_MAX] = {
 		.c_off = 224, .n_c = 8, .oa_type = OAG, },
 };
 
+static struct oa_format mtl_oa_formats[I915_OA_FORMAT_MAX] = {
+	[I915_OAR_FORMAT_A32u40_A4u32_B8_C8] = {
+		"A32u40_A4u32_B8_C8", .size = 256,
+		.a40_high_off = 160, .a40_low_off = 16, .n_a40 = 32,
+		.a_off = 144, .n_a = 4, .first_a = 32,
+		.b_off = 192, .n_b = 8,
+		.c_off = 224, .n_c = 8, .oa_type = OAR, },
+	/* This format has A36 and A37 interleaved with high bytes of some A
+	 * counters, so we will accumulate only subset of counters.
+	 */
+	[I915_OA_FORMAT_A24u40_A14u32_B8_C8] = {
+		"A24u40_A14u32_B8_C8", .size = 256,
+		/* u40: A4 - A23 */
+		.a40_high_off = 160, .a40_low_off = 16, .n_a40 = 20, .first_a40 = 4,
+		/* u32: A0 - A3 */
+		.a_off = 16, .n_a = 4,
+		.b_off = 192, .n_b = 8,
+		.c_off = 224, .n_c = 8, .oa_type = OAG, },
+
+	/* Treat MPEC countes as A counters for now */
+	[I915_OAM_FORMAT_MPEC8u64_B8_C8] = {
+		"MPEC8u64_B8_C8", .size = 192,
+		.a64_off = 32, .n_a64 = 8,
+		.b_off = 96, .n_b = 8,
+		.c_off = 128, .n_c = 8, .oa_type = OAM,
+		.report_hdr_64bit = true, },
+	[I915_OAM_FORMAT_MPEC8u32_B8_C8] = {
+		"MPEC8u32_B8_C8", .size = 128,
+		.a_off = 32, .n_a = 8,
+		.b_off = 64, .n_b = 8,
+		.c_off = 96, .n_c = 8, .oa_type = OAM,
+		.report_hdr_64bit = true, },
+};
+
 static bool hsw_undefined_a_counters[45] = {
 	[4] = true,
 	[6] = true,
@@ -273,8 +307,10 @@ get_oa_format(enum drm_i915_oa_format format)
 {
 	if (IS_HASWELL(devid))
 		return hsw_oa_formats[format];
-	else if (IS_DG2(devid) || IS_METEORLAKE(devid))
+	else if (IS_DG2(devid))
 		return dg2_oa_formats[format];
+	else if (IS_METEORLAKE(devid))
+		return mtl_oa_formats[format];
 	else if (IS_GEN12(devid))
 		return gen12_oa_formats[format];
 	else
@@ -356,21 +392,6 @@ static int i915_perf_revision(int fd)
 	return value;
 }
 
-/*
- * perf_supports_engine is used in the for loop that iterates over engines and
- * determines if perf test can be run on a particular engine. For perf revisions
- * below 10, we only need to run the test once, so we return true only for rcs0.
- * Note that the test itself ignores the class instance parameters if they are
- * not supported by the perf interface. This enables us to use a single for-loop
- * construct to run the same test on all platforms and all perf revisions.
- */
-static bool
-perf_supports_engine(const struct intel_execution_engine2 *e)
-{
-	return e->class == I915_ENGINE_CLASS_RENDER &&
-	       e->instance == 0;
-}
-
 static bool
 has_param_class_instance(void)
 {
@@ -674,8 +695,12 @@ oar_unit_default_format(void)
 }
 
 static int
-oa_unit_default_format(void)
+oa_unit_default_format(const struct intel_execution_engine2 *e)
 {
+	if (e->class == I915_ENGINE_CLASS_VIDEO ||
+	    e->class == I915_ENGINE_CLASS_VIDEO_ENHANCE)
+		return I915_OAM_FORMAT_MPEC8u32_B8_C8;
+
 	return test_set->perf_oa_format;
 }
 
@@ -1752,6 +1777,20 @@ print_report(uint32_t *report, int fmt)
 }
 #endif
 
+static bool
+oa_unit_supports_engine(int oa_unit, const struct intel_execution_engine2 *e)
+{
+	switch (oa_unit) {
+	case OAM:
+		return e->class == I915_ENGINE_CLASS_VIDEO ||
+		       e->class == I915_ENGINE_CLASS_VIDEO_ENHANCE;
+	case OAG:
+		return e->class == I915_ENGINE_CLASS_RENDER;
+	}
+
+	return false;
+}
+
 static void
 test_oa_formats(const struct intel_execution_engine2 *e)
 {
@@ -1763,7 +1802,7 @@ test_oa_formats(const struct intel_execution_engine2 *e)
 		if (!format.name) /* sparse, indexed by ID */
 			continue;
 
-		if (format.oa_type != OAG) /* sparse, indexed by ID */
+		if (!oa_unit_supports_engine(format.oa_type, e))
 			continue;
 
 		igt_debug("Checking OA format %s\n", format.name);
@@ -1922,7 +1961,7 @@ static bool expected_report_timing_delta(uint32_t delta, uint32_t expected_delta
 static void
 test_oa_exponents(const struct intel_execution_engine2 *e)
 {
-	uint64_t fmt = oa_unit_default_format();
+	uint64_t fmt = oa_unit_default_format(e);
 
 	load_helper_init();
 	load_helper_run(HIGH);
@@ -2264,7 +2303,7 @@ test_blocking(uint64_t requested_oa_period,
 
 	ADD_PROPS(props, idx, SAMPLE_OA, true);
 	ADD_PROPS(props, idx, OA_METRICS_SET, test_set->perf_oa_metrics_set);
-	ADD_PROPS(props, idx, OA_FORMAT, oa_unit_default_format());
+	ADD_PROPS(props, idx, OA_FORMAT, oa_unit_default_format(e));
 	ADD_PROPS(props, idx, OA_EXPONENT, oa_exponent);
 
 	if (has_param_poll_period() && set_kernel_hrtimer)
@@ -2427,7 +2466,7 @@ test_polling(uint64_t requested_oa_period,
 
 	ADD_PROPS(props, idx, SAMPLE_OA, true);
 	ADD_PROPS(props, idx, OA_METRICS_SET, test_set->perf_oa_metrics_set);
-	ADD_PROPS(props, idx, OA_FORMAT, oa_unit_default_format());
+	ADD_PROPS(props, idx, OA_FORMAT, oa_unit_default_format(e));
 	ADD_PROPS(props, idx, OA_EXPONENT, oa_exponent);
 
 	if (has_param_poll_period() && set_kernel_hrtimer)
@@ -2701,7 +2740,7 @@ gen12_test_oa_tlb_invalidate(const struct intel_execution_engine2 *e)
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, oa_unit_default_format(),
+		DRM_I915_PERF_PROP_OA_FORMAT, oa_unit_default_format(e),
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
 		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
 		DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
@@ -2744,7 +2783,7 @@ test_buffer_fill(const struct intel_execution_engine2 *e)
 	/* ~5 micro second period */
 	int oa_exponent = max_oa_exponent_for_period_lte(5000);
 	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
-	uint64_t fmt = oa_unit_default_format();
+	uint64_t fmt = oa_unit_default_format(e);
 	uint64_t properties[] = {
 		/* Include OA reports in samples */
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
@@ -2980,7 +3019,7 @@ test_enable_disable(const struct intel_execution_engine2 *e)
 	/* ~5 micro second period */
 	int oa_exponent = max_oa_exponent_for_period_lte(5000);
 	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
-	uint64_t fmt = oa_unit_default_format();
+	uint64_t fmt = oa_unit_default_format(e);
 	uint64_t properties[] = {
 		/* Include OA reports in samples */
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
@@ -4575,7 +4614,7 @@ test_stress_open_close(const struct intel_execution_engine2 *e)
 
 			/* OA unit configuration */
 			DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-			DRM_I915_PERF_PROP_OA_FORMAT, oa_unit_default_format(),
+			DRM_I915_PERF_PROP_OA_FORMAT, oa_unit_default_format(e),
 			DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
 			DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
 			DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
@@ -4678,7 +4717,7 @@ test_global_sseu_config_invalid(const struct intel_execution_engine2 *e)
 
 		/* OA unit configuration */
 		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, oa_unit_default_format(),
+		DRM_I915_PERF_PROP_OA_FORMAT, oa_unit_default_format(e),
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
 		DRM_I915_PERF_PROP_GLOBAL_SSEU, to_user_pointer(&sseu_param),
 		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
@@ -4767,7 +4806,7 @@ test_global_sseu_config(const struct intel_execution_engine2 *e)
 
 		/* OA unit configuration */
 		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, oa_unit_default_format(),
+		DRM_I915_PERF_PROP_OA_FORMAT, oa_unit_default_format(e),
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
 		DRM_I915_PERF_PROP_GLOBAL_SSEU, to_user_pointer(&sseu_param),
 		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
@@ -5304,10 +5343,27 @@ test_sysctl_defaults(void)
 	igt_assert_eq(max_freq, 100000);
 }
 
-#define __for_each_perf_enabled_engine(fd__, e__) \
-	for_each_physical_engine(fd__, e__) \
-		if (perf_supports_engine(e__)) \
-			igt_dynamic_f("%s", e__->name)
+static struct intel_execution_engine2 *
+__ci_to_e2(const intel_ctx_t *ctx, struct i915_engine_class_instance *ci)
+{
+	static struct intel_execution_engine2 e2;
+	struct intel_execution_engine2 *e;
+
+	for_each_ctx_engine(drm_fd, ctx, e) {
+		if (e->class == ci->engine_class && e->instance == ci->engine_instance) {
+			e2 = *e;
+			break;
+		}
+	}
+
+	return &e2;
+}
+
+#define __for_random_engine_in_each_group(groups_, ctx_, e_) \
+	for (int i_ = 0; \
+	     i_ < num_perf_oa_groups && !!(e_ = __ci_to_e2(ctx_, random_engine(&groups_[i_]))); \
+	     i_++) \
+		igt_dynamic_f("%d-%s", i_, e_->name)
 
 #define __for_each_render_engine(fd__, e__) \
 	for_each_physical_engine(fd__, e__) \
@@ -5682,7 +5738,7 @@ igt_main
 		test_missing_sample_flags();
 
 	igt_subtest_with_dynamic("oa-formats")
-		__for_each_perf_enabled_engine(drm_fd, e)
+		__for_random_engine_in_each_group(perf_oa_groups, ctx, e)
 			test_oa_formats(e);
 
 	igt_subtest("invalid-oa-exponent")
@@ -5690,7 +5746,7 @@ igt_main
 	igt_subtest("low-oa-exponent-permissions")
 		test_low_oa_exponent_permissions();
 	igt_subtest_with_dynamic("oa-exponents")
-		__for_each_perf_enabled_engine(drm_fd, e)
+		__for_random_engine_in_each_group(perf_oa_groups, ctx, e)
 			test_oa_exponents(e);
 
 	igt_subtest("per-context-mode-unprivileged") {
@@ -5699,7 +5755,7 @@ igt_main
 	}
 
 	igt_subtest_with_dynamic("buffer-fill")
-		__for_each_perf_enabled_engine(drm_fd, e)
+		__for_random_engine_in_each_group(perf_oa_groups, ctx, e)
 			test_buffer_fill(e);
 
 	igt_describe("Test that reason field in OA reports is never 0 on Gen8+");
@@ -5715,12 +5771,12 @@ igt_main
 		test_non_sampling_read_error();
 
 	igt_subtest_with_dynamic("enable-disable")
-		__for_each_perf_enabled_engine(drm_fd, e)
+		__for_random_engine_in_each_group(perf_oa_groups, ctx, e)
 			test_enable_disable(e);
 
 	igt_describe("Test blocking read with default hrtimer frequency");
 	igt_subtest_with_dynamic("blocking") {
-		__for_each_perf_enabled_engine(drm_fd, e)
+		__for_random_engine_in_each_group(perf_oa_groups, ctx, e)
 			test_blocking(40 * 1000 * 1000 /* 40ms oa period */,
 				      false /* set_kernel_hrtimer */,
 				      5 * 1000 * 1000 /* default 5ms/200Hz hrtimer */,
@@ -5748,7 +5804,7 @@ igt_main
 
 	igt_describe("Test polled read with default hrtimer frequency");
 	igt_subtest_with_dynamic("polling") {
-		__for_each_perf_enabled_engine(drm_fd, e)
+		__for_random_engine_in_each_group(perf_oa_groups, ctx, e)
 			test_polling(40 * 1000 * 1000 /* 40ms oa period */,
 				     false /* set_kernel_hrtimer */,
 				     5 * 1000 * 1000 /* default 5ms/200Hz hrtimer */,
@@ -5818,7 +5874,7 @@ igt_main
 
 		igt_describe("Test OA TLB invalidate");
 		igt_subtest_with_dynamic("gen12-oa-tlb-invalidate")
-			__for_each_perf_enabled_engine(drm_fd, e)
+			__for_random_engine_in_each_group(perf_oa_groups, ctx, e)
 				gen12_test_oa_tlb_invalidate(e);
 
 		igt_describe("Measure performance for a specific context using OAR in Gen 12");
@@ -5855,7 +5911,7 @@ igt_main
 
 	igt_describe("Stress tests opening & closing the i915-perf stream in a busy loop");
 	igt_subtest_with_dynamic("stress-open-close")
-		__for_each_perf_enabled_engine(drm_fd, e)
+		__for_random_engine_in_each_group(perf_oa_groups, ctx, e)
 			test_stress_open_close(e);
 
 	igt_subtest_group {
@@ -5866,12 +5922,12 @@ igt_main
 
 		igt_describe("Verify invalid SSEU opening parameters");
 		igt_subtest_with_dynamic("global-sseu-config-invalid")
-			__for_each_perf_enabled_engine(drm_fd, e)
+			__for_random_engine_in_each_group(perf_oa_groups, ctx, e)
 				test_global_sseu_config_invalid(e);
 
 		igt_describe("Verify specifying SSEU opening parameters");
 		igt_subtest_with_dynamic("global-sseu-config")
-			__for_each_perf_enabled_engine(drm_fd, e)
+			__for_random_engine_in_each_group(perf_oa_groups, ctx, e)
 				test_global_sseu_config(e);
 	}
 
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 15/30] lib/perf: Make chipsets aware of oa formats
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (13 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 14/30] i915/perf: Add OAM support Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 16/30] i915/perf: Choose OAM format for media metrics Umesh Nerlige Ramappa
                   ` (18 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Make chipsets aware of oa formats to allow addition of different formats
per chipset.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 lib/i915/perf-configs/mdapi-xml-convert.py | 98 +++++++++++++---------
 1 file changed, 58 insertions(+), 40 deletions(-)

diff --git a/lib/i915/perf-configs/mdapi-xml-convert.py b/lib/i915/perf-configs/mdapi-xml-convert.py
index b20b104d..5c784643 100755
--- a/lib/i915/perf-configs/mdapi-xml-convert.py
+++ b/lib/i915/perf-configs/mdapi-xml-convert.py
@@ -133,24 +133,39 @@ xehpsdv_chipset_params = {
     }
 }
 
+# There is no ReportType field in most Metrics XML files, Use 256B_GENERIC_NOA16
+# to denote the generic 256 byte format that is used by most chipsets
+hsw_chipset_oa_formats = {
+    '256B_GENERIC_NOA16': hsw_chipset_params,
+}
+
+gen8_11_chipset_oa_formats = {
+    '256B_GENERIC_NOA16': gen8_11_chipset_params,
+}
+
+xehpsdv_chipset_oa_formats = {
+    '256B_GENERIC_NOA16': xehpsdv_chipset_params,
+}
+
+
 chipsets = {
-    'HSW': hsw_chipset_params,
-    'BDW': gen8_11_chipset_params,
-    'CHV': gen8_11_chipset_params,
-    'SKL': gen8_11_chipset_params,
-    'BXT': gen8_11_chipset_params,
-    'KBL': gen8_11_chipset_params,
-    'GLK': gen8_11_chipset_params,
-    'CFL': gen8_11_chipset_params,
-    'CNL': gen8_11_chipset_params,
-    'ICL': gen8_11_chipset_params,
-    'EHL': gen8_11_chipset_params,
-    'TGL': gen8_11_chipset_params,
-    'RKL': gen8_11_chipset_params,
-    'DG1': gen8_11_chipset_params,
-    'ADL': gen8_11_chipset_params,
-    'ACM': xehpsdv_chipset_params,
-    'MTL': xehpsdv_chipset_params,
+    'HSW': hsw_chipset_oa_formats,
+    'BDW': gen8_11_chipset_oa_formats,
+    'CHV': gen8_11_chipset_oa_formats,
+    'SKL': gen8_11_chipset_oa_formats,
+    'BXT': gen8_11_chipset_oa_formats,
+    'KBL': gen8_11_chipset_oa_formats,
+    'GLK': gen8_11_chipset_oa_formats,
+    'CFL': gen8_11_chipset_oa_formats,
+    'CNL': gen8_11_chipset_oa_formats,
+    'ICL': gen8_11_chipset_oa_formats,
+    'EHL': gen8_11_chipset_oa_formats,
+    'TGL': gen8_11_chipset_oa_formats,
+    'RKL': gen8_11_chipset_oa_formats,
+    'DG1': gen8_11_chipset_oa_formats,
+    'ADL': gen8_11_chipset_oa_formats,
+    'ACM': xehpsdv_chipset_oa_formats,
+    'MTL': xehpsdv_chipset_oa_formats,
 }
 
 xehp_plus = ( 'ACM', 'MTL' )
@@ -180,14 +195,14 @@ def underscore(name):
 def print_err(*args):
     sys.stderr.write(' '.join(map(str,args)) + '\n')
 
-def read_value(chipset, offset):
-    if offset in chipsets[chipset]['register_offsets']:
-        return chipsets[chipset]['register_offsets'][offset]
+def read_value(chipset, offset, oa_format):
+    if offset in chipsets[chipset][oa_format]['register_offsets']:
+        return chipsets[chipset][oa_format]['register_offsets'][offset]
     print_err("Unknown offset register at offset {0}".format(offset))
     assert 0
 
 
-def read_token_to_rpn_read(chipset, token, raw_offsets):
+def read_token_to_rpn_read(chipset, token, raw_offsets, oa_format):
     width, offset_str = token.split('@')
 
     # For Broadwell the raw read notation was extended for 40 bit
@@ -200,10 +215,10 @@ def read_token_to_rpn_read(chipset, token, raw_offsets):
 
     if raw_offsets:
         # Location in the HW reports
-        a_offset = chipsets[chipset]['a_offset']
-        b_offset = chipsets[chipset]['b_offset']
-        c_offset = chipsets[chipset]['c_offset']
-        report_size = chipsets[chipset]['oa_report_size']
+        a_offset = chipsets[chipset][oa_format]['a_offset']
+        b_offset = chipsets[chipset][oa_format]['b_offset']
+        c_offset = chipsets[chipset][oa_format]['c_offset']
+        report_size = chipsets[chipset][oa_format]['oa_report_size']
 
         if offset < a_offset:
             if offset == 4:
@@ -228,7 +243,7 @@ def read_token_to_rpn_read(chipset, token, raw_offsets):
         elif offset < report_size:
             return "C " + str(int((offset - c_offset) / 4)) + " READ"
         else:
-            return "{0} READ".format(read_value(chipset, offset))
+            return "{0} READ".format(read_value(chipset, offset, oa_format))
     else:
         # Location in the accumulated deltas
         idx = int(offset / 8)
@@ -245,7 +260,7 @@ def read_token_to_rpn_read(chipset, token, raw_offsets):
             elif idx < 62:
                 return "C " + str(idx - 54) + " READ"
             else:
-                return "{0} READ".format(read_value(chipset, offset))
+                return "{0} READ".format(read_value(chipset, offset, oa_format))
         elif chipset in xehp_plus:
             # For XEHPSDV the array of accumulated counters is
             # assumed to start with a GPU_TIME then GPU_CLOCK,
@@ -262,7 +277,7 @@ def read_token_to_rpn_read(chipset, token, raw_offsets):
             elif idx < 56:
                 return "C " + str(idx - 48) + " READ"
             else:
-                return "{0} READ".format(read_value(chipset, offset))
+                return "{0} READ".format(read_value(chipset, offset, oa_format))
         else:
             # For Gen8+ the array of accumulated counters is
             # assumed to start with a GPU_TIME then GPU_CLOCK,
@@ -279,11 +294,11 @@ def read_token_to_rpn_read(chipset, token, raw_offsets):
             elif idx < 54:
                 return "C " + str(idx - 46) + " READ"
             else:
-                return "{0} READ".format(read_value(chipset, offset))
+                return "{0} READ".format(read_value(chipset, offset, oa_format))
 
     assert 0
 
-def replace_read_tokens_with_rpn_read_ops(chipset, equation, raw_offsets):
+def replace_read_tokens_with_rpn_read_ops(chipset, oa_format, equation, raw_offsets):
     # MDAPI MetricSet equations use tokens like 'dw@0xff' for reading raw
     # values from snapshots, but this doesn't seem convenient for a few
     # reasons:
@@ -307,7 +322,7 @@ def replace_read_tokens_with_rpn_read_ops(chipset, equation, raw_offsets):
 
     for token in tokens:
         if '@' in token:
-            read_exp = read_token_to_rpn_read(chipset, token, raw_offsets)
+            read_exp = read_token_to_rpn_read(chipset, token, raw_offsets, oa_format)
             equation = equation + " " + read_exp
         else:
             equation = equation + " " + token
@@ -425,14 +440,14 @@ def fixup_equation(equation):
 # double check that there's never any variations between repeated
 # configs
 #
-def filter_single_config_registers_of_type(mdapi_metric_set, type):
+def filter_single_config_registers_of_type(mdapi_metric_set, type, oa_format):
     regs = []
     for mdapi_reg_config in mdapi_metric_set.findall("RegConfigStart"):
         tmp_regs = []
         for mdapi_reg in mdapi_reg_config.findall("Register"):
             reg = (int(mdapi_reg.get('offset'),16), int(mdapi_reg.get('value'),16))
 
-            if reg[0] in chipsets[chipset]['config_reg_blacklist']:
+            if reg[0] in chipsets[chipset][oa_format]['config_reg_blacklist']:
                 continue
 
             if mdapi_reg.get('type') == type:
@@ -472,7 +487,7 @@ def get_mux_id_group(id_groups, id):
 
 
 
-def process_mux_configs(mdapi_set):
+def process_mux_configs(mdapi_set, oa_format):
     allow_missing_id = True
 
     mux_config_id_groups = []
@@ -483,7 +498,7 @@ def process_mux_configs(mdapi_set):
         for mdapi_reg in mdapi_reg_config.findall("Register"):
             address = int(mdapi_reg.get('offset'), 16)
 
-            if address in chipsets[chipset]['config_reg_blacklist']:
+            if address in chipsets[chipset][oa_format]['config_reg_blacklist']:
                 continue
 
             reg_type = mdapi_reg.get('type')
@@ -613,6 +628,7 @@ for arg in args.xml:
         if "OGL" not in apis and "OCL" not in apis and "MEDIA" not in apis:
             continue
 
+        oa_format = '256B_GENERIC_NOA16'
         set_symbol_name = oa_registry.Registry.sanitize_symbol_name(mdapi_set.get('SymbolName'))
 
         if set_symbol_name in sets:
@@ -668,7 +684,7 @@ for arg in args.xml:
         # to deal with. (At least we got the handling of the Broadwell
         # ComputeExtended example wrong and it took several email exchanges and
         # a conference call to confirm how to interpret this case)
-        mux_configs = process_mux_configs(mdapi_set)
+        mux_configs = process_mux_configs(mdapi_set, oa_format)
 
         # Unlike for MUX registers, we only expect one set of FLEX/OA
         # registers per metric set (even though they are sometimes duplicated
@@ -680,8 +696,8 @@ for arg in args.xml:
         # need some adapting to support multiple OA/FLEX configs with different
         # availability expressions)
         #
-        flex_regs = filter_single_config_registers_of_type(mdapi_set, "FLEX")
-        oa_regs = filter_single_config_registers_of_type(mdapi_set, "OA")
+        flex_regs = filter_single_config_registers_of_type(mdapi_set, "FLEX", oa_format)
+        oa_regs = filter_single_config_registers_of_type(mdapi_set, "OA", oa_format)
 
 
         # Note: we ignore Perfmon registers
@@ -877,6 +893,7 @@ for arg in args.xml:
                     raw_read_eq = None
                 else:
                     raw_read_eq = replace_read_tokens_with_rpn_read_ops(chipset,
+                                                                        oa_format,
                                                                         raw_read_eq,
                                                                         True) #raw offsets
 
@@ -886,6 +903,7 @@ for arg in args.xml:
                     delta_read_eq = None
                 else:
                     delta_read_eq = replace_read_tokens_with_rpn_read_ops(chipset,
+                                                                          oa_format,
                                                                           delta_read_eq,
                                                                           False) #delta offsets
 
@@ -1070,8 +1088,8 @@ for set in metrics.findall(".//set"):
         for reg in config.findall("register"):
             addr = int(reg.get('address'), 16)
 
-            if 'registers' in chipsets[chipset] and addr in chipsets[chipset]['registers']:
-                reg_info = chipsets[chipset]['registers'][addr]
+            if 'registers' in chipsets[chipset][oa_format] and addr in chipsets[chipset][oa_format]['registers']:
+                reg_info = chipsets[chipset][oa_format]['registers'][addr]
                 comment = ' <!--' + reg_info['name'] + ' -->'
             else:
                 comment = ''
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 16/30] i915/perf: Choose OAM format for media metrics
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (14 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 15/30] lib/perf: Make chipsets aware of oa formats Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 17/30] lib/perf" Set missing metric unit for some counters Umesh Nerlige Ramappa
                   ` (17 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

If the metric set has OAM format defined, update the generated metrics
accordingly.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 lib/i915/perf-configs/codegen.py              |  4 +++
 lib/i915/perf-configs/mdapi-xml-convert.py    |  1 +
 .../perf-configs/perf-metricset-codegen.py    | 36 ++++++++++++-------
 3 files changed, 29 insertions(+), 12 deletions(-)

diff --git a/lib/i915/perf-configs/codegen.py b/lib/i915/perf-configs/codegen.py
index 755142cc..020e76ef 100644
--- a/lib/i915/perf-configs/codegen.py
+++ b/lib/i915/perf-configs/codegen.py
@@ -117,6 +117,10 @@ class Set:
     def underscore_name(self):
         return self.xml.get('underscore_name')
 
+    @property
+    def oa_format(self):
+        return self.xml.get('oa_format')
+
     def findall(self, path):
         return self.xml.findall(path)
 
diff --git a/lib/i915/perf-configs/mdapi-xml-convert.py b/lib/i915/perf-configs/mdapi-xml-convert.py
index 5c784643..3b7d0663 100755
--- a/lib/i915/perf-configs/mdapi-xml-convert.py
+++ b/lib/i915/perf-configs/mdapi-xml-convert.py
@@ -659,6 +659,7 @@ for arg in args.xml:
         set.set('symbol_name', set_symbol_name)
         set.set('underscore_name', underscore(mdapi_set.get('SymbolName')))
         set.set('mdapi_supported_apis', strip_dx_apis(mdapi_set.get('SupportedAPI')))
+        set.set('oa_format', oa_format)
 
 
         # Look at the hardware register config before looking at the counters.
diff --git a/lib/i915/perf-configs/perf-metricset-codegen.py b/lib/i915/perf-configs/perf-metricset-codegen.py
index 08351309..8b2c5d7b 100644
--- a/lib/i915/perf-configs/perf-metricset-codegen.py
+++ b/lib/i915/perf-configs/perf-metricset-codegen.py
@@ -128,18 +128,30 @@ def generate_metric_sets(args, gen):
 
             """))
         elif gen.chipset.startswith("acm") or gen.chipset.startswith("mtl"):
-            c(textwrap.dedent("""\
-                metric_set->perf_oa_format = I915_OA_FORMAT_A24u40_A14u32_B8_C8;
-
-                metric_set->perf_raw_size = 256;
-                metric_set->gpu_time_offset = 0;
-                metric_set->gpu_clock_offset = 1;
-                metric_set->a_offset = 2;
-                metric_set->b_offset = metric_set->a_offset + 38;
-                metric_set->c_offset = metric_set->b_offset + 8;
-                metric_set->perfcnt_offset = metric_set->c_offset + 8;
-
-            """))
+            if set.oa_format == "128B_MPEC8_NOA16":
+                c(textwrap.dedent("""\
+                    metric_set->perf_oa_format = I915_OAM_FORMAT_MPEC8u32_B8_C8;
+
+                    metric_set->perf_raw_size = 128;
+                    metric_set->gpu_time_offset = 0;
+                    metric_set->gpu_clock_offset = 1;
+                    metric_set->a_offset = 2;
+                    metric_set->b_offset = metric_set->a_offset + 8;
+                    metric_set->c_offset = metric_set->b_offset + 8;
+                    metric_set->perfcnt_offset = metric_set->c_offset + 8;
+                """))
+            else:
+                c(textwrap.dedent("""\
+                    metric_set->perf_oa_format = I915_OA_FORMAT_A24u40_A14u32_B8_C8;
+
+                    metric_set->perf_raw_size = 256;
+                    metric_set->gpu_time_offset = 0;
+                    metric_set->gpu_clock_offset = 1;
+                    metric_set->a_offset = 2;
+                    metric_set->b_offset = metric_set->a_offset + 38;
+                    metric_set->c_offset = metric_set->b_offset + 8;
+                    metric_set->perfcnt_offset = metric_set->c_offset + 8;
+                """))
         else:
             c(textwrap.dedent("""\
                 metric_set->perf_oa_format = I915_OA_FORMAT_A32u40_A4u32_B8_C8;
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 17/30] lib/perf" Set missing metric unit for some counters
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (15 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 16/30] i915/perf: Choose OAM format for media metrics Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 18/30] lib/perf: Add MTL to supprted HW in oa guid registry Umesh Nerlige Ramappa
                   ` (16 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Some counters do not have units specified, so use 'number' as the unit.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 lib/i915/perf-configs/mdapi-xml-convert.py | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/lib/i915/perf-configs/mdapi-xml-convert.py b/lib/i915/perf-configs/mdapi-xml-convert.py
index 3b7d0663..eee12ad5 100755
--- a/lib/i915/perf-configs/mdapi-xml-convert.py
+++ b/lib/i915/perf-configs/mdapi-xml-convert.py
@@ -819,9 +819,14 @@ for arg in args.xml:
             # XXX Not sure why EU metrics tend to just be bundled under 'gpu'
             counter.set('mdapi_hw_unit_type', mdapi_counter.get('HWUnitType').lower())
 
+            # Some counters do not have MetricUnits, treat them as number.
+            if mdapi_counter.get('MetricUnits') == None:
+                units = "number"
+            else:
+                units = mdapi_counter.get('MetricUnits').lower()
+
             # There are counters representing cycle counts that have a semantic
             # type of 'duration' which doesn't seem to make sense...
-            units = mdapi_counter.get('MetricUnits').lower()
             if units == "cycles":
                 semantic_type = "event"
             else:
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 18/30] lib/perf: Add MTL to supprted HW in oa guid registry
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (16 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 17/30] lib/perf" Set missing metric unit for some counters Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 19/30] lib/perf: Add support for OAM format in codegen Umesh Nerlige Ramappa
                   ` (15 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Add MTL to supprted HW in oa guid registry

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 lib/i915/perf-configs/oa_guid_registry.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/i915/perf-configs/oa_guid_registry.py b/lib/i915/perf-configs/oa_guid_registry.py
index 50076e95..f520f817 100644
--- a/lib/i915/perf-configs/oa_guid_registry.py
+++ b/lib/i915/perf-configs/oa_guid_registry.py
@@ -100,7 +100,8 @@ class Registry:
                            'RKL',
                            'DG1',
                            'ACM',
-                           'PVC' )
+                           'PVC',
+                           'MTL', )
         if name in known_chipsets:
             return name
 
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 19/30] lib/perf: Add support for OAM format in codegen
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (17 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 18/30] lib/perf: Add MTL to supprted HW in oa guid registry Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 20/30] lib/perf: Update MTL GT2 metrics for OAM Umesh Nerlige Ramappa
                   ` (14 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Include OAM samedia format for MTL.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 lib/i915/perf-configs/mdapi-xml-convert.py | 118 +++++++++++++++++++--
 1 file changed, 112 insertions(+), 6 deletions(-)

diff --git a/lib/i915/perf-configs/mdapi-xml-convert.py b/lib/i915/perf-configs/mdapi-xml-convert.py
index eee12ad5..ba0b7ba4 100755
--- a/lib/i915/perf-configs/mdapi-xml-convert.py
+++ b/lib/i915/perf-configs/mdapi-xml-convert.py
@@ -135,6 +135,36 @@ xehpsdv_chipset_params = {
 
 # There is no ReportType field in most Metrics XML files, Use 256B_GENERIC_NOA16
 # to denote the generic 256 byte format that is used by most chipsets
+# Just treat the MPEC counter names as A counters here. If a format has both A
+# and MPEC counters, then we need to change this.
+mtl_chipset_oam_samedia_ll_params = {
+    'a_offset': 32,
+    'b_offset': 96,
+    'c_offset': 128,
+    'oa_report_size': 192,
+    'config_reg_blacklist': {
+        0x2364, # OACTXID
+    },
+    'register_offsets': {
+        0x1b0: 'PERFCNT 0',
+        0x1b8: 'PERFCNT 1',
+    }
+}
+
+mtl_chipset_oam_samedia_params = {
+    'a_offset': 32,
+    'b_offset': 64,
+    'c_offset': 96,
+    'oa_report_size': 128,
+    'config_reg_blacklist': {
+        0x2364, # OACTXID
+    },
+    'register_offsets': {
+        0x1b0: 'PERFCNT 0',
+        0x1b8: 'PERFCNT 1',
+    }
+}
+
 hsw_chipset_oa_formats = {
     '256B_GENERIC_NOA16': hsw_chipset_params,
 }
@@ -147,6 +177,11 @@ xehpsdv_chipset_oa_formats = {
     '256B_GENERIC_NOA16': xehpsdv_chipset_params,
 }
 
+mtl_chipset_oa_formats = {
+    '256B_GENERIC_NOA16': xehpsdv_chipset_params,
+    '192B_MPEC8LL_NOA16': mtl_chipset_oam_samedia_ll_params,
+    '128B_MPEC8_NOA16': mtl_chipset_oam_samedia_params,
+}
 
 chipsets = {
     'HSW': hsw_chipset_oa_formats,
@@ -165,7 +200,7 @@ chipsets = {
     'DG1': gen8_11_chipset_oa_formats,
     'ADL': gen8_11_chipset_oa_formats,
     'ACM': xehpsdv_chipset_oa_formats,
-    'MTL': xehpsdv_chipset_oa_formats,
+    'MTL': mtl_chipset_oa_formats,
 }
 
 xehp_plus = ( 'ACM', 'MTL' )
@@ -202,7 +237,62 @@ def read_value(chipset, offset, oa_format):
     assert 0
 
 
-def read_token_to_rpn_read(chipset, token, raw_offsets, oa_format):
+def read_token_to_rpn_read_oam(chipset, token, raw_offsets, oa_format):
+    width, offset_str = token.split('@')
+    offset = int(offset_str, 16)
+
+    if width == 'qw':
+        den = 8
+    else:
+        den = 4
+
+    if raw_offsets:
+        # Location in the HW reports
+        a_offset = chipsets[chipset][oa_format]['a_offset']
+        b_offset = chipsets[chipset][oa_format]['b_offset']
+        c_offset = chipsets[chipset][oa_format]['c_offset']
+        report_size = chipsets[chipset][oa_format]['oa_report_size']
+
+        if offset < a_offset:
+            if offset == 8:
+                return "GPU_TIME 0 READ"
+            elif offset == 24:
+                return "GPU_CLOCK 0 READ"
+            else:
+                assert 0
+        elif offset < b_offset:
+            a_cnt_offset = int((offset - a_offset) / den)
+            return "A " + str(a_cnt_offset) + " READ"
+        elif offset < c_offset:
+            return "B " + str(int((offset - b_offset) / den)) + " READ"
+        elif offset < report_size:
+            return "C " + str(int((offset - c_offset) / den)) + " READ"
+        else:
+            return "{0} READ".format(read_value(chipset, offset, oa_format))
+    else:
+        # Location in the accumulated deltas
+        idx = int(offset / 8)
+        if chipset in xehp_plus:
+            # For XEHPSDV the array of accumulated counters is
+            # assumed to start with a GPU_TIME then GPU_CLOCK,
+            # then 38 A counters, then 8 B counters and finally
+            # 8 C counters.
+            if idx == 0:
+                return "GPU_TIME 0 READ"
+            elif idx == 1:
+                return "GPU_CLOCK 0 READ"
+            elif idx < 40:
+                return "A " + str(idx - 2) + " READ"
+            elif idx < 48:
+                return "B " + str(idx - 40) + " READ"
+            elif idx < 56:
+                return "C " + str(idx - 48) + " READ"
+            else:
+                return "{0} READ".format(read_value(chipset, offset, oa_format))
+
+    assert 0
+
+def read_token_to_rpn_read_oag(chipset, token, raw_offsets, oa_format):
     width, offset_str = token.split('@')
 
     # For Broadwell the raw read notation was extended for 40 bit
@@ -298,6 +388,16 @@ def read_token_to_rpn_read(chipset, token, raw_offsets, oa_format):
 
     assert 0
 
+
+def read_token_to_rpn_read(chipset, token, raw_offsets, oa_format):
+    if oa_format == '256B_GENERIC_NOA16':
+        return read_token_to_rpn_read_oag(chipset, token, raw_offsets, oa_format)
+
+    if oa_format in ['192B_MPEC8LL_NOA16', '128B_MPEC8_NOA16']:
+        return read_token_to_rpn_read_oam(chipset, token, raw_offsets, oa_format)
+
+    assert 0
+
 def replace_read_tokens_with_rpn_read_ops(chipset, oa_format, equation, raw_offsets):
     # MDAPI MetricSet equations use tokens like 'dw@0xff' for reading raw
     # values from snapshots, but this doesn't seem convenient for a few
@@ -625,10 +725,13 @@ for arg in args.xml:
     for mdapi_set in mdapi.findall(".//MetricSet"):
 
         apis = mdapi_set.get('SupportedAPI')
-        if "OGL" not in apis and "OCL" not in apis and "MEDIA" not in apis:
+        if "OGL" not in apis and "OCL" not in apis and "MEDIA" not in apis and "IO" not in apis:
             continue
 
         oa_format = '256B_GENERIC_NOA16'
+        if mdapi_set.get('ReportType') in chipsets[chipset]:
+            oa_format = mdapi_set.get('ReportType')
+
         set_symbol_name = oa_registry.Registry.sanitize_symbol_name(mdapi_set.get('SymbolName'))
 
         if set_symbol_name in sets:
@@ -647,7 +750,7 @@ for arg in args.xml:
         if set_symbol_name in set_blacklist:
             continue
 
-        if mdapi_set.get('SnapshotReportSize') != '256':
+        if mdapi_set.get('SnapshotReportSize') != str(chipsets[chipset][oa_format]['oa_report_size']):
             print_err("WARNING: skipping metric set '{0}', report size {1} invalid".format(set_symbol_name, mdapi_set.get('SnapshotReportSize')))
             continue
 
@@ -880,8 +983,11 @@ for arg in args.xml:
             # XXX: As a special case, we override the raw and delta report
             # equations for the GpuTime counters, which seem inconsistent
             if mdapi_counter.get('SymbolName') == "GpuTime":
-                mdapi_counter.set('SnapshotReportReadEquation', "dw@0x04 1000000000 UMUL $GpuTimestampFrequency UDIV")
                 mdapi_counter.set('DeltaReportReadEquation', "qw@0x0 1000000000 UMUL $GpuTimestampFrequency UDIV")
+                if chipset == 'MTL' and oa_format != '256B_GENERIC_NOA16':
+                    mdapi_counter.set('SnapshotReportReadEquation', "qw@0x08 1000000000 UMUL $GpuTimestampFrequency UDIV")
+                else:
+                    mdapi_counter.set('SnapshotReportReadEquation', "dw@0x04 1000000000 UMUL $GpuTimestampFrequency UDIV")
 
             availability = fixup_equation(mdapi_counter.get('AvailabilityEquation'))
             if availability == "":
@@ -919,7 +1025,7 @@ for arg in args.xml:
                           "(" + mdapi_counter.get('ShortName') + ")" + "\"")
                 # Media metric counters currently have no delta equation even
                 # though they have normalization equations that reference $Self
-                if "MEDIA" in apis:
+                if "MEDIA" in apis or "IO" in apis:
                     print_err("WARNING: -> Treating inconsistent media metric's 'raw' equation as a 'delta report' equation, but results should be double checked!")
                     delta_read_eq = raw_read_eq
                 else:
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 20/30] lib/perf: Update MTL GT2 metrics for OAM
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (18 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 19/30] lib/perf: Add support for OAM format in codegen Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 21/30] lib/perf: Update MTL GT3 " Umesh Nerlige Ramappa
                   ` (13 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Add OAM metrics configurations and update MTL GT2 metrics.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 lib/i915/perf-configs/guids.xml     |   13 +-
 lib/i915/perf-configs/oa-mtlgt2.xml | 1014 ++++++++++++++++++++++++---
 2 files changed, 919 insertions(+), 108 deletions(-)

diff --git a/lib/i915/perf-configs/guids.xml b/lib/i915/perf-configs/guids.xml
index cc0dc916..0b96aa91 100644
--- a/lib/i915/perf-configs/guids.xml
+++ b/lib/i915/perf-configs/guids.xml
@@ -2357,7 +2357,7 @@
     <guid config_hash="321ffd18a528dd67798e8a8476f632fe" mdapi_config_hash="7984537ffe8ca547d3583a56edf26bbd" id="fc82db3d-d6a7-413a-8349-b31f02251d2f" chipset="mtlgt2" name="Ext1" />
     <guid config_hash="28f18aeeb865c4bf1d8d82d77f571085" mdapi_config_hash="bba07ef452c6a67f0a8ff04fa9b4d93d" id="3479a81d-9017-4930-af0c-14f7fabadb38" chipset="mtlgt2" name="Ext4" />
     <guid config_hash="0955d0036c6b2b4afe94cb4d8115c577" mdapi_config_hash="38688d5ff152f82f150d9c569caf2351" id="e4701256-cd06-48f7-a005-d4d1f9e895c1" chipset="mtlgt2" name="Ext5" />
-    <guid config_hash="d93bc60082d0b69a8f0d430732d63f94" mdapi_config_hash="dc7a66d4de8f704f44b50c10b9dff1de" id="3e47d0e8-5414-4496-8746-37e36fefc777" chipset="mtlgt2" name="Ext7" />
+    <guid config_hash="dcdb3b48b18515e0a0f7d2179c89bda6" mdapi_config_hash="a4f1512b26ca4c3ed1d8d818cfedcd65" id="3e47d0e8-5414-4496-8746-37e36fefc777" chipset="mtlgt2" name="Ext7" />
     <guid config_hash="3de00cb5cc6f1598d624b9d4c2d072cf" mdapi_config_hash="0237dfeb5d300cab42cc36a64552ebe7" id="5aa36c1f-c6da-45ab-ab21-397d9a4b6a06" chipset="mtlgt2" name="Ext8" />
     <guid config_hash="f66aff20b452fc6746f6f345aa996b63" mdapi_config_hash="14b2a444cc752fd4946c11906f5a7486" id="1df59d79-16d8-471c-b3da-f0f62862f89e" chipset="mtlgt2" name="Ext10" />
     <guid config_hash="f27eef4bd1b25e14f598ff04fe69a511" mdapi_config_hash="1f4b2bf31f456235f289cf7eba5039c2" id="d05d3d84-ba16-41b5-b825-5a3d2aaabbfc" chipset="mtlgt2" name="Ext11" />
@@ -2463,10 +2463,10 @@
     <guid config_hash="a68a66449827d355064d3db9473b4df5" mdapi_config_hash="129fbcf33c8f25a6c15935e5aeaef3b4" id="8e09a7a1-b0e8-464a-a28d-90250f64ec9e" chipset="mtlgt2" name="Ext501" />
     <guid config_hash="b66b6fe10d453212eb1bd501ae6a29bd" mdapi_config_hash="17c05f7a6933e3fcf7669b142bb55705" id="57a19b6a-1b7d-4337-a9c9-710c56c46f84" chipset="mtlgt2" name="Ext502" />
     <guid config_hash="610d0cdc34fe0442b0c8e6277703f21a" mdapi_config_hash="32ce7dfe4ea7f5e79c69cc04d41d3f01" id="394b21ab-311c-47a5-9b10-88159f5ac999" chipset="mtlgt2" name="Ext503" />
-    <guid config_hash="92ba0e22539647cf0eb2bc7f10cd4cf8" mdapi_config_hash="41e11d55b96e18999fad3efe5f8bf16a" id="143440a0-d7e2-4f41-8372-8fdca1ecc2a8" chipset="mtlgt2" name="Ext508" />
-    <guid config_hash="e36ab792e7756ea6ea71e387c873dfdd" mdapi_config_hash="18af689ecd1d15e707c0192ea02f5824" id="7c5d3f41-b690-44b2-8352-00215ac94bae" chipset="mtlgt2" name="Ext509" />
-    <guid config_hash="25febf37102198080c0e680e94beaced" mdapi_config_hash="bb8ff9dfe34ad6197c7540e7ddee356b" id="02f43996-feff-4e13-a8fd-eea9de2f13fc" chipset="mtlgt2" name="Ext510" />
-    <guid config_hash="29bcf55f5b34e961768cd5cbbd828532" mdapi_config_hash="670a9e1fd79cd9610418c85d13df3436" id="2cbd327c-40e2-452b-a9fc-c7787869a352" chipset="mtlgt2" name="Ext511" />
+    <guid config_hash="3c81d715dab552c96a708e5561cddf32" mdapi_config_hash="2ef3813b66f81eda0cb04dbe437234d8" id="143440a0-d7e2-4f41-8372-8fdca1ecc2a8" chipset="mtlgt2" name="Ext508" />
+    <guid config_hash="15984b5fb58b51a666ece004db6ae774" mdapi_config_hash="26232e447ea7dcf0c3a97e4353250a53" id="7c5d3f41-b690-44b2-8352-00215ac94bae" chipset="mtlgt2" name="Ext509" />
+    <guid config_hash="d44c98ea5ef5bff89e9ceb275d0da118" mdapi_config_hash="a8071d6fc9bd3959731ab78598f80294" id="02f43996-feff-4e13-a8fd-eea9de2f13fc" chipset="mtlgt2" name="Ext510" />
+    <guid config_hash="df750e7700406492d3bcd261c4af73e6" mdapi_config_hash="c2e0e09a27bb2ad5f80b0766ab56b37b" id="2cbd327c-40e2-452b-a9fc-c7787869a352" chipset="mtlgt2" name="Ext511" />
     <guid config_hash="6d9b68c2c4b89d9a952160fe503ac6a6" mdapi_config_hash="4508de639c858687559dd85a870d624f" id="3a9dba68-9402-48b0-a8ec-28e4e4a534de" chipset="mtlgt2" name="Ext516" />
     <guid config_hash="039124a8e61c2e323aace525da916ab0" mdapi_config_hash="ac8b6cf6d21ba83fe04789064b2caa97" id="ea503506-9afa-42dc-b85b-1237dce6e8af" chipset="mtlgt2" name="Ext517" />
     <guid config_hash="589d2f86e9b14cf16b9c8c33e473d1e4" mdapi_config_hash="1184ac825d3d0cba18e7ca501e515fc9" id="5056524c-12e3-4ba6-8788-eb934f284753" chipset="mtlgt2" name="Ext518" />
@@ -2740,4 +2740,7 @@
     <guid config_hash="e7efe91c7aeb591043358c1b5e3c019d" mdapi_config_hash="94ecec147a25de742814fbb01fd4e9c3" id="f739508f-51b2-48df-839c-e92c14d14c64" chipset="mtlgt3" name="Ext1006" />
     <guid config_hash="a96fb9e9d0949e6cc372ef445fded872" mdapi_config_hash="7fb3e6405e4b54b8566589aa79cd960e" id="926b1773-807e-4ee5-8561-30c9eb0a6344" chipset="mtlgt3" name="Ext1007" />
     <guid config_hash="310dddcb04d1088a3865f698d758cbc2" mdapi_config_hash="c6a3be7d49b5697074021ca673a39a57" id="82f69b49-772a-4169-bf9a-b1ef08e0823b" chipset="mtlgt3" name="Ext1010" />
+    <guid config_hash="482cebdeeb78bb56e67b42d24644c8db" mdapi_config_hash="11e33e01a371bf15e59b9786f4fe1050" id="de84260e-32ac-4863-ba4f-998a685174a2" chipset="mtlgt2" name="MediaSet1" />
+    <guid config_hash="5bfab887a79b99cf34a606dcca5f4f8a" mdapi_config_hash="1c238e39e5c73eefd870cef2fb7a18af" id="b9d5c6d5-39f2-4069-b343-e7a886353b89" chipset="mtlgt2" name="MediaSet2" />
+    <guid config_hash="44bcb438bea8b46b57779739bebfbd69" mdapi_config_hash="fbbd97d1f3b60c17eae57bbd3c42e7fe" id="a1700053-56bc-4b7e-87b9-e29b07a08f62" chipset="mtlgt2" name="TestOam" />
 </guids>
diff --git a/lib/i915/perf-configs/oa-mtlgt2.xml b/lib/i915/perf-configs/oa-mtlgt2.xml
index 0155145b..33ba70d0 100644
--- a/lib/i915/perf-configs/oa-mtlgt2.xml
+++ b/lib/i915/perf-configs/oa-mtlgt2.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0"?>
-<metrics version="1669276337" merge_md5="">
+<metrics version="1675300099" merge_md5="">
   <set name="Render Metrics Basic"
        chipset="MTLGT2"
        symbol_name="RenderBasic"
        underscore_name="render_basic"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="232e858b-7116-44e8-a4be-856c59026650"
        >
     <counter name="GPU Time Elapsed"
@@ -565,6 +566,7 @@
        symbol_name="ComputeBasic"
        underscore_name="compute_basic"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="fea2b2b7-a072-41c5-9092-2d7c48bb56c6"
        >
     <counter name="GPU Time Elapsed"
@@ -1118,6 +1120,7 @@
        symbol_name="AsyncCompute"
        underscore_name="async_compute"
        mdapi_supported_apis="OGL OCL MEDIA IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="011e5c80-c877-46fd-90ff-fd0bb29cb5ec"
        >
     <counter name="GPU Time Elapsed"
@@ -1460,6 +1463,7 @@
        symbol_name="XveActivity"
        underscore_name="xve_activity"
        mdapi_supported_apis="OGL OGL4 OCL MEDIA IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="5f430543-ba1e-487c-b217-90570cfb85f9"
        >
     <counter name="GPU Time Elapsed"
@@ -1758,6 +1762,7 @@
        symbol_name="GpuBusyness"
        underscore_name="gpu_busyness"
        mdapi_supported_apis="VK OGL OCL MEDIA IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="3cb64fed-0f61-4e41-a754-b9c5b4892f77"
        >
     <counter name="GPU Time Elapsed"
@@ -2017,6 +2022,7 @@
        symbol_name="HDCAndSF"
        underscore_name="hdc_and_sf"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="27d6eda4-aabc-4203-8848-aef69658ae74"
        >
     <counter name="GPU Time Elapsed"
@@ -2298,6 +2304,7 @@
        symbol_name="L3"
        underscore_name="l3"
        mdapi_supported_apis="VK OGL OCL MEDIA IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="50b898ad-44ae-4d02-ba5b-a7d2a024a480"
        >
     <counter name="GPU Time Elapsed"
@@ -2537,6 +2544,7 @@
        symbol_name="RasterizerAndPixelBackend1"
        underscore_name="rasterizer_and_pixel_backend1"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="29adb364-f161-40cb-929d-c14036447c4f"
        >
     <counter name="GPU Time Elapsed"
@@ -2729,6 +2737,7 @@
        symbol_name="RasterizerAndPixelBackend2"
        underscore_name="rasterizer_and_pixel_backend2"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="787c682f-68be-4a64-b998-77d8a30b4ea6"
        >
     <counter name="GPU Time Elapsed"
@@ -2927,6 +2936,7 @@
        symbol_name="RenderPipeProfile"
        underscore_name="render_pipe_profile"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="1269ddfd-22a6-47ca-9a1a-dc37b8c38490"
        >
     <counter name="GPU Time Elapsed"
@@ -3321,6 +3331,7 @@
        symbol_name="Sampler"
        underscore_name="sampler"
        mdapi_supported_apis="VK OGL OCL MEDIA IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="3c304c3b-9ada-4d92-9b54-34ec4e70aea6"
        >
     <counter name="GPU Time Elapsed"
@@ -3584,6 +3595,7 @@
        symbol_name="TDL1"
        underscore_name="tdl1"
        mdapi_supported_apis="VK OGL OCL MEDIA IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="616fc1b0-53bb-4411-93b0-b34ab2b0bfb8"
        >
     <counter name="GPU Time Elapsed"
@@ -3928,6 +3940,7 @@
        symbol_name="TDL2"
        underscore_name="tdl2"
        mdapi_supported_apis="VK OGL OCL MEDIA IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="952fa513-550e-49bc-a355-22fadbea5455"
        >
     <counter name="GPU Time Elapsed"
@@ -4288,6 +4301,7 @@
        symbol_name="TestOa"
        underscore_name="test_oa"
        mdapi_supported_apis="VK OGL OCL MEDIA IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d0ed8afd-ad64-4774-8788-1a15f4ab7829"
        >
     <counter name="GPU Time Elapsed"
@@ -4512,6 +4526,7 @@
        symbol_name="Ext1"
        underscore_name="ext1"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="fc82db3d-d6a7-413a-8349-b31f02251d2f"
        >
     <counter name="GPU Time Elapsed"
@@ -4820,6 +4835,7 @@
        symbol_name="Ext4"
        underscore_name="ext4"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="3479a81d-9017-4930-af0c-14f7fabadb38"
        >
     <counter name="GPU Time Elapsed"
@@ -5041,6 +5057,7 @@
        symbol_name="Ext5"
        underscore_name="ext5"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="e4701256-cd06-48f7-a005-d4d1f9e895c1"
        >
     <counter name="GPU Time Elapsed"
@@ -5330,6 +5347,7 @@
        symbol_name="Ext7"
        underscore_name="ext7"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="3e47d0e8-5414-4496-8746-37e36fefc777"
        >
     <counter name="GPU Time Elapsed"
@@ -5379,7 +5397,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 7 READ"
+             equation="B 4 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -5393,7 +5411,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 6 READ"
+             equation="B 5 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -5407,7 +5425,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 5 READ"
+             equation="B 6 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -5421,7 +5439,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 4 READ"
+             equation="B 7 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -5435,7 +5453,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 3 READ"
+             equation="C 7 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -5449,7 +5467,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 2 READ"
+             equation="C 6 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -5463,7 +5481,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 1 READ"
+             equation="C 5 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -5477,7 +5495,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 0 READ"
+             equation="C 4 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -5492,7 +5510,7 @@
              max_equation="100"
              units="percent"
              semantic_type="duration"
-             equation="B 7 READ 100 UMUL $GpuCoreClocks FDIV"
+             equation="C 0 READ 100 UMUL $GpuCoreClocks FDIV"
              availability="$GtSlice0XeCore0"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -5507,7 +5525,7 @@
              max_equation="100"
              units="percent"
              semantic_type="duration"
-             equation="B 6 READ 100 UMUL $GpuCoreClocks FDIV"
+             equation="C 1 READ 100 UMUL $GpuCoreClocks FDIV"
              availability="$GtSlice0XeCore1"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -5522,7 +5540,7 @@
              max_equation="100"
              units="percent"
              semantic_type="duration"
-             equation="B 5 READ 100 UMUL $GpuCoreClocks FDIV"
+             equation="C 2 READ 100 UMUL $GpuCoreClocks FDIV"
              availability="$GtSlice0XeCore2"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -5537,7 +5555,7 @@
              max_equation="100"
              units="percent"
              semantic_type="duration"
-             equation="B 4 READ 100 UMUL $GpuCoreClocks FDIV"
+             equation="C 3 READ 100 UMUL $GpuCoreClocks FDIV"
              availability="$GtSlice0XeCore3"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -5548,83 +5566,86 @@
         <register type="NOA" address="0x00000D04" value="0x00000200" />
         <register type="NOA" address="0x00009884" value="0x00000008" />
         <register type="NOA" address="0x00009888" value="0x18030004" />
-        <register type="NOA" address="0x00009888" value="0x00023000" />
-        <register type="NOA" address="0x00009888" value="0x0A030D00" />
+        <register type="NOA" address="0x00009888" value="0x0202000C" />
+        <register type="NOA" address="0x00009888" value="0x0C030034" />
         <register type="NOA" address="0x00009888" value="0x04030000" />
-        <register type="NOA" address="0x00009888" value="0x00030000" />
-        <register type="NOA" address="0x00009888" value="0x00049000" />
-        <register type="NOA" address="0x00009888" value="0x00083000" />
+        <register type="NOA" address="0x00009888" value="0x02030000" />
+        <register type="NOA" address="0x00009888" value="0x02040006" />
+        <register type="NOA" address="0x00009888" value="0x0208000C" />
         <register type="NOA" address="0x00009884" value="0x00000009" />
         <register type="NOA" address="0x00009888" value="0x18030004" />
-        <register type="NOA" address="0x00009888" value="0x0A030034" />
+        <register type="NOA" address="0x00009888" value="0x0C030D00" />
         <register type="NOA" address="0x00009888" value="0x04030000" />
-        <register type="NOA" address="0x00009888" value="0x00030000" />
-        <register type="NOA" address="0x00009888" value="0x00042000" />
+        <register type="NOA" address="0x00009888" value="0x02030000" />
+        <register type="NOA" address="0x00009888" value="0x02040008" />
         <register type="NOA" address="0x00009884" value="0x0000000A" />
         <register type="NOA" address="0x00009888" value="0x18030004" />
-        <register type="NOA" address="0x00009888" value="0x00020300" />
-        <register type="NOA" address="0x00009888" value="0x08030D00" />
+        <register type="NOA" address="0x00009888" value="0x020200C0" />
+        <register type="NOA" address="0x00009888" value="0x0E030034" />
         <register type="NOA" address="0x00009888" value="0x04030000" />
-        <register type="NOA" address="0x00009888" value="0x00030000" />
-        <register type="NOA" address="0x00009888" value="0x00040900" />
-        <register type="NOA" address="0x00009888" value="0x00080300" />
+        <register type="NOA" address="0x00009888" value="0x02030000" />
+        <register type="NOA" address="0x00009888" value="0x02040060" />
+        <register type="NOA" address="0x00009888" value="0x020800C0" />
         <register type="NOA" address="0x00009884" value="0x0000000B" />
         <register type="NOA" address="0x00009888" value="0x18030004" />
-        <register type="NOA" address="0x00009888" value="0x08030034" />
+        <register type="NOA" address="0x00009888" value="0x0E030D00" />
         <register type="NOA" address="0x00009888" value="0x04030000" />
-        <register type="NOA" address="0x00009888" value="0x00030000" />
-        <register type="NOA" address="0x00009888" value="0x00040200" />
+        <register type="NOA" address="0x00009888" value="0x02030000" />
+        <register type="NOA" address="0x00009888" value="0x02040080" />
         <register type="NOA" address="0x00009884" value="0x00000004" />
         <register type="NOA" address="0x00009888" value="0x04010000" />
         <register type="NOA" address="0x00009888" value="0x0C010000" />
         <register type="NOA" address="0x00009888" value="0x04410000" />
         <register type="NOA" address="0x00009888" value="0x0C410000" />
         <register type="NOA" address="0x00009888" value="0x04810000" />
-        <register type="NOA" address="0x00009888" value="0x0C810040" />
+        <register type="NOA" address="0x00009888" value="0x0C810000" />
         <register type="NOA" address="0x00009888" value="0x04C10000" />
-        <register type="NOA" address="0x00009888" value="0x0CC10001" />
-        <register type="NOA" address="0x00009888" value="0x00010004" />
-        <register type="NOA" address="0x00009888" value="0x0E010040" />
-        <register type="NOA" address="0x00009888" value="0x12010380" />
+        <register type="NOA" address="0x00009888" value="0x0CC10000" />
+        <register type="NOA" address="0x00009888" value="0x00010040" />
+        <register type="NOA" address="0x00009888" value="0x08010006" />
+        <register type="NOA" address="0x00009888" value="0x12010200" />
         <register type="NOA" address="0x00009888" value="0x02010000" />
-        <register type="NOA" address="0x00009888" value="0x00410004" />
-        <register type="NOA" address="0x00009888" value="0x0E410001" />
-        <register type="NOA" address="0x00009888" value="0x1241000E" />
+        <register type="NOA" address="0x00009888" value="0x00410040" />
+        <register type="NOA" address="0x00009888" value="0x08410180" />
+        <register type="NOA" address="0x00009888" value="0x12410008" />
         <register type="NOA" address="0x00009888" value="0x02410000" />
-        <register type="NOA" address="0x00009888" value="0x00810004" />
-        <register type="NOA" address="0x00009888" value="0x10810380" />
+        <register type="NOA" address="0x00009888" value="0x00810040" />
+        <register type="NOA" address="0x00009888" value="0x0A810006" />
+        <register type="NOA" address="0x00009888" value="0x10810200" />
         <register type="NOA" address="0x00009888" value="0x02810000" />
-        <register type="NOA" address="0x00009888" value="0x00C10004" />
-        <register type="NOA" address="0x00009888" value="0x10C1000E" />
+        <register type="NOA" address="0x00009888" value="0x00C10040" />
+        <register type="NOA" address="0x00009888" value="0x0AC10180" />
+        <register type="NOA" address="0x00009888" value="0x10C10008" />
         <register type="NOA" address="0x00009888" value="0x02C10000" />
         <register type="NOA" address="0x00009884" value="0x00000000" />
-        <register type="NOA" address="0x00009888" value="0x00124400" />
-        <register type="NOA" address="0x00009888" value="0x00130A00" />
-        <register type="NOA" address="0x00009888" value="0x0213BABA" />
-        <register type="NOA" address="0x00009888" value="0x00140500" />
-        <register type="NOA" address="0x00009888" value="0x02144949" />
-        <register type="NOA" address="0x00009888" value="0x00150500" />
-        <register type="NOA" address="0x00009888" value="0x02158383" />
-        <register type="NOA" address="0x00009888" value="0x00160500" />
-        <register type="NOA" address="0x00009888" value="0x02165555" />
-        <register type="NOA" address="0x00009888" value="0x00170A00" />
-        <register type="NOA" address="0x00009888" value="0x000CFF30" />
-        <register type="NOA" address="0x00009888" value="0x000EFF30" />
-        <register type="NOA" address="0x00009888" value="0x000D0A00" />
-        <register type="NOA" address="0x00009888" value="0x021A2020" />
-        <register type="NOA" address="0x00009888" value="0x001B2200" />
-        <register type="NOA" address="0x00009888" value="0x00060A00" />
-        <register type="NOA" address="0x00009888" value="0x0206AAAA" />
-        <register type="NOA" address="0x00009888" value="0x0001FA00" />
-        <register type="NOA" address="0x00009888" value="0x0201AAAA" />
+        <register type="NOA" address="0x00009888" value="0x00124020" />
+        <register type="NOA" address="0x00009888" value="0x0013AE00" />
+        <register type="NOA" address="0x00009888" value="0x0213BAA0" />
+        <register type="NOA" address="0x00009888" value="0x00146100" />
+        <register type="NOA" address="0x00009888" value="0x02144950" />
+        <register type="NOA" address="0x00009888" value="0x0015C200" />
+        <register type="NOA" address="0x00009888" value="0x02158350" />
+        <register type="NOA" address="0x00009888" value="0x00165500" />
+        <register type="NOA" address="0x00009888" value="0x02165550" />
+        <register type="NOA" address="0x00009888" value="0x021700A0" />
+        <register type="NOA" address="0x00009888" value="0x000CFCF0" />
+        <register type="NOA" address="0x00009888" value="0x000EFCF0" />
+        <register type="NOA" address="0x00009888" value="0x020D00A0" />
+        <register type="NOA" address="0x00009888" value="0x001A0800" />
+        <register type="NOA" address="0x00009888" value="0x021A2000" />
+        <register type="NOA" address="0x00009888" value="0x001B2040" />
+        <register type="NOA" address="0x00009888" value="0x0006AA00" />
+        <register type="NOA" address="0x00009888" value="0x0206AAA0" />
+        <register type="NOA" address="0x00009888" value="0x0001AA00" />
+        <register type="NOA" address="0x00009888" value="0x0201AAAF" />
         <register type="NOA" address="0x00009888" value="0x5A010000" />
-        <register type="NOA" address="0x00009888" value="0x5C010600" />
-        <register type="NOA" address="0x00009888" value="0x5E010290" />
-        <register type="NOA" address="0x00009888" value="0x60010E01" />
+        <register type="NOA" address="0x00009888" value="0x5C010E07" />
+        <register type="NOA" address="0x00009888" value="0x5E010070" />
+        <register type="NOA" address="0x00009888" value="0x60010227" />
         <register type="NOA" address="0x00009888" value="0x06010000" />
-        <register type="NOA" address="0x00009888" value="0x62010070" />
+        <register type="NOA" address="0x00009888" value="0x62010090" />
         <register type="NOA" address="0x00009888" value="0x4E010000" />
-        <register type="NOA" address="0x00009888" value="0x50010E07" />
+        <register type="NOA" address="0x00009888" value="0x50010003" />
         <register type="NOA" address="0x00009888" value="0x52010070" />
         <register type="NOA" address="0x00009888" value="0x54010E07" />
         <register type="NOA" address="0x00009888" value="0x56010070" />
@@ -5648,6 +5669,7 @@
        symbol_name="Ext8"
        underscore_name="ext8"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="5aa36c1f-c6da-45ab-ab21-397d9a4b6a06"
        >
     <counter name="GPU Time Elapsed"
@@ -5867,6 +5889,7 @@
        symbol_name="Ext10"
        underscore_name="ext10"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="1df59d79-16d8-471c-b3da-f0f62862f89e"
        >
     <counter name="GPU Time Elapsed"
@@ -6156,6 +6179,7 @@
        symbol_name="Ext11"
        underscore_name="ext11"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d05d3d84-ba16-41b5-b825-5a3d2aaabbfc"
        >
     <counter name="GPU Time Elapsed"
@@ -6375,6 +6399,7 @@
        symbol_name="Ext12"
        underscore_name="ext12"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="a49e7038-1e78-4b49-bc55-e7e7d04e4074"
        >
     <counter name="GPU Time Elapsed"
@@ -6600,6 +6625,7 @@
        symbol_name="Ext13"
        underscore_name="ext13"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="10f4cba5-2db8-46a9-a211-391dca810ea0"
        >
     <counter name="GPU Time Elapsed"
@@ -6841,6 +6867,7 @@
        symbol_name="Ext14"
        underscore_name="ext14"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="36c1995a-e670-4c2a-ab94-74b9e7360fb2"
        >
     <counter name="GPU Time Elapsed"
@@ -7090,6 +7117,7 @@
        symbol_name="Ext17"
        underscore_name="ext17"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="a04168f6-637e-44af-a1b6-e5f005708df4"
        >
     <counter name="GPU Time Elapsed"
@@ -7200,7 +7228,7 @@
              max_equation="100"
              units="percent"
              semantic_type="duration"
-             equation="B 7 READ B 6 READ FADD 4 FDIV 100 UMUL $GpuCoreClocks FDIV"
+             equation="B 7 READ B 6 READ FADD 2 FDIV 100 UMUL $GpuCoreClocks FDIV"
              availability="$GtSlice0XeCore0"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -7215,7 +7243,7 @@
              max_equation="100"
              units="percent"
              semantic_type="duration"
-             equation="B 5 READ B 4 READ FADD 4 FDIV 100 UMUL $GpuCoreClocks FDIV"
+             equation="B 5 READ B 4 READ FADD 2 FDIV 100 UMUL $GpuCoreClocks FDIV"
              availability="$GtSlice0XeCore1"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -7230,7 +7258,7 @@
              max_equation="100"
              units="percent"
              semantic_type="duration"
-             equation="B 3 READ B 2 READ FADD 4 FDIV 100 UMUL $GpuCoreClocks FDIV"
+             equation="B 3 READ B 2 READ FADD 2 FDIV 100 UMUL $GpuCoreClocks FDIV"
              availability="$GtSlice0XeCore2"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -7245,7 +7273,7 @@
              max_equation="100"
              units="percent"
              semantic_type="duration"
-             equation="B 1 READ B 0 READ FADD 4 FDIV 100 UMUL $GpuCoreClocks FDIV"
+             equation="B 1 READ B 0 READ FADD 2 FDIV 100 UMUL $GpuCoreClocks FDIV"
              availability="$GtSlice0XeCore3"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -7360,6 +7388,7 @@
        symbol_name="Ext21"
        underscore_name="ext21"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="0486a0e0-3522-4689-bdf9-623603f8e3c6"
        >
     <counter name="GPU Time Elapsed"
@@ -7622,6 +7651,7 @@
        symbol_name="Ext23"
        underscore_name="ext23"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="b30ba7fb-fe8f-4e81-b271-3d6f52edc257"
        >
     <counter name="GPU Time Elapsed"
@@ -7821,6 +7851,7 @@
        symbol_name="Ext28"
        underscore_name="ext28"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="053ca218-0961-4bb2-b689-9fe2cb090fdc"
        >
     <counter name="GPU Time Elapsed"
@@ -8083,6 +8114,7 @@
        symbol_name="Ext31"
        underscore_name="ext31"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="7a4a45f1-e844-460b-8800-91b62eb47124"
        >
     <counter name="GPU Time Elapsed"
@@ -8282,6 +8314,7 @@
        symbol_name="Ext35"
        underscore_name="ext35"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="fd99f6f4-d418-4d86-800b-52998df4eb00"
        >
     <counter name="GPU Time Elapsed"
@@ -8481,6 +8514,7 @@
        symbol_name="Ext39"
        underscore_name="ext39"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="10f4436b-83c7-4e38-867d-82144311e412"
        >
     <counter name="GPU Time Elapsed"
@@ -8684,6 +8718,7 @@
        symbol_name="Ext43"
        underscore_name="ext43"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="ab8c937a-a24c-4b7b-94d2-7cdf4cf3829f"
        >
     <counter name="GPU Time Elapsed"
@@ -8858,6 +8893,7 @@
        symbol_name="Ext45"
        underscore_name="ext45"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="aa3ac820-b824-4681-94ff-3425eee63648"
        >
     <counter name="GPU Time Elapsed"
@@ -9048,6 +9084,7 @@
        symbol_name="Ext51"
        underscore_name="ext51"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="3a093546-2929-4b79-87f4-97df02c1fe8e"
        >
     <counter name="GPU Time Elapsed"
@@ -9223,6 +9260,7 @@
        symbol_name="Ext53"
        underscore_name="ext53"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="2ccdac56-9683-4eb5-89fd-7d42e77c117f"
        >
     <counter name="GPU Time Elapsed"
@@ -9422,6 +9460,7 @@
        symbol_name="Ext57"
        underscore_name="ext57"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d297b1e3-fc04-45a7-a5c5-f92ab4357eb2"
        >
     <counter name="GPU Time Elapsed"
@@ -9621,6 +9660,7 @@
        symbol_name="Ext61"
        underscore_name="ext61"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="bc372334-fe31-452e-843a-515328c75fd2"
        >
     <counter name="GPU Time Elapsed"
@@ -9824,6 +9864,7 @@
        symbol_name="Ext65"
        underscore_name="ext65"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="8a5ca732-17d3-4336-a33c-292a7f625237"
        >
     <counter name="GPU Time Elapsed"
@@ -9966,6 +10007,7 @@
        symbol_name="Ext66"
        underscore_name="ext66"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="2e72f570-378b-4672-a615-374c1a3d524c"
        >
     <counter name="GPU Time Elapsed"
@@ -10124,6 +10166,7 @@
        symbol_name="Ext73"
        underscore_name="ext73"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="8f63bf05-fccb-45c2-89c1-cf1226c4fb80"
        >
     <counter name="GPU Time Elapsed"
@@ -10259,6 +10302,7 @@
        symbol_name="Ext74"
        underscore_name="ext74"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="2e5b5a64-580f-4cfc-ac3b-e6ccc55a1260"
        >
     <counter name="GPU Time Elapsed"
@@ -10410,6 +10454,7 @@
        symbol_name="Ext77"
        underscore_name="ext77"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="1e7215b8-72b7-460b-99d1-9be3984e9f6c"
        >
     <counter name="GPU Time Elapsed"
@@ -10599,6 +10644,7 @@
        symbol_name="Ext79"
        underscore_name="ext79"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="a1a1cc95-7466-461d-a3a4-a04818bb5d74"
        >
     <counter name="GPU Time Elapsed"
@@ -10744,6 +10790,7 @@
        symbol_name="Ext80"
        underscore_name="ext80"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="06d62e44-cf58-4e35-a8cf-c76ee2b4fd7f"
        >
     <counter name="GPU Time Elapsed"
@@ -10905,6 +10952,7 @@
        symbol_name="Ext83"
        underscore_name="ext83"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="428a93d8-3475-4efc-960e-3402b062d8f0"
        >
     <counter name="GPU Time Elapsed"
@@ -11138,6 +11186,7 @@
        symbol_name="Ext85"
        underscore_name="ext85"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="e6db7a16-f214-4cd0-91e9-94d8036c20ee"
        >
     <counter name="GPU Time Elapsed"
@@ -11397,6 +11446,7 @@
        symbol_name="Ext87"
        underscore_name="ext87"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="b96d78d7-c0c8-4941-9f28-e746f36627e4"
        >
     <counter name="GPU Time Elapsed"
@@ -11586,6 +11636,7 @@
        symbol_name="Ext91"
        underscore_name="ext91"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="55e5926a-364e-45f0-bbcd-69375ac61391"
        >
     <counter name="GPU Time Elapsed"
@@ -11775,6 +11826,7 @@
        symbol_name="Ext93"
        underscore_name="ext93"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="a06cf71c-ad14-49b8-8a22-b367118514bb"
        >
     <counter name="GPU Time Elapsed"
@@ -11920,6 +11972,7 @@
        symbol_name="Ext94"
        underscore_name="ext94"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="a05152f2-80f2-47cc-add7-70f4664b58e8"
        >
     <counter name="GPU Time Elapsed"
@@ -12081,6 +12134,7 @@
        symbol_name="Ext97"
        underscore_name="ext97"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="39f8d4d2-b28d-40a3-b545-a57865d7714e"
        >
     <counter name="GPU Time Elapsed"
@@ -12249,6 +12303,7 @@
        symbol_name="Ext98"
        underscore_name="ext98"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="ee9377fe-2623-4588-8ffc-517e34c2eb75"
        >
     <counter name="GPU Time Elapsed"
@@ -12436,6 +12491,7 @@
        symbol_name="Ext100"
        underscore_name="ext100"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="b5533650-f6f1-4f66-ad40-6b4aba600102"
        >
     <counter name="GPU Time Elapsed"
@@ -12708,6 +12764,7 @@
        symbol_name="Ext101"
        underscore_name="ext101"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="136839ab-66a3-42ac-bca4-1cfca1d3088e"
        >
     <counter name="GPU Time Elapsed"
@@ -12947,6 +13004,7 @@
        symbol_name="Ext102"
        underscore_name="ext102"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="bd8e9b37-35b3-4a94-8ff7-bbad7d67642c"
        >
     <counter name="GPU Time Elapsed"
@@ -13174,6 +13232,7 @@
        symbol_name="Ext104"
        underscore_name="ext104"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="576a210f-b921-46dc-9af7-7f34eb1d368e"
        >
     <counter name="GPU Time Elapsed"
@@ -13350,6 +13409,7 @@
        symbol_name="Ext105"
        underscore_name="ext105"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="96b32930-859d-4fa8-8d81-4d26a160f0e8"
        >
     <counter name="GPU Time Elapsed"
@@ -13537,6 +13597,7 @@
        symbol_name="Ext106"
        underscore_name="ext106"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="bbe4bf0d-03a3-482a-869c-1c6e71d52dac"
        >
     <counter name="GPU Time Elapsed"
@@ -13706,6 +13767,7 @@
        symbol_name="Ext107"
        underscore_name="ext107"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="02eafe17-886d-4559-b18d-c661fd6914c0"
        >
     <counter name="GPU Time Elapsed"
@@ -13886,6 +13948,7 @@
        symbol_name="Ext113"
        underscore_name="ext113"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="8cb51ae4-6d00-44d5-9d24-29521022f02b"
        >
     <counter name="GPU Time Elapsed"
@@ -14220,6 +14283,7 @@
        symbol_name="Ext116"
        underscore_name="ext116"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="c50c1328-01a4-44a4-bc10-cea109a86100"
        >
     <counter name="GPU Time Elapsed"
@@ -14411,6 +14475,7 @@
        symbol_name="Ext118"
        underscore_name="ext118"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="3ac7b553-9dd8-4588-be88-8a50d4aa8497"
        >
     <counter name="GPU Time Elapsed"
@@ -14656,6 +14721,7 @@
        symbol_name="Ext120"
        underscore_name="ext120"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="39bbba4c-b77d-424a-9156-ede3d325df25"
        >
     <counter name="GPU Time Elapsed"
@@ -14849,6 +14915,7 @@
        symbol_name="Ext122"
        underscore_name="ext122"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="1c2b42f8-2763-4c20-85d9-5a5bd7381eb8"
        >
     <counter name="GPU Time Elapsed"
@@ -15089,6 +15156,7 @@
        symbol_name="Ext123"
        underscore_name="ext123"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="80240cbe-83d5-44dd-a03a-c498a6928be5"
        >
     <counter name="GPU Time Elapsed"
@@ -15274,6 +15342,7 @@
        symbol_name="Ext124"
        underscore_name="ext124"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="f8d36c8e-4129-4962-afce-7917f98e9b2d"
        >
     <counter name="GPU Time Elapsed"
@@ -15515,6 +15584,7 @@
        symbol_name="Ext126"
        underscore_name="ext126"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="08670eec-8015-4c40-b900-d47b9824ec83"
        >
     <counter name="GPU Time Elapsed"
@@ -15734,6 +15804,7 @@
        symbol_name="Ext128"
        underscore_name="ext128"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="7d149ad7-90bd-4201-8791-2e8c1c4359e8"
        >
     <counter name="GPU Time Elapsed"
@@ -15882,6 +15953,7 @@
        symbol_name="Ext130"
        underscore_name="ext130"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="52597b67-dea9-411c-845e-c7f7befa744e"
        >
     <counter name="GPU Time Elapsed"
@@ -16003,6 +16075,7 @@
        symbol_name="Ext131"
        underscore_name="ext131"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="56b5eb77-117c-4392-a4ed-6a809598c28f"
        >
     <counter name="GPU Time Elapsed"
@@ -16136,6 +16209,7 @@
        symbol_name="Ext134"
        underscore_name="ext134"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d4f5b1c3-553d-46f6-abb8-8535ee5e4c90"
        >
     <counter name="GPU Time Elapsed"
@@ -16241,6 +16315,7 @@
        symbol_name="Ext135"
        underscore_name="ext135"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="2aa7d46b-8b53-4693-9e5b-1245dc85cb90"
        >
     <counter name="GPU Time Elapsed"
@@ -16358,6 +16433,7 @@
        symbol_name="Ext138"
        underscore_name="ext138"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="18d95a38-b79c-42ac-a1c1-f6f3ef5ee213"
        >
     <counter name="GPU Time Elapsed"
@@ -16463,6 +16539,7 @@
        symbol_name="Ext139"
        underscore_name="ext139"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="7869d90b-8a61-40c5-b705-91ce55b64cd8"
        >
     <counter name="GPU Time Elapsed"
@@ -16580,6 +16657,7 @@
        symbol_name="Ext142"
        underscore_name="ext142"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="c9f005ff-957d-471f-b6d3-98ebfd423f88"
        >
     <counter name="GPU Time Elapsed"
@@ -16685,6 +16763,7 @@
        symbol_name="Ext143"
        underscore_name="ext143"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="bf8f687e-d93f-439a-904e-14758015b273"
        >
     <counter name="GPU Time Elapsed"
@@ -16802,6 +16881,7 @@
        symbol_name="Ext146"
        underscore_name="ext146"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="38cb3c8a-b6b1-46e9-b18e-331afd4faad6"
        >
     <counter name="GPU Time Elapsed"
@@ -16907,6 +16987,7 @@
        symbol_name="Ext147"
        underscore_name="ext147"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="f0624b43-b429-4be9-9cef-1a9c966b9bf5"
        >
     <counter name="GPU Time Elapsed"
@@ -17024,6 +17105,7 @@
        symbol_name="Ext150"
        underscore_name="ext150"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="9be51bc5-540f-4a51-80b9-a6e8f849107c"
        >
     <counter name="GPU Time Elapsed"
@@ -17127,6 +17209,7 @@
        symbol_name="Ext151"
        underscore_name="ext151"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="5303f1e7-b41b-4f48-a638-02293743f84d"
        >
     <counter name="GPU Time Elapsed"
@@ -17242,6 +17325,7 @@
        symbol_name="Ext154"
        underscore_name="ext154"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="269bfd75-1e50-4717-959c-f72de6c5e37e"
        >
     <counter name="GPU Time Elapsed"
@@ -17427,6 +17511,7 @@
        symbol_name="Ext155"
        underscore_name="ext155"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="77c2e8f4-297f-46ed-95a9-370e21e131c6"
        >
     <counter name="GPU Time Elapsed"
@@ -17563,6 +17648,7 @@
        symbol_name="Ext156"
        underscore_name="ext156"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="dea81dd8-3792-4245-9ce3-4591a6ff2d31"
        >
     <counter name="GPU Time Elapsed"
@@ -17698,6 +17784,7 @@
        symbol_name="Ext158"
        underscore_name="ext158"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="0f6dfbfe-33f8-4910-996a-8b639c57066f"
        >
     <counter name="GPU Time Elapsed"
@@ -17873,6 +17960,7 @@
        symbol_name="Ext159"
        underscore_name="ext159"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="7b4a0c8f-f35d-49e2-b1a7-243740c4d888"
        >
     <counter name="GPU Time Elapsed"
@@ -18076,6 +18164,7 @@
        symbol_name="Ext161"
        underscore_name="ext161"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="bf4c98bf-1930-408b-87ad-2674e6e617c0"
        >
     <counter name="GPU Time Elapsed"
@@ -18279,6 +18368,7 @@
        symbol_name="Ext163"
        underscore_name="ext163"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="2826204b-5835-4b64-840f-133d1ca5b03a"
        >
     <counter name="GPU Time Elapsed"
@@ -18482,6 +18572,7 @@
        symbol_name="Ext165"
        underscore_name="ext165"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="b9e7193e-99b9-4e9f-9738-de7144ea3b39"
        >
     <counter name="GPU Time Elapsed"
@@ -18685,6 +18776,7 @@
        symbol_name="Ext167"
        underscore_name="ext167"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="4797cea4-4618-42c1-aa36-0f8210b42a47"
        >
     <counter name="GPU Time Elapsed"
@@ -18888,6 +18980,7 @@
        symbol_name="Ext169"
        underscore_name="ext169"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="daeb4a53-f0ba-4bec-9462-8025cc17ca8b"
        >
     <counter name="GPU Time Elapsed"
@@ -19091,6 +19184,7 @@
        symbol_name="Ext171"
        underscore_name="ext171"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="2aeaff8e-ce08-49f1-aacf-c9631dc3c756"
        >
     <counter name="GPU Time Elapsed"
@@ -19474,6 +19568,7 @@
        symbol_name="Ext173"
        underscore_name="ext173"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="5005db3a-31a9-498c-8153-bf47147473b1"
        >
     <counter name="GPU Time Elapsed"
@@ -19675,6 +19770,7 @@
        symbol_name="Ext174"
        underscore_name="ext174"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="3e2a351c-3f4f-461a-a6cf-64f099b83fc5"
        >
     <counter name="GPU Time Elapsed"
@@ -19883,6 +19979,7 @@
        symbol_name="Ext175"
        underscore_name="ext175"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="14c17f9b-021b-41e5-a4f0-ab8daaad56a4"
        >
     <counter name="GPU Time Elapsed"
@@ -20100,6 +20197,7 @@
        symbol_name="Ext176"
        underscore_name="ext176"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="a258d429-a165-4fed-bbcb-c743a09dd68f"
        >
     <counter name="GPU Time Elapsed"
@@ -20324,6 +20422,7 @@
        symbol_name="Ext177"
        underscore_name="ext177"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="986b3512-df42-4300-a3fb-3a0d5835b5dc"
        >
     <counter name="GPU Time Elapsed"
@@ -20546,6 +20645,7 @@
        symbol_name="Ext181"
        underscore_name="ext181"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="29b4890b-203f-44d7-a007-270354d414ed"
        >
     <counter name="GPU Time Elapsed"
@@ -20715,6 +20815,7 @@
        symbol_name="Ext184"
        underscore_name="ext184"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="87ec0ca0-a406-4ddb-9fb9-60beed37e12a"
        >
     <counter name="GPU Time Elapsed"
@@ -20914,6 +21015,7 @@
        symbol_name="Ext188"
        underscore_name="ext188"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="11c77c80-498e-4cad-9e2d-565a52fd3578"
        >
     <counter name="GPU Time Elapsed"
@@ -21113,6 +21215,7 @@
        symbol_name="Ext190"
        underscore_name="ext190"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="123714d3-5d52-49de-91eb-0c909557d221"
        >
     <counter name="GPU Time Elapsed"
@@ -21272,6 +21375,7 @@
        symbol_name="Ext192"
        underscore_name="ext192"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d2741830-1ee3-42ab-b578-2b9c31a69c1c"
        >
     <counter name="GPU Time Elapsed"
@@ -21546,6 +21650,7 @@
        symbol_name="Ext195"
        underscore_name="ext195"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d41508b5-921c-4033-a2f0-8a88aad4e718"
        >
     <counter name="GPU Time Elapsed"
@@ -21827,6 +21932,7 @@
        symbol_name="Ext200"
        underscore_name="ext200"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="73a53c50-0922-4d77-87d9-13b18d368e4e"
        >
     <counter name="GPU Time Elapsed"
@@ -22022,6 +22128,7 @@
        symbol_name="Ext201"
        underscore_name="ext201"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="32b9a4f4-b1f0-478f-8998-d86e5c5c458f"
        >
     <counter name="GPU Time Elapsed"
@@ -22221,6 +22328,7 @@
        symbol_name="Ext202"
        underscore_name="ext202"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="e1606d82-b67b-4fd8-9b07-a769dd6e6581"
        >
     <counter name="GPU Time Elapsed"
@@ -22322,6 +22430,7 @@
        symbol_name="Ext203"
        underscore_name="ext203"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="16647b5e-c9e4-4201-afc2-cb47a9f3f4d2"
        >
     <counter name="GPU Time Elapsed"
@@ -22423,6 +22532,7 @@
        symbol_name="Ext204"
        underscore_name="ext204"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="639a17e1-f339-49ab-9884-6b9a91a5a0c8"
        >
     <counter name="GPU Time Elapsed"
@@ -22622,6 +22732,7 @@
        symbol_name="Ext205"
        underscore_name="ext205"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="7420acf6-1809-41e3-b5d1-49455c60aa66"
        >
     <counter name="GPU Time Elapsed"
@@ -22821,6 +22932,7 @@
        symbol_name="Ext212"
        underscore_name="ext212"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="015d134a-1b6e-4969-b972-b904c1d0cc85"
        >
     <counter name="GPU Time Elapsed"
@@ -22998,6 +23110,7 @@
        symbol_name="Ext214"
        underscore_name="ext214"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="191eb41b-6180-4cf9-b3fb-048bf4da8b94"
        >
     <counter name="GPU Time Elapsed"
@@ -23191,6 +23304,7 @@
        symbol_name="Ext220"
        underscore_name="ext220"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="840ad20c-c8ba-4dd5-bc42-674987d6ec79"
        >
     <counter name="GPU Time Elapsed"
@@ -23366,6 +23480,7 @@
        symbol_name="Ext225"
        underscore_name="ext225"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="a8bfddc1-d469-45d6-8790-7d8c649ada41"
        >
     <counter name="GPU Time Elapsed"
@@ -23496,6 +23611,7 @@
        symbol_name="Ext227"
        underscore_name="ext227"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="325e5e9b-a055-4c22-8997-98d546a31afe"
        >
     <counter name="GPU Time Elapsed"
@@ -23626,6 +23742,7 @@
        symbol_name="Ext229"
        underscore_name="ext229"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="94537bb4-60fd-45fe-b172-29ed90c9abac"
        >
     <counter name="GPU Time Elapsed"
@@ -23759,6 +23876,7 @@
        symbol_name="Ext231"
        underscore_name="ext231"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="7fceb68b-57e6-480d-81d1-991d8d6f7c4d"
        >
     <counter name="GPU Time Elapsed"
@@ -23908,6 +24026,7 @@
        symbol_name="Ext237"
        underscore_name="ext237"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="ad62dc60-987b-415e-9f7d-6976fbe82dac"
        >
     <counter name="GPU Time Elapsed"
@@ -24061,6 +24180,7 @@
        symbol_name="Ext238"
        underscore_name="ext238"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="e630dd77-cf9e-4deb-8f52-57506b306b63"
        >
     <counter name="GPU Time Elapsed"
@@ -24248,6 +24368,7 @@
        symbol_name="Ext239"
        underscore_name="ext239"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="6dfee12d-6bfc-434a-8873-bc076a47d80b"
        >
     <counter name="GPU Time Elapsed"
@@ -24361,6 +24482,7 @@
        symbol_name="Ext240"
        underscore_name="ext240"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="5edd0480-7a46-49f7-8709-7f737d0cc42a"
        >
     <counter name="GPU Time Elapsed"
@@ -24474,6 +24596,7 @@
        symbol_name="Ext500"
        underscore_name="ext500"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="a7cd6b7e-e8ee-4853-b2d3-269bf3ed73c7"
        >
     <counter name="GPU Time Elapsed"
@@ -24724,6 +24847,7 @@
        symbol_name="Ext501"
        underscore_name="ext501"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="8e09a7a1-b0e8-464a-a28d-90250f64ec9e"
        >
     <counter name="GPU Time Elapsed"
@@ -24974,6 +25098,7 @@
        symbol_name="Ext502"
        underscore_name="ext502"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="57a19b6a-1b7d-4337-a9c9-710c56c46f84"
        >
     <counter name="GPU Time Elapsed"
@@ -25224,6 +25349,7 @@
        symbol_name="Ext503"
        underscore_name="ext503"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="394b21ab-311c-47a5-9b10-88159f5ac999"
        >
     <counter name="GPU Time Elapsed"
@@ -25474,6 +25600,7 @@
        symbol_name="Ext508"
        underscore_name="ext508"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="143440a0-d7e2-4f41-8372-8fdca1ecc2a8"
        >
     <counter name="GPU Time Elapsed"
@@ -25553,10 +25680,10 @@
         <register type="NOA" address="0x00009888" value="0x00045550" />
         <register type="NOA" address="0x00009888" value="0x02045555" />
         <register type="NOA" address="0x00009888" value="0x04080010" />
-        <register type="NOA" address="0x00009888" value="0x10080180" />
-        <register type="NOA" address="0x00009888" value="0x12080105" />
-        <register type="NOA" address="0x00009888" value="0x14080083" />
-        <register type="NOA" address="0x00009888" value="0x160803C1" />
+        <register type="NOA" address="0x00009888" value="0x10080140" />
+        <register type="NOA" address="0x00009888" value="0x120800C4" />
+        <register type="NOA" address="0x00009888" value="0x14080042" />
+        <register type="NOA" address="0x00009888" value="0x160803C0" />
         <register type="NOA" address="0x00009888" value="0x08080000" />
         <register type="NOA" address="0x00009888" value="0x0008FFF0" />
         <register type="NOA" address="0x00009888" value="0x02080003" />
@@ -25567,9 +25694,9 @@
         <register type="NOA" address="0x00009888" value="0x00045550" />
         <register type="NOA" address="0x00009888" value="0x02040001" />
         <register type="NOA" address="0x00009888" value="0x04080010" />
-        <register type="NOA" address="0x00009888" value="0x0A080146" />
-        <register type="NOA" address="0x00009888" value="0x0C0800C4" />
-        <register type="NOA" address="0x00009888" value="0x0E080042" />
+        <register type="NOA" address="0x00009888" value="0x0A080105" />
+        <register type="NOA" address="0x00009888" value="0x0C080083" />
+        <register type="NOA" address="0x00009888" value="0x0E080001" />
         <register type="NOA" address="0x00009888" value="0x1008000F" />
         <register type="NOA" address="0x00009888" value="0x08080000" />
         <register type="NOA" address="0x00009888" value="0x00080000" />
@@ -25609,6 +25736,7 @@
        symbol_name="Ext509"
        underscore_name="ext509"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="7c5d3f41-b690-44b2-8352-00215ac94bae"
        >
     <counter name="GPU Time Elapsed"
@@ -25683,29 +25811,31 @@
         <register type="NOA" address="0x00000D04" value="0x00000200" />
         <register type="NOA" address="0x00009884" value="0x00000008" />
         <register type="NOA" address="0x00009888" value="0x1C085400" />
+        <register type="NOA" address="0x00009888" value="0x1E080014" />
         <register type="NOA" address="0x00009888" value="0x0002FFF0" />
         <register type="NOA" address="0x00009888" value="0x0202FFFF" />
         <register type="NOA" address="0x00009888" value="0x00045550" />
         <register type="NOA" address="0x00009888" value="0x02045555" />
-        <register type="NOA" address="0x00009888" value="0x04080008" />
-        <register type="NOA" address="0x00009888" value="0x10080180" />
-        <register type="NOA" address="0x00009888" value="0x12080105" />
-        <register type="NOA" address="0x00009888" value="0x14080083" />
-        <register type="NOA" address="0x00009888" value="0x16080001" />
+        <register type="NOA" address="0x00009888" value="0x04080098" />
+        <register type="NOA" address="0x00009888" value="0x10080140" />
+        <register type="NOA" address="0x00009888" value="0x120800C4" />
+        <register type="NOA" address="0x00009888" value="0x14080042" />
+        <register type="NOA" address="0x00009888" value="0x160803C0" />
         <register type="NOA" address="0x00009888" value="0x08080000" />
         <register type="NOA" address="0x00009888" value="0x0008FFF0" />
         <register type="NOA" address="0x00009888" value="0x02080003" />
         <register type="NOA" address="0x00009884" value="0x00000009" />
         <register type="NOA" address="0x00009888" value="0x1C085400" />
+        <register type="NOA" address="0x00009888" value="0x1E080014" />
         <register type="NOA" address="0x00009888" value="0x0002FFF0" />
         <register type="NOA" address="0x00009888" value="0x02020003" />
         <register type="NOA" address="0x00009888" value="0x00045550" />
         <register type="NOA" address="0x00009888" value="0x02040001" />
-        <register type="NOA" address="0x00009888" value="0x04080008" />
-        <register type="NOA" address="0x00009888" value="0x0A080146" />
-        <register type="NOA" address="0x00009888" value="0x0C0800C4" />
-        <register type="NOA" address="0x00009888" value="0x0E080042" />
-        <register type="NOA" address="0x00009888" value="0x10080000" />
+        <register type="NOA" address="0x00009888" value="0x04080098" />
+        <register type="NOA" address="0x00009888" value="0x0A080105" />
+        <register type="NOA" address="0x00009888" value="0x0C080083" />
+        <register type="NOA" address="0x00009888" value="0x0E080001" />
+        <register type="NOA" address="0x00009888" value="0x1008000F" />
         <register type="NOA" address="0x00009888" value="0x08080000" />
         <register type="NOA" address="0x00009888" value="0x00080000" />
         <register type="NOA" address="0x00009888" value="0x02080000" />
@@ -25744,6 +25874,7 @@
        symbol_name="Ext510"
        underscore_name="ext510"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="02f43996-feff-4e13-a8fd-eea9de2f13fc"
        >
     <counter name="GPU Time Elapsed"
@@ -25823,10 +25954,10 @@
         <register type="NOA" address="0x00009888" value="0x00045550" />
         <register type="NOA" address="0x00009888" value="0x02045555" />
         <register type="NOA" address="0x00009888" value="0x04080010" />
-        <register type="NOA" address="0x00009888" value="0x10080180" />
-        <register type="NOA" address="0x00009888" value="0x12080105" />
-        <register type="NOA" address="0x00009888" value="0x14080083" />
-        <register type="NOA" address="0x00009888" value="0x160803C1" />
+        <register type="NOA" address="0x00009888" value="0x10080140" />
+        <register type="NOA" address="0x00009888" value="0x120800C4" />
+        <register type="NOA" address="0x00009888" value="0x14080042" />
+        <register type="NOA" address="0x00009888" value="0x160803C0" />
         <register type="NOA" address="0x00009888" value="0x08080000" />
         <register type="NOA" address="0x00009888" value="0x0008FFF0" />
         <register type="NOA" address="0x00009888" value="0x02080003" />
@@ -25837,9 +25968,9 @@
         <register type="NOA" address="0x00009888" value="0x00045550" />
         <register type="NOA" address="0x00009888" value="0x02040001" />
         <register type="NOA" address="0x00009888" value="0x04080010" />
-        <register type="NOA" address="0x00009888" value="0x0A080146" />
-        <register type="NOA" address="0x00009888" value="0x0C0800C4" />
-        <register type="NOA" address="0x00009888" value="0x0E080042" />
+        <register type="NOA" address="0x00009888" value="0x0A080105" />
+        <register type="NOA" address="0x00009888" value="0x0C080083" />
+        <register type="NOA" address="0x00009888" value="0x0E080001" />
         <register type="NOA" address="0x00009888" value="0x1008000F" />
         <register type="NOA" address="0x00009888" value="0x08080000" />
         <register type="NOA" address="0x00009888" value="0x00080000" />
@@ -25895,6 +26026,7 @@
        symbol_name="Ext511"
        underscore_name="ext511"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="2cbd327c-40e2-452b-a9fc-c7787869a352"
        >
     <counter name="GPU Time Elapsed"
@@ -25969,29 +26101,31 @@
         <register type="NOA" address="0x00000D04" value="0x00000200" />
         <register type="NOA" address="0x00009884" value="0x0000000A" />
         <register type="NOA" address="0x00009888" value="0x1C085400" />
+        <register type="NOA" address="0x00009888" value="0x1E080014" />
         <register type="NOA" address="0x00009888" value="0x0002FFF0" />
         <register type="NOA" address="0x00009888" value="0x0202FFFF" />
         <register type="NOA" address="0x00009888" value="0x00045550" />
         <register type="NOA" address="0x00009888" value="0x02045555" />
-        <register type="NOA" address="0x00009888" value="0x04080008" />
-        <register type="NOA" address="0x00009888" value="0x10080180" />
-        <register type="NOA" address="0x00009888" value="0x12080105" />
-        <register type="NOA" address="0x00009888" value="0x14080083" />
-        <register type="NOA" address="0x00009888" value="0x16080001" />
+        <register type="NOA" address="0x00009888" value="0x04080098" />
+        <register type="NOA" address="0x00009888" value="0x10080140" />
+        <register type="NOA" address="0x00009888" value="0x120800C4" />
+        <register type="NOA" address="0x00009888" value="0x14080042" />
+        <register type="NOA" address="0x00009888" value="0x160803C0" />
         <register type="NOA" address="0x00009888" value="0x08080000" />
         <register type="NOA" address="0x00009888" value="0x0008FFF0" />
         <register type="NOA" address="0x00009888" value="0x02080003" />
         <register type="NOA" address="0x00009884" value="0x0000000B" />
         <register type="NOA" address="0x00009888" value="0x1C085400" />
+        <register type="NOA" address="0x00009888" value="0x1E080014" />
         <register type="NOA" address="0x00009888" value="0x0002FFF0" />
         <register type="NOA" address="0x00009888" value="0x02020003" />
         <register type="NOA" address="0x00009888" value="0x00045550" />
         <register type="NOA" address="0x00009888" value="0x02040001" />
-        <register type="NOA" address="0x00009888" value="0x04080008" />
-        <register type="NOA" address="0x00009888" value="0x0A080146" />
-        <register type="NOA" address="0x00009888" value="0x0C0800C4" />
-        <register type="NOA" address="0x00009888" value="0x0E080042" />
-        <register type="NOA" address="0x00009888" value="0x10080000" />
+        <register type="NOA" address="0x00009888" value="0x04080098" />
+        <register type="NOA" address="0x00009888" value="0x0A080105" />
+        <register type="NOA" address="0x00009888" value="0x0C080083" />
+        <register type="NOA" address="0x00009888" value="0x0E080001" />
+        <register type="NOA" address="0x00009888" value="0x1008000F" />
         <register type="NOA" address="0x00009888" value="0x08080000" />
         <register type="NOA" address="0x00009888" value="0x00080000" />
         <register type="NOA" address="0x00009888" value="0x02080000" />
@@ -26046,6 +26180,7 @@
        symbol_name="Ext516"
        underscore_name="ext516"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="3a9dba68-9402-48b0-a8ec-28e4e4a534de"
        >
     <counter name="GPU Time Elapsed"
@@ -26171,6 +26306,7 @@
        symbol_name="Ext517"
        underscore_name="ext517"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="ea503506-9afa-42dc-b85b-1237dce6e8af"
        >
     <counter name="GPU Time Elapsed"
@@ -26296,6 +26432,7 @@
        symbol_name="Ext518"
        underscore_name="ext518"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="5056524c-12e3-4ba6-8788-eb934f284753"
        >
     <counter name="GPU Time Elapsed"
@@ -26428,6 +26565,7 @@
        symbol_name="Ext519"
        underscore_name="ext519"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="13f8665d-c5aa-47b4-ae3e-af80dd134e1b"
        >
     <counter name="GPU Time Elapsed"
@@ -26560,6 +26698,7 @@
        symbol_name="Ext520"
        underscore_name="ext520"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="4d5b4699-5a6a-4a85-81e1-3ad75d735476"
        >
     <counter name="GPU Time Elapsed"
@@ -26701,6 +26840,7 @@
        symbol_name="Ext521"
        underscore_name="ext521"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="f9cc9e2c-c517-49a1-b27c-f81b08b411fc"
        >
     <counter name="GPU Time Elapsed"
@@ -26842,6 +26982,7 @@
        symbol_name="Ext522"
        underscore_name="ext522"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="f5fe71de-58e0-4fba-a75a-111906d8fb5b"
        >
     <counter name="GPU Time Elapsed"
@@ -26990,6 +27131,7 @@
        symbol_name="Ext523"
        underscore_name="ext523"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="46d82207-1235-45ea-a0e6-f71fa55a3380"
        >
     <counter name="GPU Time Elapsed"
@@ -27138,6 +27280,7 @@
        symbol_name="Ext540"
        underscore_name="ext540"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="0ea54a28-5052-4c2a-a18a-8cc17383a072"
        >
     <counter name="GPU Time Elapsed"
@@ -27263,6 +27406,7 @@
        symbol_name="Ext541"
        underscore_name="ext541"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="9cd9ba1c-3c59-483d-9ce3-136c8898f09d"
        >
     <counter name="GPU Time Elapsed"
@@ -27395,6 +27539,7 @@
        symbol_name="Ext542"
        underscore_name="ext542"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="ab29d0d9-3388-4316-af23-932aeef1ed23"
        >
     <counter name="GPU Time Elapsed"
@@ -27536,6 +27681,7 @@
        symbol_name="Ext543"
        underscore_name="ext543"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="16bf4ba3-2204-4d52-8f5e-d49ef8f571bb"
        >
     <counter name="GPU Time Elapsed"
@@ -27684,6 +27830,7 @@
        symbol_name="Ext604"
        underscore_name="ext604"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="66331aff-0aaf-41e7-ad18-fa61060d3af6"
        >
     <counter name="GPU Time Elapsed"
@@ -27923,6 +28070,7 @@
        symbol_name="Ext1000"
        underscore_name="ext1000"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="2d24479d-6766-4632-8d2b-f440c9bf53c7"
        >
     <counter name="GPU Time Elapsed"
@@ -28269,6 +28417,7 @@
        symbol_name="Ext1001"
        underscore_name="ext1001"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="15aa1ce0-6750-4566-8b2b-6d71a6ac4039"
        >
     <counter name="GPU Time Elapsed"
@@ -28672,6 +28821,7 @@
        symbol_name="Ext1002"
        underscore_name="ext1002"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="23131267-15c5-47bc-bcb3-4c05fc452e0e"
        >
     <counter name="GPU Time Elapsed"
@@ -28990,6 +29140,7 @@
        symbol_name="Ext1003"
        underscore_name="ext1003"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="605d1ee1-c160-46ee-9e31-6daf3885401c"
        >
     <counter name="GPU Time Elapsed"
@@ -29337,6 +29488,7 @@
        symbol_name="Ext1004"
        underscore_name="ext1004"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="40f4dcae-3ed1-4f3e-bddf-dbb87bc4279b"
        >
     <counter name="GPU Time Elapsed"
@@ -29684,6 +29836,7 @@
        symbol_name="Ext1005"
        underscore_name="ext1005"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="099da490-3594-4baa-98af-cea30d4d6c15"
        >
     <counter name="GPU Time Elapsed"
@@ -30087,6 +30240,7 @@
        symbol_name="Ext1006"
        underscore_name="ext1006"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="ab298da4-5917-4592-bbe0-1c21dedf000b"
        >
     <counter name="GPU Time Elapsed"
@@ -30433,6 +30587,7 @@
        symbol_name="Ext1007"
        underscore_name="ext1007"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="1b429688-49f8-48f2-8a06-18ba5c6a2b52"
        >
     <counter name="GPU Time Elapsed"
@@ -30722,6 +30877,7 @@
        symbol_name="Ext1010"
        underscore_name="ext1010"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="a4717f34-1c8b-40d8-a022-abbcf03cc6e5"
        >
     <counter name="GPU Time Elapsed"
@@ -30841,4 +30997,656 @@
     </register_config>
   </set>
 
+  <set name="MediaSet1"
+       chipset="MTLGT2"
+       symbol_name="MediaSet1"
+       underscore_name="media_set1"
+       mdapi_supported_apis="IO"
+       oa_format="128B_MPEC8_NOA16"
+       hw_config_guid="de84260e-32ac-4863-ba4f-998a685174a2"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="GPU Time Elapsed"
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Batch"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Core Clocks"
+             symbol_name="GpuCoreClocks"
+             underscore_name="gpu_core_clocks"
+             description="The total number of GPU core clocks elapsed during the measurement."
+             data_type="uint64"
+             units="cycles"
+             semantic_type="event"
+             equation="GPU_CLOCK 0 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="AVG GPU Core Frequency"
+             symbol_name="AvgGpuCoreFrequency"
+             underscore_name="avg_gpu_core_frequency"
+             description="Average GPU Core Frequency in the measurement."
+             data_type="uint64"
+             max_equation="$GpuMaxFrequency"
+             units="hz"
+             semantic_type="event"
+             equation="$GpuCoreClocks 1000000000 UMUL $GpuTime UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_DECODE_BOX0_READ_REQUEST"
+             symbol_name="VIDEO_DECODE_BOX0_READ_REQUEST"
+             underscore_name="video_decode_box0_read_request"
+             description="Number of VDBOX0 read requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 0 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_DECODE_BOX0_WRITE_REQUEST"
+             symbol_name="VIDEO_DECODE_BOX0_WRITE_REQUEST"
+             underscore_name="video_decode_box0_write_request"
+             description="Number of VDBOX0 write requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 1 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_DECODE_BOX1_READ_REQUEST"
+             symbol_name="VIDEO_DECODE_BOX1_READ_REQUEST"
+             underscore_name="video_decode_box1_read_request"
+             description="Number of VDBOX1 read requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 2 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_DECODE_BOX1_WRITE_REQUEST"
+             symbol_name="VIDEO_DECODE_BOX1_WRITE_REQUEST"
+             underscore_name="video_decode_box1_write_request"
+             description="Number of VDBOX1 write requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 3 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_ENHANCEMENT_BOX0_READ_REQUEST"
+             symbol_name="VIDEO_ENHANCEMENT_BOX0_READ_REQUEST"
+             underscore_name="video_enhancement_box0_read_request"
+             description="Number of VEBOX0 read requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 4 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_ENHANCEMENT_BOX0_WRITE_REQUEST"
+             symbol_name="VIDEO_ENHANCEMENT_BOX0_WRITE_REQUEST"
+             underscore_name="video_enhancement_box0_write_request"
+             description="Number of VEBOX0 write requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 5 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_ENHANCEMENT_BOX1_READ_REQUEST"
+             symbol_name="VIDEO_ENHANCEMENT_BOX1_READ_REQUEST"
+             underscore_name="video_enhancement_box1_read_request"
+             description="Number of VEBOX1 read requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 6 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_ENHANCEMENT_BOX1_WRITE_REQUEST"
+             symbol_name="VIDEO_ENHANCEMENT_BOX1_WRITE_REQUEST"
+             underscore_name="video_enhancement_box1_write_request"
+             description="Number of VEBOX1 write requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 7 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00393200" value="0x00000201" />
+        <register type="OA" address="0x00393204" value="0x00000000" />
+        <register type="OA" address="0x00393208" value="0x00000202" />
+        <register type="OA" address="0x0039320C" value="0x00000000" />
+        <register type="OA" address="0x00393210" value="0x00000401" />
+        <register type="OA" address="0x00393214" value="0x00000000" />
+        <register type="OA" address="0x00393218" value="0x00000402" />
+        <register type="OA" address="0x0039321C" value="0x00000000" />
+        <register type="OA" address="0x00393220" value="0x00002201" />
+        <register type="OA" address="0x00393224" value="0x00000000" />
+        <register type="OA" address="0x00393228" value="0x00002202" />
+        <register type="OA" address="0x0039322C" value="0x00000000" />
+        <register type="OA" address="0x00393230" value="0x00002401" />
+        <register type="OA" address="0x00393234" value="0x00000000" />
+        <register type="OA" address="0x00393238" value="0x00002402" />
+        <register type="OA" address="0x0039323C" value="0x00000000" />
+        <register type="OA" address="0x00393034" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="MediaSet2"
+       chipset="MTLGT2"
+       symbol_name="MediaSet2"
+       underscore_name="media_set2"
+       mdapi_supported_apis="IO"
+       oa_format="128B_MPEC8_NOA16"
+       hw_config_guid="b9d5c6d5-39f2-4069-b343-e7a886353b89"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="GPU Time Elapsed"
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Batch"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Core Clocks"
+             symbol_name="GpuCoreClocks"
+             underscore_name="gpu_core_clocks"
+             description="The total number of GPU core clocks elapsed during the measurement."
+             data_type="uint64"
+             units="cycles"
+             semantic_type="event"
+             equation="GPU_CLOCK 0 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="AVG GPU Core Frequency"
+             symbol_name="AvgGpuCoreFrequency"
+             underscore_name="avg_gpu_core_frequency"
+             description="Average GPU Core Frequency in the measurement."
+             data_type="uint64"
+             max_equation="$GpuMaxFrequency"
+             units="hz"
+             semantic_type="event"
+             equation="$GpuCoreClocks 1000000000 UMUL $GpuTime UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="MEDIA_READ_REQUEST"
+             symbol_name="MEDIA_READ_REQUEST"
+             underscore_name="media_read_request"
+             description="Number of read requests from stand alone media "
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 0 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="MEDIA_WRITE_REQUEST"
+             symbol_name="MEDIA_WRITE_REQUEST"
+             underscore_name="media_write_request"
+             description="Number of write requests from stand alone media "
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 1 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="COMMAND PARSER VIDEO DECODE_ENGINE0 BUSY"
+             symbol_name="COMMAND_PARSER_VIDEO_DECODE_ENGINE0_BUSY"
+             underscore_name="command_parser_video_decode_engine0_busy"
+             description="Percentage of time in which there is a context loaded and active on the media VDBOX0"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 2 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="COMMAND_PARSER_VIDEO_DECODE_ENGINE1_BUSY"
+             symbol_name="COMMAND_PARSER_VIDEO_DECODE_ENGINE1_BUSY"
+             underscore_name="command_parser_video_decode_engine1_busy"
+             description="Percentage of time in which there is a context loaded and active on the media VDBOX1"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 3 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="COMMAND_PARSER_VIDEO_ENHANCEMENT_ENGINE0_BUSY"
+             symbol_name="COMMAND_PARSER_VIDEO_ENHANCEMENT_ENGINE0_BUSY"
+             underscore_name="command_parser_video_enhancement_engine0_busy"
+             description="Percentage of time in which there is a context loaded and active on the media VEBOX0"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 4 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="COMMAND_PARSER_VIDEO_ENHANCEMENT_ENGINE1_BUSY"
+             symbol_name="COMMAND_PARSER_VIDEO_ENHANCEMENT_ENGINE1_BUSY"
+             underscore_name="command_parser_video_enhancement_engine1_busy"
+             description="Percentage of time in which there is a context loaded and active on the media VEBOX0"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 5 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="COMMAND_PARSER_GRAPHICS_SECURITY_CONTROLLER_BUSY"
+             symbol_name="COMMAND_PARSER_GRAPHICS_SECURITY_CONTROLLER_BUSY"
+             underscore_name="command_parser_graphics_security_controller_busy"
+             description="Percentage of time in which Graphics Security Controller is active."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 6 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00393200" value="0x00000001" />
+        <register type="OA" address="0x00393204" value="0x00000000" />
+        <register type="OA" address="0x00393208" value="0x00000002" />
+        <register type="OA" address="0x0039320C" value="0x00000000" />
+        <register type="OA" address="0x00393210" value="0x00000200" />
+        <register type="OA" address="0x00393214" value="0x00000000" />
+        <register type="OA" address="0x00393218" value="0x00000400" />
+        <register type="OA" address="0x0039321C" value="0x00000000" />
+        <register type="OA" address="0x00393220" value="0x00002200" />
+        <register type="OA" address="0x00393224" value="0x00000000" />
+        <register type="OA" address="0x00393228" value="0x00002400" />
+        <register type="OA" address="0x0039322C" value="0x00000000" />
+        <register type="OA" address="0x00393230" value="0x00000003" />
+        <register type="OA" address="0x00393234" value="0x00000000" />
+        <register type="OA" address="0x00393034" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="TestOam"
+       chipset="MTLGT2"
+       symbol_name="TestOam"
+       underscore_name="test_oam"
+       mdapi_supported_apis="IO"
+       oa_format="128B_MPEC8_NOA16"
+       hw_config_guid="a1700053-56bc-4b7e-87b9-e29b07a08f62"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="GPU Time Elapsed"
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Batch"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Core Clocks"
+             symbol_name="GpuCoreClocks"
+             underscore_name="gpu_core_clocks"
+             description="The total number of GPU core clocks elapsed during the measurement."
+             data_type="uint64"
+             units="cycles"
+             semantic_type="event"
+             equation="GPU_CLOCK 0 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="AVG GPU Core Frequency"
+             symbol_name="AvgGpuCoreFrequency"
+             underscore_name="avg_gpu_core_frequency"
+             description="Average GPU Core Frequency in the measurement."
+             data_type="uint64"
+             max_equation="$GpuMaxFrequency"
+             units="hz"
+             semantic_type="event"
+             equation="$GpuCoreClocks 1000000000 UMUL $GpuTime UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter0"
+             symbol_name="Counter0"
+             underscore_name="counter0"
+             description="HW test counter 0. Factor: 0.0"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 0 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter1"
+             symbol_name="Counter1"
+             underscore_name="counter1"
+             description="HW test counter 1. Factor: 1.0"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 1 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter2"
+             symbol_name="Counter2"
+             underscore_name="counter2"
+             description="HW test counter 2. Factor: 1.0"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 2 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter3"
+             symbol_name="Counter3"
+             underscore_name="counter3"
+             description="HW test counter 3. Factor: 0.5"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 3 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter4"
+             symbol_name="Counter4"
+             underscore_name="counter4"
+             description="HW test counter 4. Factor: 0.3333"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 4 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter5"
+             symbol_name="Counter5"
+             underscore_name="counter5"
+             description="HW test counter 5. Factor: 0.3333"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 5 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter6"
+             symbol_name="Counter6"
+             underscore_name="counter6"
+             description="HW test counter 6. Factor: 0.16666"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 6 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter8"
+             symbol_name="Counter8"
+             underscore_name="counter8"
+             description="TestCounter8"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 0 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_DECODE_BOX0_WRITE_REQUEST_VISA"
+             symbol_name="VIDEO_DECODE_BOX0_WRITE_REQUEST_VISA"
+             underscore_name="video_decode_box0_write_request_visa"
+             description="Number of VDBOX0 write requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="C 1 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_DECODE_BOX0_READ_REQUEST_VISA"
+             symbol_name="VIDEO_DECODE_BOX0_READ_REQUEST_VISA"
+             underscore_name="video_decode_box0_read_request_visa"
+             description="Number of VDBOX0 read requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="B 7 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_DECODE_BOX0_READ_REQUEST_MPEC"
+             symbol_name="VIDEO_DECODE_BOX0_READ_REQUEST_MPEC"
+             underscore_name="video_decode_box0_read_request_mpec"
+             description="Number of VDBOX0 read requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 0 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_DECODE_BOX0_WRITE_REQUEST_MPEC"
+             symbol_name="VIDEO_DECODE_BOX0_WRITE_REQUEST_MPEC"
+             underscore_name="video_decode_box0_write_request_mpec"
+             description="Number of VDBOX0 write requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 1 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x0038D114" value="0x00000003" />
+        <register type="NOA" address="0x0038D100" value="0x00000DE0" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x00000DE2" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x000001C0" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x000001C1" />
+        <register type="NOA" address="0x0038D104" value="0x00000809" />
+        <register type="NOA" address="0x0038D100" value="0x000001C3" />
+        <register type="NOA" address="0x0038D104" value="0x00800400" />
+        <register type="NOA" address="0x0038D100" value="0x000001C4" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x000001C5" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x00000360" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x00000361" />
+        <register type="NOA" address="0x0038D104" value="0x00001819" />
+        <register type="NOA" address="0x0038D100" value="0x00000362" />
+        <register type="NOA" address="0x0038D104" value="0x00001C1D" />
+        <register type="NOA" address="0x0038D100" value="0x00000363" />
+        <register type="NOA" address="0x0038D104" value="0x02402006" />
+        <register type="NOA" address="0x0038D100" value="0x00000364" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x00000365" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x000003A0" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x000003A1" />
+        <register type="NOA" address="0x0038D104" value="0x00001011" />
+        <register type="NOA" address="0x0038D100" value="0x000003BB" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x000003BC" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x000004E0" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x000004E1" />
+        <register type="NOA" address="0x0038D104" value="0x00001819" />
+        <register type="NOA" address="0x0038D100" value="0x000004E3" />
+        <register type="NOA" address="0x0038D104" value="0x00000400" />
+        <register type="NOA" address="0x0038D100" value="0x000004E4" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x000004E5" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x00000420" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x00000421" />
+        <register type="NOA" address="0x0038D104" value="0x00001A1B" />
+        <register type="NOA" address="0x0038D100" value="0x00000423" />
+        <register type="NOA" address="0x0038D104" value="0x00000400" />
+        <register type="NOA" address="0x0038D100" value="0x00000424" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x00000425" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x00000540" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x00000541" />
+        <register type="NOA" address="0x0038D104" value="0x00001415" />
+        <register type="NOA" address="0x0038D100" value="0x00000543" />
+        <register type="NOA" address="0x0038D104" value="0x00000400" />
+        <register type="NOA" address="0x0038D100" value="0x00000544" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x00000545" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x00000660" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x00000661" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x00000663" />
+        <register type="NOA" address="0x0038D104" value="0x00000C02" />
+        <register type="NOA" address="0x0038D100" value="0x00000664" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x00000665" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x00000669" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x0000066A" />
+        <register type="NOA" address="0x0038D104" value="0x00000015" />
+        <register type="NOA" address="0x0038D114" value="0x0000000B" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x00393200" value="0x00000201" />
+        <register type="OA" address="0x00393204" value="0x00000000" />
+        <register type="OA" address="0x00393208" value="0x00000202" />
+        <register type="OA" address="0x0039320C" value="0x00000000" />
+        <register type="OA" address="0x00393000" value="0x00000000" />
+        <register type="OA" address="0x00393004" value="0xF0800000" />
+        <register type="OA" address="0x00393010" value="0x00000000" />
+        <register type="OA" address="0x00393014" value="0xF0800000" />
+        <register type="OA" address="0x00393020" value="0x00000000" />
+        <register type="OA" address="0x00393040" value="0x00000004" />
+        <register type="OA" address="0x00393044" value="0x0000FFFF" />
+        <register type="OA" address="0x00393048" value="0x00000003" />
+        <register type="OA" address="0x0039304C" value="0x0000FFFF" />
+        <register type="OA" address="0x00393050" value="0x00000007" />
+        <register type="OA" address="0x00393054" value="0x0000FFFF" />
+        <register type="OA" address="0x00393058" value="0x00100002" />
+        <register type="OA" address="0x0039305C" value="0x0000FFF7" />
+        <register type="OA" address="0x00393060" value="0x00100002" />
+        <register type="OA" address="0x00393064" value="0x0000FFCF" />
+        <register type="OA" address="0x00393068" value="0x00100082" />
+        <register type="OA" address="0x0039306C" value="0x0000FFEF" />
+        <register type="OA" address="0x00393070" value="0x001000C2" />
+        <register type="OA" address="0x00393074" value="0x0000FFE7" />
+        <register type="OA" address="0x00393078" value="0x00002002" />
+        <register type="OA" address="0x0039307C" value="0x0000F9FF" />
+        <register type="OA" address="0x00393034" value="0x00000000" />
+    </register_config>
+  </set>
+
 </metrics>
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 21/30] lib/perf: Update MTL GT3 metrics for OAM
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (19 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 20/30] lib/perf: Update MTL GT2 metrics for OAM Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 20:59 ` [igt-dev] [PATCH 22/30] i915/perf: Add support for engine specific metrics Umesh Nerlige Ramappa
                   ` (12 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Add OAM metrics configurations and update MTL GT3 metrics.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 lib/i915/perf-configs/guids.xml     |   23 +-
 lib/i915/perf-configs/oa-mtlgt3.xml | 1328 ++++++++++++++++++++++-----
 2 files changed, 1133 insertions(+), 218 deletions(-)

diff --git a/lib/i915/perf-configs/guids.xml b/lib/i915/perf-configs/guids.xml
index 0b96aa91..510450f8 100644
--- a/lib/i915/perf-configs/guids.xml
+++ b/lib/i915/perf-configs/guids.xml
@@ -2507,12 +2507,12 @@
     <guid config_hash="21fd6477790dc8803dd6331b8c41dd24" mdapi_config_hash="48c076d960ec7e094bc846058a20264f" id="9604dfeb-2724-459c-a25b-5e5e06d93fd8" chipset="mtlgt3" name="TDL3" />
     <guid config_hash="95b5a166dff16d27293d7d657c146c20" mdapi_config_hash="742195ae50b801b9c5d680a5a9558cb0" id="b5333a47-add0-46a5-82d9-e62dcee14e81" chipset="mtlgt3" name="TDL4" />
     <guid config_hash="269711b73f95981cabbcdee5a96a9ccb" mdapi_config_hash="c4289990e5c8cbd4918e9c2c333f251c" id="7272a7b8-6df2-4180-a95f-2ef7ad4412cc" chipset="mtlgt3" name="TestOa" />
-    <guid config_hash="d439e67a55ee3ca7a70a35714c53bb52" mdapi_config_hash="8247df78555a4b792c33f0efa550952f" id="682c3520-dffc-4a76-8e17-1d9effc01a1a" chipset="mtlgt3" name="Ext1" />
+    <guid config_hash="6d1cd0ed097d034869eb468b43dd879a" mdapi_config_hash="d6e43578c93c9c1ba32a063e36fa10cc" id="682c3520-dffc-4a76-8e17-1d9effc01a1a" chipset="mtlgt3" name="Ext1" />
     <guid config_hash="e06924155d4acde10c45e89e6c65868d" mdapi_config_hash="eb6499f1a47dad7eae75cdb85b0bef2a" id="b24b7052-70a1-4ef7-b61d-7ee4d7e159ab" chipset="mtlgt3" name="Ext3" />
     <guid config_hash="fc06c18d17085caa964777920a316cf4" mdapi_config_hash="e80db872fee6810d6f47a683a4a1c9ce" id="205ab9ab-56fd-4fdc-b3b3-91dc57be0fd3" chipset="mtlgt3" name="Ext4" />
     <guid config_hash="939e13be9335004538a9e1d6944b4836" mdapi_config_hash="71a1bb2c5722c63fcf7176f6c61975a4" id="26cb7ee1-a26d-410a-9283-e07d6ced5fce" chipset="mtlgt3" name="Ext5" />
     <guid config_hash="6e82d13da5cd70235fefab3b43e9e4c9" mdapi_config_hash="561b960bd69e9823d50cfae86614fabd" id="e62c9cd7-ada7-487d-87aa-b1ad4ab9a2c5" chipset="mtlgt3" name="Ext6" />
-    <guid config_hash="070c9de0d068a9aacf8674c062374e05" mdapi_config_hash="1293975723eab282470ebaa4c97faa70" id="714e9d80-e4e3-40e6-9e79-2ca6d1d0a5a5" chipset="mtlgt3" name="Ext7" />
+    <guid config_hash="baa81cf9fb16c0a5e738fc023f371350" mdapi_config_hash="614db897903581ee199202e79c94ca6c" id="714e9d80-e4e3-40e6-9e79-2ca6d1d0a5a5" chipset="mtlgt3" name="Ext7" />
     <guid config_hash="5660b1f0e0ba49d22c1eaef513c8b58a" mdapi_config_hash="31ab651e5dc06042c8d2248f65a75d73" id="30499dfb-3977-4808-a34c-93e7b50e0454" chipset="mtlgt3" name="Ext8" />
     <guid config_hash="b3b01ef016a1c55d9d932400511dd7cc" mdapi_config_hash="b4c689c289687c4df0e2523faf70cc4f" id="417618f2-7a87-4745-bccd-6ba14d17bfa4" chipset="mtlgt3" name="Ext9" />
     <guid config_hash="97c49cf8f71f5bf86035d3bf6cb690c9" mdapi_config_hash="e25449627d90b790133b98f4a92657e1" id="443c32c7-e5e4-43da-b4f2-77efe45a60ed" chipset="mtlgt3" name="Ext10" />
@@ -2698,14 +2698,14 @@
     <guid config_hash="25302806331fba9bc9f3450e0e642e96" mdapi_config_hash="d5a07d5812d1d12b522960872fd28137" id="f6e20d5b-52be-4035-85c2-818a690bf601" chipset="mtlgt3" name="Ext501" />
     <guid config_hash="b206b0dc53133698a7ca18febc7e320a" mdapi_config_hash="80d90f8d67609d99b1b85717ee3f9cd2" id="d09cedef-e3e3-41b5-8ce8-ddc3933339ca" chipset="mtlgt3" name="Ext502" />
     <guid config_hash="2c857922a97a5830183ca8b8efb72008" mdapi_config_hash="dbc6d492e27a8a6cfa2063ba2ca11edf" id="96067625-3663-4f9a-8b26-74e47ab1aff4" chipset="mtlgt3" name="Ext503" />
-    <guid config_hash="c77afaf69426cacf0d39b737afa6cbac" mdapi_config_hash="09e22d191f45567e982863a37d9c382d" id="2bc8b90d-997c-4d62-b101-fe1aa74036e5" chipset="mtlgt3" name="Ext508" />
-    <guid config_hash="530cf98a637fc90c254c75c3bd9dedfb" mdapi_config_hash="25f6d07bddccffeaab56aadb24ae6be5" id="79252877-1dcd-4700-b4bd-58bce74b796d" chipset="mtlgt3" name="Ext509" />
-    <guid config_hash="e8ab95f7c69adc8f259904c1de459856" mdapi_config_hash="2c1390b1ce682645b58f2396701c0d4b" id="68ac1770-b062-48cd-94f4-44c6ae16867a" chipset="mtlgt3" name="Ext510" />
-    <guid config_hash="a15516d4ed73424ae36e6d4d1b95a200" mdapi_config_hash="59c1035f145bb7e00fb0b0d622feace5" id="443b8a84-7e77-4e9f-8a2a-56743897cba3" chipset="mtlgt3" name="Ext511" />
-    <guid config_hash="ae9653c036a3dc324743f6ccac40eb92" mdapi_config_hash="285cd0a99124ba6a244a47577c34e3eb" id="68581669-8e57-4ff9-bb70-71a99f8454c8" chipset="mtlgt3" name="Ext512" />
-    <guid config_hash="a1122c9120f4a345403dcb9be51afc13" mdapi_config_hash="26f2e86d15758105a9406c379bc83b80" id="1b49d31f-4d7c-4dd7-ad31-030ccb59649e" chipset="mtlgt3" name="Ext513" />
-    <guid config_hash="54126b539d950f606053619014452c83" mdapi_config_hash="06e7700eb4e4ba08285b4fc0316db6ad" id="1b0ce68b-c301-4d05-8659-85fad0825057" chipset="mtlgt3" name="Ext514" />
-    <guid config_hash="8667c4542c2ece365f0439a3659c4267" mdapi_config_hash="c5d806b0e6a6c7be6d1ad75a69a2527b" id="fde32e67-1a87-4946-bf96-c1ff68105749" chipset="mtlgt3" name="Ext515" />
+    <guid config_hash="b89becafa0012d0119ce4251d4266b2c" mdapi_config_hash="83261cb3061414efb24e04580990df45" id="2bc8b90d-997c-4d62-b101-fe1aa74036e5" chipset="mtlgt3" name="Ext508" />
+    <guid config_hash="aec3fc91255b37e4f7a9f5019f5a01e0" mdapi_config_hash="993dc808e586668f20473bfc21356dae" id="79252877-1dcd-4700-b4bd-58bce74b796d" chipset="mtlgt3" name="Ext509" />
+    <guid config_hash="059b5bdee62d6b61c00848beeb2751e2" mdapi_config_hash="624661deaf5382d8c447936b0760f2ac" id="68ac1770-b062-48cd-94f4-44c6ae16867a" chipset="mtlgt3" name="Ext510" />
+    <guid config_hash="2c302efab54ba8133e020e08c44f19e5" mdapi_config_hash="0d150ac4cdc7a15a37706b2499af5490" id="443b8a84-7e77-4e9f-8a2a-56743897cba3" chipset="mtlgt3" name="Ext511" />
+    <guid config_hash="d01972b09245455a8a53df3ee5b0de48" mdapi_config_hash="1b6e276e805087093a4002d1a2fc59d4" id="68581669-8e57-4ff9-bb70-71a99f8454c8" chipset="mtlgt3" name="Ext512" />
+    <guid config_hash="980fc02bcda49523aae80255d30dd8d9" mdapi_config_hash="9083f055e06214711443b1aa92209a51" id="1b49d31f-4d7c-4dd7-ad31-030ccb59649e" chipset="mtlgt3" name="Ext513" />
+    <guid config_hash="d4c01604867190e57eb85b43ea35b19d" mdapi_config_hash="f0cc4cfd7a9d70f2d1c3464dedad851d" id="1b0ce68b-c301-4d05-8659-85fad0825057" chipset="mtlgt3" name="Ext514" />
+    <guid config_hash="019a6367c845719ff7381414a99781ff" mdapi_config_hash="2b95a32768f0449b837fb9915ed514d9" id="fde32e67-1a87-4946-bf96-c1ff68105749" chipset="mtlgt3" name="Ext515" />
     <guid config_hash="5ad38daa6cb00090cfb6658a43d30d06" mdapi_config_hash="ba325785aeb3c90926c9955686094006" id="bf950c5b-7250-47f4-aa59-d97b22db02ff" chipset="mtlgt3" name="Ext516" />
     <guid config_hash="5093d322d1b278f2e323e259408c7b30" mdapi_config_hash="2e6f2f19cb9752141887cbe4bd057819" id="9027ff05-4348-4061-a434-0befaba7c379" chipset="mtlgt3" name="Ext517" />
     <guid config_hash="9d968609fbc2e37f71dca7e2b5eddea6" mdapi_config_hash="b2cbdc9610f599b7c65f6100260049f0" id="6ad0dee9-17bf-4b54-8b70-e30afcc8710b" chipset="mtlgt3" name="Ext518" />
@@ -2743,4 +2743,7 @@
     <guid config_hash="482cebdeeb78bb56e67b42d24644c8db" mdapi_config_hash="11e33e01a371bf15e59b9786f4fe1050" id="de84260e-32ac-4863-ba4f-998a685174a2" chipset="mtlgt2" name="MediaSet1" />
     <guid config_hash="5bfab887a79b99cf34a606dcca5f4f8a" mdapi_config_hash="1c238e39e5c73eefd870cef2fb7a18af" id="b9d5c6d5-39f2-4069-b343-e7a886353b89" chipset="mtlgt2" name="MediaSet2" />
     <guid config_hash="44bcb438bea8b46b57779739bebfbd69" mdapi_config_hash="fbbd97d1f3b60c17eae57bbd3c42e7fe" id="a1700053-56bc-4b7e-87b9-e29b07a08f62" chipset="mtlgt2" name="TestOam" />
+    <guid config_hash="482cebdeeb78bb56e67b42d24644c8db" mdapi_config_hash="11e33e01a371bf15e59b9786f4fe1050" id="4d9b2817-19b9-4461-a54b-dc9fdb7d69cb" chipset="mtlgt3" name="MediaSet1" />
+    <guid config_hash="5bfab887a79b99cf34a606dcca5f4f8a" mdapi_config_hash="1c238e39e5c73eefd870cef2fb7a18af" id="651a6694-0ac1-4bd5-a4a1-94bcf479d4f4" chipset="mtlgt3" name="MediaSet2" />
+    <guid config_hash="44bcb438bea8b46b57779739bebfbd69" mdapi_config_hash="fbbd97d1f3b60c17eae57bbd3c42e7fe" id="bac01106-5869-489c-a306-67303a434173" chipset="mtlgt3" name="TestOam" />
 </guids>
diff --git a/lib/i915/perf-configs/oa-mtlgt3.xml b/lib/i915/perf-configs/oa-mtlgt3.xml
index 400e1ff4..5e173865 100644
--- a/lib/i915/perf-configs/oa-mtlgt3.xml
+++ b/lib/i915/perf-configs/oa-mtlgt3.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0"?>
-<metrics version="1669276497" merge_md5="">
+<metrics version="1675300133" merge_md5="">
   <set name="Render Metrics Basic"
        chipset="MTLGT3"
        symbol_name="RenderBasic"
        underscore_name="render_basic"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="1124d1b6-6182-4b5a-950b-27b38ef7c996"
        >
     <counter name="GPU Time Elapsed"
@@ -579,6 +580,7 @@
        symbol_name="ComputeBasic"
        underscore_name="compute_basic"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="522743d7-4e01-461a-8600-7904e8ddc80c"
        >
     <counter name="GPU Time Elapsed"
@@ -1132,6 +1134,7 @@
        symbol_name="AsyncCompute"
        underscore_name="async_compute"
        mdapi_supported_apis="OGL OCL MEDIA IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d9edd254-60e8-4ce0-82b1-7b3de3bc79a6"
        >
     <counter name="GPU Time Elapsed"
@@ -1474,6 +1477,7 @@
        symbol_name="XveActivity"
        underscore_name="xve_activity"
        mdapi_supported_apis="OGL OGL4 OCL MEDIA IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="703a9693-1444-4e7c-a235-1c4d6ee01943"
        >
     <counter name="GPU Time Elapsed"
@@ -1772,6 +1776,7 @@
        symbol_name="GpuBusyness"
        underscore_name="gpu_busyness"
        mdapi_supported_apis="VK OGL OCL MEDIA IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="edae72d3-bb06-47af-87b4-7585274c6076"
        >
     <counter name="GPU Time Elapsed"
@@ -2030,6 +2035,7 @@
        symbol_name="HDCAndSF1"
        underscore_name="hdc_and_sf1"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="e1a408d6-aece-4bde-8bbd-1c7fbfff02cf"
        >
     <counter name="GPU Time Elapsed"
@@ -2233,6 +2239,7 @@
        symbol_name="HDCAndSF2"
        underscore_name="hdc_and_sf2"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="374e8aa3-09df-4d69-ad32-3133f6ad3c86"
        >
     <counter name="GPU Time Elapsed"
@@ -2438,6 +2445,7 @@
        symbol_name="L3"
        underscore_name="l3"
        mdapi_supported_apis="VK OGL OCL MEDIA IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="580d5311-4e9d-4210-b419-37259ffcd3f2"
        >
     <counter name="GPU Time Elapsed"
@@ -2816,6 +2824,7 @@
        symbol_name="RasterizerAndPixelBackend1"
        underscore_name="rasterizer_and_pixel_backend1"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="4286bd8f-f9db-45e5-aa37-51dd7067f751"
        >
     <counter name="GPU Time Elapsed"
@@ -3060,6 +3069,7 @@
        symbol_name="RasterizerAndPixelBackend2"
        underscore_name="rasterizer_and_pixel_backend2"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="ac90f98d-14a6-4dcc-b5d7-31ee157bb6e2"
        >
     <counter name="GPU Time Elapsed"
@@ -3261,6 +3271,7 @@
        symbol_name="RenderPipeProfile1"
        underscore_name="render_pipe_profile1"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="f15b97f6-eb1b-43a8-839c-7bd956c143c4"
        >
     <counter name="GPU Time Elapsed"
@@ -3655,6 +3666,7 @@
        symbol_name="RenderPipeProfile2"
        underscore_name="render_pipe_profile2"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="86b9199d-8a44-4694-bbde-6fd35bada236"
        >
     <counter name="GPU Time Elapsed"
@@ -4049,6 +4061,7 @@
        symbol_name="Sampler"
        underscore_name="sampler"
        mdapi_supported_apis="VK OGL OCL MEDIA IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="ae70a69c-341d-492a-b703-afa08a3497ba"
        >
     <counter name="GPU Time Elapsed"
@@ -4482,6 +4495,7 @@
        symbol_name="TDL1"
        underscore_name="tdl1"
        mdapi_supported_apis="VK OGL OCL MEDIA IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="cf27081a-d750-4c9d-8a19-154f976992ee"
        >
     <counter name="GPU Time Elapsed"
@@ -4833,6 +4847,7 @@
        symbol_name="TDL2"
        underscore_name="tdl2"
        mdapi_supported_apis="VK OGL OCL MEDIA IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="fa292653-8b18-448b-b57e-8e8ff92fac11"
        >
     <counter name="GPU Time Elapsed"
@@ -5179,6 +5194,7 @@
        symbol_name="TDL3"
        underscore_name="tdl3"
        mdapi_supported_apis="VK OGL OCL MEDIA IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="9604dfeb-2724-459c-a25b-5e5e06d93fd8"
        >
     <counter name="GPU Time Elapsed"
@@ -5532,6 +5548,7 @@
        symbol_name="TDL4"
        underscore_name="tdl4"
        mdapi_supported_apis="VK OGL OCL MEDIA IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="b5333a47-add0-46a5-82d9-e62dcee14e81"
        >
     <counter name="GPU Time Elapsed"
@@ -5880,6 +5897,7 @@
        symbol_name="TestOa"
        underscore_name="test_oa"
        mdapi_supported_apis="VK OGL OCL MEDIA IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="7272a7b8-6df2-4180-a95f-2ef7ad4412cc"
        >
     <counter name="GPU Time Elapsed"
@@ -6104,6 +6122,7 @@
        symbol_name="Ext1"
        underscore_name="ext1"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="682c3520-dffc-4a76-8e17-1d9effc01a1a"
        >
     <counter name="GPU Time Elapsed"
@@ -6153,7 +6172,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 7 READ 128 UMUL"
+             equation="B 2 READ 128 UMUL"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
              mdapi_supported_apis=""
@@ -6166,7 +6185,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 6 READ 128 UMUL"
+             equation="B 3 READ 128 UMUL"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
              mdapi_supported_apis=""
@@ -6179,7 +6198,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 5 READ"
+             equation="B 4 READ"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
              mdapi_supported_apis=""
@@ -6192,7 +6211,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 4 READ"
+             equation="B 5 READ"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
              mdapi_supported_apis=""
@@ -6218,7 +6237,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 3 READ C 2 READ UADD"
+             equation="B 6 READ B 7 READ UADD"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
              mdapi_supported_apis=""
@@ -6231,7 +6250,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 1 READ C 0 READ UADD"
+             equation="C 0 READ C 1 READ UADD"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
              mdapi_supported_apis=""
@@ -6257,7 +6276,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="B 7 READ 128 UMUL"
+             equation="C 2 READ 128 UMUL"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
              mdapi_supported_apis=""
@@ -6270,7 +6289,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="B 6 READ 128 UMUL"
+             equation="C 3 READ 128 UMUL"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
              mdapi_supported_apis=""
@@ -6284,7 +6303,7 @@
              max_equation="100"
              units="percent"
              semantic_type="duration"
-             equation="B 5 READ 100 UMUL $GpuCoreClocks FDIV"
+             equation="C 4 READ 100 UMUL $GpuCoreClocks FDIV"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
              mdapi_supported_apis=""
@@ -6298,7 +6317,7 @@
              max_equation="100"
              units="percent"
              semantic_type="duration"
-             equation="B 4 READ 100 UMUL $GpuCoreClocks FDIV"
+             equation="C 5 READ 100 UMUL $GpuCoreClocks FDIV"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
              mdapi_supported_apis=""
@@ -6364,7 +6383,7 @@
              max_equation="100"
              units="percent"
              semantic_type="duration"
-             equation="B 2 READ 100 UMUL $GpuCoreClocks FDIV"
+             equation="C 7 READ 100 UMUL $GpuCoreClocks FDIV"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
              mdapi_supported_apis=""
@@ -6378,7 +6397,7 @@
              max_equation="100"
              units="percent"
              semantic_type="duration"
-             equation="B 3 READ 100 UMUL $GpuCoreClocks FDIV"
+             equation="C 6 READ 100 UMUL $GpuCoreClocks FDIV"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
              mdapi_supported_apis=""
@@ -6387,36 +6406,36 @@
     <register_config type="NOA">
         <register type="NOA" address="0x00000D04" value="0x00000200" />
         <register type="NOA" address="0x00009884" value="0x00000000" />
-        <register type="NOA" address="0x00009888" value="0x15010007" />
-        <register type="NOA" address="0x00009888" value="0x17053400" />
-        <register type="NOA" address="0x00009888" value="0x15210007" />
-        <register type="NOA" address="0x00009888" value="0x17253400" />
-        <register type="NOA" address="0x00009888" value="0x0007BBE0" />
-        <register type="NOA" address="0x00009888" value="0x0207BBAF" />
+        <register type="NOA" address="0x00009888" value="0x150100E0" />
+        <register type="NOA" address="0x00009888" value="0x17051000" />
+        <register type="NOA" address="0x00009888" value="0x152100E0" />
+        <register type="NOA" address="0x00009888" value="0x17251000" />
+        <register type="NOA" address="0x00009888" value="0x0007AEE0" />
+        <register type="NOA" address="0x00009888" value="0x0207BEEF" />
         <register type="NOA" address="0x00009888" value="0x0001AAA0" />
         <register type="NOA" address="0x00009888" value="0x0201AAAA" />
         <register type="NOA" address="0x00009888" value="0x03010004" />
-        <register type="NOA" address="0x00009888" value="0x09010180" />
-        <register type="NOA" address="0x00009888" value="0x0B010380" />
-        <register type="NOA" address="0x00009888" value="0x0F010147" />
-        <register type="NOA" address="0x00009888" value="0x110103C0" />
-        <register type="NOA" address="0x00009888" value="0x13010340" />
-        <register type="NOA" address="0x00009888" value="0x01010004" />
+        <register type="NOA" address="0x00009888" value="0x07010005" />
+        <register type="NOA" address="0x00009888" value="0x09010007" />
+        <register type="NOA" address="0x00009888" value="0x0B0103CD" />
+        <register type="NOA" address="0x00009888" value="0x0F010006" />
+        <register type="NOA" address="0x00009888" value="0x1101000E" />
+        <register type="NOA" address="0x00009888" value="0x01018000" />
         <register type="NOA" address="0x00009888" value="0x03050004" />
-        <register type="NOA" address="0x00009888" value="0x07050080" />
+        <register type="NOA" address="0x00009888" value="0x15050005" />
         <register type="NOA" address="0x00009888" value="0x01050000" />
         <register type="NOA" address="0x00009888" value="0x03210004" />
-        <register type="NOA" address="0x00009888" value="0x09210006" />
-        <register type="NOA" address="0x00009888" value="0x0B21000E" />
-        <register type="NOA" address="0x00009888" value="0x0D210147" />
-        <register type="NOA" address="0x00009888" value="0x1121000F" />
-        <register type="NOA" address="0x00009888" value="0x1321000D" />
-        <register type="NOA" address="0x00009888" value="0x01210008" />
+        <register type="NOA" address="0x00009888" value="0x07210140" />
+        <register type="NOA" address="0x00009888" value="0x092101C0" />
+        <register type="NOA" address="0x00009888" value="0x0D2103CD" />
+        <register type="NOA" address="0x00009888" value="0x0F210180" />
+        <register type="NOA" address="0x00009888" value="0x11210380" />
+        <register type="NOA" address="0x00009888" value="0x01214000" />
         <register type="NOA" address="0x00009888" value="0x03250004" />
-        <register type="NOA" address="0x00009888" value="0x09250002" />
+        <register type="NOA" address="0x00009888" value="0x13250140" />
         <register type="NOA" address="0x00009888" value="0x01250000" />
         <register type="NOA" address="0x00009888" value="0x56010000" />
-        <register type="NOA" address="0x00009888" value="0x58010000" />
+        <register type="NOA" address="0x00009888" value="0x58010201" />
         <register type="NOA" address="0x00009888" value="0x5A010010" />
         <register type="NOA" address="0x00009888" value="0x5C010201" />
         <register type="NOA" address="0x00009888" value="0x5E010010" />
@@ -6425,7 +6444,7 @@
         <register type="NOA" address="0x00009888" value="0x4E010010" />
         <register type="NOA" address="0x00009888" value="0x50010201" />
         <register type="NOA" address="0x00009888" value="0x52010010" />
-        <register type="NOA" address="0x00009888" value="0x54010201" />
+        <register type="NOA" address="0x00009888" value="0x54010000" />
         <register type="NOA" address="0x00009884" value="0x00000000" />
         <register type="NOA" address="0x00009888" value="0x72010002" />
     </register_config>
@@ -6446,6 +6465,7 @@
        symbol_name="Ext3"
        underscore_name="ext3"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="b24b7052-70a1-4ef7-b61d-7ee4d7e159ab"
        >
     <counter name="GPU Time Elapsed"
@@ -6692,6 +6712,7 @@
        symbol_name="Ext4"
        underscore_name="ext4"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="205ab9ab-56fd-4fdc-b3b3-91dc57be0fd3"
        >
     <counter name="GPU Time Elapsed"
@@ -7049,6 +7070,7 @@
        symbol_name="Ext5"
        underscore_name="ext5"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="26cb7ee1-a26d-410a-9283-e07d6ced5fce"
        >
     <counter name="GPU Time Elapsed"
@@ -7401,6 +7423,7 @@
        symbol_name="Ext6"
        underscore_name="ext6"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="e62c9cd7-ada7-487d-87aa-b1ad4ab9a2c5"
        >
     <counter name="GPU Time Elapsed"
@@ -7824,6 +7847,7 @@
        symbol_name="Ext7"
        underscore_name="ext7"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="714e9d80-e4e3-40e6-9e79-2ca6d1d0a5a5"
        >
     <counter name="GPU Time Elapsed"
@@ -7873,7 +7897,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 7 READ"
+             equation="B 0 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -7887,7 +7911,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 6 READ"
+             equation="B 1 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -7901,7 +7925,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 5 READ"
+             equation="B 2 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -7915,7 +7939,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 4 READ"
+             equation="B 3 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -7929,7 +7953,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 3 READ"
+             equation="B 4 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -7943,7 +7967,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 2 READ"
+             equation="B 5 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -7957,7 +7981,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 1 READ"
+             equation="B 6 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -7971,7 +7995,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="C 0 READ"
+             equation="B 7 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -7985,7 +8009,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="B 7 READ"
+             equation="C 7 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -7999,7 +8023,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="B 6 READ"
+             equation="C 6 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -8013,7 +8037,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="B 5 READ"
+             equation="C 5 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -8027,7 +8051,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="B 4 READ"
+             equation="C 4 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -8041,7 +8065,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="B 3 READ"
+             equation="C 3 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -8055,7 +8079,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="B 2 READ"
+             equation="C 2 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -8069,7 +8093,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="B 1 READ"
+             equation="C 1 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -8083,7 +8107,7 @@
              data_type="uint64"
              units="events"
              semantic_type="event"
-             equation="B 0 READ"
+             equation="C 0 READ"
              availability="$SliceMask 3 0 2 UMUL &lt;&lt; AND"
              mdapi_group="GTI/L3"
              mdapi_usage_flags="Frame Batch Draw"
@@ -8094,9 +8118,9 @@
         <register type="NOA" address="0x00000D04" value="0x00000200" />
         <register type="NOA" address="0x00009884" value="0x00000008" />
         <register type="NOA" address="0x00009888" value="0x03010000" />
-        <register type="NOA" address="0x00009888" value="0x0B010040" />
+        <register type="NOA" address="0x00009888" value="0x0B010000" />
         <register type="NOA" address="0x00009888" value="0x03210000" />
-        <register type="NOA" address="0x00009888" value="0x0B210001" />
+        <register type="NOA" address="0x00009888" value="0x0B210000" />
         <register type="NOA" address="0x00009888" value="0x03410000" />
         <register type="NOA" address="0x00009888" value="0x0B410000" />
         <register type="NOA" address="0x00009888" value="0x03610000" />
@@ -8106,56 +8130,55 @@
         <register type="NOA" address="0x00009888" value="0x03A10000" />
         <register type="NOA" address="0x00009888" value="0x0BA10000" />
         <register type="NOA" address="0x00009888" value="0x03C10000" />
-        <register type="NOA" address="0x00009888" value="0x0BC10000" />
+        <register type="NOA" address="0x00009888" value="0x0BC10006" />
         <register type="NOA" address="0x00009888" value="0x03E10000" />
-        <register type="NOA" address="0x00009888" value="0x0BE10000" />
-        <register type="NOA" address="0x00009888" value="0x00025500" />
+        <register type="NOA" address="0x00009888" value="0x0BE10180" />
+        <register type="NOA" address="0x00009888" value="0x00020055" />
         <register type="NOA" address="0x00009888" value="0x02025500" />
-        <register type="NOA" address="0x00009888" value="0x00820055" />
+        <register type="NOA" address="0x00009888" value="0x00825500" />
         <register type="NOA" address="0x00009888" value="0x02820055" />
-        <register type="NOA" address="0x00009888" value="0x01010004" />
-        <register type="NOA" address="0x00009888" value="0x13010380" />
-        <register type="NOA" address="0x00009888" value="0x01210004" />
-        <register type="NOA" address="0x00009888" value="0x1321000E" />
-        <register type="NOA" address="0x00009888" value="0x01410004" />
-        <register type="NOA" address="0x00009888" value="0x09410040" />
-        <register type="NOA" address="0x00009888" value="0x11410380" />
-        <register type="NOA" address="0x00009888" value="0x01610004" />
-        <register type="NOA" address="0x00009888" value="0x09610001" />
-        <register type="NOA" address="0x00009888" value="0x1161000E" />
-        <register type="NOA" address="0x00009888" value="0x00015000" />
-        <register type="NOA" address="0x00009888" value="0x0201009C" />
+        <register type="NOA" address="0x00009888" value="0x01010040" />
+        <register type="NOA" address="0x00009888" value="0x05010006" />
+        <register type="NOA" address="0x00009888" value="0x13010200" />
+        <register type="NOA" address="0x00009888" value="0x01210040" />
+        <register type="NOA" address="0x00009888" value="0x05210180" />
+        <register type="NOA" address="0x00009888" value="0x13210008" />
+        <register type="NOA" address="0x00009888" value="0x01410040" />
+        <register type="NOA" address="0x00009888" value="0x07410006" />
+        <register type="NOA" address="0x00009888" value="0x11410200" />
+        <register type="NOA" address="0x00009888" value="0x01610040" />
+        <register type="NOA" address="0x00009888" value="0x07610180" />
+        <register type="NOA" address="0x00009888" value="0x11610008" />
+        <register type="NOA" address="0x00009888" value="0x00010B1A" />
         <register type="NOA" address="0x00009888" value="0x04013940" />
         <register type="NOA" address="0x00009888" value="0x06010002" />
-        <register type="NOA" address="0x00009888" value="0x01810004" />
-        <register type="NOA" address="0x00009888" value="0x07810040" />
-        <register type="NOA" address="0x00009888" value="0x0F810380" />
-        <register type="NOA" address="0x00009888" value="0x01A10004" />
-        <register type="NOA" address="0x00009888" value="0x07A10001" />
-        <register type="NOA" address="0x00009888" value="0x0FA1000E" />
-        <register type="NOA" address="0x00009888" value="0x01C10004" />
-        <register type="NOA" address="0x00009888" value="0x05C10040" />
-        <register type="NOA" address="0x00009888" value="0x0DC10380" />
-        <register type="NOA" address="0x00009888" value="0x01E10004" />
-        <register type="NOA" address="0x00009888" value="0x05E10001" />
-        <register type="NOA" address="0x00009888" value="0x0DE1000E" />
-        <register type="NOA" address="0x00009888" value="0x008104E5" />
-        <register type="NOA" address="0x00009888" value="0x02814A00" />
+        <register type="NOA" address="0x00009888" value="0x01810040" />
+        <register type="NOA" address="0x00009888" value="0x09810006" />
+        <register type="NOA" address="0x00009888" value="0x0F810200" />
+        <register type="NOA" address="0x00009888" value="0x01A10040" />
+        <register type="NOA" address="0x00009888" value="0x09A10180" />
+        <register type="NOA" address="0x00009888" value="0x0FA10008" />
+        <register type="NOA" address="0x00009888" value="0x01C10040" />
+        <register type="NOA" address="0x00009888" value="0x0DC10200" />
+        <register type="NOA" address="0x00009888" value="0x01E10040" />
+        <register type="NOA" address="0x00009888" value="0x0DE10008" />
+        <register type="NOA" address="0x00009888" value="0x00812000" />
+        <register type="NOA" address="0x00009888" value="0x02814B63" />
         <register type="NOA" address="0x00009888" value="0x04810013" />
         <register type="NOA" address="0x00009884" value="0x00000000" />
-        <register type="NOA" address="0x00009888" value="0x00050F0F" />
+        <register type="NOA" address="0x00009888" value="0x00050FF0" />
         <register type="NOA" address="0x00009888" value="0x0002FFFF" />
         <register type="NOA" address="0x00009888" value="0x00015555" />
         <register type="NOA" address="0x00009888" value="0x02015555" />
-        <register type="NOA" address="0x00009888" value="0x0003AA55" />
+        <register type="NOA" address="0x00009888" value="0x000355AA" />
         <register type="NOA" address="0x00009888" value="0x0203AA55" />
-        <register type="NOA" address="0x00009888" value="0x00040F0F" />
-        <register type="NOA" address="0x00009888" value="0x4C010000" />
-        <register type="NOA" address="0x00009888" value="0x56010020" />
-        <register type="NOA" address="0x00009888" value="0x58010401" />
-        <register type="NOA" address="0x00009888" value="0x5A010030" />
-        <register type="NOA" address="0x00009888" value="0x5C010804" />
-        <register type="NOA" address="0x00009888" value="0x5E010020" />
+        <register type="NOA" address="0x00009888" value="0x00040FF0" />
+        <register type="NOA" address="0x00009888" value="0x4C010400" />
+        <register type="NOA" address="0x00009888" value="0x56010040" />
+        <register type="NOA" address="0x00009888" value="0x58010604" />
+        <register type="NOA" address="0x00009888" value="0x5A010020" />
+        <register type="NOA" address="0x00009888" value="0x5C010401" />
+        <register type="NOA" address="0x00009888" value="0x5E010000" />
         <register type="NOA" address="0x00009888" value="0x06010000" />
         <register type="NOA" address="0x00009888" value="0x60010400" />
         <register type="NOA" address="0x00009888" value="0x4E010010" />
@@ -8182,6 +8205,7 @@
        symbol_name="Ext8"
        underscore_name="ext8"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="30499dfb-3977-4808-a34c-93e7b50e0454"
        >
     <counter name="GPU Time Elapsed"
@@ -8536,6 +8560,7 @@
        symbol_name="Ext9"
        underscore_name="ext9"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="417618f2-7a87-4745-bccd-6ba14d17bfa4"
        >
     <counter name="GPU Time Elapsed"
@@ -8756,6 +8781,7 @@
        symbol_name="Ext10"
        underscore_name="ext10"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="443c32c7-e5e4-43da-b4f2-77efe45a60ed"
        >
     <counter name="GPU Time Elapsed"
@@ -9110,6 +9136,7 @@
        symbol_name="Ext11"
        underscore_name="ext11"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="3833e442-880a-4746-9df1-6347b7e5a081"
        >
     <counter name="GPU Time Elapsed"
@@ -9464,6 +9491,7 @@
        symbol_name="Ext12"
        underscore_name="ext12"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="931bb082-6f87-450e-8910-fd6a4ab206f7"
        >
     <counter name="GPU Time Elapsed"
@@ -9828,6 +9856,7 @@
        symbol_name="Ext13"
        underscore_name="ext13"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="f7fdd159-e273-47ab-99bc-f4fc410c6053"
        >
     <counter name="GPU Time Elapsed"
@@ -10058,6 +10087,7 @@
        symbol_name="Ext14"
        underscore_name="ext14"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="423732fb-f20a-4549-b632-53ac587668d9"
        >
     <counter name="GPU Time Elapsed"
@@ -10290,6 +10320,7 @@
        symbol_name="Ext15"
        underscore_name="ext15"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="0fa8f991-d412-4014-a7a7-be08ccf5fc4c"
        >
     <counter name="GPU Time Elapsed"
@@ -10530,6 +10561,7 @@
        symbol_name="Ext16"
        underscore_name="ext16"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="e37de2da-c16f-4b2a-82bc-e1062fabfa2a"
        >
     <counter name="GPU Time Elapsed"
@@ -10772,6 +10804,7 @@
        symbol_name="Ext17"
        underscore_name="ext17"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="e8a60701-f694-496d-95be-34cc80796a46"
        >
     <counter name="GPU Time Elapsed"
@@ -10882,7 +10915,7 @@
              max_equation="100"
              units="percent"
              semantic_type="duration"
-             equation="B 7 READ B 6 READ FADD 4 FDIV 100 UMUL $GpuCoreClocks FDIV"
+             equation="B 7 READ B 6 READ FADD 2 FDIV 100 UMUL $GpuCoreClocks FDIV"
              availability="$GtSlice0XeCore0"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -10897,7 +10930,7 @@
              max_equation="100"
              units="percent"
              semantic_type="duration"
-             equation="B 1 READ B 0 READ FADD 4 FDIV 100 UMUL $GpuCoreClocks FDIV"
+             equation="B 1 READ B 0 READ FADD 2 FDIV 100 UMUL $GpuCoreClocks FDIV"
              availability="$GtSlice0XeCore1"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -10912,7 +10945,7 @@
              max_equation="100"
              units="percent"
              semantic_type="duration"
-             equation="B 3 READ B 2 READ FADD 4 FDIV 100 UMUL $GpuCoreClocks FDIV"
+             equation="B 3 READ B 2 READ FADD 2 FDIV 100 UMUL $GpuCoreClocks FDIV"
              availability="$GtSlice0XeCore2"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -10927,7 +10960,7 @@
              max_equation="100"
              units="percent"
              semantic_type="duration"
-             equation="B 5 READ B 4 READ FADD 4 FDIV 100 UMUL $GpuCoreClocks FDIV"
+             equation="B 5 READ B 4 READ FADD 2 FDIV 100 UMUL $GpuCoreClocks FDIV"
              availability="$GtSlice0XeCore3"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -11020,6 +11053,7 @@
        symbol_name="Ext18"
        underscore_name="ext18"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="1c957158-09ff-4a89-aa5b-3c1b4e46f9ba"
        >
     <counter name="GPU Time Elapsed"
@@ -11270,6 +11304,7 @@
        symbol_name="Ext21"
        underscore_name="ext21"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="a0b46166-6078-4045-8321-6df39b8e8ced"
        >
     <counter name="GPU Time Elapsed"
@@ -11514,6 +11549,7 @@
        symbol_name="Ext22"
        underscore_name="ext22"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="92371114-aa03-46d8-ab34-6e843fc92123"
        >
     <counter name="GPU Time Elapsed"
@@ -11760,6 +11796,7 @@
        symbol_name="Ext23"
        underscore_name="ext23"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="c7cd47a5-39e8-4c58-9b4f-a9c6df869db8"
        >
     <counter name="GPU Time Elapsed"
@@ -11954,6 +11991,7 @@
        symbol_name="Ext24"
        underscore_name="ext24"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="2adf2c05-e151-4fa7-9e77-2331bd94235e"
        >
     <counter name="GPU Time Elapsed"
@@ -12150,6 +12188,7 @@
        symbol_name="Ext28"
        underscore_name="ext28"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="1fcdcf0a-54da-4397-8832-c884d8d0b3ff"
        >
     <counter name="GPU Time Elapsed"
@@ -12394,6 +12433,7 @@
        symbol_name="Ext29"
        underscore_name="ext29"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="9701aca8-76a6-49ee-96c9-ff983f24d29e"
        >
     <counter name="GPU Time Elapsed"
@@ -12640,6 +12680,7 @@
        symbol_name="Ext31"
        underscore_name="ext31"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="f47e74cf-7966-43ea-bbac-46f9a0d1dc1f"
        >
     <counter name="GPU Time Elapsed"
@@ -12830,6 +12871,7 @@
        symbol_name="Ext32"
        underscore_name="ext32"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="3e220edc-390e-4964-9e57-4d45f3e01de8"
        >
     <counter name="GPU Time Elapsed"
@@ -13022,6 +13064,7 @@
        symbol_name="Ext35"
        underscore_name="ext35"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d334294d-8dd2-4ae2-ae31-7d0d4acc2b6b"
        >
     <counter name="GPU Time Elapsed"
@@ -13212,6 +13255,7 @@
        symbol_name="Ext36"
        underscore_name="ext36"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="b749495f-4fc4-4e54-965e-38990758473b"
        >
     <counter name="GPU Time Elapsed"
@@ -13404,6 +13448,7 @@
        symbol_name="Ext39"
        underscore_name="ext39"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="09c0f842-3711-48f5-bf3e-74c1caa9f791"
        >
     <counter name="GPU Time Elapsed"
@@ -13598,6 +13643,7 @@
        symbol_name="Ext40"
        underscore_name="ext40"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="be7c864e-0538-420d-916d-ce3aed7742ba"
        >
     <counter name="GPU Time Elapsed"
@@ -13794,6 +13840,7 @@
        symbol_name="Ext43"
        underscore_name="ext43"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="86cf3d13-947b-4f7f-9685-1ff59ec342dd"
        >
     <counter name="GPU Time Elapsed"
@@ -13974,6 +14021,7 @@
        symbol_name="Ext44"
        underscore_name="ext44"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="7675136e-a91e-4bf8-b206-32591b878339"
        >
     <counter name="GPU Time Elapsed"
@@ -14156,6 +14204,7 @@
        symbol_name="Ext45"
        underscore_name="ext45"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="e953dbdb-3451-4912-80ae-241ecc56a59e"
        >
     <counter name="GPU Time Elapsed"
@@ -14331,6 +14380,7 @@
        symbol_name="Ext46"
        underscore_name="ext46"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="94219d74-6a23-4b93-bf62-88c9ad4ed4bd"
        >
     <counter name="GPU Time Elapsed"
@@ -14508,6 +14558,7 @@
        symbol_name="Ext51"
        underscore_name="ext51"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="cab52f96-c6bf-48ca-a34e-17e52cadc8a6"
        >
     <counter name="GPU Time Elapsed"
@@ -14759,6 +14810,7 @@
        symbol_name="Ext53"
        underscore_name="ext53"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="e4597eb9-ffa4-4da5-a180-5e12299f22cc"
        >
     <counter name="GPU Time Elapsed"
@@ -14949,6 +15001,7 @@
        symbol_name="Ext54"
        underscore_name="ext54"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="0a11c113-298b-4f77-a085-1b7cac225015"
        >
     <counter name="GPU Time Elapsed"
@@ -15141,6 +15194,7 @@
        symbol_name="Ext57"
        underscore_name="ext57"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="6f983509-03f1-463a-be88-3e4a40de40b4"
        >
     <counter name="GPU Time Elapsed"
@@ -15331,6 +15385,7 @@
        symbol_name="Ext58"
        underscore_name="ext58"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="75d3fdde-e74d-4ec2-a7f0-f88fe5971af3"
        >
     <counter name="GPU Time Elapsed"
@@ -15523,6 +15578,7 @@
        symbol_name="Ext61"
        underscore_name="ext61"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="98c25532-687f-489a-b070-667edd3c41f9"
        >
     <counter name="GPU Time Elapsed"
@@ -15717,6 +15773,7 @@
        symbol_name="Ext62"
        underscore_name="ext62"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="6ee28b50-5390-4655-af96-9d99569aee82"
        >
     <counter name="GPU Time Elapsed"
@@ -15913,6 +15970,7 @@
        symbol_name="Ext65"
        underscore_name="ext65"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="89a4a65b-cbfa-4c75-99fb-e5d7f0def495"
        >
     <counter name="GPU Time Elapsed"
@@ -16060,6 +16118,7 @@
        symbol_name="Ext66"
        underscore_name="ext66"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="99e44f76-928f-4835-866f-663e25c69f66"
        >
     <counter name="GPU Time Elapsed"
@@ -16202,6 +16261,7 @@
        symbol_name="Ext67"
        underscore_name="ext67"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="f45dfc0c-70ef-48bd-83a2-30cf4a6ba0d5"
        >
     <counter name="GPU Time Elapsed"
@@ -16351,6 +16411,7 @@
        symbol_name="Ext68"
        underscore_name="ext68"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="eab0942c-5181-4caf-aeec-44d9a0b69ada"
        >
     <counter name="GPU Time Elapsed"
@@ -16493,6 +16554,7 @@
        symbol_name="Ext73"
        underscore_name="ext73"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d9d0c398-6429-4ba8-bc08-6e8556a5880f"
        >
     <counter name="GPU Time Elapsed"
@@ -16640,6 +16702,7 @@
        symbol_name="Ext74"
        underscore_name="ext74"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d91bf24f-08af-4d1d-b957-c2293923c9a4"
        >
     <counter name="GPU Time Elapsed"
@@ -16780,6 +16843,7 @@
        symbol_name="Ext75"
        underscore_name="ext75"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="b5c2eaef-cffa-490b-a80e-de2b37ca63d8"
        >
     <counter name="GPU Time Elapsed"
@@ -16929,6 +16993,7 @@
        symbol_name="Ext76"
        underscore_name="ext76"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d5cdafcf-483d-40f7-8dc9-feca73e94246"
        >
     <counter name="GPU Time Elapsed"
@@ -17071,6 +17136,7 @@
        symbol_name="Ext77"
        underscore_name="ext77"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="240802cf-de55-472f-9e0a-710270ae9487"
        >
     <counter name="GPU Time Elapsed"
@@ -17260,6 +17326,7 @@
        symbol_name="Ext78"
        underscore_name="ext78"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="3dd49211-aa69-4711-87c2-97289ff9cfff"
        >
     <counter name="GPU Time Elapsed"
@@ -17451,6 +17518,7 @@
        symbol_name="Ext79"
        underscore_name="ext79"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="64aeba75-9dbe-4231-81f6-8c991b84c070"
        >
     <counter name="GPU Time Elapsed"
@@ -17608,6 +17676,7 @@
        symbol_name="Ext80"
        underscore_name="ext80"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="3b293ce5-af38-4ae2-96f4-a542d3c68d5e"
        >
     <counter name="GPU Time Elapsed"
@@ -17758,6 +17827,7 @@
        symbol_name="Ext81"
        underscore_name="ext81"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="09516dce-66a0-499f-8457-97f78bb921e6"
        >
     <counter name="GPU Time Elapsed"
@@ -17917,6 +17987,7 @@
        symbol_name="Ext82"
        underscore_name="ext82"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="c0bdc35b-af55-4ac9-8078-f22578201756"
        >
     <counter name="GPU Time Elapsed"
@@ -18069,6 +18140,7 @@
        symbol_name="Ext83"
        underscore_name="ext83"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="7f4b6bdf-4a28-4e6b-a67b-c9a0d320ddb8"
        >
     <counter name="GPU Time Elapsed"
@@ -18455,6 +18527,7 @@
        symbol_name="Ext85"
        underscore_name="ext85"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="e19c5430-c632-43eb-b27f-eeb3d405bfd8"
        >
     <counter name="GPU Time Elapsed"
@@ -18709,6 +18782,7 @@
        symbol_name="Ext86"
        underscore_name="ext86"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d379e5f5-32f3-4a6b-957f-5ccf607dda00"
        >
     <counter name="GPU Time Elapsed"
@@ -18964,6 +19038,7 @@
        symbol_name="Ext87"
        underscore_name="ext87"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="3e86ea71-8695-4815-ac18-0fd4510541a1"
        >
     <counter name="GPU Time Elapsed"
@@ -19148,6 +19223,7 @@
        symbol_name="Ext88"
        underscore_name="ext88"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="31ad28aa-7425-4bb4-b1a3-423821d98d84"
        >
     <counter name="GPU Time Elapsed"
@@ -19332,6 +19408,7 @@
        symbol_name="Ext91"
        underscore_name="ext91"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="a1963e82-2bad-44e2-9bb1-ee18657c09cd"
        >
     <counter name="GPU Time Elapsed"
@@ -19516,6 +19593,7 @@
        symbol_name="Ext92"
        underscore_name="ext92"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="fdf0722d-cb2e-46bd-8c1f-a85c6fbca3ff"
        >
     <counter name="GPU Time Elapsed"
@@ -19700,6 +19778,7 @@
        symbol_name="Ext93"
        underscore_name="ext93"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="e0810ece-3bb5-4786-871b-b504faa00ba7"
        >
     <counter name="GPU Time Elapsed"
@@ -19857,6 +19936,7 @@
        symbol_name="Ext94"
        underscore_name="ext94"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="8697d9f7-3085-4ae7-b88d-e77697972732"
        >
     <counter name="GPU Time Elapsed"
@@ -20007,6 +20087,7 @@
        symbol_name="Ext95"
        underscore_name="ext95"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d059b804-fc25-4cbc-9682-ebc806a0d423"
        >
     <counter name="GPU Time Elapsed"
@@ -20166,6 +20247,7 @@
        symbol_name="Ext96"
        underscore_name="ext96"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="ca3c5e8c-b83a-474f-85fa-af7572a1ce27"
        >
     <counter name="GPU Time Elapsed"
@@ -20318,6 +20400,7 @@
        symbol_name="Ext97"
        underscore_name="ext97"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="fbed5532-2b4f-4194-b856-0404c387b2e4"
        >
     <counter name="GPU Time Elapsed"
@@ -20576,6 +20659,7 @@
        symbol_name="Ext98"
        underscore_name="ext98"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="4c975484-c2f5-4f29-b8fa-8ec1068de77a"
        >
     <counter name="GPU Time Elapsed"
@@ -20769,6 +20853,7 @@
        symbol_name="Ext99"
        underscore_name="ext99"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="13017c9d-9d3a-41d1-8f9c-2eafdcbefab4"
        >
     <counter name="GPU Time Elapsed"
@@ -20964,6 +21049,7 @@
        symbol_name="Ext100"
        underscore_name="ext100"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="a7ef0e01-74c3-48c5-8d0f-00241111cf69"
        >
     <counter name="GPU Time Elapsed"
@@ -21233,6 +21319,7 @@
        symbol_name="Ext101"
        underscore_name="ext101"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="7e86b43f-715e-419a-83eb-e8777fd7c77a"
        >
     <counter name="GPU Time Elapsed"
@@ -21504,6 +21591,7 @@
        symbol_name="Ext102"
        underscore_name="ext102"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="1fb36f5f-04a3-412f-a6ca-80233bf408a0"
        >
     <counter name="GPU Time Elapsed"
@@ -21889,6 +21977,7 @@
        symbol_name="Ext103"
        underscore_name="ext103"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="5228137b-8e8d-4d67-b195-d5f64a88f5f0"
        >
     <counter name="GPU Time Elapsed"
@@ -22274,6 +22363,7 @@
        symbol_name="Ext104"
        underscore_name="ext104"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="5503160a-7b2a-4099-9ec6-0d3a551cb388"
        >
     <counter name="GPU Time Elapsed"
@@ -22446,6 +22536,7 @@
        symbol_name="Ext105"
        underscore_name="ext105"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="418f87f0-b6d8-4684-883e-4f10a79c5070"
        >
     <counter name="GPU Time Elapsed"
@@ -22618,6 +22709,7 @@
        symbol_name="Ext106"
        underscore_name="ext106"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="f5b7256f-9bf6-4c95-94c1-4044cfad0ea6"
        >
     <counter name="GPU Time Elapsed"
@@ -22789,6 +22881,7 @@
        symbol_name="Ext107"
        underscore_name="ext107"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="28d75db6-0eb3-4651-b820-513a76013504"
        >
     <counter name="GPU Time Elapsed"
@@ -22960,6 +23053,7 @@
        symbol_name="Ext108"
        underscore_name="ext108"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="080da0b6-29a4-416b-b20f-ece0e2527f60"
        >
     <counter name="GPU Time Elapsed"
@@ -23131,6 +23225,7 @@
        symbol_name="Ext109"
        underscore_name="ext109"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="75a9e66d-9bbe-46d7-971e-71ca8ef680ff"
        >
     <counter name="GPU Time Elapsed"
@@ -23300,6 +23395,7 @@
        symbol_name="Ext110"
        underscore_name="ext110"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="ae5589a9-7e09-4343-a611-3161977315d5"
        >
     <counter name="GPU Time Elapsed"
@@ -23473,6 +23569,7 @@
        symbol_name="Ext111"
        underscore_name="ext111"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="a5e1e738-1338-4d76-a6a7-5517111cc852"
        >
     <counter name="GPU Time Elapsed"
@@ -23646,6 +23743,7 @@
        symbol_name="Ext113"
        underscore_name="ext113"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="1a24edc7-8187-43b6-86aa-fcf56c223893"
        >
     <counter name="GPU Time Elapsed"
@@ -23961,6 +24059,7 @@
        symbol_name="Ext114"
        underscore_name="ext114"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="32565d07-8ac7-41c3-89a3-66d0c1100616"
        >
     <counter name="GPU Time Elapsed"
@@ -24278,6 +24377,7 @@
        symbol_name="Ext116"
        underscore_name="ext116"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="f725009a-c5e7-4418-9adf-ddb70cb2edde"
        >
     <counter name="GPU Time Elapsed"
@@ -24463,6 +24563,7 @@
        symbol_name="Ext117"
        underscore_name="ext117"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="f633497f-c116-461f-a0e9-bb3fdcef7683"
        >
     <counter name="GPU Time Elapsed"
@@ -24650,6 +24751,7 @@
        symbol_name="Ext118"
        underscore_name="ext118"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="bae9e67e-4b5c-4fb9-b21d-21a6966bed46"
        >
     <counter name="GPU Time Elapsed"
@@ -24897,6 +24999,7 @@
        symbol_name="Ext119"
        underscore_name="ext119"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="95c08faf-813c-4b71-9062-09569c5ff432"
        >
     <counter name="GPU Time Elapsed"
@@ -25146,6 +25249,7 @@
        symbol_name="Ext120"
        underscore_name="ext120"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="045ee54e-4e02-4877-adb1-5bd14ba49100"
        >
     <counter name="GPU Time Elapsed"
@@ -25333,6 +25437,7 @@
        symbol_name="Ext121"
        underscore_name="ext121"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="2e3894b5-2b6a-49c4-b2b6-0dde7375cb7b"
        >
     <counter name="GPU Time Elapsed"
@@ -25520,6 +25625,7 @@
        symbol_name="Ext122"
        underscore_name="ext122"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="25ca1237-2ed3-447a-9767-1a85da89daef"
        >
     <counter name="GPU Time Elapsed"
@@ -25823,6 +25929,7 @@
        symbol_name="Ext123"
        underscore_name="ext123"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="cf41fd07-c4c2-466c-9d85-774dcde02359"
        >
     <counter name="GPU Time Elapsed"
@@ -26136,6 +26243,7 @@
        symbol_name="Ext124"
        underscore_name="ext124"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="2445e8f0-04c4-43f5-87ff-e2f99a2528ed"
        >
     <counter name="GPU Time Elapsed"
@@ -26424,6 +26532,7 @@
        symbol_name="Ext125"
        underscore_name="ext125"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="446192f5-9062-4f1e-a99e-1be87cdcd0b8"
        >
     <counter name="GPU Time Elapsed"
@@ -26714,6 +26823,7 @@
        symbol_name="Ext126"
        underscore_name="ext126"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="9a0ec3ea-1d61-413e-8b9c-169cdec1f9b3"
        >
     <counter name="GPU Time Elapsed"
@@ -26937,6 +27047,7 @@
        symbol_name="Ext127"
        underscore_name="ext127"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="1f70ab0a-6efd-461b-b06e-3b47d3602f36"
        >
     <counter name="GPU Time Elapsed"
@@ -27162,6 +27273,7 @@
        symbol_name="Ext128"
        underscore_name="ext128"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="9eedb03f-340b-40ec-8a66-43d01973003e"
        >
     <counter name="GPU Time Elapsed"
@@ -27310,6 +27422,7 @@
        symbol_name="Ext129"
        underscore_name="ext129"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="0e5ffe58-83b2-445b-a439-9ee7a01642d4"
        >
     <counter name="GPU Time Elapsed"
@@ -27461,6 +27574,7 @@
        symbol_name="Ext130"
        underscore_name="ext130"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="78925a28-3e52-4d74-b03b-cb27c6a4401a"
        >
     <counter name="GPU Time Elapsed"
@@ -27594,6 +27708,7 @@
        symbol_name="Ext131"
        underscore_name="ext131"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="1e91d8d9-ced4-4240-bf9e-fdd7d015c058"
        >
     <counter name="GPU Time Elapsed"
@@ -27720,6 +27835,7 @@
        symbol_name="Ext132"
        underscore_name="ext132"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="1cacf022-b4d4-401c-abec-acc0a3353adc"
        >
     <counter name="GPU Time Elapsed"
@@ -27855,6 +27971,7 @@
        symbol_name="Ext133"
        underscore_name="ext133"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="3c15657a-b3da-4513-8b9c-08bcc1ca0226"
        >
     <counter name="GPU Time Elapsed"
@@ -27983,6 +28100,7 @@
        symbol_name="Ext134"
        underscore_name="ext134"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="da34c79f-d1c6-4d15-b848-2085528bb86b"
        >
     <counter name="GPU Time Elapsed"
@@ -28099,6 +28217,7 @@
        symbol_name="Ext135"
        underscore_name="ext135"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="33ceab81-26bc-49f3-a124-5dbb2d592a87"
        >
     <counter name="GPU Time Elapsed"
@@ -28206,6 +28325,7 @@
        symbol_name="Ext136"
        underscore_name="ext136"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d8b7d2f7-7c3a-4a68-b6c1-48d197b22945"
        >
     <counter name="GPU Time Elapsed"
@@ -28324,6 +28444,7 @@
        symbol_name="Ext137"
        underscore_name="ext137"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="01d6bd34-b8d1-4412-b53b-0d16b327abec"
        >
     <counter name="GPU Time Elapsed"
@@ -28433,6 +28554,7 @@
        symbol_name="Ext138"
        underscore_name="ext138"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="7485f9ec-ac5f-4c6d-8c5f-6a023e7d29d5"
        >
     <counter name="GPU Time Elapsed"
@@ -28549,6 +28671,7 @@
        symbol_name="Ext139"
        underscore_name="ext139"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="944dc12b-b2fd-4bf5-a59d-540e2b280cdd"
        >
     <counter name="GPU Time Elapsed"
@@ -28656,6 +28779,7 @@
        symbol_name="Ext140"
        underscore_name="ext140"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="5c97330a-b407-4ef8-908f-7fdeec216f81"
        >
     <counter name="GPU Time Elapsed"
@@ -28774,6 +28898,7 @@
        symbol_name="Ext141"
        underscore_name="ext141"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="65e4ac2a-db8f-4918-bdd6-ac4d85de160e"
        >
     <counter name="GPU Time Elapsed"
@@ -28883,6 +29008,7 @@
        symbol_name="Ext142"
        underscore_name="ext142"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="0eb11775-ad71-44d4-ad2c-c2fa6431b144"
        >
     <counter name="GPU Time Elapsed"
@@ -28999,6 +29125,7 @@
        symbol_name="Ext143"
        underscore_name="ext143"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d7736d53-f1cb-4899-8f3d-d8aaad1f1c67"
        >
     <counter name="GPU Time Elapsed"
@@ -29106,6 +29233,7 @@
        symbol_name="Ext144"
        underscore_name="ext144"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="496219cc-316b-4945-9fc4-180e60331262"
        >
     <counter name="GPU Time Elapsed"
@@ -29224,6 +29352,7 @@
        symbol_name="Ext145"
        underscore_name="ext145"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="c7e6721e-51f9-40af-ba8b-0520a1082855"
        >
     <counter name="GPU Time Elapsed"
@@ -29333,6 +29462,7 @@
        symbol_name="Ext146"
        underscore_name="ext146"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="0e9b064c-9fa7-4e85-8aaa-cc871010117d"
        >
     <counter name="GPU Time Elapsed"
@@ -29449,6 +29579,7 @@
        symbol_name="Ext147"
        underscore_name="ext147"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="44d73f02-f843-4717-a3d5-3d1dfbd3f106"
        >
     <counter name="GPU Time Elapsed"
@@ -29556,6 +29687,7 @@
        symbol_name="Ext148"
        underscore_name="ext148"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="b84f370e-1b64-41d1-a4d8-f095fb79e5f8"
        >
     <counter name="GPU Time Elapsed"
@@ -29674,6 +29806,7 @@
        symbol_name="Ext149"
        underscore_name="ext149"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="772a2c24-0a03-480e-baca-72f2f55a5422"
        >
     <counter name="GPU Time Elapsed"
@@ -29783,6 +29916,7 @@
        symbol_name="Ext150"
        underscore_name="ext150"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="953d3bf8-af3d-4287-ac22-dcd122c5eb51"
        >
     <counter name="GPU Time Elapsed"
@@ -29897,6 +30031,7 @@
        symbol_name="Ext151"
        underscore_name="ext151"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="dbb009c2-98ad-4af0-905a-e7808ac5424c"
        >
     <counter name="GPU Time Elapsed"
@@ -30003,6 +30138,7 @@
        symbol_name="Ext152"
        underscore_name="ext152"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="16fd8981-676d-4cbc-b010-8d731ba66a06"
        >
     <counter name="GPU Time Elapsed"
@@ -30119,6 +30255,7 @@
        symbol_name="Ext153"
        underscore_name="ext153"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="7bcdd766-98a5-461a-ac8e-d8c648958364"
        >
     <counter name="GPU Time Elapsed"
@@ -30227,6 +30364,7 @@
        symbol_name="Ext154"
        underscore_name="ext154"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="c0459fa8-1790-46b8-a0f8-3064baf7c670"
        >
     <counter name="GPU Time Elapsed"
@@ -30532,6 +30670,7 @@
        symbol_name="Ext155"
        underscore_name="ext155"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="304d9439-4bdd-48a9-a82e-15b3533afaf4"
        >
     <counter name="GPU Time Elapsed"
@@ -30667,6 +30806,7 @@
        symbol_name="Ext156"
        underscore_name="ext156"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="90691d58-782d-459c-a242-f6e515fe9567"
        >
     <counter name="GPU Time Elapsed"
@@ -30803,6 +30943,7 @@
        symbol_name="Ext158"
        underscore_name="ext158"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="cf34a431-3cc9-4b70-a84e-0d31a71170f0"
        >
     <counter name="GPU Time Elapsed"
@@ -31070,6 +31211,7 @@
        symbol_name="Ext159"
        underscore_name="ext159"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="ad3cd014-8897-4613-8653-6d80c6eaff88"
        >
     <counter name="GPU Time Elapsed"
@@ -31271,6 +31413,7 @@
        symbol_name="Ext160"
        underscore_name="ext160"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="aa12de63-7d11-4acf-af96-be89807729f7"
        >
     <counter name="GPU Time Elapsed"
@@ -31474,6 +31617,7 @@
        symbol_name="Ext161"
        underscore_name="ext161"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="ac013132-7e0c-4143-bc34-ea6428ce3082"
        >
     <counter name="GPU Time Elapsed"
@@ -31675,6 +31819,7 @@
        symbol_name="Ext162"
        underscore_name="ext162"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="b9d8323a-7bb4-41b5-b99b-43ed99e23590"
        >
     <counter name="GPU Time Elapsed"
@@ -31878,6 +32023,7 @@
        symbol_name="Ext163"
        underscore_name="ext163"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="6ae2c19e-672c-4ad6-9d59-0a391af1af4f"
        >
     <counter name="GPU Time Elapsed"
@@ -32079,6 +32225,7 @@
        symbol_name="Ext164"
        underscore_name="ext164"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="c76b6b40-9d7f-48f6-b6da-595252c884f4"
        >
     <counter name="GPU Time Elapsed"
@@ -32282,6 +32429,7 @@
        symbol_name="Ext165"
        underscore_name="ext165"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="a85da4d8-d984-45f3-8dbe-c8678eac8aae"
        >
     <counter name="GPU Time Elapsed"
@@ -32483,6 +32631,7 @@
        symbol_name="Ext166"
        underscore_name="ext166"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="fbc7362e-4d05-451d-833e-f0ce5e7ad8e3"
        >
     <counter name="GPU Time Elapsed"
@@ -32686,6 +32835,7 @@
        symbol_name="Ext167"
        underscore_name="ext167"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="881454da-d271-41ba-9dfb-0cc354fb5aea"
        >
     <counter name="GPU Time Elapsed"
@@ -32887,6 +33037,7 @@
        symbol_name="Ext168"
        underscore_name="ext168"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="9f2b827b-01c6-4e82-b283-dfe91af30d88"
        >
     <counter name="GPU Time Elapsed"
@@ -33090,6 +33241,7 @@
        symbol_name="Ext169"
        underscore_name="ext169"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="c6b40da2-4783-45d7-8252-9a4f1f75faf4"
        >
     <counter name="GPU Time Elapsed"
@@ -33291,6 +33443,7 @@
        symbol_name="Ext170"
        underscore_name="ext170"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="b5883529-3595-412d-b40f-b7ade9cc3304"
        >
     <counter name="GPU Time Elapsed"
@@ -33494,6 +33647,7 @@
        symbol_name="Ext171"
        underscore_name="ext171"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="2455c20b-95bb-4e9f-8db2-597ba9447025"
        >
     <counter name="GPU Time Elapsed"
@@ -33871,6 +34025,7 @@
        symbol_name="Ext172"
        underscore_name="ext172"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="ec18cd0b-7caa-48d0-9a16-418ecbe1096e"
        >
     <counter name="GPU Time Elapsed"
@@ -34250,6 +34405,7 @@
        symbol_name="Ext173"
        underscore_name="ext173"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="3628b2de-d9f9-4db2-a74f-32a314e591c5"
        >
     <counter name="GPU Time Elapsed"
@@ -34472,6 +34628,7 @@
        symbol_name="Ext174"
        underscore_name="ext174"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d35ecd39-0a9d-48f7-bf87-d3c318b8fadd"
        >
     <counter name="GPU Time Elapsed"
@@ -34694,6 +34851,7 @@
        symbol_name="Ext175"
        underscore_name="ext175"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d0d0e9cc-494c-4b01-8a43-683aae5beaff"
        >
     <counter name="GPU Time Elapsed"
@@ -34911,6 +35069,7 @@
        symbol_name="Ext176"
        underscore_name="ext176"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="c5fde834-52c8-411b-854e-8d3197def109"
        >
     <counter name="GPU Time Elapsed"
@@ -35123,6 +35282,7 @@
        symbol_name="Ext177"
        underscore_name="ext177"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="55830ebd-062b-40e8-8d5c-e921429957ff"
        >
     <counter name="GPU Time Elapsed"
@@ -35347,6 +35507,7 @@
        symbol_name="Ext178"
        underscore_name="ext178"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="9603d88f-e5bf-47b4-85fd-fbbb68f42632"
        >
     <counter name="GPU Time Elapsed"
@@ -35571,6 +35732,7 @@
        symbol_name="Ext179"
        underscore_name="ext179"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="b05bd7bd-387f-4fd7-a1b4-06a1dab5bc14"
        >
     <counter name="GPU Time Elapsed"
@@ -35790,6 +35952,7 @@
        symbol_name="Ext180"
        underscore_name="ext180"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="49dc9023-be7b-4102-a4a2-d31b9a6b1ce4"
        >
     <counter name="GPU Time Elapsed"
@@ -36004,6 +36167,7 @@
        symbol_name="Ext181"
        underscore_name="ext181"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="871d8a6b-7c73-4cd7-a4ed-4bdb58d5b6ee"
        >
     <counter name="GPU Time Elapsed"
@@ -36183,6 +36347,7 @@
        symbol_name="Ext182"
        underscore_name="ext182"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="25a2f80d-147e-4363-a0cb-53584b7a837d"
        >
     <counter name="GPU Time Elapsed"
@@ -36364,6 +36529,7 @@
        symbol_name="Ext183"
        underscore_name="ext183"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="71863fcf-d57c-433b-858f-87f5f11ec3da"
        >
     <counter name="GPU Time Elapsed"
@@ -36585,6 +36751,7 @@
        symbol_name="Ext184"
        underscore_name="ext184"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="c29640d9-39eb-4a03-9043-2a54eb5a3112"
        >
     <counter name="GPU Time Elapsed"
@@ -36808,6 +36975,7 @@
        symbol_name="Ext185"
        underscore_name="ext185"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="00882747-d1dd-4ba5-9b72-96df25dad7bd"
        >
     <counter name="GPU Time Elapsed"
@@ -36998,6 +37166,7 @@
        symbol_name="Ext186"
        underscore_name="ext186"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="89aea44f-ffa6-43cc-9a9c-103b4930e103"
        >
     <counter name="GPU Time Elapsed"
@@ -37190,6 +37359,7 @@
        symbol_name="Ext188"
        underscore_name="ext188"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="11e92a4a-d605-499c-9159-e79797c230de"
        >
     <counter name="GPU Time Elapsed"
@@ -37380,6 +37550,7 @@
        symbol_name="Ext189"
        underscore_name="ext189"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="27c2ef51-6689-4ffc-acaa-3f46a8e834cf"
        >
     <counter name="GPU Time Elapsed"
@@ -37572,6 +37743,7 @@
        symbol_name="Ext190"
        underscore_name="ext190"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="1625df84-2f24-4aed-9ced-e652184c9949"
        >
     <counter name="GPU Time Elapsed"
@@ -37723,6 +37895,7 @@
        symbol_name="Ext191"
        underscore_name="ext191"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d98e7947-ecee-46a9-b3ac-619d13d32b1a"
        >
     <counter name="GPU Time Elapsed"
@@ -37876,6 +38049,7 @@
        symbol_name="Ext192"
        underscore_name="ext192"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="ed973589-e13c-4115-a2b1-08bc443a4e8d"
        >
     <counter name="GPU Time Elapsed"
@@ -38154,6 +38328,7 @@
        symbol_name="Ext193"
        underscore_name="ext193"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="9bb6c40a-ec2c-4292-8ac8-d8b413abd301"
        >
     <counter name="GPU Time Elapsed"
@@ -38434,6 +38609,7 @@
        symbol_name="Ext195"
        underscore_name="ext195"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="9a911d6f-39b5-425d-aea3-15e49e6395fa"
        >
     <counter name="GPU Time Elapsed"
@@ -38716,6 +38892,7 @@
        symbol_name="Ext196"
        underscore_name="ext196"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="814b3516-d465-4faa-b89c-67c30c96a256"
        >
     <counter name="GPU Time Elapsed"
@@ -39000,6 +39177,7 @@
        symbol_name="Ext198"
        underscore_name="ext198"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="3663ed58-377d-40c3-9af0-913cbc5d954b"
        >
     <counter name="GPU Time Elapsed"
@@ -39181,6 +39359,7 @@
        symbol_name="Ext199"
        underscore_name="ext199"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="6ce22a01-9025-4afb-b3e9-652ce0c693b5"
        >
     <counter name="GPU Time Elapsed"
@@ -39366,6 +39545,7 @@
        symbol_name="Ext200"
        underscore_name="ext200"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="7f59bef3-f0f1-4856-b4f3-e64fa9913956"
        >
     <counter name="GPU Time Elapsed"
@@ -39549,6 +39729,7 @@
        symbol_name="Ext201"
        underscore_name="ext201"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="8982721e-16cb-42ec-92dd-eb049ae7a503"
        >
     <counter name="GPU Time Elapsed"
@@ -39736,6 +39917,7 @@
        symbol_name="Ext202"
        underscore_name="ext202"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d86c1224-3af7-4df1-a44d-e4522f22b2ae"
        >
     <counter name="GPU Time Elapsed"
@@ -39836,6 +40018,7 @@
        symbol_name="Ext203"
        underscore_name="ext203"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="03090380-689d-481a-ace2-9725ea0c10d2"
        >
     <counter name="GPU Time Elapsed"
@@ -39936,6 +40119,7 @@
        symbol_name="Ext204"
        underscore_name="ext204"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="78a1b79a-a5fd-4fa0-b33d-2ec51404e3b9"
        >
     <counter name="GPU Time Elapsed"
@@ -40141,6 +40325,7 @@
        symbol_name="Ext205"
        underscore_name="ext205"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="b3c2bff1-e203-4c90-8719-66546c370005"
        >
     <counter name="GPU Time Elapsed"
@@ -40346,6 +40531,7 @@
        symbol_name="Ext206"
        underscore_name="ext206"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="a209e458-76a6-46fc-bb62-29850f38eb0d"
        >
     <counter name="GPU Time Elapsed"
@@ -40553,6 +40739,7 @@
        symbol_name="Ext207"
        underscore_name="ext207"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="06aea283-f183-4e96-85a5-3bb7193f06c7"
        >
     <counter name="GPU Time Elapsed"
@@ -40760,6 +40947,7 @@
        symbol_name="Ext212"
        underscore_name="ext212"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="0c6d24a9-2489-4fcd-a9f6-d44380417dee"
        >
     <counter name="GPU Time Elapsed"
@@ -40951,6 +41139,7 @@
        symbol_name="Ext213"
        underscore_name="ext213"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="39a43efe-ee39-4fa2-88c4-3dfc34a74f4f"
        >
     <counter name="GPU Time Elapsed"
@@ -41144,6 +41333,7 @@
        symbol_name="Ext214"
        underscore_name="ext214"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="f3ca645b-a2b3-496b-bf6d-f8f26b1faa86"
        >
     <counter name="GPU Time Elapsed"
@@ -41328,6 +41518,7 @@
        symbol_name="Ext215"
        underscore_name="ext215"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="947b168e-df39-4e92-a622-0884c81221b3"
        >
     <counter name="GPU Time Elapsed"
@@ -41514,6 +41705,7 @@
        symbol_name="Ext220"
        underscore_name="ext220"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="0722885e-4df8-4c98-8336-72b5e129e6be"
        >
     <counter name="GPU Time Elapsed"
@@ -41781,6 +41973,7 @@
        symbol_name="Ext225"
        underscore_name="ext225"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="db4a27f8-40a0-4cb5-aa3a-5368add92cd5"
        >
     <counter name="GPU Time Elapsed"
@@ -41915,6 +42108,7 @@
        symbol_name="Ext226"
        underscore_name="ext226"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="6b5736f5-a627-4cb6-9078-1c05137bc460"
        >
     <counter name="GPU Time Elapsed"
@@ -42051,6 +42245,7 @@
        symbol_name="Ext227"
        underscore_name="ext227"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="5e6f4959-c37c-4be0-bb4e-2f1c1aef2bb3"
        >
     <counter name="GPU Time Elapsed"
@@ -42185,6 +42380,7 @@
        symbol_name="Ext228"
        underscore_name="ext228"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="fe2d673e-8b2e-47d0-b9db-2c50e10ee53e"
        >
     <counter name="GPU Time Elapsed"
@@ -42321,6 +42517,7 @@
        symbol_name="Ext229"
        underscore_name="ext229"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="cb94a696-bfbe-4566-8225-c337f988600c"
        >
     <counter name="GPU Time Elapsed"
@@ -42461,6 +42658,7 @@
        symbol_name="Ext230"
        underscore_name="ext230"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="ec3032cb-df12-445c-9eb2-6b1031d2dc86"
        >
     <counter name="GPU Time Elapsed"
@@ -42603,6 +42801,7 @@
        symbol_name="Ext231"
        underscore_name="ext231"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="e5e22fbb-0ff4-44f6-a549-6ed41df0dd27"
        >
     <counter name="GPU Time Elapsed"
@@ -42736,6 +42935,7 @@
        symbol_name="Ext232"
        underscore_name="ext232"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="b6defb71-0fe8-400e-ae27-565ce9067082"
        >
     <counter name="GPU Time Elapsed"
@@ -42871,6 +43071,7 @@
        symbol_name="Ext236"
        underscore_name="ext236"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="98d5c3d9-bca6-4699-99e3-7b95a23025ce"
        >
     <counter name="GPU Time Elapsed"
@@ -43099,6 +43300,7 @@
        symbol_name="Ext237"
        underscore_name="ext237"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="4256db1d-9083-4497-9000-59bbcf9eee72"
        >
     <counter name="GPU Time Elapsed"
@@ -43399,6 +43601,7 @@
        symbol_name="Ext239"
        underscore_name="ext239"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="5ba2bf20-ca4e-4872-86fd-9026c9de8c93"
        >
     <counter name="GPU Time Elapsed"
@@ -43511,6 +43714,7 @@
        symbol_name="Ext240"
        underscore_name="ext240"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="fe8810c2-457b-47e0-a3b9-50cab24718b4"
        >
     <counter name="GPU Time Elapsed"
@@ -43623,6 +43827,7 @@
        symbol_name="Ext500"
        underscore_name="ext500"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="ee0cc3d0-9ac8-4608-aaca-b37fd9d18238"
        >
     <counter name="GPU Time Elapsed"
@@ -44036,6 +44241,7 @@
        symbol_name="Ext501"
        underscore_name="ext501"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="f6e20d5b-52be-4035-85c2-818a690bf601"
        >
     <counter name="GPU Time Elapsed"
@@ -44449,6 +44655,7 @@
        symbol_name="Ext502"
        underscore_name="ext502"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d09cedef-e3e3-41b5-8ce8-ddc3933339ca"
        >
     <counter name="GPU Time Elapsed"
@@ -44862,6 +45069,7 @@
        symbol_name="Ext503"
        underscore_name="ext503"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="96067625-3663-4f9a-8b26-74e47ab1aff4"
        >
     <counter name="GPU Time Elapsed"
@@ -45275,6 +45483,7 @@
        symbol_name="Ext508"
        underscore_name="ext508"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="2bc8b90d-997c-4d62-b101-fe1aa74036e5"
        >
     <counter name="GPU Time Elapsed"
@@ -45324,7 +45533,7 @@
              data_type="uint64"
              units="bytes"
              semantic_type="throughput"
-             equation="B 2 READ 2 B 3 READ UMUL UADD 4 B 4 READ UMUL UADD 8 B 5 READ UMUL UADD 16 B 6 READ UMUL UADD 32 B 7 READ UMUL UADD 64 C 0 READ UMUL UADD"
+             equation="B 3 READ 2 C 7 READ UMUL UADD 4 C 6 READ UMUL UADD 8 C 5 READ UMUL UADD 16 C 4 READ UMUL UADD 32 C 3 READ UMUL UADD 64 C 2 READ UMUL UADD"
              availability="$GtSlice0XeCore0"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -45338,7 +45547,7 @@
              data_type="uint64"
              units="bytes"
              semantic_type="throughput"
-             equation="C 1 READ 2 C 2 READ UMUL UADD 4 C 3 READ UMUL UADD 8 C 4 READ UMUL UADD 16 C 5 READ UMUL UADD 32 C 6 READ UMUL UADD 64 C 7 READ UMUL UADD"
+             equation="B 2 READ 2 C 1 READ UMUL UADD 4 C 0 READ UMUL UADD 8 B 7 READ UMUL UADD 16 B 6 READ UMUL UADD 32 B 5 READ UMUL UADD 64 B 4 READ UMUL UADD"
              availability="$GtSlice0XeCore1"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -45351,19 +45560,20 @@
         <register type="NOA" address="0x00009888" value="0x180802B4" />
         <register type="NOA" address="0x00009888" value="0x182802B4" />
         <register type="NOA" address="0x00009888" value="0x04080010" />
-        <register type="NOA" address="0x00009888" value="0x0A080247" />
-        <register type="NOA" address="0x00009888" value="0x0C0802CA" />
-        <register type="NOA" address="0x00009888" value="0x0E08034C" />
-        <register type="NOA" address="0x00009888" value="0x1008000E" />
+        <register type="NOA" address="0x00009888" value="0x0A0801C0" />
+        <register type="NOA" address="0x00009888" value="0x1208030D" />
+        <register type="NOA" address="0x00009888" value="0x1408028B" />
+        <register type="NOA" address="0x00009888" value="0x16080209" />
         <register type="NOA" address="0x00009888" value="0x06080000" />
         <register type="NOA" address="0x00009888" value="0x00080000" />
         <register type="NOA" address="0x00009888" value="0x02080000" />
         <register type="NOA" address="0x00009888" value="0x04280010" />
-        <register type="NOA" address="0x00009888" value="0x102801C0" />
-        <register type="NOA" address="0x00009888" value="0x12280289" />
-        <register type="NOA" address="0x00009888" value="0x1428030B" />
-        <register type="NOA" address="0x00009888" value="0x1628038D" />
+        <register type="NOA" address="0x00009888" value="0x0A280007" />
+        <register type="NOA" address="0x00009888" value="0x0C28030D" />
+        <register type="NOA" address="0x00009888" value="0x0E28028B" />
+        <register type="NOA" address="0x00009888" value="0x10280209" />
         <register type="NOA" address="0x00009888" value="0x06280000" />
+        <register type="NOA" address="0x00009888" value="0x00280000" />
         <register type="NOA" address="0x00009888" value="0x02280000" />
         <register type="NOA" address="0x00009884" value="0x00000004" />
         <register type="NOA" address="0x00009888" value="0x00015550" />
@@ -45371,8 +45581,8 @@
         <register type="NOA" address="0x00009888" value="0x00045550" />
         <register type="NOA" address="0x00009888" value="0x02045555" />
         <register type="NOA" address="0x00009888" value="0x000BFFFC" />
-        <register type="NOA" address="0x00009888" value="0x0009AAA0" />
-        <register type="NOA" address="0x00009888" value="0x0209FFFE" />
+        <register type="NOA" address="0x00009888" value="0x0009FFB0" />
+        <register type="NOA" address="0x00009888" value="0x0209AAAF" />
         <register type="NOA" address="0x00009888" value="0x000AAAA0" />
         <register type="NOA" address="0x00009888" value="0x020AAAAA" />
         <register type="NOA" address="0x00009884" value="0x00000008" />
@@ -45415,6 +45625,7 @@
        symbol_name="Ext509"
        underscore_name="ext509"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="79252877-1dcd-4700-b4bd-58bce74b796d"
        >
     <counter name="GPU Time Elapsed"
@@ -45464,7 +45675,7 @@
              data_type="uint64"
              units="bytes"
              semantic_type="throughput"
-             equation="C 1 READ 2 C 2 READ UMUL UADD 4 C 3 READ UMUL UADD 8 C 4 READ UMUL UADD 16 C 5 READ UMUL UADD 32 C 6 READ UMUL UADD 64 C 7 READ UMUL UADD"
+             equation="C 7 READ 2 C 6 READ UMUL UADD 4 C 5 READ UMUL UADD 8 C 4 READ UMUL UADD 16 C 3 READ UMUL UADD 32 C 2 READ UMUL UADD 64 C 1 READ UMUL UADD"
              availability="$GtSlice0XeCore0"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -45478,7 +45689,7 @@
              data_type="uint64"
              units="bytes"
              semantic_type="throughput"
-             equation="B 2 READ 2 B 3 READ UMUL UADD 4 B 4 READ UMUL UADD 8 B 5 READ UMUL UADD 16 B 6 READ UMUL UADD 32 B 7 READ UMUL UADD 64 C 0 READ UMUL UADD"
+             equation="C 0 READ 2 B 7 READ UMUL UADD 4 B 6 READ UMUL UADD 8 B 5 READ UMUL UADD 16 B 4 READ UMUL UADD 32 B 3 READ UMUL UADD 64 B 2 READ UMUL UADD"
              availability="$GtSlice0XeCore1"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -45489,19 +45700,21 @@
         <register type="NOA" address="0x00000D04" value="0x00000200" />
         <register type="NOA" address="0x00009884" value="0x0000000C" />
         <register type="NOA" address="0x00009888" value="0x1C085400" />
+        <register type="NOA" address="0x00009888" value="0x1E080014" />
         <register type="NOA" address="0x00009888" value="0x1C285400" />
-        <register type="NOA" address="0x00009888" value="0x04080008" />
-        <register type="NOA" address="0x00009888" value="0x10080000" />
-        <register type="NOA" address="0x00009888" value="0x12080081" />
-        <register type="NOA" address="0x00009888" value="0x14080103" />
-        <register type="NOA" address="0x00009888" value="0x16080185" />
+        <register type="NOA" address="0x00009888" value="0x1E280014" />
+        <register type="NOA" address="0x00009888" value="0x04080098" />
+        <register type="NOA" address="0x00009888" value="0x10080140" />
+        <register type="NOA" address="0x00009888" value="0x120800C4" />
+        <register type="NOA" address="0x00009888" value="0x14080042" />
+        <register type="NOA" address="0x00009888" value="0x160803C0" />
         <register type="NOA" address="0x00009888" value="0x06080000" />
         <register type="NOA" address="0x00009888" value="0x02080000" />
-        <register type="NOA" address="0x00009888" value="0x04280008" />
-        <register type="NOA" address="0x00009888" value="0x0A280040" />
-        <register type="NOA" address="0x00009888" value="0x0C2800C2" />
-        <register type="NOA" address="0x00009888" value="0x0E280144" />
-        <register type="NOA" address="0x00009888" value="0x10280006" />
+        <register type="NOA" address="0x00009888" value="0x04280098" />
+        <register type="NOA" address="0x00009888" value="0x0A280105" />
+        <register type="NOA" address="0x00009888" value="0x0C280083" />
+        <register type="NOA" address="0x00009888" value="0x0E280001" />
+        <register type="NOA" address="0x00009888" value="0x1028000F" />
         <register type="NOA" address="0x00009888" value="0x06280000" />
         <register type="NOA" address="0x00009888" value="0x00280000" />
         <register type="NOA" address="0x00009888" value="0x02280000" />
@@ -45555,6 +45768,7 @@
        symbol_name="Ext510"
        underscore_name="ext510"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="68ac1770-b062-48cd-94f4-44c6ae16867a"
        >
     <counter name="GPU Time Elapsed"
@@ -45604,7 +45818,7 @@
              data_type="uint64"
              units="bytes"
              semantic_type="throughput"
-             equation="B 2 READ 2 C 7 READ UMUL UADD 4 C 6 READ UMUL UADD 8 C 5 READ UMUL UADD 16 C 4 READ UMUL UADD 32 C 3 READ UMUL UADD 64 C 2 READ UMUL UADD"
+             equation="B 3 READ 2 C 7 READ UMUL UADD 4 C 6 READ UMUL UADD 8 C 5 READ UMUL UADD 16 C 4 READ UMUL UADD 32 C 3 READ UMUL UADD 64 C 2 READ UMUL UADD"
              availability="$GtSlice0XeCore2"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -45618,7 +45832,7 @@
              data_type="uint64"
              units="bytes"
              semantic_type="throughput"
-             equation="C 1 READ 2 C 0 READ UMUL UADD 4 B 7 READ UMUL UADD 8 B 6 READ UMUL UADD 16 B 5 READ UMUL UADD 32 B 4 READ UMUL UADD 64 B 3 READ UMUL UADD"
+             equation="B 2 READ 2 C 1 READ UMUL UADD 4 C 0 READ UMUL UADD 8 B 7 READ UMUL UADD 16 B 6 READ UMUL UADD 32 B 5 READ UMUL UADD 64 B 4 READ UMUL UADD"
              availability="$GtSlice0XeCore3"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -45629,30 +45843,30 @@
         <register type="NOA" address="0x00000D04" value="0x00000200" />
         <register type="NOA" address="0x00009884" value="0x0000000C" />
         <register type="NOA" address="0x00009888" value="0x184802B4" />
-        <register type="NOA" address="0x00009888" value="0x18680295" />
+        <register type="NOA" address="0x00009888" value="0x186802B4" />
         <register type="NOA" address="0x00009888" value="0x04480010" />
-        <register type="NOA" address="0x00009888" value="0x0A480007" />
-        <register type="NOA" address="0x00009888" value="0x1248034E" />
-        <register type="NOA" address="0x00009888" value="0x144802CC" />
-        <register type="NOA" address="0x00009888" value="0x1648024A" />
+        <register type="NOA" address="0x00009888" value="0x0A4801C0" />
+        <register type="NOA" address="0x00009888" value="0x1248030D" />
+        <register type="NOA" address="0x00009888" value="0x1448028B" />
+        <register type="NOA" address="0x00009888" value="0x16480209" />
         <register type="NOA" address="0x00009888" value="0x06480000" />
         <register type="NOA" address="0x00009888" value="0x00480000" />
         <register type="NOA" address="0x00009888" value="0x02480000" />
         <register type="NOA" address="0x00009888" value="0x04680010" />
-        <register type="NOA" address="0x00009888" value="0x0A680180" />
-        <register type="NOA" address="0x00009888" value="0x0C680105" />
-        <register type="NOA" address="0x00009888" value="0x0E680083" />
-        <register type="NOA" address="0x00009888" value="0x106803C1" />
+        <register type="NOA" address="0x00009888" value="0x0A680007" />
+        <register type="NOA" address="0x00009888" value="0x0C68030D" />
+        <register type="NOA" address="0x00009888" value="0x0E68028B" />
+        <register type="NOA" address="0x00009888" value="0x10680209" />
         <register type="NOA" address="0x00009888" value="0x06680000" />
         <register type="NOA" address="0x00009888" value="0x00680000" />
         <register type="NOA" address="0x00009888" value="0x02680000" />
         <register type="NOA" address="0x00009884" value="0x00000004" />
-        <register type="NOA" address="0x00009888" value="0x00010030" />
+        <register type="NOA" address="0x00009888" value="0x000100C0" />
         <register type="NOA" address="0x00009888" value="0x0201FFF0" />
-        <register type="NOA" address="0x00009888" value="0x000A0020" />
+        <register type="NOA" address="0x00009888" value="0x000A0080" />
         <register type="NOA" address="0x00009888" value="0x020AAAA0" />
         <register type="NOA" address="0x00009884" value="0x00000008" />
-        <register type="NOA" address="0x00009888" value="0x0002FFE0" />
+        <register type="NOA" address="0x00009888" value="0x0002FFB0" />
         <register type="NOA" address="0x00009888" value="0x0202AAAF" />
         <register type="NOA" address="0x00009884" value="0x00000000" />
         <register type="NOA" address="0x00009888" value="0x0002FFFC" />
@@ -45661,7 +45875,7 @@
         <register type="NOA" address="0x00009888" value="0x0003AAA0" />
         <register type="NOA" address="0x00009888" value="0x0203AAAA" />
         <register type="NOA" address="0x00009888" value="0x56010000" />
-        <register type="NOA" address="0x00009888" value="0x58010400" />
+        <register type="NOA" address="0x00009888" value="0x58010002" />
         <register type="NOA" address="0x00009888" value="0x5A010020" />
         <register type="NOA" address="0x00009888" value="0x5C010402" />
         <register type="NOA" address="0x00009888" value="0x5E010020" />
@@ -45691,6 +45905,7 @@
        symbol_name="Ext511"
        underscore_name="ext511"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="443b8a84-7e77-4e9f-8a2a-56743897cba3"
        >
     <counter name="GPU Time Elapsed"
@@ -45740,7 +45955,7 @@
              data_type="uint64"
              units="bytes"
              semantic_type="throughput"
-             equation="B 2 READ 2 C 7 READ UMUL UADD 4 C 6 READ UMUL UADD 8 C 5 READ UMUL UADD 16 C 4 READ UMUL UADD 32 C 3 READ UMUL UADD 64 C 2 READ UMUL UADD"
+             equation="C 7 READ 2 C 6 READ UMUL UADD 4 C 5 READ UMUL UADD 8 C 4 READ UMUL UADD 16 C 3 READ UMUL UADD 32 C 2 READ UMUL UADD 64 C 1 READ UMUL UADD"
              availability="$GtSlice0XeCore2"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -45754,7 +45969,7 @@
              data_type="uint64"
              units="bytes"
              semantic_type="throughput"
-             equation="C 1 READ 2 C 0 READ UMUL UADD 4 B 7 READ UMUL UADD 8 B 6 READ UMUL UADD 16 B 5 READ UMUL UADD 32 B 4 READ UMUL UADD 64 B 3 READ UMUL UADD"
+             equation="C 0 READ 2 B 7 READ UMUL UADD 4 B 6 READ UMUL UADD 8 B 5 READ UMUL UADD 16 B 4 READ UMUL UADD 32 B 3 READ UMUL UADD 64 B 2 READ UMUL UADD"
              availability="$GtSlice0XeCore3"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -45765,31 +45980,30 @@
         <register type="NOA" address="0x00000D04" value="0x00000200" />
         <register type="NOA" address="0x00009884" value="0x0000000C" />
         <register type="NOA" address="0x00009888" value="0x1C485400" />
+        <register type="NOA" address="0x00009888" value="0x1E480014" />
         <register type="NOA" address="0x00009888" value="0x1C685400" />
-        <register type="NOA" address="0x00009888" value="0x04480008" />
-        <register type="NOA" address="0x00009888" value="0x0A480000" />
-        <register type="NOA" address="0x00009888" value="0x12480146" />
-        <register type="NOA" address="0x00009888" value="0x144800C4" />
-        <register type="NOA" address="0x00009888" value="0x16480042" />
+        <register type="NOA" address="0x00009888" value="0x1E680014" />
+        <register type="NOA" address="0x00009888" value="0x04480098" />
+        <register type="NOA" address="0x00009888" value="0x10480140" />
+        <register type="NOA" address="0x00009888" value="0x124800C4" />
+        <register type="NOA" address="0x00009888" value="0x14480042" />
+        <register type="NOA" address="0x00009888" value="0x164803C0" />
         <register type="NOA" address="0x00009888" value="0x06480000" />
-        <register type="NOA" address="0x00009888" value="0x00480000" />
         <register type="NOA" address="0x00009888" value="0x02480000" />
-        <register type="NOA" address="0x00009888" value="0x04680008" />
-        <register type="NOA" address="0x00009888" value="0x0A680180" />
-        <register type="NOA" address="0x00009888" value="0x0C680105" />
-        <register type="NOA" address="0x00009888" value="0x0E680083" />
-        <register type="NOA" address="0x00009888" value="0x10680001" />
+        <register type="NOA" address="0x00009888" value="0x04680098" />
+        <register type="NOA" address="0x00009888" value="0x0A680105" />
+        <register type="NOA" address="0x00009888" value="0x0C680083" />
+        <register type="NOA" address="0x00009888" value="0x0E680001" />
+        <register type="NOA" address="0x00009888" value="0x1068000F" />
         <register type="NOA" address="0x00009888" value="0x06680000" />
         <register type="NOA" address="0x00009888" value="0x00680000" />
         <register type="NOA" address="0x00009888" value="0x02680000" />
         <register type="NOA" address="0x00009884" value="0x00000004" />
-        <register type="NOA" address="0x00009888" value="0x00010030" />
-        <register type="NOA" address="0x00009888" value="0x0201FFF0" />
-        <register type="NOA" address="0x00009888" value="0x000A0020" />
-        <register type="NOA" address="0x00009888" value="0x020AAAA0" />
+        <register type="NOA" address="0x00009888" value="0x0201FFFC" />
+        <register type="NOA" address="0x00009888" value="0x020AAAA8" />
         <register type="NOA" address="0x00009884" value="0x00000008" />
-        <register type="NOA" address="0x00009888" value="0x0002FFE0" />
-        <register type="NOA" address="0x00009888" value="0x0202AAAF" />
+        <register type="NOA" address="0x00009888" value="0x0002FFF0" />
+        <register type="NOA" address="0x00009888" value="0x0202AAAB" />
         <register type="NOA" address="0x00009884" value="0x00000000" />
         <register type="NOA" address="0x00009888" value="0x0002FFFC" />
         <register type="NOA" address="0x00009888" value="0x00015550" />
@@ -45797,12 +46011,12 @@
         <register type="NOA" address="0x00009888" value="0x0003AAA0" />
         <register type="NOA" address="0x00009888" value="0x0203AAAA" />
         <register type="NOA" address="0x00009888" value="0x56010000" />
-        <register type="NOA" address="0x00009888" value="0x58010400" />
+        <register type="NOA" address="0x00009888" value="0x58010402" />
         <register type="NOA" address="0x00009888" value="0x5A010020" />
         <register type="NOA" address="0x00009888" value="0x5C010402" />
         <register type="NOA" address="0x00009888" value="0x5E010020" />
         <register type="NOA" address="0x00009888" value="0x06010000" />
-        <register type="NOA" address="0x00009888" value="0x60010402" />
+        <register type="NOA" address="0x00009888" value="0x60010002" />
         <register type="NOA" address="0x00009888" value="0x4E010000" />
         <register type="NOA" address="0x00009888" value="0x50010000" />
         <register type="NOA" address="0x00009888" value="0x52010000" />
@@ -45827,6 +46041,7 @@
        symbol_name="Ext512"
        underscore_name="ext512"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="68581669-8e57-4ff9-bb70-71a99f8454c8"
        >
     <counter name="GPU Time Elapsed"
@@ -45876,7 +46091,7 @@
              data_type="uint64"
              units="bytes"
              semantic_type="throughput"
-             equation="C 7 READ 2 C 6 READ UMUL UADD 4 C 5 READ UMUL UADD 8 C 4 READ UMUL UADD 16 C 3 READ UMUL UADD 32 C 2 READ UMUL UADD 64 C 1 READ UMUL UADD"
+             equation="B 2 READ 2 C 7 READ UMUL UADD 4 C 6 READ UMUL UADD 8 C 5 READ UMUL UADD 16 C 4 READ UMUL UADD 32 C 3 READ UMUL UADD 64 C 2 READ UMUL UADD"
              availability="$GtSlice1XeCore0"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -45890,7 +46105,7 @@
              data_type="uint64"
              units="bytes"
              semantic_type="throughput"
-             equation="C 0 READ 2 B 7 READ UMUL UADD 4 B 6 READ UMUL UADD 8 B 5 READ UMUL UADD 16 B 4 READ UMUL UADD 32 B 3 READ UMUL UADD 64 B 2 READ UMUL UADD"
+             equation="B 3 READ 2 C 1 READ UMUL UADD 4 C 0 READ UMUL UADD 8 B 7 READ UMUL UADD 16 B 6 READ UMUL UADD 32 B 5 READ UMUL UADD 64 B 4 READ UMUL UADD"
              availability="$GtSlice1XeCore1"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -45900,20 +46115,21 @@
     <register_config type="NOA">
         <register type="NOA" address="0x00000D04" value="0x00000200" />
         <register type="NOA" address="0x00009884" value="0x0000000C" />
-        <register type="NOA" address="0x00009888" value="0x18880295" />
-        <register type="NOA" address="0x00009888" value="0x18A80295" />
+        <register type="NOA" address="0x00009888" value="0x188802B4" />
+        <register type="NOA" address="0x00009888" value="0x18A802B4" />
         <register type="NOA" address="0x00009888" value="0x04880010" />
-        <register type="NOA" address="0x00009888" value="0x10880180" />
-        <register type="NOA" address="0x00009888" value="0x12880105" />
-        <register type="NOA" address="0x00009888" value="0x14880083" />
-        <register type="NOA" address="0x00009888" value="0x168803C1" />
+        <register type="NOA" address="0x00009888" value="0x0A880007" />
+        <register type="NOA" address="0x00009888" value="0x1288030D" />
+        <register type="NOA" address="0x00009888" value="0x1488028B" />
+        <register type="NOA" address="0x00009888" value="0x16880209" />
         <register type="NOA" address="0x00009888" value="0x06880000" />
+        <register type="NOA" address="0x00009888" value="0x00880000" />
         <register type="NOA" address="0x00009888" value="0x02880000" />
         <register type="NOA" address="0x00009888" value="0x04A80010" />
-        <register type="NOA" address="0x00009888" value="0x0AA80146" />
-        <register type="NOA" address="0x00009888" value="0x0CA800C4" />
-        <register type="NOA" address="0x00009888" value="0x0EA80042" />
-        <register type="NOA" address="0x00009888" value="0x10A8000F" />
+        <register type="NOA" address="0x00009888" value="0x0AA801C0" />
+        <register type="NOA" address="0x00009888" value="0x0CA8030D" />
+        <register type="NOA" address="0x00009888" value="0x0EA8028B" />
+        <register type="NOA" address="0x00009888" value="0x10A80209" />
         <register type="NOA" address="0x00009888" value="0x06A80000" />
         <register type="NOA" address="0x00009888" value="0x00A80000" />
         <register type="NOA" address="0x00009888" value="0x02A80000" />
@@ -45923,8 +46139,8 @@
         <register type="NOA" address="0x00009888" value="0x00245550" />
         <register type="NOA" address="0x00009888" value="0x02245555" />
         <register type="NOA" address="0x00009888" value="0x002BFFFC" />
-        <register type="NOA" address="0x00009888" value="0x0029FFF0" />
-        <register type="NOA" address="0x00009888" value="0x0229AAAB" />
+        <register type="NOA" address="0x00009888" value="0x0029FFE0" />
+        <register type="NOA" address="0x00009888" value="0x0229AAAF" />
         <register type="NOA" address="0x00009888" value="0x002AAAA0" />
         <register type="NOA" address="0x00009888" value="0x022AAAAA" />
         <register type="NOA" address="0x00009884" value="0x00000008" />
@@ -45969,6 +46185,7 @@
        symbol_name="Ext513"
        underscore_name="ext513"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="1b49d31f-4d7c-4dd7-ad31-030ccb59649e"
        >
     <counter name="GPU Time Elapsed"
@@ -46043,19 +46260,21 @@
         <register type="NOA" address="0x00000D04" value="0x00000200" />
         <register type="NOA" address="0x00009884" value="0x0000000C" />
         <register type="NOA" address="0x00009888" value="0x1C885400" />
+        <register type="NOA" address="0x00009888" value="0x1E880014" />
         <register type="NOA" address="0x00009888" value="0x1CA85400" />
-        <register type="NOA" address="0x00009888" value="0x04880008" />
-        <register type="NOA" address="0x00009888" value="0x10880180" />
-        <register type="NOA" address="0x00009888" value="0x12880105" />
-        <register type="NOA" address="0x00009888" value="0x14880083" />
-        <register type="NOA" address="0x00009888" value="0x16880001" />
+        <register type="NOA" address="0x00009888" value="0x1EA80014" />
+        <register type="NOA" address="0x00009888" value="0x04880098" />
+        <register type="NOA" address="0x00009888" value="0x10880140" />
+        <register type="NOA" address="0x00009888" value="0x128800C4" />
+        <register type="NOA" address="0x00009888" value="0x14880042" />
+        <register type="NOA" address="0x00009888" value="0x168803C0" />
         <register type="NOA" address="0x00009888" value="0x06880000" />
         <register type="NOA" address="0x00009888" value="0x02880000" />
-        <register type="NOA" address="0x00009888" value="0x04A80008" />
-        <register type="NOA" address="0x00009888" value="0x0AA80146" />
-        <register type="NOA" address="0x00009888" value="0x0CA800C4" />
-        <register type="NOA" address="0x00009888" value="0x0EA80042" />
-        <register type="NOA" address="0x00009888" value="0x10A80000" />
+        <register type="NOA" address="0x00009888" value="0x04A80098" />
+        <register type="NOA" address="0x00009888" value="0x0AA80105" />
+        <register type="NOA" address="0x00009888" value="0x0CA80083" />
+        <register type="NOA" address="0x00009888" value="0x0EA80001" />
+        <register type="NOA" address="0x00009888" value="0x10A8000F" />
         <register type="NOA" address="0x00009888" value="0x06A80000" />
         <register type="NOA" address="0x00009888" value="0x00A80000" />
         <register type="NOA" address="0x00009888" value="0x02A80000" />
@@ -46111,6 +46330,7 @@
        symbol_name="Ext514"
        underscore_name="ext514"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="1b0ce68b-c301-4d05-8659-85fad0825057"
        >
     <counter name="GPU Time Elapsed"
@@ -46160,7 +46380,7 @@
              data_type="uint64"
              units="bytes"
              semantic_type="throughput"
-             equation="C 7 READ 2 C 6 READ UMUL UADD 4 C 5 READ UMUL UADD 8 C 4 READ UMUL UADD 16 C 3 READ UMUL UADD 32 C 2 READ UMUL UADD 64 C 1 READ UMUL UADD"
+             equation="B 2 READ 2 C 7 READ UMUL UADD 4 C 6 READ UMUL UADD 8 C 5 READ UMUL UADD 16 C 4 READ UMUL UADD 32 C 3 READ UMUL UADD 64 C 2 READ UMUL UADD"
              availability="$GtSlice1XeCore2"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -46174,7 +46394,7 @@
              data_type="uint64"
              units="bytes"
              semantic_type="throughput"
-             equation="C 0 READ 2 B 7 READ UMUL UADD 4 B 6 READ UMUL UADD 8 B 5 READ UMUL UADD 16 B 4 READ UMUL UADD 32 B 3 READ UMUL UADD 64 B 2 READ UMUL UADD"
+             equation="B 3 READ 2 C 1 READ UMUL UADD 4 C 0 READ UMUL UADD 8 B 7 READ UMUL UADD 16 B 6 READ UMUL UADD 32 B 5 READ UMUL UADD 64 B 4 READ UMUL UADD"
              availability="$GtSlice1XeCore3"
              mdapi_group="GPU"
              mdapi_usage_flags="Frame Batch Draw"
@@ -46184,29 +46404,32 @@
     <register_config type="NOA">
         <register type="NOA" address="0x00000D04" value="0x00000200" />
         <register type="NOA" address="0x00009884" value="0x0000000C" />
-        <register type="NOA" address="0x00009888" value="0x18C80295" />
-        <register type="NOA" address="0x00009888" value="0x18E80295" />
+        <register type="NOA" address="0x00009888" value="0x18C802B4" />
+        <register type="NOA" address="0x00009888" value="0x18E802B4" />
         <register type="NOA" address="0x00009888" value="0x04C80010" />
-        <register type="NOA" address="0x00009888" value="0x10C80180" />
-        <register type="NOA" address="0x00009888" value="0x12C80105" />
-        <register type="NOA" address="0x00009888" value="0x14C80083" />
-        <register type="NOA" address="0x00009888" value="0x16C803C1" />
+        <register type="NOA" address="0x00009888" value="0x0AC80007" />
+        <register type="NOA" address="0x00009888" value="0x12C8030D" />
+        <register type="NOA" address="0x00009888" value="0x14C8028B" />
+        <register type="NOA" address="0x00009888" value="0x16C80209" />
         <register type="NOA" address="0x00009888" value="0x06C80000" />
+        <register type="NOA" address="0x00009888" value="0x00C80000" />
         <register type="NOA" address="0x00009888" value="0x02C80000" />
         <register type="NOA" address="0x00009888" value="0x04E80010" />
-        <register type="NOA" address="0x00009888" value="0x0AE80146" />
-        <register type="NOA" address="0x00009888" value="0x0CE800C4" />
-        <register type="NOA" address="0x00009888" value="0x0EE80042" />
-        <register type="NOA" address="0x00009888" value="0x10E8000F" />
+        <register type="NOA" address="0x00009888" value="0x0AE801C0" />
+        <register type="NOA" address="0x00009888" value="0x0CE8030D" />
+        <register type="NOA" address="0x00009888" value="0x0EE8028B" />
+        <register type="NOA" address="0x00009888" value="0x10E80209" />
         <register type="NOA" address="0x00009888" value="0x06E80000" />
         <register type="NOA" address="0x00009888" value="0x00E80000" />
         <register type="NOA" address="0x00009888" value="0x02E80000" />
         <register type="NOA" address="0x00009884" value="0x00000004" />
-        <register type="NOA" address="0x00009888" value="0x0221FFFC" />
-        <register type="NOA" address="0x00009888" value="0x022AAAA8" />
+        <register type="NOA" address="0x00009888" value="0x00210030" />
+        <register type="NOA" address="0x00009888" value="0x0221FFF0" />
+        <register type="NOA" address="0x00009888" value="0x002A0020" />
+        <register type="NOA" address="0x00009888" value="0x022AAAA0" />
         <register type="NOA" address="0x00009884" value="0x00000008" />
-        <register type="NOA" address="0x00009888" value="0x0082FFF0" />
-        <register type="NOA" address="0x00009888" value="0x0282AAAB" />
+        <register type="NOA" address="0x00009888" value="0x0082FFE0" />
+        <register type="NOA" address="0x00009888" value="0x0282AAAF" />
         <register type="NOA" address="0x00009884" value="0x00000000" />
         <register type="NOA" address="0x00009888" value="0x0005FFFC" />
         <register type="NOA" address="0x00009888" value="0x0002FFFC" />
@@ -46216,12 +46439,12 @@
         <register type="NOA" address="0x00009888" value="0x02035555" />
         <register type="NOA" address="0x00009888" value="0x0004FFFC" />
         <register type="NOA" address="0x00009888" value="0x56010000" />
-        <register type="NOA" address="0x00009888" value="0x58010402" />
+        <register type="NOA" address="0x00009888" value="0x58010400" />
         <register type="NOA" address="0x00009888" value="0x5A010020" />
         <register type="NOA" address="0x00009888" value="0x5C010402" />
         <register type="NOA" address="0x00009888" value="0x5E010020" />
         <register type="NOA" address="0x00009888" value="0x06010000" />
-        <register type="NOA" address="0x00009888" value="0x60010002" />
+        <register type="NOA" address="0x00009888" value="0x60010402" />
         <register type="NOA" address="0x00009888" value="0x4E010000" />
         <register type="NOA" address="0x00009888" value="0x50010000" />
         <register type="NOA" address="0x00009888" value="0x52010000" />
@@ -46246,6 +46469,7 @@
        symbol_name="Ext515"
        underscore_name="ext515"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="fde32e67-1a87-4946-bf96-c1ff68105749"
        >
     <counter name="GPU Time Elapsed"
@@ -46320,19 +46544,21 @@
         <register type="NOA" address="0x00000D04" value="0x00000200" />
         <register type="NOA" address="0x00009884" value="0x0000000C" />
         <register type="NOA" address="0x00009888" value="0x1CC85400" />
+        <register type="NOA" address="0x00009888" value="0x1EC80014" />
         <register type="NOA" address="0x00009888" value="0x1CE85400" />
-        <register type="NOA" address="0x00009888" value="0x04C80008" />
-        <register type="NOA" address="0x00009888" value="0x10C80180" />
-        <register type="NOA" address="0x00009888" value="0x12C80105" />
-        <register type="NOA" address="0x00009888" value="0x14C80083" />
-        <register type="NOA" address="0x00009888" value="0x16C80001" />
+        <register type="NOA" address="0x00009888" value="0x1EE80014" />
+        <register type="NOA" address="0x00009888" value="0x04C80098" />
+        <register type="NOA" address="0x00009888" value="0x10C80140" />
+        <register type="NOA" address="0x00009888" value="0x12C800C4" />
+        <register type="NOA" address="0x00009888" value="0x14C80042" />
+        <register type="NOA" address="0x00009888" value="0x16C803C0" />
         <register type="NOA" address="0x00009888" value="0x06C80000" />
         <register type="NOA" address="0x00009888" value="0x02C80000" />
-        <register type="NOA" address="0x00009888" value="0x04E80008" />
-        <register type="NOA" address="0x00009888" value="0x0AE80146" />
-        <register type="NOA" address="0x00009888" value="0x0CE800C4" />
-        <register type="NOA" address="0x00009888" value="0x0EE80042" />
-        <register type="NOA" address="0x00009888" value="0x10E80000" />
+        <register type="NOA" address="0x00009888" value="0x04E80098" />
+        <register type="NOA" address="0x00009888" value="0x0AE80105" />
+        <register type="NOA" address="0x00009888" value="0x0CE80083" />
+        <register type="NOA" address="0x00009888" value="0x0EE80001" />
+        <register type="NOA" address="0x00009888" value="0x10E8000F" />
         <register type="NOA" address="0x00009888" value="0x06E80000" />
         <register type="NOA" address="0x00009888" value="0x00E80000" />
         <register type="NOA" address="0x00009888" value="0x02E80000" />
@@ -46381,6 +46607,7 @@
        symbol_name="Ext516"
        underscore_name="ext516"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="bf950c5b-7250-47f4-aa59-d97b22db02ff"
        >
     <counter name="GPU Time Elapsed"
@@ -46519,6 +46746,7 @@
        symbol_name="Ext517"
        underscore_name="ext517"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="9027ff05-4348-4061-a434-0befaba7c379"
        >
     <counter name="GPU Time Elapsed"
@@ -46657,6 +46885,7 @@
        symbol_name="Ext518"
        underscore_name="ext518"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="6ad0dee9-17bf-4b54-8b70-e30afcc8710b"
        >
     <counter name="GPU Time Elapsed"
@@ -46795,6 +47024,7 @@
        symbol_name="Ext519"
        underscore_name="ext519"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="2c2ecec8-7f33-475c-9ca4-a7e89f949f58"
        >
     <counter name="GPU Time Elapsed"
@@ -46933,6 +47163,7 @@
        symbol_name="Ext520"
        underscore_name="ext520"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="d866e2a8-310e-4691-9edc-f7263b8d5c07"
        >
     <counter name="GPU Time Elapsed"
@@ -47066,6 +47297,7 @@
        symbol_name="Ext521"
        underscore_name="ext521"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="e5a95c15-d54f-4d4f-bbe2-533240392df3"
        >
     <counter name="GPU Time Elapsed"
@@ -47199,6 +47431,7 @@
        symbol_name="Ext522"
        underscore_name="ext522"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="bba76095-18aa-447d-9a79-00461a06f233"
        >
     <counter name="GPU Time Elapsed"
@@ -47327,6 +47560,7 @@
        symbol_name="Ext523"
        underscore_name="ext523"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="724a5073-2463-4f7f-aecb-7cdd90c831e1"
        >
     <counter name="GPU Time Elapsed"
@@ -47455,6 +47689,7 @@
        symbol_name="Ext524"
        underscore_name="ext524"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="3b94a07f-e4d8-4cf2-969e-ea19bb253a8c"
        >
     <counter name="GPU Time Elapsed"
@@ -47595,6 +47830,7 @@
        symbol_name="Ext525"
        underscore_name="ext525"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="f4399df4-e808-4a0a-85ff-0c66f9c9e8a4"
        >
     <counter name="GPU Time Elapsed"
@@ -47735,6 +47971,7 @@
        symbol_name="Ext526"
        underscore_name="ext526"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="f588aa78-c29a-4187-9818-480b12d5b076"
        >
     <counter name="GPU Time Elapsed"
@@ -47875,6 +48112,7 @@
        symbol_name="Ext527"
        underscore_name="ext527"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="c0a38cc9-f0e9-40f5-9c1e-a4d7eba30825"
        >
     <counter name="GPU Time Elapsed"
@@ -48015,6 +48253,7 @@
        symbol_name="Ext528"
        underscore_name="ext528"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="1cb1d3ff-ff5d-4c9b-84c9-89b9d235be36"
        >
     <counter name="GPU Time Elapsed"
@@ -48150,6 +48389,7 @@
        symbol_name="Ext529"
        underscore_name="ext529"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="4491913e-99ed-4420-9575-75ab7a82c45d"
        >
     <counter name="GPU Time Elapsed"
@@ -48285,6 +48525,7 @@
        symbol_name="Ext530"
        underscore_name="ext530"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="4fe2fe09-1ef2-45ff-87f5-e789f8405713"
        >
     <counter name="GPU Time Elapsed"
@@ -48415,6 +48656,7 @@
        symbol_name="Ext531"
        underscore_name="ext531"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="856f213d-954d-4b0a-be6c-307b41d39b18"
        >
     <counter name="GPU Time Elapsed"
@@ -48545,6 +48787,7 @@
        symbol_name="Ext540"
        underscore_name="ext540"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="03eb9c9b-72ee-4c7b-930b-6211dbb60503"
        >
     <counter name="GPU Time Elapsed"
@@ -48681,6 +48924,7 @@
        symbol_name="Ext541"
        underscore_name="ext541"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="e3bef1e9-f563-4927-9ce8-1be6e151448c"
        >
     <counter name="GPU Time Elapsed"
@@ -48817,6 +49061,7 @@
        symbol_name="Ext542"
        underscore_name="ext542"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="de587fdf-1740-4816-a5c0-08c1cb6b43eb"
        >
     <counter name="GPU Time Elapsed"
@@ -48948,6 +49193,7 @@
        symbol_name="Ext543"
        underscore_name="ext543"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="cea536f3-f7ef-449c-91fe-42c721e54b52"
        >
     <counter name="GPU Time Elapsed"
@@ -49074,6 +49320,7 @@
        symbol_name="Ext544"
        underscore_name="ext544"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="c3586bbc-f20b-4ffc-bd62-21ea68c161f4"
        >
     <counter name="GPU Time Elapsed"
@@ -49212,6 +49459,7 @@
        symbol_name="Ext545"
        underscore_name="ext545"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="f3d6345a-b760-4433-844e-e35204b44e09"
        >
     <counter name="GPU Time Elapsed"
@@ -49350,6 +49598,7 @@
        symbol_name="Ext546"
        underscore_name="ext546"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="f5448b6d-cb2a-4aad-804e-b1a285299582"
        >
     <counter name="GPU Time Elapsed"
@@ -49483,6 +49732,7 @@
        symbol_name="Ext547"
        underscore_name="ext547"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="7b8b6c53-abff-4570-b413-91cc843181d8"
        >
     <counter name="GPU Time Elapsed"
@@ -49611,6 +49861,7 @@
        symbol_name="Ext604"
        underscore_name="ext604"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="b83befed-d2db-4806-907c-3f952798e117"
        >
     <counter name="GPU Time Elapsed"
@@ -49996,6 +50247,7 @@
        symbol_name="Ext1000"
        underscore_name="ext1000"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="0d368afb-b8fd-425d-a704-9a45eaaaed3d"
        >
     <counter name="GPU Time Elapsed"
@@ -50342,6 +50594,7 @@
        symbol_name="Ext1001"
        underscore_name="ext1001"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="08bee982-b34c-49c1-bf0c-93c1949ffbe7"
        >
     <counter name="GPU Time Elapsed"
@@ -50745,6 +50998,7 @@
        symbol_name="Ext1002"
        underscore_name="ext1002"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="845617a9-5a17-4f1f-9a6f-61ff844065e4"
        >
     <counter name="GPU Time Elapsed"
@@ -51063,6 +51317,7 @@
        symbol_name="Ext1003"
        underscore_name="ext1003"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="24e3b1a8-b80e-4c8c-ab21-83640d78f896"
        >
     <counter name="GPU Time Elapsed"
@@ -51410,6 +51665,7 @@
        symbol_name="Ext1004"
        underscore_name="ext1004"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="974d6469-d51f-4e4a-a393-32033f9b562e"
        >
     <counter name="GPU Time Elapsed"
@@ -51757,6 +52013,7 @@
        symbol_name="Ext1005"
        underscore_name="ext1005"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="c172fb87-e53f-468d-893a-d8528684accc"
        >
     <counter name="GPU Time Elapsed"
@@ -52160,6 +52417,7 @@
        symbol_name="Ext1006"
        underscore_name="ext1006"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="f739508f-51b2-48df-839c-e92c14d14c64"
        >
     <counter name="GPU Time Elapsed"
@@ -52506,6 +52764,7 @@
        symbol_name="Ext1007"
        underscore_name="ext1007"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="926b1773-807e-4ee5-8561-30c9eb0a6344"
        >
     <counter name="GPU Time Elapsed"
@@ -52795,6 +53054,7 @@
        symbol_name="Ext1010"
        underscore_name="ext1010"
        mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
        hw_config_guid="82f69b49-772a-4169-bf9a-b1ef08e0823b"
        >
     <counter name="GPU Time Elapsed"
@@ -52914,4 +53174,656 @@
     </register_config>
   </set>
 
+  <set name="MediaSet1"
+       chipset="MTLGT3"
+       symbol_name="MediaSet1"
+       underscore_name="media_set1"
+       mdapi_supported_apis="IO"
+       oa_format="128B_MPEC8_NOA16"
+       hw_config_guid="4d9b2817-19b9-4461-a54b-dc9fdb7d69cb"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="GPU Time Elapsed"
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Batch"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Core Clocks"
+             symbol_name="GpuCoreClocks"
+             underscore_name="gpu_core_clocks"
+             description="The total number of GPU core clocks elapsed during the measurement."
+             data_type="uint64"
+             units="cycles"
+             semantic_type="event"
+             equation="GPU_CLOCK 0 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="AVG GPU Core Frequency"
+             symbol_name="AvgGpuCoreFrequency"
+             underscore_name="avg_gpu_core_frequency"
+             description="Average GPU Core Frequency in the measurement."
+             data_type="uint64"
+             max_equation="$GpuMaxFrequency"
+             units="hz"
+             semantic_type="event"
+             equation="$GpuCoreClocks 1000000000 UMUL $GpuTime UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_DECODE_BOX0_READ_REQUEST"
+             symbol_name="VIDEO_DECODE_BOX0_READ_REQUEST"
+             underscore_name="video_decode_box0_read_request"
+             description="Number of VDBOX0 read requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 0 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_DECODE_BOX0_WRITE_REQUEST"
+             symbol_name="VIDEO_DECODE_BOX0_WRITE_REQUEST"
+             underscore_name="video_decode_box0_write_request"
+             description="Number of VDBOX0 write requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 1 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_DECODE_BOX1_READ_REQUEST"
+             symbol_name="VIDEO_DECODE_BOX1_READ_REQUEST"
+             underscore_name="video_decode_box1_read_request"
+             description="Number of VDBOX1 read requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 2 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_DECODE_BOX1_WRITE_REQUEST"
+             symbol_name="VIDEO_DECODE_BOX1_WRITE_REQUEST"
+             underscore_name="video_decode_box1_write_request"
+             description="Number of VDBOX1 write requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 3 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_ENHANCEMENT_BOX0_READ_REQUEST"
+             symbol_name="VIDEO_ENHANCEMENT_BOX0_READ_REQUEST"
+             underscore_name="video_enhancement_box0_read_request"
+             description="Number of VEBOX0 read requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 4 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_ENHANCEMENT_BOX0_WRITE_REQUEST"
+             symbol_name="VIDEO_ENHANCEMENT_BOX0_WRITE_REQUEST"
+             underscore_name="video_enhancement_box0_write_request"
+             description="Number of VEBOX0 write requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 5 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_ENHANCEMENT_BOX1_READ_REQUEST"
+             symbol_name="VIDEO_ENHANCEMENT_BOX1_READ_REQUEST"
+             underscore_name="video_enhancement_box1_read_request"
+             description="Number of VEBOX1 read requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 6 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_ENHANCEMENT_BOX1_WRITE_REQUEST"
+             symbol_name="VIDEO_ENHANCEMENT_BOX1_WRITE_REQUEST"
+             underscore_name="video_enhancement_box1_write_request"
+             description="Number of VEBOX1 write requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 7 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00393200" value="0x00000201" />
+        <register type="OA" address="0x00393204" value="0x00000000" />
+        <register type="OA" address="0x00393208" value="0x00000202" />
+        <register type="OA" address="0x0039320C" value="0x00000000" />
+        <register type="OA" address="0x00393210" value="0x00000401" />
+        <register type="OA" address="0x00393214" value="0x00000000" />
+        <register type="OA" address="0x00393218" value="0x00000402" />
+        <register type="OA" address="0x0039321C" value="0x00000000" />
+        <register type="OA" address="0x00393220" value="0x00002201" />
+        <register type="OA" address="0x00393224" value="0x00000000" />
+        <register type="OA" address="0x00393228" value="0x00002202" />
+        <register type="OA" address="0x0039322C" value="0x00000000" />
+        <register type="OA" address="0x00393230" value="0x00002401" />
+        <register type="OA" address="0x00393234" value="0x00000000" />
+        <register type="OA" address="0x00393238" value="0x00002402" />
+        <register type="OA" address="0x0039323C" value="0x00000000" />
+        <register type="OA" address="0x00393034" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="MediaSet2"
+       chipset="MTLGT3"
+       symbol_name="MediaSet2"
+       underscore_name="media_set2"
+       mdapi_supported_apis="IO"
+       oa_format="128B_MPEC8_NOA16"
+       hw_config_guid="651a6694-0ac1-4bd5-a4a1-94bcf479d4f4"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="GPU Time Elapsed"
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Batch"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Core Clocks"
+             symbol_name="GpuCoreClocks"
+             underscore_name="gpu_core_clocks"
+             description="The total number of GPU core clocks elapsed during the measurement."
+             data_type="uint64"
+             units="cycles"
+             semantic_type="event"
+             equation="GPU_CLOCK 0 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="AVG GPU Core Frequency"
+             symbol_name="AvgGpuCoreFrequency"
+             underscore_name="avg_gpu_core_frequency"
+             description="Average GPU Core Frequency in the measurement."
+             data_type="uint64"
+             max_equation="$GpuMaxFrequency"
+             units="hz"
+             semantic_type="event"
+             equation="$GpuCoreClocks 1000000000 UMUL $GpuTime UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="MEDIA_READ_REQUEST"
+             symbol_name="MEDIA_READ_REQUEST"
+             underscore_name="media_read_request"
+             description="Number of read requests from stand alone media "
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 0 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="MEDIA_WRITE_REQUEST"
+             symbol_name="MEDIA_WRITE_REQUEST"
+             underscore_name="media_write_request"
+             description="Number of write requests from stand alone media "
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 1 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="COMMAND PARSER VIDEO DECODE_ENGINE0 BUSY"
+             symbol_name="COMMAND_PARSER_VIDEO_DECODE_ENGINE0_BUSY"
+             underscore_name="command_parser_video_decode_engine0_busy"
+             description="Percentage of time in which there is a context loaded and active on the media VDBOX0"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 2 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="COMMAND_PARSER_VIDEO_DECODE_ENGINE1_BUSY"
+             symbol_name="COMMAND_PARSER_VIDEO_DECODE_ENGINE1_BUSY"
+             underscore_name="command_parser_video_decode_engine1_busy"
+             description="Percentage of time in which there is a context loaded and active on the media VDBOX1"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 3 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="COMMAND_PARSER_VIDEO_ENHANCEMENT_ENGINE0_BUSY"
+             symbol_name="COMMAND_PARSER_VIDEO_ENHANCEMENT_ENGINE0_BUSY"
+             underscore_name="command_parser_video_enhancement_engine0_busy"
+             description="Percentage of time in which there is a context loaded and active on the media VEBOX0"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 4 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="COMMAND_PARSER_VIDEO_ENHANCEMENT_ENGINE1_BUSY"
+             symbol_name="COMMAND_PARSER_VIDEO_ENHANCEMENT_ENGINE1_BUSY"
+             underscore_name="command_parser_video_enhancement_engine1_busy"
+             description="Percentage of time in which there is a context loaded and active on the media VEBOX0"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 5 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="COMMAND_PARSER_GRAPHICS_SECURITY_CONTROLLER_BUSY"
+             symbol_name="COMMAND_PARSER_GRAPHICS_SECURITY_CONTROLLER_BUSY"
+             underscore_name="command_parser_graphics_security_controller_busy"
+             description="Percentage of time in which Graphics Security Controller is active."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 6 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00393200" value="0x00000001" />
+        <register type="OA" address="0x00393204" value="0x00000000" />
+        <register type="OA" address="0x00393208" value="0x00000002" />
+        <register type="OA" address="0x0039320C" value="0x00000000" />
+        <register type="OA" address="0x00393210" value="0x00000200" />
+        <register type="OA" address="0x00393214" value="0x00000000" />
+        <register type="OA" address="0x00393218" value="0x00000400" />
+        <register type="OA" address="0x0039321C" value="0x00000000" />
+        <register type="OA" address="0x00393220" value="0x00002200" />
+        <register type="OA" address="0x00393224" value="0x00000000" />
+        <register type="OA" address="0x00393228" value="0x00002400" />
+        <register type="OA" address="0x0039322C" value="0x00000000" />
+        <register type="OA" address="0x00393230" value="0x00000003" />
+        <register type="OA" address="0x00393234" value="0x00000000" />
+        <register type="OA" address="0x00393034" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="TestOam"
+       chipset="MTLGT3"
+       symbol_name="TestOam"
+       underscore_name="test_oam"
+       mdapi_supported_apis="IO"
+       oa_format="128B_MPEC8_NOA16"
+       hw_config_guid="bac01106-5869-489c-a306-67303a434173"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="GPU Time Elapsed"
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Batch"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Core Clocks"
+             symbol_name="GpuCoreClocks"
+             underscore_name="gpu_core_clocks"
+             description="The total number of GPU core clocks elapsed during the measurement."
+             data_type="uint64"
+             units="cycles"
+             semantic_type="event"
+             equation="GPU_CLOCK 0 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="AVG GPU Core Frequency"
+             symbol_name="AvgGpuCoreFrequency"
+             underscore_name="avg_gpu_core_frequency"
+             description="Average GPU Core Frequency in the measurement."
+             data_type="uint64"
+             max_equation="$GpuMaxFrequency"
+             units="hz"
+             semantic_type="event"
+             equation="$GpuCoreClocks 1000000000 UMUL $GpuTime UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter0"
+             symbol_name="Counter0"
+             underscore_name="counter0"
+             description="HW test counter 0. Factor: 0.0"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 0 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter1"
+             symbol_name="Counter1"
+             underscore_name="counter1"
+             description="HW test counter 1. Factor: 1.0"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 1 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter2"
+             symbol_name="Counter2"
+             underscore_name="counter2"
+             description="HW test counter 2. Factor: 1.0"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 2 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter3"
+             symbol_name="Counter3"
+             underscore_name="counter3"
+             description="HW test counter 3. Factor: 0.5"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 3 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter4"
+             symbol_name="Counter4"
+             underscore_name="counter4"
+             description="HW test counter 4. Factor: 0.3333"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 4 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter5"
+             symbol_name="Counter5"
+             underscore_name="counter5"
+             description="HW test counter 5. Factor: 0.3333"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 5 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter6"
+             symbol_name="Counter6"
+             underscore_name="counter6"
+             description="HW test counter 6. Factor: 0.16666"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 6 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter8"
+             symbol_name="Counter8"
+             underscore_name="counter8"
+             description="TestCounter8"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 0 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_DECODE_BOX0_WRITE_REQUEST_VISA"
+             symbol_name="VIDEO_DECODE_BOX0_WRITE_REQUEST_VISA"
+             underscore_name="video_decode_box0_write_request_visa"
+             description="Number of VDBOX0 write requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="C 1 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_DECODE_BOX0_READ_REQUEST_VISA"
+             symbol_name="VIDEO_DECODE_BOX0_READ_REQUEST_VISA"
+             underscore_name="video_decode_box0_read_request_visa"
+             description="Number of VDBOX0 read requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="B 7 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_DECODE_BOX0_READ_REQUEST_MPEC"
+             symbol_name="VIDEO_DECODE_BOX0_READ_REQUEST_MPEC"
+             underscore_name="video_decode_box0_read_request_mpec"
+             description="Number of VDBOX0 read requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 0 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VIDEO_DECODE_BOX0_WRITE_REQUEST_MPEC"
+             symbol_name="VIDEO_DECODE_BOX0_WRITE_REQUEST_MPEC"
+             underscore_name="video_decode_box0_write_request_mpec"
+             description="Number of VDBOX0 write requests"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 1 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis="IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x0038D114" value="0x00000003" />
+        <register type="NOA" address="0x0038D100" value="0x00000DE0" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x00000DE2" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x000001C0" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x000001C1" />
+        <register type="NOA" address="0x0038D104" value="0x00000809" />
+        <register type="NOA" address="0x0038D100" value="0x000001C3" />
+        <register type="NOA" address="0x0038D104" value="0x00800400" />
+        <register type="NOA" address="0x0038D100" value="0x000001C4" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x000001C5" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x00000360" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x00000361" />
+        <register type="NOA" address="0x0038D104" value="0x00001819" />
+        <register type="NOA" address="0x0038D100" value="0x00000362" />
+        <register type="NOA" address="0x0038D104" value="0x00001C1D" />
+        <register type="NOA" address="0x0038D100" value="0x00000363" />
+        <register type="NOA" address="0x0038D104" value="0x02402006" />
+        <register type="NOA" address="0x0038D100" value="0x00000364" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x00000365" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x000003A0" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x000003A1" />
+        <register type="NOA" address="0x0038D104" value="0x00001011" />
+        <register type="NOA" address="0x0038D100" value="0x000003BB" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x000003BC" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x000004E0" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x000004E1" />
+        <register type="NOA" address="0x0038D104" value="0x00001819" />
+        <register type="NOA" address="0x0038D100" value="0x000004E3" />
+        <register type="NOA" address="0x0038D104" value="0x00000400" />
+        <register type="NOA" address="0x0038D100" value="0x000004E4" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x000004E5" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x00000420" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x00000421" />
+        <register type="NOA" address="0x0038D104" value="0x00001A1B" />
+        <register type="NOA" address="0x0038D100" value="0x00000423" />
+        <register type="NOA" address="0x0038D104" value="0x00000400" />
+        <register type="NOA" address="0x0038D100" value="0x00000424" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x00000425" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x00000540" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x00000541" />
+        <register type="NOA" address="0x0038D104" value="0x00001415" />
+        <register type="NOA" address="0x0038D100" value="0x00000543" />
+        <register type="NOA" address="0x0038D104" value="0x00000400" />
+        <register type="NOA" address="0x0038D100" value="0x00000544" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x00000545" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x00000660" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x00000661" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x00000663" />
+        <register type="NOA" address="0x0038D104" value="0x00000C02" />
+        <register type="NOA" address="0x0038D100" value="0x00000664" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x00000665" />
+        <register type="NOA" address="0x0038D104" value="0x00000000" />
+        <register type="NOA" address="0x0038D100" value="0x00000669" />
+        <register type="NOA" address="0x0038D104" value="0x00000001" />
+        <register type="NOA" address="0x0038D100" value="0x0000066A" />
+        <register type="NOA" address="0x0038D104" value="0x00000015" />
+        <register type="NOA" address="0x0038D114" value="0x0000000B" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x00393200" value="0x00000201" />
+        <register type="OA" address="0x00393204" value="0x00000000" />
+        <register type="OA" address="0x00393208" value="0x00000202" />
+        <register type="OA" address="0x0039320C" value="0x00000000" />
+        <register type="OA" address="0x00393000" value="0x00000000" />
+        <register type="OA" address="0x00393004" value="0xF0800000" />
+        <register type="OA" address="0x00393010" value="0x00000000" />
+        <register type="OA" address="0x00393014" value="0xF0800000" />
+        <register type="OA" address="0x00393020" value="0x00000000" />
+        <register type="OA" address="0x00393040" value="0x00000004" />
+        <register type="OA" address="0x00393044" value="0x0000FFFF" />
+        <register type="OA" address="0x00393048" value="0x00000003" />
+        <register type="OA" address="0x0039304C" value="0x0000FFFF" />
+        <register type="OA" address="0x00393050" value="0x00000007" />
+        <register type="OA" address="0x00393054" value="0x0000FFFF" />
+        <register type="OA" address="0x00393058" value="0x00100002" />
+        <register type="OA" address="0x0039305C" value="0x0000FFF7" />
+        <register type="OA" address="0x00393060" value="0x00100002" />
+        <register type="OA" address="0x00393064" value="0x0000FFCF" />
+        <register type="OA" address="0x00393068" value="0x00100082" />
+        <register type="OA" address="0x0039306C" value="0x0000FFEF" />
+        <register type="OA" address="0x00393070" value="0x001000C2" />
+        <register type="OA" address="0x00393074" value="0x0000FFE7" />
+        <register type="OA" address="0x00393078" value="0x00002002" />
+        <register type="OA" address="0x0039307C" value="0x0000F9FF" />
+        <register type="OA" address="0x00393034" value="0x00000000" />
+    </register_config>
+  </set>
+
 </metrics>
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 22/30] i915/perf: Add support for engine specific metrics
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (20 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 21/30] lib/perf: Update MTL GT3 " Umesh Nerlige Ramappa
@ 2023-02-14 20:59 ` Umesh Nerlige Ramappa
  2023-02-14 21:00 ` [igt-dev] [PATCH 23/30] i915/perf: Run non-zero-reason on media engines as well Umesh Nerlige Ramappa
                   ` (11 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 20:59 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Metrics config is different for media vs render engines. Choose the metrics
configurations as per the engine used for the test.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 tests/i915/perf.c | 236 ++++++++++++++++++++++++++--------------------
 1 file changed, 136 insertions(+), 100 deletions(-)

diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index f5d0726b..02835602 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -278,7 +278,6 @@ static uint32_t num_perf_oa_groups;
 
 static uint64_t gt_max_freq_mhz = 0;
 static struct intel_perf *intel_perf = NULL;
-static struct intel_perf_metric_set *test_set = NULL;
 static bool *undefined_a_counters;
 static uint64_t oa_exp_1_millisec;
 
@@ -289,6 +288,10 @@ static void (*sanity_check_reports)(const uint32_t *oa_report0,
 				    const uint32_t *oa_report1,
 				    enum drm_i915_oa_format format);
 
+
+static struct intel_perf_metric_set *metric_set(const struct intel_execution_engine2 *e2);
+#define default_test_set metric_set(&default_e2)
+
 static void
 dump_report(const uint32_t *report, uint32_t size, const char *message) {
 	uint32_t i;
@@ -691,17 +694,7 @@ oar_unit_default_format(void)
 	if (IS_DG2(devid) || IS_METEORLAKE(devid))
 		return I915_OAR_FORMAT_A32u40_A4u32_B8_C8;
 
-	return test_set->perf_oa_format;
-}
-
-static int
-oa_unit_default_format(const struct intel_execution_engine2 *e)
-{
-	if (e->class == I915_ENGINE_CLASS_VIDEO ||
-	    e->class == I915_ENGINE_CLASS_VIDEO_ENHANCE)
-		return I915_OAM_FORMAT_MPEC8u32_B8_C8;
-
-	return test_set->perf_oa_format;
+	return default_test_set->perf_oa_format;
 }
 
 /*
@@ -1133,9 +1126,6 @@ gen8_sanity_check_test_oa_reports(const uint32_t *oa_report0,
 static bool
 init_sys_info(void)
 {
-	const char *test_set_name = NULL;
-	struct intel_perf_metric_set *metric_set_iter;
-
 	igt_assert_neq(devid, 0);
 
 	intel_perf = intel_perf_for_fd(drm_fd);
@@ -1152,38 +1142,17 @@ init_sys_info(void)
 	 * RenderBasic
 	 */
 	if (IS_HASWELL(devid)) {
-		test_set_name = "RenderBasic";
 		read_report_ticks = hsw_read_report_ticks;
 		sanity_check_reports = hsw_sanity_check_render_basic_reports;
 		undefined_a_counters = hsw_undefined_a_counters;
 	} else {
-		test_set_name = "TestOa";
 		read_report_ticks = gen8_read_report_ticks;
 		sanity_check_reports = gen8_sanity_check_test_oa_reports;
 		undefined_a_counters = gen8_undefined_a_counters;
 	}
 
-	igt_list_for_each_entry(metric_set_iter, &intel_perf->metric_sets, link) {
-		if (strcmp(metric_set_iter->symbol_name, test_set_name) == 0) {
-			test_set = metric_set_iter;
-			break;
-		}
-	}
-
-	if (!test_set)
-		return false;
-
-	igt_debug("%s metric set UUID = %s\n",
-		  test_set->symbol_name,
-		  test_set->hw_config_guid);
-
 	intel_perf_load_perf_configs(intel_perf, drm_fd);
 
-	if (test_set->perf_oa_metrics_set == 0) {
-		igt_debug("Unable to load configurations\n");
-		return false;
-	}
-
 	oa_exp_1_millisec = max_oa_exponent_for_period_lte(1000000);
 
 	return true;
@@ -1255,8 +1224,8 @@ test_system_wide_paranoid(void)
 			DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 			/* OA unit configuration */
-			DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-			DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+			DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
+			DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
 			DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
 		};
 		struct drm_i915_perf_open_param param = {
@@ -1281,8 +1250,8 @@ test_system_wide_paranoid(void)
 			DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 			/* OA unit configuration */
-			DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-			DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+			DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
+			DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
 			DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
 		};
 		struct drm_i915_perf_open_param param = {
@@ -1313,8 +1282,8 @@ test_invalid_open_flags(void)
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		/* OA unit configuration */
-		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
+		DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
 	};
 	struct drm_i915_perf_open_param param = {
@@ -1331,8 +1300,8 @@ test_invalid_class_instance(void)
 {
 	uint64_t properties[] = {
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
-		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
+		DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
 		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, 0,
 		DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, 0,
@@ -1375,7 +1344,7 @@ test_invalid_oa_metric_set_id(void)
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		/* OA unit configuration */
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
 		DRM_I915_PERF_PROP_OA_METRICS_SET, UINT64_MAX,
 	};
@@ -1392,7 +1361,7 @@ test_invalid_oa_metric_set_id(void)
 	do_ioctl_err(drm_fd, DRM_IOCTL_I915_PERF_OPEN, &param, EINVAL);
 
 	/* Check that we aren't just seeing false positives... */
-	properties[ARRAY_SIZE(properties) - 1] = test_set->perf_oa_metrics_set;
+	properties[ARRAY_SIZE(properties) - 1] = default_test_set->perf_oa_metrics_set;
 	stream_fd = __perf_open(drm_fd, &param, false);
 	__perf_close(stream_fd);
 
@@ -1409,7 +1378,7 @@ test_invalid_oa_format_id(void)
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		/* OA unit configuration */
-		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
 		DRM_I915_PERF_PROP_OA_FORMAT, UINT64_MAX,
 	};
@@ -1426,7 +1395,7 @@ test_invalid_oa_format_id(void)
 	do_ioctl_err(drm_fd, DRM_IOCTL_I915_PERF_OPEN, &param, EINVAL);
 
 	/* Check that we aren't just seeing false positives... */
-	properties[ARRAY_SIZE(properties) - 1] = test_set->perf_oa_format;
+	properties[ARRAY_SIZE(properties) - 1] = default_test_set->perf_oa_format;
 	stream_fd = __perf_open(drm_fd, &param, false);
 	__perf_close(stream_fd);
 
@@ -1442,9 +1411,9 @@ test_missing_sample_flags(void)
 		/* No _PROP_SAMPLE_xyz flags */
 
 		/* OA unit configuration */
-		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
 	};
 	struct drm_i915_perf_open_param param = {
 		.flags = I915_PERF_FLAG_FD_CLOEXEC,
@@ -1577,6 +1546,7 @@ open_and_read_2_oa_reports(int format_id,
 			   bool timer_only,
 			   const struct intel_execution_engine2 *e)
 {
+	struct intel_perf_metric_set *test_set = metric_set(e);
 	uint64_t properties[] = {
 		/* Include OA reports in samples */
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
@@ -1961,7 +1931,8 @@ static bool expected_report_timing_delta(uint32_t delta, uint32_t expected_delta
 static void
 test_oa_exponents(const struct intel_execution_engine2 *e)
 {
-	uint64_t fmt = oa_unit_default_format(e);
+	struct intel_perf_metric_set *test_set = metric_set(e);
+	uint64_t fmt = test_set->perf_oa_format;
 
 	load_helper_init();
 	load_helper_run(HIGH);
@@ -2105,8 +2076,8 @@ test_invalid_oa_exponent(void)
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		/* OA unit configuration */
-		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
+		DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, 31, /* maximum exponent expected
 						       to be accepted */
 	};
@@ -2141,8 +2112,8 @@ test_low_oa_exponent_permissions(void)
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		/* OA unit configuration */
-		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
+		DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, bad_exponent,
 	};
 	struct drm_i915_perf_open_param param = {
@@ -2204,8 +2175,8 @@ test_per_context_mode_unprivileged(void)
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		/* OA unit configuration */
-		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
+		DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
 	};
 	struct drm_i915_perf_open_param param = {
@@ -2300,10 +2271,11 @@ test_blocking(uint64_t requested_oa_period,
 
 	int64_t start, end;
 	int n = 0;
+	struct intel_perf_metric_set *test_set = metric_set(e);
 
 	ADD_PROPS(props, idx, SAMPLE_OA, true);
 	ADD_PROPS(props, idx, OA_METRICS_SET, test_set->perf_oa_metrics_set);
-	ADD_PROPS(props, idx, OA_FORMAT, oa_unit_default_format(e));
+	ADD_PROPS(props, idx, OA_FORMAT, test_set->perf_oa_format);
 	ADD_PROPS(props, idx, OA_EXPONENT, oa_exponent);
 
 	if (has_param_poll_period() && set_kernel_hrtimer)
@@ -2463,10 +2435,11 @@ test_polling(uint64_t requested_oa_period,
 	int min_iterations = (test_duration_ns / (oa_period + (kernel_hrtimer + kernel_hrtimer / 5)));
 	int64_t start, end;
 	int n = 0;
+	struct intel_perf_metric_set *test_set = metric_set(e);
 
 	ADD_PROPS(props, idx, SAMPLE_OA, true);
 	ADD_PROPS(props, idx, OA_METRICS_SET, test_set->perf_oa_metrics_set);
-	ADD_PROPS(props, idx, OA_FORMAT, oa_unit_default_format(e));
+	ADD_PROPS(props, idx, OA_FORMAT, test_set->perf_oa_format);
 	ADD_PROPS(props, idx, OA_EXPONENT, oa_exponent);
 
 	if (has_param_poll_period() && set_kernel_hrtimer)
@@ -2638,8 +2611,8 @@ static void test_polling_small_buf(void)
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		/* OA unit configuration */
-		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
+		DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
 	};
 	struct drm_i915_perf_open_param param = {
@@ -2651,7 +2624,7 @@ static void test_polling_small_buf(void)
 	};
 	uint32_t test_duration = 80 * 1000 * 1000;
 	int sample_size = (sizeof(struct drm_i915_perf_record_header) +
-			   get_oa_format(test_set->perf_oa_format).size);
+			   get_oa_format(default_test_set->perf_oa_format).size);
 	int n_expected_reports = test_duration / oa_exponent_to_ns(oa_exponent);
 	int n_expect_read_bytes = n_expected_reports * sample_size;
 	struct timespec ts = {};
@@ -2736,11 +2709,12 @@ static void
 gen12_test_oa_tlb_invalidate(const struct intel_execution_engine2 *e)
 {
 	int oa_exponent = max_oa_exponent_for_period_lte(30000000);
+	struct intel_perf_metric_set *test_set = metric_set(e);
 	uint64_t properties[] = {
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, oa_unit_default_format(e),
+		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
 		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
 		DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
@@ -2783,7 +2757,8 @@ test_buffer_fill(const struct intel_execution_engine2 *e)
 	/* ~5 micro second period */
 	int oa_exponent = max_oa_exponent_for_period_lte(5000);
 	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
-	uint64_t fmt = oa_unit_default_format(e);
+	struct intel_perf_metric_set *test_set = metric_set(e);
+	uint64_t fmt = test_set->perf_oa_format;
 	uint64_t properties[] = {
 		/* Include OA reports in samples */
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
@@ -2940,8 +2915,8 @@ test_non_zero_reason(void)
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		/* OA unit configuration */
-		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
+		DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
 	};
 	struct drm_i915_perf_open_param param = {
@@ -2997,7 +2972,7 @@ test_non_zero_reason(void)
 
 			if (last_report) {
 				sanity_check_reports(last_report, report,
-						     test_set->perf_oa_format);
+						     default_test_set->perf_oa_format);
 			}
 			last_report = report;
 			break;
@@ -3019,7 +2994,8 @@ test_enable_disable(const struct intel_execution_engine2 *e)
 	/* ~5 micro second period */
 	int oa_exponent = max_oa_exponent_for_period_lte(5000);
 	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
-	uint64_t fmt = oa_unit_default_format(e);
+	struct intel_perf_metric_set *test_set = metric_set(e);
+	uint64_t fmt = test_set->perf_oa_format;
 	uint64_t properties[] = {
 		/* Include OA reports in samples */
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
@@ -3179,8 +3155,8 @@ test_short_reads(void)
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		/* OA unit configuration */
-		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
+		DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
 	};
 	struct drm_i915_perf_open_param param = {
@@ -3270,8 +3246,8 @@ test_non_sampling_read_error(void)
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		/* OA unit configuration */
-		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
+		DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
 
 		/* XXX: no sampling exponent */
 	};
@@ -3306,8 +3282,8 @@ test_disabled_read_error(void)
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		/* OA unit configuration */
-		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
+		DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
 	};
 	struct drm_i915_perf_open_param param = {
@@ -3333,7 +3309,7 @@ test_disabled_read_error(void)
 	param.flags &= ~I915_PERF_FLAG_DISABLED;
 	stream_fd = __perf_open(drm_fd, &param, false);
 
-	read_2_oa_reports(test_set->perf_oa_format,
+	read_2_oa_reports(default_test_set->perf_oa_format,
 			  oa_exponent,
 			  oa_report0,
 			  oa_report1,
@@ -3347,7 +3323,7 @@ test_disabled_read_error(void)
 
 	do_ioctl(stream_fd, I915_PERF_IOCTL_ENABLE, 0);
 
-	read_2_oa_reports(test_set->perf_oa_format,
+	read_2_oa_reports(default_test_set->perf_oa_format,
 			  oa_exponent,
 			  oa_report0,
 			  oa_report1,
@@ -3360,6 +3336,7 @@ static void
 gen12_test_mi_rpc(const struct intel_execution_engine2 *e)
 {
 	uint64_t fmt = oar_unit_default_format();
+	struct intel_perf_metric_set *test_set = metric_set(e);
 	uint64_t properties[] = {
 		/* On Gen12, MI RPC uses OAR. OAR is configured only for the
 		 * render context that wants to measure the performance. Hence a
@@ -3468,8 +3445,8 @@ test_mi_rpc(void)
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		/* OA unit configuration */
-		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
+		DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
 
 		/* Note: no OA exponent specified in this case */
 	};
@@ -3507,7 +3484,7 @@ test_mi_rpc(void)
 	report32 = buf->ptr;
 	dump_report(report32, 64, "mi-rpc");
 	igt_assert_eq(report32[0], 0xdeadbeef); /* report ID */
-	igt_assert(oa_timestamp(report32, test_set->perf_oa_format)); /* timestamp */
+	igt_assert(oa_timestamp(report32, default_test_set->perf_oa_format)); /* timestamp */
 
 	igt_assert_neq(report32[63], 0x80808080); /* end of report */
 	igt_assert_eq(report32[64], 0x80808080); /* after 256 byte report */
@@ -3571,8 +3548,8 @@ hsw_test_single_ctx_counters(void)
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		/* OA unit configuration */
-		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
+		DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
 
 		/* Note: no OA exponent specified in this case */
 	};
@@ -3717,7 +3694,7 @@ hsw_test_single_ctx_counters(void)
 		igt_assert_neq(report1_32[1], 0); /* timestamp */
 
 		print_reports(report0_32, report1_32,
-			      lookup_format(test_set->perf_oa_format));
+			      lookup_format(default_test_set->perf_oa_format));
 
 		/* A40 == N samples written to all render targets */
 		n_samples_written = report1_32[43] - report0_32[43];
@@ -3800,8 +3777,8 @@ gen8_test_single_ctx_render_target_writes_a_counter(void)
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		/* OA unit configuration */
-		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
+		DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
 
 		/* Note: no OA exponent specified in this case */
@@ -3811,7 +3788,7 @@ gen8_test_single_ctx_render_target_writes_a_counter(void)
 		.num_properties = ARRAY_SIZE(properties) / 2,
 		.properties_ptr = to_user_pointer(properties),
 	};
-	size_t format_size = get_oa_format(test_set->perf_oa_format).size;
+	size_t format_size = get_oa_format(default_test_set->perf_oa_format).size;
 	size_t sample_size = (sizeof(struct drm_i915_perf_record_header) +
 			      format_size);
 	int max_reports = MAX_OA_BUF_SIZE / format_size;
@@ -3846,7 +3823,7 @@ gen8_test_single_ctx_render_target_writes_a_counter(void)
 			int delta_delta;
 			int ret;
 			struct accumulator accumulator = {
-				.format = test_set->perf_oa_format
+				.format = default_test_set->perf_oa_format
 			};
 
 			bops = buf_ops_create(drm_fd);
@@ -4012,7 +3989,7 @@ gen8_test_single_ctx_render_target_writes_a_counter(void)
 				goto again;
 			}
 
-			len = i915_read_reports_until_timestamp(test_set->perf_oa_format,
+			len = i915_read_reports_until_timestamp(default_test_set->perf_oa_format,
 								buf, buf_size,
 								report0_32[1],
 								report1_32[1]);
@@ -4027,7 +4004,7 @@ gen8_test_single_ctx_render_target_writes_a_counter(void)
 				uint32_t reason;
 				const char *skip_reason = NULL, *report_reason = NULL;
 				struct accumulator laccumulator = {
-					.format = test_set->perf_oa_format
+					.format = default_test_set->perf_oa_format
 				};
 
 
@@ -4158,7 +4135,7 @@ gen8_test_single_ctx_render_target_writes_a_counter(void)
 				if (report == report1_32) {
 					igt_debug("Breaking on end of report\n");
 					print_reports(report0_32, report1_32,
-						      lookup_format(test_set->perf_oa_format));
+						      lookup_format(default_test_set->perf_oa_format));
 					break;
 				}
 			}
@@ -4213,6 +4190,7 @@ again:
 
 static void gen12_single_ctx_helper(const struct intel_execution_engine2 *e)
 {
+	struct intel_perf_metric_set *test_set = metric_set(e);
 	uint64_t fmt = oar_unit_default_format();
 	uint64_t properties[] = {
 		/* Have a random value here for the context id, but initialize
@@ -4558,8 +4536,8 @@ test_rc6_disable(void)
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		/* OA unit configuration */
-		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
+		DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
 	};
 	struct drm_i915_perf_open_param param = {
@@ -4601,6 +4579,8 @@ test_rc6_disable(void)
 static void
 test_stress_open_close(const struct intel_execution_engine2 *e)
 {
+	struct intel_perf_metric_set *test_set = metric_set(e);
+
 	load_helper_init();
 	load_helper_run(HIGH);
 
@@ -4614,7 +4594,7 @@ test_stress_open_close(const struct intel_execution_engine2 *e)
 
 			/* OA unit configuration */
 			DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-			DRM_I915_PERF_PROP_OA_FORMAT, oa_unit_default_format(e),
+			DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
 			DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
 			DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
 			DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
@@ -4702,6 +4682,7 @@ make_valid_reduced_sseu_config(struct drm_i915_gem_context_param_sseu default_ss
 static void
 test_global_sseu_config_invalid(const struct intel_execution_engine2 *e)
 {
+	struct intel_perf_metric_set *test_set = metric_set(e);
 	struct drm_i915_gem_context_param_sseu default_sseu;
 	struct drm_i915_gem_context_param_sseu sseu_param;
 	struct drm_i915_gem_context_param ctx_gp = {
@@ -4717,7 +4698,7 @@ test_global_sseu_config_invalid(const struct intel_execution_engine2 *e)
 
 		/* OA unit configuration */
 		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, oa_unit_default_format(e),
+		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
 		DRM_I915_PERF_PROP_GLOBAL_SSEU, to_user_pointer(&sseu_param),
 		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
@@ -4791,6 +4772,7 @@ test_global_sseu_config_invalid(const struct intel_execution_engine2 *e)
 static void
 test_global_sseu_config(const struct intel_execution_engine2 *e)
 {
+	struct intel_perf_metric_set *test_set = metric_set(e);
 	struct drm_i915_gem_context_param_sseu default_sseu;
 	struct drm_i915_gem_context_param_sseu sseu_param;
 	struct drm_i915_gem_context_param ctx_gp = {
@@ -4806,7 +4788,7 @@ test_global_sseu_config(const struct intel_execution_engine2 *e)
 
 		/* OA unit configuration */
 		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, oa_unit_default_format(e),
+		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
 		DRM_I915_PERF_PROP_GLOBAL_SSEU, to_user_pointer(&sseu_param),
 		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
@@ -5012,7 +4994,7 @@ test_create_destroy_userspace_config(void)
 
 		/* OA unit configuration */
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
 		DRM_I915_PERF_PROP_OA_METRICS_SET
 	};
@@ -5299,8 +5281,8 @@ test_i915_ref_count(void)
 	 * init_sys_info()...
 	 */
 	igt_require(init_sys_info());
-	properties[3] = test_set->perf_oa_metrics_set;
-	properties[5] = test_set->perf_oa_format;
+	properties[3] = default_test_set->perf_oa_metrics_set;
+	properties[5] = default_test_set->perf_oa_format;
 	properties[7] = oa_exp_1_millisec;
 
 	ref_count0 = read_i915_module_ref();
@@ -5321,7 +5303,7 @@ test_i915_ref_count(void)
 
 	igt_assert(ref_count0 > baseline);
 
-	read_2_oa_reports(test_set->perf_oa_format,
+	read_2_oa_reports(default_test_set->perf_oa_format,
 			  oa_exp_1_millisec,
 			  oa_report0,
 			  oa_report1,
@@ -5381,6 +5363,9 @@ struct perf_engine_group {
 	/* perf engines in a group */
 	int num_engines;
 	struct i915_engine_class_instance *ci;
+
+	int gt;
+	struct intel_perf_metric_set *test_set;
 };
 
 static struct drm_i915_query_engine_info *query_engine_info(int i915)
@@ -5397,6 +5382,49 @@ static struct drm_i915_query_engine_info *query_engine_info(int i915)
 	return qinfo;
 }
 
+static struct intel_perf_metric_set *metric_set(const struct intel_execution_engine2 *e2)
+{
+	const char *test_set_name = NULL;
+	struct intel_perf_metric_set *metric_set_iter;
+	struct intel_perf_metric_set *test_set = NULL;
+
+	if (IS_HASWELL(devid))
+		test_set_name = "RenderBasic";
+	else if (e2->class == I915_ENGINE_CLASS_RENDER)
+		test_set_name = "TestOa";
+	else if ((e2->class == I915_ENGINE_CLASS_VIDEO ||
+		  e2->class == I915_ENGINE_CLASS_VIDEO_ENHANCE) &&
+		 HAS_OAM(devid))
+		test_set_name = "MediaSet1";
+	else
+		igt_assert(!"reached");
+
+	igt_list_for_each_entry(metric_set_iter, &intel_perf->metric_sets, link) {
+		if (strcmp(metric_set_iter->symbol_name, test_set_name) == 0) {
+			test_set = metric_set_iter;
+			break;
+		}
+	}
+
+	igt_assert(test_set);
+
+	/*
+	 * configuration was loaded in init_sys_info() ->
+	 * intel_perf_load_perf_configs(), and test_set->perf_oa_metrics_set
+	 * should point to metric id returned by the config add ioctl. 0 is
+	 * invalid.
+	 */
+	igt_assert_neq_u64(test_set->perf_oa_metrics_set, 0);
+
+	igt_debug("engine %d:%d - %s metric set UUID = %s\n",
+		  e2->class,
+		  e2->instance,
+		  test_set->symbol_name,
+		  test_set->hw_config_guid);
+
+	return test_set;
+}
+
 static int compare_engine_oa_unit_id(const void *e1, const void *e2)
 {
 	const struct drm_i915_engine_info *_e1 = e1;
@@ -5572,8 +5600,8 @@ test_gt_exclusive_stream(const intel_ctx_t *ctx, bool exponent)
 {
 	uint64_t properties[] = {
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
-		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, 0,
+		DRM_I915_PERF_PROP_OA_FORMAT, 0,
 		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, 0,
 		DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, 0,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exp_1_millisec,
@@ -5592,12 +5620,16 @@ test_gt_exclusive_stream(const intel_ctx_t *ctx, bool exponent)
 	for (i = 0; i < num_perf_oa_groups; i++) {
 		struct perf_engine_group *grp = &perf_oa_groups[i];
 		struct i915_engine_class_instance *ci = random_engine(grp);
+		struct intel_execution_engine2 *e2 = __ci_to_e2(ctx, ci);
+		struct intel_perf_metric_set *test_set = metric_set(e2);
 
 		if (!exponent) {
 			properties[0] = DRM_I915_PERF_PROP_CTX_HANDLE;
 			properties[1] = ctx->id;
 		}
 
+		properties[3] = test_set->perf_oa_metrics_set;
+		properties[5] = test_set->perf_oa_format;
 		properties[7] = ci->engine_class;
 		properties[9] = ci->engine_instance;
 		grp->perf_fd = igt_ioctl(drm_fd,
@@ -5615,6 +5647,8 @@ test_gt_exclusive_stream(const intel_ctx_t *ctx, bool exponent)
 
 		for (j = 0; j < grp->num_engines; j++) {
 			struct i915_engine_class_instance *ci = grp->ci + j;
+			struct intel_execution_engine2 *e2 = __ci_to_e2(ctx, ci);
+			struct intel_perf_metric_set *test_set = metric_set(e2);
 
 			/*
 			 * case 1:
@@ -5622,6 +5656,8 @@ test_gt_exclusive_stream(const intel_ctx_t *ctx, bool exponent)
 			 */
 			properties[0] = DRM_I915_PERF_PROP_SAMPLE_OA;
 			properties[1] = true;
+			properties[3] = test_set->perf_oa_metrics_set;
+			properties[5] = test_set->perf_oa_format;
 			properties[7] = ci->engine_class;
 			properties[9] = ci->engine_instance;
 			/* for SAMPLE OA use case, we must pass exponent */
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 23/30] i915/perf: Run non-zero-reason on media engines as well
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (21 preceding siblings ...)
  2023-02-14 20:59 ` [igt-dev] [PATCH 22/30] i915/perf: Add support for engine specific metrics Umesh Nerlige Ramappa
@ 2023-02-14 21:00 ` Umesh Nerlige Ramappa
  2023-02-14 21:00 ` [igt-dev] [PATCH 24/30] i915/perf: Make sanity check failures descriptive Umesh Nerlige Ramappa
                   ` (10 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 21:00 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Enable non-zero-reason test to run on media engines as well.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 tests/i915/perf.c | 25 +++++++++++++++----------
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index 02835602..5b536034 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -2906,18 +2906,23 @@ test_buffer_fill(const struct intel_execution_engine2 *e)
 }
 
 static void
-test_non_zero_reason(void)
+test_non_zero_reason(const struct intel_execution_engine2 *e)
 {
 	/* ~20 micro second period */
 	int oa_exponent = max_oa_exponent_for_period_lte(20000);
+	struct intel_perf_metric_set *test_set = metric_set(e);
+	uint64_t fmt = test_set->perf_oa_format;
+	size_t report_size = get_oa_format(fmt).size;
 	uint64_t properties[] = {
 		/* Include OA reports in samples */
 		DRM_I915_PERF_PROP_SAMPLE_OA, true,
 
 		/* OA unit configuration */
-		DRM_I915_PERF_PROP_OA_METRICS_SET, default_test_set->perf_oa_metrics_set,
-		DRM_I915_PERF_PROP_OA_FORMAT, default_test_set->perf_oa_format,
+		DRM_I915_PERF_PROP_OA_METRICS_SET, test_set->perf_oa_metrics_set,
+		DRM_I915_PERF_PROP_OA_FORMAT, fmt,
 		DRM_I915_PERF_PROP_OA_EXPONENT, oa_exponent,
+		DRM_I915_PERF_PROP_OA_ENGINE_CLASS, e->class,
+		DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE, e->instance,
 	};
 	struct drm_i915_perf_open_param param = {
 		.flags = I915_PERF_FLAG_FD_CLOEXEC,
@@ -2925,7 +2930,7 @@ test_non_zero_reason(void)
 		.properties_ptr = to_user_pointer(properties),
 	};
 	struct drm_i915_perf_record_header *header;
-	uint32_t buf_size = 3 * 65536 * (256 + sizeof(struct drm_i915_perf_record_header));
+	uint32_t buf_size = 3 * 65536 * (report_size + sizeof(struct drm_i915_perf_record_header));
 	uint8_t *buf = malloc(buf_size);
 	uint32_t total_len = 0, reports_lost;
 	const uint32_t *last_report;
@@ -2970,10 +2975,9 @@ test_non_zero_reason(void)
 
 			igt_assert_neq(reason, 0);
 
-			if (last_report) {
-				sanity_check_reports(last_report, report,
-						     default_test_set->perf_oa_format);
-			}
+			if (last_report)
+				sanity_check_reports(last_report, report, fmt);
+
 			last_report = report;
 			break;
 		}
@@ -5795,10 +5799,11 @@ igt_main
 			test_buffer_fill(e);
 
 	igt_describe("Test that reason field in OA reports is never 0 on Gen8+");
-	igt_subtest("non-zero-reason") {
+	igt_subtest_with_dynamic("non-zero-reason") {
 		/* Reason field is only available on Gen8+ */
 		igt_require(intel_gen(devid) >= 8);
-		test_non_zero_reason();
+		__for_random_engine_in_each_group(perf_oa_groups, ctx, e)
+			test_non_zero_reason(e);
 	}
 
 	igt_subtest("disabled-read-error")
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 24/30] i915/perf: Make sanity check failures descriptive
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (22 preceding siblings ...)
  2023-02-14 21:00 ` [igt-dev] [PATCH 23/30] i915/perf: Run non-zero-reason on media engines as well Umesh Nerlige Ramappa
@ 2023-02-14 21:00 ` Umesh Nerlige Ramappa
  2023-02-14 21:00 ` [igt-dev] [PATCH 25/30] lib/perf: Enable multi-tile support for perf library Umesh Nerlige Ramappa
                   ` (9 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 21:00 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Make the asserts in the sanity check descriptive.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 tests/i915/perf.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index 5b536034..a315623e 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -1030,7 +1030,9 @@ gen8_sanity_check_test_oa_reports(const uint32_t *oa_report0,
 			continue;
 
 		igt_debug("A40_%d: delta = %"PRIu64"\n", j, delta);
-		igt_assert(delta <= max_delta);
+		igt_assert_f(delta <= max_delta,
+			     "A40_%d: delta = %"PRIu64", max_delta = %"PRIu64"\n",
+			     j, delta, max_delta);
 	}
 
 	for (int j = 0; j < format.n_a64; j++) {
@@ -1042,7 +1044,9 @@ gen8_sanity_check_test_oa_reports(const uint32_t *oa_report0,
 			continue;
 
 		igt_debug("A64_%d: delta = %"PRIu64"\n", format.first_a + j, delta);
-		igt_assert(delta <= max_delta);
+		igt_assert_f(delta <= max_delta,
+			     "A64_%d: delta = %"PRIu64", max_delta = %"PRIu64"\n",
+			     format.first_a + j, delta, max_delta);
 	}
 
 	for (int j = 0; j < format.n_a; j++) {
@@ -1057,7 +1061,9 @@ gen8_sanity_check_test_oa_reports(const uint32_t *oa_report0,
 			continue;
 
 		igt_debug("A%d: delta = %"PRIu32"\n", a_id, delta);
-		igt_assert(delta <= max_delta);
+		igt_assert_f(delta <= max_delta,
+			     "A%d: delta = %"PRIu32", max_delta = %"PRIu64"\n",
+			     a_id, delta, max_delta);
 	}
 
 	/* The TestOa metric set defines all B counters to be a
@@ -1119,7 +1125,9 @@ gen8_sanity_check_test_oa_reports(const uint32_t *oa_report0,
 
 		igt_debug("C%d: delta = %"PRIu32", max_delta=%"PRIu64"\n",
 			  j, delta, max_delta);
-		igt_assert(delta <= max_delta);
+		igt_assert_f(delta <= max_delta,
+			     "C%d: delta = %"PRIu32", max_delta = %"PRIu64"\n",
+			     j, delta, max_delta);
 	}
 }
 
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 25/30] lib/perf: Enable multi-tile support for perf library
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (23 preceding siblings ...)
  2023-02-14 21:00 ` [igt-dev] [PATCH 24/30] i915/perf: Make sanity check failures descriptive Umesh Nerlige Ramappa
@ 2023-02-14 21:00 ` Umesh Nerlige Ramappa
  2023-02-14 21:00 ` [igt-dev] [PATCH 26/30] lib/perf: Update MTL OA timestamp and EU thread config Umesh Nerlige Ramappa
                   ` (8 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 21:00 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Add class instance awareness to perf library.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 lib/i915/perf.c                      | 15 ++++--
 lib/i915/perf.h                      |  2 +-
 tests/core_hotunplug.c               |  2 +-
 tests/i915/perf.c                    |  2 +-
 tools/i915-perf/i915_perf_configs.c  |  2 +-
 tools/i915-perf/i915_perf_recorder.c | 72 ++++++++++++++++++++++++++--
 6 files changed, 81 insertions(+), 14 deletions(-)

diff --git a/lib/i915/perf.c b/lib/i915/perf.c
index 6c7a1925..d8624dc0 100644
--- a/lib/i915/perf.c
+++ b/lib/i915/perf.c
@@ -574,7 +574,7 @@ typedef enum {
 	RPS_MAX_ATTR,
 } intel_sysfs_attr_id;
 
-static const char *intel_sysfs_attr_name[2][RPS_MAX_ATTR] =
+static const char *intel_sysfs_attr_name[][RPS_MAX_ATTR] =
 {
 	{
 		"gt_min_freq_mhz",
@@ -584,20 +584,25 @@ static const char *intel_sysfs_attr_name[2][RPS_MAX_ATTR] =
 		"gt/gt0/rps_min_freq_mhz",
 		"gt/gt0/rps_max_freq_mhz",
 	},
+	{
+		"gt/gt1/rps_min_freq_mhz",
+		"gt/gt1/rps_max_freq_mhz",
+	},
 };
 
 static const char *
-intel_sysfs_attr_id_to_name(int sysfs_dirfd, intel_sysfs_attr_id id)
+intel_sysfs_attr_id_to_name(int sysfs_dirfd, intel_sysfs_attr_id id, int gt)
 {
 	assert(id < RPS_MAX_ATTR);
+	assert(gt < sizeof(intel_sysfs_attr_name) - 1);
 
 	return !faccessat(sysfs_dirfd, "gt", O_RDONLY, 0) ?
-		intel_sysfs_attr_name[1][id] :
+		intel_sysfs_attr_name[gt + 1][id] :
 		intel_sysfs_attr_name[0][id];
 }
 
 struct intel_perf *
-intel_perf_for_fd(int drm_fd)
+intel_perf_for_fd(int drm_fd, int gt)
 {
 	uint32_t device_id;
 	uint32_t device_revision;
@@ -612,7 +617,7 @@ intel_perf_for_fd(int drm_fd)
 		return NULL;
 
 #define read_sysfs_rps(fd, id, value) \
-	read_sysfs(fd, intel_sysfs_attr_id_to_name(fd, id), value)
+	read_sysfs(fd, intel_sysfs_attr_id_to_name(fd, id, gt), value)
 
 	if (!read_sysfs_rps(sysfs_dir_fd, RPS_MIN_FREQ_MHZ, &gt_min_freq) ||
 	    !read_sysfs_rps(sysfs_dir_fd, RPS_MAX_FREQ_MHZ, &gt_max_freq)) {
diff --git a/lib/i915/perf.h b/lib/i915/perf.h
index e6e60dc9..df5b6b96 100644
--- a/lib/i915/perf.h
+++ b/lib/i915/perf.h
@@ -316,7 +316,7 @@ intel_perf_devinfo_eu_available(const struct intel_perf_devinfo *devinfo,
 	return (devinfo->eu_masks[subslice_offset + eu / 8] & (1U << eu % 8)) != 0;
 }
 
-struct intel_perf *intel_perf_for_fd(int drm_fd);
+struct intel_perf *intel_perf_for_fd(int drm_fd, int gt);
 struct intel_perf *intel_perf_for_devinfo(uint32_t device_id,
 					  uint32_t revision,
 					  uint64_t timestamp_frequency,
diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c
index ebb646b5..e79eb1ed 100644
--- a/tests/core_hotunplug.c
+++ b/tests/core_hotunplug.c
@@ -377,7 +377,7 @@ static bool local_i915_perf_healthcheck(int i915)
 {
 	struct intel_perf *intel_perf;
 
-	intel_perf = intel_perf_for_fd(i915);
+	intel_perf = intel_perf_for_fd(i915, 0);
 	if (intel_perf)
 		intel_perf_free(intel_perf);
 	return intel_perf;
diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index a315623e..cf8c1231 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -1136,7 +1136,7 @@ init_sys_info(void)
 {
 	igt_assert_neq(devid, 0);
 
-	intel_perf = intel_perf_for_fd(drm_fd);
+	intel_perf = intel_perf_for_fd(drm_fd, 0);
 	igt_require(intel_perf);
 
 	igt_debug("n_eu_slices: %"PRIu64"\n", intel_perf->devinfo.n_eu_slices);
diff --git a/tools/i915-perf/i915_perf_configs.c b/tools/i915-perf/i915_perf_configs.c
index bce3bd0f..0db9a126 100644
--- a/tools/i915-perf/i915_perf_configs.c
+++ b/tools/i915-perf/i915_perf_configs.c
@@ -230,7 +230,7 @@ main(int argc, char *argv[])
 
 	fprintf(stdout, "Device graphics_ver=%i gt=%i\n", devinfo->graphics_ver, devinfo->gt);
 
-	perf = intel_perf_for_fd(drm_fd);
+	perf = intel_perf_for_fd(drm_fd, 0);
 	if (!perf) {
 		fprintf(stderr, "No perf data found.\n");
 		return EXIT_FAILURE;
diff --git a/tools/i915-perf/i915_perf_recorder.c b/tools/i915-perf/i915_perf_recorder.c
index d16f1546..ee8a288d 100644
--- a/tools/i915-perf/i915_perf_recorder.c
+++ b/tools/i915-perf/i915_perf_recorder.c
@@ -26,6 +26,7 @@
 #include <fcntl.h>
 #include <getopt.h>
 #include <inttypes.h>
+#include <limits.h>
 #include <poll.h>
 #include <signal.h>
 #include <stdbool.h>
@@ -408,6 +409,9 @@ struct recording_context {
 	int command_fifo_fd;
 
 	uint64_t poll_period;
+
+	struct i915_engine_class_instance engine;
+	int gt;
 };
 
 static int
@@ -449,6 +453,13 @@ perf_open(struct recording_context *ctx)
 		properties[p++] = ctx->poll_period;
 	}
 
+	if (ctx->engine.engine_class >= 0 && ctx->engine.engine_instance >= 0) {
+		properties[p++] = DRM_I915_PERF_PROP_OA_ENGINE_CLASS;
+		properties[p++] = ctx->engine.engine_class;
+		properties[p++] = DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE;
+		properties[p++] = ctx->engine.engine_instance;
+	}
+
 	memset(&param, 0, sizeof(param));
 	param.flags = 0;
 	param.flags |= I915_PERF_FLAG_FD_CLOEXEC | I915_PERF_FLAG_FD_NONBLOCK;
@@ -497,8 +508,8 @@ write_header(FILE *output, struct recording_context *ctx)
 		.gt_min_frequency = ctx->perf->devinfo.gt_min_freq,
 		.gt_max_frequency = ctx->perf->devinfo.gt_max_freq,
 		.oa_format = ctx->metric_set->perf_oa_format,
-		.engine_class = I915_ENGINE_CLASS_RENDER,
-		.engine_instance = 0,
+		.engine_class = ctx->engine.engine_class,
+		.engine_instance = ctx->engine.engine_instance,
 	};
 	struct drm_i915_perf_record_header header = {
 		.type = INTEL_PERF_RECORD_TYPE_DEVICE_INFO,
@@ -805,7 +816,9 @@ usage(const char *name)
 		"                                       Values: boot, mono, mono_raw (default = mono)\n"
 		"     --poll-period         -P <value>  Polling interval in microseconds used by a timer in the driver to query\n"
 		"                                       for OA reports periodically\n"
-		"                                       (default = 5000), Minimum = 100.\n",
+		"                                       (default = 5000), Minimum = 100.\n"
+		"     --engine-class        -e <value>  Engine class used for the OA capture.\n"
+		"     --engine-instance     -i <value>  Engine instance used for the OA capture.\n",
 		name);
 }
 
@@ -834,6 +847,33 @@ teardown_recording_context(struct recording_context *ctx)
 		close(ctx->drm_fd);
 }
 
+static int
+mtl_engine_to_gt(const struct i915_engine_class_instance *engine)
+{
+        switch (engine->engine_class) {
+        case I915_ENGINE_CLASS_RENDER:
+                return 0;
+        case I915_ENGINE_CLASS_VIDEO:
+        case I915_ENGINE_CLASS_VIDEO_ENHANCE:
+                return 1;
+        default:
+                return -1;
+        }
+}
+
+/* static mapping as in igt core library until a different way is available */
+static int
+engine_to_gt(struct recording_context *ctx)
+{
+	if (ctx->devinfo->is_meteorlake)
+		return mtl_engine_to_gt(&ctx->engine);
+	else if (ctx->engine.engine_class == I915_ENGINE_CLASS_RENDER &&
+		 ctx->engine.engine_instance == 0)
+		return 0;
+
+	return -1;
+}
+
 int
 main(int argc, char *argv[])
 {
@@ -849,6 +889,8 @@ main(int argc, char *argv[])
 		{"command-fifo",         required_argument, 0, 'f'},
 		{"cpu-clock",            required_argument, 0, 'k'},
 		{"poll-period",          required_argument, 0, 'P'},
+		{"engine-class",         required_argument, 0, 'e'},
+		{"engine-instance",      required_argument, 0, 'i'},
 		{0, 0, 0, 0}
 	};
 	const struct {
@@ -878,9 +920,10 @@ main(int argc, char *argv[])
 
 		/* 5 ms poll period */
 		.poll_period = 5 * 1000 * 1000,
+		.engine = { USHRT_MAX, USHRT_MAX },
 	};
 
-	while ((opt = getopt_long(argc, argv, "hc:d:p:m:Co:s:f:k:P:", long_options, NULL)) != -1) {
+	while ((opt = getopt_long(argc, argv, "hc:d:p:m:Co:s:f:k:P:e:i:", long_options, NULL)) != -1) {
 		switch (opt) {
 		case 'h':
 			usage(argv[0]);
@@ -931,6 +974,12 @@ main(int argc, char *argv[])
 		case 'P':
 			ctx.poll_period = MAX(100, atol(optarg)) * 1000;
 			break;
+		case 'e':
+			ctx.engine.engine_class = atoi(optarg);
+			break;
+		case 'i':
+			ctx.engine.engine_instance = atoi(optarg);
+			break;
 		default:
 			fprintf(stderr, "Internal error: "
 				"unexpected getopt value: %d\n", opt);
@@ -944,6 +993,12 @@ main(int argc, char *argv[])
 		return EXIT_SUCCESS;
 	}
 
+	if (ctx.engine.engine_class == USHRT_MAX ||
+	    ctx.engine.engine_instance == USHRT_MAX) {
+		ctx.engine.engine_class = I915_ENGINE_CLASS_RENDER;
+		ctx.engine.engine_instance = 0;
+	}
+
 	ctx.drm_fd = open_render_node(&ctx.devid, dev_node_id);
 	if (ctx.drm_fd < 0) {
 		fprintf(stderr, "Unable to open device.\n");
@@ -956,6 +1011,13 @@ main(int argc, char *argv[])
 		goto fail;
 	}
 
+	ctx.gt = engine_to_gt(&ctx);
+	if (ctx.gt < 0) {
+		fprintf(stderr, "Unsupported engine class:instance %d:%d.\n",
+			ctx.engine.engine_class, ctx.engine.engine_instance);
+		goto fail;
+	}
+
 	fprintf(stdout, "Device name=%s gen=%i gt=%i id=0x%x\n",
 		ctx.devinfo->codename, ctx.devinfo->graphics_ver, ctx.devinfo->gt, ctx.devid);
 
@@ -965,7 +1027,7 @@ main(int argc, char *argv[])
 		goto fail;
 	}
 
-	ctx.perf = intel_perf_for_fd(ctx.drm_fd);
+	ctx.perf = intel_perf_for_fd(ctx.drm_fd, ctx.gt);
 	if (!ctx.perf) {
 		fprintf(stderr, "No perf data found.\n");
 		goto fail;
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 26/30] lib/perf: Update MTL OA timestamp and EU thread config
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (24 preceding siblings ...)
  2023-02-14 21:00 ` [igt-dev] [PATCH 25/30] lib/perf: Enable multi-tile support for perf library Umesh Nerlige Ramappa
@ 2023-02-14 21:00 ` Umesh Nerlige Ramappa
  2023-02-14 21:00 ` [igt-dev] [PATCH 27/30] lib/perf: Add support for MPEC format Umesh Nerlige Ramappa
                   ` (7 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 21:00 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

MTL has configuration similar to DG2 for OA timestamp and threads per
EU. Update the same for MTL.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 lib/i915/perf.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/lib/i915/perf.c b/lib/i915/perf.c
index d8624dc0..24ef3819 100644
--- a/lib/i915/perf.c
+++ b/lib/i915/perf.c
@@ -432,6 +432,14 @@ intel_perf_for_devinfo(uint32_t device_id,
 		else
 			return unsupported_i915_perf_platform(perf);
 	} else if (devinfo->is_meteorlake) {
+		perf->devinfo.eu_threads_count = 8;
+		/* OA reports have the timestamp value shifted to the
+		 * right by 1 bits, it also means we cannot use the
+		 * top bit for comparison.
+		 */
+		perf->devinfo.oa_timestamp_shift = -1;
+		perf->devinfo.oa_timestamp_mask = 0x7fffffff;
+
 		if (is_mtl_gt2(&perf->devinfo))
 			intel_perf_load_metrics_mtlgt2(perf);
 		else if (is_mtl_gt3(&perf->devinfo))
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 27/30] lib/perf: Add support for MPEC format
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (25 preceding siblings ...)
  2023-02-14 21:00 ` [igt-dev] [PATCH 26/30] lib/perf: Update MTL OA timestamp and EU thread config Umesh Nerlige Ramappa
@ 2023-02-14 21:00 ` Umesh Nerlige Ramappa
  2023-02-14 21:00 ` [igt-dev] [PATCH 28/30] lib/perf: Adjust the GPU timestamp for new OA formats Umesh Nerlige Ramappa
                   ` (6 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 21:00 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Add support in perf library for MPEC formats.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 lib/i915/perf.c             | 38 +++++++++++++++++++++++++++++++++++++
 lib/i915/perf_data_reader.c | 14 +++++++++-----
 2 files changed, 47 insertions(+), 5 deletions(-)

diff --git a/lib/i915/perf.c b/lib/i915/perf.c
index 24ef3819..d736490b 100644
--- a/lib/i915/perf.c
+++ b/lib/i915/perf.c
@@ -915,6 +915,34 @@ void intel_perf_accumulate_reports(struct intel_perf_accumulator *acc,
 		for (i = 0; i < 61; i++)
 			accumulate_uint32(start + 3 + i, end + 3 + i, deltas + 1 + i);
 		break;
+
+	case I915_OAM_FORMAT_MPEC8u32_B8_C8: {
+		const uint64_t *start64 = (const uint64_t *)(record0 + 1);
+		const uint64_t *end64 = (const uint64_t *)(record1 + 1);
+
+		/* 64 bit timestamp */
+		if (perf->devinfo.oa_timestamp_shift >= 0)
+			deltas[idx++] += (end64[1] - start64[1]) << perf->devinfo.oa_timestamp_shift;
+		else
+			deltas[idx++] += (end64[1] - start64[1]) >> (-perf->devinfo.oa_timestamp_shift);
+
+		/* 64 bit clock */
+		deltas[idx++] = end64[3] - start64[3];
+
+		/* 8x 32bit MPEC counters */
+		for (i = 0; i < 8; i++)
+			accumulate_uint32(start + 8 + i, end + 8 + i, deltas + idx++);
+
+		/* 8x 32bit B counters */
+		for (i = 0; i < 8; i++)
+			accumulate_uint32(start + 16 + i, end + 16 + i, deltas + idx++);
+
+		/* 8x 32bit C counters */
+		for (i = 0; i < 8; i++)
+			accumulate_uint32(start + 24 + i, end + 24 + i, deltas + idx++);
+
+		break;
+		}
 	default:
 		assert(0);
 	}
@@ -926,6 +954,7 @@ uint64_t intel_perf_read_record_timestamp(const struct intel_perf *perf,
 					  const struct drm_i915_perf_record_header *record)
 {
        const uint32_t *report32 = (const uint32_t *)(record + 1);
+       const uint64_t *report64 = (const uint64_t *)(record + 1);
        uint64_t ts;
 
        switch (metric_set->perf_oa_format) {
@@ -935,6 +964,10 @@ uint64_t intel_perf_read_record_timestamp(const struct intel_perf *perf,
                ts = report32[1];
                break;
 
+       case I915_OAM_FORMAT_MPEC8u32_B8_C8:
+               ts = report64[1];
+               break;
+
        default:
                assert(0);
        }
@@ -952,6 +985,7 @@ uint64_t intel_perf_read_record_timestamp_raw(const struct intel_perf *perf,
 					  const struct drm_i915_perf_record_header *record)
 {
        const uint32_t *report32 = (const uint32_t *)(record + 1);
+       const uint64_t *report64 = (const uint64_t *)(record + 1);
        uint64_t ts;
 
        switch (metric_set->perf_oa_format) {
@@ -961,6 +995,10 @@ uint64_t intel_perf_read_record_timestamp_raw(const struct intel_perf *perf,
                ts = report32[1];
                break;
 
+       case I915_OAM_FORMAT_MPEC8u32_B8_C8:
+               ts = report64[1];
+               break;
+
        default:
                assert(0);
        }
diff --git a/lib/i915/perf_data_reader.c b/lib/i915/perf_data_reader.c
index 10e78e63..332f530e 100644
--- a/lib/i915/perf_data_reader.c
+++ b/lib/i915/perf_data_reader.c
@@ -58,11 +58,15 @@ oa_report_ctx_is_valid(const struct intel_perf_devinfo *devinfo,
 }
 
 static uint32_t
-oa_report_ctx_id(const struct intel_perf_devinfo *devinfo, const uint8_t *report)
+oa_report_ctx_id(struct intel_perf_data_reader *reader, const uint8_t *report)
 {
-	if (!oa_report_ctx_is_valid(devinfo, report))
+	if (!oa_report_ctx_is_valid(&reader->devinfo, report))
 		return 0xffffffff;
-	return ((const uint32_t *) report)[2];
+
+	if (reader->metric_set->perf_oa_format == I915_OAM_FORMAT_MPEC8u32_B8_C8)
+		return ((const uint32_t *) report)[4];
+	else
+		return ((const uint32_t *) report)[2];
 }
 
 static void
@@ -289,8 +293,8 @@ generate_cpu_events(struct intel_perf_data_reader *reader)
 		start_report = (const uint8_t *) (last_header + 1);
 		end_report = (const uint8_t *) (current_header + 1);
 
-		last_ctx_id = oa_report_ctx_id(&reader->devinfo, start_report);
-		current_ctx_id = oa_report_ctx_id(&reader->devinfo, end_report);
+		last_ctx_id = oa_report_ctx_id(reader, start_report);
+		current_ctx_id = oa_report_ctx_id(reader, end_report);
 
 		gpu_ts_start = intel_perf_read_record_timestamp(reader->perf,
 								reader->metric_set,
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 28/30] lib/perf: Adjust the GPU timestamp for new OA formats
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (26 preceding siblings ...)
  2023-02-14 21:00 ` [igt-dev] [PATCH 27/30] lib/perf: Add support for MPEC format Umesh Nerlige Ramappa
@ 2023-02-14 21:00 ` Umesh Nerlige Ramappa
  2023-02-14 21:00 ` [igt-dev] [PATCH 29/30] tools/perf: Choose the right card Umesh Nerlige Ramappa
                   ` (5 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 21:00 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

In some OA formats, gpu_ts is a 64 bit value and the right shift can
result in bit[31] being set. This throws off the correlation and the
timelines. Apply the mask on gpu_ts as well.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 lib/i915/perf_data_reader.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/lib/i915/perf_data_reader.c b/lib/i915/perf_data_reader.c
index 332f530e..2272ae2c 100644
--- a/lib/i915/perf_data_reader.c
+++ b/lib/i915/perf_data_reader.c
@@ -216,6 +216,12 @@ correlate_gpu_timestamp(struct intel_perf_data_reader *reader,
 	uint64_t mask = reader->perf->devinfo.oa_timestamp_mask;
 	int corr_idx = -1;
 
+	/* On some OA formats, gpu_ts is a 64 bit value and the shift can
+	 * result in bit[31] being set. This throws off the correlation and the
+	 * timelines. Apply the mask on gpu_ts as well.
+	 */
+	gpu_ts = gpu_ts & mask;
+
 	for (uint32_t i = 0; i < reader->n_correlation_chunks; i++) {
 		if (gpu_ts >= (reader->correlation_chunks[i].gpu_ts_begin & mask) &&
 		    gpu_ts <= (reader->correlation_chunks[i].gpu_ts_end & mask)) {
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 29/30] tools/perf: Choose the right card
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (27 preceding siblings ...)
  2023-02-14 21:00 ` [igt-dev] [PATCH 28/30] lib/perf: Adjust the GPU timestamp for new OA formats Umesh Nerlige Ramappa
@ 2023-02-14 21:00 ` Umesh Nerlige Ramappa
  2023-02-14 21:00 ` [igt-dev] [PATCH 30/30] lib/perf: Apply shift to raw timestamp as well Umesh Nerlige Ramappa
                   ` (4 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 21:00 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Choose the right dri card to open for perf recorder.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 tools/i915-perf/i915_perf_recorder.c | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/tools/i915-perf/i915_perf_recorder.c b/tools/i915-perf/i915_perf_recorder.c
index ee8a288d..9337da12 100644
--- a/tools/i915-perf/i915_perf_recorder.c
+++ b/tools/i915-perf/i915_perf_recorder.c
@@ -241,10 +241,10 @@ read_device_param(const char *stem, int id, const char *param)
 }
 
 static int
-find_intel_render_node(void)
+find_intel_card_node(void)
 {
-	for (int i = 128; i < (128 + 16); i++) {
-		if (read_device_param("renderD", i, "vendor") == 0x8086)
+	for (int i = 0; i < 128; i++) {
+		if (read_device_param("card", i, "vendor") == 0x8086)
 			return i;
 	}
 
@@ -273,20 +273,18 @@ open_render_node(uint32_t *devid, int card)
 	char *name;
 	int ret;
 	int fd;
-	int render;
 
 	if (card < 0) {
-		render = find_intel_render_node();
-		if (render < 0)
+		card = find_intel_card_node();
+
+		if (card < 0)
 			return -1;
-	} else {
-		render = 128 + card;
 	}
 
-	ret = asprintf(&name, "/dev/dri/renderD%u", render);
+	ret = asprintf(&name, "/dev/dri/card%u", card);
 	assert(ret != -1);
 
-	*devid = read_device_param("renderD", render, "device");
+	*devid = read_device_param("card", card, "device");
 
 	fd = open(name, O_RDWR);
 	free(name);
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] [PATCH 30/30] lib/perf: Apply shift to raw timestamp as well
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (28 preceding siblings ...)
  2023-02-14 21:00 ` [igt-dev] [PATCH 29/30] tools/perf: Choose the right card Umesh Nerlige Ramappa
@ 2023-02-14 21:00 ` Umesh Nerlige Ramappa
  2023-02-14 21:18 ` [igt-dev] ✗ GitLab.Pipeline: warning for Enable OAM support in IGT and GPUvis Patchwork
                   ` (3 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-14 21:00 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Apply the OA timestamp shift to the raw timestamp as well.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 lib/i915/perf.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lib/i915/perf.c b/lib/i915/perf.c
index d736490b..ddadb53b 100644
--- a/lib/i915/perf.c
+++ b/lib/i915/perf.c
@@ -1003,6 +1003,11 @@ uint64_t intel_perf_read_record_timestamp_raw(const struct intel_perf *perf,
                assert(0);
        }
 
+       if (perf->devinfo.oa_timestamp_shift >= 0)
+	       ts <<= perf->devinfo.oa_timestamp_shift;
+       else
+	       ts >>= -perf->devinfo.oa_timestamp_shift;
+
        return ts;
 }
 
-- 
2.36.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [igt-dev] ✗ GitLab.Pipeline: warning for Enable OAM support in IGT and GPUvis
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (29 preceding siblings ...)
  2023-02-14 21:00 ` [igt-dev] [PATCH 30/30] lib/perf: Apply shift to raw timestamp as well Umesh Nerlige Ramappa
@ 2023-02-14 21:18 ` Patchwork
  2023-02-14 21:47 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
                   ` (2 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2023-02-14 21:18 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa; +Cc: igt-dev

== Series Details ==

Series: Enable OAM support in IGT and GPUvis
URL   : https://patchwork.freedesktop.org/series/114023/
State : warning

== Summary ==

Pipeline status: FAILED.

see https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/807889 for the overview.

build:tests-fedora-clang has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/36388704):
  ninja: build stopped: subcommand failed.
  ninja: Entering directory `build'
  [1/628] Generating version.h with a custom command.
  [2/333] Linking target lib/libi915_perf.so.1.5.
  [3/333] Generating symbol file 'lib/76b5a35@@i915_perf@sha/libi915_perf.so.1.5.symbols'.
  [4/333] Linking target tests/gem_exec_balancer.
  [5/333] Compiling C object 'tests/59830eb@@perf@exe/i915_perf.c.o'.
  FAILED: tests/59830eb@@perf@exe/i915_perf.c.o 
  clang -Itests/59830eb@@perf@exe -Itests -I../tests -I../include/drm-uapi -I../include/linux-uapi -Ilib -I../lib -I../lib/stubs/syscalls -I. -I../ -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libdrm -I/usr/include/libdrm/nouveau -I/usr/include/valgrind -Xclang -fcolor-diagnostics -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=gnu11 -O2 -g -D_GNU_SOURCE -include config.h -D_FORTIFY_SOURCE=2 -Wbad-function-cast -Wdeclaration-after-statement -Wformat=2 -Wmissing-declarations -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpointer-arith -Wredundant-decls -Wshadow -Wstrict-prototypes -Wuninitialized -Wunused -Wno-missing-field-initializers -Wno-pointer-arith -Wno-address-of-packed-member -Wno-sign-compare -Wno-type-limits -Wno-unused-parameter -Wno-unused-result -Werror=address -Werror=array-bounds -Werror=implicit -Werror=init-self -Werror=int-to-pointer-cast -Werror=main -Werror=missing-braces -Werror=nonnull -Werror=pointer-to-int-cast -Werror=return-type -Werror=sequence-point -Werror=trigraphs -Werror=write-strings -fno-builtin-malloc -fno-builtin-calloc -pthread -MD -MQ 'tests/59830eb@@perf@exe/i915_perf.c.o' -MF 'tests/59830eb@@perf@exe/i915_perf.c.o.d' -o 'tests/59830eb@@perf@exe/i915_perf.c.o' -c ../tests/i915/perf.c
  ../tests/i915/perf.c:1981:13: error: fields must have a constant size: 'variable length array in structure' extension will never be supported
                          uint32_t report[format_size / 4];
                                   ^
  1 error generated.
  ninja: build stopped: subcommand failed.
  section_end:1676409224:step_script
  section_start:1676409224:cleanup_file_variables
  Cleaning up project directory and file based variables
  section_end:1676409225:cleanup_file_variables
  ERROR: Job failed: exit code 1

== Logs ==

For more details see: https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/807889

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for Enable OAM support in IGT and GPUvis
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (30 preceding siblings ...)
  2023-02-14 21:18 ` [igt-dev] ✗ GitLab.Pipeline: warning for Enable OAM support in IGT and GPUvis Patchwork
@ 2023-02-14 21:47 ` Patchwork
  2023-02-15  0:48 ` [igt-dev] [PATCH 00/30] " Umesh Nerlige Ramappa
  2023-02-15  7:22 ` [igt-dev] ✗ Fi.CI.IGT: failure for " Patchwork
  33 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2023-02-14 21:47 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 9094 bytes --]

== Series Details ==

Series: Enable OAM support in IGT and GPUvis
URL   : https://patchwork.freedesktop.org/series/114023/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_12738 -> IGTPW_8497
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/index.html

Participating hosts (38 -> 31)
------------------------------

  Additional (2): fi-rkl-11600 fi-elk-e7500 
  Missing    (9): bat-kbl-2 fi-apl-guc fi-snb-2520m fi-glk-j4005 bat-atsm-1 fi-cfl-8109u fi-pnv-d510 bat-rpls-2 fi-bsw-nick 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_8497:

### IGT changes ###

#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@i915_suspend@basic-s2idle-without-i915:
    - {bat-rpls-1}:       [PASS][1] -> [ABORT][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/bat-rpls-1/igt@i915_suspend@basic-s2idle-without-i915.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/bat-rpls-1/igt@i915_suspend@basic-s2idle-without-i915.html

  
Known issues
------------

  Here are the changes found in IGTPW_8497 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@debugfs_test@basic-hwmon:
    - fi-rkl-11600:       NOTRUN -> [SKIP][3] ([i915#7456])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/fi-rkl-11600/igt@debugfs_test@basic-hwmon.html

  * igt@gem_huc_copy@huc-copy:
    - fi-rkl-11600:       NOTRUN -> [SKIP][4] ([i915#2190])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/fi-rkl-11600/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@parallel-random-engines:
    - fi-rkl-11600:       NOTRUN -> [SKIP][5] ([i915#4613]) +3 similar issues
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/fi-rkl-11600/igt@gem_lmem_swapping@parallel-random-engines.html

  * igt@gem_tiled_pread_basic:
    - fi-rkl-11600:       NOTRUN -> [SKIP][6] ([i915#3282])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/fi-rkl-11600/igt@gem_tiled_pread_basic.html

  * igt@i915_pm_backlight@basic-brightness:
    - fi-rkl-11600:       NOTRUN -> [SKIP][7] ([i915#7561])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/fi-rkl-11600/igt@i915_pm_backlight@basic-brightness.html

  * igt@i915_pm_rpm@basic-pci-d3-state:
    - fi-elk-e7500:       NOTRUN -> [SKIP][8] ([fdo#109271]) +30 similar issues
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/fi-elk-e7500/igt@i915_pm_rpm@basic-pci-d3-state.html

  * igt@i915_selftest@live@hangcheck:
    - fi-skl-guc:         [PASS][9] -> [DMESG-WARN][10] ([i915#8073])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/fi-skl-guc/igt@i915_selftest@live@hangcheck.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/fi-skl-guc/igt@i915_selftest@live@hangcheck.html

  * igt@kms_chamelium_hpd@dp-hpd-fast:
    - fi-rkl-11600:       NOTRUN -> [SKIP][11] ([i915#7828]) +8 similar issues
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/fi-rkl-11600/igt@kms_chamelium_hpd@dp-hpd-fast.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor:
    - fi-rkl-11600:       NOTRUN -> [SKIP][12] ([i915#4103])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/fi-rkl-11600/igt@kms_cursor_legacy@basic-busy-flip-before-cursor.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions-varying-size:
    - fi-blb-e6850:       NOTRUN -> [SKIP][13] ([fdo#109271]) +9 similar issues
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/fi-blb-e6850/igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions-varying-size.html

  * igt@kms_force_connector_basic@force-load-detect:
    - fi-rkl-11600:       NOTRUN -> [SKIP][14] ([fdo#109285] / [i915#4098])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/fi-rkl-11600/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_psr@sprite_plane_onoff:
    - fi-rkl-11600:       NOTRUN -> [SKIP][15] ([i915#1072]) +3 similar issues
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/fi-rkl-11600/igt@kms_psr@sprite_plane_onoff.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - fi-rkl-11600:       NOTRUN -> [SKIP][16] ([i915#3555] / [i915#4098])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/fi-rkl-11600/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-read:
    - fi-rkl-11600:       NOTRUN -> [SKIP][17] ([fdo#109295] / [i915#3291] / [i915#3708]) +2 similar issues
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/fi-rkl-11600/igt@prime_vgem@basic-read.html

  * igt@prime_vgem@basic-userptr:
    - fi-rkl-11600:       NOTRUN -> [SKIP][18] ([fdo#109295] / [i915#3301] / [i915#3708])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/fi-rkl-11600/igt@prime_vgem@basic-userptr.html

  
#### Possible fixes ####

  * igt@fbdev@write:
    - fi-blb-e6850:       [SKIP][19] ([fdo#109271]) -> [PASS][20] +5 similar issues
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/fi-blb-e6850/igt@fbdev@write.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/fi-blb-e6850/igt@fbdev@write.html
    - {bat-rpls-1}:       [SKIP][21] ([i915#2582]) -> [PASS][22] +4 similar issues
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/bat-rpls-1/igt@fbdev@write.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/bat-rpls-1/igt@fbdev@write.html

  * igt@gem_exec_suspend@basic-s3@lmem0:
    - {bat-dg1-7}:        [FAIL][23] ([fdo#103375]) -> [PASS][24]
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/bat-dg1-7/igt@gem_exec_suspend@basic-s3@lmem0.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/bat-dg1-7/igt@gem_exec_suspend@basic-s3@lmem0.html

  * igt@kms_frontbuffer_tracking@basic:
    - {bat-rpls-1}:       [SKIP][25] ([i915#1849]) -> [PASS][26]
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/bat-rpls-1/igt@kms_frontbuffer_tracking@basic.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/bat-rpls-1/igt@kms_frontbuffer_tracking@basic.html

  * igt@prime_vgem@basic-fence-flip:
    - {bat-rpls-1}:       [SKIP][27] ([fdo#109295] / [i915#1845] / [i915#3708]) -> [PASS][28]
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/bat-rpls-1/igt@prime_vgem@basic-fence-flip.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/bat-rpls-1/igt@prime_vgem@basic-fence-flip.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#6367]: https://gitlab.freedesktop.org/drm/intel/issues/6367
  [i915#7456]: https://gitlab.freedesktop.org/drm/intel/issues/7456
  [i915#7561]: https://gitlab.freedesktop.org/drm/intel/issues/7561
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#7996]: https://gitlab.freedesktop.org/drm/intel/issues/7996
  [i915#8073]: https://gitlab.freedesktop.org/drm/intel/issues/8073


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_7160 -> IGTPW_8497

  CI-20190529: 20190529
  CI_DRM_12738: aad037693df25f8c83ba6cef9facc8e47c7937c3 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8497: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/index.html
  IGT_7160: 45da871dd2684227e93a2fc002b87dfc58bd5fd9 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git


Testlist changes
----------------

+igt@perf@gen12-gt-concurrent-oa-buffer-read
+igt@perf@gen12-gt-exclusive-stream-ctx-handle
+igt@perf@gen12-gt-exclusive-stream-sample-oa
+igt@perf@gen12-invalid-class-instance

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/index.html

[-- Attachment #2: Type: text/html, Size: 10557 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (31 preceding siblings ...)
  2023-02-14 21:47 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
@ 2023-02-15  0:48 ` Umesh Nerlige Ramappa
  2023-02-15  7:22 ` [igt-dev] ✗ Fi.CI.IGT: failure for " Patchwork
  33 siblings, 0 replies; 35+ messages in thread
From: Umesh Nerlige Ramappa @ 2023-02-15  0:48 UTC (permalink / raw)
  To: igt-dev; +Cc: Lionel G Landwerlin

Please ignore, fails to build, so posted rev2 of this series.

On Tue, Feb 14, 2023 at 12:59:37PM -0800, Umesh Nerlige Ramappa wrote:
>Add support for OAM in IGT and enable support for GPUvis to capture
>OA reports on the media GT using OAM unit.
>
>OAM test support
>----------------
>  i915/perf: Add support for 64-bit OA formats
>  i915/perf: Define a default engine for OA
>  i915/perf: Use default engine for sseu tests
>  i915/perf: Ensure rcs0 is present for gen12-mi-rpc
>  i915/perf: Use ARRAY_SIZE for buffer-fill test
>  i915/perf: Add class:instance support to OA tests
>  i915/perf: Enable tests to run on specific engines
>  i915/perf: Treat ticks as 64 bit
>  i915/perf: Treat timestamp as 64 bit value
>  i915/perf: Add OAM format type
>  i915/perf: Use a helper for OA format
>  i915/perf: Add support for oa perf groups
>  i915/perf: Test concurrent access to OA in different groups
>  i915/perf: Add OAM support
>
>OAM metrics support
>-------------------
>  lib/perf: Make chipsets aware of oa formats
>  i915/perf: Choose OAM format for media metrics
>  lib/perf" Set missing metric unit for some counters
>  lib/perf: Add MTL to supprted HW in oa guid registry
>  lib/perf: Add support for OAM format in codegen
>  lib/perf: Update MTL GT2 metrics for OAM
>  lib/perf: Update MTL GT3 metrics for OAM
>  i915/perf: Add support for engine specific metrics
>  i915/perf: Run non-zero-reason on media engines as well
>  i915/perf: Make sanity check failures descriptive
>
>GPUvis support
>--------------
>  lib/perf: Enable multi-tile support for perf library
>  lib/perf: Update MTL OA timestamp and EU thread config
>  lib/perf: Add support for MPEC format
>  lib/perf: Adjust the GPU timestamp for new OA formats
>  tools/perf: Choose the right card
>  lib/perf: Apply shift to raw timestamp as well
>
>Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
>
>Umesh Nerlige Ramappa (30):
>  i915/perf: Add support for 64-bit OA formats
>  i915/perf: Define a default engine for OA
>  i915/perf: Use default engine for sseu tests
>  i915/perf: Ensure rcs0 is present for gen12-mi-rpc
>  i915/perf: Use ARRAY_SIZE for buffer-fill test
>  i915/perf: Add class:instance support to OA tests
>  i915/perf: Enable tests to run on specific engines
>  i915/perf: Treat ticks as 64 bit
>  i915/perf: Treat timestamp as 64 bit value
>  i915/perf: Add OAM format type
>  i915/perf: Use a helper for OA format
>  i915/perf: Add support for oa perf groups
>  i915/perf: Test concurrent access to OA in different groups
>  i915/perf: Add OAM support
>  lib/perf: Make chipsets aware of oa formats
>  i915/perf: Choose OAM format for media metrics
>  lib/perf" Set missing metric unit for some counters
>  lib/perf: Add MTL to supprted HW in oa guid registry
>  lib/perf: Add support for OAM format in codegen
>  lib/perf: Update MTL GT2 metrics for OAM
>  lib/perf: Update MTL GT3 metrics for OAM
>  i915/perf: Add support for engine specific metrics
>  i915/perf: Run non-zero-reason on media engines as well
>  i915/perf: Make sanity check failures descriptive
>  lib/perf: Enable multi-tile support for perf library
>  lib/perf: Update MTL OA timestamp and EU thread config
>  lib/perf: Add support for MPEC format
>  lib/perf: Adjust the GPU timestamp for new OA formats
>  tools/perf: Choose the right card
>  lib/perf: Apply shift to raw timestamp as well
>
> include/drm-uapi/i915_drm.h                   |   24 +
> lib/i915/perf-configs/codegen.py              |    4 +
> lib/i915/perf-configs/guids.xml               |   36 +-
> lib/i915/perf-configs/mdapi-xml-convert.py    |  220 ++-
> lib/i915/perf-configs/oa-mtlgt2.xml           | 1014 +++++++++++--
> lib/i915/perf-configs/oa-mtlgt3.xml           | 1328 +++++++++++++---
> lib/i915/perf-configs/oa_guid_registry.py     |    3 +-
> .../perf-configs/perf-metricset-codegen.py    |   36 +-
> lib/i915/perf.c                               |   66 +-
> lib/i915/perf.h                               |    2 +-
> lib/i915/perf_data_reader.c                   |   20 +-
> lib/intel_chipset.h                           |    3 +
> lib/intel_device_info.c                       |    1 +
> tests/core_hotunplug.c                        |    2 +-
> tests/i915/perf.c                             | 1337 +++++++++++++----
> tools/i915-perf/i915_perf_configs.c           |    2 +-
> tools/i915-perf/i915_perf_recorder.c          |   90 +-
> 17 files changed, 3476 insertions(+), 712 deletions(-)
>
>-- 
>2.36.1
>

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [igt-dev] ✗ Fi.CI.IGT: failure for Enable OAM support in IGT and GPUvis
  2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
                   ` (32 preceding siblings ...)
  2023-02-15  0:48 ` [igt-dev] [PATCH 00/30] " Umesh Nerlige Ramappa
@ 2023-02-15  7:22 ` Patchwork
  33 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2023-02-15  7:22 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 30317 bytes --]

== Series Details ==

Series: Enable OAM support in IGT and GPUvis
URL   : https://patchwork.freedesktop.org/series/114023/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_12738_full -> IGTPW_8497_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_8497_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_8497_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/index.html

Participating hosts (9 -> 10)
------------------------------

  Additional (1): shard-rkl0 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_8497_full:

### IGT changes ###

#### Possible regressions ####

  * igt@gem_userptr_blits@huge-split:
    - shard-apl:          [PASS][1] -> [FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-apl3/igt@gem_userptr_blits@huge-split.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-apl3/igt@gem_userptr_blits@huge-split.html

  * {igt@perf@gen12-gt-concurrent-oa-buffer-read} (NEW):
    - {shard-rkl}:        NOTRUN -> [SKIP][3] +4 similar issues
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-4/igt@perf@gen12-gt-concurrent-oa-buffer-read.html
    - {shard-dg1}:        NOTRUN -> [SKIP][4] +3 similar issues
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-dg1-14/igt@perf@gen12-gt-concurrent-oa-buffer-read.html

  * {igt@perf@gen12-invalid-class-instance} (NEW):
    - {shard-tglu}:       NOTRUN -> [SKIP][5]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-tglu-8/igt@perf@gen12-invalid-class-instance.html

  * {igt@perf@global-sseu-config-invalid@0-rcs0} (NEW):
    - {shard-tglu-10}:    NOTRUN -> [SKIP][6]
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-tglu-10/igt@perf@global-sseu-config-invalid@0-rcs0.html

  * {igt@perf@non-zero-reason@0-rcs0} (NEW):
    - shard-glk:          NOTRUN -> [FAIL][7]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-glk4/igt@perf@non-zero-reason@0-rcs0.html
    - {shard-rkl}:        NOTRUN -> [FAIL][8]
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-5/igt@perf@non-zero-reason@0-rcs0.html
    - shard-apl:          NOTRUN -> [FAIL][9]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-apl7/igt@perf@non-zero-reason@0-rcs0.html

  
New tests
---------

  New tests have been introduced between CI_DRM_12738_full and IGTPW_8497_full:

### New IGT tests (18) ###

  * igt@kms_cursor_edge_walk@256x256-left-edge@pipe-b-edp-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  * igt@perf@blocking@0-rcs0:
    - Statuses : 4 pass(s)
    - Exec time: [0.0] s

  * igt@perf@buffer-fill@0-rcs0:
    - Statuses : 4 pass(s)
    - Exec time: [0.0] s

  * igt@perf@enable-disable@0-rcs0:
    - Statuses : 3 pass(s)
    - Exec time: [0.0] s

  * igt@perf@gen12-gt-concurrent-oa-buffer-read:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@perf@gen12-gt-exclusive-stream-ctx-handle:
    - Statuses : 4 skip(s)
    - Exec time: [0.0] s

  * igt@perf@gen12-gt-exclusive-stream-sample-oa:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@perf@gen12-invalid-class-instance:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@perf@gen12-mi-rpc@rcs0:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  * igt@perf@gen12-oa-tlb-invalidate@0-rcs0:
    - Statuses : 3 pass(s)
    - Exec time: [0.0] s

  * igt@perf@gen12-unprivileged-single-ctx-counters@rcs0:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  * igt@perf@global-sseu-config-invalid@0-rcs0:
    - Statuses : 4 skip(s)
    - Exec time: [0.0] s

  * igt@perf@global-sseu-config@0-rcs0:
    - Statuses : 4 skip(s)
    - Exec time: [0.0] s

  * igt@perf@non-zero-reason@0-rcs0:
    - Statuses : 3 fail(s)
    - Exec time: [0.0] s

  * igt@perf@oa-exponents@0-rcs0:
    - Statuses : 4 pass(s)
    - Exec time: [0.0] s

  * igt@perf@oa-formats@0-rcs0:
    - Statuses : 4 pass(s)
    - Exec time: [0.0] s

  * igt@perf@polling@0-rcs0:
    - Statuses : 4 pass(s)
    - Exec time: [0.0] s

  * igt@perf@stress-open-close@0-rcs0:
    - Statuses : 4 pass(s)
    - Exec time: [0.0] s

  

Known issues
------------

  Here are the changes found in IGTPW_8497_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_fair@basic-pace@rcs0:
    - shard-glk:          [PASS][10] -> [FAIL][11] ([i915#2842]) +2 similar issues
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-glk3/igt@gem_exec_fair@basic-pace@rcs0.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-glk8/igt@gem_exec_fair@basic-pace@rcs0.html

  * igt@gem_exec_schedule@wide@rcs0:
    - shard-glk:          [PASS][12] -> [FAIL][13] ([i915#6659])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-glk9/igt@gem_exec_schedule@wide@rcs0.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-glk8/igt@gem_exec_schedule@wide@rcs0.html

  * igt@kms_color@ctm-max@pipe-a-hdmi-a-1:
    - shard-snb:          NOTRUN -> [SKIP][14] ([fdo#109271]) +25 similar issues
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-snb1/igt@kms_color@ctm-max@pipe-a-hdmi-a-1.html

  * igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size:
    - shard-apl:          [PASS][15] -> [FAIL][16] ([i915#2346])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-apl2/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-apl4/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-gtt:
    - shard-glk:          NOTRUN -> [SKIP][17] ([fdo#109271]) +10 similar issues
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-glk5/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-gtt.html

  * {igt@perf@gen12-invalid-class-instance} (NEW):
    - shard-apl:          NOTRUN -> [SKIP][18] ([fdo#109271]) +9 similar issues
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-apl4/igt@perf@gen12-invalid-class-instance.html

  
#### Possible fixes ####

  * igt@fbdev@eof:
    - {shard-rkl}:        [SKIP][19] ([i915#2582]) -> [PASS][20] +1 similar issue
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-rkl-5/igt@fbdev@eof.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-3/igt@fbdev@eof.html

  * igt@gem_eio@reset-stress:
    - {shard-dg1}:        [FAIL][21] ([i915#5784]) -> [PASS][22]
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-dg1-16/igt@gem_eio@reset-stress.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-dg1-14/igt@gem_eio@reset-stress.html

  * igt@gem_exec_fair@basic-deadline:
    - {shard-rkl}:        [FAIL][23] ([i915#2846]) -> [PASS][24]
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-rkl-3/igt@gem_exec_fair@basic-deadline.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-3/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - {shard-rkl}:        [FAIL][25] ([i915#2842]) -> [PASS][26]
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-rkl-1/igt@gem_exec_fair@basic-none-share@rcs0.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-5/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-glk:          [FAIL][27] ([i915#2842]) -> [PASS][28] +2 similar issues
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-glk4/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-glk4/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_fair@basic-pace-solo@rcs0:
    - shard-apl:          [FAIL][29] ([i915#2842]) -> [PASS][30] +1 similar issue
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-apl7/igt@gem_exec_fair@basic-pace-solo@rcs0.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-apl7/igt@gem_exec_fair@basic-pace-solo@rcs0.html

  * igt@gem_exec_reloc@basic-wc-read-noreloc:
    - {shard-rkl}:        [SKIP][31] ([i915#3281]) -> [PASS][32] +8 similar issues
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-rkl-1/igt@gem_exec_reloc@basic-wc-read-noreloc.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-5/igt@gem_exec_reloc@basic-wc-read-noreloc.html

  * igt@gem_exec_suspend@basic-s3@smem:
    - {shard-tglu-10}:    [ABORT][33] ([i915#5122]) -> [PASS][34]
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-tglu-10/igt@gem_exec_suspend@basic-s3@smem.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-tglu-10/igt@gem_exec_suspend@basic-s3@smem.html

  * igt@gem_userptr_blits@forbidden-operations:
    - {shard-rkl}:        [SKIP][35] ([i915#3282]) -> [PASS][36] +5 similar issues
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-rkl-1/igt@gem_userptr_blits@forbidden-operations.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-5/igt@gem_userptr_blits@forbidden-operations.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-apl:          [ABORT][37] ([i915#5566]) -> [PASS][38]
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-apl3/igt@gen9_exec_parse@allowed-single.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-apl6/igt@gen9_exec_parse@allowed-single.html

  * igt@gen9_exec_parse@cmd-crossing-page:
    - {shard-rkl}:        [SKIP][39] ([i915#2527]) -> [PASS][40] +2 similar issues
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-rkl-2/igt@gen9_exec_parse@cmd-crossing-page.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-5/igt@gen9_exec_parse@cmd-crossing-page.html

  * igt@i915_hangman@gt-engine-error@bcs0:
    - {shard-rkl}:        [SKIP][41] ([i915#6258]) -> [PASS][42]
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-rkl-5/igt@i915_hangman@gt-engine-error@bcs0.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-3/igt@i915_hangman@gt-engine-error@bcs0.html

  * igt@i915_pm_dc@dc9-dpms:
    - shard-apl:          [SKIP][43] ([fdo#109271]) -> [PASS][44]
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-apl1/igt@i915_pm_dc@dc9-dpms.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-apl7/igt@i915_pm_dc@dc9-dpms.html

  * igt@i915_pm_rpm@dpms-mode-unset-lpsp:
    - {shard-rkl}:        [SKIP][45] ([i915#1397]) -> [PASS][46] +1 similar issue
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-rkl-1/igt@i915_pm_rpm@dpms-mode-unset-lpsp.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-6/igt@i915_pm_rpm@dpms-mode-unset-lpsp.html

  * igt@i915_pm_rps@engine-order:
    - shard-apl:          [FAIL][47] ([i915#6537]) -> [PASS][48]
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-apl6/igt@i915_pm_rps@engine-order.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-apl1/igt@i915_pm_rps@engine-order.html

  * igt@kms_atomic@atomic_plane_damage:
    - {shard-rkl}:        [SKIP][49] ([i915#4098]) -> [PASS][50] +1 similar issue
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-rkl-1/igt@kms_atomic@atomic_plane_damage.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-6/igt@kms_atomic@atomic_plane_damage.html

  * igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_rc_ccs:
    - {shard-rkl}:        [SKIP][51] ([i915#1845] / [i915#4098]) -> [PASS][52] +27 similar issues
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-rkl-2/igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_rc_ccs.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-6/igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_rc_ccs.html

  * igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions:
    - shard-apl:          [FAIL][53] ([i915#2346]) -> [PASS][54]
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-apl2/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-apl4/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions.html
    - shard-glk:          [FAIL][55] ([i915#2346]) -> [PASS][56]
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-glk4/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-glk6/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions.html

  * igt@kms_fbcon_fbt@psr-suspend:
    - {shard-rkl}:        [SKIP][57] ([i915#3955]) -> [PASS][58]
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-rkl-4/igt@kms_fbcon_fbt@psr-suspend.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-6/igt@kms_fbcon_fbt@psr-suspend.html

  * igt@kms_flip@flip-vs-expired-vblank@c-hdmi-a1:
    - shard-glk:          [FAIL][59] ([i915#79]) -> [PASS][60]
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-glk6/igt@kms_flip@flip-vs-expired-vblank@c-hdmi-a1.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-glk1/igt@kms_flip@flip-vs-expired-vblank@c-hdmi-a1.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-wc:
    - {shard-tglu}:       [SKIP][61] ([i915#1849]) -> [PASS][62]
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-tglu-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-wc.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-tglu-2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-render:
    - {shard-rkl}:        [SKIP][63] ([i915#1849] / [i915#4098]) -> [PASS][64] +24 similar issues
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-rkl-2/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-render.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-render.html

  * igt@kms_plane@pixel-format@pipe-b-planes:
    - {shard-rkl}:        [SKIP][65] ([i915#1849]) -> [PASS][66] +3 similar issues
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-rkl-5/igt@kms_plane@pixel-format@pipe-b-planes.html
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-6/igt@kms_plane@pixel-format@pipe-b-planes.html

  * igt@kms_psr@sprite_plane_onoff:
    - {shard-rkl}:        [SKIP][67] ([i915#1072]) -> [PASS][68] +2 similar issues
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-rkl-5/igt@kms_psr@sprite_plane_onoff.html
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-6/igt@kms_psr@sprite_plane_onoff.html

  * igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
    - {shard-rkl}:        [SKIP][69] ([i915#5461]) -> [PASS][70]
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-rkl-1/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-6/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html

  * igt@kms_universal_plane@disable-primary-vs-flip-pipe-a:
    - {shard-rkl}:        [SKIP][71] ([i915#1845] / [i915#4070] / [i915#4098]) -> [PASS][72]
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-rkl-2/igt@kms_universal_plane@disable-primary-vs-flip-pipe-a.html
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-6/igt@kms_universal_plane@disable-primary-vs-flip-pipe-a.html

  * igt@perf@polling-small-buf:
    - {shard-tglu}:       [FAIL][73] ([i915#1722]) -> [PASS][74]
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-tglu-6/igt@perf@polling-small-buf.html
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-tglu-8/igt@perf@polling-small-buf.html
    - {shard-rkl}:        [FAIL][75] ([i915#1722]) -> [PASS][76]
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-rkl-1/igt@perf@polling-small-buf.html
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-6/igt@perf@polling-small-buf.html

  * igt@prime_vgem@basic-fence-read:
    - {shard-rkl}:        [SKIP][77] ([fdo#109295] / [i915#3291] / [i915#3708]) -> [PASS][78]
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-rkl-1/igt@prime_vgem@basic-fence-read.html
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-rkl-5/igt@prime_vgem@basic-fence-read.html

  * igt@sysfs_timeslice_duration@timeout@vcs1:
    - {shard-dg1}:        [FAIL][79] ([i915#1755]) -> [PASS][80] +2 similar issues
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-dg1-18/igt@sysfs_timeslice_duration@timeout@vcs1.html
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-dg1-16/igt@sysfs_timeslice_duration@timeout@vcs1.html

  * igt@testdisplay:
    - {shard-tglu}:       [SKIP][81] ([i915#1845] / [i915#7651]) -> [PASS][82] +4 similar issues
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12738/shard-tglu-6/igt@testdisplay.html
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/shard-tglu-8/igt@testdisplay.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
  [fdo#109279]: https://bugs.freedesktop.org/show_bug.cgi?id=109279
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#109300]: https://bugs.freedesktop.org/show_bug.cgi?id=109300
  [fdo#109302]: https://bugs.freedesktop.org/show_bug.cgi?id=109302
  [fdo#109303]: https://bugs.freedesktop.org/show_bug.cgi?id=109303
  [fdo#109307]: https://bugs.freedesktop.org/show_bug.cgi?id=109307
  [fdo#109308]: https://bugs.freedesktop.org/show_bug.cgi?id=109308
  [fdo#109309]: https://bugs.freedesktop.org/show_bug.cgi?id=109309
  [fdo#109312]: https://bugs.freedesktop.org/show_bug.cgi?id=109312
  [fdo#109313]: https://bugs.freedesktop.org/show_bug.cgi?id=109313
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506
  [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [fdo#110542]: https://bugs.freedesktop.org/show_bug.cgi?id=110542
  [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111644]: https://bugs.freedesktop.org/show_bug.cgi?id=111644
  [fdo#111656]: https://bugs.freedesktop.org/show_bug.cgi?id=111656
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [fdo#112054]: https://bugs.freedesktop.org/show_bug.cgi?id=112054
  [fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1257]: https://gitlab.freedesktop.org/drm/intel/issues/1257
  [i915#132]: https://gitlab.freedesktop.org/drm/intel/issues/132
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [i915#1722]: https://gitlab.freedesktop.org/drm/intel/issues/1722
  [i915#1755]: https://gitlab.freedesktop.org/drm/intel/issues/1755
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839
  [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
  [i915#1902]: https://gitlab.freedesktop.org/drm/intel/issues/1902
  [i915#2232]: https://gitlab.freedesktop.org/drm/intel/issues/2232
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2433]: https://gitlab.freedesktop.org/drm/intel/issues/2433
  [i915#2434]: https://gitlab.freedesktop.org/drm/intel/issues/2434
  [i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
  [i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
  [i915#2587]: https://gitlab.freedesktop.org/drm/intel/issues/2587
  [i915#2658]: https://gitlab.freedesktop.org/drm/intel/issues/2658
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681
  [i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705
  [i915#280]: https://gitlab.freedesktop.org/drm/intel/issues/280
  [i915#284]: https://gitlab.freedesktop.org/drm/intel/issues/284
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2846]: https://gitlab.freedesktop.org/drm/intel/issues/2846
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [i915#2920]: https://gitlab.freedesktop.org/drm/intel/issues/2920
  [i915#3116]: https://gitlab.freedesktop.org/drm/intel/issues/3116
  [i915#315]: https://gitlab.freedesktop.org/drm/intel/issues/315
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
  [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
  [i915#3318]: https://gitlab.freedesktop.org/drm/intel/issues/3318
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3361]: https://gitlab.freedesktop.org/drm/intel/issues/3361
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3469]: https://gitlab.freedesktop.org/drm/intel/issues/3469
  [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
  [i915#3639]: https://gitlab.freedesktop.org/drm/intel/issues/3639
  [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734
  [i915#3742]: https://gitlab.freedesktop.org/drm/intel/issues/3742
  [i915#3804]: https://gitlab.freedesktop.org/drm/intel/issues/3804
  [i915#3826]: https://gitlab.freedesktop.org/drm/intel/issues/3826
  [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
  [i915#4036]: https://gitlab.freedesktop.org/drm/intel/issues/4036
  [i915#404]: https://gitlab.freedesktop.org/drm/intel/issues/404
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#426]: https://gitlab.freedesktop.org/drm/intel/issues/426
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4281]: https://gitlab.freedesktop.org/drm/intel/issues/4281
  [i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349
  [i915#4387]: https://gitlab.freedesktop.org/drm/intel/issues/4387
  [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#4565]: https://gitlab.freedesktop.org/drm/intel/issues/4565
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4771]: https://gitlab.freedesktop.org/drm/intel/issues/4771
  [i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812
  [i915#4818]: https://gitlab.freedesktop.org/drm/intel/issues/4818
  [i915#4833]: https://gitlab.freedesktop.org/drm/intel/issues/4833
  [i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852
  [i915#4860]: https://gitlab.freedesktop.org/drm/intel/issues/4860
  [i915#4873]: https://gitlab.freedesktop.org/drm/intel/issues/4873
  [i915#4879]: https://gitlab.freedesktop.org/drm/intel/issues/4879
  [i915#4880]: https://gitlab.freedesktop.org/drm/intel/issues/4880
  [i915#5115]: https://gitlab.freedesktop.org/drm/intel/issues/5115
  [i915#5122]: https://gitlab.freedesktop.org/drm/intel/issues/5122
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5288]: https://gitlab.freedesktop.org/drm/intel/issues/5288
  [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
  [i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5439]: https://gitlab.freedesktop.org/drm/intel/issues/5439
  [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461
  [i915#5563]: https://gitlab.freedesktop.org/drm/intel/issues/5563
  [i915#5566]: https://gitlab.freedesktop.org/drm/intel/issues/5566
  [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6245]: https://gitlab.freedesktop.org/drm/intel/issues/6245
  [i915#6247]: https://gitlab.freedesktop.org/drm/intel/issues/6247
  [i915#6248]: https://gitlab.freedesktop.org/drm/intel/issues/6248
  [i915#6252]: https://gitlab.freedesktop.org/drm/intel/issues/6252
  [i915#6258]: https://gitlab.freedesktop.org/drm/intel/issues/6258
  [i915#6268]: https://gitlab.freedesktop.org/drm/intel/issues/6268
  [i915#6301]: https://gitlab.freedesktop.org/drm/intel/issues/6301
  [i915#6334]: https://gitlab.freedesktop.org/drm/intel/issues/6334
  [i915#6335]: https://gitlab.freedesktop.org/drm/intel/issues/6335
  [i915#6344]: https://gitlab.freedesktop.org/drm/intel/issues/6344
  [i915#6412]: https://gitlab.freedesktop.org/drm/intel/issues/6412
  [i915#6433]: https://gitlab.freedesktop.org/drm/intel/issues/6433
  [i915#6497]: https://gitlab.freedesktop.org/drm/intel/issues/6497
  [i915#6524]: https://gitlab.freedesktop.org/drm/intel/issues/6524
  [i915#6537]: https://gitlab.freedesktop.org/drm/intel/issues/6537
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#6659]: https://gitlab.freedesktop.org/drm/intel/issues/6659
  [i915#6768]: https://gitlab.freedesktop.org/drm/intel/issues/6768
  [i915#6944]: https://gitlab.freedesktop.org/drm/intel/issues/6944
  [i915#6946]: https://gitlab.freedesktop.org/drm/intel/issues/6946
  [i915#7037]: https://gitlab.freedesktop.org/drm/intel/issues/7037
  [i915#7052]: https://gitlab.freedesktop.org/drm/intel/issues/7052
  [i915#7116]: https://gitlab.freedesktop.org/drm/intel/issues/7116
  [i915#7118]: https://gitlab.freedesktop.org/drm/intel/issues/7118
  [i915#7178]: https://gitlab.freedesktop.org/drm/intel/issues/7178
  [i915#7561]: https://gitlab.freedesktop.org/drm/intel/issues/7561
  [i915#7582]: https://gitlab.freedesktop.org/drm/intel/issues/7582
  [i915#7651]: https://gitlab.freedesktop.org/drm/intel/issues/7651
  [i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697
  [i915#7701]: https://gitlab.freedesktop.org/drm/intel/issues/7701
  [i915#7707]: https://gitlab.freedesktop.org/drm/intel/issues/7707
  [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
  [i915#7742]: https://gitlab.freedesktop.org/drm/intel/issues/7742
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
  [i915#7949]: https://gitlab.freedesktop.org/drm/intel/issues/7949
  [i915#7957]: https://gitlab.freedesktop.org/drm/intel/issues/7957
  [i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975
  [i915#8150]: https://gitlab.freedesktop.org/drm/intel/issues/8150
  [i915#8151]: https://gitlab.freedesktop.org/drm/intel/issues/8151
  [i915#8152]: https://gitlab.freedesktop.org/drm/intel/issues/8152


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_7160 -> IGTPW_8497

  CI-20190529: 20190529
  CI_DRM_12738: aad037693df25f8c83ba6cef9facc8e47c7937c3 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8497: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/index.html
  IGT_7160: 45da871dd2684227e93a2fc002b87dfc58bd5fd9 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8497/index.html

[-- Attachment #2: Type: text/html, Size: 23917 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread

end of thread, other threads:[~2023-02-15  7:22 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-14 20:59 [igt-dev] [PATCH 00/30] Enable OAM support in IGT and GPUvis Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 01/30] i915/perf: Add support for 64-bit OA formats Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 02/30] i915/perf: Define a default engine for OA Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 03/30] i915/perf: Use default engine for sseu tests Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 04/30] i915/perf: Ensure rcs0 is present for gen12-mi-rpc Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 05/30] i915/perf: Use ARRAY_SIZE for buffer-fill test Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 06/30] i915/perf: Add class:instance support to OA tests Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 07/30] i915/perf: Enable tests to run on specific engines Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 08/30] i915/perf: Treat ticks as 64 bit Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 09/30] i915/perf: Treat timestamp as 64 bit value Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 10/30] i915/perf: Add OAM format type Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 11/30] i915/perf: Use a helper for OA format Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 12/30] i915/perf: Add support for oa perf groups Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 13/30] i915/perf: Test concurrent access to OA in different groups Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 14/30] i915/perf: Add OAM support Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 15/30] lib/perf: Make chipsets aware of oa formats Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 16/30] i915/perf: Choose OAM format for media metrics Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 17/30] lib/perf" Set missing metric unit for some counters Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 18/30] lib/perf: Add MTL to supprted HW in oa guid registry Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 19/30] lib/perf: Add support for OAM format in codegen Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 20/30] lib/perf: Update MTL GT2 metrics for OAM Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 21/30] lib/perf: Update MTL GT3 " Umesh Nerlige Ramappa
2023-02-14 20:59 ` [igt-dev] [PATCH 22/30] i915/perf: Add support for engine specific metrics Umesh Nerlige Ramappa
2023-02-14 21:00 ` [igt-dev] [PATCH 23/30] i915/perf: Run non-zero-reason on media engines as well Umesh Nerlige Ramappa
2023-02-14 21:00 ` [igt-dev] [PATCH 24/30] i915/perf: Make sanity check failures descriptive Umesh Nerlige Ramappa
2023-02-14 21:00 ` [igt-dev] [PATCH 25/30] lib/perf: Enable multi-tile support for perf library Umesh Nerlige Ramappa
2023-02-14 21:00 ` [igt-dev] [PATCH 26/30] lib/perf: Update MTL OA timestamp and EU thread config Umesh Nerlige Ramappa
2023-02-14 21:00 ` [igt-dev] [PATCH 27/30] lib/perf: Add support for MPEC format Umesh Nerlige Ramappa
2023-02-14 21:00 ` [igt-dev] [PATCH 28/30] lib/perf: Adjust the GPU timestamp for new OA formats Umesh Nerlige Ramappa
2023-02-14 21:00 ` [igt-dev] [PATCH 29/30] tools/perf: Choose the right card Umesh Nerlige Ramappa
2023-02-14 21:00 ` [igt-dev] [PATCH 30/30] lib/perf: Apply shift to raw timestamp as well Umesh Nerlige Ramappa
2023-02-14 21:18 ` [igt-dev] ✗ GitLab.Pipeline: warning for Enable OAM support in IGT and GPUvis Patchwork
2023-02-14 21:47 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
2023-02-15  0:48 ` [igt-dev] [PATCH 00/30] " Umesh Nerlige Ramappa
2023-02-15  7:22 ` [igt-dev] ✗ Fi.CI.IGT: failure for " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.