Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH i-g-t v3 00/27] Intel Xe OA IGT's
@ 2024-06-07 20:08 Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 01/27] lib/xe/oa: Import OA metric generation files from i915 Ashutosh Dixit
                   ` (31 more replies)
  0 siblings, 32 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

This series adds OA IGT's for Intel Xe KMD. These tests are for the kernel
series posted here:

https://patchwork.freedesktop.org/series/121084/

This series is also available at:

https://gitlab.freedesktop.org/adixit/igt-gpu-tools/-/tree/xe-oa

Gpuvis support for perf traces from Intel Xe driver is based on tools and
IGT lib changes included here.

Ashutosh Dixit (23):
  lib/xe/oa: Import OA metric generation files from i915
  lib/xe/oa: Add LNL metric guids
  lib/xe/oa: Add OA LNL metrics (oa_lnl.xml)
  lib/xe/oa: Add truncated legacy Xe1 metrics XML's
  lib/xe/oa: Generate LNL metrics/registers files
  lib/xe/oa: Switch generated files to Xe namespace
  drm-uapi/xe: Sync with Perf/OA changes
  lib/xe: Complete xe_oa lib functionality
  tests/intel/xe_query: Add OA units query test
  tests/intel/xe_oa: Add first tests
  tests/intel/xe_oa: Add some negative tests
  tests/intel/xe_oa: Add "oa-formats" subtest
  tests/intel/xe_oa: Add oa exponent tests
  tests/intel/xe_oa: buffer-fill, non-zero-reason, enable-disable
  tests/intel/xe_oa: blocking and polling tests
  tests/intel/xe_oa: OAR/OAC tests
  tests/intel/xe_oa: Exclusive/concurrent access, rc6 and stress open
    close
  tests/intel/xe_oa: add remove OA config tests
  tests/intel/xe_oa: OA buffer mmap tests
  tests/intel/xe_oa: Register whitelisting and MMIO trigger tests
  lib/xe/oa: Add xe_oa_data_reader to IGT lib
  tools/xe-perf: Add xe_perf_recorder
  tools/xe-perf: xe_perf_reader, xe_perf_control and xe_perf_configs

José Roberto de Souza (4):
  xe/oa: Fix invalid escape warnings
  xe/oa/mdapi-xml-convert: Add support for 576B_PEC64LL format
  xe/oa: Regenerate oa-lnl.xml now parsing all counters
  xe/oa/oa-metricset-codegen: Fix XE_OA_FORMAT_PEC64u64 offsets

 include/drm-uapi/xe_drm.h                 |  291 +
 lib/intel_device_info.c                   |    1 +
 lib/meson.build                           |   89 +
 lib/xe-oa.pc.in                           |   11 +
 lib/xe/oa-configs/README.md               |  115 +
 lib/xe/oa-configs/codegen.py              |  449 ++
 lib/xe/oa-configs/guids.xml               | 2763 ++++++++
 lib/xe/oa-configs/mdapi-xml-convert.py    | 1267 ++++
 lib/xe/oa-configs/oa-acmgt1.xml           |  710 +++
 lib/xe/oa-configs/oa-acmgt2.xml           |  828 +++
 lib/xe/oa-configs/oa-acmgt3.xml           |  824 +++
 lib/xe/oa-configs/oa-adl.xml              |  816 +++
 lib/xe/oa-configs/oa-dg1.xml              |  823 +++
 lib/xe/oa-configs/oa-equations-codegen.py |  261 +
 lib/xe/oa-configs/oa-lnl.xml              | 6984 +++++++++++++++++++++
 lib/xe/oa-configs/oa-metricset-codegen.py |  266 +
 lib/xe/oa-configs/oa-mtlgt2.xml           |  789 +++
 lib/xe/oa-configs/oa-mtlgt3.xml           |  803 +++
 lib/xe/oa-configs/oa-registers-codegen.py |  118 +
 lib/xe/oa-configs/oa-rkl.xml              |  824 +++
 lib/xe/oa-configs/oa-tglgt1.xml           |  819 +++
 lib/xe/oa-configs/oa-tglgt2.xml           |  818 +++
 lib/xe/oa-configs/oa_guid_registry.py     |  131 +
 lib/xe/oa-configs/update-guids.py         |  223 +
 lib/xe/xe_oa.c                            | 1072 ++++
 lib/xe/xe_oa.h                            |  408 ++
 lib/xe/xe_oa_data.h                       |  101 +
 lib/xe/xe_oa_data_reader.c                |  369 ++
 lib/xe/xe_oa_data_reader.h                |   87 +
 lib/xe/xe_query.c                         |   38 +
 lib/xe/xe_query.h                         |    5 +
 tests/intel/xe_oa.c                       | 4902 +++++++++++++++
 tests/intel/xe_query.c                    |   53 +
 tests/meson.build                         |    2 +
 tools/meson.build                         |    1 +
 tools/xe-perf/meson.build                 |   22 +
 tools/xe-perf/xe_perf_configs.c           |  247 +
 tools/xe-perf/xe_perf_control.c           |  117 +
 tools/xe-perf/xe_perf_reader.c            |  325 +
 tools/xe-perf/xe_perf_recorder.c          | 1227 ++++
 tools/xe-perf/xe_perf_recorder_commands.h |   31 +
 41 files changed, 30030 insertions(+)
 create mode 100644 lib/xe-oa.pc.in
 create mode 100644 lib/xe/oa-configs/README.md
 create mode 100644 lib/xe/oa-configs/codegen.py
 create mode 100644 lib/xe/oa-configs/guids.xml
 create mode 100755 lib/xe/oa-configs/mdapi-xml-convert.py
 create mode 100644 lib/xe/oa-configs/oa-acmgt1.xml
 create mode 100644 lib/xe/oa-configs/oa-acmgt2.xml
 create mode 100644 lib/xe/oa-configs/oa-acmgt3.xml
 create mode 100644 lib/xe/oa-configs/oa-adl.xml
 create mode 100644 lib/xe/oa-configs/oa-dg1.xml
 create mode 100644 lib/xe/oa-configs/oa-equations-codegen.py
 create mode 100644 lib/xe/oa-configs/oa-lnl.xml
 create mode 100644 lib/xe/oa-configs/oa-metricset-codegen.py
 create mode 100644 lib/xe/oa-configs/oa-mtlgt2.xml
 create mode 100644 lib/xe/oa-configs/oa-mtlgt3.xml
 create mode 100644 lib/xe/oa-configs/oa-registers-codegen.py
 create mode 100644 lib/xe/oa-configs/oa-rkl.xml
 create mode 100644 lib/xe/oa-configs/oa-tglgt1.xml
 create mode 100644 lib/xe/oa-configs/oa-tglgt2.xml
 create mode 100644 lib/xe/oa-configs/oa_guid_registry.py
 create mode 100755 lib/xe/oa-configs/update-guids.py
 create mode 100644 lib/xe/xe_oa.c
 create mode 100644 lib/xe/xe_oa.h
 create mode 100644 lib/xe/xe_oa_data.h
 create mode 100644 lib/xe/xe_oa_data_reader.c
 create mode 100644 lib/xe/xe_oa_data_reader.h
 create mode 100644 tests/intel/xe_oa.c
 create mode 100644 tools/xe-perf/meson.build
 create mode 100644 tools/xe-perf/xe_perf_configs.c
 create mode 100644 tools/xe-perf/xe_perf_control.c
 create mode 100644 tools/xe-perf/xe_perf_reader.c
 create mode 100644 tools/xe-perf/xe_perf_recorder.c
 create mode 100644 tools/xe-perf/xe_perf_recorder_commands.h

-- 
2.41.0


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

* [PATCH i-g-t 01/27] lib/xe/oa: Import OA metric generation files from i915
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 02/27] lib/xe/oa: Add LNL metric guids Ashutosh Dixit
                   ` (30 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

Import OA metric generation files from i915 to provide a starting point for
Xe OA XML processing code.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 lib/xe/oa-configs/README.md               |  115 +
 lib/xe/oa-configs/codegen.py              |  444 ++++
 lib/xe/oa-configs/guids.xml               | 2749 +++++++++++++++++++++
 lib/xe/oa-configs/mdapi-xml-convert.py    | 1196 +++++++++
 lib/xe/oa-configs/oa-equations-codegen.py |  261 ++
 lib/xe/oa-configs/oa-metricset-codegen.py |  257 ++
 lib/xe/oa-configs/oa-registers-codegen.py |  118 +
 lib/xe/oa-configs/oa_guid_registry.py     |  117 +
 lib/xe/oa-configs/update-guids.py         |  222 ++
 9 files changed, 5479 insertions(+)
 create mode 100644 lib/xe/oa-configs/README.md
 create mode 100644 lib/xe/oa-configs/codegen.py
 create mode 100644 lib/xe/oa-configs/guids.xml
 create mode 100755 lib/xe/oa-configs/mdapi-xml-convert.py
 create mode 100644 lib/xe/oa-configs/oa-equations-codegen.py
 create mode 100644 lib/xe/oa-configs/oa-metricset-codegen.py
 create mode 100644 lib/xe/oa-configs/oa-registers-codegen.py
 create mode 100644 lib/xe/oa-configs/oa_guid_registry.py
 create mode 100755 lib/xe/oa-configs/update-guids.py

diff --git a/lib/xe/oa-configs/README.md b/lib/xe/oa-configs/README.md
new file mode 100644
index 0000000000..513806b8e6
--- /dev/null
+++ b/lib/xe/oa-configs/README.md
@@ -0,0 +1,115 @@
+# About guids.xml
+
+This is the authoritive registry of unique identifers for different OA unit
+hardware configurations. Userspace can reliably use these identifiers to map a
+configuration to corresponding normalization equations and counter meta data.
+
+If a hardware configuration ever changes in a backwards incompatible way
+(changing the semantics and/or layout of the raw counters) then it must be
+given a new GUID.
+
+mdapi-xml-convert.py will match metric sets with a GUID from this file based on
+an md5 hash of the hardware register configuration and skip a metric set with a
+warning if no GUID could be found.
+
+All new metric sets need to be allocated a GUID here before
+mdapi-xml-convert.py will output anything for that
+metric set. This ensures we don't automatically import new metric sets without
+some explicit review that that's appropriate.
+
+A failure to find a GUID for an older metric set most likely implies that the
+register configuration was changed. It's possible that the change is benign
+(e.g. a comment change) and in that case the mdapi_config_hash for the
+corresponding metric set below can be updated.
+
+The update-guids.py script is the recommended way of managing updates to this
+file by generate a temporary file with proposed updates that you can compare
+with the current guids.xml.
+
+
+# update-guids.xml
+
+update-guids.py can help with:
+
+* Recognising new metrics from VPG's MDAPI XML files
+
+  *(NOTE: new guids.xml entries will initially be missing the
+  config_hash=MD5_HASH attribute until mdapi-xml-convert.py is used to generate
+  a corresponding oa-*.xml config description)*
+
+* Adding a config_hash=MD5_HASH attribute to recently added guids.xml entries
+  after mdapi-xml-convert.py has been run.
+
+* Allocating a GUID for a custom metric that doesn't have a counterpart in
+  VPG's MDAPI XML files.
+
+  For this case you can add a stub entry with only a name like `<guid
+  name="Foo">` to guids.xml and then running update-guids.py will output a
+  corresponding line with the addition of an id=UUID attribute.
+
+
+# How to sync the oa-\*.xml files with latest internal MDAPI XML files
+
+1. E.g. copy a new `MetricsXML_BDW.xml` to `mdapi/MetricsXML_BDW.xml`
+
+*Note: that the `mdapi-xml-convert.py` script will only convert configs that
+have a corresponding GUID entry within `guids.xml`. This check helps avoid
+unintentionally publishing early, work-in-progress/pre-production configs.*
+
+The `guids.xml` registry maps each, complex OA unit register configuration to a
+unique ID that userspace can recognise and trust the semantics of raw counters
+read using that configuration. (Just for reference, this is particularly
+valuable for tools that capture raw metrics for later, offline processing since
+the IDs effectively provide a compressed description of how to interpret the
+data by providing an index into a database of high-level counter descriptions.)
+
+The registry associates each ID with a hash of the HW register config as found in
+MDAPI XML files ('mdapi_config_hash') and also with a hash of the HW config as
+found in oa-\*.xml files ('config_hash'). The hashes used for lookups in the
+registry also help detect when the register config for a pre-existing metric set
+is updated. Note: these hashes are only for the low-level hardware configuration
+so updates to counter descriptions used by fronted UIs won't affect indexing
+here.
+
+There is a chicken and egg situation when updating or adding new entries to
+guids.xml since we can't hash the configs in oa-\*.xml until successfully running
+mdapi-xml-convert.py which depends on a guids.xml registry entry first. The
+update-guids.xml script will output registry entries without an oa-\*.xml config
+hash if not available and can be re-run after mdapi-xml-convert.py to add the
+missing hashes.
+
+2. Now run:
+```
+./update-guids.py --guids=guids.xml mdapi/MetricsXML_BDW.xml > guids.xml2
+```
+*(note the script expects to find oa-\*.xml files in the current directory)*
+
+Diff `guids.xml` and `guilds.xml2` (easiest with a side-by-side diff editor) and
+review the registry changes. *Note: many lines will have a warning like `"Not
+found in MDAPI XML file[s]..."` if `update-guids.xml` wasn't given all known
+MDAPI XML files but in this case they can be ignored for all non-BDW configs.*
+
+*Note: for any config that is already supported upstream in the xe_oa driver
+we need to be careful if the hash for a metric set changes in case the semantics
+for any raw counters were changed. The semantics of raw counters associated with
+a given GUID form part of the drm xe_oa uapi contract and must remain
+backwards compatible.*
+
+If the diff shows any `mdapi_config_hash` changes for pre-existing (especially
+upstream) configs you should review the MDAPI XML changes for the metric set and
+verify the change just relates to a bug fix. If more substantial changes were
+made which could mean we need to treat it as a new config. Handling the later
+case is left as an exercise to the reader, since it hasn't happened so far :-D.
+Assuming all the changes and new entries look good they can be copied into
+`guids.xml`, removing any trailing comment left by `update-guids.py`.
+
+3. Now run mdapi-xml-convert.py:
+```
+./mdapi-xml-convert.py --guids=guids.xml mdapi/MetricsXML_BDW.xml > oa-bdw.xml
+```
+
+4. We can now update new entries in guids.xml with a 'config_hash':
+```
+./update-guids.py --guids=guids.xml mdapi/MetricsXML_BDW.xml > guids.xml2
+```
+*(and again diff, check the changes and copy across)*
diff --git a/lib/xe/oa-configs/codegen.py b/lib/xe/oa-configs/codegen.py
new file mode 100644
index 0000000000..020e76ef4b
--- /dev/null
+++ b/lib/xe/oa-configs/codegen.py
@@ -0,0 +1,444 @@
+import re
+import xml.etree.ElementTree as et
+
+class Codegen:
+
+    _file = None
+    _indent = 0
+
+    endl="\n"
+    use_tabs = False
+
+    def __init__(self, filename = None):
+        if filename != None:
+            self._file = open(filename, 'w')
+
+    def __call__(self, *args):
+        if self._file:
+            code = ' '.join(map(str, args))
+            for line in code.splitlines():
+                indent = ''.rjust(self._indent)
+
+                if self.use_tabs:
+                    indent = indent.replace("        ", "\t")
+
+                text = indent + line
+                self._file.write(text.rstrip() + self.endl)
+
+    #without indenting or new lines
+    def frag(self, *args):
+        code = ' '.join(map(str, args))
+        self._file.write(code)
+
+    def indent(self, n):
+        self._indent = self._indent + n
+    def outdent(self, n):
+        self._indent = self._indent - n
+
+
+class Counter:
+    def __init__(self, set, xml):
+        self.xml = xml
+        self.set = set
+        self.read_hash = None
+        self.max_hash = None
+
+        self.read_sym = "{0}__{1}__{2}__read".format(self.set.gen.chipset,
+                                                     self.set.underscore_name,
+                                                     self.xml.get('underscore_name'))
+
+        max_eq = self.xml.get('max_equation')
+        if not max_eq:
+            self.max_sym = "NULL /* undefined */"
+        elif max_eq == "100":
+            self.max_sym = "percentage_max_callback_" + self.xml.get('data_type')
+        else:
+            self.max_sym = "{0}__{1}__{2}__max".format(self.set.gen.chipset,
+                                                       self.set.underscore_name,
+                                                       self.xml.get('underscore_name'))
+
+    def get(self, prop):
+        return self.xml.get(prop)
+
+    def compute_hashes(self):
+        if self.read_hash is not None:
+            return
+
+        def replace_func(token):
+            if token[0] != "$":
+                return token
+            if token not in self.set.counter_vars:
+                return token
+            self.set.counter_vars[token].compute_hashes()
+            return self.set.counter_vars[token].read_hash
+
+        read_eq = self.xml.get('equation')
+        self.read_hash = ' '.join(map(replace_func, read_eq.split()))
+
+        max_eq = self.xml.get('max_equation')
+        if max_eq:
+            self.max_hash = ' '.join(map(replace_func, max_eq.split()))
+
+class Set:
+    def __init__(self, gen, xml):
+        self.gen = gen
+        self.xml = xml
+
+        self.counter_vars = {}
+        self.max_funcs = {}
+        self.read_funcs = {}
+        self.counter_hashes = {}
+
+        self.counters = []
+        xml_counters = self.xml.findall("counter")
+        for xml_counter in xml_counters:
+            counter = Counter(self, xml_counter)
+            self.counters.append(counter)
+            self.counter_vars["$" + counter.get('symbol_name')] = counter
+            self.max_funcs["$" + counter.get('symbol_name')] = counter.max_sym
+            self.read_funcs["$" + counter.get('symbol_name')] = counter.read_sym
+
+        for counter in self.counters:
+            counter.compute_hashes()
+
+    @property
+    def hw_config_guid(self):
+        return self.xml.get('hw_config_guid')
+
+    @property
+    def name(self):
+        return self.xml.get('name')
+
+    @property
+    def symbol_name(self):
+        return self.xml.get('symbol_name')
+
+    @property
+    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)
+
+    def find(self, path):
+        return self.xml.find(path)
+
+
+hw_vars_mapping = {
+    "$EuCoresTotalCount": { 'c': "perf->devinfo.n_eus", 'desc': "The total number of execution units" },
+    "$EuSlicesTotalCount": { 'c': "perf->devinfo.n_eu_slices" },
+    "$EuSubslicesTotalCount": { 'c': "perf->devinfo.n_eu_sub_slices" },
+    "$EuDualSubslicesTotalCount": { 'c': "perf->devinfo.n_eu_sub_slices" },
+    "$EuDualSubslicesSlice0123Count": { 'c': "perf->devinfo.n_eu_sub_slices_half_slices" },
+    "$EuThreadsCount": { 'c': "perf->devinfo.eu_threads_count" },
+
+    "$VectorEngineTotalCount": { 'c': "perf->devinfo.n_eus", 'desc': "The total number of execution units" },
+    "$VectorEnginePerXeCoreCount": { 'c': "perf->devinfo.n_eu_sub_slices" },
+    "$VectorEngineThreadsCount": { 'c': "perf->devinfo.eu_threads_count" },
+
+    "$SliceMask": { 'c': "perf->devinfo.slice_mask" },
+    "$SliceTotalCount": { 'c': "perf->devinfo.n_eu_slices" },
+
+    "$SubsliceMask": { 'c': "perf->devinfo.subslice_mask" },
+    "$DualSubsliceMask": { 'c': "perf->devinfo.subslice_mask" },
+
+    "$GtSliceMask": { 'c': "perf->devinfo.slice_mask" },
+    "$GtSubsliceMask": { 'c': "perf->devinfo.subslice_mask" },
+    "$GtDualSubsliceMask": { 'c': "perf->devinfo.subslice_mask" },
+
+    "$GtXeCoreMask": { 'c': "perf->devinfo.slice_mask" },
+    "$XeCoreMask": { 'c': "perf->devinfo.slice_mask" },
+    "$XeCoreTotalCount": { 'c': 'perf->devinfo.n_eu_sub_slices' },
+
+    "$GpuTimestampFrequency": { 'c': "perf->devinfo.timestamp_frequency" },
+    "$GpuMinFrequency": { 'c': "perf->devinfo.gt_min_freq" },
+    "$GpuMaxFrequency": { 'c': "perf->devinfo.gt_max_freq" },
+    "$SkuRevisionId": { 'c': "perf->devinfo.revision" },
+    "$QueryMode": { 'c': "perf->devinfo.query_mode" },
+}
+
+def is_hw_var(name):
+    m = re.search('\$GtSlice([0-9]+)XeCore([0-9]+)$', name)
+    if m:
+        return True
+    m = re.search('\$GtSlice([0-9]+)$', name)
+    if m:
+        return True
+    m = re.search('\$GtSlice([0-9]+)DualSubslice([0-9]+)$', name)
+    if m:
+        return True
+    return name in hw_vars_mapping
+
+class Gen:
+    def __init__(self, filename, c):
+        self.filename = filename
+        self.xml = et.parse(self.filename)
+        self.chipset = self.xml.find('.//set').get('chipset').lower()
+        self.sets = []
+        self.c = c
+
+        for xml_set in self.xml.findall(".//set"):
+            self.sets.append(Set(self, xml_set))
+
+        self.ops = {}
+        #                     (n operands, emitter)
+        self.ops["FADD"]     = (2, self.emit_fadd)
+        self.ops["FDIV"]     = (2, self.emit_fdiv)
+        self.ops["FMAX"]     = (2, self.emit_fmax)
+        self.ops["FMUL"]     = (2, self.emit_fmul)
+        self.ops["FSUB"]     = (2, self.emit_fsub)
+        self.ops["READ"]     = (2, self.emit_read)
+        self.ops["UADD"]     = (2, self.emit_uadd)
+        self.ops["UDIV"]     = (2, self.emit_udiv)
+        self.ops["UMUL"]     = (2, self.emit_umul)
+        self.ops["USUB"]     = (2, self.emit_usub)
+        self.ops["UMIN"]     = (2, self.emit_umin)
+        self.ops["<<"]       = (2, self.emit_lshft)
+        self.ops[">>"]       = (2, self.emit_rshft)
+        self.ops["AND"]      = (2, self.emit_and)
+        self.ops["UGTE"]     = (2, self.emit_ugte)
+        self.ops["UGT"]      = (2, self.emit_ugt)
+        self.ops["ULTE"]     = (2, self.emit_ulte)
+        self.ops["ULT"]      = (2, self.emit_ult)
+
+        self.exp_ops = {}
+        #                 (n operands, splicer)
+        self.exp_ops["AND"]  = (2, self.splice_bitwise_and)
+        self.exp_ops["UGTE"] = (2, self.splice_ugte)
+        self.exp_ops["UGT"]  = (2, self.splice_ugt)
+        self.exp_ops["ULTE"] = (2, self.splice_ulte)
+        self.exp_ops["ULT"]  = (2, self.splice_ult)
+        self.exp_ops["&&"]   = (2, self.splice_logical_and)
+        self.exp_ops["<<"]   = (2, self.splice_lshft)
+        self.exp_ops[">>"]   = (2, self.splice_rshft)
+        self.exp_ops["UMUL"] = (2, self.splice_uml)
+
+        self.hw_vars = hw_vars_mapping
+
+    def emit_fadd(self, tmp_id, args):
+        self.c("double tmp{0} = {1} + {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    # Be careful to check for divide by zero...
+    def emit_fdiv(self, tmp_id, args):
+        self.c("double tmp{0} = {1};".format(tmp_id, args[1]))
+        self.c("double tmp{0} = {1};".format(tmp_id + 1, args[0]))
+        self.c("double tmp{0} = tmp{1} ? tmp{2} / tmp{1} : 0;".format(tmp_id + 2, tmp_id + 1, tmp_id))
+        return tmp_id + 3
+
+    def emit_fmax(self, tmp_id, args):
+        self.c("double tmp{0} = {1};".format(tmp_id, args[1]))
+        self.c("double tmp{0} = {1};".format(tmp_id + 1, args[0]))
+        self.c("double tmp{0} = MAX(tmp{1}, tmp{2});".format(tmp_id + 2, tmp_id, tmp_id + 1))
+        return tmp_id + 3
+
+    def emit_fmul(self, tmp_id, args):
+        self.c("double tmp{0} = {1} * {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_fsub(self, tmp_id, args):
+        self.c("double tmp{0} = {1} - {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_read(self, tmp_id, args):
+        type = args[1].lower()
+        self.c("uint64_t tmp{0} = accumulator[metric_set->{1}_offset + {2}];".format(tmp_id, type, args[0]))
+        return tmp_id + 1
+
+    def emit_uadd(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} + {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    # Be careful to check for divide by zero...
+    def emit_udiv(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1};".format(tmp_id, args[1]))
+        self.c("uint64_t tmp{0} = {1};".format(tmp_id + 1, args[0]))
+        self.c("uint64_t tmp{0} = tmp{1} ? tmp{2} / tmp{1} : 0;".format(tmp_id + 2, tmp_id + 1, tmp_id))
+        return tmp_id + 3
+
+    def emit_umul(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} * {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_usub(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} - {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_umin(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = MIN({1}, {2});".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_lshft(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} << {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_rshft(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} >> {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_and(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} & {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_ulte(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} <= {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_ult(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} < {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_ugte(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} >= {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_ugt(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} > {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def brkt(self, subexp):
+        if " " in subexp:
+            return "(" + subexp + ")"
+        else:
+            return subexp
+
+    def splice_bitwise_and(self, args):
+        return self.brkt(args[1]) + " & " + self.brkt(args[0])
+
+    def splice_logical_and(self, args):
+        return self.brkt(args[1]) + " && " + self.brkt(args[0])
+
+    def splice_ulte(self, args):
+        return self.brkt(args[1]) + " <= " + self.brkt(args[0])
+
+    def splice_ult(self, args):
+        return self.brkt(args[1]) + " < " + self.brkt(args[0])
+
+    def splice_ugte(self, args):
+        return self.brkt(args[1]) + " >= " + self.brkt(args[0])
+
+    def splice_ugt(self, args):
+        return self.brkt(args[1]) + " > " + self.brkt(args[0])
+
+    def splice_lshft(self, args):
+        return '(' + self.brkt(args[1]) + " << " + self.brkt(args[0]) + ')'
+
+    def splice_rshft(self, args):
+        return '(' + self.brkt(args[1]) + " >> " + self.brkt(args[0]) + ')'
+
+    def splice_uml(self, args):
+        return self.brkt(args[1]) + " * " + self.brkt(args[0])
+
+    def resolve_variable(self, name, set):
+        if name in self.hw_vars:
+            return self.hw_vars[name]['c']
+        if name in set.counter_vars:
+            return set.read_funcs[name] + "(perf, metric_set, accumulator)"
+        m = re.search('\$GtSlice([0-9]+)$', name)
+        if m:
+            return 'intel_perf_devinfo_slice_available(&perf->devinfo, {0})'.format(m.group(1))
+        m = re.search('\$GtSlice([0-9]+)DualSubslice([0-9]+)$', name)
+        if m:
+            return 'intel_perf_devinfo_subslice_available(&perf->devinfo, {0}, {1})'.format(m.group(1), m.group(2))
+        m = re.search('\$GtSlice([0-9]+)XeCore([0-9]+)$', name)
+        if m:
+            return 'intel_perf_devinfo_subslice_available(&perf->devinfo, {0}, {1})'.format(m.group(1), m.group(2))
+        return None
+
+    def output_rpn_equation_code(self, set, counter, equation):
+        self.c("/* RPN equation: " + equation + " */")
+        tokens = equation.split()
+        stack = []
+        tmp_id = 0
+        tmp = None
+
+        for token in tokens:
+            stack.append(token)
+            while stack and stack[-1] in self.ops:
+                op = stack.pop()
+                argc, callback = self.ops[op]
+                args = []
+                for i in range(0, argc):
+                    operand = stack.pop()
+                    if operand[0] == "$":
+                        resolved_variable = self.resolve_variable(operand, set)
+                        if resolved_variable == None:
+                            raise Exception("Failed to resolve variable " + operand + " in equation " + equation + " for " + set.name + " :: " + counter.get('name'));
+                        operand = resolved_variable
+                    args.append(operand)
+
+                tmp_id = callback(tmp_id, args)
+
+                tmp = "tmp{0}".format(tmp_id - 1)
+                stack.append(tmp)
+
+        if len(stack) != 1:
+            raise Exception("Spurious empty rpn code for " + set.name + " :: " +
+                    counter.get('name') + ".\nThis is probably due to some unhandled RPN function, in the equation \"" +
+                    equation + "\"")
+
+        value = stack[-1]
+
+        if value[0] == "$":
+            resolved_variable = self.resolve_variable(value, set)
+            if resolved_variable == None:
+                raise Exception("Failed to resolve variable " + value + " in expression " + expression + " for " + set.name + " :: " + counter_name)
+            value = resolved_variable
+
+        self.c("\nreturn " + value + ";")
+
+    def splice_rpn_expression(self, set, counter_name, expression):
+        tokens = expression.split()
+        stack = []
+
+        for token in tokens:
+            stack.append(token)
+            while stack and stack[-1] in self.exp_ops:
+                op = stack.pop()
+                argc, callback = self.exp_ops[op]
+                args = []
+                for i in range(0, argc):
+                    operand = stack.pop()
+                    if operand[0] == "$":
+                        resolved_variable = self.resolve_variable(operand, set)
+                        if resolved_variable == None:
+                            raise Exception("Failed to resolve variable " + operand + " in expression " + expression + " for " + set.name + " :: " + counter_name)
+                        operand = resolved_variable
+                    args.append(operand)
+
+                subexp = callback(args)
+
+                stack.append(subexp)
+
+        if len(stack) != 1:
+            raise Exception("Spurious empty rpn expression for " + set.name + " :: " +
+                    counter_name + ".\nThis is probably due to some unhandled RPN operation, in the expression \"" +
+                    expression + "\"")
+
+        value = stack[-1]
+
+        if value[0] == "$":
+            resolved_variable = self.resolve_variable(value, set)
+            if resolved_variable == None:
+                raise Exception("Failed to resolve variable " + value + " in expression " + expression + " for " + set.name + " :: " + counter_name)
+            value = resolved_variable
+
+        return value
+
+    def output_availability(self, set, availability, counter_name):
+        expression = self.splice_rpn_expression(set, counter_name, availability)
+        lines = expression.split(' && ')
+        n_lines = len(lines)
+        if n_lines == 1:
+            self.c("if (" + lines[0] + ") {")
+        else:
+            self.c("if (" + lines[0] + " &&")
+            self.c.indent(4)
+            for i in range(1, (n_lines - 1)):
+                self.c(lines[i] + " &&")
+            self.c(lines[(n_lines - 1)] + ") {")
+            self.c.outdent(4)
diff --git a/lib/xe/oa-configs/guids.xml b/lib/xe/oa-configs/guids.xml
new file mode 100644
index 0000000000..510450f87a
--- /dev/null
+++ b/lib/xe/oa-configs/guids.xml
@@ -0,0 +1,2749 @@
+<!--
+    This is the authoritive registry of unique identifers for different OA unit
+    hardware configurations. Userspace can reliably use these identifiers to
+    map a configuration to corresponding normalization equations and counter
+    meta data.
+
+    Most maintenance is done using the update-guids.py helper script to generate
+    a temporary guids.xml.update file which should then be manually compared with
+    a visual diff tool to cherry pick the final changes into guids.xml.
+
+    See README.md for more details.
+-->
+<guids>
+    <guid id="2f01b241-7014-42a7-9eb6-a925cad3daba" chipset="all" name="MDAPI" />
+    <guid config_hash="b96ab550dbb61fa1d1a98b2d6f938e9c" mdapi_config_hash="c675607e7d1b0083729e4b1621fd25f8" id="a490e9d2-55b3-4db0-8dab-53011032c5f3" chipset="hsw" name="RenderBasic" />
+    <guid config_hash="3b656e19962cf1990cfb253a59946266" mdapi_config_hash="09199618ca154304fd42ca5ee19187f4" id="b344c8cb-a291-4cbf-aa9c-b40213bfc96f" chipset="hsw" name="ComputeBasic" />
+    <guid config_hash="bb978ccd4f1eca6d7806f304a42fb10f" mdapi_config_hash="77524b565825e61259436f526848c1e1" id="480f9795-cf6a-4204-a9e3-cd7015515f8d" chipset="hsw" name="ComputeExtended" />
+    <guid config_hash="890e4b72a09b71cb9c4522fbd8f7e45a" mdapi_config_hash="28d4ec8839e660bac90c3fbfa815ce45" id="399d3001-97d6-4240-b065-4fb843138e17" chipset="hsw" name="MemoryReads" />
+    <guid config_hash="904374d80088ec4941ab3c1dbed1aac0" mdapi_config_hash="6a8cbc42da4822a17d3de385d6811c1a" id="f3c1ff4b-d0da-4ffa-8780-2c6b98f3f2d5" chipset="hsw" name="MemoryWrites" />
+    <guid config_hash="35111d939881fd8e2367f89f86b43d19" mdapi_config_hash="4f8c749ea23ece9349cf690908159b6b" id="e111cda4-19c3-41ee-b326-f99ac44ebf78" chipset="hsw" name="SamplerBalance" />
+    <guid mdapi_config_hash="3c2ee9a97141f36bc13828aeda30e477" id="ce81ddfb-573f-4100-8b9a-8dc93a5e5c8c" chipset="hsw" name="RenderBalance" />
+    <guid mdapi_config_hash="7ffc6e4d3d2284ea76e9390b0fd8aaf1" id="2fbbb85b-0f33-4aeb-9d92-35256de2662f" chipset="hsw" name="MemoryReadsOnWritePort" />
+    <guid mdapi_config_hash="ff6824b311096312105547bbe5e65758" id="a1476140-3af3-4556-b5fe-501e2df8b963" chipset="hsw" name="StencilPmaHold" />
+    <guid mdapi_config_hash="414afdc7b2570bbbe07406ec675f3040" id="b3d5350e-32ba-4c72-96c2-0a504e86eda3" chipset="hsw" name="MediaMemoryReads" />
+    <guid mdapi_config_hash="cf80117b63d376e87735b73e8f5ebc5b" id="69b42918-c915-439a-9e4b-a82fe3c9e1a3" chipset="hsw" name="MediaMemoryWrites" />
+    <guid mdapi_config_hash="3566f20e9e3707cb9aefccff3ead7572" id="18024740-aa68-4d25-877e-082c9fdcb895" chipset="hsw" name="MediaVmePipe" />
+    <guid config_hash="240f9cd7a6699b44ff0bf22b24449ac0" mdapi_config_hash="961180e14745136637cfd0253c6c0a63" id="d6de6f55-e526-4f79-a6a6-d7315c09044e" chipset="bdw" name="TestOa" />
+    <guid config_hash="9c4955c220cbcc5f9ff3ce6e7af64cf5" mdapi_config_hash="7f7918e87f574f62cc4e8d37f660abc5" id="b541bd57-0e0f-4154-b4c0-5858010a2bf7" chipset="bdw" name="RenderBasic" />
+    <guid config_hash="35d980685774e3631a7e5eb4d23a0013" mdapi_config_hash="ea406bf4dc4e4edd5e29cce12bef1778" id="35fbc9b2-a891-40a6-a38d-022bb7057552" chipset="bdw" name="ComputeBasic" />
+    <guid config_hash="d17b0801f998c4b119c63b0467e8f9b5" mdapi_config_hash="fbde7829568089b44b53a1eefbad9b0e" id="8fb61ba2-2fbb-454c-a136-2dec5a8a595e" chipset="bdw" name="ComputeExtra" />
+    <guid config_hash="1bb1be4885c0568bf0d3bd5df9fe4a7a" mdapi_config_hash="f0c3b043834e63d21ba6be573df02e32" id="233d0544-fff7-4281-8291-e02f222aff72" chipset="bdw" name="RenderPipeProfile" />
+    <guid config_hash="9147786065e1562d254a1dc82c14b4f9" mdapi_config_hash="fa121c59e98aa4f860c797bfab097cd7" id="2b255d48-2117-4fef-a8f7-f151e1d25a2c" chipset="bdw" name="MemoryReads" />
+    <guid config_hash="13cadf5e130b16bf6cf777e34ff54fcf" mdapi_config_hash="7e324f6f7cb980832735ada1e12f7905" id="f7fd3220-b466-4a4d-9f98-b0caf3f2394c" chipset="bdw" name="MemoryWrites" />
+    <guid config_hash="552b53f8d91428cec6eab6bff62ae8af" mdapi_config_hash="6ba093cf3feb68f521e579169ad689cf" id="e99ccaca-821c-4df9-97a7-96bdb7204e43" chipset="bdw" name="ComputeExtended" />
+    <guid config_hash="2cf68f22eadf4cb430a7e2a76fab3632" mdapi_config_hash="e9913c0dd30d6ccab98c5dec58dc7162" id="27a364dc-8225-4ecb-b607-d6f1925598d9" chipset="bdw" name="ComputeL3Cache" />
+    <guid config_hash="15d5387219cda641a8964b9edeb86b6d" mdapi_config_hash="fc357f19e2a77465c3232693f3bb1444" id="857fc630-2f09-4804-85f1-084adfadd5ab" chipset="bdw" name="DataPortReadsCoalescing" />
+    <guid config_hash="95a2d953682c60ee0213c41892067b94" mdapi_config_hash="be3980a5f0e6057e641b884fc56b07ff" id="343ebc99-4a55-414c-8c17-d8e259cf5e20" chipset="bdw" name="DataPortWritesCoalescing" />
+    <guid config_hash="9004a46b9728e0f12232ce8b151d3224" mdapi_config_hash="715fe2c431914b6b369970c0b897f7e2" id="e1743ca0-7fc8-410b-a066-de7bbb9280b7" chipset="bdw" name="VMEPipe" />
+    <guid config_hash="bb8d49db81e7bd822188ed5a958b4863" mdapi_config_hash="f94fd6ba5bfa83bb965705f1c69f1d37" id="78490af2-10fa-430b-ae3c-94ec04d5214e" chipset="bdw" name="HDCAndSF" />
+    <guid config_hash="19924ef1563f10e386755b531d44a3fb" mdapi_config_hash="a5589479b360f6d4f5c8f70fe78b0e1d" id="c0abdd97-3b13-4cad-814c-bd178804e02c" chipset="bdw" name="L3_1" />
+    <guid config_hash="41217f1f74d9e181726736ab9af57c32" mdapi_config_hash="0fc152bfbb920f90b16ed0445afe9e48" id="ad665281-a7cf-483a-bd10-0e07c43f61c7" chipset="bdw" name="L3_2" />
+    <guid config_hash="f17717dae4348688c670212b507d451a" mdapi_config_hash="2afc3cdd7ffbb021fc0ae99681b138ab" id="930a15aa-4300-4fce-a9ba-edb0b9e880be" chipset="bdw" name="L3_3" />
+    <guid config_hash="71232cf595afad2b53666f6c233447e8" mdapi_config_hash="032c9ab7c2c6d056da82e4ee1b159c18" id="d7793b26-b5e3-4f0f-ad78-7ebc9d0b4c7d" chipset="bdw" name="L3_4" />
+    <guid config_hash="b8a474b7965b6d9ec62641732d0d479b" mdapi_config_hash="b2454e1eef8d38d83cb95ba2b3d85431" id="da0f7875-1143-4d73-a39c-9128a951c46a" chipset="bdw" name="RasterizerAndPixelBackend" />
+    <guid config_hash="f8f05a9f4ce4bd928f1343180584f7de" mdapi_config_hash="6fb026e2926fbd3a507e55a7bf0a3687" id="52c186e4-39e3-4534-87cd-41bd47763df9" chipset="bdw" name="Sampler_1" />
+    <guid config_hash="30ee983d5ba223ad552acc3debc13c00" mdapi_config_hash="e38e63da0d875958bc88a9deb8d529ba" id="edcb8c31-764d-451a-9ecd-c9c89fb54f8d" chipset="bdw" name="Sampler_2" />
+    <guid config_hash="bbc70da24570ab578fb1416217fc0834" mdapi_config_hash="c905876bdf561cc26c64363ced258c64" id="729fc3f4-ccff-4902-be6b-f1a22cc92c02" chipset="bdw" name="TDL_1" />
+    <guid config_hash="803ca6eb4feef4090332003b65607c95" mdapi_config_hash="0000753d7f52fb3a0b0baa6b44052cff" id="29598975-4785-43ab-a981-1dfa58d0e835" chipset="bdw" name="TDL_2" />
+    <guid config_hash="c45ebb398888eabb889be632432550eb" mdapi_config_hash="a3c52d64b6d187b02de43af112abc509" id="0a9eb7be-feee-4275-a139-6d9cedf0fdb0" chipset="bdw" name="GpuBusyness" />
+    <guid config_hash="13a7f7de484592659ef4d346901bde25" mdapi_config_hash="59cd2454083f4855dca14637425d733c" id="e713f347-953e-4d8c-b02f-6be31df2db2b" chipset="bdw" name="STC_PmaStall" />
+    <guid config_hash="867e736ad8c49a9f4cd17b58f1b0b0cc" mdapi_config_hash="d996104bf7531170226275d44a3602b6" id="4a534b07-cba3-414d-8d60-874830e883aa" chipset="chv" name="TestOa" />
+    <guid config_hash="4fe7c53a36b24f621e11a1487d46e325" mdapi_config_hash="089852d3f5babff2175457f57214ce57" id="9d8a3af5-c02c-4a4a-b947-f1672469e0fb" chipset="chv" name="RenderBasic" />
+    <guid config_hash="6472c5788ff47d2f8f88b86b7314c09e" mdapi_config_hash="60375bf6570a28320cce512ab6d024e0" id="f522a89c-ecd1-4522-8331-3383c54af5f5" chipset="chv" name="ComputeBasic" />
+    <guid config_hash="532bafcf355d5812242ab50a362bf934" mdapi_config_hash="1466be3c679aeeb0627be174ead35e58" id="a9ccc03d-a943-4e6b-9cd6-13e063075927" chipset="chv" name="RenderPipeProfile" />
+    <guid config_hash="bb8d49db81e7bd822188ed5a958b4863" mdapi_config_hash="f94fd6ba5bfa83bb965705f1c69f1d37" id="33af8252-7a51-4aa3-b0ba-1b946f209d7b" chipset="chv" name="HDCAndSF" />
+    <guid config_hash="19924ef1563f10e386755b531d44a3fb" mdapi_config_hash="a5589479b360f6d4f5c8f70fe78b0e1d" id="78f52900-5317-4417-8067-966fbf215a1f" chipset="chv" name="L3_1" />
+    <guid config_hash="41217f1f74d9e181726736ab9af57c32" mdapi_config_hash="0fc152bfbb920f90b16ed0445afe9e48" id="0db4fe4a-2648-4064-bd6a-89c06d0c27b3" chipset="chv" name="L3_2" />
+    <guid config_hash="f17717dae4348688c670212b507d451a" mdapi_config_hash="2afc3cdd7ffbb021fc0ae99681b138ab" id="0de6539e-33b4-4aee-83c4-9ab45a579b94" chipset="chv" name="L3_3" />
+    <guid config_hash="71232cf595afad2b53666f6c233447e8" mdapi_config_hash="032c9ab7c2c6d056da82e4ee1b159c18" id="be74c9d6-268f-4d7f-b2e8-8d91d4441883" chipset="chv" name="L3_4" />
+    <guid config_hash="b8a474b7965b6d9ec62641732d0d479b" mdapi_config_hash="b2454e1eef8d38d83cb95ba2b3d85431" id="31bc1ff3-8d09-4497-9d79-59c4f943b502" chipset="chv" name="RasterizerAndPixelBackend" />
+    <guid config_hash="f8f05a9f4ce4bd928f1343180584f7de" mdapi_config_hash="6fb026e2926fbd3a507e55a7bf0a3687" id="05450fec-bb5c-4b0a-8995-e03631168a34" chipset="chv" name="Sampler_1" />
+    <guid config_hash="30ee983d5ba223ad552acc3debc13c00" mdapi_config_hash="e38e63da0d875958bc88a9deb8d529ba" id="883c8a56-8767-4de8-beec-a99462c6674b" chipset="chv" name="Sampler_2" />
+    <guid config_hash="bbc70da24570ab578fb1416217fc0834" mdapi_config_hash="c905876bdf561cc26c64363ced258c64" id="eb97e523-d9ac-48a9-b7f8-9cc909ddbf14" chipset="chv" name="TDL_1" />
+    <guid config_hash="803ca6eb4feef4090332003b65607c95" mdapi_config_hash="0000753d7f52fb3a0b0baa6b44052cff" id="dff6158e-8409-452c-be76-91c9946330bd" chipset="chv" name="TDL_2" />
+    <guid mdapi_config_hash="5cc4d10d745060d0672ffb4ebf0d1687" id="22480aac-b81a-40ce-8770-1061ce51dff7" chipset="chv" name="StencilPmaHold" />
+    <guid mdapi_config_hash="f3ae7e16e9b6aadac98179bc4c847246" id="f8315f64-668e-405e-a6d6-c52e4d9e8f1c" chipset="chv" name="MediaMemoryReads" />
+    <guid mdapi_config_hash="ea98859ab4afdda2589be697455c7dc8" id="6df9f4c3-4775-4f47-be6a-991fba7a02c7" chipset="chv" name="MediaMemoryWrites" />
+    <guid mdapi_config_hash="179e6a40c74a8401597b82383dacfd70" id="e7b839a6-6045-4ec7-aaa5-f6aab87a55aa" chipset="chv" name="MediaVmePipe" />
+    <guid mdapi_config_hash="3ed20c9f7071cef87fd28d2f899c9e6c" id="aa7d6b37-3e8f-46a4-ab50-e58f8efbdab9" chipset="chv" name="HdcUrbCoalescing" />
+    <guid mdapi_config_hash="b39b58578bb37520010084d2fb489c47" id="d991c4b4-7c8b-43a9-b187-7b143cb903cc" chipset="chv" name="L3" />
+    <guid mdapi_config_hash="36c6e4beda33281c27a79f4134ea9f80" id="531d4a91-df08-4dd4-8c5c-0158321a9ee0" chipset="chv" name="SamplerAndHDCAndTDL" />
+    <guid mdapi_config_hash="959a0f3d993feb51a3ce93ea3b61d726" id="ca514a15-e550-4277-ba52-b7cfa4929e25" chipset="chv" name="TDL" />
+    <guid mdapi_config_hash="f1232ea7b1a2bc5b0cfc7d640528e5b2" id="2a933a92-bddc-44dd-a06a-672391972b5e" chipset="chv" name="ComputeL3Cache" />
+    <guid config_hash="e018d083414e4d28e0ed481554128883" mdapi_config_hash="dce59e977ffff25a57f2486f5d9a7c60" id="5ee72f5c-092f-421e-8b70-225f7c3e9612" chipset="bxt" name="TestOa" />
+    <guid config_hash="203852243e7fde6887b1db92862d5eee" mdapi_config_hash="9bf85c8db90bbb173411dd8fbf2c9d90" id="22b9519a-e9ba-4c41-8b54-f4f8ca14fa0a" chipset="bxt" name="RenderBasic" />
+    <guid config_hash="cde046a01aba9c56d6fa44bf2c0f26c2" mdapi_config_hash="86794812560853ea5531d6eb816c7bfa" id="012d72cf-82a9-4d25-8ddf-74076fd30797" chipset="bxt" name="ComputeBasic" />
+    <guid config_hash="a19a55aad269ccc1ed4380314eda4bed" mdapi_config_hash="ac34c2028f3f4fae92e58aae1496901b" id="fa6ecf21-2cb8-4d0b-9308-6e4a7b4ca87a" chipset="bxt" name="ComputeExtra" />
+    <guid config_hash="1669463a6836f6d057cbf3e41506923b" mdapi_config_hash="c4b66b414f42b7e6f1b9941b445f79f2" id="ce416533-e49e-4211-80af-ec513590a914" chipset="bxt" name="RenderPipeProfile" />
+    <guid config_hash="f9eee3f0c9653ffd05e4876be0ea44d5" mdapi_config_hash="f707783ff8ea456ddc55fbaeb1a3bc0a" id="398e2452-18d7-42d0-b241-e4d0a9148ada" chipset="bxt" name="MemoryReads" />
+    <guid config_hash="03e840f1d8597b3c6c4015792243ce7d" mdapi_config_hash="b7e416688493d93c6a319a39c1c91fda" id="d324a0d6-7269-4847-a5c2-6f71ddc7fed5" chipset="bxt" name="MemoryWrites" />
+    <guid config_hash="39a03c065f1fdb5bf680207dc520cdb2" mdapi_config_hash="c90ecb54cbe7609fc6743f5273b68962" id="caf3596a-7bb1-4dec-b3b3-2a080d283b49" chipset="bxt" name="ComputeExtended" />
+    <guid config_hash="c241c2999f487dc995cecdb35b01197b" mdapi_config_hash="03f5a72e5e1ce82b6e3e14855298bf3d" id="49b956e2-d5b9-47e0-9d8a-cee5e8cec527" chipset="bxt" name="ComputeL3Cache" />
+    <guid config_hash="37dc8ae76c2554b11ecea682f1349ece" mdapi_config_hash="16b7f908edc7ee5ddb797c6fb1932fa6" id="ad9d9bc2-ccb7-4f5d-adbb-b4e67e615efd" chipset="bxt" name="HDCAndSF" />
+    <guid config_hash="543b9bdb10f681d516d8d9e2195221cd" mdapi_config_hash="87f92d7860a6674bf05428c26523755b" id="bde7b434-349c-4aad-8596-eb23c0352168" chipset="bxt" name="L3_1" />
+    <guid config_hash="1dc29cbbceb8e2e1a78d679ead80a27b" mdapi_config_hash="c7ec60f268b8efa00960e96dc9491517" id="f3d845e6-bfc3-4ffe-b0e5-dddc80c21f07" chipset="bxt" name="RasterizerAndPixelBackend" />
+    <guid config_hash="0b9e45ed32513193354be363e288b6a6" mdapi_config_hash="ad512c0f8b7457df8edca72ddea75e64" id="a53d620b-c14e-49df-bd27-e076b3fb98f3" chipset="bxt" name="Sampler" />
+    <guid config_hash="3f01b8d28fa285e7a496081574de4c1b" mdapi_config_hash="963e6d32bfe8cee347a8ae14d677c11c" id="8a44b172-6e1d-445f-8937-c06cc487ba39" chipset="bxt" name="TDL_1" />
+    <guid config_hash="0c77cba2d8886c18df9f382ce90eac66" mdapi_config_hash="a66f0092b99ca3a8ce29e0ce4be513ff" id="9d4643f8-aa05-482e-8193-070a8ab0d117" chipset="bxt" name="TDL_2" />
+    <guid config_hash="e6d52ba7af730de63eeaa8d727b36ed7" mdapi_config_hash="6898bc10a62600907cc6c47d1f7004a0" id="c9f5fa3a-d14f-400c-a89a-211206b00ee7" chipset="bxt" name="GpuBusyness" />
+    <guid config_hash="6d13f443205926fd1351ae5adeae8965" mdapi_config_hash="24f384a77963d7d64c324b3d89eeb498" id="d49cd0d8-8c7f-4465-94fc-51e08c9050bc" chipset="bxt" name="PMA_Stall" />
+    <guid config_hash="9627e657d1b89b3bf665208e08e2f0c8" mdapi_config_hash="d3c38c785083f96af147bcda8d43af4c" id="b890cb09-42f7-4644-8aac-a7beca4b9181" chipset="bxt" name="AsyncCompute" />
+    <guid config_hash="fc79f102b841df08ac154ddebc634bf6" mdapi_config_hash="3c97b92455702ca6f6a6f846dcc1ebd3" id="07b25942-d9fd-4fce-bd58-e29abd66b7de" chipset="sklgt2" name="RenderBasic" />
+    <guid config_hash="3e0e14aef4a2cf7e61098928c034caff" mdapi_config_hash="ecb641130c942e71d5a9de8adb51c7f6" id="00b80b4c-d215-4378-9015-da3dda3b61ea" chipset="sklgt2" name="ComputeBasic" />
+    <guid config_hash="d757768d43838dd04e2db7e9928c87d9" mdapi_config_hash="79c6baee9374a6c43b8e0fabda2c1a39" id="2a0c0933-37e7-427c-9951-ded42a78bb27" chipset="sklgt2" name="RenderPipeProfile" />
+    <guid config_hash="15938384237d1b01ceb07bc97edd12a9" mdapi_config_hash="22327f250c6079d5d5f9f1a70829dc05" id="246b35f1-44e0-4d03-8936-e452e291d064" chipset="sklgt2" name="MemoryReads" />
+    <guid config_hash="a0c0e0b3ad6e0960c9e3c626e9943c3b" mdapi_config_hash="5dcf9b09ab723e2f4ed17171a2b54a59" id="e0d3da02-00bf-4a96-9795-b48158c73a68" chipset="sklgt2" name="MemoryWrites" />
+    <guid config_hash="31bc9b67c237e4be9469d38ba69ec374" mdapi_config_hash="37e00c6654e34eaab18b6f3b2c606a16" id="c26b1fda-2752-4a33-a448-4c8718366846" chipset="sklgt2" name="ComputeExtended" />
+    <guid config_hash="a142f4714f9189816e129d2bf7ddd060" mdapi_config_hash="cdf98d85d93792dc203d2bfd7ae7559c" id="9fb22842-e708-43f7-9752-e0e41670c39e" chipset="sklgt2" name="ComputeL3Cache" />
+    <guid config_hash="977641d9cac7a2eb62c1c6cc844db2b5" mdapi_config_hash="a70cc632725191096cec1d685119aeb6" id="b4aa5e13-2d25-418f-827d-421f5cc4c43b" chipset="sklgt2" name="HDCAndSF" />
+    <guid config_hash="45aaf271f503f5d5d152b6d97c11412d" mdapi_config_hash="6b111ab20f6929a385eee8d283768ac1" id="504000e8-64f2-4aac-8301-51b81aa60d45" chipset="sklgt2" name="L3_1" />
+    <guid config_hash="6221743043a92819571c49bde5e09582" mdapi_config_hash="0b87bde0336f1d126527c9d8b0e6fa3c" id="f542479b-6685-4670-ad8e-9fe282a2eb5b" chipset="sklgt2" name="L3_2" />
+    <guid config_hash="b6320b7867895a125dec55805a8da286" mdapi_config_hash="7eae454eee816d64ff0fbb991ad4e9b9" id="1cbf1e9f-c2de-4cc2-8d1c-2c33c25a2332" chipset="sklgt2" name="L3_3" />
+    <guid config_hash="35f7405d36fe5767f4c1e80b322243d1" mdapi_config_hash="78b90bbcc0137b2c6e516cb32d44747c" id="b4e54cc8-a3a0-4ccd-9990-65d3184e5a38" chipset="sklgt2" name="RasterizerAndPixelBackend" />
+    <guid config_hash="6e2319f2ca15bfb049b2d1be6d1a0844" mdapi_config_hash="73ceeb4df0d124c61328ecf2c0207503" id="efe7eba4-fd9e-4a09-a92b-334970b5de57" chipset="sklgt2" name="Sampler" />
+    <guid config_hash="90eff0b1f381a2f187bd54f2047ce0f2" mdapi_config_hash="e0913ff09629a32c435487a69f6683b9" id="e9bd0bbb-c7b7-4a26-a27a-246987354776" chipset="sklgt2" name="TDL_1" />
+    <guid config_hash="c41684d2ccbe553874fb9cdbd8fd0229" mdapi_config_hash="6b1a9dc8dd375bf367313ad9b0531580" id="0a7accbf-8c55-455f-9984-23e9fb0b826d" chipset="sklgt2" name="TDL_2" />
+    <guid config_hash="483a06910590c1753a0266ef8b9f9b70" mdapi_config_hash="4be337ed83e3c95aebf66553ed685602" id="41a24047-7484-4ead-ae37-de907e5ff2b2" chipset="sklgt2" name="ComputeExtra" />
+    <guid config_hash="784698b7fb41dad7bc4bf13fac46657b" mdapi_config_hash="2fe32bdaf82fc66774ee95c33a23ea88" id="95910492-943f-44bd-9461-390240f243fd" chipset="sklgt2" name="VMEPipe" />
+    <guid config_hash="d811fdce9eae9713bde1a8f91fd6feb7" mdapi_config_hash="f8f56d024b8445d193952ead4d7e3004" id="c5384091-ce4c-406c-ab4d-4c530f71c7ae" chipset="sklgt2" name="TestOa" />
+    <guid config_hash="ee7996e47cdaf7722422397285763cdc" mdapi_config_hash="ada812fc71ebbabd1e746dbab67881b1" id="c44a5cf7-886d-477b-bebd-2d738923e4c3" chipset="sklgt2" name="GpuBusyness" />
+    <guid config_hash="cec6202194db96d6a09fed71808bb7de" mdapi_config_hash="df4b9b85ed61f457a0b71b03299b282d" id="e0b2aae4-9b8f-4211-8df0-f8e8cb203209" chipset="sklgt2" name="FfBottlenecks" />
+    <guid config_hash="8ae5bda74271c473f88f13e57d6f6828" mdapi_config_hash="e7f3f72cad542f3a17c09686e65487fc" id="27871149-2fa9-40ba-aa73-350d60c03a09" chipset="sklgt2" name="PMA_Stall" />
+    <guid config_hash="3a59319ec73eea8c3de970d027092a2b" mdapi_config_hash="5901e5a68332bb5d9c654286b1d3e9a5" id="04769cac-6809-4f2a-af5d-40022435a8b2" chipset="sklgt2" name="AsyncCompute" />
+    <guid config_hash="a7f1b241b23898785166ab10ca4ce1bf" mdapi_config_hash="ae3528402606bbb21a08da7ef5ea1530" id="21fef15a-83f4-4ffa-bb81-7da6e38b8e4b" chipset="sklgt3" name="RenderBasic" />
+    <guid config_hash="ede53df6549f788495f7fca90475b6dd" mdapi_config_hash="87390c127ce809c3cfab64388ddebd14" id="4320492b-fd03-42ac-922f-dbe1ef3b7b58" chipset="sklgt3" name="ComputeBasic" />
+    <guid config_hash="0f8eee02ed3e457362ffdc38ed10036c" mdapi_config_hash="2d95f03caa28b40e2a25f3bc8ac38b55" id="bd2d9cae-b9ec-4f5b-9d2f-934bed398a2d" chipset="sklgt3" name="RenderPipeProfile" />
+    <guid config_hash="0a75401250565ee5a0e555b47bc9e5b4" mdapi_config_hash="5218add4f4b16f3db5c92225871eb44c" id="4ca0f3fe-7fd3-4924-98cb-1807d9879767" chipset="sklgt3" name="MemoryReads" />
+    <guid config_hash="2ed5869dae575556e0895b0d0081555c" mdapi_config_hash="adc8e37f86eda900faf1fdb41f5dc3ee" id="a0c0172c-ee13-403d-99ff-2bdf6936cf14" chipset="sklgt3" name="MemoryWrites" />
+    <guid config_hash="6566c55fdf1de8ae73008029a674ecc9" mdapi_config_hash="f3ce984974a95b391e835b3a75aa7813" id="52435e0b-f188-42ea-8680-21a56ee20dee" chipset="sklgt3" name="ComputeExtended" />
+    <guid config_hash="f660e82bbeca0b5d2d31a98dac8eb940" mdapi_config_hash="7b6f81c79c79fb31b0fe5eea542e479f" id="27076eeb-49f3-4fed-8423-c66506005c63" chipset="sklgt3" name="ComputeL3Cache" />
+    <guid config_hash="2c6650c2422869aa2624b26f7a7c51bc" mdapi_config_hash="1ce5fbfd5db4183dfc3ab6bf4badfd59" id="a1b8363b-b986-47b6-929a-847afde3dec8" chipset="sklgt3" name="HDCAndSF" />
+    <guid config_hash="3ead5919c426a00ef6697e21df33ef07" mdapi_config_hash="269534866dc93d83e1e5934bd4900a89" id="fa857069-7f95-44c9-a3e0-cb8ccbc35abb" chipset="sklgt3" name="L3_1" />
+    <guid config_hash="2d0a88cdba58ddf18642fde563edb4d8" mdapi_config_hash="745f63effe3156a5f358999d45bd66c6" id="9830a5f3-a5e2-4773-a49d-6371407c382a" chipset="sklgt3" name="L3_2" />
+    <guid config_hash="d3972886309fa3701f3d3ae185f57cbe" mdapi_config_hash="b46614ab9a28c8a7fe88897cd72437bd" id="59452ceb-24bb-4878-87ec-87aab7b4f9db" chipset="sklgt3" name="L3_3" />
+    <guid config_hash="90ecbd5ae5ae6d3c0f756c7411351c85" mdapi_config_hash="7d797e538b84f6682caacdfb299145d9" id="d2249ff7-34b4-4203-b474-7c11546f9dae" chipset="sklgt3" name="RasterizerAndPixelBackend" />
+    <guid config_hash="5a628cbf246226c19fed41479cf17de1" mdapi_config_hash="1db0203064f7e2f8cb02901fe29a1d33" id="c9cf7c63-0065-4226-941e-98590bad8f75" chipset="sklgt3" name="Sampler" />
+    <guid config_hash="f48609e1a79093073b96726c3c4c63a6" mdapi_config_hash="781425b1a57e4ea0010105f565567161" id="e3bb1501-89ca-43fb-8668-9d96159e10a2" chipset="sklgt3" name="TDL_1" />
+    <guid config_hash="93ab6cf80fefdfca540a3ac101925411" mdapi_config_hash="66d2a4df7b3190be8bd9643e1cb14f99" id="29194a55-7e75-4152-a71f-ef34b1ae4cca" chipset="sklgt3" name="TDL_2" />
+    <guid config_hash="3ca2784da64d161a998b7d8f6d4e0235" mdapi_config_hash="5796dcc1e154e567d7758854bb621bcb" id="2d80a648-7b5a-4e92-bbe7-3b5c76f2e221" chipset="sklgt3" name="ComputeExtra" />
+    <guid config_hash="54b2a9ae72018dd99e63c2ecd9c92901" mdapi_config_hash="6ae821fe8ac78f4b387f9eec605ac900" id="cfae9232-6ffc-42cc-a703-9790016925f0" chipset="sklgt3" name="VMEPipe" />
+    <guid config_hash="eb1f36a78ee4dc71bb9501070f3b6800" mdapi_config_hash="01fe5ee1b6d1e8e5eee460cb71eeb0d6" id="14cadcfd-fb3a-46a3-8c13-0a4f850a4b18" chipset="sklgt3" name="TestOa" />
+    <guid config_hash="6124b939906bc3cda3621544aabfd890" mdapi_config_hash="24ef7b4026d1ac159bb663946df0e9b0" id="0c5058ff-fdf4-4e0d-81fb-c0310fb76525" chipset="sklgt3" name="GpuBusyness" />
+    <guid config_hash="8ae5bda74271c473f88f13e57d6f6828" mdapi_config_hash="4d9fb617c64406cc8b372808461dd3e3" id="c889fd93-8dc7-4ba5-9451-de34a8b5ea3f" chipset="sklgt3" name="PMA_Stall" />
+    <guid config_hash="3a59319ec73eea8c3de970d027092a2b" mdapi_config_hash="ca820befa034b8cbd1ec23514e739527" id="9d8e6b6c-c6ec-4591-99b5-7d9983e10d64" chipset="sklgt3" name="AsyncCompute" />
+    <guid config_hash="0a80b2a2caa3386ecce110a7904eb1c1" mdapi_config_hash="61d002ce457b9ce087613d986e6b0544" id="95322a71-bb05-4437-bc27-f7dd7b27d136" chipset="sklgt4" name="RenderBasic" />
+    <guid config_hash="898ee42bb4b359d4c0eb97c5919cfd7f" mdapi_config_hash="d596d8f326e5378b871b825eb954e95c" id="7277228f-e7f3-4743-945a-6a2049d11377" chipset="sklgt4" name="ComputeBasic" />
+    <guid config_hash="48b5556f95fc27dceb10c65556a16613" mdapi_config_hash="95e3f2b556fe9795e0d0e0d3b0c5ee00" id="463c668c-3f60-49b6-8f85-d995b635b3b2" chipset="sklgt4" name="RenderPipeProfile" />
+    <guid config_hash="0a75401250565ee5a0e555b47bc9e5b4" mdapi_config_hash="d39a578cdf930d109c992f4abd7f83cb" id="3ae6e74c-72c3-4040-9bd0-7961430b8cc8" chipset="sklgt4" name="MemoryReads" />
+    <guid config_hash="2ed5869dae575556e0895b0d0081555c" mdapi_config_hash="603b987097b9d84c53eb55c60272b286" id="055f256d-4052-467c-8dec-6064a4806433" chipset="sklgt4" name="MemoryWrites" />
+    <guid config_hash="6566c55fdf1de8ae73008029a674ecc9" mdapi_config_hash="26c920eddaf1b7e2d58c37a96d4076bd" id="753972d4-87cd-4460-824d-754463ac5054" chipset="sklgt4" name="ComputeExtended" />
+    <guid config_hash="96d8e8d820ebad84b71c222f3c448ec5" mdapi_config_hash="182cd4a00f7a24a0c844bf9f8435419e" id="4e4392e9-8f73-457b-ab44-b49f7a0c733b" chipset="sklgt4" name="ComputeL3Cache" />
+    <guid config_hash="25ad6a99a2b00414d4747035af7fac94" mdapi_config_hash="f69a28470a231f8d0c20e3173274cf88" id="75f56991-b149-4122-ade9-d9c0c80c733b" chipset="sklgt4" name="HDCAndSF" />
+    <guid config_hash="3ead5919c426a00ef6697e21df33ef07" mdapi_config_hash="52b2279e32293bfe3cf97e443940215a" id="0d4cda70-da83-466f-b61e-7a064fe6a232" chipset="sklgt4" name="L3_1" />
+    <guid config_hash="2d0a88cdba58ddf18642fde563edb4d8" mdapi_config_hash="1541624f29b55f8abf422eaa813657e7" id="20137ace-b110-4341-883f-1094c820093c" chipset="sklgt4" name="L3_2" />
+    <guid config_hash="d3972886309fa3701f3d3ae185f57cbe" mdapi_config_hash="c734154b7a9bd205b8bfb176211873c3" id="d3a6b05e-46ef-44a8-96c3-9bd3e58acbe6" chipset="sklgt4" name="L3_3" />
+    <guid config_hash="90ecbd5ae5ae6d3c0f756c7411351c85" mdapi_config_hash="0fbb2b2f53429b0a25a6628c1fb21b32" id="4081b948-63f1-4b1a-abaa-6017cb77a63b" chipset="sklgt4" name="RasterizerAndPixelBackend" />
+    <guid config_hash="5a628cbf246226c19fed41479cf17de1" mdapi_config_hash="032dea8a40f7c0bbe2c9e0a238df248d" id="eae6bbb1-0e2b-478d-bd9e-f10ded2178f9" chipset="sklgt4" name="Sampler" />
+    <guid config_hash="f48609e1a79093073b96726c3c4c63a6" mdapi_config_hash="39a8e4da917b0874b8e697f203a641ff" id="1bba4bd2-81d4-45ec-847f-bc363e17e14d" chipset="sklgt4" name="TDL_1" />
+    <guid config_hash="93ab6cf80fefdfca540a3ac101925411" mdapi_config_hash="60b1253d54ce38bb6678d9a3eaa10305" id="a4b3106c-cfec-49f5-8e26-470470379e66" chipset="sklgt4" name="TDL_2" />
+    <guid config_hash="19cb1c38ee83566f630015215532efa5" mdapi_config_hash="f9ae90355e5abe786bf5e81f1c4222c0" id="a5aa857d-e8f0-4dfa-8981-ce340fa748fd" chipset="sklgt4" name="ComputeExtra" />
+    <guid config_hash="b28f9fef3bf5699c217d634bffa57fbc" mdapi_config_hash="cafc4d5abc6807434093d4f47fe83292" id="0e8d8b86-4ee7-4cdd-aaaa-58adc92cb29e" chipset="sklgt4" name="VMEPipe" />
+    <guid config_hash="eb1f36a78ee4dc71bb9501070f3b6800" mdapi_config_hash="def0e0e3844a4909fa0dec2f8a9f2ca0" id="c1c2d40e-652a-482c-98fc-28bdb7c6ee44" chipset="sklgt4" name="TestOa" />
+    <guid config_hash="6124b939906bc3cda3621544aabfd890" mdapi_config_hash="24ef7b4026d1ac159bb663946df0e9b0" id="4e5b1599-5b01-4b3d-89fa-6b26a25fe02b" chipset="sklgt4" name="GpuBusyness" />
+    <guid config_hash="8ae5bda74271c473f88f13e57d6f6828" mdapi_config_hash="4d9fb617c64406cc8b372808461dd3e3" id="befe9fd6-474e-4a3d-b98e-cd793715cf91" chipset="sklgt4" name="PMA_Stall" />
+    <guid config_hash="3a59319ec73eea8c3de970d027092a2b" mdapi_config_hash="ca820befa034b8cbd1ec23514e739527" id="796044f3-8f9d-4439-ab2c-aca5b046a1ef" chipset="sklgt4" name="AsyncCompute" />
+    <guid config_hash="afbe2cb999a8303f52eea075f3b8687e" mdapi_config_hash="966416aaaf33b0bce90c0daa51217242" id="99c1a40e-a090-4354-86e3-4d068bb1917e" chipset="kblgt2" name="RenderBasic" />
+    <guid config_hash="b1268f0f246efc7ab27f7637fa7193e8" mdapi_config_hash="c72d95bf362111446018c52210ec48b6" id="12994724-3a5a-4303-bb3c-ba0175d2c200" chipset="kblgt2" name="ComputeBasic" />
+    <guid config_hash="01f86f590b9b0c0371b0075a5e73b902" mdapi_config_hash="7ee27e7f11eea3282e62abde604b61a2" id="d7a17a3a-ca71-40d2-a919-ace80d50633f" chipset="kblgt2" name="RenderPipeProfile" />
+    <guid config_hash="0a75401250565ee5a0e555b47bc9e5b4" mdapi_config_hash="0779bba85f8be3baef98ecc5c66fd369" id="57b59202-172b-477a-87de-33f85572c589" chipset="kblgt2" name="MemoryReads" />
+    <guid config_hash="2ed5869dae575556e0895b0d0081555c" mdapi_config_hash="26eb749438ad7d42e34342048c1019c5" id="3addf8ef-8e9b-40f5-a448-3dbb5d5128b0" chipset="kblgt2" name="MemoryWrites" />
+    <guid config_hash="6566c55fdf1de8ae73008029a674ecc9" mdapi_config_hash="aa2dd4e7d446e3ce29dfeaf8f393243e" id="4af0400a-81c3-47db-a6b6-deddbd75680e" chipset="kblgt2" name="ComputeExtended" />
+    <guid config_hash="33bdd2160049aa831e025e1be7a453c5" mdapi_config_hash="2770df840fca647230d55b79f686ae11" id="0e22f995-79ca-4f67-83ab-e9d9772488d8" chipset="kblgt2" name="ComputeL3Cache" />
+    <guid config_hash="5736948ed298fd6e8cc80222e1e03077" mdapi_config_hash="c056251351b0b1f5beb4f6863484854b" id="fb149d66-fad2-4230-b0d7-4d689b9116d3" chipset="kblgt2" name="HDCAndSF" />
+    <guid config_hash="3ead5919c426a00ef6697e21df33ef07" mdapi_config_hash="17d38bff109de8e5622ff29bead0bbcf" id="f889f8cc-4c93-4ac8-b75f-551c0b9b87f7" chipset="kblgt2" name="L3_1" />
+    <guid config_hash="2d0a88cdba58ddf18642fde563edb4d8" mdapi_config_hash="1a88f6816aea2c42dae9f10d4233cb74" id="6d344efd-8e9e-42d4-a29e-1011c29f82c2" chipset="kblgt2" name="L3_2" />
+    <guid config_hash="d3972886309fa3701f3d3ae185f57cbe" mdapi_config_hash="ae28a594b1a6fd3864272da8dbe873f5" id="e3b386ae-c195-47d5-af29-8a1afa0ae2bf" chipset="kblgt2" name="L3_3" />
+    <guid config_hash="90ecbd5ae5ae6d3c0f756c7411351c85" mdapi_config_hash="d1b2421e43a489ffcdfeeaf271b2f12f" id="f9954679-a055-4862-9f57-9d66e3ebf81c" chipset="kblgt2" name="RasterizerAndPixelBackend" />
+    <guid config_hash="5a628cbf246226c19fed41479cf17de1" mdapi_config_hash="8d5f977be4f4d21e97e9e67786958495" id="4ed5e27e-fd1a-4f11-ad8f-9374e128c697" chipset="kblgt2" name="Sampler" />
+    <guid config_hash="f48609e1a79093073b96726c3c4c63a6" mdapi_config_hash="cbef2ea0f1c6e30bd37cea22a87e8373" id="9eaf384d-8f53-41b8-a71d-108308780fbc" chipset="kblgt2" name="TDL_1" />
+    <guid config_hash="93ab6cf80fefdfca540a3ac101925411" mdapi_config_hash="b685ab8fe6fc020e85f189f55fdf6e05" id="a00cbdf2-eabd-4240-9a89-86e2ac1ca1e4" chipset="kblgt2" name="TDL_2" />
+    <guid config_hash="483a06910590c1753a0266ef8b9f9b70" mdapi_config_hash="4be337ed83e3c95aebf66553ed685602" id="aa7a3fb9-22fb-43ff-a32d-0ab6c13bbd16" chipset="kblgt2" name="ComputeExtra" />
+    <guid config_hash="784698b7fb41dad7bc4bf13fac46657b" mdapi_config_hash="2fe32bdaf82fc66774ee95c33a23ea88" id="398a4268-ef6f-4ffc-b55f-3c7b5363ce61" chipset="kblgt2" name="VMEPipe" />
+    <guid config_hash="eb1f36a78ee4dc71bb9501070f3b6800" mdapi_config_hash="451756d65e43fb07a5f589ccaed0819d" id="cd4b577b-073a-423f-a948-e198dd818c71" chipset="kblgt2" name="TestOa" />
+    <guid config_hash="d36b63d76294172be0ad5e6530109d06" mdapi_config_hash="aa4c1ab961a066b0bc98bf914735b6af" id="6c66fe6e-2988-454a-bfae-7fca3bbcbec2" chipset="kblgt2" name="GpuBusyness" />
+    <guid config_hash="8ae5bda74271c473f88f13e57d6f6828" mdapi_config_hash="4d9fb617c64406cc8b372808461dd3e3" id="b49aa434-4958-4d98-9e6f-443ff27ca74d" chipset="kblgt2" name="PMA_Stall" />
+    <guid config_hash="3a59319ec73eea8c3de970d027092a2b" mdapi_config_hash="ca820befa034b8cbd1ec23514e739527" id="4032137b-8dcc-4f3f-912d-c0bb14a123bc" chipset="kblgt2" name="AsyncCompute" />
+    <guid config_hash="73805d7acd1298aa6d81d3e2278ee411" mdapi_config_hash="9111e46468492c1c14a331510c18a49b" id="17b4f3e0-d578-4ae3-b7a8-98d756d1e0df" chipset="kblgt3" name="RenderBasic" />
+    <guid config_hash="b1268f0f246efc7ab27f7637fa7193e8" mdapi_config_hash="ac97e9ebaf2a55476a86ab2559e5ecab" id="a5dc0bc5-d6fa-4f3a-9979-d3248c786042" chipset="kblgt3" name="ComputeBasic" />
+    <guid config_hash="01f86f590b9b0c0371b0075a5e73b902" mdapi_config_hash="808e46d786103380f58d1e8f91402c4c" id="c7c735f3-ce58-45cf-aa04-30b183f1faff" chipset="kblgt3" name="RenderPipeProfile" />
+    <guid config_hash="0a75401250565ee5a0e555b47bc9e5b4" mdapi_config_hash="f810d7343822b3a3b9e50820708bfcb3" id="96ec2219-040b-428a-856a-6bc03363a057" chipset="kblgt3" name="MemoryReads" />
+    <guid config_hash="2ed5869dae575556e0895b0d0081555c" mdapi_config_hash="af6cd36da93a8ec66d57ba6b504b601f" id="03372b64-4996-4d3b-aa18-790e75eeb9c2" chipset="kblgt3" name="MemoryWrites" />
+    <guid config_hash="6566c55fdf1de8ae73008029a674ecc9" mdapi_config_hash="c4d070800ff5b65caff35d40adb52d04" id="31b4ce5a-bd61-4c1f-bb5d-f2e731412150" chipset="kblgt3" name="ComputeExtended" />
+    <guid config_hash="33bdd2160049aa831e025e1be7a453c5" mdapi_config_hash="dcedeef0d1a6b20eaa3f3ee546b048ed" id="2ce0911a-27fc-4887-96f0-11084fa807c3" chipset="kblgt3" name="ComputeL3Cache" />
+    <guid config_hash="c8739d6465605b9228ec2ff3ebde2ba3" mdapi_config_hash="3a893043b806be4b00179663f8f4695e" id="b128f45f-bfa2-4991-aadc-05be7898e398" chipset="kblgt3" name="HDCAndSF" />
+    <guid config_hash="3ead5919c426a00ef6697e21df33ef07" mdapi_config_hash="b97b4654b688f69b1df22e7d9cd08f2b" id="f3566b55-9c13-47bf-8327-4a887af75262" chipset="kblgt3" name="L3_1" />
+    <guid config_hash="2d0a88cdba58ddf18642fde563edb4d8" mdapi_config_hash="f8870bc48196bdc7c3d08bf0dba3e377" id="7b21aa68-9076-4ab4-8a84-e45a06c8eac6" chipset="kblgt3" name="L3_2" />
+    <guid config_hash="d3972886309fa3701f3d3ae185f57cbe" mdapi_config_hash="2091a23cf2f835375430e16328f73c7b" id="71b4b9dd-ae28-48ce-9a1a-5431e1f23afd" chipset="kblgt3" name="L3_3" />
+    <guid config_hash="90ecbd5ae5ae6d3c0f756c7411351c85" mdapi_config_hash="6c748481e5e43019bbeb0557c309b65e" id="52c646ca-52da-4853-877e-8645e73ed330" chipset="kblgt3" name="RasterizerAndPixelBackend" />
+    <guid config_hash="5a628cbf246226c19fed41479cf17de1" mdapi_config_hash="c1ea12cf95f7c8be3ca32c6670c15a27" id="c4bb682f-677c-4875-990b-005230be87b4" chipset="kblgt3" name="Sampler" />
+    <guid config_hash="f48609e1a79093073b96726c3c4c63a6" mdapi_config_hash="20f9812e7c1c94a2b24dbb6a0596b5e1" id="ade8521b-5e72-45d4-8c25-d9f0da774899" chipset="kblgt3" name="TDL_1" />
+    <guid config_hash="93ab6cf80fefdfca540a3ac101925411" mdapi_config_hash="25e39a0a38a1fdbf4e2ff677aad30fc6" id="9df2815d-4e9e-417f-bde1-3788dc6e1ea1" chipset="kblgt3" name="TDL_2" />
+    <guid config_hash="f543908db2541ef48f35603e35c379bd" mdapi_config_hash="41ebe4b58e504d63d60141faa9d45c18" id="efc497ac-884e-4ee4-a4a8-15fba22aaf21" chipset="kblgt3" name="ComputeExtra" />
+    <guid config_hash="16c6718fd82aaa5e1187df8d88ace152" mdapi_config_hash="d0ce6de1ad831394a048015990e82864" id="bfd9764d-2c5b-4c16-bfc1-89de3ca10917" chipset="kblgt3" name="VMEPipe" />
+    <guid config_hash="eb1f36a78ee4dc71bb9501070f3b6800" mdapi_config_hash="befeffb33cb10b61a2f4f0d3d563ab74" id="bb3344bf-2551-40f7-b75f-cbf29e4195f7" chipset="kblgt3" name="TestOa" />
+    <guid config_hash="de8530fdc36d260415e78771e8cc6929" mdapi_config_hash="3f82064fe17d6d7005b6e5c4bb828c5a" id="b55ecba1-2aa9-422e-89ff-b9e30f03d447" chipset="kblgt3" name="GpuBusyness" />
+    <guid config_hash="8ae5bda74271c473f88f13e57d6f6828" mdapi_config_hash="4d9fb617c64406cc8b372808461dd3e3" id="85bc2e4f-2563-4388-921b-dc0dad879cf3" chipset="kblgt3" name="PMA_Stall" />
+    <guid config_hash="3a59319ec73eea8c3de970d027092a2b" mdapi_config_hash="ca820befa034b8cbd1ec23514e739527" id="8d6d28f5-f699-4eec-89f7-216956bf2ed5" chipset="kblgt3" name="AsyncCompute" />
+    <guid config_hash="c01efa1ec2a11ea9aaab8b0a8e548174" mdapi_config_hash="7867725687bd177e4e8b8b8443b04355" id="d72df5c7-5b4a-4274-a43f-00b0fd51fc68" chipset="glk" name="RenderBasic" />
+    <guid config_hash="cde046a01aba9c56d6fa44bf2c0f26c2" mdapi_config_hash="84d270fda538f1061067316b19b9cac9" id="814285f6-354d-41d2-ba49-e24e622714a0" chipset="glk" name="ComputeBasic" />
+    <guid config_hash="1669463a6836f6d057cbf3e41506923b" mdapi_config_hash="66b8f785edc91d1cf3952fc842114671" id="07d397a6-b3e6-49f6-9433-a4f293d55978" chipset="glk" name="RenderPipeProfile" />
+    <guid config_hash="f9eee3f0c9653ffd05e4876be0ea44d5" mdapi_config_hash="1056f30306a4c2d08d57e4faa86f983a" id="1a356946-5428-450b-a2f0-89f8783a302d" chipset="glk" name="MemoryReads" />
+    <guid config_hash="03e840f1d8597b3c6c4015792243ce7d" mdapi_config_hash="3a432ab2a6296f25755c1846385fae55" id="5299be9d-7a61-4c99-9f81-f87e6c5aaca9" chipset="glk" name="MemoryWrites" />
+    <guid config_hash="39a03c065f1fdb5bf680207dc520cdb2" mdapi_config_hash="ed01dd3479766a5fb38dd8e9e064786e" id="bc9bcff2-459a-4cbc-986d-a84b077153f3" chipset="glk" name="ComputeExtended" />
+    <guid config_hash="c241c2999f487dc995cecdb35b01197b" mdapi_config_hash="3a74134eedb02e201197da17e0940351" id="88ec931f-5b4a-453a-9db6-a61232b6143d" chipset="glk" name="ComputeL3Cache" />
+    <guid config_hash="37dc8ae76c2554b11ecea682f1349ece" mdapi_config_hash="fd61133e8762cb61d142a12604442177" id="0329ea02-ebb8-43f1-bf89-c5bdcccd3eb4" chipset="glk" name="HDCAndSF" />
+    <guid config_hash="d159b7f14e97660ae2887e4b610d2721" mdapi_config_hash="fe48f1232b010e9d10ab1bff0e6efb75" id="5e57a25a-1d18-4e94-b84b-08ea66751b8c" chipset="glk" name="L3_1" />
+    <guid config_hash="1dc29cbbceb8e2e1a78d679ead80a27b" mdapi_config_hash="2a635538209cc68b2c489d2326017539" id="f0652373-d361-426f-b36d-9ffec288bdc6" chipset="glk" name="RasterizerAndPixelBackend" />
+    <guid config_hash="0b9e45ed32513193354be363e288b6a6" mdapi_config_hash="593e37453b96243ac7752d9c45672c63" id="6ac97d12-ce13-428a-b20c-6902bde2608b" chipset="glk" name="Sampler" />
+    <guid config_hash="3f01b8d28fa285e7a496081574de4c1b" mdapi_config_hash="af87c7792e604a645dacdadb99c4afd2" id="59ea703a-9a35-4aed-a985-0d9ab7aceaba" chipset="glk" name="TDL_1" />
+    <guid config_hash="0c77cba2d8886c18df9f382ce90eac66" mdapi_config_hash="2e2beadb54378ff4d79bf4cf15bffd90" id="f2d6d718-e7b1-48f4-9624-45230d2fe2a0" chipset="glk" name="TDL_2" />
+    <guid config_hash="a19a55aad269ccc1ed4380314eda4bed" mdapi_config_hash="ac34c2028f3f4fae92e58aae1496901b" id="15274c82-27d2-4819-876a-7cb1a2c59ba4" chipset="glk" name="ComputeExtra" />
+    <guid config_hash="e018d083414e4d28e0ed481554128883" mdapi_config_hash="dce59e977ffff25a57f2486f5d9a7c60" id="dd3fd789-e783-4204-8cd0-b671bbccb0cf" chipset="glk" name="TestOa" />
+    <guid config_hash="6d13f443205926fd1351ae5adeae8965" mdapi_config_hash="24f384a77963d7d64c324b3d89eeb498" id="e6868953-fb47-431d-a060-f785916558fc" chipset="glk" name="PMA_Stall" />
+    <guid config_hash="afbe2cb999a8303f52eea075f3b8687e" mdapi_config_hash="8e8f1f5eb1b0a95dada8e3ddd78f4dd8" id="7fa796a4-0c7a-4201-afc6-cff0b2f528a2" chipset="cflgt2" name="RenderBasic" />
+    <guid config_hash="b1268f0f246efc7ab27f7637fa7193e8" mdapi_config_hash="87718bbf001284c0ca7c0e8060ebe6c6" id="a4985100-5f76-4822-8ca7-67908cb26274" chipset="cflgt2" name="ComputeBasic" />
+    <guid config_hash="01f86f590b9b0c0371b0075a5e73b902" mdapi_config_hash="f9a35b936db9a2f76b69d7b5bd5d10ec" id="2221e4d5-ed7b-445e-b2cc-3de1b97f4d42" chipset="cflgt2" name="RenderPipeProfile" />
+    <guid config_hash="0a75401250565ee5a0e555b47bc9e5b4" mdapi_config_hash="8b1e5617e61646d7d7d0361107ec2b67" id="82096a90-e2fa-4f38-ac14-562b2496933a" chipset="cflgt2" name="MemoryReads" />
+    <guid config_hash="2ed5869dae575556e0895b0d0081555c" mdapi_config_hash="2cd637a11aacc15af119c9dba70c5f1d" id="9f638880-02e9-4a8d-896a-7670a3bf0d35" chipset="cflgt2" name="MemoryWrites" />
+    <guid config_hash="6566c55fdf1de8ae73008029a674ecc9" mdapi_config_hash="5311aa266d0d85e7b67695731408ec3e" id="8d4ad934-7c16-43d5-845a-51067a4c8e2f" chipset="cflgt2" name="ComputeExtended" />
+    <guid config_hash="33bdd2160049aa831e025e1be7a453c5" mdapi_config_hash="019cd29f8fe235d7dca74e7860dafc08" id="4389cf07-1424-4963-b2d2-64fcec75406d" chipset="cflgt2" name="ComputeL3Cache" />
+    <guid config_hash="5736948ed298fd6e8cc80222e1e03077" mdapi_config_hash="4118768c8cfd35668067034b646a99ea" id="ac544b3a-ff78-46ea-9808-ee6fef0978b4" chipset="cflgt2" name="HDCAndSF" />
+    <guid config_hash="3ead5919c426a00ef6697e21df33ef07" mdapi_config_hash="fe8bb34c7f8bb873a55e7b7046ec4507" id="a35c5867-0ab8-4d45-8fc1-eb0906f0eff5" chipset="cflgt2" name="L3_1" />
+    <guid config_hash="2d0a88cdba58ddf18642fde563edb4d8" mdapi_config_hash="d4b1fe90832f2ab808b5dc6d6f2de431" id="bb4bcce9-2cbb-4818-9e49-67ce2c99cd25" chipset="cflgt2" name="L3_2" />
+    <guid config_hash="d3972886309fa3701f3d3ae185f57cbe" mdapi_config_hash="0a733ec395a9f95c9a4c7a53639352aa" id="9e1229f8-d87f-4f44-b067-3544e17195aa" chipset="cflgt2" name="L3_3" />
+    <guid config_hash="90ecbd5ae5ae6d3c0f756c7411351c85" mdapi_config_hash="86e99a03089772a7bff973a24bbcb21f" id="3e91908a-1c70-4004-b2ab-a10ef14f24f9" chipset="cflgt2" name="RasterizerAndPixelBackend" />
+    <guid config_hash="5a628cbf246226c19fed41479cf17de1" mdapi_config_hash="07cab9aa8c9c07b346ce2e8976ef87fa" id="9a6ba957-7955-4a09-a8ce-083030ba3c1f" chipset="cflgt2" name="Sampler" />
+    <guid config_hash="f48609e1a79093073b96726c3c4c63a6" mdapi_config_hash="8e2985ac9a60942987f94a397bfeb2ff" id="c54e7ca3-c60c-4396-ac3d-f9899c9a6ee4" chipset="cflgt2" name="TDL_1" />
+    <guid config_hash="93ab6cf80fefdfca540a3ac101925411" mdapi_config_hash="775f1d07ed4d225976adf356e8dc9df5" id="e438cd5d-1da7-46c6-9823-4780f370d11d" chipset="cflgt2" name="TDL_2" />
+    <guid config_hash="483a06910590c1753a0266ef8b9f9b70" mdapi_config_hash="4be337ed83e3c95aebf66553ed685602" id="5f679fb0-909e-4c0e-b4b2-8e801f83e71b" chipset="cflgt2" name="ComputeExtra" />
+    <guid config_hash="784698b7fb41dad7bc4bf13fac46657b" mdapi_config_hash="2fe32bdaf82fc66774ee95c33a23ea88" id="0d09ba9a-1d1c-457d-83e2-74ac448014d6" chipset="cflgt2" name="VMEPipe" />
+    <guid config_hash="d36b63d76294172be0ad5e6530109d06" mdapi_config_hash="aa4c1ab961a066b0bc98bf914735b6af" id="e2f162ae-5732-4af0-8b11-69510f57094a" chipset="cflgt2" name="GpuBusyness" />
+    <guid config_hash="eb1f36a78ee4dc71bb9501070f3b6800" mdapi_config_hash="451756d65e43fb07a5f589ccaed0819d" id="d3c99326-e161-4e44-9745-7772bdc579c5" chipset="cflgt2" name="TestOa" />
+    <guid config_hash="8ae5bda74271c473f88f13e57d6f6828" mdapi_config_hash="4d9fb617c64406cc8b372808461dd3e3" id="5ccbf9fb-6bf2-456b-a749-bdff7b1aff13" chipset="cflgt2" name="PMA_Stall" />
+    <guid config_hash="3a59319ec73eea8c3de970d027092a2b" mdapi_config_hash="ca820befa034b8cbd1ec23514e739527" id="9802484e-5e21-4ad3-8060-12b7f3bb81fe" chipset="cflgt2" name="AsyncCompute" />
+    <guid config_hash="73805d7acd1298aa6d81d3e2278ee411" mdapi_config_hash="5d3d4bcf1e36569409cfd84a7e137ade" id="b316bcab-212f-4228-97de-af6b5a1a2ea1" chipset="cflgt3" name="RenderBasic" />
+    <guid config_hash="b1268f0f246efc7ab27f7637fa7193e8" mdapi_config_hash="4a9628256274ffe348e8dc21f0f22f3b" id="d2eec5b1-4dd8-4170-ae83-9531abd0692f" chipset="cflgt3" name="ComputeBasic" />
+    <guid config_hash="01f86f590b9b0c0371b0075a5e73b902" mdapi_config_hash="498feca145a69e7fcec55b79d239d005" id="9875e050-b1bc-45e6-a6ab-665594601df9" chipset="cflgt3" name="RenderPipeProfile" />
+    <guid config_hash="0a75401250565ee5a0e555b47bc9e5b4" mdapi_config_hash="610a6fcb593c50362beb8c0e2172685a" id="49c65f34-e625-4ca4-86b7-88693e624d4c" chipset="cflgt3" name="MemoryReads" />
+    <guid config_hash="2ed5869dae575556e0895b0d0081555c" mdapi_config_hash="d3b21fcad90e080ef31d74b9ebd6f9ba" id="45c9e8ee-2998-4d83-88e8-9cb7e03287bf" chipset="cflgt3" name="MemoryWrites" />
+    <guid config_hash="6566c55fdf1de8ae73008029a674ecc9" mdapi_config_hash="7c26cd39edceac6865beb355592d2bea" id="bac415ce-d7a2-4f8d-9b16-834deba7330e" chipset="cflgt3" name="ComputeExtended" />
+    <guid config_hash="33bdd2160049aa831e025e1be7a453c5" mdapi_config_hash="1013698045cad3a9935f5cd76ceb8331" id="a8cfca44-0e74-4338-9e57-3daad98957dd" chipset="cflgt3" name="ComputeL3Cache" />
+    <guid config_hash="c8739d6465605b9228ec2ff3ebde2ba3" mdapi_config_hash="6c4d2ca081899cddb7c730b7c9e11b35" id="c4bee67c-0de6-4bc2-9900-5388dcc8adca" chipset="cflgt3" name="HDCAndSF" />
+    <guid config_hash="3ead5919c426a00ef6697e21df33ef07" mdapi_config_hash="74d87a1c8c2eb43fc0d481a88e635cc4" id="2f77a650-54a6-4777-98dc-e49000c13ceb" chipset="cflgt3" name="L3_1" />
+    <guid config_hash="2d0a88cdba58ddf18642fde563edb4d8" mdapi_config_hash="e2ccd67d442ca19acc63a9b3556ce2cb" id="61cf6b31-9ddd-4deb-bae5-7339dd1f63b3" chipset="cflgt3" name="L3_2" />
+    <guid config_hash="d3972886309fa3701f3d3ae185f57cbe" mdapi_config_hash="fda9efbaddee05cf0c58b0b5ba63267a" id="1421ea8b-a4c9-4383-922a-60ba96c42f24" chipset="cflgt3" name="L3_3" />
+    <guid config_hash="90ecbd5ae5ae6d3c0f756c7411351c85" mdapi_config_hash="04d6c2564113599d8375138bcf87e0a5" id="6e1f0a90-c65f-4da9-86d0-c79b3c0063f6" chipset="cflgt3" name="RasterizerAndPixelBackend" />
+    <guid config_hash="5a628cbf246226c19fed41479cf17de1" mdapi_config_hash="9aa750e153f190ac1aeb54a87f778c8f" id="7cb05eab-0857-4189-93bc-09326d298637" chipset="cflgt3" name="Sampler" />
+    <guid config_hash="f48609e1a79093073b96726c3c4c63a6" mdapi_config_hash="88333263dd73a05cb7df643794d2eefa" id="05a06d02-0c12-486b-bb1d-9be053848980" chipset="cflgt3" name="TDL_1" />
+    <guid config_hash="93ab6cf80fefdfca540a3ac101925411" mdapi_config_hash="6750a43049c53c8cb8f966764bf7cf8f" id="cddbd1dc-41a2-4fe4-8b05-3d2773120814" chipset="cflgt3" name="TDL_2" />
+    <guid config_hash="f543908db2541ef48f35603e35c379bd" mdapi_config_hash="e3197d98aa86acaf090f1bffde854586" id="e61ae394-9d9e-4204-a735-1dad7e44d953" chipset="cflgt3" name="ComputeExtra" />
+    <guid config_hash="16c6718fd82aaa5e1187df8d88ace152" mdapi_config_hash="d0ce6de1ad831394a048015990e82864" id="94272ad9-45ee-4e34-b7a7-51546cd6405c" chipset="cflgt3" name="VMEPipe" />
+    <guid config_hash="de8530fdc36d260415e78771e8cc6929" mdapi_config_hash="3f82064fe17d6d7005b6e5c4bb828c5a" id="22b7e0c2-cade-425f-b099-34479768c72a" chipset="cflgt3" name="GpuBusyness" />
+    <guid config_hash="eb1f36a78ee4dc71bb9501070f3b6800" mdapi_config_hash="b70188988f7ceb0160bd5eb7ca93559b" id="f240ef8d-4a2e-4961-a63c-cc43b01ed923" chipset="cflgt3" name="TestOa" />
+    <guid config_hash="8ae5bda74271c473f88f13e57d6f6828" mdapi_config_hash="4d9fb617c64406cc8b372808461dd3e3" id="c11af8d1-858b-4f8b-98fb-8d683ba8bda0" chipset="cflgt3" name="PMA_Stall" />
+    <guid config_hash="3a59319ec73eea8c3de970d027092a2b" mdapi_config_hash="ca820befa034b8cbd1ec23514e739527" id="0c824ec1-af53-4545-84a3-ede5e3572fc1" chipset="cflgt3" name="AsyncCompute" />
+    <guid config_hash="428ad0859c9dac4ba85dd73106f5b2de" mdapi_config_hash="7baf473e87d0838b628bd2ed289f4783" id="2d975e19-7130-41d2-b06f-79d74f91e7c8" chipset="cnl" name="RenderBasic" />
+    <guid config_hash="53907f43dc0faf4be0bbf614302f4fb3" mdapi_config_hash="b5b46b9273e54ffc6e1959b61bbc3a25" id="0b128ae2-ed06-481e-afe3-2404aab91415" chipset="cnl" name="ComputeBasic" />
+    <guid config_hash="1878c620a9f0cc5100fba47c83a1457c" mdapi_config_hash="f1baa55e099488db74fd02c9560df40b" id="0666ccac-f5aa-4dc2-aa12-c6e058f383f3" chipset="cnl" name="RenderPipeProfile" />
+    <guid config_hash="10d83436d03f71bc19e6b83739072556" mdapi_config_hash="7f0796f55071a69b76c0a0615b2171e6" id="3500dcfd-837b-4ec8-b5cf-fe58b966263f" chipset="cnl" name="MemoryReads" />
+    <guid config_hash="e1c4bd09bd777f97d6c6491bf921ec6b" mdapi_config_hash="92754b4c69ef3427efdee08033daf7e2" id="63d18ead-3cfc-4972-a640-5e98b688dfee" chipset="cnl" name="MemoryWrites" />
+    <guid config_hash="01c5575fa201196b2a4b708001ef810f" mdapi_config_hash="f7fc9c2349a53c37bd020660a0990356" id="1b4d1280-6bbd-4d57-90c6-a03ed6059688" chipset="cnl" name="ComputeExtended" />
+    <guid config_hash="21c0efc6587cd42844e23251b3712b72" mdapi_config_hash="c3d136f1cda81821d08595bc4c29973a" id="f3b31b5a-00b3-4fb4-81fd-6446e505534c" chipset="cnl" name="ComputeL3Cache" />
+    <guid config_hash="0813a24fac91efc4f1dfb7dbb578f08d" mdapi_config_hash="417896f2fec55d50f844eb2344287731" id="890094c5-8615-4f69-a8b9-706c5bcbd713" chipset="cnl" name="HDCAndSF" />
+    <guid config_hash="fb9e04dafcf3519c30c215cb2094a881" mdapi_config_hash="65bd9bbb664fd329464d18e07dd9ac47" id="e56f7dd7-ff55-4bae-89a1-a526a2e3b0d6" chipset="cnl" name="L3_1" />
+    <guid config_hash="28ade5f07e44ef07814f7a307a06470c" mdapi_config_hash="24f525009f45d22253ff7c09951733c9" id="918834e2-a1a4-4d77-9f3a-0c229f8d803f" chipset="cnl" name="L3_2" />
+    <guid config_hash="7f9fb1f70df8efb8cbd236ee8920c349" mdapi_config_hash="20e9d5975e60292c3aaecfc766d2d960" id="2e95713a-c6d8-47a9-9207-eba3e208be51" chipset="cnl" name="RasterizerAndPixelBackend" />
+    <guid config_hash="c6bda99f4d7656d8b1b613c17c2d53da" mdapi_config_hash="2c48df889c497b3f97d5a350827d8f05" id="9bcf4ff2-c15f-4bea-8ec8-8db87791942e" chipset="cnl" name="Sampler" />
+    <guid config_hash="4bfffb81b9376af931bad919fc66ef3f" mdapi_config_hash="33d7ba5d98519f3038ed07f273fe5f91" id="c46c7bb5-f26d-4634-b491-902394af85b1" chipset="cnl" name="TDL_1" />
+    <guid config_hash="e5419b6c232500a6a824c2c58f3b7d32" mdapi_config_hash="b9a01044b9befe9fcf952f26ba4fcc4e" id="aa2d6ab4-99b3-42f8-94d6-4a9aa2baedaf" chipset="cnl" name="TDL_2" />
+    <guid config_hash="ebd014335c55b7be47615354eecae7a5" mdapi_config_hash="21595af7d9d76b7f414c744aeaddbe1d" id="99517a69-b9a7-4124-8f59-06645ea13187" chipset="cnl" name="TestOa" />
+    <guid config_hash="463b3bb46dec1a41472c2a728142ff56" mdapi_config_hash="f29cb304efd62d8712b594d864c6ab86" id="e3cd52cf-c6b0-4019-b369-3bc9c75a0cbc" chipset="icl" name="RenderBasic" />
+    <guid config_hash="f954c414bda0c5cd1b012a3e747be6e9" mdapi_config_hash="59d2e72aefb55a9180a7a7cd5b629e41" id="04546170-d541-4804-96f8-007a454a3f2c" chipset="icl" name="ComputeBasic" />
+    <guid config_hash="3b6635eb3709f346076901ea88ec1f2b" mdapi_config_hash="402f156b276dfaaaf84eb09ec5347515" id="43eb7fc1-dc5e-45e2-a90a-0053f5397271" chipset="icl" name="ComputeExtended" />
+    <guid config_hash="0e47ea7e90aac987097968a231d2dada" mdapi_config_hash="08ff26b1c2405cc1061e71940cf558b5" id="05d5e01f-0800-4975-b36b-7b169cad3fab" chipset="icl" name="ComputeL3Cache" />
+    <guid config_hash="34c5bc89788487e6d32ea9894929b1ae" mdapi_config_hash="0b8dc07dcfe3a03bf65771ee8404fa10" id="03c7a167-2abc-4ba6-878a-f1d80082abca" chipset="icl" name="RenderPipeProfile" />
+    <guid config_hash="dfb00108bfdc1c652f9550bf5ec9262f" mdapi_config_hash="9b4b61a06cf60de356d48995441e6724" id="c5cbc488-6569-41dd-9128-42bf6f0d317c" chipset="icl" name="HDCAndSF" />
+    <guid config_hash="8818a97d48d99673e220075b0ba71eb3" mdapi_config_hash="d3e8cc994e923fc2f79f086273b62ece" id="0316ce4f-e03f-4738-8262-13528fce8eea" chipset="icl" name="RasterizerAndPixelBackend" />
+    <guid config_hash="e1436790af3b1bbea5a0262704c213b1" mdapi_config_hash="7b7377687e294a3c2ee88e0715a65f01" id="21d69ec3-91e1-48a8-acd6-c0c4ec6e819a" chipset="icl" name="L3_1" />
+    <guid config_hash="5ef586cc746e34ab542586805cb26c8e" mdapi_config_hash="06190180046d22f3155558f2211abc30" id="e60e9155-6830-4aec-baf2-1c3c15a73869" chipset="icl" name="L3_2" />
+    <guid config_hash="abdae7b3820fd860c6fec7a98f9654bf" mdapi_config_hash="5cf54f89d0c9ebeeebc46bfde154fdf2" id="47c364d5-1799-4d17-9447-add9358c6451" chipset="icl" name="L3_3" />
+    <guid config_hash="8b3ca983367a86a4dc4c80fe2a4cfbbb" mdapi_config_hash="397319e33a2d28c3602837be8737b559" id="e5ab5c08-3130-4469-8eaf-b23d3dc817d4" chipset="icl" name="L3_4" />
+    <guid config_hash="c5b76b0b898d48bd6305b7208f338584" mdapi_config_hash="9870c08d2dbb2de9836e8effdc5074a8" id="6cdf23c1-f725-414c-959a-c90fa5571b1f" chipset="icl" name="L3_5" />
+    <guid config_hash="667224b11f675b2ac565e18624fad738" mdapi_config_hash="e49091662060a5c502da58bd613abc7f" id="51a2eb6d-9fad-4489-8f22-ab845fe7882a" chipset="icl" name="Sampler_1" />
+    <guid config_hash="e6910b0739c288d68194e64933845380" mdapi_config_hash="d55ee03d24efe992a4029534908c2550" id="afc0f021-8c33-4d60-803d-93487f96c7c1" chipset="icl" name="Sampler_2" />
+    <guid config_hash="525a9fe5285599f695330c45ba2e8b62" mdapi_config_hash="6aa36798625267734b4d066d9090c0bd" id="eddc2f32-b196-4a72-9bf8-21770e35f8bd" chipset="icl" name="TDL_1" />
+    <guid config_hash="b141825840f912e9d7c98a13ae34d600" mdapi_config_hash="af8ee9d86606564460ce2928023e47a5" id="c6d3af7b-037b-4656-95e1-4f838f0a2c14" chipset="icl" name="TDL_2" />
+    <guid config_hash="d2188fa3c865ef430532b127a3fd87a5" mdapi_config_hash="ff33e47c767f6f81d9a779153aae6fdb" id="fd25ec19-3ed1-40c9-8648-1d2387449a92" chipset="icl" name="TDL_3" />
+    <guid config_hash="b421b29d8557dbbf0fe3068c82b3d8dd" mdapi_config_hash="cc850ab4463c23e6017f069d67785c31" id="40dc79f2-88c8-47c6-8f86-f509e39fbe5d" chipset="icl" name="GpuBusyness" />
+    <guid config_hash="3abb2f3338c8d2b6aff2a869ee9030d9" mdapi_config_hash="0b64f16be99304796735d1bd7b6e580a" id="e617cfd5-6cc5-4143-8994-cd36cebb921f" chipset="icl" name="TestOa" />
+    <guid config_hash="d3d8f793ecb17c4748ec1b319310b447" mdapi_config_hash="2513e5019806f4754e86a223cf59a7b0" id="eca4858e-27a4-4bcf-a57f-2616e2f08950" chipset="icl" name="AsyncCompute" />
+    <guid config_hash="878466bee64e6505fde4118ceadff299" mdapi_config_hash="653d46ab9ef10a2b7f511fe3f067e0ee" id="c693e665-867f-4362-91b6-85337f932010" chipset="ehl" name="RenderBasic" />
+    <guid config_hash="ad9a98d85f554b69e9737673594634a9" mdapi_config_hash="f335f856cf2bb4a1d09479fd39aab0ac" id="ae4d01a9-fe55-453c-8c7a-036acd5eacff" chipset="ehl" name="ComputeBasic" />
+    <guid config_hash="9b6d58e5047c130f47999e04b92151e8" mdapi_config_hash="7bf6ffff6913e5536d4ad4dc4fa3b03b" id="05700b63-f044-4c79-b8ae-676972114745" chipset="ehl" name="ComputeExtended" />
+    <guid config_hash="1819d0fc7e1274aaed4dc79670eb4d33" mdapi_config_hash="6ff2fcd2498448af0ed284e69be555a8" id="89e1f7ae-1100-4b4f-92f3-0caf88e3d833" chipset="ehl" name="ComputeL3Cache" />
+    <guid config_hash="93df26813118e45063763661ffce6b77" mdapi_config_hash="d15e72e9d0ba0a4a94ed6985c86690ef" id="7bfa0a68-c327-46e8-a556-cfa7b4651071" chipset="ehl" name="RenderPipeProfile" />
+    <guid config_hash="91cd4922309b1259d26360831c966532" mdapi_config_hash="bc3b779c816e5763231752dff01b698c" id="697eadd2-bc54-459f-b634-fcb3d4a2d627" chipset="ehl" name="HDCAndSF" />
+    <guid config_hash="8a7c6d0c784cc13fcb65d3baa8bb44e0" mdapi_config_hash="9aa273f8a120f0a31667c247704bbf6b" id="5cda6ba5-f3b7-43a4-8027-8d0958a263c4" chipset="ehl" name="RasterizerAndPixelBackend" />
+    <guid config_hash="9d588e74e635377125299c5f3aa5c7d6" mdapi_config_hash="ae9e960222e31c486205e0c0f0603138" id="834bfd76-48d7-4552-81fa-ba1f21d6014c" chipset="ehl" name="L3_1" />
+    <guid config_hash="3310298c4729cef20b0f20ddc8658a86" mdapi_config_hash="97d31df77e8723b93d1d215b5e596bd5" id="f3da54bc-da93-4008-bafc-daebdd79ab40" chipset="ehl" name="L3_2" />
+    <guid config_hash="5d08c5947d680f307e1a3956cf87b818" mdapi_config_hash="375da2b23bb646620d82fae96f76ceb2" id="fb4664db-4a4b-4d45-8f38-ceab6eac078c" chipset="ehl" name="L3_3" />
+    <guid config_hash="7ba4d260cd6343472d1e740970b0e7f3" mdapi_config_hash="78e18bf4b7860da80dbdffdef1a57d38" id="0092ff25-7595-4671-b21a-d7d94a19a38b" chipset="ehl" name="L3_4" />
+    <guid config_hash="3890a445c8e58c9d7cefd7c3dcdd07a3" mdapi_config_hash="fd720998c18a22560a36fbf0ebc7346c" id="079c833a-21cb-4832-bc9a-3ea6fc42f516" chipset="ehl" name="L3_5" />
+    <guid config_hash="afa077ca791b2e4ee74ddfaf006d8fe2" mdapi_config_hash="f89f6cde18683374b31354a1a0eb6738" id="bf151068-b27b-4851-b46c-627c132f1cb4" chipset="ehl" name="Sampler_1" />
+    <guid config_hash="e14383b58aeecf5a983d6ec57e3b2558" mdapi_config_hash="d8162037057cd1550568345e71f20e72" id="5e64ae48-92a7-49b3-b7d8-af36b32ee866" chipset="ehl" name="Sampler_2" />
+    <guid config_hash="dd6e1a4c0aaaa84a36f83bb3772e26f6" mdapi_config_hash="7f0d9b461ff5b0fd927051c95b8f80b1" id="d1725c84-80c6-4488-9867-82b44c88fea6" chipset="ehl" name="TDL_1" />
+    <guid config_hash="39c75fae3e4bc24fce0759413caac64d" mdapi_config_hash="7d8add695c157a7908abfef46b767e28" id="47e27fcf-9904-4fc0-a661-636dffeafe7d" chipset="ehl" name="TDL_2" />
+    <guid config_hash="79df0b5785c2464bedddf7c2ea34fae9" mdapi_config_hash="011bb38aa81c2e56de1e7cf9653a4047" id="98154f5e-cf17-423c-a096-e696f87c2906" chipset="ehl" name="TDL_3" />
+    <guid config_hash="051a88dbb1037b1e96ab8742322d5195" mdapi_config_hash="8f1f14586a4a4cbd9603488b87f3a571" id="85254749-e937-4205-9b40-5df8847c9ee8" chipset="ehl" name="GpuBusyness" />
+    <guid config_hash="75555135047c7824daeac619e0118fef" mdapi_config_hash="d754b8eaa7773e50d8a14775482dd59f" id="4cbcfaf7-3c0c-42b8-a324-b1e58329c732" chipset="ehl" name="TestOa" />
+    <guid config_hash="cba79c72b2989348f9db79f65aee74c7" mdapi_config_hash="d173cffda0e6aa07c693ed3636b09e3b" id="c17af13d-3953-432b-9bd1-81346b4c2092" chipset="tglgt1" name="RenderBasic" />
+    <guid config_hash="6bfccfd98beccb8b008e8ba30a7a553b" mdapi_config_hash="c2e0ad3ca3f17e7e1dc6c9c83c83619e" id="79a0514e-40d7-437a-90cf-33e02857adc6" chipset="tglgt1" name="ComputeBasic" />
+    <guid config_hash="338f4f73347007310b6860c65e83ce87" mdapi_config_hash="baf3a770bb05723d39743ee683dd84c3" id="619eabea-0191-4d75-aaca-4217837215aa" chipset="tglgt1" name="RenderPipeProfile" />
+    <guid config_hash="b8afaffb07c9b51a3c62fbd5baaafe6c" mdapi_config_hash="57d8f33923d6ca368a72c4b90952ae40" id="b1560378-cb32-4d4b-af30-ffeb163655e6" chipset="tglgt1" name="HDCAndSF" />
+    <guid config_hash="933072588e6f7fa0adf6671f7a77dc28" mdapi_config_hash="e55d617404216cccdd77b6cb30bc7116" id="36e7fc09-3fb7-4b46-a6ff-ba1ce767db7c" chipset="tglgt1" name="RasterizerAndPixelBackend" />
+    <guid config_hash="f4c2bf455adbb7edb4df0b1235f70737" mdapi_config_hash="67a489dfa26ec9ba0d09f5a65ec4b33b" id="4a46a4ee-437d-4726-ac61-31e47072f706" chipset="tglgt1" name="L3_1" />
+    <guid config_hash="dc5293d4e321462b3c8b4349d8d0ed69" mdapi_config_hash="d3c800c0f3d91f8654aeb2d2a6050cba" id="2456d8be-5c99-430c-8172-8294fdc39331" chipset="tglgt1" name="L3_2" />
+    <guid config_hash="b8cdb44eaf81e77955a0ea1021b7f655" mdapi_config_hash="f9c2c916752ce281b9f2613a187a1bb3" id="71e2a606-810c-4252-bf7e-16fed118f4b5" chipset="tglgt1" name="L3_3" />
+    <guid config_hash="8c15daa9e0047d32d8c5a505441c9367" mdapi_config_hash="82bc535c6b08955c4388fa6c4577468b" id="327a91a5-f93c-449d-b5e1-ab92cb1180a1" chipset="tglgt1" name="L3_4" />
+    <guid config_hash="380594159a30354a8c0af095e75ce33d" mdapi_config_hash="0491376295a874188c97e8c2f4a1c673" id="a8de84ca-1624-4e0c-8046-d5265566c15b" chipset="tglgt1" name="L3_5" />
+    <guid config_hash="91ed2710716bbdc5da2b09c1d70ea6ab" mdapi_config_hash="b7b525587e4fbc34b4b750d6c28ccd49" id="6f376729-c56a-4560-a0eb-f4a17ec6df84" chipset="tglgt1" name="L3_6" />
+    <guid config_hash="ed86cc9afa0b2871343d7f5b8bdc799d" mdapi_config_hash="0b918b60a6c41a4af17a3bede6b682bc" id="4876283b-1889-4cef-880f-58de9dc676cb" chipset="tglgt1" name="Sampler_1" />
+    <guid config_hash="62e53aebb5a7cc918adc6742fa29ee56" mdapi_config_hash="29847733f747bcc4e238adb8e21e6a45" id="aeddd71b-2f93-48de-9e69-1cba5865473f" chipset="tglgt1" name="TDL_1" />
+    <guid config_hash="216f8a4dd88b3a519e34d715cab10c99" mdapi_config_hash="e72a704496540537e6317e4a9097ec9f" id="a4089c3f-a697-4213-a58b-70e150969226" chipset="tglgt1" name="GpuBusyness" />
+    <guid config_hash="829796b947ccde345effbdf10333f4ea" mdapi_config_hash="8f54bdebe2bde50b88c02cf4dd420d7a" id="ffde7a80-6d78-42c8-8603-838de28d07da" chipset="tglgt1" name="EuActivity1" />
+    <guid config_hash="0857d40a772c148cb305ef610db5d67c" mdapi_config_hash="68624f860ea8f0e6a446d0b02d5868c7" id="bd3186a3-6e96-4c70-a5d9-65d4bea6f668" chipset="tglgt1" name="EuActivity2" />
+    <guid config_hash="8133879afa7db394475e4f4b803abc37" mdapi_config_hash="2908ee3b1f77b7759366a8922ef8d442" id="b59e975f-044c-4e0c-afcd-46aee1107b81" chipset="tglgt1" name="EuActivity3" />
+    <guid config_hash="fa66e28922ce174de8023c3f445cae5e" mdapi_config_hash="1fb1fdcc4637a0dff0a39a8f74333ce7" id="948f1627-f642-42a6-8304-801d7db112d2" chipset="tglgt1" name="EuActivity4" />
+    <guid config_hash="943086e262c3b7bf208729087e3346d3" mdapi_config_hash="b483f573cd4349dd48e0168c277574ea" id="243ffad2-626e-4d05-94a0-af7068e18a84" chipset="tglgt1" name="EuActivity5" />
+    <guid config_hash="b5e4ba8634a9431f3e477e91d49c922e" mdapi_config_hash="acdc8a6338ee6465ec3726b4dbe11b09" id="1f367b67-1f45-469b-97fd-eac88aeb1f7c" chipset="tglgt1" name="EuActivity6" />
+    <guid config_hash="bce06cc3317021a1bca092e31077c120" mdapi_config_hash="9a2e97a77cef98d3059e2d07d6efd870" id="7c2db23c-1fb4-45df-a5d5-2345d23c10fc" chipset="tglgt1" name="EuActivity7" />
+    <guid config_hash="2cbc81048a9b92ebb143b18a10802c5c" mdapi_config_hash="684747208975b2f0279f5b829ab24b7b" id="b4c81162-2c96-4cf1-86ae-ecff3d57ee4d" chipset="tglgt1" name="EuActivity8" />
+    <guid config_hash="c7195c52cb01e383353dfbffa68baefc" mdapi_config_hash="114b3f158d5e37178af7b031759c3768" id="6f27aaed-4f08-4e0f-95a9-231d9b4fa111" chipset="tglgt1" name="TestOa" />
+    <guid config_hash="b3f89fd4211d1f0e5040fdba467f8923" mdapi_config_hash="6dd33bc3aa87f6ca3811c3e617024e43" id="0fc397c0-4833-492c-9ccd-4929d574d5b8" chipset="tglgt2" name="RenderBasic" />
+    <guid config_hash="6bfccfd98beccb8b008e8ba30a7a553b" mdapi_config_hash="c2e0ad3ca3f17e7e1dc6c9c83c83619e" id="397a46d9-03dd-4696-8196-270362e1c575" chipset="tglgt2" name="ComputeBasic" />
+    <guid config_hash="25155ad45887742faf4286e5d637ee76" mdapi_config_hash="907735bc616cd88d18cc07b791f310b1" id="684ed715-a0ca-499b-89e0-25d1cdf0c737" chipset="tglgt2" name="RenderPipeProfile" />
+    <guid config_hash="2f5fdc0a222330844b4838c01ff2f0d7" mdapi_config_hash="5e59bd24cd51d97e8bdf10d0105b571a" id="3a4c7510-7725-4bf8-9eae-59115a2431c6" chipset="tglgt2" name="HDCAndSF" />
+    <guid config_hash="68ae806b961b5fe10bc4538f3437c1aa" mdapi_config_hash="3c336f4983f38baedb49ee0ba6463a05" id="6f02479c-e9ca-4c2b-b1e6-216a9e1c5ef7" chipset="tglgt2" name="RasterizerAndPixelBackend" />
+    <guid config_hash="9c950c6ca07f1eccfdcfd49dad046c79" mdapi_config_hash="037ce99af3124b147e626c732fed685c" id="7e809cb4-6e90-44cc-9c57-6eff58ad360a" chipset="tglgt2" name="L3_1" />
+    <guid config_hash="289db172e2380a6b75aa18135a178fa5" mdapi_config_hash="d96d8a44d3d1cf20e43a8d4a0d455944" id="0dde1bb6-340f-4350-b398-2b0228573967" chipset="tglgt2" name="L3_2" />
+    <guid config_hash="e8f56ddd87c511ec0550e6607f061cba" mdapi_config_hash="ef430240598e5d1b52be27df97b2cb05" id="8ecaeff2-78f4-4e29-b331-d757e6a74ed0" chipset="tglgt2" name="L3_3" />
+    <guid config_hash="f39841acc09f409b1d970cfcdf561fab" mdapi_config_hash="04e1f19526af2ceda229588104702531" id="30cd8433-f679-401e-b578-19e22975e84f" chipset="tglgt2" name="L3_4" />
+    <guid config_hash="63601012e6bccf1956384ab60dce30bb" mdapi_config_hash="de2796143442a5bf31f1da384b2537f7" id="e0efab61-c904-4354-9fc5-35e8b8bc7d20" chipset="tglgt2" name="L3_5" />
+    <guid config_hash="2c297ada6f33ef20eeca56c8d4beeade" mdapi_config_hash="9a5506a742413b90fd2f3f76ed0c8de0" id="4066ad45-4a68-4acf-86b2-fa5a6a914db7" chipset="tglgt2" name="L3_6" />
+    <guid config_hash="4a5906954e6d2fb44057c6cd1d7548f2" mdapi_config_hash="d4ce0c915b228a3ba5803cb3ec5bf87f" id="17e2be13-39fe-45f0-867c-0f83fcc51654" chipset="tglgt2" name="Sampler_1" />
+    <guid config_hash="21cca53ef0ba57fdeccd60634bb2647b" mdapi_config_hash="0301fc7eaddaba1e6ed73c66a66cb53f" id="0c3c3235-2e91-4ef0-8562-4ea1501e8612" chipset="tglgt2" name="Sampler_2" />
+    <guid config_hash="48011bc9d54f96fa65d6913fbf1cee7f" mdapi_config_hash="49abf97f3d60ef68f41f88ff3137b09c" id="ee6f5fa3-13a8-4842-8b34-f7541a0f76a3" chipset="tglgt2" name="TDL_1" />
+    <guid config_hash="270908dc68b94e7f052cdc9b2b283167" mdapi_config_hash="e8f763b7b1f93e2c4614c9cb6e5efea8" id="f1577929-9215-488b-9899-d12b6e799743" chipset="tglgt2" name="TDL_2" />
+    <guid config_hash="c3cfaa9f10fc1109831e511184915858" mdapi_config_hash="1bd054308052f97adffa7c6207f3f653" id="d5890d02-b2be-4742-a16e-17190a92a301" chipset="tglgt2" name="TDL_3" />
+    <guid config_hash="152652e6549d438757c692a4fcf35247" mdapi_config_hash="3a1737f21051c9ad2da32d250dd6c4d2" id="19fe64eb-ac4f-45c6-b2b9-af728b21753b" chipset="tglgt2" name="GpuBusyness" />
+    <guid config_hash="836d21da6c81399e7f4bf0ca5cc2adc0" mdapi_config_hash="cb12bd77d6d6cace3172867b543e828b" id="414ff049-80d3-48c0-b79a-bd8eed097a06" chipset="tglgt2" name="EuActivity1" />
+    <guid config_hash="ff656dc8ef36a80023ff170f50cba220" mdapi_config_hash="fd6ba067ae79689bad93a1581db5dc72" id="fb65c819-7ac2-4c69-aa9d-b72a18440705" chipset="tglgt2" name="EuActivity2" />
+    <guid config_hash="a0548951f70bbfc2d608fced4af8703d" mdapi_config_hash="c80f4de1346995f6883330fe36e7ee4c" id="7e1c6469-9de7-491a-a7c5-1bd8f9966826" chipset="tglgt2" name="EuActivity3" />
+    <guid config_hash="4fb45fce661994bb712d58bf21dcf617" mdapi_config_hash="b206a58e00605b2100f454e8746c141d" id="a43f80cd-5cc1-4a2c-a750-40594af2b661" chipset="tglgt2" name="EuActivity4" />
+    <guid config_hash="80a8e01afb1d0480f6560a3d55578240" mdapi_config_hash="bb7bd9a4082249a7503ebf1b6d56dc73" id="7e6e555c-aa5b-4c8d-992a-454a5a335c6e" chipset="tglgt2" name="EuActivity5" />
+    <guid config_hash="b466c8edcc118944f73725dd3a1d0997" mdapi_config_hash="3522f98e3d010205276910c21d66f719" id="f3723f39-ecf4-4ff2-a4c4-80e87876b86f" chipset="tglgt2" name="EuActivity6" />
+    <guid config_hash="4e334e8ccb537e3a714cb772937895e6" mdapi_config_hash="f0417a67928b18d50e5c4a390ed6b58d" id="c0d2cd0a-e2be-4b12-916d-2f3aba0ebf9e" chipset="tglgt2" name="EuActivity7" />
+    <guid config_hash="d1d8327895c6292ea720571bf6aec48d" mdapi_config_hash="13b16625e9e7842ec07dfe7f607be03e" id="1fbbd218-693c-4035-b4c0-ce4dd139d828" chipset="tglgt2" name="EuActivity8" />
+    <guid config_hash="185673d9c229adff444a595e6c217439" mdapi_config_hash="51644bc87975e69064d0575227a663f9" id="6607f034-d053-40d1-8215-67c07f3041bb" chipset="tglgt2" name="TestOa" />
+    <guid config_hash="43974fb5727effcbe7778fd46549e772" mdapi_config_hash="fed843ee8147cb46213808401f33fb28" id="5b492c36-73f7-4827-83b3-c6863697ec51" chipset="rkl" name="RenderBasic" />
+    <guid config_hash="6bfccfd98beccb8b008e8ba30a7a553b" mdapi_config_hash="c2e0ad3ca3f17e7e1dc6c9c83c83619e" id="09740672-ccc3-48da-a5bc-64994fe3a0a7" chipset="rkl" name="ComputeBasic" />
+    <guid config_hash="5995be9c351cc5e77549039adea73bee" mdapi_config_hash="54b1e569c3d867ae2ae1766d8fa7697c" id="833bb0f2-9483-498e-b3bf-ebf026a6301a" chipset="rkl" name="RenderPipeProfile" />
+    <guid config_hash="3755a62bd397702e10e938cace2a4057" mdapi_config_hash="e0f4181b0d3d62757992dacc4e320554" id="40ef13ef-25d9-4ac6-8582-ce97c47fc900" chipset="rkl" name="HDCAndSF" />
+    <guid config_hash="62d2b538c48884776e36a37640e3bfca" mdapi_config_hash="570d42139b6b0a5d2b706744eed05d55" id="bf60f7bd-9029-4edf-8311-f6e86599395e" chipset="rkl" name="RasterizerAndPixelBackend" />
+    <guid config_hash="5e5a0c2a907a663447e013fbf2942f28" mdapi_config_hash="04dd89759bb683e778c85633cf13bd37" id="a5f6ac3d-853f-42a4-a038-c4a09e8075be" chipset="rkl" name="L3_1" />
+    <guid config_hash="8d6ecccbe72202d243b499a226ee90f6" mdapi_config_hash="9a0750b2a700efa43693d980a91a0e56" id="bb080384-a01f-442f-8be2-3eae2c7394cd" chipset="rkl" name="L3_2" />
+    <guid config_hash="19b7a9b31c58cdcb0e2da74c0abbbf31" mdapi_config_hash="5ea0cfa8f861e9e8d60622a43a92056b" id="9f39ce80-0463-484e-b797-3135b7e0ab0a" chipset="rkl" name="L3_3" />
+    <guid config_hash="7f62b391293f3adc7e0c5310c1a15236" mdapi_config_hash="803b22a6409af4299c0173d75015b5e9" id="11e091e1-bbd3-4bd6-9ce8-8982d2d3a3b2" chipset="rkl" name="L3_4" />
+    <guid config_hash="65ef549987fa20f7e456753f65c96321" mdapi_config_hash="6f95252764fcb6f19a42056def00e8e5" id="0f2e1818-c190-494a-a828-2ed4422d71f3" chipset="rkl" name="L3_5" />
+    <guid config_hash="5381ff70169a742d68b883cafa9cea3a" mdapi_config_hash="72f8562f53ed845c9dd8c75ce6642614" id="ebd91ba3-4d01-4bdf-8752-384cd0a4e139" chipset="rkl" name="L3_6" />
+    <guid config_hash="d015fe311cb9c1e12da4b2138d9cdea0" mdapi_config_hash="acae891c97b089b79b8916cb9c92a88d" id="5102fa66-b5f3-45f2-a16d-0a13a4cbb6c9" chipset="rkl" name="Sampler_1" />
+    <guid config_hash="f0132b7b0e308361b88e5c74862d358a" mdapi_config_hash="8bddce2012f8f10a3412daf93ef64790" id="8706c725-7753-427d-ae2d-ba25c1168f2a" chipset="rkl" name="TDL_1" />
+    <guid config_hash="c3a06bbb1f4a892dc7f53f85ce47af86" mdapi_config_hash="e07187e4bd2744e8bf3e90e6fc40349a" id="3eab195e-e4d8-482e-9981-811935722b21" chipset="rkl" name="GpuBusyness" />
+    <guid config_hash="5432b2e81f0ee59fe0ce8fb0ed6467d5" mdapi_config_hash="772c61be685fcf2e6694eefdf6bb2496" id="100ae8ce-31c6-457f-97a2-dfd44812bce6" chipset="rkl" name="EuActivity1" />
+    <guid config_hash="58a0c1820e0cabd0f8243b582d748281" mdapi_config_hash="fbd4560cf3066e1ffa0bdab8d6c39b08" id="7e926c0a-471b-40b3-a641-75f3d73339ec" chipset="rkl" name="EuActivity2" />
+    <guid config_hash="6febae51d8bf17ec0338b6c1e0a1c464" mdapi_config_hash="565ccbe6a2d7fb7952cc4d109846ddc5" id="aca9005f-fafe-4d02-a9de-b2584ff76f04" chipset="rkl" name="EuActivity3" />
+    <guid config_hash="f8e7d2e615ec055ccce7f17c060510b3" mdapi_config_hash="55af344496e411184a53f184e551e846" id="ad96806d-7c0d-49f0-b844-c5010ade30af" chipset="rkl" name="EuActivity4" />
+    <guid config_hash="ae29f57cc010e1df3e54b2a4b26260da" mdapi_config_hash="b5e52e8b9a38f5283acad910759f4bf4" id="1669e79f-976e-47ba-a553-0a716ebd3c71" chipset="rkl" name="EuActivity5" />
+    <guid config_hash="b71717fe750ef661bd9fa449c8d31eed" mdapi_config_hash="3e6c988410dd5f72aec62e382876df70" id="d100e474-1e6c-4100-812b-71ec9cfe3523" chipset="rkl" name="EuActivity6" />
+    <guid config_hash="e22892f60cde8659f1232e841465d9a7" mdapi_config_hash="2b0bd788a4dd148293490faa4e4462cc" id="b22d38f6-a056-496a-8d7d-dede47051806" chipset="rkl" name="EuActivity7" />
+    <guid config_hash="adb6647fc3b2f89aaf0db2d7982aba41" mdapi_config_hash="b8374fb02e01d05ec140148aa6542d71" id="c68abf37-fe6e-45f6-9dcb-549b3fbef699" chipset="rkl" name="EuActivity8" />
+    <guid config_hash="6a817294a8e34c900d6aadd3ca02bec8" mdapi_config_hash="9c1e8e315564af8e3c6d3fcf8f2a2cac" id="74dbc739-d871-41b5-be7b-fb547ac5bec9" chipset="rkl" name="TestOa" />
+    <guid config_hash="3b0ed513d1a7c63853a820e5e748438b" mdapi_config_hash="315a336fee753cf5618db15d2eeb19b6" id="1caf6b6d-a1ef-40d3-9033-311e482b826e" chipset="dg1" name="RenderBasic" />
+    <guid config_hash="6bfccfd98beccb8b008e8ba30a7a553b" mdapi_config_hash="c2e0ad3ca3f17e7e1dc6c9c83c83619e" id="e347a2bd-079d-4a77-b546-c3c114c55bae" chipset="dg1" name="ComputeBasic" />
+    <guid config_hash="f883320bd055670d538f60b8e6b27aff" mdapi_config_hash="ffc07e00266f5f110d13ddb6d217c58a" id="3b27f553-aebc-45ec-aa2f-926d81a91fd9" chipset="dg1" name="RenderPipeProfile" />
+    <guid config_hash="3a522ea0727a43a576351210fd6896e4" mdapi_config_hash="7e6ee2d91311ba67d5e0ab19669e5642" id="1fa73aed-3861-4c19-8105-e55986c8a4e5" chipset="dg1" name="HDCAndSF" />
+    <guid config_hash="18077e8f2d9d7ed2076a712a031dec43" mdapi_config_hash="a14b0d936832c119c334a12f3a2a4736" id="2bb016ee-a9b7-477e-8d5d-f7fd179a8f16" chipset="dg1" name="RasterizerAndPixelBackend" />
+    <guid config_hash="f2dad56fb97463feb948746a47673cfe" mdapi_config_hash="41e2d2b5bce44ef057c918f6c93aaecd" id="cdccda4b-c7c9-41a9-965f-fc2adf8cff0b" chipset="dg1" name="L3_1" />
+    <guid config_hash="d53b37306fedd5edada83df8a0c9f230" mdapi_config_hash="1799a960b844f0de04e4ba4331fa8349" id="3c44fb1b-f9b3-4d52-a507-e2b2a80ec8b7" chipset="dg1" name="L3_2" />
+    <guid config_hash="b409195dfab359d18b214b7769fc9f19" mdapi_config_hash="1764ebcd7fe7523785f0bb34abebadbe" id="ec911098-71bf-4432-9153-6143e3cfbe06" chipset="dg1" name="L3_3" />
+    <guid config_hash="46eba53287a6fd9a4e0bfb9910893843" mdapi_config_hash="a56ab80af81b9b80fa469e3d0de29cbb" id="17d351db-7916-4eea-9817-29ca522daacd" chipset="dg1" name="L3_4" />
+    <guid config_hash="d2efee8770c9bbbba1689c88c464758b" mdapi_config_hash="33d494933d4006521116be339ac25019" id="f2de5846-f330-4d26-ad41-824deb6b53f6" chipset="dg1" name="L3_5" />
+    <guid config_hash="0250bcbbcb791b76750387522e0fe3b0" mdapi_config_hash="9e633fcb9c5b1e40870082810bc37ada" id="8f4ccb12-ee11-4741-93d4-d431b8ca58ef" chipset="dg1" name="L3_6" />
+    <guid config_hash="37cc4cda9d9c8015181c719f17142c82" mdapi_config_hash="4c4a77a11765d5cf7297b1503b5a3f7d" id="d336f948-7e5c-41a9-be57-e3b01b8c829a" chipset="dg1" name="Sampler_1" />
+    <guid config_hash="ea1d527ce36e5829006f27e93eb527a3" mdapi_config_hash="6368419fc3f1a9c280d8ba44bdd7f4f1" id="c2929b2d-4ce9-4161-a1ac-fff0a75436b9" chipset="dg1" name="Sampler_2" />
+    <guid config_hash="9a88c13c80a3ddcaa5c7456380ee3fda" mdapi_config_hash="0dacd0234a9a4d8bc3b6a260c4464834" id="a98b240c-71b7-4e72-b167-8538a581e26d" chipset="dg1" name="TDL_1" />
+    <guid config_hash="58af884c274890892778f1666abf41ad" mdapi_config_hash="32ebce609c59ebe458a7e3825fb5a48c" id="5e7aa748-e1a6-4282-b3ae-48dbfb06dcf8" chipset="dg1" name="TDL_2" />
+    <guid config_hash="2b1a4a7b302b1c0097be59d352fcc28b" mdapi_config_hash="73b09f5594f2104d9b6b90a07599ec61" id="e12f8fc0-2eb9-4bf6-bf44-a13ceb42c9f7" chipset="dg1" name="TDL_3" />
+    <guid config_hash="17b1c751c0130c8949b71fd5d405778f" mdapi_config_hash="e36f027d7cc14d5d77e3978db97efdc6" id="81be185c-7ac7-4a17-85fc-4144ccba4a46" chipset="dg1" name="GpuBusyness" />
+    <guid config_hash="c4c57ffc24aeb94139731c32a28b51e1" mdapi_config_hash="c39c1c832edb8220860c46a4174d3d82" id="5354b8d9-12fd-44eb-8f7d-0a4dffae4409" chipset="dg1" name="EuActivity1" />
+    <guid config_hash="744790864bb4ff0e6600267ef6ae522a" mdapi_config_hash="eb49ba8b1a592d64e2c7996357ee540f" id="3225b6c6-805a-4e93-aaa5-5f09d87b31f9" chipset="dg1" name="EuActivity2" />
+    <guid config_hash="449a2e0ad45b8f3414a46e07d392971d" mdapi_config_hash="ff2f3818471fcf0d82e2c9bd93c4b3e9" id="c423d483-13da-4bae-9b61-c13ec19ee450" chipset="dg1" name="EuActivity3" />
+    <guid config_hash="8d5cb6bfe077f4f423c77cc39d465717" mdapi_config_hash="6abe34a989f329d4ead0f7ea8d78ca77" id="c7388ce3-9e3f-4804-a215-771791c4ea3c" chipset="dg1" name="EuActivity4" />
+    <guid config_hash="6003d223dee037ac2e24287c65d16686" mdapi_config_hash="bed831c292dd39a1d3ab99953802e09a" id="7ebc4a0a-5dc3-4de3-a8f8-2a6d1a95427f" chipset="dg1" name="EuActivity5" />
+    <guid config_hash="25117c0e61a97adaeae8070f1bd67b77" mdapi_config_hash="0e6668f4578041599c4b66f54f18a116" id="811a34c7-87f3-4d4d-b366-d4b5f5dc5be1" chipset="dg1" name="EuActivity6" />
+    <guid config_hash="302c5597353ebf81e4a8573dc8bedf89" mdapi_config_hash="8fcb9c5a064a3a38bd91cc78186f81c7" id="6ec13866-51c1-46c3-818b-c63cf38efcd5" chipset="dg1" name="EuActivity7" />
+    <guid config_hash="4630bd7b5bd097d512476903ab04938c" mdapi_config_hash="08dee2e1b8a5dde3fc89eb10fb6a5b4a" id="4bc9e67a-0ebd-4d65-86cd-2eb961ccac59" chipset="dg1" name="EuActivity8" />
+    <guid config_hash="a6fd576e08523e341220ce95087fa449" mdapi_config_hash="6c223244d277a52f874cd99a2ab89882" id="23f51139-6973-4b45-a211-778834ce2c9a" chipset="dg1" name="TestOa" />
+    <guid config_hash="21fbe2cd2b53541e3b761d579516ed12" mdapi_config_hash="66837182711f03f84fe87408ebd0a617" id="4b886bf3-61ff-4381-9994-ac9b91202fc7" chipset="adl" name="RenderBasic" />
+    <guid config_hash="6bfccfd98beccb8b008e8ba30a7a553b" mdapi_config_hash="c2e0ad3ca3f17e7e1dc6c9c83c83619e" id="eb6a0ef8-4e8f-41fa-85ba-686835711f6b" chipset="adl" name="ComputeBasic" />
+    <guid config_hash="29513a0b338299ead603390779f6c120" mdapi_config_hash="ee12197058eb520427dc1d425178eb56" id="ee81cfab-667d-46c5-a2b7-17283b28c38d" chipset="adl" name="RenderPipeProfile" />
+    <guid config_hash="ebc502d01dac0cf9673eb0fef2506f91" mdapi_config_hash="80fef6b5d722083a1fb9e0122d0a51a5" id="73acd312-486b-4aa8-bcd1-232bfb29481b" chipset="adl" name="HDCAndSF" />
+    <guid config_hash="28d420151b16828e8ca210caeb56b9c8" mdapi_config_hash="fbc93cbb50b2798b87a72c2dd0dbf222" id="ef158e77-1bca-402c-b2d6-1654908fd977" chipset="adl" name="RasterizerAndPixelBackend" />
+    <guid config_hash="031b10d628ca033ad143ff80933f9278" mdapi_config_hash="b3259d9497ba9d9f5b0be7937383bedb" id="b997e963-d322-4d97-b631-f875b2135fc9" chipset="adl" name="L3_1" />
+    <guid config_hash="340670c90887c04a160735540fd60a05" mdapi_config_hash="beb8afb29ed1a424e319591041423417" id="57c490ef-4993-465e-b1e0-774fbc104fdf" chipset="adl" name="L3_2" />
+    <guid config_hash="a5c8e121989ace5c9e12158a91da582c" mdapi_config_hash="70dbd52b6c70fe3f6c7b7d265ceef298" id="50d02e16-414e-4b4c-adbd-71c584f857b5" chipset="adl" name="L3_3" />
+    <guid config_hash="1ec73fc7528bf2e976133100aefaa4b6" mdapi_config_hash="0716cf82fa0ba9963b363c8641d6e875" id="896dda0d-84b8-4d1d-b54b-c2e5ded94581" chipset="adl" name="L3_4" />
+    <guid config_hash="b5aea697ccc39a129b0c23635a96e001" mdapi_config_hash="969f8b8b34d6216d60c7190661a9b6a9" id="f5e936f0-aacb-4aea-80a5-d434f21d427d" chipset="adl" name="L3_5" />
+    <guid config_hash="43a026d0af29f7a18a945e2d4b350573" mdapi_config_hash="510e8490a07a363379a4c058cb474eda" id="c9b51681-9e54-49b0-918d-4e588078d5cd" chipset="adl" name="L3_6" />
+    <guid config_hash="c809f1aed72d8cf173fcead43781c297" mdapi_config_hash="f9c86d51b0a47f9fcd1e4e1c66653cbc" id="c4a47a95-b80a-46d3-abf0-98a95a840407" chipset="adl" name="Sampler_1" />
+    <guid config_hash="8c50773e2c85d6408fcc2d514447144f" mdapi_config_hash="030c3f4d0a0cfd8134531b701e7b743b" id="2d7c9960-0ec0-4aa2-9bd0-e6d76f214bf7" chipset="adl" name="Sampler_2" />
+    <guid config_hash="ee9b574cbcc326fa0884278048553a53" mdapi_config_hash="368d6fa333da9141a6247ac4d8448f23" id="85afcb2a-90a8-4b1a-adc3-61e322884520" chipset="adl" name="TDL_1" />
+    <guid config_hash="f32fb585f3220f879ad39c4972282af2" mdapi_config_hash="44438bc611f14882a23a4bdd67c8e6ec" id="780e4dd7-8360-4294-9ff6-3bef25e0fe09" chipset="adl" name="TDL_2" />
+    <guid config_hash="15196ca6dc6aa4241d9de9fc75121111" mdapi_config_hash="b357e4b704d2bb149aa2c5313bf7aff5" id="0348b595-94ef-445f-b4e5-11d0076b6307" chipset="adl" name="TDL_3" />
+    <guid config_hash="d033ecd48056664daee05fcf4ee777ef" mdapi_config_hash="f18943412a44e4a69d244a3a78a41e65" id="67577936-ac11-46a1-b07d-44ea1318df5b" chipset="adl" name="GpuBusyness" />
+    <guid config_hash="85e13c721ad46cd039e22a1ac180c98d" mdapi_config_hash="6818187e4856c8b2acc78d588ea87056" id="b1c1cb56-f82f-444e-b408-aebbe4777f40" chipset="adl" name="EuActivity1" />
+    <guid config_hash="a2f87cd5035b6b6211922d49641b66a7" mdapi_config_hash="f0bbc48e521ea0ad8a3a745dc3eecdec" id="b45c7714-75be-4639-83b8-258392695044" chipset="adl" name="EuActivity2" />
+    <guid config_hash="62d20415870552f44c9de714f245da09" mdapi_config_hash="b94a87d76d2b5fdb4a4aa30b02886e3d" id="e63fc92b-0c14-48b8-b832-52631f75b1c6" chipset="adl" name="EuActivity3" />
+    <guid config_hash="3fb95f065719b601ec6878eda687adeb" mdapi_config_hash="59eefdbc87164025ecdac51eb4c604a5" id="a5bd7cc2-3b17-4287-bdb2-a6814998daa1" chipset="adl" name="EuActivity4" />
+    <guid config_hash="3b75af09f7ac5c393bd7a6aad2fddc11" mdapi_config_hash="8ebe6beda3b86aaf5f3dbf10ca4d430c" id="036c9033-142d-438f-a5ec-ea0ec62a6f43" chipset="adl" name="EuActivity5" />
+    <guid config_hash="a9d708fdb3ec73b208b1092a1feeffff" mdapi_config_hash="b473bc4bd92f94c51f39cae220f56ff7" id="fbba3669-b6db-4aa8-a993-b2e51998a8dd" chipset="adl" name="EuActivity6" />
+    <guid config_hash="b420d7b956fb1b097a7bb812b6c87dc0" mdapi_config_hash="d81f15a77d18a099782c18acaa3132f7" id="c3ea2a23-f1c7-4a19-9da2-b569226fb6de" chipset="adl" name="EuActivity7" />
+    <guid config_hash="5face026dac6a0549f8a28cf226dfbc8" mdapi_config_hash="de7326838bcc8abf024bac9c771e22e4" id="a5e2f79b-cecb-4eff-8f29-cda8e2a58749" chipset="adl" name="EuActivity8" />
+    <guid config_hash="1affe7abeb3739d2c845cc6fa9aacf88" mdapi_config_hash="d071f4933574945979595246be61d3f0" id="89173c19-fcfe-48da-ac26-fb64425f141b" chipset="adl" name="TestOa" />
+    <guid config_hash="03581feed70897846839305bef294970" mdapi_config_hash="580f399d67c355cd996df94bf6592ff1" id="f5b8f05e-c84c-4f1c-bb05-68fbea73879b" chipset="acmgt1" name="RenderBasic" />
+    <guid config_hash="1909915afc07af2faffd448b12b5fa70" mdapi_config_hash="a1dbe33e0f731b73942f4d7a11885780" id="53ee6271-905c-4b2a-b449-9117ffd10a48" chipset="acmgt1" name="ComputeBasic" />
+    <guid config_hash="a60e5cb58af7c7fe4c772ad3c0d723d1" mdapi_config_hash="dfebdf7eb743a99cda700c3211311acc" id="952f5f55-449d-43db-87d7-6113e9c3b89a" chipset="acmgt1" name="ThreadsAndRast1" />
+    <guid config_hash="256875afc20fecd1dfb75e193b9a2a74" mdapi_config_hash="e27a13f37cffd8e650000197adc14a65" id="797ae4a3-6d36-4be1-9064-a9bc3263957f" chipset="acmgt1" name="ThreadsAndRast2" />
+    <guid config_hash="749c3bc9b8f01d8f89248610e4ce0d63" mdapi_config_hash="67783e424eb168c03b3e1dc1e3a5a152" id="abb4b8fd-b9cd-4b11-a610-1c0707af14cf" chipset="acmgt1" name="ThreadsAndRast3" />
+    <guid config_hash="acff235c23ea5530d4256044fab9e59d" mdapi_config_hash="e67a2ab3f35019287d15c999d0faedb7" id="2da159d5-8ace-42bb-9d81-26f2b162d8d8" chipset="acmgt1" name="ThreadsAndRast4" />
+    <guid config_hash="da49b5c7e497eab30522295f416dd84a" mdapi_config_hash="80f802eb9434e078d1c158be06940d88" id="91273130-42fe-4c5e-ba34-6f9140b612c6" chipset="acmgt1" name="AsyncCompute" />
+    <guid config_hash="1a28d05d945714b099a9417181b72962" mdapi_config_hash="0cdf3168ffd88a84c2a42d4c62567189" id="fd9d1ad4-13b3-4583-9f2c-998f627e370d" chipset="acmgt1" name="XveActivity1" />
+    <guid config_hash="d86a9b202b07a4443c05054f997e2203" mdapi_config_hash="ce7908d800c405d187a088af61ee7c7b" id="4b785529-8efb-471e-93c5-481dae7b3b8b" chipset="acmgt1" name="GpuBusyness" />
+    <guid config_hash="f83112e995826a1135aad56c0648d216" mdapi_config_hash="6bd0c6d87cd9dbe104d9368f73ebb82e" id="8a0c5d31-e0cb-4d2c-8056-f3824c57ad9a" chipset="acmgt1" name="RenderPipeProfile1" />
+    <guid config_hash="33bca4b0b4ee572a26c55a4531a1f6dd" mdapi_config_hash="45a93937cef959756b3d318718d9df9d" id="0f40fba0-129a-4a19-87de-5fdbe111b915" chipset="acmgt1" name="RenderPipeProfile2" />
+    <guid config_hash="96eb95ce7630b395a44860c40947a1db" mdapi_config_hash="fc4172abe1625c861ba9cd81bdb8f41e" id="24695fb7-a404-4cd6-9aad-d23738b6d499" chipset="acmgt1" name="L3" />
+    <guid config_hash="a08acb81d60803a93751565c31854e77" mdapi_config_hash="c4d973b15c80bfbcb661c1ee1d76eb09" id="4486113b-a8a7-4f75-a1c2-7d307fa0e00e" chipset="acmgt1" name="Sampler" />
+    <guid config_hash="b7863c3b8519d3ad409eaae2c1521861" mdapi_config_hash="d2097d3ca767e653a616a187b5acd609" id="75fc20f8-8694-47f2-b67b-cbb35f697a8e" chipset="acmgt1" name="HDCAndSF1" />
+    <guid config_hash="20152c87392ec9354a3e8e2817740361" mdapi_config_hash="6bea5af3aac1c7dee17b3aaeb7f7758c" id="d5e02a31-fc87-4cdc-8136-4b19e00b7e94" chipset="acmgt1" name="HDCAndSF2" />
+    <guid config_hash="66c3c5b54fdf2b4a565f7bfd26b84c63" mdapi_config_hash="69b97529d9b16cefbee90f60ac3b34e6" id="08858210-0dc3-452b-afee-e5c7811c01cb" chipset="acmgt1" name="RasterizerAndPixelBackend1" />
+    <guid config_hash="706cf923d603aaefef70ae92e213817a" mdapi_config_hash="e150586afbdcf120d1bcc195a1c8fe5f" id="30b71e0c-55eb-49ed-8863-ee7db68ff1b1" chipset="acmgt1" name="RasterizerAndPixelBackend2" />
+    <guid config_hash="5ab62a7b918b70b04699b77a78107f50" mdapi_config_hash="5ecd892e51e757a976cd0cd4cae3f274" id="3620f0df-42c6-4904-b395-5497f5a2ea4b" chipset="acmgt1" name="TDL1" />
+    <guid config_hash="dfda4f47ade0b496dd2d500e293537f9" mdapi_config_hash="0adf78de606d7b56bca529d410dd0cd5" id="28357a3a-a53b-4da4-a5b7-395dbfa501f1" chipset="acmgt1" name="TDL2" />
+    <guid config_hash="2059b848ec44ec172df992f22113debc" mdapi_config_hash="fc35170d1e41ff4e236f27578534b8fd" id="262cf8cb-824e-4f48-bac4-6be3d8dda6a5" chipset="acmgt1" name="TDL3" />
+    <guid config_hash="798658d1cefbb2a0cceef3c524506243" mdapi_config_hash="69970e440aaa413a66d8ec8d349105d5" id="1e629e21-abd2-418e-a184-753977bb529b" chipset="acmgt1" name="TDL4" />
+    <guid config_hash="0e12a6e7ae5c8ca70c55df37051f3144" mdapi_config_hash="521df5debce4cf5f78aba4df5d7adc16" id="57f210de-b537-464a-af7b-7dfe2f3780c1" chipset="acmgt1" name="TestOa" />
+    <guid config_hash="fa26c66ee01a7fee7926f74df828ae34" mdapi_config_hash="0d796271d2d971b6aed0152e491c14e6" id="37b5b93b-6acf-4726-9b57-1a65fab22bb2" chipset="acmgt1" name="ComputeOverview" />
+    <guid config_hash="51cad4f5fea07a4ce99a5bba032b18d2" mdapi_config_hash="07bcc84a37b7b7fe4c00595074abd1c9" id="a2fe4388-0540-4550-b57e-6948cd7ab47a" chipset="acmgt1" name="L1ProfileReads_XeCore0" />
+    <guid config_hash="e40e35af9a062176288ab33e751bb3ae" mdapi_config_hash="7c924206ab3846cd6aa3e1a90364e6b1" id="16bc63c3-d365-4bee-baf7-bafbc1aa7c2d" chipset="acmgt1" name="L1ProfileReads_XeCore3" />
+    <guid config_hash="827fe956c669c3743bd7d6c17b3e4455" mdapi_config_hash="13df90f63d812fc8aaaf1b109ea0b8c3" id="28da4c17-4629-4111-a575-787a85100db9" chipset="acmgt1" name="L1ProfileSlmBankConflicts_XeCore0" />
+    <guid config_hash="e36b0dc82578c8dafa4df9e6fbbb63e0" mdapi_config_hash="1f968ce59957872fcaef21069cee3b64" id="825f82b5-486a-4ca2-96fa-f358871984b0" chipset="acmgt1" name="L1ProfileSlmBankConflicts_XeCore3" />
+    <guid config_hash="2d3df306a101c592228f870c7e986005" mdapi_config_hash="031cfdabf0beb78492f0ed2f56f8594f" id="5d58094c-105e-4562-b53d-68185319c794" chipset="acmgt1" name="L1ProfileWrites_XeCore0" />
+    <guid config_hash="2210e989a4f69eabe5f2ce3ecd2d06dd" mdapi_config_hash="39cb4e3f7aa692b7f6fb3e5fe4a4261e" id="3ce21cd6-fe3e-468f-ae53-07dbf73c45f9" chipset="acmgt1" name="L1ProfileWrites_XeCore3" />
+    <guid config_hash="92c8cdbb2ab634f6ad62d9eea317a29c" mdapi_config_hash="dc698ef9cec93afbea6ec9278fa1d67a" id="54d0193f-f8e0-4b81-99ba-e73a23fd9418" chipset="acmgt1" name="DataportReads" />
+    <guid config_hash="583d1255b4b66971940337f23b1ab7ef" mdapi_config_hash="e837db0e46a70327237c2a9ce06c0794" id="17982512-46b0-4b58-9e8d-d59b5bf8b3f5" chipset="acmgt1" name="DataportWrites" />
+    <guid config_hash="1095da332ad471328e7d24fb9c791970" mdapi_config_hash="5412924efbb3e88e10cd2f5507123d38" id="480895b0-8013-4be1-8bbf-fc3f1ad2e97f" chipset="acmgt1" name="Ext1" />
+    <guid config_hash="2596c836815c65c7d2a0be12e227d0fe" mdapi_config_hash="47bdd89d7224117f7027dc0f1c57dbc6" id="b899d843-d8ce-4803-8174-f2bf1107de00" chipset="acmgt1" name="Ext2" />
+    <guid config_hash="fae7ab4aabc5813bbb455662395519bf" mdapi_config_hash="f284fb226d661979e3efe04b6139a43b" id="59e0ed29-cd2d-43ee-bf49-e4637e8ef9ee" chipset="acmgt1" name="Ext3" />
+    <guid config_hash="7f3a057a2c7a2195a548706eb70cd06d" mdapi_config_hash="187da7ed3c88699d277fd80456dba4b0" id="475c650e-1045-45dc-a280-3365f7af8f8c" chipset="acmgt1" name="Ext4" />
+    <guid config_hash="06f122a3183d4bb5dcc88742d13461ce" mdapi_config_hash="ddda913231390dc12f81aaf19d56f362" id="b7d7a874-19d8-48e6-bf54-f859a994b0a4" chipset="acmgt1" name="Ext5" />
+    <guid config_hash="6676f55334cf33b7bcf9b0a6fcb0e0fc" mdapi_config_hash="96031d1b1d16608c499f8f02cb8f90cf" id="f1a94d28-672b-41a6-9ab9-e2040200d28a" chipset="acmgt1" name="Ext6" />
+    <guid config_hash="24824a663575f4a31fffc1f9a128c15d" mdapi_config_hash="f16d5878aab4b516bb083dc0c23e6ddd" id="31d119ed-a150-4b52-9206-3f9832e275ea" chipset="acmgt1" name="Ext7" />
+    <guid config_hash="a609fc1dd0f960c0c9982d108c8f08f3" mdapi_config_hash="547552a736af00217cc74423a283f6f8" id="4eb14f16-d2ac-46d3-b974-e413430fddec" chipset="acmgt1" name="Ext8" />
+    <guid config_hash="1fa6c42a02c55de9d3303b85d4d645ed" mdapi_config_hash="caf913a6e7a4526cea3edbf3d7feb102" id="b875dedd-f121-4f89-b02f-ff2c873e2543" chipset="acmgt1" name="Ext9" />
+    <guid config_hash="06bc9a6e909f6fde296f8c6e1a23e3b9" mdapi_config_hash="48d1f44984f040e58c8aca02f5dfebec" id="691b6a0d-d3d7-4b5e-a70e-d8232722cddf" chipset="acmgt1" name="Ext10" />
+    <guid config_hash="8769662891c52753c4b030a98c7f0863" mdapi_config_hash="42bb12d42d843a329652e01fa54be6eb" id="3c626d93-4368-4115-a21d-8fd8cd10e8fa" chipset="acmgt1" name="Ext11" />
+    <guid config_hash="96eb95ce7630b395a44860c40947a1db" mdapi_config_hash="fc4172abe1625c861ba9cd81bdb8f41e" id="4678846c-99cd-4a3f-acb4-8f055f48da56" chipset="acmgt1" name="Ext12" />
+    <guid config_hash="98df80f68ee1bcadbdc63c12b4f8c2c8" mdapi_config_hash="2fb63f5ac3ae58063304652f77c876c5" id="04d1f1c5-17e5-4104-b5a1-d62337b681b9" chipset="acmgt1" name="Ext13" />
+    <guid config_hash="b82c25b890c976604baf594ae84f9c62" mdapi_config_hash="09d629c6e33a79a9b8ade7d925132968" id="9312e21f-5d97-4058-a2fc-c7497c18f0a1" chipset="acmgt1" name="Ext14" />
+    <guid config_hash="2dfeb8a292a30913ee66936de3d649ca" mdapi_config_hash="6d652105301aa9166c75106f193ac9e7" id="fd355e93-4edf-425c-99e6-8693a22ae3cd" chipset="acmgt1" name="Ext15" />
+    <guid config_hash="b6eee444b5af376bdee240747ce82c01" mdapi_config_hash="fc869df2123540ca67502b8177addf14" id="844efb3d-c453-4dd2-b556-7bac8e111b46" chipset="acmgt1" name="Ext16" />
+    <guid config_hash="217beaaaaead570019303250a6019427" mdapi_config_hash="eeaa331a6d07320fedcbf0d6fcdf163b" id="fadda67d-1b94-40d1-be89-759f78641ab2" chipset="acmgt1" name="Ext17" />
+    <guid config_hash="a16442d7bd977878f20311cf3d23ecfd" mdapi_config_hash="cb53931cc9c09815599e095ab3220fd5" id="bdd021fa-a841-4f92-826f-c3ae681c68e6" chipset="acmgt1" name="Ext18" />
+    <guid config_hash="6de41a724e88178fe7b0b6292e3ee82e" mdapi_config_hash="fde1cd12a41fb58e8f4f8a0f50dfd64c" id="1181d35b-bf9a-4640-82b8-e31e031ea8d3" chipset="acmgt1" name="Ext19" />
+    <guid config_hash="aea935cb55c9d33934dcd20816cd2622" mdapi_config_hash="4247bf9bf066566c01d932c98533b5e8" id="aa39f75d-0a8a-43d1-9c51-bcd8c62cdfe6" chipset="acmgt1" name="Ext20" />
+    <guid config_hash="31e1878ef818b7210297a2844ba3cfdf" mdapi_config_hash="649675b01a26c17a0fb3d31350eaa4e5" id="ae58d1ad-8aed-4104-a8e2-443d7e800378" chipset="acmgt1" name="Ext21" />
+    <guid config_hash="1a8aca34497e1017c16aede6c0413fc3" mdapi_config_hash="7f1a3badabd8a173acf0c8b48cab030d" id="c27ebd95-f242-4f4b-969a-9850f1081c30" chipset="acmgt1" name="Ext22" />
+    <guid config_hash="d52260dc03030dbbe1a61094843f8837" mdapi_config_hash="6083cc80198df201c7250466a1e08b04" id="881a8616-b63f-4bb1-970a-73b40b762434" chipset="acmgt1" name="Ext23" />
+    <guid config_hash="68d2055233fb6df4092862c8883f1b66" mdapi_config_hash="091894211e9ec6634527f9b90eb07cfb" id="9fe09ad3-d296-4d41-ab19-270431f7ab29" chipset="acmgt1" name="Ext24" />
+    <guid config_hash="1088f1d5ebfe937878b6dda5edd59423" mdapi_config_hash="47fdb93257e96d1bc897e5155253cd39" id="e2016425-8755-4ca0-bc93-354ba7a6ca7a" chipset="acmgt1" name="Ext25" />
+    <guid config_hash="d71cd0d8288d1fbfea844f95c773437c" mdapi_config_hash="c3b269cff5fa487c395637ebafba0349" id="9fc2d1f6-7504-41f2-9f4b-96ff3307f6cb" chipset="acmgt1" name="Ext26" />
+    <guid config_hash="7ca4c48540372dfb3dfe582d24c71c76" mdapi_config_hash="32ab1bf15096f632e2bc5bebbb6883de" id="7bc1c162-2b4b-4cb8-b351-65be069d3f10" chipset="acmgt1" name="Ext27" />
+    <guid config_hash="7b615b3384df6fe083ca50b10170e7b7" mdapi_config_hash="479eb5015dac41432a2df2c0a60d0d24" id="afdf809e-962c-4af5-8e08-cd55b455dee9" chipset="acmgt1" name="Ext28" />
+    <guid config_hash="38b59093074ec3998cbdceabaceb661e" mdapi_config_hash="4122f0759ac7ca14f56dde50f691f080" id="4f22c4f0-68ce-46ad-91a7-272b517bfa2e" chipset="acmgt1" name="Ext29" />
+    <guid config_hash="500fdd072cd83b69c087b917b212c106" mdapi_config_hash="033f37a2db3d39b76f5f25618620a791" id="376f6937-f69d-41b0-a1ae-402dee9d42cb" chipset="acmgt1" name="Ext30" />
+    <guid config_hash="00523c71250bb077c645041bbba13faf" mdapi_config_hash="273454896b03cac032e94be61447d1b2" id="28e81769-8b4e-4a6f-a658-19901c71f724" chipset="acmgt1" name="Ext31" />
+    <guid config_hash="a363178889e787c8efe4f53666e9d2c3" mdapi_config_hash="aa3f66e56575c46fd7fdcbfade4db5b8" id="0efcc5a6-bbc5-4af3-bf07-db3597f314ab" chipset="acmgt1" name="Ext32" />
+    <guid config_hash="cf7e0869f4e6dcf61cb448c1dd6245ca" mdapi_config_hash="3bd004f89ef56fb2d6264ae6df8555d7" id="038bcd96-55da-41c0-b9ad-6d71e943f1b9" chipset="acmgt1" name="Ext33" />
+    <guid config_hash="bbb1e565cd4bc7eb56cf1950f9eb1920" mdapi_config_hash="3b0f2a3fa2d9556a317d43cd3392f617" id="48d0ac9b-3e47-43c9-9779-3e2cdf315635" chipset="acmgt1" name="Ext34" />
+    <guid config_hash="b5113330470868e8ce163c0044c181aa" mdapi_config_hash="c168ea89ec8f771ee652138027b0f55b" id="ebe68cc1-ddda-412d-b9de-4616c4421712" chipset="acmgt1" name="Ext35" />
+    <guid config_hash="86fa67e7bbb608382fb68932ea7e5b15" mdapi_config_hash="5e5984fa2c63db8cc0f6754f0095ff77" id="b305a4ce-2466-4172-97f1-a09a874f377c" chipset="acmgt1" name="Ext36" />
+    <guid config_hash="3b9805da69dd4c732e5ff34b5cdf04fa" mdapi_config_hash="82081df90adf3609bc82bd7d39efcf36" id="8184361a-7e98-4f4d-b047-42c767d4c863" chipset="acmgt1" name="Ext37" />
+    <guid config_hash="8bff66c1ee65e2f1333d9691a8d4d4d1" mdapi_config_hash="77bebdc4e3236605767fac9d76222cb1" id="0298d65d-a984-4f19-b968-1e65f072189d" chipset="acmgt1" name="Ext38" />
+    <guid config_hash="39a24fbf6c40f5bf46b58ef936dca0e7" mdapi_config_hash="0d09039ba9745a61ac91bef176ebc4df" id="602b3d8e-9299-4615-9739-fe44dd9b7102" chipset="acmgt1" name="Ext39" />
+    <guid config_hash="8c71d34d2a9ccbdea1a44a9194adce66" mdapi_config_hash="b2f4e2f74dfa5922197b5933ddd19179" id="7595f984-7cd3-4b1c-8332-bacfd2b3a359" chipset="acmgt1" name="Ext40" />
+    <guid config_hash="ef0912210dbbd1ab995c0b5474fed41b" mdapi_config_hash="fef9ebb4cade91da7cdabe595b6e4820" id="61bf91ad-0dfa-421c-b503-0eed63b64ef5" chipset="acmgt1" name="Ext41" />
+    <guid config_hash="399cd8c94c8266ccfea473b16e84464c" mdapi_config_hash="20dd2965f3c6287abd81b699a86d0db8" id="a2f3417e-fbe1-4c26-a20c-509c7205445f" chipset="acmgt1" name="Ext42" />
+    <guid config_hash="317a16ed5d58d97e9254827eaba93660" mdapi_config_hash="3e50a4a360a311eaefacdc521d3d1136" id="343460a0-c54f-4fe5-b7ac-6d9870a56aaf" chipset="acmgt1" name="Ext43" />
+    <guid config_hash="a5b3e2556c23e85d9e0ef2dc91ba4a96" mdapi_config_hash="05d582e1eceacaa854aa7e1ba5078d0a" id="cfaeaf8e-4888-459f-8019-c3080595c528" chipset="acmgt1" name="Ext44" />
+    <guid config_hash="7b4384392adfb001c80f12e712f5710c" mdapi_config_hash="e733e238bdd06e217753f452d5eafc19" id="c50cb371-e940-4499-aa74-4e75bc131329" chipset="acmgt1" name="Ext45" />
+    <guid config_hash="aa9887dedacf803b0dbcc3e1dccb6fb1" mdapi_config_hash="13ae8a7e98206164bed268a592ef48a7" id="b56a3837-111d-4ec1-8d3f-42e9e304d8f5" chipset="acmgt1" name="Ext46" />
+    <guid config_hash="ad4dda46ff84a5dbff1d42e90d0beaba" mdapi_config_hash="1459d002a686719edfca252a2510031b" id="3725926f-9a84-4cc2-963c-2294f47c017c" chipset="acmgt1" name="Ext47" />
+    <guid config_hash="c9e1ea60e961eb2d62cd63e0335baa6e" mdapi_config_hash="31b6df06a991835e8111e8f3fd29c28c" id="357a3801-3f4e-4106-8f1e-c0bfe1c5f419" chipset="acmgt1" name="Ext48" />
+    <guid config_hash="31ef72c1c9b5d63caab81e46dd8b965b" mdapi_config_hash="1b0b219d27f5d4d58d308294db29b1d9" id="8b324152-65d7-4b13-8fa9-cab57cd68471" chipset="acmgt1" name="Ext49" />
+    <guid config_hash="b83478645a26c217b57cff42f3b03bf1" mdapi_config_hash="b98313c3d757eefb8d74bc2de9064791" id="db09b08d-a300-4f2a-aeb0-b797e7073ef3" chipset="acmgt1" name="Ext50" />
+    <guid config_hash="027b27ac0e5a013b7d80974267bd01ba" mdapi_config_hash="84f75739a20eba4f730ec12d29cf3955" id="fc148084-3936-4dab-9b42-d7ba6ae1952d" chipset="acmgt1" name="Ext51" />
+    <guid config_hash="c65948af6faaca6eaaa4b5a4333163c3" mdapi_config_hash="0a3053a9bf34e4c812e8eeec0e407ae4" id="f6a3c36f-9fd8-49c4-b25a-dbf26256bdc6" chipset="acmgt1" name="Ext52" />
+    <guid config_hash="df10961b75bce890f27197ff4754a3a7" mdapi_config_hash="a7be445a851647c45e0697981c9b0ca4" id="a9a91699-a2b3-4841-8641-4f09f04be7e1" chipset="acmgt1" name="Ext53" />
+    <guid config_hash="626b637a0a15877846696c77d5ef4d5a" mdapi_config_hash="3767426b64103ba3602d847fbb94e1dc" id="c44659b1-937a-44bc-8819-9c1ae31d9bdd" chipset="acmgt1" name="Ext54" />
+    <guid config_hash="7c2880e5d049ddbd405fa599d85a6aaa" mdapi_config_hash="fc5263303b63feffda9d05addeaa4348" id="5bfd7ae1-27ea-4211-beb2-64565a49dfbe" chipset="acmgt1" name="Ext55" />
+    <guid config_hash="84fd99cc784524421ddec2058f933ebc" mdapi_config_hash="d03ad457a06fd3c56b1c288f5218706e" id="7aefc824-149a-4f75-abed-f6430f8d4eee" chipset="acmgt1" name="Ext56" />
+    <guid config_hash="1b71b566f061d64396f13d8763598031" mdapi_config_hash="1d779e9af2c4dfdc28c49734ca37ec05" id="0ccb67b5-7f31-4885-9973-d97e318a6f90" chipset="acmgt1" name="Ext57" />
+    <guid config_hash="8ffbe4ee825fb9f9b0663a2e31dd4584" mdapi_config_hash="cbe482acfc6210f2c6e83b67e1dd79f4" id="af47d7b7-691b-4ec5-abfd-67ce50938fe4" chipset="acmgt1" name="Ext58" />
+    <guid config_hash="5fd1e9d4b3477530518c4aa19e4f2e88" mdapi_config_hash="24f94b2640d05a5a78cfc381b06bb40b" id="0df81caa-d128-4f0e-9eff-69e0359fedf1" chipset="acmgt1" name="Ext59" />
+    <guid config_hash="ac981182d4d54e8bed42914e98b134fe" mdapi_config_hash="1c183faebb4efd797a9f3d660531515a" id="09e71710-e49d-4d9e-b7f8-0e597aabf25b" chipset="acmgt1" name="Ext60" />
+    <guid config_hash="1970fb6b4acf5e8651edba5fd0eb5898" mdapi_config_hash="f7353e7659737a8560dc6c88f2dd396d" id="374c4608-89a8-46d3-92fa-d4848e4a7a95" chipset="acmgt1" name="Ext61" />
+    <guid config_hash="a610ce08cfff3c054f7579e71b50f5f6" mdapi_config_hash="a26be652e14ae14776fd120dbd0e27a5" id="1013ed95-4958-4cfe-8fbc-1482c07046cb" chipset="acmgt1" name="Ext62" />
+    <guid config_hash="c550a26391338e8a2449cd190e577ae2" mdapi_config_hash="1692fe62dfcc589dd422e73375fbd4f7" id="7a3c4561-56d3-4b61-a619-ed8c1887e034" chipset="acmgt1" name="Ext63" />
+    <guid config_hash="29ed261052036cf0fbd58503d7bc419c" mdapi_config_hash="ec50472b4169f291bcd9207459320d18" id="7d50a975-2d8d-48c2-ae61-86decd3aba1d" chipset="acmgt1" name="Ext64" />
+    <guid config_hash="77de77319621ab975a70e13421a28364" mdapi_config_hash="7821e62cab1fc8ee6ef2f6ce696a0c77" id="c036e0c0-c23a-45ec-8b24-7ab7577b18d1" chipset="acmgt1" name="Ext65" />
+    <guid config_hash="e44c2c6fa127e5968d2601c3831704a0" mdapi_config_hash="6c8126d0bb42dd17ea781ad2760d1456" id="df8127a7-0efc-487e-a819-a20c2471e30b" chipset="acmgt1" name="Ext66" />
+    <guid config_hash="d136f506aac0742dc70ea2e73b671573" mdapi_config_hash="375ce65ce2a4ec475618717d66eadb00" id="f9d2c7da-14c9-45a4-97f5-a0d58dd3a1aa" chipset="acmgt1" name="Ext67" />
+    <guid config_hash="12870e7e4ce04e3c685784cf7d1738b9" mdapi_config_hash="3ae6645297d97040354209d5f9df5543" id="210f665b-abaa-4389-95e3-7cad6f71db8b" chipset="acmgt1" name="Ext68" />
+    <guid config_hash="9b3499f739fbe3ebc9f98bc1c2d5c1bf" mdapi_config_hash="c82d4511180c738cb3eac8e36c7e8d97" id="26eeaeca-61f0-46ba-b6ad-effb4ea076ae" chipset="acmgt1" name="Ext69" />
+    <guid config_hash="5078259374d5a73b09d6f6a2c688b762" mdapi_config_hash="7be12445347ddcd53cde7da4ccf78325" id="18a0a208-526a-4705-9b06-9145f03433ea" chipset="acmgt1" name="Ext70" />
+    <guid config_hash="cd9a83b23280bda0e6d460496d17b828" mdapi_config_hash="551313ba64fe8341b486f3c1cc64a57c" id="0677d73a-a563-47ac-8b11-9c7c3371fc04" chipset="acmgt1" name="Ext71" />
+    <guid config_hash="a9239fa89f1f0cf7c6620dc2dcad4f8f" mdapi_config_hash="cb12023502953f503bf17dae2147616d" id="0a10b421-f9ee-4147-81e2-b2ceeb74697f" chipset="acmgt1" name="Ext72" />
+    <guid config_hash="cb203c23ea26050dd482bd103414e45e" mdapi_config_hash="1673c8003c4ead48e73b044cb1214823" id="4051668d-2020-4f10-a9e7-e840455b125b" chipset="acmgt1" name="Ext73" />
+    <guid config_hash="c03aa6470417b5be7d4f5487ef062a75" mdapi_config_hash="b16cc43512e2e40c9740123f3a2eb4d0" id="0548ee0d-a4b2-42a7-86c6-4171ed191bec" chipset="acmgt1" name="Ext74" />
+    <guid config_hash="d77dc4e4035980a22d07bf5bf874448e" mdapi_config_hash="340dd4213c75862848df188c56d5f4d8" id="4604dea5-4e86-4713-b82d-fce110cb82f8" chipset="acmgt1" name="Ext75" />
+    <guid config_hash="08e1815765794370d5e42dd67c95994f" mdapi_config_hash="363dc02eb84640ac6b3d311893f3abd0" id="d4171f1f-6e14-41e1-8b9d-0e28077aca25" chipset="acmgt1" name="Ext76" />
+    <guid config_hash="5b0938a6bcc2dac189957c04420329bf" mdapi_config_hash="2eca3ee5793b0eeefb7c7bd89dedfe4a" id="8e91f318-149b-4ffe-9b51-42dd9b2c80a5" chipset="acmgt1" name="Ext77" />
+    <guid config_hash="0190f37da63186cd4c61d6126cca0cfd" mdapi_config_hash="f80a3f9424d0b2500890d305811a6d2e" id="bf68f6bc-fdcb-4dbe-a923-abaeb72e8af6" chipset="acmgt1" name="Ext78" />
+    <guid config_hash="c1550707504a93e323813e212372cb61" mdapi_config_hash="4788c65f10a4a2ef675cb5cc65feaf01" id="76b52ef9-7a1b-4475-b3bc-3a035acd32e7" chipset="acmgt1" name="Ext79" />
+    <guid config_hash="b8d4127f9c668873b67ac274dea15397" mdapi_config_hash="c2d4aeefee3086dab23215c6ce17069b" id="171d99e0-0ace-4af7-8702-19e9fbb04a46" chipset="acmgt1" name="Ext80" />
+    <guid config_hash="6de77558df213cb47f51df8c8c893828" mdapi_config_hash="67295b5dbc9f1eb7b11a297382c7cba1" id="f399ee12-9656-47fe-8566-416a8e4e4c07" chipset="acmgt1" name="Ext81" />
+    <guid config_hash="7ba7f1fe44d3d883699261d9964b4dd5" mdapi_config_hash="151393cc3171de02e5b53ef5b056664c" id="766bbe37-ffda-41f0-92da-e31184140e43" chipset="acmgt1" name="Ext82" />
+    <guid config_hash="d3d68205a754764911176ba6762372a0" mdapi_config_hash="e6ad03f903f93f9c50c09c3b1952d030" id="4d5d9009-c75e-4655-8374-503fd68ac0c7" chipset="acmgt1" name="Ext83" />
+    <guid config_hash="7f78d20b5fbb0b58d128b642abec3533" mdapi_config_hash="e2cfb5bf6cdac08453235b342a8a784b" id="fd091d19-b48d-49d2-b99e-c5505624daa3" chipset="acmgt1" name="Ext84" />
+    <guid config_hash="1cedd0dd5436db0a8a9f131dcffc247f" mdapi_config_hash="7bb34e96be686ba5d8d6bc643abf992c" id="d45a3f38-372d-4757-88cf-5589035652d5" chipset="acmgt1" name="Ext85" />
+    <guid config_hash="1cdfa73f50573c5a12ab8518fca2ecb2" mdapi_config_hash="03a97ed99c0d771ddb9df899bd97cfb3" id="46f2e8eb-1a50-499e-9096-66f79932703e" chipset="acmgt1" name="Ext86" />
+    <guid config_hash="71de590b75a77db655a0f06209c0151d" mdapi_config_hash="3319bcc11b652d32373fac2f49217648" id="35a680fa-e0c7-4e60-9a42-4e5c67d90b4d" chipset="acmgt1" name="Ext87" />
+    <guid config_hash="fe82143b346d08a105650a5fe66ee823" mdapi_config_hash="2f05b7ad1f0b5ddafc7cebba157af45a" id="e1d0a1c4-41c7-4d82-a6f0-42ea537e5664" chipset="acmgt1" name="Ext88" />
+    <guid config_hash="01c9fd39213390b28effeec74ebe4b1d" mdapi_config_hash="a1a6e3f5a5b271b64881fafc18eb75c5" id="c26ba023-58d3-4ec7-9282-f2638a292912" chipset="acmgt1" name="Ext91" />
+    <guid config_hash="461caab506bc1142902f9cf82408280b" mdapi_config_hash="0a1b817f8d78cbc130cdc52d2da72858" id="7e5a8ef5-b434-4bf1-81f0-eeddaa072d37" chipset="acmgt1" name="Ext92" />
+    <guid config_hash="c1550707504a93e323813e212372cb61" mdapi_config_hash="4788c65f10a4a2ef675cb5cc65feaf01" id="917a8688-0aa2-4b9a-a1a1-60dc016b17e6" chipset="acmgt1" name="Ext93" />
+    <guid config_hash="b8d4127f9c668873b67ac274dea15397" mdapi_config_hash="c2d4aeefee3086dab23215c6ce17069b" id="dad96cfd-65c0-470c-a9d2-33d7881234c0" chipset="acmgt1" name="Ext94" />
+    <guid config_hash="6de77558df213cb47f51df8c8c893828" mdapi_config_hash="67295b5dbc9f1eb7b11a297382c7cba1" id="811672a2-3bd6-473e-bd4b-dae0a5786a00" chipset="acmgt1" name="Ext95" />
+    <guid config_hash="7ba7f1fe44d3d883699261d9964b4dd5" mdapi_config_hash="151393cc3171de02e5b53ef5b056664c" id="91ebb988-2cc5-4cb9-b071-3a9d76f42b55" chipset="acmgt1" name="Ext96" />
+    <guid config_hash="a3be46f0437c5d4d8f99367d7bb15a4f" mdapi_config_hash="a2da0011f5563b65b6e58ad2067ef9f9" id="3e446a1f-d62b-4ea4-bbf3-845dc7f437e4" chipset="acmgt1" name="Ext97" />
+    <guid config_hash="a63f8f95431c62f66d78154d919879a3" mdapi_config_hash="d911d2365e1cc9376ce297e97683d681" id="5ff858aa-50d0-44b9-bbf7-d07881ecdd9c" chipset="acmgt1" name="Ext98" />
+    <guid config_hash="334de7afbe196e32ccba3f91a440ffbb" mdapi_config_hash="19a9b2203b3dfce6561f98e1d533ecc1" id="ba34845b-431b-41c8-9d51-5c8be2f0ac4c" chipset="acmgt1" name="Ext99" />
+    <guid config_hash="0dab9bd08f0d241f1b3b7bff15a7b3e6" mdapi_config_hash="a4be5821e680778669686d2e1b69d18b" id="978e5720-eb5a-46fc-aa24-7a34a853130b" chipset="acmgt1" name="Ext100" />
+    <guid config_hash="cdf411e1398919009c793edb3c6a1ef5" mdapi_config_hash="d0b3b253fc92a97d1d1e7d40a1e688f9" id="9320b9d5-43c9-435d-b0ed-ec8a565d742d" chipset="acmgt1" name="Ext101" />
+    <guid config_hash="00f65434ddfd767057046f4a8529109c" mdapi_config_hash="58360716f9563bf0527eab58a9477b00" id="ff32c8bc-39ed-4dbe-9d88-2d2cdb973872" chipset="acmgt1" name="Ext102" />
+    <guid config_hash="76f88688dc2cbc79b414c4f87de1ffd1" mdapi_config_hash="57663957a360068e72c665f510c5e03d" id="73a834ac-afbe-4ca1-af18-af9aabc0280a" chipset="acmgt1" name="Ext103" />
+    <guid config_hash="5bd9e967fa142c9cd99ce18942cce146" mdapi_config_hash="f4cbe312ad55a843507568f33ebf4948" id="eb13a257-4c07-469e-8bef-55da7dff1b41" chipset="acmgt1" name="Ext104" />
+    <guid config_hash="6faa9519a6a3ea870fd0455d1d0b1c42" mdapi_config_hash="df94ec94cd4f8b182bb2e11117efe708" id="0343e7a1-8f7d-44b8-a75c-73baef6cc22b" chipset="acmgt1" name="Ext105" />
+    <guid config_hash="c5b60a8b8d9b458cf541728c63fc1401" mdapi_config_hash="b3e49a50efa2110de26dce1314c6d3fb" id="048a2bcb-b786-4b51-b350-8908f50e69d7" chipset="acmgt1" name="Ext106" />
+    <guid config_hash="af725fdf810c81708ed915adc4958b31" mdapi_config_hash="d55a8dcf74374a916e50477874564051" id="e393956e-78b0-4f7e-8482-cb13c1706ecd" chipset="acmgt1" name="Ext107" />
+    <guid config_hash="b3d0672f1145734142cd778b220e6d5c" mdapi_config_hash="b8a1b217157338f594c735597903e064" id="2ea41c1b-4751-446f-b178-9aa17cf85d72" chipset="acmgt1" name="Ext108" />
+    <guid config_hash="aaf1aba5206945089786b80ee5dbbce3" mdapi_config_hash="665caf49abebd4fa0fd7db4dc10b8c0f" id="32b61c78-b7d2-4162-8964-dbf47f187290" chipset="acmgt1" name="Ext109" />
+    <guid config_hash="7154499c71bfd907f108bb2027c766b7" mdapi_config_hash="9a3e1efa778cc11535c5e236498ffaba" id="536ed3af-e1e6-4f5a-be8b-3eabfa9487fa" chipset="acmgt1" name="Ext110" />
+    <guid config_hash="547f2d8ffd47d9568936e7195ebef561" mdapi_config_hash="4dc7582d62a68ce09049cbab94dd8f1e" id="11eedd05-3490-4a57-8ea7-56e1d2dd066a" chipset="acmgt1" name="Ext111" />
+    <guid config_hash="dbb982cd29b346a7fa3640d9c2db8adc" mdapi_config_hash="963f6749d596acd802831ee8284e92e7" id="2324dd37-ac7e-4a5e-8d0c-f7b94fd36961" chipset="acmgt1" name="Ext112" />
+    <guid config_hash="dfda4f47ade0b496dd2d500e293537f9" mdapi_config_hash="0adf78de606d7b56bca529d410dd0cd5" id="03551880-b834-45f0-8b71-e61f548e5d83" chipset="acmgt1" name="Ext113" />
+    <guid config_hash="812fd46833424d9eb0d05ee28f3e9365" mdapi_config_hash="91bd557a7b5f5fb05169b2a434c14ace" id="8d368e2f-7c30-4a9e-a20f-b098105300b7" chipset="acmgt1" name="Ext114" />
+    <guid config_hash="c5442482b5d76fbecca8136a426596b9" mdapi_config_hash="17e398bab2a10acc1afa048d8b17b622" id="cb96d66c-bfc4-4de8-a3dc-5d67c5acda38" chipset="acmgt1" name="Ext115" />
+    <guid config_hash="33b58de69e947a671ad57448198b5b46" mdapi_config_hash="e6a643e3eee08059b653de6565148a70" id="2355cc8b-c596-479d-ab76-16c2d3644b5b" chipset="acmgt1" name="Ext116" />
+    <guid config_hash="c3cb81f0b071c85b13c2cf08ae14bbb3" mdapi_config_hash="e96ff5b4ea7dfa7eba7e649d2f177043" id="006584d5-ebb1-4d21-a8ab-cfa66e75dae4" chipset="acmgt1" name="Ext117" />
+    <guid config_hash="14b20811c2c2318e80b542ff3879654f" mdapi_config_hash="05ec953ec963b69a62ec53c5b8ec6972" id="9ae38060-8785-44ec-a758-4082b94af42d" chipset="acmgt1" name="Ext118" />
+    <guid config_hash="bb81ce9686f82ee27a3e71e99f144c1c" mdapi_config_hash="6d808ffc8031ed3235b2fb62d5138ad3" id="8ef448b2-776c-4d73-8a44-eabfb2fcc888" chipset="acmgt1" name="Ext119" />
+    <guid config_hash="08f78d136c39dab6db05a652d0608dae" mdapi_config_hash="ad30e32ab47c0b4bee479e434443d1a8" id="3b5b473c-259e-4eb7-8643-a88b53aa2e1c" chipset="acmgt1" name="Ext120" />
+    <guid config_hash="646acc562ed82884a3461f07162ec912" mdapi_config_hash="963f4359857199bbfc3fb3e339806659" id="f2045966-fcf0-479b-aef4-0358574f67ee" chipset="acmgt1" name="Ext121" />
+    <guid config_hash="c57b8fa92ab135ad9aa90ed90993938f" mdapi_config_hash="077f4d70e66e7ad22189f8e91eacb79a" id="e175d8c3-7672-4e57-83a0-87caf56a5440" chipset="acmgt1" name="Ext122" />
+    <guid config_hash="541656fadae59b87e7767e418e2fb496" mdapi_config_hash="5a5456483d752bff51426fca7dbc3a80" id="7f7218b1-462c-4f08-8032-86e426dbc83d" chipset="acmgt1" name="Ext123" />
+    <guid config_hash="b5de9a4dd9da9c6502f6cd3c5fd212c0" mdapi_config_hash="20bc797bcce3ba76e4085454a0585bf6" id="bd7a8af3-2d23-4c95-9cb1-429840dfc38f" chipset="acmgt1" name="Ext124" />
+    <guid config_hash="1c44b1bcadec2656fbffb4ad467c7000" mdapi_config_hash="8983c6d0d569869031b460755f781856" id="2e16a8a7-613a-4df1-91bf-eec73d281822" chipset="acmgt1" name="Ext125" />
+    <guid config_hash="33d81eee011fe0eb1e07dca082e37e9d" mdapi_config_hash="b5eead3b9158531950af4fda3f2fd895" id="7cddf3f3-4ed8-484d-b8c7-82a4857ad030" chipset="acmgt1" name="Ext126" />
+    <guid config_hash="2541a923559b89e096312f25291f3a56" mdapi_config_hash="d3611aec69ee7d4be3ae9b4f61a30fd0" id="cc78dbe3-bf19-4e4f-8957-c75488d8a47b" chipset="acmgt1" name="Ext127" />
+    <guid config_hash="52228f4f134a3d67aa2c47b5d90e41b7" mdapi_config_hash="c3444a5f01a4b0f1b5b3593c9864914c" id="9722a829-b7e5-4716-b62e-ff6cb930232b" chipset="acmgt1" name="Ext128" />
+    <guid config_hash="7770de77f7a96738f93607fad710f052" mdapi_config_hash="079deb439f2c075c8f7bfd83a7c20f1a" id="4d7bb9a8-4b02-435a-b2be-16a2314c421d" chipset="acmgt1" name="Ext129" />
+    <guid config_hash="28b1d112fca73254fe836d767bc09cc5" mdapi_config_hash="b20dc315eaec1e299473f9afe76b3fee" id="307951f8-0159-4d0c-bc8f-04fee7247e0a" chipset="acmgt1" name="Ext130" />
+    <guid config_hash="f28bc24b5f2f0af90d1c7ecbe81cf63c" mdapi_config_hash="d3f0e2966b0ecea7dd97ac151a7872ee" id="aa04f1fa-826e-4b25-a7a6-4fbb4a7d0dd2" chipset="acmgt1" name="Ext131" />
+    <guid config_hash="55940375eada7d9e77c0d6c20af8c841" mdapi_config_hash="8d8b1ebc95f5448cf6a234ac02cfae7e" id="9121bb2c-a28d-4796-a60b-52905e317576" chipset="acmgt1" name="Ext132" />
+    <guid config_hash="82dbf6cb5eb61b5bfaad996e73f51f95" mdapi_config_hash="673f1150779b67b72218e18d29d1c50b" id="14a8d00b-a361-4bc5-94fe-4664b837cc56" chipset="acmgt1" name="Ext133" />
+    <guid config_hash="676a59a9f81d7ba65913df56d804733a" mdapi_config_hash="3d5f622d4122f3536ba117713ae0d394" id="74fda750-6436-4a97-897b-8eff0a63de70" chipset="acmgt1" name="Ext134" />
+    <guid config_hash="ddc017469ab0800b55c472101abf2a7c" mdapi_config_hash="83d7b8f2ff34803dd62c7cd242be4bbc" id="1712c473-6635-49af-a6da-43c724c96dcd" chipset="acmgt1" name="Ext135" />
+    <guid config_hash="e66c1a3078d45e4eba55ff67672595d2" mdapi_config_hash="e93269c4c6b92f99cb87ce1c291604b4" id="5c1a57d6-2dff-48ca-98bf-02c71a22057a" chipset="acmgt1" name="Ext136" />
+    <guid config_hash="d889f4982005a8be6a9032b55a53f661" mdapi_config_hash="eb63aef957a615915f35a63942071700" id="6ede1a62-069a-4b3d-8b17-000005541bfd" chipset="acmgt1" name="Ext137" />
+    <guid config_hash="7569421c86416bdfef5ea87766553659" mdapi_config_hash="f986e11d7c0bd27e898c1a335c7c05da" id="4a31afda-7a08-4d3d-91fd-138bae3eb836" chipset="acmgt1" name="Ext138" />
+    <guid config_hash="76431bdb2c840d296d08fb8490fa412e" mdapi_config_hash="5916bd135a5e11f46cdfff26e5df894f" id="c800871b-2505-40f3-99e2-6c0ccb9102f2" chipset="acmgt1" name="Ext139" />
+    <guid config_hash="59bb5b34670411dba6ec563832b0194c" mdapi_config_hash="38ac5318030f247a1d1f71b6ffc79730" id="067cbc21-6b6c-48c6-b47c-922a27b60b30" chipset="acmgt1" name="Ext140" />
+    <guid config_hash="23300ecf639bf4d6f03ce687883ad6ef" mdapi_config_hash="f01f79b830965539a25808f87b675224" id="e8ee8621-7110-4d70-9651-846fd4fa3c3c" chipset="acmgt1" name="Ext141" />
+    <guid config_hash="6be90ac264f6686075e7b0983cbafb45" mdapi_config_hash="5940a41ff1b27c7f40dece9288fec68c" id="87a9d5f2-2029-48b9-bbd3-78867e022166" chipset="acmgt1" name="Ext142" />
+    <guid config_hash="97014e93fa896b41c6a6249b290a4810" mdapi_config_hash="79935c695e94c27bd1c5aa7d5f8fb9b5" id="bffa2382-3aff-471a-92af-5dd571c7868f" chipset="acmgt1" name="Ext143" />
+    <guid config_hash="5834074eda185c8cc325c2b7f132e3d7" mdapi_config_hash="cfa85b8484c57014397c4874d0f54891" id="951f3ee4-6a3c-470c-b403-c01ee6a7e97d" chipset="acmgt1" name="Ext144" />
+    <guid config_hash="a8b569a52638fef946a6cb5410c99d6c" mdapi_config_hash="2a98991afe86f48f7e776d105f412d32" id="4d34c592-973b-4e75-a451-cf4ad90f79e1" chipset="acmgt1" name="Ext145" />
+    <guid config_hash="e6d0d033ae35a3e8300b39a13c4ea1cc" mdapi_config_hash="7bb9c8d361090eb4a40bf2e4de80d45e" id="4a881a06-44b8-4199-a609-e0e4e22631c4" chipset="acmgt1" name="Ext146" />
+    <guid config_hash="fa5beb51e65b39aaaff4e502d0e6a06e" mdapi_config_hash="f1916b9e3cd30c4346be0539fa09c792" id="20b339b5-abb6-48fc-8a09-bb4cafacbb72" chipset="acmgt1" name="Ext147" />
+    <guid config_hash="a5e21e9d2f3b381db9fce8d35cf19952" mdapi_config_hash="c50ef475e25bc2d4c3f4493015e9dc90" id="8b62b22b-a467-4638-a113-81a5c59d64e8" chipset="acmgt1" name="Ext148" />
+    <guid config_hash="b968adeb9021a13e0f2263500f6a3833" mdapi_config_hash="c70a6d563e125c3d94425ee1ad7f0678" id="a563237d-76f3-45bc-82d7-c4a441c9230c" chipset="acmgt1" name="Ext149" />
+    <guid config_hash="5c0aca3eefedb553f92bcd63514e29fe" mdapi_config_hash="a49da2e3406c3e44cc79dab1bd62b286" id="dee6b408-d907-4eae-a961-7262816be56c" chipset="acmgt1" name="Ext150" />
+    <guid config_hash="d658163dc7d15f51bcfa16b94eb00bf1" mdapi_config_hash="a9602665e74fd06fce336790d4969b28" id="c2bf9d7d-0998-483b-bede-7ced3f8cf423" chipset="acmgt1" name="Ext151" />
+    <guid config_hash="b52c6f39fe2cb4069835665013ae1067" mdapi_config_hash="7506b0638b426552ff36724edc616b02" id="06c6ecdb-9b66-400b-83ca-484309fba532" chipset="acmgt1" name="Ext152" />
+    <guid config_hash="07f1fa5eab01e0979008b318bb18e0b3" mdapi_config_hash="a879c73b8ffa76232398a36e29e025c5" id="af12ca37-4f11-4c7a-b6b3-695210972c92" chipset="acmgt1" name="Ext153" />
+    <guid config_hash="9cb71e8d432d5abeadf3a8f3dedc9300" mdapi_config_hash="09bc198f7a44f1505d34e8aa7145d20d" id="f72930f8-79c3-49f3-9fa3-07a05070d1fd" chipset="acmgt1" name="Ext154" />
+    <guid config_hash="888c5441777eb18dfafb04ccbbabc63e" mdapi_config_hash="4684fcb9f09f632579567c77d3e11a12" id="ac5346ae-2be4-47d1-8300-6e25c445297d" chipset="acmgt1" name="Ext155" />
+    <guid config_hash="dcffe4412b7fe076c6b2512e3795bd39" mdapi_config_hash="1840f16963fe0890e9830e4cc50cf7b9" id="f8f7091d-7f71-42cf-84de-8ad23fe45432" chipset="acmgt1" name="Ext156" />
+    <guid config_hash="c557ae19d5c006a14f9d599e7d93182e" mdapi_config_hash="5940392ed7093a62f549687907af0bad" id="ac6eecdc-0074-4a94-9269-48b5e3833439" chipset="acmgt1" name="Ext157" />
+    <guid config_hash="8c230a0109d0d2352a5ee9557ce72ca6" mdapi_config_hash="b7b0d316e74f43e17e7e50d34fb34014" id="4c27f089-06ab-4c33-b084-fc7cc9cc78ea" chipset="acmgt1" name="Ext158" />
+    <guid config_hash="7c79bd0534b65f2550b179e1f454d38a" mdapi_config_hash="c6718e4bb039e1da93839b0461171ce2" id="1918a5b9-f991-4451-afff-565a739dbfb9" chipset="acmgt1" name="Ext159" />
+    <guid config_hash="35c217ed780ba0cb9f4b8fd8862725aa" mdapi_config_hash="8b4c9654098dcbeb200d1d912ff6dba2" id="6cf8ce0d-617c-4ed8-962c-6b750c0cf012" chipset="acmgt1" name="Ext160" />
+    <guid config_hash="604a47fc01da97814df40e74c343b6af" mdapi_config_hash="e68dce7ab35522ba00b6bd7b0a03fa48" id="453d205a-8bd1-4ebe-b617-1168cbfda3ca" chipset="acmgt1" name="Ext161" />
+    <guid config_hash="9913f4fa2c601a9e7bb052e57cdfa7d1" mdapi_config_hash="26db04f8e7f6b37025289329820079dc" id="9d94eefc-0c25-4725-a6af-3eb468cae42d" chipset="acmgt1" name="Ext162" />
+    <guid config_hash="07805a92788aa3b698fcb69715e9d077" mdapi_config_hash="c08395849f5c0c80b27aca3eeafea470" id="fbba6a19-98df-4a94-9a42-2660674d8e25" chipset="acmgt1" name="Ext163" />
+    <guid config_hash="51855c8bac86872917a66d0187f7c5b6" mdapi_config_hash="c5bb813efe5c112728ffd4ffcc5e54f8" id="ec971ed3-3fb2-4d4c-bf27-08eeb418dc68" chipset="acmgt1" name="Ext164" />
+    <guid config_hash="04545ecc50b3f013a688e4ad9c463907" mdapi_config_hash="e7c76293ab50c4f6221e8e1e150bf5d9" id="a1d6b535-1d00-4951-bdcc-8586b9ba7c0a" chipset="acmgt1" name="Ext165" />
+    <guid config_hash="e395d03773d9eab337244898db0fb89e" mdapi_config_hash="2ea8208d937ed0cc22b25c84949a4ec6" id="5f78bfe9-b17b-4df2-b1de-54e7c84d93ab" chipset="acmgt1" name="Ext166" />
+    <guid config_hash="3a442c930a8f7ca95ee6dc1620c2a11b" mdapi_config_hash="e2426faae7e57dcc2ce905aa984b10f1" id="c76128ab-fe65-4ccc-94ea-f351ccbd5f16" chipset="acmgt1" name="Ext167" />
+    <guid config_hash="7948e4a15362974affa25138054d6c6a" mdapi_config_hash="d43502fe41d3881002b288a2460606ab" id="fac0445a-ae46-412e-bf26-0b4dddd64485" chipset="acmgt1" name="Ext168" />
+    <guid config_hash="857e476f2817d9ef41011cf7b68af59b" mdapi_config_hash="1deabc74574a3fca3acb201789fd546d" id="386322a7-4cf5-4bf9-bbd9-35a6477a4479" chipset="acmgt1" name="Ext169" />
+    <guid config_hash="21388f53af5966ab4a742b05690659ea" mdapi_config_hash="01ff8f7baddcd345049ec8af458b50de" id="b175ecb9-b8cd-4f9c-97d4-73bf5cf12fa7" chipset="acmgt1" name="Ext170" />
+    <guid config_hash="b1683389c5870c195ef875f67da2eba7" mdapi_config_hash="4b69e7390c790e0e859f6b3bfefe040e" id="f2b8f05e-1936-47b6-b1ac-99a441971cea" chipset="acmgt1" name="Ext171" />
+    <guid config_hash="e5dbd4c2f74d568fa61a926a0c26768c" mdapi_config_hash="ca3e762d09e1ba42a80275552827ced2" id="72ae9945-8887-4c8b-acd6-559e4b92203e" chipset="acmgt1" name="Ext172" />
+    <guid config_hash="d60274e2d6d33f0aac5fe66c88ae7745" mdapi_config_hash="3b75890a46add6824dee3a488b932c7c" id="1861b4c1-3950-4855-a8db-6e0b90fc44aa" chipset="acmgt1" name="Ext173" />
+    <guid config_hash="c4cbd0d5f79d939528bf99f3c9d19f06" mdapi_config_hash="830845e5c1a7eaac5c279444ca53a68e" id="b29accb6-ff91-45d5-953b-2ca3c0983f66" chipset="acmgt1" name="Ext174" />
+    <guid config_hash="b5c3801c4d7f0805bdadd73395de63b3" mdapi_config_hash="b156b7caa8403ea387aac418dd000681" id="218c081a-6fe6-4a26-afb6-ca6bd1bf78eb" chipset="acmgt1" name="Ext175" />
+    <guid config_hash="92965f8f98c2ac74cb086d8e0a5f8ec6" mdapi_config_hash="84f869fc7c855520e201c3743d5a249c" id="f7d99e5e-4cb7-47da-835f-ec31a8838dc5" chipset="acmgt1" name="Ext176" />
+    <guid config_hash="f53b3396bf7a5a0583f9d799788ec87a" mdapi_config_hash="0603e1b4d6ae13d1ceb7d7e7f101ff6e" id="da0fd1f5-25bd-44d7-aced-87d78f3f0a7d" chipset="acmgt1" name="Ext177" />
+    <guid config_hash="a848277d97c7cf23195bae0613ce5afb" mdapi_config_hash="2db7e834c32ac0b499c8db71423e7b05" id="e1495a70-d6ea-4867-aa48-4135567bf19b" chipset="acmgt1" name="Ext178" />
+    <guid config_hash="23480ec698fed6b016fe7e2f24427e4d" mdapi_config_hash="705755afc8ecaea45b2ec83a4f437291" id="d2b946b8-ddbc-47bb-b02d-f89652163b6a" chipset="acmgt1" name="Ext179" />
+    <guid config_hash="94ef64f24ad8c70496934cb35ad7904f" mdapi_config_hash="c8226547ef53e1ed62bb0601038c0c89" id="44915f22-aaca-4871-b8ca-7a83aa83d605" chipset="acmgt1" name="Ext180" />
+    <guid config_hash="c8da848485fb2a10ad3160d208fe5d3b" mdapi_config_hash="302146d82d8f774d8ff506b7bad22fcc" id="fe0eda19-22d8-410e-b61d-24bce297d8ae" chipset="acmgt1" name="Ext181" />
+    <guid config_hash="2d8e82c9343238ecb411ae60acabb82e" mdapi_config_hash="9650fe0004b7911ec21ab17a7be7a0c4" id="aef5adcb-e3ef-4839-aea5-a6bbb9bb5faa" chipset="acmgt1" name="Ext182" />
+    <guid config_hash="8b9f3bf34f2d3c62b8b6e8a25f345e6c" mdapi_config_hash="477a24237a8ae6609ce26951d9906482" id="1cf7ed05-8260-4abe-b00c-7f3ae3441d4b" chipset="acmgt1" name="Ext183" />
+    <guid config_hash="65823700cb27a3511db3893df627340c" mdapi_config_hash="6fd71469af2adf045b72f40701246365" id="39badcb4-5410-4218-b272-1e5edc606b5c" chipset="acmgt1" name="Ext184" />
+    <guid config_hash="1d1adf473dede14cac82d966e834c82d" mdapi_config_hash="842415ea688559f6802382682672f2e5" id="e1e40930-36f2-480c-b15d-cf2fb07f18e1" chipset="acmgt1" name="Ext185" />
+    <guid config_hash="2ba9800bf3cb57a4da14f82928c67398" mdapi_config_hash="cf0037ecc186702f368df7b980269fa1" id="4edf8144-d144-4110-b34c-0f6133409bae" chipset="acmgt1" name="Ext186" />
+    <guid config_hash="ece2e98ef546e8fdc50d12eab7d71bed" mdapi_config_hash="21271b27f8a41301e8fa9bd4ab328dae" id="a035c742-180e-4bf0-8009-5668cb08981f" chipset="acmgt1" name="Ext187" />
+    <guid config_hash="cdd16828dff28943f225ff159c0f5a52" mdapi_config_hash="c76a7c4a68e1c738aebb6d832bc88589" id="1236f8d6-fa44-40eb-addc-8e4695b02ab3" chipset="acmgt1" name="Ext188" />
+    <guid config_hash="85e29c24456fa871dcb87f305e0140c0" mdapi_config_hash="b32c81a656e0b0692e1985c223afb0df" id="d37f51e7-16dd-4616-88a0-cfc54b90a43f" chipset="acmgt1" name="Ext189" />
+    <guid config_hash="0ad3bbfa2aeb4d2b449d6f43101931cd" mdapi_config_hash="70c6c88ad073893c8624ed20673ed0fd" id="c9ac09ca-af08-4072-8e8b-dbc81cd95ada" chipset="acmgt1" name="Ext190" />
+    <guid config_hash="e64a4fa60526e0d951731a93329ff1d6" mdapi_config_hash="48bd683c1de30f027d832c89df7841cb" id="9e1699e6-cea6-46de-bb89-050415f0a8a2" chipset="acmgt1" name="Ext191" />
+    <guid config_hash="a91cccc12d8966a3ff456c56599cc805" mdapi_config_hash="ce4527482c9b6eb92192c0a8e93f52c3" id="e671dd75-968d-49e4-9c03-5269d95de66e" chipset="acmgt1" name="Ext192" />
+    <guid config_hash="55a91f48dddc3417ceeddd2c1db1ebdd" mdapi_config_hash="d6406f5a85d661045b3b840d475680f4" id="9a53799a-f746-4d6d-a723-57af53243454" chipset="acmgt1" name="Ext193" />
+    <guid config_hash="afab6f08fa93d48cc8c86dd6ef451b8c" mdapi_config_hash="3d7b6804ef19dee55a7ec8895bfb3f3b" id="3b4157d9-9905-48c5-a9fa-3f53f94b9b5d" chipset="acmgt1" name="Ext194" />
+    <guid config_hash="571e08e397d67e114b9ae50f18dbaab9" mdapi_config_hash="580a0056d940c4e47fa87a1a4f134106" id="b7468d66-8862-4deb-aeb7-d2cefa81ea0e" chipset="acmgt1" name="Ext195" />
+    <guid config_hash="963bf529feff600aa3a4094b02016c11" mdapi_config_hash="21cefdaf4f5b32f25e7c9ba83c2ae6fb" id="a09b78bb-b10e-4250-84c5-336f839c4e0c" chipset="acmgt1" name="Ext196" />
+    <guid config_hash="e8525f80ae6aea52ca46a1ad0613b7ed" mdapi_config_hash="55fca8f4273b872b71e9b0dcfab070cf" id="8b7e5a75-7734-4d48-bdd7-0adf976b8a89" chipset="acmgt1" name="Ext197" />
+    <guid config_hash="8e61af04e6cc7b31995cfa7eaab214f9" mdapi_config_hash="367308324b88151877ec160474dc4313" id="8157717a-d7e3-465e-a6b9-a5a5d4902b49" chipset="acmgt1" name="Ext198" />
+    <guid config_hash="c2dfaa6c92411bf8d12b7de300db927e" mdapi_config_hash="1ca97769ab5b0f1369fafa639b3b63a9" id="fc122f7d-c66a-458b-a06c-cee29569262d" chipset="acmgt1" name="Ext199" />
+    <guid config_hash="0ead438a310183129e09f8f44ab75620" mdapi_config_hash="6555926f971e2592381817db5e2146f1" id="80da4065-1cc6-4e17-8594-731e1acc01ef" chipset="acmgt1" name="Ext200" />
+    <guid config_hash="f11f6e82febb1c53137bee7e1550caeb" mdapi_config_hash="9b2b0b068414507e89fd35009d30d55a" id="5c664618-1692-4ded-b6bb-a9e17f37250d" chipset="acmgt1" name="Ext201" />
+    <guid config_hash="aacd63fb18fb085688a206352d3d76bf" mdapi_config_hash="3370c56f2f4bf2d6499a8c422f40f630" id="671c0d10-0f02-490f-acf6-2d2a88c0bc62" chipset="acmgt1" name="Ext202" />
+    <guid config_hash="860d7ddea477c3016b49bfebd5800154" mdapi_config_hash="a5552fc70c572fd1dacc6081502ea76a" id="d1c46c3e-fd18-4ca4-905b-64b95a6f10e8" chipset="acmgt1" name="Ext203" />
+    <guid config_hash="beb1b18cc16f797a2e82c02869235d25" mdapi_config_hash="1de83bc512187b0e4c80028d28a0616d" id="4e426fcb-9591-42a4-9b9a-7207d548bc0b" chipset="acmgt1" name="Ext204" />
+    <guid config_hash="82a2f46c4eef6d9cddc0b121fdf25171" mdapi_config_hash="f806294b27a9f4bc0743049749279c4f" id="12aa9868-f7c6-4c8d-80fe-cc1605608ef1" chipset="acmgt1" name="Ext205" />
+    <guid config_hash="2e41aecbbb175c3cc8ce6c71fc6a2456" mdapi_config_hash="15f2b8c96079fb0d22f8a70a7b82a81d" id="7a64382c-70d1-41c4-a1e9-28a8bcb4785a" chipset="acmgt1" name="Ext206" />
+    <guid config_hash="6ee3ff83d61794660af8edefdeb312ca" mdapi_config_hash="f4435ca88925816e7b329f36fc365223" id="2fa63ea7-c2d9-40fc-b9d5-74cf4a7a3761" chipset="acmgt1" name="Ext207" />
+    <guid config_hash="ed66f125d1a6288f9e744a3a012b9eab" mdapi_config_hash="2deb80294fb1d10c393dbeb19cc9a272" id="c26befd3-0199-4b5a-9768-963eded47ddc" chipset="acmgt1" name="Ext208" />
+    <guid config_hash="d070985e3873f5c426ab81284beae9bc" mdapi_config_hash="c3dd7e3225334fe0fbada0150e1835d8" id="6ac62a5e-3593-4f68-90c1-452cbc83af7b" chipset="acmgt1" name="Ext209" />
+    <guid config_hash="e350f7c72e22d5f9e16ceb58a5176ce7" mdapi_config_hash="b27726f0242de4625cbfa2dba61e450e" id="869238af-0548-47ba-9703-fb4d12825f89" chipset="acmgt1" name="Ext210" />
+    <guid config_hash="b7a2bad2e3db75626d0c1ea6ab2fda04" mdapi_config_hash="1a1710d5c47135cb3c4e5d438ab93cec" id="1986e401-2a47-4ced-be1e-1412f795388f" chipset="acmgt1" name="Ext211" />
+    <guid config_hash="4c013e7592931a1c49cff2a9b5008ccd" mdapi_config_hash="d5e721c891920ce6edad86dbf29d3eec" id="61f0e78f-0095-4595-993c-0d2a7b474f05" chipset="acmgt1" name="Ext212" />
+    <guid config_hash="2ff9fdd0f973d1b2c9981a73e4c11a57" mdapi_config_hash="6037ab583666d0712c47d02cb906a976" id="aac878c4-c131-4e46-a022-673b0c0f6adf" chipset="acmgt1" name="Ext213" />
+    <guid config_hash="2204c90670f09655ea8a4aefbacfdfbc" mdapi_config_hash="7718c7f404e43bd1aef3d373ee1032a6" id="02fc686b-6061-4224-957b-0c80f4fb5973" chipset="acmgt1" name="Ext214" />
+    <guid config_hash="0fa38b874093d098ea91a3bd99af92db" mdapi_config_hash="0c4a2e0e4b1c911ae03c911904a5675b" id="6965f87c-43a9-437b-9bfb-78e30f504806" chipset="acmgt1" name="Ext215" />
+    <guid config_hash="0dbca4480da832f2b9793898ca72cb4d" mdapi_config_hash="5854c837a22ed98fd5eff9fd6df26f79" id="834f9ddb-0ef2-47a8-bcf3-871cf2b5634e" chipset="acmgt1" name="Ext216" />
+    <guid config_hash="81f19bd1f4670e075909fedacd30b88b" mdapi_config_hash="b2a9f3ed862189e64a45f8c08add29d2" id="dd1c62fd-8d41-4f1d-a980-95eba5b62d3d" chipset="acmgt1" name="Ext217" />
+    <guid config_hash="a282e7cbb57df81b6a723aeb2e205092" mdapi_config_hash="77b385307a36d49b59450fee078d4272" id="1a1e9195-858b-47aa-8f1c-c66eea6efbb9" chipset="acmgt1" name="Ext218" />
+    <guid config_hash="a75d849fbca5e34d2993b4cf7e41aa9a" mdapi_config_hash="cd8713a3c6807080e662f4f9a9d73a46" id="a75e98da-d723-42d0-8cd2-c4dc704e6aa1" chipset="acmgt1" name="Ext219" />
+    <guid config_hash="70261a93ce4650d846fe430ab7fcda40" mdapi_config_hash="3bda96e4f7e882ac7dfb065e9a8b41c1" id="440ba901-38f7-495d-986b-486534274741" chipset="acmgt1" name="Ext220" />
+    <guid config_hash="56a4bd04f44424a407d92c3c75044fb8" mdapi_config_hash="13206261e313debd6d6c2ef1b8df6176" id="6d047d05-95ca-46b4-aac3-a7b055b8fd15" chipset="acmgt1" name="Ext221" />
+    <guid config_hash="8f6c91a5e970a5048e55a4517b650dec" mdapi_config_hash="4c0a273f63e225fd4fec4b22741318a3" id="a338ef12-c1bf-45f8-8c0b-084fa99376c8" chipset="acmgt1" name="Ext222" />
+    <guid config_hash="e160804e09a5607f5e1b226cb4935926" mdapi_config_hash="e84d31b2c04f8e8bd179ba877325b6cc" id="2684ee0f-2950-4445-939a-549f07d3370a" chipset="acmgt1" name="Ext223" />
+    <guid config_hash="af65d1ae7b8dc14e99a9cf4f58cc9e8d" mdapi_config_hash="9a8ab35720351d714b3d6e9aae109f95" id="e1de83dc-4fb2-4e1a-852d-9c5e49bf45db" chipset="acmgt1" name="Ext224" />
+    <guid config_hash="6c07fa24d7b4defe09008f9ffecab192" mdapi_config_hash="9ec8053955ed7565061a683ad3c8f883" id="81beafd2-8d1e-46bc-96c0-7f914522a760" chipset="acmgt1" name="Ext225" />
+    <guid config_hash="8c0460b9c0e48f4a64020d0dd37c8f7e" mdapi_config_hash="b21942eb6a9ff37c65d3e210ff331980" id="e299ef7e-7be1-4554-a5c7-e64d36be98e6" chipset="acmgt1" name="Ext226" />
+    <guid config_hash="73a49c0333e18513b6aadc429d072d67" mdapi_config_hash="3cd5f41724914fa12a8e0b2372db6400" id="e9d1019b-205c-4d1e-a2a7-fd7708a6ad91" chipset="acmgt1" name="Ext227" />
+    <guid config_hash="2e4d3d499567062a97d9aa13809d3533" mdapi_config_hash="aa100730afb50729fa562dafa28689a7" id="ccf8706c-40ea-40a6-ab4c-47e5b32a1485" chipset="acmgt1" name="Ext228" />
+    <guid config_hash="6a19e9e3497eaff3ce66618dbde20ef0" mdapi_config_hash="6a0112d99e95a9d5426155190ce64c1b" id="2ebb4747-7eb7-4a65-96f8-6a57131a5e82" chipset="acmgt1" name="Ext229" />
+    <guid config_hash="195df4681d7198f5631062d25f2edd0c" mdapi_config_hash="0a5b381836c45fc8a14737b06877372b" id="baaa8d7e-40b7-4abd-991a-d71265437230" chipset="acmgt1" name="Ext230" />
+    <guid config_hash="5d2eefa979d4c0db01bbcfdcf3ca245a" mdapi_config_hash="3633f6117ad1f4bdd29e2bd2c77cddd6" id="a57ee736-e6ab-4e8b-a719-3a63d7d20f34" chipset="acmgt1" name="Ext231" />
+    <guid config_hash="25d0f6725e5b3c88f738e2492c063363" mdapi_config_hash="8cadc932b5ef29d27d16b5009e9ccff9" id="c33082a0-ae0d-4679-adbc-9566c75ffe6a" chipset="acmgt1" name="Ext232" />
+    <guid config_hash="af5f05fa3cbf4463fd5efaf4435632a9" mdapi_config_hash="62b378e721b105a41e85292337e7d7d6" id="3381cf54-6e4f-48b1-81c9-d5cfd542d316" chipset="acmgt1" name="Ext233" />
+    <guid config_hash="5f0ff9ce44509e07359137b83c40a050" mdapi_config_hash="dd0195354e6f119221975d5dcbe16acf" id="b7f1e445-7aaa-4fe3-a7f1-53fe57e1a7c8" chipset="acmgt1" name="Ext234" />
+    <guid config_hash="c57d96d553d437bf0c0ba4b7d48541ba" mdapi_config_hash="0c084157d183b56b77156c47e5b53cdd" id="7e29d0d3-2ec5-4716-90d4-917c7b3cbdca" chipset="acmgt1" name="Ext235" />
+    <guid config_hash="83d6433f9db93399da432bc21e274d08" mdapi_config_hash="1678730ecfb5b5382eeff06f0423d719" id="ae42189a-f2a1-4494-84b0-f2d506decbc1" chipset="acmgt1" name="Ext236" />
+    <guid config_hash="8a2219263d91fa782b154fdcc20c8246" mdapi_config_hash="e53c035736288a34d9689782f5d7411f" id="6f65878e-1b6b-4a3b-8107-837073903643" chipset="acmgt1" name="Ext237" />
+    <guid config_hash="75645472bf7411c9ec4592746ac24bc4" mdapi_config_hash="1b655ed590a8b791f963d785157f5bdf" id="a1c8b5b0-7b8c-4dbc-a4dd-eb29f8055ab0" chipset="acmgt1" name="Ext238" />
+    <guid config_hash="e6e1bf7b7add5f4a06e6efc76ddc1a91" mdapi_config_hash="a5d4b65a3d2eaaf68cf9f6a5f7b06d0f" id="cc574967-0ba6-4c22-801f-881b3974395a" chipset="acmgt1" name="Ext239" />
+    <guid config_hash="f5fff228cac4a33a2ad3fa6cfad15324" mdapi_config_hash="3ec7dc1e09de82b25cb41587a64f6226" id="d96495d3-d734-4b58-bf54-ece1a4a1ab09" chipset="acmgt1" name="Ext240" />
+    <guid config_hash="292301c8cd06bb2ace701f88fcb74444" mdapi_config_hash="0447383cbb462c27879caaf77e6b4c63" id="1c157760-179c-40d1-aa3c-b419f609ea79" chipset="acmgt1" name="Ext500" />
+    <guid config_hash="c88166576d30bc0d817949d89eb4afdb" mdapi_config_hash="a195cf96c2537f74090ef890c69c0026" id="06451560-fa04-4f38-b502-e0a096965a64" chipset="acmgt1" name="Ext501" />
+    <guid config_hash="73cf9d34be55b9fe9352ed160e17c4ca" mdapi_config_hash="dfc86f31ed91149ef9329bbda6a06612" id="9d21c47c-92e0-4454-b3f1-484f27763e83" chipset="acmgt1" name="Ext502" />
+    <guid config_hash="f1968a06f8ac53a3866e020ce93c04dd" mdapi_config_hash="cddac67e3eee29285177057d4f40f929" id="3cbb77d0-15f3-4bd0-8db1-5644266d78fc" chipset="acmgt1" name="Ext503" />
+    <guid config_hash="bf319d9b55185073e31d28d67bb5a29f" mdapi_config_hash="29db5209c3ead6c4e5c8fb0e65fe5e5a" id="e81aaa56-a54b-491f-9803-ed19d2762e13" chipset="acmgt1" name="Ext508" />
+    <guid config_hash="1f75dc15ec32ae3bc3fef249a3815542" mdapi_config_hash="f5e6861401967100bdff48c423e1e688" id="3c10260c-cb15-4474-ab84-c226d54f2974" chipset="acmgt1" name="Ext509" />
+    <guid config_hash="3ebbed84f247db40096c3ca56d89e40e" mdapi_config_hash="1bbe2727551b21d94cc77727f2da16b5" id="95455b22-bda5-4f6e-86ae-0e500f0b419e" chipset="acmgt1" name="Ext510" />
+    <guid config_hash="a5c49c3ebdb51b9c7c3a9596e78f1dbd" mdapi_config_hash="8cc5a168503a2fac73ca37fc14e5f0e1" id="95137f7b-f35e-4bef-9949-3c6681813bb9" chipset="acmgt1" name="Ext511" />
+    <guid config_hash="0dc11e8b51b55f875d6a910a62528b36" mdapi_config_hash="527497315e9ce87f6b27256ffbf7ba50" id="3effc828-e8ca-4aab-a1a6-c478a41d55a7" chipset="acmgt1" name="Ext512" />
+    <guid config_hash="f5fc6bb49cd289c389bbcdd97f8f3e94" mdapi_config_hash="4e3656a8c49229794ba3c2a39025e1ad" id="42d607af-0d8c-4d80-8443-73f5952060bb" chipset="acmgt1" name="Ext513" />
+    <guid config_hash="cc372fbb060ad700fb983bfa05cf81b0" mdapi_config_hash="36153177f4d2a1a4370a166316fba516" id="bc6702b9-80d9-463e-9699-334c9543e076" chipset="acmgt1" name="Ext514" />
+    <guid config_hash="f39e8d6c423d66200d984a53f027227f" mdapi_config_hash="ff56cd2d3621b6a5d90681e26662ecbb" id="5a8af975-8ceb-4111-b13a-3584b5485afb" chipset="acmgt1" name="Ext515" />
+    <guid config_hash="a1fafcde16ae6adf015cb61f5461e0e1" mdapi_config_hash="e781bf31f152aad4938ceb3aa787fca1" id="a0bd2654-8654-4aec-b9c3-609b7cfc7c29" chipset="acmgt1" name="Ext516" />
+    <guid config_hash="545871b03bf96eab2b5d68025ef4666b" mdapi_config_hash="07797e0c662798a7521edcad32a7ae5f" id="56c67cc8-4bbb-44bc-8552-1d095f1800bc" chipset="acmgt1" name="Ext517" />
+    <guid config_hash="a145c7b67316ffe803202c00937e3180" mdapi_config_hash="1e00466df9653fd5b1e59a5bc0a0c490" id="f4f45c2b-4810-43db-a47d-cb854884f724" chipset="acmgt1" name="Ext518" />
+    <guid config_hash="acf3f4ab24f3181ada2596c8c4b33323" mdapi_config_hash="71b7599209e7f623ffbf77e6e97dc404" id="58283b64-3a38-4985-b19c-db349947311a" chipset="acmgt1" name="Ext519" />
+    <guid config_hash="c9262ebe1a9085ba8e17f0b56df167eb" mdapi_config_hash="9a86263ab0c5344708b56523db530e59" id="144cc1f2-ff34-4ce7-8bb9-7cb6cee76403" chipset="acmgt1" name="Ext520" />
+    <guid config_hash="cc0cbd19cd8396daf31a4c43f0c9b72c" mdapi_config_hash="1c0c9dd022f0a8ba459a765b2a84ebce" id="9b5b6101-2131-4069-ace5-bcb3300991cb" chipset="acmgt1" name="Ext521" />
+    <guid config_hash="d3ac23113c6c78bfa1e4c9ba272a2509" mdapi_config_hash="4a63c3f2bd5e5fb13d2800f11dc7740f" id="b3cfc81d-5297-483d-8e45-b77e4935fbe9" chipset="acmgt1" name="Ext522" />
+    <guid config_hash="6bb65219794dfb6a1f1e2d6d7fc878ac" mdapi_config_hash="3e1b4888a83beba85489969de7cf1763" id="1975278e-2c3f-49a3-891a-fc2ed8f22eec" chipset="acmgt1" name="Ext523" />
+    <guid config_hash="30d289b4c979c42d54a45a4ff1af0519" mdapi_config_hash="f5bd3bc0bca95bfce98199f8a5cf90ba" id="06d3fa26-617a-4443-a552-17937fc2bc83" chipset="acmgt1" name="Ext524" />
+    <guid config_hash="9b25a3c3dcd18d39c811738c9bb80a5b" mdapi_config_hash="47c0e13155017f90a141cad97dce055b" id="5115960e-f55c-4854-bac4-b771c4185270" chipset="acmgt1" name="Ext525" />
+    <guid config_hash="92109d4b551d47f1ebddb92af9577905" mdapi_config_hash="5ed607edcf09e43720510b366d5164ae" id="4dc30759-6119-4bf0-85b7-4a7cd5e79956" chipset="acmgt1" name="Ext526" />
+    <guid config_hash="d348c04a69800278e93ce696589a8ef5" mdapi_config_hash="a5751a259780e1c128f81fb58d73b454" id="2060bec5-9739-4970-ab77-09dd7c107044" chipset="acmgt1" name="Ext527" />
+    <guid config_hash="7272e30b65a50a446bba9e9d4e6c38e2" mdapi_config_hash="0ede2625ff325abc9556c2f79f135df2" id="91384c6e-5087-43d6-a32f-699690ca8917" chipset="acmgt1" name="Ext528" />
+    <guid config_hash="e7ebfa8f96d5e8d3fe943fa862a475ed" mdapi_config_hash="f4d468897cdd9d7618c9c5c890864787" id="cb4f7554-9a12-4f83-a7c6-0ff8911f9e73" chipset="acmgt1" name="Ext529" />
+    <guid config_hash="e2c841acf140e73947b4fde1b3637340" mdapi_config_hash="6a9d00819e14fb3178878b66a648ad92" id="80502c88-9c1e-4804-8d54-53b3d784a540" chipset="acmgt1" name="Ext530" />
+    <guid config_hash="65e598c36f24fbbed61b9f29f22906b6" mdapi_config_hash="4318133904297748c76a038f742268ff" id="eccbb94d-f7ed-4d45-89bb-d17a0e28e97d" chipset="acmgt1" name="Ext531" />
+    <guid config_hash="31a9994c9523d67e612a89860956a748" mdapi_config_hash="562ded5c070fd64bd3254155d782e228" id="09cb4790-899a-456f-9c12-f0b5ae36bf39" chipset="acmgt1" name="Ext532" />
+    <guid config_hash="06b0b6e00cadfe410e4a16ac268dc4d1" mdapi_config_hash="26cffa7b241feebff27888e6228687be" id="e257595b-2e38-4da5-b375-bc494b4d0ee8" chipset="acmgt1" name="Ext533" />
+    <guid config_hash="ef8296994d00e8de953b430dc2336936" mdapi_config_hash="b46f8af2ff32b1cb0a148ab25607dcc1" id="f2477c56-db39-43cf-bd4c-42782dd02e27" chipset="acmgt1" name="Ext534" />
+    <guid config_hash="597d72f1b88eb636d7e4947f55126a7c" mdapi_config_hash="6da98998f96cc35043ecda01a28bf3eb" id="b6417928-9c95-4df7-88a2-e6b8de52abec" chipset="acmgt1" name="Ext535" />
+    <guid config_hash="ea58095d9149eefb3b46afd33b27c94c" mdapi_config_hash="b7662b81a69c2318aa199eef8947eae5" id="ac88f2a7-2f38-4e61-a6d5-9da2d50edd38" chipset="acmgt1" name="Ext536" />
+    <guid config_hash="38307a56bf07276dd8d3d07eccdaadff" mdapi_config_hash="beae875603308037baef26cb4e56ea41" id="87640cd9-04b0-4b76-a016-308ab7975f8d" chipset="acmgt1" name="Ext537" />
+    <guid config_hash="8c246b3c51760bc56021dcca4d98b64f" mdapi_config_hash="e9ffa7ab3397a2078ea72ca72b648042" id="2a2f8a81-b046-4a67-92c3-2ded36755f76" chipset="acmgt1" name="Ext538" />
+    <guid config_hash="cc5c545e4579215cd5e1daf4f8ccf598" mdapi_config_hash="c06b0cfe2ef7f7d0ee15d5d9d59f04af" id="89f03450-0e5f-4370-b7cf-cea4e627d4e8" chipset="acmgt1" name="Ext539" />
+    <guid config_hash="9cd0d55e6f24cccaf43362e66846110c" mdapi_config_hash="8bbe7c98aee8c4e13cd4bcfc88356089" id="85c7638d-976e-47e5-8f52-2079a0ea147f" chipset="acmgt1" name="Ext540" />
+    <guid config_hash="4cffd8f8e3ce9cf708b9930bfefa6d64" mdapi_config_hash="51c0d733753392b68f9f05eb6eed2ad6" id="69645853-2e7f-4a77-83fc-fa03f43b5d35" chipset="acmgt1" name="Ext541" />
+    <guid config_hash="86fe7c5b0f79e2f195b8b07b60f2edae" mdapi_config_hash="579fe3e074f48c52eac60403cf5a747e" id="657218aa-a73a-4127-b081-07ece46ff786" chipset="acmgt1" name="Ext542" />
+    <guid config_hash="5cc9510caf7275ff5cc7e61a319234a4" mdapi_config_hash="ae5c2ef4361cc50202b1f4d3283ac607" id="1a51853a-37a2-4020-8ccb-650604ea4f64" chipset="acmgt1" name="Ext543" />
+    <guid config_hash="5afad4a36d651c8ed2d343a4ee64656a" mdapi_config_hash="969e77a6b883f3e4bd11597003c0b3e7" id="9aa2e068-b13a-44b2-be93-a4cf68924cdd" chipset="acmgt1" name="Ext544" />
+    <guid config_hash="5b9bf405632b8d14a5fd2de009a6617f" mdapi_config_hash="770396733fa2c5f888dedc1ab959dfa9" id="5e8c65a2-97ac-4dea-af1b-27b9f12dafe6" chipset="acmgt1" name="Ext545" />
+    <guid config_hash="648a597b7183dd3b493c029db7e9cb30" mdapi_config_hash="cf2390eef15a57224d0678f25b975c7d" id="192ec14b-c329-4e81-bd2d-02f7cae24579" chipset="acmgt1" name="Ext546" />
+    <guid config_hash="95fbff94cc3a238e65c0443caad2f6a0" mdapi_config_hash="4aa2ab70084a111471c3f5427ebbe18a" id="2e5ac978-b4e4-4693-8f88-d90d0353dd77" chipset="acmgt1" name="Ext547" />
+    <guid config_hash="40963244f7b26a91769f85cb64b16851" mdapi_config_hash="515ab3d31821af95b14941f048add55e" id="7c95ba0f-cd85-4eb2-ab43-987f84214820" chipset="acmgt1" name="Ext548" />
+    <guid config_hash="472bcdb97493000caf3f593414f08b48" mdapi_config_hash="00d5e25a79e41ada6a22f2ec515c45c1" id="8fa03693-d2d5-42eb-a382-e2cf05bf8197" chipset="acmgt1" name="Ext549" />
+    <guid config_hash="d837f394515cef5ab41e20506bbd5896" mdapi_config_hash="937ccad99681cb98faf0112bb88e5be3" id="3714122b-03ee-499b-bc5f-31ed5400924e" chipset="acmgt1" name="Ext550" />
+    <guid config_hash="4e359a4c6c5bfbb90c11c8385f70f38e" mdapi_config_hash="69d945906a10272834a2df243e358111" id="31ed9c46-b219-4bcc-8c20-22586fb077f8" chipset="acmgt1" name="Ext551" />
+    <guid config_hash="7be9f83be5e14c74f84886dd895fdd9b" mdapi_config_hash="677ec46b2d65b89ca5bf4a34724bdff7" id="f639c566-949f-4484-8c12-5127fb771b4c" chipset="acmgt1" name="Ext552" />
+    <guid config_hash="acbb06143814fa672b47b2e9af68bb15" mdapi_config_hash="7fcaf7e5cf736ffb51ab7e28beba8e83" id="40b20c9d-0935-4000-91d7-f312a515bb4b" chipset="acmgt1" name="Ext553" />
+    <guid config_hash="dc483448783ecee75c50c4c35c20c759" mdapi_config_hash="de26db366e2acbbe24add896075500f3" id="bcff8729-44e4-4efa-8436-f1775fcb204a" chipset="acmgt1" name="Ext554" />
+    <guid config_hash="ffecd22693e6aa74e47e1e09c65f697a" mdapi_config_hash="5d7af72d16b3bf039bbcd2776e6636cd" id="6bf30c0e-a169-4ba3-8527-047d4f691aa3" chipset="acmgt1" name="Ext555" />
+    <guid config_hash="57e90f0cc7ef3b9c7ca4f75c4803672c" mdapi_config_hash="c22c5d4f2faa7d9da87b62ad67f616fe" id="bc1cda24-8e1b-4000-9443-1135be1b976e" chipset="acmgt1" name="Ext556" />
+    <guid config_hash="e682eeada8bbcb893050e4f2c2e1bada" mdapi_config_hash="51185678325b66968b2652bdffd0bb3d" id="c8a172f8-4a06-4931-b877-bc8aa687a9b8" chipset="acmgt1" name="Ext557" />
+    <guid config_hash="ec4ed96d22de43c663680a06f4f43ea3" mdapi_config_hash="1ab2110a870c4a69e2b81d9215735bd5" id="a5a9b5ed-c78c-4e3d-a808-22f1debd6b43" chipset="acmgt1" name="Ext558" />
+    <guid config_hash="145db1c6e054541b6aee3bf6fd06137f" mdapi_config_hash="19bab8aa5d3397e7ddfcf2e9f3fd6227" id="93bba39f-4d65-434b-9251-37f2badf256e" chipset="acmgt1" name="Ext559" />
+    <guid config_hash="344f255d653846067d34bf4e4530ff27" mdapi_config_hash="d6d5153a13d55895f89b5fb0a064d035" id="a16d5961-ab03-4193-87d9-394ad9c2da80" chipset="acmgt1" name="Ext560" />
+    <guid config_hash="df565eb53e7967860a4cc406bbb974a8" mdapi_config_hash="9861b6b99c31de2d8d511fc2b7fc173e" id="8dfd3f4a-0686-48bb-94cf-76a3bc5386ec" chipset="acmgt1" name="Ext561" />
+    <guid config_hash="9c8a7c975bda5e68d705bd62afe9acff" mdapi_config_hash="041925e9e42ea2aadee504a8d552d1f2" id="f41e3a7c-de83-46af-8be2-b26c605d1317" chipset="acmgt1" name="Ext562" />
+    <guid config_hash="d3c5828116e850f0b8ca67a0d37c108a" mdapi_config_hash="fa5f272f45c3353007b20560eb4b8d8e" id="c599736d-1b09-4ae6-9e82-c98d17c3582a" chipset="acmgt1" name="Ext563" />
+    <guid config_hash="ddb0cf4a3ebc5bad4975b834ce0141f5" mdapi_config_hash="73e86e4e676b7fb8fc68ae1f48b060c0" id="0f9c5fb0-e5bc-4119-a11f-d32d0304bca8" chipset="acmgt1" name="Ext564" />
+    <guid config_hash="7b22bd29eb16da8a28daa526677ea4f8" mdapi_config_hash="c3a83d8d29ff0be5d617f62eae2983bf" id="def2b365-d8d1-4e4b-b832-39afd5e214d9" chipset="acmgt1" name="Ext565" />
+    <guid config_hash="e6b25c38dbdafbf3d8cba9d47b96758e" mdapi_config_hash="0c3221607ea6779e1e1366677702d2eb" id="a53e91c2-03b4-488a-ab7e-293f4466e00f" chipset="acmgt1" name="Ext566" />
+    <guid config_hash="4dac49ea134b9be63fadad389dd16395" mdapi_config_hash="5166a562ec90ffe5b13f8cae2b5b6ab2" id="0cdefa4f-f4ac-4072-a021-be48ed5b0ee7" chipset="acmgt1" name="Ext567" />
+    <guid config_hash="f25e194664e6448e7fbd558b5477fbb2" mdapi_config_hash="38d493f8bfdaf461db090fb5a1d3f6a9" id="7404a462-f9c0-4fb6-9ec9-b03bbd5e4572" chipset="acmgt1" name="Ext568" />
+    <guid config_hash="2e3dae9aea38ec547c6afafcca82dc2c" mdapi_config_hash="6d392143f3ec1e8940b9c5c676261968" id="b3515130-788c-4d36-b20d-e8ca02e11cf1" chipset="acmgt1" name="Ext569" />
+    <guid config_hash="7c0b2e864e654ca268d58ba7a4e36e0c" mdapi_config_hash="fde6da1eeefa44f3bd95b0c8876b2903" id="73e5a9f9-ca88-4467-b407-737e7c7080fe" chipset="acmgt1" name="Ext570" />
+    <guid config_hash="baad6f80facbd4d135de5c9393d9c4f6" mdapi_config_hash="ad060f6502ef3021d523aff45a4952cd" id="ae2fa4f6-2afb-4ac9-866e-bfd943f91a54" chipset="acmgt1" name="Ext571" />
+    <guid config_hash="6389c2dcb6a2b100db74a782d4f7006f" mdapi_config_hash="d8d0fcb20772d25731d0ac8a7d587cb9" id="cea714fc-17a9-4dae-b3e8-8be0f3149918" chipset="acmgt1" name="Ext1000" />
+    <guid config_hash="e358e6156c7379f8064b679128fe0747" mdapi_config_hash="a9988177c98737d0b52bcf215079e95b" id="3ec074a8-e3cb-4090-86c0-0d1426ac9a63" chipset="acmgt1" name="Ext1001" />
+    <guid config_hash="c4809b4f9dbd405691ebd29dea153aa2" mdapi_config_hash="8d1002c55a03d16517de67b4b8970d12" id="17275fa7-be46-48a6-a654-6931ecbfed77" chipset="acmgt1" name="Ext1002" />
+    <guid config_hash="8bb1139fff1ee995a5ade92734e11d8a" mdapi_config_hash="fbbbc2eaec0f182e838cbdfa1c8372c2" id="a56f028c-27c7-4e9b-bc19-04bbf67444b0" chipset="acmgt1" name="Ext1004" />
+    <guid config_hash="83d7b8e952e3598565267c65964b2771" mdapi_config_hash="7a5482c523806abe25c8c4dbcf5273e7" id="f43c884f-817d-4037-bc96-7bed64906683" chipset="acmgt1" name="Ext1005" />
+    <guid config_hash="e7efe91c7aeb591043358c1b5e3c019d" mdapi_config_hash="94ecec147a25de742814fbb01fd4e9c3" id="6a6e8e1d-6148-4316-95f9-2a8b5236520f" chipset="acmgt1" name="Ext1006" />
+    <guid config_hash="ae85ee9664f10b42cc854c26878d6cba" mdapi_config_hash="de92fab5a4df472219094e6a3b635632" id="b6b53888-0a0b-4fc6-b77e-c604875495a5" chipset="acmgt1" name="Ext1007" />
+    <guid config_hash="310dddcb04d1088a3865f698d758cbc2" mdapi_config_hash="c6a3be7d49b5697074021ca673a39a57" id="6e06382a-3c98-464a-9811-cdfb956e4e8e" chipset="acmgt1" name="Ext1010" />
+    <guid config_hash="b2e407f251d3960e0da6afada6b8373c" mdapi_config_hash="10c3bb1ccac0dd3e84cdd74c81161d8a" id="0692a728-614d-4d12-8c03-7b3ffe961ef8" chipset="acmgt2" name="RenderBasic" />
+    <guid config_hash="47dd4aee9ef5ba2d15e61d25f735d1d4" mdapi_config_hash="c4c86e8bd7e0cfffa7c553517340292a" id="ccde9a29-a5c5-4a9e-b7f5-ec1092387e2a" chipset="acmgt2" name="ComputeBasic" />
+    <guid config_hash="da49b5c7e497eab30522295f416dd84a" mdapi_config_hash="80f802eb9434e078d1c158be06940d88" id="e529d23d-d766-4391-84e2-68d43fd1f9b0" chipset="acmgt2" name="AsyncCompute" />
+    <guid config_hash="1a28d05d945714b099a9417181b72962" mdapi_config_hash="0cdf3168ffd88a84c2a42d4c62567189" id="0785f0af-8ae2-470c-bc7b-dd81154d4d24" chipset="acmgt2" name="XveActivity1" />
+    <guid config_hash="e2219e07d86fd978dc7b5bb911bd8487" mdapi_config_hash="9183dab175af6ef43d4e04d72d241733" id="1a01365e-7c8d-4816-b69a-edb89731dcf9" chipset="acmgt2" name="GpuBusyness" />
+    <guid config_hash="83e4e688fafc993f80f7f8d769bb23fb" mdapi_config_hash="21b64bca96c7e77dd2fe2c9df2c903cf" id="9ca2b4be-4bd5-4873-9d59-9d6a5d9f8c29" chipset="acmgt2" name="RenderPipeProfile1" />
+    <guid config_hash="c2c4a9eafbb0115295307e3e1d9f8e4a" mdapi_config_hash="a65a01102695be77f2b62a338b4bf36c" id="901cbc75-aa84-496c-a07d-c5db62b8dadb" chipset="acmgt2" name="RenderPipeProfile2" />
+    <guid config_hash="dc05bd42bd0ee1d3136b5a575f45373e" mdapi_config_hash="09f057ff6f8ddf71468bb659f6546e50" id="9afedc01-2ddf-46af-a5da-8310c1afed17" chipset="acmgt2" name="RenderPipeProfile3" />
+    <guid config_hash="c0a78f26a8ce0881f6a6e6bc2b1b71bb" mdapi_config_hash="4832bb166cbed8d9818d57db53b433e8" id="89469a84-856d-4433-8962-773c68ce818b" chipset="acmgt2" name="RenderPipeProfile4" />
+    <guid config_hash="4ee37d5456fff9ced1ea71f4f780b847" mdapi_config_hash="dd537cbe408148b58a74888c1cedbc05" id="2128b792-e30e-49ec-a64b-8a636364f728" chipset="acmgt2" name="L3_1" />
+    <guid config_hash="8954ca43b54846b7b71e655e150d1121" mdapi_config_hash="6b1945962232d82308543fece5e25699" id="a70724fd-5214-4325-b32c-61b37f409efa" chipset="acmgt2" name="L3_2" />
+    <guid config_hash="9c716c46c7207e8a48e9e1bd8c15224e" mdapi_config_hash="3b7c10ceb528fa25a7a68a187f64c3f4" id="167e0c1d-8ef2-44d3-b4fa-407b9a23eb5a" chipset="acmgt2" name="Sampler_1" />
+    <guid config_hash="f9dc7f33db6b2305e352d1ca65fad3d4" mdapi_config_hash="26e5116297660db53f39d0909b413ecc" id="879e3747-17f6-40b8-9a7a-2c6752ff6d6c" chipset="acmgt2" name="Sampler_2" />
+    <guid config_hash="e667469040221b51349e5cad1fb3689d" mdapi_config_hash="0a78af71987a50eb2cee7e808937abf5" id="55aebe75-d0e0-4d07-aa50-4b1e672341a7" chipset="acmgt2" name="HDCAndSF1" />
+    <guid config_hash="c565b65a61f728c66f17b4784123e9bc" mdapi_config_hash="20cc0f7f7a4c50d2e3ed7178298e0735" id="d9c30016-f7b6-4c66-81e1-cb75b68a2222" chipset="acmgt2" name="HDCAndSF2" />
+    <guid config_hash="8b565f05a52e8e61881cbbfbb032dad3" mdapi_config_hash="80b637e35f15fc1c6abb66623902eaa9" id="6357cd3a-3553-4a60-8c86-7c59347c3916" chipset="acmgt2" name="HDCAndSF3" />
+    <guid config_hash="66a151e9acb9ef679c7e64ee563e4739" mdapi_config_hash="1910d3ff8790c3fdb71942b3b046f888" id="031a7f13-0f25-4794-958d-38cea3050a32" chipset="acmgt2" name="RasterizerAndPixelBackend1" />
+    <guid config_hash="1ab577a85bd7a784c1e160315439939a" mdapi_config_hash="26ab8caddc50c1b4a92eec5d0d897035" id="2032fb37-ebc9-4eb6-8916-4550474edd5d" chipset="acmgt2" name="RasterizerAndPixelBackend2" />
+    <guid config_hash="8f98443ad7e76840f0a67f46fbf13fbd" mdapi_config_hash="ea5d98916272a3249fbbc759ca2cc5b2" id="51bc5454-ff6e-4033-b8b0-c9734975b3d4" chipset="acmgt2" name="RasterizerAndPixelBackend3" />
+    <guid config_hash="1fe318a62f8fdc5e497799ad1a4593d3" mdapi_config_hash="ac8d46704b6c82b36b3fd9855b18e03f" id="5b08d0b8-c976-4d7b-b770-8f538bee394a" chipset="acmgt2" name="TDL1" />
+    <guid config_hash="0db5677558a053a7b7323022b9c2c876" mdapi_config_hash="d50175e820ace925e81239cfa4c2a778" id="27ee6bcc-1378-4046-8922-124ea2115039" chipset="acmgt2" name="TDL2" />
+    <guid config_hash="e548db4ddbf30e0cfc5d1c63a3c39217" mdapi_config_hash="e55a7ba6378c1f250e7b0bab9fc840c0" id="dd909127-caff-408f-994f-e0f64a672918" chipset="acmgt2" name="TDL3" />
+    <guid config_hash="2dca618476481a2d92230cadd52ae3bf" mdapi_config_hash="7784a95b48eb4a3e6d71be7752255808" id="64fae233-cafe-4594-ab7b-fcbf5b442933" chipset="acmgt2" name="TDL4" />
+    <guid config_hash="a1671c0743035845fa489b5b5621ee90" mdapi_config_hash="52b35dbeda4f1c82232cafb2f55f1d1a" id="063f5cea-f9ba-4c93-b7e8-22dc5c05060e" chipset="acmgt2" name="TDL5" />
+    <guid config_hash="7e7a598638d3b4e222a0551896cb1327" mdapi_config_hash="f61d9f8e3257b65593db09f7c8b18859" id="4cba20e7-78ea-4aaf-bd5d-42b8647cf778" chipset="acmgt2" name="TDL6" />
+    <guid config_hash="3fc03af4b1dca0e9c530f3d645316029" mdapi_config_hash="fe431f6f70e8ad185092abc40ab2f167" id="f76dee3e-b215-4780-9c83-7a1dfb1a6e63" chipset="acmgt2" name="TDL7" />
+    <guid config_hash="8531f8422804477352d85378b81b8677" mdapi_config_hash="f01ac39ed866c85bc7e2400d4f9557a0" id="70a8e39e-5244-43ea-b922-bd7024baf879" chipset="acmgt2" name="TDL8" />
+    <guid config_hash="bf645ca6862f39d60e68cfeb8e86a5a8" mdapi_config_hash="c0ce3fd07208c774c4f446a1e501f6d2" id="cfac9130-4f6a-4a2a-aafc-9e88751ce983" chipset="acmgt2" name="TestOa" />
+    <guid config_hash="038193d82de44de51111cbafbe3eb01c" mdapi_config_hash="52d2e56af19c8e94d9561c40f2794a9f" id="7bb51d65-bc5c-4e23-904c-e7ad932d162e" chipset="acmgt2" name="AMFS1" />
+    <guid config_hash="a3839579601989958bce806b11d7d47e" mdapi_config_hash="96ae5b07d8929986e01cbc9675cbba21" id="b4899455-a030-400a-a66b-ea270f7722fd" chipset="acmgt2" name="AMFS2" />
+    <guid config_hash="6714f1540844eda6075812d876e9baa2" mdapi_config_hash="3afa1ac22af5cd271177353fba82e451" id="cb47ffdf-f1a9-45f2-8ee6-21e0fb8111dd" chipset="acmgt2" name="AMFS3" />
+    <guid config_hash="c6a57110cdfd8921fcdcfe2af9490445" mdapi_config_hash="2e7dcab4821126ed9d95abc0cdff02f7" id="2e296498-77db-42ad-8f34-9cda1ff4dcd8" chipset="acmgt2" name="AMFS4" />
+    <guid config_hash="caf14fa0a6a77ebfabeb8996d8d21da1" mdapi_config_hash="f3785c393878b5a22c7e0dd386f848f3" id="ef47f98a-fb5f-426d-922e-8ae13cedb198" chipset="acmgt2" name="AMFS5" />
+    <guid config_hash="5d77eaf3d836ea04a753450ee9a6e336" mdapi_config_hash="252c6845386f31c9f6917892363b4676" id="ec2c2ae9-a41e-4ff4-99f1-118959c94bfb" chipset="acmgt2" name="ColorPipe1" />
+    <guid config_hash="45550b4209ef3dd178ed92e4ce779f52" mdapi_config_hash="bf0d772b65dc8f8c9c6019e898930af5" id="d7862a6d-902e-4d1f-9f39-e0f94aa4346e" chipset="acmgt2" name="ColorPipe2" />
+    <guid config_hash="6189e1bd287ba2349d88a44dac6be2b8" mdapi_config_hash="0afacd96f63ce911598eba5f739b5cb5" id="f00094e7-2baa-4bb9-807b-d77bb1c72eba" chipset="acmgt2" name="ColorPipe3" />
+    <guid config_hash="79b11b00bbcca4630001b2765f26756a" mdapi_config_hash="ded3941e0faef7cecfd14b24530917ff" id="341991a5-3457-4201-a48e-d368a979f01d" chipset="acmgt2" name="ColorPipe4" />
+    <guid config_hash="59a92b61d99c709bf6f03d0528bed846" mdapi_config_hash="5d5f5cce516ae80b5b04c9ea48a05300" id="34664510-6687-48d0-adc5-b7a60069de8d" chipset="acmgt2" name="ColorPipe5" />
+    <guid config_hash="a0b69be72bad2a14252a971c5817b0de" mdapi_config_hash="e2278aac53b87097db531390576a7015" id="1c9a3218-c1ee-402f-b483-6263a0757515" chipset="acmgt2" name="ColorPipe6" />
+    <guid config_hash="e8d90cd4bc76ff01ee29ed1fdae320d7" mdapi_config_hash="37d8b00817d8223b63e5f594bf7eda85" id="d85dc73b-5121-44c8-87b2-df05b1eecdf3" chipset="acmgt2" name="ColorPipe7" />
+    <guid config_hash="3da5471c033290a83e5487461aae1b21" mdapi_config_hash="825fb76acc4f53ccd0f2c353e980675e" id="4695a23b-b2b0-48f5-8bf1-743255be3e2e" chipset="acmgt2" name="ColorPipe8" />
+    <guid config_hash="67c48430ab3fe20e924fb4bf50f4b7d3" mdapi_config_hash="87681f104ef1a4bbac07922ae849d723" id="73b4fa16-fd16-4c45-bb66-a733308a8b57" chipset="acmgt2" name="ColorPipe9" />
+    <guid config_hash="44c6b74d8f4718751f7375656be5301a" mdapi_config_hash="63daba20a3a4f0e37b4d4b5d5fced5ed" id="41a973fd-a067-4760-be3a-ccac78e0eadb" chipset="acmgt2" name="ColorPipe10" />
+    <guid config_hash="266938c791f666634c554e307ab3fa0f" mdapi_config_hash="c4d8ea77fb50667a4cc25d758c6a21ca" id="a42ec42b-53d5-40b2-8950-9aabe714601a" chipset="acmgt2" name="ColorPipe11" />
+    <guid config_hash="5c721541f1bc628c5fb73fb75d3fb8f0" mdapi_config_hash="b204638d75ee6b7c632c75ad0ff53f2c" id="4682628b-6cc3-4b22-b818-ca5347cd7bf3" chipset="acmgt2" name="ColorPipe12" />
+    <guid config_hash="3839bc9a3f06cb5d48132a0351a2c958" mdapi_config_hash="27e122bfcd63ee290478a8ec66b88656" id="76fcf17c-a3ad-474c-a2fb-58a1517c28f4" chipset="acmgt2" name="ColorPipe13" />
+    <guid config_hash="583bd332d93503a714f042fa515d4ce8" mdapi_config_hash="9f9cc670adc62c02f102dcb9a61332d5" id="6708cf0b-dd77-4fb7-aad1-909ffea99aea" chipset="acmgt2" name="ColorPipe14" />
+    <guid config_hash="24a6b0d47d99f4e545fa467ac8b9a732" mdapi_config_hash="c82ffc3805594147543857bb337d8795" id="cb36baf7-85bd-4ce3-a0d7-4d296c5932a7" chipset="acmgt2" name="ColorPipe15" />
+    <guid config_hash="deaa647e5820cff90dce78e2bcb18e76" mdapi_config_hash="2cf53d8082aa5e6a1cfeaadb798650d0" id="f1e33629-b9d8-4033-a791-2afb70f5bf8d" chipset="acmgt2" name="ColorPipe16" />
+    <guid config_hash="381e9a6f4145d48f5a9d6e02f2505643" mdapi_config_hash="e1677076ec7cc45e88ac8a9bf57193c4" id="fb67c9e2-4acb-4775-b715-ffc4b743d9e8" chipset="acmgt2" name="ColorPipe17" />
+    <guid config_hash="56169430011c189a7bcf4c79b3a012d5" mdapi_config_hash="99ff981de4cfb9d03f0ef64d71b8ef90" id="e0466349-b62f-474c-88f9-3a9b62a3274a" chipset="acmgt2" name="Dataport1" />
+    <guid config_hash="a7bc32e5591cdfc523a769dc3c9bb671" mdapi_config_hash="e74cda688ab7060b9b95c847720222f3" id="28e63e4a-ae68-4913-9f28-ae9269aadf2b" chipset="acmgt2" name="Dataport2" />
+    <guid config_hash="da8222d729df1f3c5c8823ad8a9c0465" mdapi_config_hash="d63467f65bae64067b163b69487dc40d" id="f9dd355a-29ce-4f78-9ea4-e2f0f799876d" chipset="acmgt2" name="Dataport3" />
+    <guid config_hash="1500915b42473fa5a57c59568d2f3fdd" mdapi_config_hash="81b0a2074ccaecce2ceb5865a345938a" id="d79af0bc-b6e9-4057-8eb8-f61fad6efe55" chipset="acmgt2" name="Dataport4" />
+    <guid config_hash="2acde5732d196b229b245c875eeb92e9" mdapi_config_hash="5920e07beaf1623a77708e1046341c07" id="8890d6d6-bac2-4830-9abb-e38e1da08e0b" chipset="acmgt2" name="Dataport5" />
+    <guid config_hash="e65b2cc90b2bd0ce13a121f11cdb00b5" mdapi_config_hash="9f17e4bc81c0cc2c83a5690e01bfd97e" id="c181f521-7c29-4ac6-a44e-d398043d1c41" chipset="acmgt2" name="Dataport6" />
+    <guid config_hash="fe2bee54bafaaae600a5e7b421290b8e" mdapi_config_hash="94d01f21c96049034ce21d06f1dae5d4" id="b83732c6-e9b4-4449-90df-3d3518bcc6a2" chipset="acmgt2" name="Dataport7" />
+    <guid config_hash="08be5a53a74fb853cca6771464653014" mdapi_config_hash="dc3d3a82287876429a2893b47012d9dc" id="a82addb0-e73f-43a4-9b0a-89df6b2ad267" chipset="acmgt2" name="Dataport8" />
+    <guid config_hash="4ee3ada20687f4dcca516dcd29ef9869" mdapi_config_hash="dd21e79c4705310ba7f6c00e267f2949" id="91d91417-69c7-458d-bb48-d1c83871d61a" chipset="acmgt2" name="Dataport9" />
+    <guid config_hash="6ccf0a100baa4b37076a3614d20c1e96" mdapi_config_hash="45de87750bd1a56206ad14f72fb5119f" id="7bb38598-cd33-4e49-957c-cbe7ab599120" chipset="acmgt2" name="Dataport10" />
+    <guid config_hash="29189d27860156a994d0b3c96ee65a93" mdapi_config_hash="196c7f73990fbf9457021fbce0ec9ae4" id="8108a31f-3d5d-46f3-8cd0-6c9b2c3e0038" chipset="acmgt2" name="Dataport11" />
+    <guid config_hash="5298974a1f8c8976eca88cd42d5c4bbe" mdapi_config_hash="1636c246dd5ae03da87d335a7048f152" id="c7acfa27-136c-4527-8e81-517c6a2aa724" chipset="acmgt2" name="Dataport12" />
+    <guid config_hash="a74c1e6e1501c6048881f9aa599ad918" mdapi_config_hash="8b0eacc6334431163fde2cfcea86e951" id="10c1bda5-f032-4e6e-8597-741046aa81c4" chipset="acmgt2" name="Dataport13" />
+    <guid config_hash="31bf8e57f49db41618e412e61d1e7982" mdapi_config_hash="da965171462d1a653b618cf80297a97c" id="9e026386-432e-42ce-8bb8-c833127dbbe7" chipset="acmgt2" name="Dataport14" />
+    <guid config_hash="5ac9e03a94320f444aac559d88895e5b" mdapi_config_hash="10b1cf186ff9de661f3990b810670cd9" id="51c4a645-0ffe-4dc2-bc5c-30075c771f71" chipset="acmgt2" name="Dataport15" />
+    <guid config_hash="ab3414f03d24c3a00807ba160e5a49c5" mdapi_config_hash="5bcdd9a8e07d08d4d1c9b622fdcf1a22" id="4699e9f0-8029-44dc-9f86-23ee43b2592e" chipset="acmgt2" name="Dataport16" />
+    <guid config_hash="93e6efb5cb8e442f81f065e6bf8fb948" mdapi_config_hash="92f9f7aaa03e7fd41a591209c5a7e7b0" id="eae3432b-6340-4d86-bae1-3d6da5d6f9c7" chipset="acmgt2" name="Dataport17" />
+    <guid config_hash="809c9a653d181175d37b1b0822ba06ac" mdapi_config_hash="85886745e8f21cd4b3e37b25e0c6456c" id="fc5c5c04-55ea-4094-92fc-1d40f7f132b0" chipset="acmgt2" name="Dataport18" />
+    <guid config_hash="8ee5f22badeedddc9102097bfe67f0f8" mdapi_config_hash="6e80d88107e4fe83b6463f4b17ee8c6c" id="66cc68bd-b460-42ec-b815-2531dc145a33" chipset="acmgt2" name="Dataport19" />
+    <guid config_hash="ceb2e60e3b4b3aa861c0ed75f94a09f3" mdapi_config_hash="26f0ff1db12d9be6f45391c1d30914d5" id="c3f17ea7-bdba-4ce6-971e-9920ae779870" chipset="acmgt2" name="Dataport20" />
+    <guid config_hash="c88f1e1536f39010583ed3ec30c01230" mdapi_config_hash="ec7e6c5b592df2408443269548459d87" id="fe3d6064-fb8d-4c1c-8375-65c1b2d23287" chipset="acmgt2" name="Dataport21" />
+    <guid config_hash="5aed14a3a4f30502f5b2caf1a9e068cb" mdapi_config_hash="a292a8b4fb44213d0b3205cec0148e5b" id="ca29a63a-9e93-4631-befe-cb0985365d3b" chipset="acmgt2" name="Dataport22" />
+    <guid config_hash="dd76c26b8b2255ef73cfcb62c863839b" mdapi_config_hash="aef08a0481ebf3a9b707394ff5afa5cc" id="f194891f-8915-4c9d-978e-4ef91c44d5d1" chipset="acmgt2" name="Dataport23" />
+    <guid config_hash="b6e7692a0242f9cd48acd694d191cc44" mdapi_config_hash="51a6d1070b7163c7b40d8ae556071efb" id="62bac6fb-20ca-4fbf-b821-cd80ecdcb57b" chipset="acmgt2" name="Dataport24" />
+    <guid config_hash="af1b2a6742f5c9ad515ebb900b02429c" mdapi_config_hash="75b1fd7eafd739fe943d38b29721c42a" id="7a2a2ce5-0e00-429b-9d96-ce5c030378e2" chipset="acmgt2" name="Dataport25" />
+    <guid config_hash="92a2b16320c5b4d2946e9003cacdff9a" mdapi_config_hash="5783ab7d9d15d814ad6a2f95ba3c98ac" id="d6169119-c923-4d10-b16e-6439fa5e150d" chipset="acmgt2" name="Dataport26" />
+    <guid config_hash="3bc6ce2b82f2ab90dca77b458d3834f1" mdapi_config_hash="c0c217bef0bdb90eabdf50ff79a1b7f5" id="703a8fb1-96b2-4c89-ad1b-f721efa0fade" chipset="acmgt2" name="Dataport27" />
+    <guid config_hash="649141f0874ec93d8f4160d08dfa4caf" mdapi_config_hash="c78a24ccc04f76d0196660aba95799f8" id="7d3ea8fa-f0e2-4436-bfed-2cfd5d42e3fa" chipset="acmgt2" name="Dataport28" />
+    <guid config_hash="42b9f1de512b617f5240e3161b08733c" mdapi_config_hash="eb7919c11d4e0970967b68899ca12d47" id="f42d9eaa-4a36-4b10-a96e-6794cbbdc43a" chipset="acmgt2" name="Dataport29" />
+    <guid config_hash="62fbef90e26b5bafd5ef8ccd51114bc4" mdapi_config_hash="b03ba3824df1542804a3399c44230bde" id="6805565e-e6aa-41a8-b486-4f1ca91c11c9" chipset="acmgt2" name="Dataport30" />
+    <guid config_hash="0d25ced9487c2ba1aea5b6121c8919aa" mdapi_config_hash="2bfc246152c25a0c934747ff229f182a" id="c4d2235c-1d4b-44b7-b746-a11016520ffd" chipset="acmgt2" name="Dataport31" />
+    <guid config_hash="c88f1e1536f39010583ed3ec30c01230" mdapi_config_hash="ec7e6c5b592df2408443269548459d87" id="1f7d4994-5397-410c-98ed-5e1bc3d44ceb" chipset="acmgt2" name="Dataport32" />
+    <guid config_hash="5aed14a3a4f30502f5b2caf1a9e068cb" mdapi_config_hash="a292a8b4fb44213d0b3205cec0148e5b" id="42d54580-601f-4dcb-9c91-c5bd37782f65" chipset="acmgt2" name="Dataport33" />
+    <guid config_hash="dd76c26b8b2255ef73cfcb62c863839b" mdapi_config_hash="aef08a0481ebf3a9b707394ff5afa5cc" id="0ce98a1c-8516-4412-b1ce-b0eeaca989df" chipset="acmgt2" name="Dataport34" />
+    <guid config_hash="b6e7692a0242f9cd48acd694d191cc44" mdapi_config_hash="51a6d1070b7163c7b40d8ae556071efb" id="857f49c7-71b4-4fa0-86f0-55f817676cff" chipset="acmgt2" name="Dataport35" />
+    <guid config_hash="af1b2a6742f5c9ad515ebb900b02429c" mdapi_config_hash="75b1fd7eafd739fe943d38b29721c42a" id="dde58e8e-e867-4144-9782-4464798e7c63" chipset="acmgt2" name="Dataport36" />
+    <guid config_hash="92a2b16320c5b4d2946e9003cacdff9a" mdapi_config_hash="5783ab7d9d15d814ad6a2f95ba3c98ac" id="fd0e95c3-0a28-4911-80d7-dad9716739c3" chipset="acmgt2" name="Dataport37" />
+    <guid config_hash="3bc6ce2b82f2ab90dca77b458d3834f1" mdapi_config_hash="c0c217bef0bdb90eabdf50ff79a1b7f5" id="ac3fa7ef-1963-4643-917f-9f9b6161ee62" chipset="acmgt2" name="Dataport38" />
+    <guid config_hash="649141f0874ec93d8f4160d08dfa4caf" mdapi_config_hash="c78a24ccc04f76d0196660aba95799f8" id="ca4e1039-7322-4606-b3cc-7f33dcb93301" chipset="acmgt2" name="Dataport39" />
+    <guid config_hash="88f41e26b62dadd6c50d36d6720acf53" mdapi_config_hash="31e98ef66af24e65a892e2cfa434f8d9" id="3712af1f-03c7-48e3-b2a5-6d9ac64b3122" chipset="acmgt2" name="Dataport40" />
+    <guid config_hash="2faf3e8a613971bb136500776cd72657" mdapi_config_hash="c96317043f93fd2acb5ece026b450f1a" id="3df5cfc4-865d-4314-a53a-379d76aac638" chipset="acmgt2" name="Dataport41" />
+    <guid config_hash="62a0984bd5aeea7dacb6753700a59361" mdapi_config_hash="e55ad6373e0ad7251b6efec03e224855" id="33168209-e5ab-4330-856c-0d4a1b95dce3" chipset="acmgt2" name="DepthPipe1" />
+    <guid config_hash="58ab18207c62990f094f5d24e12d2507" mdapi_config_hash="b49b34c502b0badf021659f446e3595b" id="ada82722-0eaf-4903-96f0-3c8ed2227c7f" chipset="acmgt2" name="DepthPipe2" />
+    <guid config_hash="6e753d72d89bacc63371fe81b8ce2311" mdapi_config_hash="9d70e945bf59a04fcce180106d5dad81" id="359bdac8-5929-4e54-a5e5-526b28a487ab" chipset="acmgt2" name="DepthPipe3" />
+    <guid config_hash="e2db1f19c992bfd39a7cefa86510f086" mdapi_config_hash="47e2f620a4392f23933ee5b251c44804" id="1b8e5aa0-be13-4c87-9ad0-f0d4f7d7f2a5" chipset="acmgt2" name="DepthPipe4" />
+    <guid config_hash="f72b15e5e83f5abcb45c6c75fafd43e5" mdapi_config_hash="1320a5309244f63cbda5f8c9d68ddcf9" id="b192f113-23af-494e-82e7-b9a81810c75d" chipset="acmgt2" name="DepthPipe5" />
+    <guid config_hash="df1128d555469219afcb50db48c0beb7" mdapi_config_hash="e8ae0161fe828dbad6699a0adf116543" id="f617db06-51cc-447d-989c-0811dc7c7b38" chipset="acmgt2" name="DepthPipe6" />
+    <guid config_hash="f48d8282dd9da9aca3e86e98a59934d0" mdapi_config_hash="a9fb36e90bd5dededfaa59774100d6e7" id="bd2422a2-0a56-476d-a52d-b4aa15a5d842" chipset="acmgt2" name="DepthPipe7" />
+    <guid config_hash="834d64718044f6f58bf032adbb836bac" mdapi_config_hash="09375024e2cd1ffdf5b40b1160fedc41" id="7856d434-02e6-4a06-b585-e45e7616f1d5" chipset="acmgt2" name="DepthPipe8" />
+    <guid config_hash="ae90b062bf3f8ab8c0be1147f3242981" mdapi_config_hash="acc31fcf338eeeb1eef830d75f073f1c" id="60b56817-8e14-488e-917d-29bffd9fefbb" chipset="acmgt2" name="DepthPipe9" />
+    <guid config_hash="fd4198add1433da27b43245215d1103b" mdapi_config_hash="0fe77f11467ea71308b43a25560f1c5e" id="8dff928f-699b-4f34-a297-cf46c9519662" chipset="acmgt2" name="DepthPipe10" />
+    <guid config_hash="d2024e7bc32f60f19ec1604c5f551a25" mdapi_config_hash="710f4d8faa8fe586d73b8a59995e00d3" id="fa8e2ae9-3507-4eed-9a02-b18c396a21b1" chipset="acmgt2" name="DepthPipe11" />
+    <guid config_hash="334da62368539353cadb6951c52c3170" mdapi_config_hash="7dfdf1fa5eef76996d55a22623a61533" id="4736a783-c2f3-4f67-931f-eca0fdddf57f" chipset="acmgt2" name="DepthPipe12" />
+    <guid config_hash="f80bf49ac333847e67b0613958e43979" mdapi_config_hash="fd0fb232733cd55e203614f75e2adb4d" id="a305b93f-dba5-4318-89ba-051192cbe1be" chipset="acmgt2" name="DepthPipe13" />
+    <guid config_hash="b6190b62b38848872db42898e5a2c2fa" mdapi_config_hash="dd75bd48e12883ac8338c68462428421" id="dcfc3d88-b9bd-424b-b3ca-854f2e2d4863" chipset="acmgt2" name="DepthPipe14" />
+    <guid config_hash="ad6d9ae878cb725d01638201bd6e8e9a" mdapi_config_hash="33ed087325445c5d55bc9613612f9012" id="d706dc1e-e6c8-4fe0-b6ed-ea99cdc41673" chipset="acmgt2" name="DepthPipe15" />
+    <guid config_hash="b5db152d42f8c28e200963ca8a548183" mdapi_config_hash="121d8ea1afa20d0b0d6b2b69a0c921a7" id="de4874a3-6881-43a8-9243-6af156af44e5" chipset="acmgt2" name="DepthPipe16" />
+    <guid config_hash="6a1cb5856b33fa8522607a8480510ccd" mdapi_config_hash="653e1d2f3f01ca38623334cb01553e36" id="c3d18c22-f267-4f8a-8b4e-b26abd1d1660" chipset="acmgt2" name="DepthPipe17" />
+    <guid config_hash="22768128bec178ca40ff86e79bb1ac9c" mdapi_config_hash="0704be276282a527e98f1df5545f5c05" id="0fa14813-96d3-424b-8935-b70b4e24ea85" chipset="acmgt2" name="DepthPipe18" />
+    <guid config_hash="1e24a54dae2d4fda9ef7a4d459b63811" mdapi_config_hash="3aacdf09eabc372254ba77669d33e75f" id="4e741dfb-12e7-4a31-8bed-1d587c0cafc5" chipset="acmgt2" name="DepthPipe19" />
+    <guid config_hash="9f5eed3d32716d6d56ec351f32187e3b" mdapi_config_hash="9cf55d3b4983843c8636b3e4558b830a" id="66117e26-8834-4f72-b8f3-162bafb24232" chipset="acmgt2" name="DepthPipe20" />
+    <guid config_hash="04182be6137cd310678473857b0763d8" mdapi_config_hash="a7e45fade857ab96cc9ca63fad9a0e42" id="4b9e649c-1392-4856-abe6-9e67bb06ac5e" chipset="acmgt2" name="DepthPipe21" />
+    <guid config_hash="ef47cc757009e01fa6f4c59af001cd51" mdapi_config_hash="4aa9340e6709a8af69b7083006ac795a" id="ced7882f-f88d-431c-9dad-8f3016a64777" chipset="acmgt2" name="DepthPipe22" />
+    <guid config_hash="c4f40b7d9a09205d235114dba68a5d99" mdapi_config_hash="dd21e05f7a31bfcf70baf9025dd55155" id="17ba725c-bcfb-444c-8725-fe9bc1a99c5b" chipset="acmgt2" name="DepthPipe23" />
+    <guid config_hash="6192457ac32474673c3f9d1bdef8a335" mdapi_config_hash="84c69d2e33ea9a3a848eb4c2bc5f2696" id="efdfcd4f-8bc6-4251-b956-dfd351f8632e" chipset="acmgt2" name="DepthPipe24" />
+    <guid config_hash="f2d49835c676f18c3eae177cef7f20e7" mdapi_config_hash="40dc0abe03ac63336a1702313d0264d5" id="bad6c158-57f6-471f-a9e3-cad9e779d211" chipset="acmgt2" name="DepthPipe25" />
+    <guid config_hash="f178fe3e8fdf5378ffc0e0eb323d2012" mdapi_config_hash="64828b4d6366b61cc69ef89a7403728c" id="4a7b11ce-2d9e-4905-99c4-ededa640b342" chipset="acmgt2" name="DepthPipe26" />
+    <guid config_hash="41fb8491249ade9c531a3a6a9141d52d" mdapi_config_hash="9a687c1ecbe2ffcb0c9ed3a0f7ecc1d5" id="8c0a8f9b-3e97-4b6d-adb1-fbecb395ec00" chipset="acmgt2" name="DepthPipe27" />
+    <guid config_hash="4b20efb90dbca51593595c57ba4657af" mdapi_config_hash="b3f10d8b0712550fbc905255d5b81812" id="b7471c18-89e6-4e6d-826c-5f0ca0791154" chipset="acmgt2" name="DepthPipe28" />
+    <guid config_hash="0a99a7d55f2537c9fae13da4cc2979cd" mdapi_config_hash="fc253333de6533f83091cfe99aed3c8b" id="36d7c5ca-28e3-41c8-8e2b-f67beba4b23f" chipset="acmgt2" name="DepthPipe29" />
+    <guid config_hash="9ce906de561108d7938a42a368d151bf" mdapi_config_hash="e20c870a0352427698d87db395eae958" id="1bfbb150-1614-49a3-973b-7972bf7c9a91" chipset="acmgt2" name="DepthPipe30" />
+    <guid config_hash="abc80824498b165289b9f75df4190d12" mdapi_config_hash="fc7d42f1bee45992170dde47aea80c4f" id="80d75f6a-6c5b-46c9-a3a7-1911e2cba86e" chipset="acmgt2" name="DepthPipe31" />
+    <guid config_hash="7f3a20d3730ad747b44abe1b82370868" mdapi_config_hash="dca227fe5b6366b467f4920ee7e5f467" id="3368bfa2-0680-4282-aaf1-9ec1a1713b82" chipset="acmgt2" name="DepthPipe32" />
+    <guid config_hash="4d2a8d4082de019fe7404a2d997abc8a" mdapi_config_hash="1f6a45303c8f6824c3fbb9253694410a" id="101b4d80-895b-4957-9f24-18456078793a" chipset="acmgt2" name="DepthPipe33" />
+    <guid config_hash="b8fa13fb0c0402674de46050acbaef28" mdapi_config_hash="f72d2ff77944bf53157694ba5b4250c3" id="342e501a-0038-412c-9e8a-a9ed02b7b9ef" chipset="acmgt2" name="DepthPipe34" />
+    <guid config_hash="340a1be450b022e9881f60dac6b0c978" mdapi_config_hash="a934832fc2e93ab17811c26553055224" id="5c4a1a1c-3df5-43af-adb0-9cd78dd944f8" chipset="acmgt2" name="DepthPipe35" />
+    <guid config_hash="87245aedf765423b6fa4e64e7a0f9ad8" mdapi_config_hash="6514a5e312de739a494c5da91d30e5f9" id="f19a51db-ff00-40c0-a13f-1c404e80652e" chipset="acmgt2" name="DepthPipe36" />
+    <guid config_hash="8eab7e7fb852091f7139d38ef586e58f" mdapi_config_hash="d509513363eca37f080340e56447d95f" id="6f269feb-2743-4953-a8b4-7e4b000901bc" chipset="acmgt2" name="DepthPipe37" />
+    <guid config_hash="e548befd8d7dba01b365c94f4211e0a2" mdapi_config_hash="217b05e3a3e0e65ff6b8f201abab4cb4" id="7b9d22cb-7c4e-4885-be22-833c310e7fd4" chipset="acmgt2" name="DepthPipe38" />
+    <guid config_hash="25bacb972ec8a72009256f468fdc7b34" mdapi_config_hash="5dc6b05212009053300d87b6832e8101" id="482c20b4-68c5-4656-8de2-039b2ca8a0f9" chipset="acmgt2" name="DepthPipe39" />
+    <guid config_hash="5f86d93ea1eacf0e38ad991671c6b74e" mdapi_config_hash="3b5f5269683026ceb942218699e81328" id="743ffcbc-c6d5-4b28-b58c-1d23d1ea8fff" chipset="acmgt2" name="DepthPipe40" />
+    <guid config_hash="df0dbc21210f17109d26fd50db9eb79c" mdapi_config_hash="b5477b7eb1cd880254a9ae59919dd592" id="f809a7a3-2248-480c-b851-1b23f3d6e7f2" chipset="acmgt2" name="DepthPipe41" />
+    <guid config_hash="e74afa468ab00e7e9cf00a3259828d27" mdapi_config_hash="9818b3a1236bc1335db8d88cba97d419" id="effaccd8-6f1c-4a50-b39b-3a0f75eebf66" chipset="acmgt2" name="DepthPipe42" />
+    <guid config_hash="03667604b77c542fcdc3faf3e8d1331c" mdapi_config_hash="d5c373e3fd890a3ed1aad01ee8e720c6" id="39b392ed-3513-4c3f-9b22-bde5a9ee725c" chipset="acmgt2" name="DepthPipe43" />
+    <guid config_hash="79543dfdc6cd0734aa3ef643f39ff640" mdapi_config_hash="40a2c3a10c7686dc1e24b890b89db75f" id="adb868c4-97f3-420f-b766-073244232afb" chipset="acmgt2" name="DepthPipe44" />
+    <guid config_hash="77aebe954076577ec527a2cb5b9c1548" mdapi_config_hash="8b6fe5a377b895a8a84c414d13827031" id="71825303-a777-4079-85e0-69ee3f3caad3" chipset="acmgt2" name="DepthPipe45" />
+    <guid config_hash="f97181f2ab64833fed8ac02f87bf37da" mdapi_config_hash="3426d6e7f950c26b860e00475e089cfa" id="2e086ff4-e74f-45bd-82d7-599a27a9aaba" chipset="acmgt2" name="DepthPipe46" />
+    <guid config_hash="7a5fb3635232890411b4d2e48f6f07d7" mdapi_config_hash="42e1115a80d8d18cf2b00c4f8a70630b" id="b0b33553-4e1c-445d-8e40-c03873ef1d5e" chipset="acmgt2" name="DepthPipe47" />
+    <guid config_hash="f18632de86831a51707f80db4669089b" mdapi_config_hash="bfdc8226cc0f4db7db9b5e26007a92de" id="154e627a-ce2c-4d36-a441-dae9e8317fba" chipset="acmgt2" name="DepthPipe48" />
+    <guid config_hash="fd8ba9b85ca32bf76da2d10b1196136e" mdapi_config_hash="32ad6cf6e7d651d616068d363ac6ab6a" id="8d79b860-44be-4e17-bd33-eb95a7d6ad47" chipset="acmgt2" name="DepthPipe49" />
+    <guid config_hash="f24f0a45547e017a9ccabd51aede0f85" mdapi_config_hash="d4143011c741df10763d16d978593f4e" id="980f1b68-a258-493e-aad2-8b40a0923a67" chipset="acmgt2" name="DepthPipe50" />
+    <guid config_hash="fa19704938ef68ede42f07d334d6a7d4" mdapi_config_hash="01d96cf51f7cb83278ed9923eb36387c" id="502ad763-3720-4e28-93c2-6d9e4383c8b2" chipset="acmgt2" name="FrontEnd1" />
+    <guid config_hash="a8e81543f074b5bdaf7bc2f08a207231" mdapi_config_hash="549d005137faa69f0f7594adbcd230c6" id="f655036b-8302-4327-880e-014cffa29448" chipset="acmgt2" name="Geometry1" />
+    <guid config_hash="caaf80ee9d79d42d93333c74c306af41" mdapi_config_hash="311d418a23fd608f708e3526cdb289a8" id="80abe21d-174e-4d5f-a64f-34eea53e8c59" chipset="acmgt2" name="Geometry2" />
+    <guid config_hash="14fec9d5b91e29482746c96a4643f787" mdapi_config_hash="4891bb7ced8889be3e852724bffc53b2" id="f736c728-c16c-4125-97c3-b7e2f7d25ecc" chipset="acmgt2" name="Geometry3" />
+    <guid config_hash="bdc1081e1bcbb97611db235573edda8f" mdapi_config_hash="17cbcd1b7b627b1b729b05de22bf8b92" id="81996036-5d85-4ca6-83f8-a5bce6428d80" chipset="acmgt2" name="Geometry4" />
+    <guid config_hash="70b2660e8ae7c2737b68b1a90a856a14" mdapi_config_hash="7faa85915ad0b0a4506996d907c2598a" id="09075af6-ccdd-49bf-8581-92a84840bbb5" chipset="acmgt2" name="Geometry5" />
+    <guid config_hash="fe4851067cdc7be9e15d17476f95d63c" mdapi_config_hash="9607649d7c9de41bce3415ae8229f2b8" id="09aaf18b-f85d-443d-9644-9cc847782212" chipset="acmgt2" name="L1Cache1" />
+    <guid config_hash="acfeb2b88f17cafd1cebafd04359ae80" mdapi_config_hash="2a6d3f53ab54ffc9da36a00b24e90649" id="66096c29-519c-4063-9d03-e04e50d8d478" chipset="acmgt2" name="L1Cache2" />
+    <guid config_hash="c6cf5f1d316375231590cdafdd67b4a8" mdapi_config_hash="550910ed5d80d1efbe588e1af453ddd5" id="2237bc33-3e20-446a-8d7d-7ac651314287" chipset="acmgt2" name="L1Cache3" />
+    <guid config_hash="d1742ae4fe4c17e6b3dc8a06edde7fd8" mdapi_config_hash="978b08da105152c3e5a56bdd0cc6ca83" id="c4e31e05-c514-4e2e-9686-f4225de24213" chipset="acmgt2" name="L1Cache4" />
+    <guid config_hash="c683ef61a39312508b75b6500b8f40b8" mdapi_config_hash="5b1d0638a03111dd1c9b2a4ae6e49e1f" id="1c608270-6be1-4381-bd2a-e7e5e6ec0c84" chipset="acmgt2" name="L1Cache5" />
+    <guid config_hash="c94f094d055d17af24eaa98bf50001ef" mdapi_config_hash="8eebdf1871229a9a1c201f0150205c6a" id="8ea12c1c-6dfc-4539-b7cc-4c0ed0a0e172" chipset="acmgt2" name="L1Cache6" />
+    <guid config_hash="71c2b8da77e3618e70fdb5b4064a0694" mdapi_config_hash="c0e1b28054cfa001b623213f99a254be" id="563cb980-9a7e-469f-8fa7-75fbbda1b6a7" chipset="acmgt2" name="L1Cache7" />
+    <guid config_hash="3e63f6e88ec9bc5aa368b1dea484fd10" mdapi_config_hash="1a487d0f70d1732ce5cb8b19a3d95fc7" id="203752ae-e3b3-4895-85cd-9cef09669196" chipset="acmgt2" name="L1Cache8" />
+    <guid config_hash="795aea06dbadd4aca69892c17d82dc34" mdapi_config_hash="993250d49b255b9d8f9b7187303924d8" id="94ae89ad-096f-42c3-a666-b3bb904605e9" chipset="acmgt2" name="L1Cache9" />
+    <guid config_hash="bbf6a4e4934530e4ecaa0fa42d4c9151" mdapi_config_hash="79c988006328f19c16759600a7434ca0" id="97f2d572-60c2-422d-b9eb-f0edb2f9e788" chipset="acmgt2" name="L1Cache10" />
+    <guid config_hash="58df2048ae73cf14cbf4c58ff54fe179" mdapi_config_hash="46123ec5991d0070d56076c4f1fa853f" id="df474009-ed7f-4a1b-84a5-473b35804e42" chipset="acmgt2" name="L1Cache11" />
+    <guid config_hash="639f9399b67db11f386fe9c971f2235e" mdapi_config_hash="d841417827b7d7d0d88ab7fccee20c40" id="7c3b945e-3b30-4ef2-8544-34b535ca90b8" chipset="acmgt2" name="L1Cache12" />
+    <guid config_hash="a98a24d2b243954eabbc4494ee2f56b7" mdapi_config_hash="10c0bacda46e73581dfd6d95488260fc" id="a55bc2da-2c6f-4774-a20e-bd79371902db" chipset="acmgt2" name="L1Cache13" />
+    <guid config_hash="1a137ad8d793ef57a323ee97e114c43c" mdapi_config_hash="c5c3319d817355595e9c803f2f8f2d43" id="0e4e660e-96bf-4b86-90cb-64ec0532fd03" chipset="acmgt2" name="L1Cache14" />
+    <guid config_hash="0a456cac28605d514770cb243ea65c82" mdapi_config_hash="e112557da38933723080c7919a4e5d9f" id="8bb39f7a-53b5-403d-94fb-f1f7350d2ce0" chipset="acmgt2" name="L1Cache15" />
+    <guid config_hash="1768abf0f90a2771f9eb31f09577d81f" mdapi_config_hash="e1670fbe08d7c1dc1322f782fce6a2cb" id="f4b433d4-2af0-45c2-b61c-7e9a4db553cc" chipset="acmgt2" name="L1Cache16" />
+    <guid config_hash="b85912569074b9d2382570624b460e8d" mdapi_config_hash="dfc8940c6edae43308fef4718ec90128" id="bde419e8-3eb1-4525-9317-f74900301c1d" chipset="acmgt2" name="L1Cache17" />
+    <guid config_hash="3f53b369178117cb1fbec82ac3f20173" mdapi_config_hash="94dd6ec540b62543b8d6027323748478" id="7a8bccbc-6900-470c-8204-2dc21423e247" chipset="acmgt2" name="L1Cache18" />
+    <guid config_hash="e55352d3cebcc965fb3e6fccfae3df0a" mdapi_config_hash="eb94f5512a82cc970d6880df4252f245" id="2d1b823a-ee3a-43b4-b46f-379ab7920aef" chipset="acmgt2" name="L1Cache19" />
+    <guid config_hash="a37f60e0468125c463ebdd8deec39ff7" mdapi_config_hash="1cf714fba87f1e2ad7390a1b5ea5b6f6" id="3b20c2df-ccd7-4c6c-a211-5724fa8bda6d" chipset="acmgt2" name="L1Cache20" />
+    <guid config_hash="d0f9ab033aa338ff889dd9a31fa149fe" mdapi_config_hash="b672ffc012ebaab2090b78c8cb488a59" id="186189aa-0aaf-4c63-9977-d5dfd5eb5084" chipset="acmgt2" name="L1Cache21" />
+    <guid config_hash="c92b384719ae18177ce6be1483167c58" mdapi_config_hash="fcb4cf869c074363c02be49fcbd656c3" id="13dee569-144e-4bb0-b2da-e902336c2f08" chipset="acmgt2" name="L1Cache22" />
+    <guid config_hash="f69b32007545e657c7fe9390954f332b" mdapi_config_hash="49812fa18ed7a2cfd9a327906f479d5a" id="4b450172-544b-4249-87a4-96acdde97d6c" chipset="acmgt2" name="L1Cache23" />
+    <guid config_hash="b8af125b11c8233da647dcbe39f7098a" mdapi_config_hash="79c7c2755e34f02a5ca3fc7663c3441c" id="2bf27543-d6b4-4cb7-b53a-3b83fe6c102e" chipset="acmgt2" name="L1Cache24" />
+    <guid config_hash="488f1b53f67e98a6307bdc61add39c13" mdapi_config_hash="a9a14c62dd7a04c501b24bc5eb2d2d3a" id="e1066219-5e33-4b74-b056-94b3a62a7900" chipset="acmgt2" name="L1Cache25" />
+    <guid config_hash="bfd3a44e5356b7f1486b966e5f2bdfed" mdapi_config_hash="d33fb669ab29e8bf3cb591d509b2c90d" id="30ee8347-968a-4ec0-985a-234c0d5ee72e" chipset="acmgt2" name="L1Cache26" />
+    <guid config_hash="68f17a9c7949a3432b26cf0b7d65a9b8" mdapi_config_hash="bb1929e15f2b070ab067b4bf9de42fae" id="d38715b6-5d8d-44ad-82b4-83d6a143d61c" chipset="acmgt2" name="L1Cache27" />
+    <guid config_hash="f6e5e2796653b17c68eb4f61d080e771" mdapi_config_hash="57e5f15fd39a2bba8b90b711cdb37302" id="1f851454-2f9c-44da-b403-82493b4e41ee" chipset="acmgt2" name="L1Cache28" />
+    <guid config_hash="61118c75e633fb8ff72fb2d4f037690d" mdapi_config_hash="4cf5f428b92298d5c9591fbeb70b131b" id="32f03e2e-890a-4db8-9d12-cd2a9b46456c" chipset="acmgt2" name="L1Cache29" />
+    <guid config_hash="fb5b527a4eabbfbb82565559037d5e6e" mdapi_config_hash="0564c8ff5bd29284196bab1746db55df" id="f124e69c-983e-4d57-bd6a-26af2dd386ba" chipset="acmgt2" name="L1Cache30" />
+    <guid config_hash="48af1360c433f467eda94f792b51a752" mdapi_config_hash="ec509eb1a5cada23f7b0bb729985746f" id="77bfa913-7775-4d45-8c3f-4510520c7b15" chipset="acmgt2" name="L1Cache31" />
+    <guid config_hash="76e2bb353c0f94d47715411510a0cc8a" mdapi_config_hash="7251d6b44e477f0bbb575f6714554c80" id="9ed928dc-d0e2-455c-a2ef-b5cac335bab9" chipset="acmgt2" name="L1Cache32" />
+    <guid config_hash="0020d37bc982539f70e86d74452b38d9" mdapi_config_hash="7538eb8a2dfbd7c81e01b8501119b8df" id="6ac07bf2-e77c-4a85-97d8-08d9f86b3f77" chipset="acmgt2" name="L1Cache33" />
+    <guid config_hash="c5b7316ccd7d201dd803c9932abb8838" mdapi_config_hash="e960a269ad30407bfb311b21685c20bf" id="d8fde355-eb9a-4490-b61f-31fb98ba4f70" chipset="acmgt2" name="L1Cache34" />
+    <guid config_hash="2f2096d3f4a76cfc74635b6e1fbebede" mdapi_config_hash="2b182b30d0c07ddad4d99b005fc4be9d" id="c045a7e6-dd83-419c-abff-643ccb4ff70f" chipset="acmgt2" name="L1Cache35" />
+    <guid config_hash="9386d7177cdbf0e0dbc6f2070bc47a0a" mdapi_config_hash="4e8898254f4d30feef238ff53b261b43" id="5c6b81b0-056f-451e-b3be-dea10b2c1ecb" chipset="acmgt2" name="L1Cache36" />
+    <guid config_hash="35d73c6939eeb18555ba52f7bc868e6d" mdapi_config_hash="dfce6aca65bf82ebb03baaa70401ba5e" id="2558f9cd-1565-498c-a539-430377a55a93" chipset="acmgt2" name="L1Cache37" />
+    <guid config_hash="df09ec2419112ab189bc1f92ea0d1f64" mdapi_config_hash="b9d9ad620843a6f5fa9379e1b0f5e132" id="a4a5c1e1-beeb-42ec-ba01-6af0c5eeee90" chipset="acmgt2" name="L1Cache38" />
+    <guid config_hash="d8f695987676107c80ddd6cbb35165d3" mdapi_config_hash="045673f2567bfdfd6745f0851f3f5937" id="7d80234b-4dae-4def-aa0b-2b1fe3ff0a13" chipset="acmgt2" name="L1Cache39" />
+    <guid config_hash="2130a3cdafa843307817a70741960416" mdapi_config_hash="68b344b2ae761db36ac44c6d0cda6ad3" id="ba5d47a0-a35b-4ee2-9cdd-8272cfc149d9" chipset="acmgt2" name="L1Cache40" />
+    <guid config_hash="847a9bc81407b3ec4d1636ecd9f8eafc" mdapi_config_hash="dbc842631726654433d4afb7315a38e4" id="692e3adb-d471-44a3-a3ad-0b0fedf05630" chipset="acmgt2" name="L1Cache41" />
+    <guid config_hash="153b0f6ce118bfa93d4cff52625c0382" mdapi_config_hash="bbf9c5932b8cf3431cbf9dd4144db316" id="c1c40fc7-8db1-401b-8dc9-42c3b51361a4" chipset="acmgt2" name="L1Cache42" />
+    <guid config_hash="d91ac6a9f7c6e70838f34d496bb4768e" mdapi_config_hash="a78927a5016d55d1a868daef955e3264" id="e75bf1f9-071f-4c21-8f55-e9ee154638ba" chipset="acmgt2" name="L1Cache43" />
+    <guid config_hash="cb3f35149944eb44d7d17643e7a7ea82" mdapi_config_hash="890bec54543f27a5ce11c9203bcbbe14" id="975595a3-2d15-44aa-b32f-0204e42485f4" chipset="acmgt2" name="L1Cache44" />
+    <guid config_hash="dca9b4a5cda927fc59716473cf4bb7e3" mdapi_config_hash="1da968ef1b5512fe4cffa6f41932f9da" id="9c1f54c9-3b59-479a-97e9-179a40b4b949" chipset="acmgt2" name="L1Cache45" />
+    <guid config_hash="0b3238d611fcca2958208415a75aeeb9" mdapi_config_hash="dab19941652900889644273c6a0aa9f4" id="eebc8739-0987-4f55-b70f-6cdee1a4ec02" chipset="acmgt2" name="L1Cache46" />
+    <guid config_hash="62bef2563821e7a7aa50e5e9f595fb01" mdapi_config_hash="6eb01de50863dbf54b358ee092814d0a" id="e01f5549-332a-4e23-b915-828860d438cc" chipset="acmgt2" name="L1Cache47" />
+    <guid config_hash="1c82223af52e46015e354d1084c1cb03" mdapi_config_hash="3c63143457595a69a6656c7fbde57933" id="389c0253-dbfb-47b3-878e-3eb1b9b6e74f" chipset="acmgt2" name="L1Cache48" />
+    <guid config_hash="91fa4b59d986dc770d42c8416bd20e3c" mdapi_config_hash="121ec0f8c8cb75e99a4bb97283f412b5" id="23488fdc-0420-4cee-b15a-000f3fe0c61c" chipset="acmgt2" name="L1Cache49" />
+    <guid config_hash="029b094aa82e81cc1c62122f2680ed2f" mdapi_config_hash="53edb8304c844dbf78c4b8458a588798" id="229bdc13-d602-4e78-a325-c082919dc47a" chipset="acmgt2" name="L1Cache50" />
+    <guid config_hash="26b8121d007420c54284ec550bfeb08d" mdapi_config_hash="a09a276045f57eabd81d952384e27e2e" id="35c25f46-14d7-46fa-927f-35507e61a2fc" chipset="acmgt2" name="L1Cache51" />
+    <guid config_hash="e00af287481fd08db42b91a45ff6a007" mdapi_config_hash="c83c86f62943be61d538b280e235f486" id="94284c36-9664-4d60-b4d9-15179f266d23" chipset="acmgt2" name="L1Cache52" />
+    <guid config_hash="8411fef30a49a5a95b21b5df3b1ce209" mdapi_config_hash="74b95dfbabdb7721ef974788bcf17f6d" id="a2b93539-7c7e-4ea4-85df-2fa675381a1b" chipset="acmgt2" name="L1Cache53" />
+    <guid config_hash="59928cc6564fe394d40be7d57a4eb993" mdapi_config_hash="bacc1d883e8f0ab91bd4407ee5c43f68" id="8efc5126-1bb6-47cd-bd3c-b1bfa6a99dc1" chipset="acmgt2" name="L1Cache54" />
+    <guid config_hash="46c9496178dff450d561c6db6c4baf52" mdapi_config_hash="54da21d97714b28294cc202ba76ccad5" id="4a628907-5db2-437c-b04e-8c14dede3794" chipset="acmgt2" name="L1Cache55" />
+    <guid config_hash="2f44de5ec86d8dffe9679559e34c7026" mdapi_config_hash="de28b7a3822b970a6e3d00c1dde5a59f" id="e017d352-78fe-4f3e-bda9-814fb14f495e" chipset="acmgt2" name="L1Cache56" />
+    <guid config_hash="87b7d7b05ed4f0d6e3bc2c57afc42895" mdapi_config_hash="6544636d5b2b8eaa4a008d6e804b9f54" id="c89b207d-e5c1-480a-8b15-5403d0e45fb9" chipset="acmgt2" name="L1Cache57" />
+    <guid config_hash="7c33ddcd78b5fe30c636e2057c4f22bd" mdapi_config_hash="ae12fec81fa5b6734d7e824fa0a112f9" id="dd46fc9a-6a2c-44c7-94f3-069b58c95aca" chipset="acmgt2" name="L1Cache58" />
+    <guid config_hash="701b67868821b49843b58581cb89a94e" mdapi_config_hash="62114d1967b8e1f62c7abf30a7a6b62f" id="4669435c-6f14-4557-b983-3f5186807fd6" chipset="acmgt2" name="L1Cache59" />
+    <guid config_hash="2efddfb4135bbfe176eb69b8ed603603" mdapi_config_hash="266dd9f1d87b55c124ec435ad9a529b6" id="6f37e5b7-c8fd-4f28-a95d-919848fe4a95" chipset="acmgt2" name="L1Cache60" />
+    <guid config_hash="c0db83d4e9505b057b511d42d280fffe" mdapi_config_hash="5666fadd7222d3f56debaac7f205ffb3" id="0cd1c331-f998-467e-ae36-ea334c3ba2a5" chipset="acmgt2" name="L1Cache61" />
+    <guid config_hash="677ff56067b9395b61ca2be017972b9f" mdapi_config_hash="53b10ed24d6a4a4b505cdd0b0d411220" id="09153d17-1912-4ce4-b41a-709df4aba848" chipset="acmgt2" name="L1Cache62" />
+    <guid config_hash="678fb273de91e637247476e8d621e4de" mdapi_config_hash="6696f57d26bd21be15c9bb8c130471d7" id="ea0e19bb-8a13-4e51-92ca-1cb3db78fb10" chipset="acmgt2" name="L1Cache63" />
+    <guid config_hash="84e0a02a0de1d6fb7e321241bb4aac8e" mdapi_config_hash="c9544196396053556c9149b6aed462e8" id="d7eb30f5-28aa-455b-b8a5-221db2ccfe62" chipset="acmgt2" name="L1Cache64" />
+    <guid config_hash="727bcd9ca28423c029c3c05c8109283a" mdapi_config_hash="67c1e2133493265c8b58184aac015670" id="ae51ef65-a808-4248-8c26-8fcda92bb018" chipset="acmgt2" name="L1Cache65" />
+    <guid config_hash="845f5207e43dc8815baa5f3a74fca796" mdapi_config_hash="f6c3a7b0f50f54c842b91d2a66e713fa" id="e6e2b49c-615f-4af1-a7b1-349f6b906c90" chipset="acmgt2" name="L1Cache66" />
+    <guid config_hash="8f5c611e77a1bb7319e5399c0ab66a46" mdapi_config_hash="59cc597bf5deaad25ebdb4fb499997d6" id="691098de-d8d8-40f3-906f-b20df78f5b52" chipset="acmgt2" name="L1Cache67" />
+    <guid config_hash="275e245c61db93f90aa403fbd8a95aab" mdapi_config_hash="9549f9e2b103d42b39e6f570ecee12c9" id="bdcc17c1-0c82-4277-8c4a-6c878af1f374" chipset="acmgt2" name="L1Cache68" />
+    <guid config_hash="df610b088baf4c47c904499977703517" mdapi_config_hash="423d121324d7aa7aacc7db1aac4d9454" id="e2417f86-ea22-4512-b4b6-1918c6721e47" chipset="acmgt2" name="L1Cache69" />
+    <guid config_hash="74cf7118d5945ac9a4be45874f8df3ed" mdapi_config_hash="e45c1b3f36bfe194615db26c3e9339f0" id="0b7a01c5-5622-43cd-90c1-963d8ebc4d30" chipset="acmgt2" name="L1Cache70" />
+    <guid config_hash="a1fc09261cc506881677cf814145de9a" mdapi_config_hash="53d7686a779ab852ab03887600794bfb" id="e0da306c-65eb-4032-b327-f95f4eba3020" chipset="acmgt2" name="L1Cache71" />
+    <guid config_hash="684a603ac2f686299fc617da0c374db7" mdapi_config_hash="6fd7a099fa557067e51b211f2b066fcc" id="10f602b1-6401-49df-b617-8fb07c188fa2" chipset="acmgt2" name="L1Cache72" />
+    <guid config_hash="5fb33145d9a5a6097fcaa7067f9e62cb" mdapi_config_hash="ad0a341e9a9ce31f4e5b18355fc2993d" id="8bcaab96-b9ff-4445-9b12-77c6645d4889" chipset="acmgt2" name="L1Cache73" />
+    <guid config_hash="d20d181abfc41b773d31708a9e23b0ff" mdapi_config_hash="d60a1578c32b1e420db8d18df76af6fe" id="fb2f0a27-1305-4d18-9940-d644f2fd2607" chipset="acmgt2" name="L1Cache74" />
+    <guid config_hash="a18e3710006b610bcdb1d89956d49a6c" mdapi_config_hash="8eb47368d0e2b22e6c1bfb7ef23eeaf5" id="e79fe17b-cecf-4808-98f8-dbf002286e99" chipset="acmgt2" name="L1Cache75" />
+    <guid config_hash="17c1e751af08c320054661dd528e862c" mdapi_config_hash="f3f08d8392b8a26f9be765a568632eba" id="b25a8d2b-6410-4f91-af8d-364c2f31263a" chipset="acmgt2" name="L1Cache76" />
+    <guid config_hash="9a2c3fc22929ff758195d630ea03195c" mdapi_config_hash="ce8bb7fb75913b87aaae9d81d2a6417b" id="45ec41ff-4a28-4282-973b-8fcbe65cf00d" chipset="acmgt2" name="L1Cache77" />
+    <guid config_hash="7d4b76ab04732eb30944cc95748ba5fd" mdapi_config_hash="6ac1f565436ec0b6f9fdee6698cf1c83" id="f2ea74eb-3520-4e62-a9e9-6907afd1a5e6" chipset="acmgt2" name="L1Cache78" />
+    <guid config_hash="2981fcec4da9ff6d6aa393b18f67d979" mdapi_config_hash="5df1629173d993ec2b40de211cfa3d96" id="90e0b182-84d1-4bc7-aa0b-448bb0a7a850" chipset="acmgt2" name="L1Cache79" />
+    <guid config_hash="91a4c5fee717618784c70aefb1f1d183" mdapi_config_hash="c5a3f269ce365da1559b894a6b73ba62" id="8f0b735d-f269-4545-8a11-a31b3ebed779" chipset="acmgt2" name="L1Cache80" />
+    <guid config_hash="6ee857ece45683590835ec9e515b3d33" mdapi_config_hash="755992f8ea81462b24474171aa7e1c6b" id="6e136a5b-e7fa-4349-be46-e83455caec62" chipset="acmgt2" name="L1Cache81" />
+    <guid config_hash="40d3b564502b10ce26ea5911438d3b2c" mdapi_config_hash="efc304924f3080fe49b3de750b6a8741" id="c59e0c0d-d038-4b0a-b643-bccfd3963f4b" chipset="acmgt2" name="L1Cache82" />
+    <guid config_hash="fdadfe050de2b8312d870905637b32e5" mdapi_config_hash="b4e0d5c36c5d8b4d2e8249a3fa77e142" id="5180e659-772f-4531-a2cb-f38a86841e22" chipset="acmgt2" name="L1Cache83" />
+    <guid config_hash="a20a54bf528cff3ab37f46a6a2cddad0" mdapi_config_hash="06c559de084046086a90674f2fde8a28" id="53e81609-e3d2-4679-b348-6f6473dd0fe2" chipset="acmgt2" name="L1Cache84" />
+    <guid config_hash="cf9050df5bad2b5138bf28af3fa20f97" mdapi_config_hash="8885d31781743dfdd6a76b3e24288828" id="16e8cd96-5a5d-4528-999b-90629facef72" chipset="acmgt2" name="L1Cache85" />
+    <guid config_hash="abbfc87d8a4a2f14ac0c21a55f929a74" mdapi_config_hash="c202c4281e82e5d0af7c061e13d94889" id="d4e55aa0-754b-4fab-9134-ba7168529642" chipset="acmgt2" name="L1Cache86" />
+    <guid config_hash="534ce464f938eff644cae86bd29414e7" mdapi_config_hash="86ce24a785763e61f70fa6286cb761ef" id="e80e1404-d74b-4e84-b8b2-317fe06a2900" chipset="acmgt2" name="L1Cache87" />
+    <guid config_hash="b8fbaf10619a11657d89fb0660e874dc" mdapi_config_hash="e964daaeaa36a79868a841f831eb28fd" id="b096a99f-7544-4891-9336-6a1a8f341b31" chipset="acmgt2" name="L1Cache88" />
+    <guid config_hash="db4ea4480037d802e4a1c218095e3a42" mdapi_config_hash="00e57eb66b544fd173a830dfc9e052c0" id="8164944d-16b7-4415-9c9d-c9155b54d313" chipset="acmgt2" name="L1Cache89" />
+    <guid config_hash="797087b766befa43a26c3eeb86872eb8" mdapi_config_hash="a7c29ac3dac5d23cc244d1a94a10ed24" id="f04cb35e-ad18-487c-a3a7-4c3df903df4e" chipset="acmgt2" name="L1Cache90" />
+    <guid config_hash="914dcca88b055f6d8f94d29a83759474" mdapi_config_hash="1e517763a18a66593772901b849cd1ae" id="7476a997-fd23-4e09-9e41-be5ad6998370" chipset="acmgt2" name="L1Cache91" />
+    <guid config_hash="7f099abf3bf316926926bb21d507ca02" mdapi_config_hash="9ee5578edf368bee99cee9ceb0fc4272" id="c39f76fb-108f-4470-adb7-92f0830b4b85" chipset="acmgt2" name="L1Cache92" />
+    <guid config_hash="3884dd19d59902f0047d92986058577d" mdapi_config_hash="434ebd8654b27425e267d0e1929e4a79" id="3a32053e-1919-4630-a163-dcacf9c6d003" chipset="acmgt2" name="L1Cache93" />
+    <guid config_hash="4285990bad8309b3853dd54d8cf6cfd3" mdapi_config_hash="24c7621d43db8b1f98e7fc7475e402b1" id="340e5f66-a0d2-4365-9a67-76f5fea0b623" chipset="acmgt2" name="L1Cache94" />
+    <guid config_hash="962e318d5b1e1990ae13d8d8269804e8" mdapi_config_hash="a07a3712cc1c23541e42d6d26d24803f" id="14d53071-a58c-4e71-b4e4-160815efdc7c" chipset="acmgt2" name="L1Cache95" />
+    <guid config_hash="49b91ad801e293491268b401665a4e9b" mdapi_config_hash="0aa827f2cec224521b4ce3a6de376baa" id="b390699e-0883-423a-a7c3-064e0520ebed" chipset="acmgt2" name="L1Cache96" />
+    <guid config_hash="0a37cba7ee647443dff6df91ab3bc011" mdapi_config_hash="a552e499420147d1e39317869920a1b1" id="74f12f6d-05be-4a80-9870-2a2c487f7bd9" chipset="acmgt2" name="L1Cache97" />
+    <guid config_hash="f0c36ad4d9755cd193905bf8b40dddff" mdapi_config_hash="4cd0d0a1e8d804fa5312baceaa8e9970" id="f587f7f5-b5fd-4183-a59c-3ca769fe8148" chipset="acmgt2" name="L1Cache98" />
+    <guid config_hash="eb037be89e9e529ac0bdc1f591173dda" mdapi_config_hash="4c7879deeebc493fd0c0b4c3a2dae432" id="08848093-c9f7-4554-a447-278c4da9f9ea" chipset="acmgt2" name="L1Cache99" />
+    <guid config_hash="51e0f82f6d3ed8d16543c3428b0a9f7b" mdapi_config_hash="b46cc56289fd18b6834953d7b44289dd" id="8fd337d7-938c-4a64-b5b9-37df6074e4c0" chipset="acmgt2" name="L1Cache100" />
+    <guid config_hash="28333442cbed046f028da7f59b0c7906" mdapi_config_hash="a7395385144981a6f9fd951843eddc20" id="e47ea265-e42a-4a04-81b2-30814815b3aa" chipset="acmgt2" name="L1Cache101" />
+    <guid config_hash="2acce7ca3d83b96640d8f5c2dcfb568b" mdapi_config_hash="640ad0f09bd604e0fc4a1a0553e012aa" id="ff5717d6-fae7-4288-885c-3850588e4b2e" chipset="acmgt2" name="L1Cache102" />
+    <guid config_hash="8604db9cd9bf81b735d5aa98ae1b1769" mdapi_config_hash="caeadbc0d55e9908eb1350d6b7c05a94" id="9fad96f4-5977-4cf8-a2e4-bd72b277075f" chipset="acmgt2" name="L1Cache103" />
+    <guid config_hash="3f88a5acc8d8378defb402342c627716" mdapi_config_hash="48b1c7718ec5794ad4fef55d1b67dde9" id="997c44e5-85b3-47f7-9845-6c42c554caae" chipset="acmgt2" name="L1Cache104" />
+    <guid config_hash="fe80dafe25095954ce5a066bfd370b58" mdapi_config_hash="d9daf5c95f8517a3997e4d1aa0ed61f4" id="7c51d383-b682-4f1d-831d-b689c8be3fdd" chipset="acmgt2" name="L1Cache105" />
+    <guid config_hash="70c62045d4589c09fd3ea26eb80b43f3" mdapi_config_hash="ed09ee8974cb42832706489c93d86cfc" id="04638c41-779d-4d79-a3bc-69b642342b99" chipset="acmgt2" name="L1Cache106" />
+    <guid config_hash="7b4f3476b4ae5bc43a65e6edd581d88f" mdapi_config_hash="d183ba198c132ebda9caa011391dbdec" id="86bb1e10-f542-4f9c-b0f3-8a1fc1caf5aa" chipset="acmgt2" name="L1Cache107" />
+    <guid config_hash="8790e0514201040e098b884ada87d1a7" mdapi_config_hash="80df4d22b8fc27143d5838073b55ac7e" id="dab065f1-c8a2-4e03-823e-ad9591fdcf29" chipset="acmgt2" name="L1Cache108" />
+    <guid config_hash="37ba993a6db36ab92beeffd40c32e2d9" mdapi_config_hash="91b039638bcb7754474f24f1e746d160" id="cefea11c-d38d-4ddb-8ce1-f24d75799a7e" chipset="acmgt2" name="L1Cache109" />
+    <guid config_hash="2a17094d9adf3d6a7df1c9cc17299ec7" mdapi_config_hash="66b6fdc9420217dee14e63e4dd97778d" id="1178f323-ea3e-41c3-905c-2a8442f3b4f6" chipset="acmgt2" name="L1Cache110" />
+    <guid config_hash="25348baf76fb0effdd58bffd72dc8c90" mdapi_config_hash="6affe0fa735ab0a283d3206381f69273" id="26bca320-d4e2-460a-9896-a5fb2a279ccf" chipset="acmgt2" name="L1Cache111" />
+    <guid config_hash="55e9d5104bea00d9e2a70c9ce4ddafdf" mdapi_config_hash="a2333db29be1f4d0734993a285fa892a" id="3f8fbb78-69b9-4e93-afcb-2a0f380c2013" chipset="acmgt2" name="L1Cache112" />
+    <guid config_hash="a29b25b7b74c4b3733d424b168ed7541" mdapi_config_hash="d992d283a1dde3292e0b6e301613391c" id="da9b2768-977e-4de8-bbd1-036260d79f93" chipset="acmgt2" name="L1Cache113" />
+    <guid config_hash="5afa32f3dd13d96199ee49747cd6509d" mdapi_config_hash="8cb2a8ff8a6bd993abe653d1e2bbf5ba" id="0eb1375c-25b4-47ff-b124-ba4eba95871a" chipset="acmgt2" name="L1Cache114" />
+    <guid config_hash="8527812c9a98f3a9c3cdb6997992261b" mdapi_config_hash="2fc1b86355a89c2c836356afc5bbebba" id="58be8181-92a3-4cec-ad46-30ea575830ad" chipset="acmgt2" name="L1Cache115" />
+    <guid config_hash="14ab6d8aeba4547d1e41b3118c8f2a1e" mdapi_config_hash="4798dd975dfd3537e0e4032d8a1e384e" id="1a3918a7-1fc2-430f-82f2-9114e69586fb" chipset="acmgt2" name="L1Cache116" />
+    <guid config_hash="41d119a28856e2d26af9e2f04724d9f8" mdapi_config_hash="7a59766a500631b8e7b117b03d916f32" id="5206a8c9-3c75-485b-8e78-e3057cda1bb2" chipset="acmgt2" name="L1Cache117" />
+    <guid config_hash="a47cd92bed5a81e48a6e75eb703efeb5" mdapi_config_hash="4ced08f93f3e9627c26d24b91290fa76" id="fe39d1bc-b405-4a4d-99a5-3079c0cb6a71" chipset="acmgt2" name="L1Cache118" />
+    <guid config_hash="686e92496f0003be177f8c492196ba03" mdapi_config_hash="b8ff84f9d755336f2856a3cf662a4cc9" id="7580647f-8c47-4796-a7f6-8f6011aaabe8" chipset="acmgt2" name="L1Cache119" />
+    <guid config_hash="7d69996da4c12911366c330792eb3de0" mdapi_config_hash="7c74d31580ce409cab34a8d98500cc3b" id="b7ae9004-efa6-4851-951c-e901b3228664" chipset="acmgt2" name="L1Cache120" />
+    <guid config_hash="51b675ac90f1f78adf7fad67bf2b1b59" mdapi_config_hash="7ec54297d35d02a7a288b4bbdb872fc9" id="77902327-49d2-4174-ba8c-94a796e54c72" chipset="acmgt2" name="L1Cache121" />
+    <guid config_hash="0ab197ba133ffcd74bf25056ac0feb4e" mdapi_config_hash="f5aa2e5ce54789d484d617c1cc0298d7" id="f4c597eb-8ac7-4138-8775-759d14e2cd40" chipset="acmgt2" name="L1Cache122" />
+    <guid config_hash="58bbdd90e4731ff8e49ee481cadb6b5b" mdapi_config_hash="4eb5a094e41c568f2af91abf603f9f48" id="e9ee5eb7-90aa-4798-a586-79764c58a6ac" chipset="acmgt2" name="L1Cache123" />
+    <guid config_hash="46ba6ab53b1962e31c1cd6ee3bc92d10" mdapi_config_hash="b431fa2a9ab1dace2f79c9907d65bbce" id="a5438972-875a-4301-9b15-f4d16d9d106e" chipset="acmgt2" name="L1Cache124" />
+    <guid config_hash="931a5ed1d1710856a7bcb3ff55b74c97" mdapi_config_hash="5409b01c30782cd869a44ed640c5e6ed" id="9d7b58e1-a5fa-47fb-a446-1e03556fa59a" chipset="acmgt2" name="L1Cache125" />
+    <guid config_hash="75d0cf0c1f22b81da4b58d37fff1b1d7" mdapi_config_hash="9ae3140a6b675efe8d70d64a1bc270bd" id="7ce674af-6177-4d79-8bd4-dff2ef2fab24" chipset="acmgt2" name="L1Cache126" />
+    <guid config_hash="78083dc21c0e267698c47eed796c09ab" mdapi_config_hash="45509d4994701bbe7c8ab5a7b4c3eb46" id="6dedd9cf-b928-4862-80b5-32a0a17cc238" chipset="acmgt2" name="L1Cache127" />
+    <guid config_hash="d83afd83471baa34ab13dee8b4bef9ad" mdapi_config_hash="24fd0ac05d69bd65448c2574ecffa644" id="f9352d6f-8b0f-4df0-9e79-1bd75ed6c2b3" chipset="acmgt2" name="L1Cache128" />
+    <guid config_hash="b7a6103236bb427f6a3dbe52dad2f1b1" mdapi_config_hash="c9ce6bee9391a8ae69a1bd2bdd15c1e6" id="6c5a3c61-b4cb-48d7-970f-13740c6fd02e" chipset="acmgt2" name="L1Cache129" />
+    <guid config_hash="92acf5ab2a6a0d9b1a756bc9581f827a" mdapi_config_hash="e79945e94e38885d8e8273ee39748a5e" id="a0ee28df-2030-4045-b858-d7153e151801" chipset="acmgt2" name="L1Cache130" />
+    <guid config_hash="91354cd9e43fdc6c933de1990375eaca" mdapi_config_hash="43e525d7ef49946527835f307296ab93" id="6a5e1ad7-35fe-4877-a057-c029fdcbd1eb" chipset="acmgt2" name="L1Cache131" />
+    <guid config_hash="49ba7229182dde1ae426e05d696f6cde" mdapi_config_hash="c71d3258523b72855a96c18283cc605f" id="8c4700c6-ea20-4b8e-a74a-f42f46f9bac4" chipset="acmgt2" name="L1Cache132" />
+    <guid config_hash="140a51236ec9f0557ab2e3b92dc557d0" mdapi_config_hash="e2f89971ac3c93b4b0cc633805fe9a95" id="e1fd9e53-181f-4a61-95a1-3612f36fdeef" chipset="acmgt2" name="L1Cache133" />
+    <guid config_hash="1176049beb74df7a97a4ef44f454cc7f" mdapi_config_hash="873fd669743560c313ccefe6b8411547" id="0f1d1caf-29f5-4ae3-8b3b-8a645752df97" chipset="acmgt2" name="L1Cache134" />
+    <guid config_hash="58752d90be13115d1158ad89ee7c07bc" mdapi_config_hash="9ac58bc8c7cdbb2fbceab9de24f94683" id="6eed11fb-4013-479b-94d3-9c4e084e82f1" chipset="acmgt2" name="L1Cache135" />
+    <guid config_hash="fa83f7d3a8598f312acc3bd414f32bda" mdapi_config_hash="aef223ed6793122ac9a62fdd7cad39a2" id="d08bf17e-d459-43d6-83fe-ba8ee4829cdc" chipset="acmgt2" name="L1Cache136" />
+    <guid config_hash="a9e5742b4cf8d28f16c77d0dee6bf3b3" mdapi_config_hash="26571608a578e0933afd032d29aa943f" id="b3d01145-903d-49f7-9ed7-45ed893af630" chipset="acmgt2" name="L1Cache137" />
+    <guid config_hash="52d3b142afb13148a2f55444fa4cd158" mdapi_config_hash="efba358ac82af1a31334d3042487ac25" id="5abc1aeb-9795-4d41-8872-7d9c6bb83f46" chipset="acmgt2" name="L1Cache138" />
+    <guid config_hash="2721c54c3fed4141165260dede4f409f" mdapi_config_hash="64a21f260f814bd00193d176d7414610" id="231f49f8-1312-4cf8-86a5-ecdeb9070b44" chipset="acmgt2" name="L1Cache139" />
+    <guid config_hash="8954c3dc96f9021a5cf30dbe6dadd8ca" mdapi_config_hash="19a9a2595b83c87cfe79c665d3aba3a1" id="231e99e6-e1ad-47b3-ba45-2ac2846202b6" chipset="acmgt2" name="L1Cache140" />
+    <guid config_hash="a9774b0aca0f0f389c50f6ffe7fe1b38" mdapi_config_hash="4795997a6a8153fc52073dbe5d17dfd1" id="34ccdeff-29d0-4a12-8d2a-45d6ac39a2bf" chipset="acmgt2" name="L1Cache141" />
+    <guid config_hash="f5ab7492805e54ba8e381e3322622fb8" mdapi_config_hash="c335d1477525cd331aa07564c9f25fd9" id="2e9e5b1f-3974-405c-a8a1-aeed17baca42" chipset="acmgt2" name="L1Cache142" />
+    <guid config_hash="d250de53d401332479fc38b744c8c20e" mdapi_config_hash="6f4391cee2ef1d3d89b29eb55a8c533e" id="7d8da90c-fd7c-482c-afed-007f8323285c" chipset="acmgt2" name="L1Cache143" />
+    <guid config_hash="d8fb576c9f2e714330b76ad227889fca" mdapi_config_hash="6678fb172809fd5c811920a998aa9bb0" id="ab19e5f0-333d-4787-a32d-83f2396b1dd9" chipset="acmgt2" name="L1Cache144" />
+    <guid config_hash="2817d88ac4710354c4d4cf80bf1c1be3" mdapi_config_hash="0682946b69c7ed4a68e649fa3b7f3bfc" id="49fb217b-1f94-480f-9f7f-80350a8b3f05" chipset="acmgt2" name="L1Cache145" />
+    <guid config_hash="288d53f2be7cd77f5d32612837feb2c3" mdapi_config_hash="ae6a94ae234522fae1e6a6333c25317a" id="448d0663-b147-4471-8bd3-41a75af71caa" chipset="acmgt2" name="L1Cache146" />
+    <guid config_hash="a3243aa75839f6c52b6d1824c2b49dc5" mdapi_config_hash="2ce812c9b51ecf5cdda5ef565122b2bd" id="b1dda4b7-b8aa-4db5-8e88-d09b47f092c0" chipset="acmgt2" name="L1Cache147" />
+    <guid config_hash="0a237288e63edf2bdc55e8d1bb258507" mdapi_config_hash="3614588c44e2ce6b5d98c8fed7f39bab" id="c2eb3ac8-1dd9-4a95-9723-f4bb3e1f9040" chipset="acmgt2" name="L1Cache148" />
+    <guid config_hash="0859c09d6030cc6c86aade9b6d0c1886" mdapi_config_hash="0f37a4da7a292126c18a43a9b16055bd" id="1fc4fe4d-473a-42c1-a9d4-c68a23c1bc02" chipset="acmgt2" name="L1Cache149" />
+    <guid config_hash="7dc3d9fe2d244fa34286cdf3ab270631" mdapi_config_hash="c0e284c5f8ac09963108e0a4ca49e4c7" id="cb3742b7-e01b-4759-a5cf-a473ffdc1bae" chipset="acmgt2" name="L1Cache150" />
+    <guid config_hash="2d14c21cce1c64d5787dd8c812c49cb4" mdapi_config_hash="c88b534483c53433d11a06e1396d0c16" id="e116bb6e-4a74-4d70-91ef-30162e83fa72" chipset="acmgt2" name="L1Cache151" />
+    <guid config_hash="77917c2377a2e274b57bfd01cc332056" mdapi_config_hash="449d3127227f29c5ca470a8f1066d141" id="d2731321-319c-4e1e-8cc2-70832ed45e85" chipset="acmgt2" name="L1Cache152" />
+    <guid config_hash="a98a24d2b243954eabbc4494ee2f56b7" mdapi_config_hash="10c0bacda46e73581dfd6d95488260fc" id="9b3e9938-36a7-45fa-a855-a1664cca7e7b" chipset="acmgt2" name="L1Cache153" />
+    <guid config_hash="1a137ad8d793ef57a323ee97e114c43c" mdapi_config_hash="c5c3319d817355595e9c803f2f8f2d43" id="6588bbbc-22b5-4387-8263-2de455505fe5" chipset="acmgt2" name="L1Cache154" />
+    <guid config_hash="0a456cac28605d514770cb243ea65c82" mdapi_config_hash="e112557da38933723080c7919a4e5d9f" id="916d2db4-8950-4577-b17a-91bae4439648" chipset="acmgt2" name="L1Cache155" />
+    <guid config_hash="1768abf0f90a2771f9eb31f09577d81f" mdapi_config_hash="e1670fbe08d7c1dc1322f782fce6a2cb" id="60481905-7439-44f1-81b6-ef356e002f74" chipset="acmgt2" name="L1Cache156" />
+    <guid config_hash="4ee37d5456fff9ced1ea71f4f780b847" mdapi_config_hash="dd537cbe408148b58a74888c1cedbc05" id="e735a53a-442a-43e6-b5be-d1c89c017bf2" chipset="acmgt2" name="L3Cache1" />
+    <guid config_hash="8954ca43b54846b7b71e655e150d1121" mdapi_config_hash="6b1945962232d82308543fece5e25699" id="fd307172-3c1e-432f-8347-014d0a93e2be" chipset="acmgt2" name="L3Cache2" />
+    <guid config_hash="2a126cf863f76921197b695b9d64d2e9" mdapi_config_hash="887ea10214f9ae45c5546b7e99e4d5bb" id="44447e1a-90df-452e-b701-e38c034a4eca" chipset="acmgt2" name="L3Cache3" />
+    <guid config_hash="1c20b3017de407713e575e4aec0e5c15" mdapi_config_hash="4458395ea90476b36bab4fde83631b0e" id="e37c49ce-822e-43c5-9875-6945c962305e" chipset="acmgt2" name="L3Cache4" />
+    <guid config_hash="4485b624d91f0a83ca07ef76007b04a1" mdapi_config_hash="72d9d7652bb605e24c59e4619cfbebe3" id="45bb2f55-4b48-4d0d-882a-abfbac133ca4" chipset="acmgt2" name="L3Cache5" />
+    <guid config_hash="be9e812afefa9a29a6e092b90e1c4463" mdapi_config_hash="5b0a1aaf6660656980e207ff3d5745f5" id="215b0c4c-5977-4f01-a4de-3c8f654e3573" chipset="acmgt2" name="L3Cache6" />
+    <guid config_hash="8a736ebc4a54655bba534934a53b02d0" mdapi_config_hash="a966aff72aa84d7b798426b183df8fb1" id="47f3839a-9fcb-4bc5-85ed-7096d712cda6" chipset="acmgt2" name="L3Cache7" />
+    <guid config_hash="39d3769df27ae55aee36cfcc9dc28bc6" mdapi_config_hash="72d41f6be8f159158afaa811d77d36b7" id="84f32171-9963-413e-8f14-163a3e258342" chipset="acmgt2" name="L3Cache8" />
+    <guid config_hash="dff51a07c40f64ec23af5bbe1ac7a594" mdapi_config_hash="1a272df36c165b6e43cfe10a8242287e" id="9e9237e0-0d36-4e0d-8413-1109670a1f0f" chipset="acmgt2" name="L3Cache9" />
+    <guid config_hash="a67a848d8887625c80444b37ec7b7cfa" mdapi_config_hash="712e688aa566127793c7bd2fa48e9ede" id="156b77b5-f696-42be-ad63-13a8372d5d51" chipset="acmgt2" name="L3Cache10" />
+    <guid config_hash="584ae9dbfe51d5d3245f31c467c6abf9" mdapi_config_hash="7136b4a0c6847b47310bda7f2998caa3" id="fd98f311-2512-48f3-b0fe-464f34238811" chipset="acmgt2" name="L3Cache11" />
+    <guid config_hash="df708f258fcb529fa1a7c0eaa2e908f3" mdapi_config_hash="d26114a90900fe63fc83884e703a058a" id="efee1ff5-333a-49f5-8093-7b7a6196cfce" chipset="acmgt2" name="L3Cache12" />
+    <guid config_hash="8b8337732b99754b32d269eee686ec90" mdapi_config_hash="52bd20a1210bcf3abf3f1d132ad69aa6" id="a979c83d-ccd1-4aea-8a3f-966aa9e5a4aa" chipset="acmgt2" name="L3Cache13" />
+    <guid config_hash="33d09815e5c71acbf6c076bd1ae9b522" mdapi_config_hash="38d04949430979dfc8dac6e8d19c4c7b" id="6c0c13ac-31ac-4875-a5bd-a2a0ee46dd29" chipset="acmgt2" name="L3Cache14" />
+    <guid config_hash="1f1743bdb043eeb748b62c54f1bbc0d4" mdapi_config_hash="b624b9ba8bcd7479c81fd01c76b1fa75" id="7c562d8e-e5ab-44c4-8d2d-76026e6d9ac1" chipset="acmgt2" name="L3Cache15" />
+    <guid config_hash="19cd26d2a65f99133edb3d1daa3cefb5" mdapi_config_hash="7d613330ae507326937773f842f06714" id="7eb61dda-7e60-40ed-aaae-603533cf941f" chipset="acmgt2" name="L3Cache16" />
+    <guid config_hash="a475ab83f40d179b4634322acab77824" mdapi_config_hash="540e577090f75271ecd1409969e1b8e8" id="07329ee0-625a-45bf-851c-a8d7b8694afb" chipset="acmgt2" name="L3Cache17" />
+    <guid config_hash="f8bd15aba8e2f0048a3601cbcc15ca11" mdapi_config_hash="6574af95b460c73ba7efc2adccffd342" id="ee38be83-7e26-4c3d-83ce-4882411fba2a" chipset="acmgt2" name="L3Cache18" />
+    <guid config_hash="d8e4c1a15c244e34a67fd9294b6b4d5d" mdapi_config_hash="d292acb7e1564f2114c810f6c3b703c8" id="9c3213fc-98df-4619-b6ed-3dbfe01b76e7" chipset="acmgt2" name="L3Cache19" />
+    <guid config_hash="308c43a9a1d66a236fd869c281db3d9a" mdapi_config_hash="70f77f914f669b306faeb818c0041a1e" id="eeee50d3-45ec-4978-a359-c577c3c7ccdb" chipset="acmgt2" name="L3Cache20" />
+    <guid config_hash="f03249964b767b35b0cc57dd74491e8d" mdapi_config_hash="3438a252540e9fffc1fe6f505896e63e" id="955bae70-17de-4328-ac24-3f8f2c8e1f78" chipset="acmgt2" name="L3Cache21" />
+    <guid config_hash="eb2d1efbe9330cdaa28794a31710f677" mdapi_config_hash="16c615fde3c1963ad6f529f0ad25dca3" id="a3076e23-85b3-4aae-bfa3-de0b0806fa54" chipset="acmgt2" name="L3Cache22" />
+    <guid config_hash="5fdaa583b55dd3e7be9d5f5eb3aac4eb" mdapi_config_hash="fe7ad406d16638c8e0c1f0ab1ac25735" id="6b77c667-0ea4-4d77-9a2a-ae996fc127bc" chipset="acmgt2" name="Memory1" />
+    <guid config_hash="9ca114d82894303e586aed835dcb0f88" mdapi_config_hash="3605c821371e441cef72c15579398283" id="d96f021b-8a19-44df-8f52-68ed64096056" chipset="acmgt2" name="Memory2" />
+    <guid config_hash="64c8bff1465d2ce7810675ba353f1ff5" mdapi_config_hash="59206c2fa69fb134b84037c2577feb73" id="1aefcfd0-08ce-4632-b634-2009d3303341" chipset="acmgt2" name="Memory3" />
+    <guid config_hash="085b92d2428df0efe44791fa3717f68b" mdapi_config_hash="21536fa44a50750a272f9323e7e76e4b" id="d49bf819-990d-4638-a1f2-57943ad58d8d" chipset="acmgt2" name="Memory4" />
+    <guid config_hash="50dc57924779213b3caaa6f9540fc6a3" mdapi_config_hash="8ae0db66c53a7df5dccae2c119fb3dc6" id="bd8af739-2f08-4384-823b-ea5fe198fee9" chipset="acmgt2" name="Memory5" />
+    <guid config_hash="65a1b473ab2cdc95ccf6d53128e90e61" mdapi_config_hash="bb81c2ed63461d2a6bca35d7aed12c67" id="b43a5fd8-3d74-46c4-9261-62c25070e559" chipset="acmgt2" name="Memory6" />
+    <guid config_hash="e7763bb64f4a754faa289fb971cab462" mdapi_config_hash="fe94599201d514fd698a3cdd4618a765" id="51e468d7-f95f-4b2a-bfeb-01986463e901" chipset="acmgt2" name="Memory7" />
+    <guid config_hash="0fa4d500d6492bfe6ee4709900cc15b3" mdapi_config_hash="8b6cfc416681f6d34d78248f26d10e0a" id="08667e1d-ae1b-4370-bc59-2347bb0d7f8d" chipset="acmgt2" name="Memory8" />
+    <guid config_hash="ddb58391092447a28e5feff49f63c62b" mdapi_config_hash="a3626dcb23e08b4ee51a28a2a652276a" id="b2462b2f-f73f-42d6-9b5e-46cae062d1c1" chipset="acmgt2" name="Memory9" />
+    <guid config_hash="55c88e9f5373b38072903824e5ec687a" mdapi_config_hash="8a4c4ec52b6b9024f327c98fa99effa5" id="15694e7b-c38d-4a65-a355-df93411ed0df" chipset="acmgt2" name="Memory10" />
+    <guid config_hash="fb88b728e749f05b523e3d0dd71d20dd" mdapi_config_hash="9dc2f80c96916583116bb7179981246c" id="84667f81-6441-46d7-844d-e13078a16811" chipset="acmgt2" name="Memory11" />
+    <guid config_hash="6b7d1677e9d2ee97657e61f84f9dd407" mdapi_config_hash="e974167b4e06cca2ffe52c32e8f95ce5" id="3ec5f9fe-1567-456a-bb0c-f3b026813bd7" chipset="acmgt2" name="Memory12" />
+    <guid config_hash="67ea5991fcdedef305a2c13ff62f9c80" mdapi_config_hash="da50ed835033e3a4510402261fede66e" id="3ab47029-8b0b-4049-ac68-1ff07d0e7a6e" chipset="acmgt2" name="Memory13" />
+    <guid config_hash="9137fe2f16487b070fab4a5458cf5416" mdapi_config_hash="30700f828c9575a2108b84dc8ac1057b" id="8748eaa5-422c-4597-b4a1-519ccb6f4e95" chipset="acmgt2" name="Memory14" />
+    <guid config_hash="29ad295d8193438ef5de3fed7e017c55" mdapi_config_hash="dcb81479115cd05f7183102ee1bba11c" id="5050cadd-fc05-4183-b3dc-99f9ff5a0075" chipset="acmgt2" name="Rasterizer1" />
+    <guid config_hash="3c6843a17190fc9683bfe7aee17710bc" mdapi_config_hash="093cbe8a042339a5a4ef06b9c1480327" id="57ce566e-b572-4434-981c-558a16bd62d3" chipset="acmgt2" name="Rasterizer2" />
+    <guid config_hash="89dc26aaf44e90334f57ea6760c3a4af" mdapi_config_hash="ef2509ac6490c680bdf76cf8e02ff020" id="2db46c14-6718-46e3-a9a4-b2ba4aa10a3a" chipset="acmgt2" name="RayTracing1" />
+    <guid config_hash="00e479c6c238a94c62c08e926be012f1" mdapi_config_hash="8972442dd8950597c3aa49ef7141af8c" id="97513a9f-a2b6-4766-a2c7-530ae3271f9d" chipset="acmgt2" name="RayTracing2" />
+    <guid config_hash="bb9a11a7f271be48a45d6e6af86df754" mdapi_config_hash="8a087104ddb4817b7c17057ee989a31c" id="9ed83fc5-a773-479f-9cf4-146f2aca4e48" chipset="acmgt2" name="RayTracing3" />
+    <guid config_hash="4225eb2ceefc8b9cd08be9c92a68c91c" mdapi_config_hash="dd59156814137d2db5a8ce203f3577df" id="5564a1fd-d09e-46bd-8f4d-50a38ca7eb32" chipset="acmgt2" name="RayTracing4" />
+    <guid config_hash="6e53a914ab641633f4316bfa7c0514b4" mdapi_config_hash="339b3f34afe6f634e0d919015ec46fb1" id="d345e009-3b67-4991-89f8-7d57749f8455" chipset="acmgt2" name="RayTracing5" />
+    <guid config_hash="682795bbbb25da4b0d1b353bfd6a6c9f" mdapi_config_hash="99c7a577d85ea542d31a484cf08e9882" id="08c76b7d-54fd-4dd2-8d7b-e84a91850b26" chipset="acmgt2" name="RayTracing6" />
+    <guid config_hash="995f64c5e24666d3dedf739eae226815" mdapi_config_hash="80a2122121391c648bc65ea136376c65" id="db089729-1516-43ef-b2ab-c2170bbefa69" chipset="acmgt2" name="RayTracing7" />
+    <guid config_hash="a1dbdd60f2c4f194098c0f86db409d4e" mdapi_config_hash="a17836f594acc1866467156ca36b89c3" id="080a531d-76e8-44b4-b17e-6c3557d01be7" chipset="acmgt2" name="RayTracing8" />
+    <guid config_hash="49396ff90ac75753c448d2dc4370d3ee" mdapi_config_hash="1e001c11c0cbd2629f00c378fa3aa297" id="8edc7efe-7966-49b1-b318-49de98d12bc7" chipset="acmgt2" name="RayTracing9" />
+    <guid config_hash="07f53cae80786d3f7638733961ed5602" mdapi_config_hash="9b085ca955bd432b56e334e193da6616" id="98044ed5-0502-4b10-b288-db406e6c7345" chipset="acmgt2" name="RayTracing10" />
+    <guid config_hash="68df28c7ac60c203d7ee4c9bc251c6ef" mdapi_config_hash="499f743269931af0dbd9da5359cf2b38" id="f15f0972-5362-4c24-a379-7d4da15a9cdb" chipset="acmgt2" name="RayTracing11" />
+    <guid config_hash="81bcc730ee0978010f3786da6a90a020" mdapi_config_hash="f20b89974555224f1d86c69aeb91a66c" id="f9ceae49-ee15-4483-8033-5bcbc66c962e" chipset="acmgt2" name="RayTracing12" />
+    <guid config_hash="225b7fda35ff7a0fe0a004d63d0625ec" mdapi_config_hash="a3c36cac80395a46a6f7c83a67b7d2f2" id="61aa5615-f570-4915-a9af-6c9ab3b52719" chipset="acmgt2" name="RayTracing13" />
+    <guid config_hash="c0ab6559e54930e1b535c06e3b7c9f1c" mdapi_config_hash="317c897df2064b038bcd20a2f8642a6e" id="638c0798-61d0-4943-b160-87b8095d87a3" chipset="acmgt2" name="RayTracing14" />
+    <guid config_hash="4541ffed4a7d102ae741850580cee788" mdapi_config_hash="18742f5fbbf77f63d3a73930a72be5e7" id="20c09ffa-66e3-45a8-8429-acdfb972e75b" chipset="acmgt2" name="RayTracing15" />
+    <guid config_hash="a0beddac352e857d3ea34bdd22326bc9" mdapi_config_hash="afd7b6dad6cc318dd87ab3452da3dedf" id="ea6550e2-b1cd-43d9-9f45-79146292d692" chipset="acmgt2" name="RayTracing16" />
+    <guid config_hash="a034f3b4d09e7c5a974fe87d83498729" mdapi_config_hash="81752c71b659386284d0a929cf78ee76" id="d10100fb-ac64-42a1-a418-b03e112ba033" chipset="acmgt2" name="RayTracing17" />
+    <guid config_hash="83ee4253e313301ae35d424cb8c367f6" mdapi_config_hash="542b9e1eb9d9a63d89dedcb64040c3cd" id="f140f11f-5b0e-434d-ae88-cf1acd37ab49" chipset="acmgt2" name="RayTracing18" />
+    <guid config_hash="2d38cb3570c0ba479e353b717f12832e" mdapi_config_hash="6dd28628f985abb7cf2d3f2f984de2a9" id="011f9af3-43c4-45ac-b584-defd44cd442c" chipset="acmgt2" name="RayTracing19" />
+    <guid config_hash="3eb2ca18c97031c0708d81cc3094444f" mdapi_config_hash="3f002d6cffe1061c3097164ed6b3507d" id="fd6ea82c-5618-4a96-b4eb-b7d63f72432f" chipset="acmgt2" name="RayTracing20" />
+    <guid config_hash="1e42f1e51f1fdfdf7c7a58f4235984c5" mdapi_config_hash="18685decb9467eacb964ef416f43f6dd" id="cc205019-d6e9-4570-83f7-596dee6615a2" chipset="acmgt2" name="RayTracing21" />
+    <guid config_hash="85dc8019fb2c42ec8d717155096305ff" mdapi_config_hash="176d2e02e7d71358ef98d98f0ff1c608" id="14a7e762-a069-46e6-8c2e-6555813c3047" chipset="acmgt2" name="RayTracing22" />
+    <guid config_hash="68a406c787372ccbdb4dd34f4267d58b" mdapi_config_hash="6da9716c72607dbdfa41a146039737d0" id="ce74158a-e893-45a0-acd8-32ff5ac3e64c" chipset="acmgt2" name="RayTracing23" />
+    <guid config_hash="907b153677d71eeef9f4bb101b815c46" mdapi_config_hash="3389a9159a7a86c51c15f5e9e8430b1a" id="cdbdfbe1-d554-4ec9-9eb0-8a03b5ab8e01" chipset="acmgt2" name="RayTracing24" />
+    <guid config_hash="f536cb61dd20969eb1f41c40e47cd38e" mdapi_config_hash="9e78a1d3a5e09cb9f38d9b09e8ed4881" id="ff175695-a7d9-4623-9bf2-69b0bd950f3d" chipset="acmgt2" name="RayTracing25" />
+    <guid config_hash="90db7689d9d30452ccbd3cbd2cb9e4c1" mdapi_config_hash="bd7a0d91c91f218b0016ca757bc57fbc" id="b091df5b-4f20-4c91-a3d5-d2b376810ec2" chipset="acmgt2" name="RayTracing26" />
+    <guid config_hash="e0014c1494a43459ada1dcc07e7b8245" mdapi_config_hash="7b58810565681551873cc53d775dc15a" id="54634c6d-3ef3-4cd8-b80d-9642867ff9de" chipset="acmgt2" name="RayTracing27" />
+    <guid config_hash="e672d61f900ce4779a9357ea6477d6bb" mdapi_config_hash="e02dbe7b975c0e6a6736dcd5fa8ac88e" id="284d68a1-6924-4746-8ac1-8e94a116be75" chipset="acmgt2" name="RayTracing28" />
+    <guid config_hash="9e12c39d385fe105dd80d6eafa56fc9c" mdapi_config_hash="12c890ced67df31cc2e94ab9701dc1ec" id="8129227a-30cf-40cc-85ea-95614a31975a" chipset="acmgt2" name="RayTracing29" />
+    <guid config_hash="30f7e51404ab7bb19d910684ec5da464" mdapi_config_hash="409f5ac02aff380f8eb216f76d899934" id="4de4fb3e-bd28-4e5a-8fd8-01ca378184ce" chipset="acmgt2" name="RayTracing30" />
+    <guid config_hash="f47cc74ed819afa42ed5a42c8b069e92" mdapi_config_hash="0dfab0288a65b19421d1dc3928e89c43" id="5acdb2be-3918-4eed-9bc5-f272bc175a3f" chipset="acmgt2" name="RayTracing31" />
+    <guid config_hash="708ad94aa255e3f600b29b1f94889bd3" mdapi_config_hash="a0c1b4947cba92416378d919af9a7d5b" id="10125720-3004-4838-8a03-24fff2d9fb06" chipset="acmgt2" name="RayTracing32" />
+    <guid config_hash="ce010f506318b332fbab9f4614090c08" mdapi_config_hash="eb0790883fd87edfc5af44191cb01452" id="b1e299f2-35c3-4954-8cce-4fd1dd2491db" chipset="acmgt2" name="RayTracing33" />
+    <guid config_hash="95f47124fa519b69de2bf4da63b45efc" mdapi_config_hash="46af887153653c5d934be9b6fad3153e" id="bf47e090-9786-47b2-bf6d-746b7970001e" chipset="acmgt2" name="RayTracing34" />
+    <guid config_hash="4596e92f323b11c53e3060af1a6af03b" mdapi_config_hash="c614b59ff396de39ca4f89af4c0352b0" id="df706146-44af-46d0-9ce4-0af556b009e3" chipset="acmgt2" name="RayTracing35" />
+    <guid config_hash="c5d034035f7cf79adb3170e0e8360edb" mdapi_config_hash="417fb5163bf1607731a090fb24237936" id="d1e152cd-ef8e-48c0-b63c-421e17083a0a" chipset="acmgt2" name="RayTracing36" />
+    <guid config_hash="6070793f331c47b27bbff8d1dc628721" mdapi_config_hash="f44e3121536e654f4a8aa2ea107ebe07" id="e5cdc5f8-81f8-442c-a0c2-b94621efc7be" chipset="acmgt2" name="RayTracing37" />
+    <guid config_hash="411cd053f8c4edcd1a03b8093154a632" mdapi_config_hash="c0341e9bf8783006676ccf53dc13f2a9" id="6604e545-3a89-4f6e-a697-65b1f5bcb306" chipset="acmgt2" name="RayTracing38" />
+    <guid config_hash="5681976c393147160310c4a45349be05" mdapi_config_hash="9c0d5747b7a38e3f5e02f18adeeb82e4" id="3b7d7a01-6242-4544-b68b-54eb4b2f59d7" chipset="acmgt2" name="RayTracing39" />
+    <guid config_hash="12e98d211322c2c092a20488d2d0372b" mdapi_config_hash="35ceb9855310dfa390b6ac67d9ff3097" id="d7617e5d-23ae-482f-95fe-ae8615cf9172" chipset="acmgt2" name="RayTracing40" />
+    <guid config_hash="726cb480831ae1cefe4e1580ff9de20e" mdapi_config_hash="055d61701f65062245c87ee9b66f9eb3" id="f8410bd7-acba-4fd2-a2f4-9bec43057129" chipset="acmgt2" name="RayTracing41" />
+    <guid config_hash="710ef53ad0ad034a3f648b5c8b0da6b9" mdapi_config_hash="d752cde828906a42ba24cb01b3eaecac" id="c7cf55e8-7633-424a-a524-78c46698b5b3" chipset="acmgt2" name="RayTracing42" />
+    <guid config_hash="8f36977540993cfe11574c422b6ef6e8" mdapi_config_hash="c2820ab807bd95cc723a8a70a5f4bc47" id="5f5c6ff1-c38b-4b0a-bba9-187d65965cbd" chipset="acmgt2" name="RayTracing43" />
+    <guid config_hash="dbd53f482f35961786e96903033c2c4e" mdapi_config_hash="edf6fb3a240e3e9f04fd9ac7ba93761d" id="eeb417cc-d7ff-4713-92c8-dac7f5cf865d" chipset="acmgt2" name="RayTracing44" />
+    <guid config_hash="0e833f4e42df63838d4d04c968093b9b" mdapi_config_hash="f211aed305b62f017f8686f55a293fab" id="e7b14d21-de4f-46e5-9be9-619f8d0cac25" chipset="acmgt2" name="RayTracing45" />
+    <guid config_hash="2784499682d1ee4f21552e4329a8db17" mdapi_config_hash="74028d4bc2c358136edbcae0869c7e70" id="243b4356-4036-42c6-bec9-40c9f2c15bb0" chipset="acmgt2" name="RayTracing46" />
+    <guid config_hash="8ba489c8dfa21773c49b0651261dd1c2" mdapi_config_hash="8da8ba20f7287441dccf8b54c3273937" id="c1961a4a-56fa-4693-88f8-24c7c58f37fb" chipset="acmgt2" name="RayTracing47" />
+    <guid config_hash="ca88287903af5463eda58590dbe65733" mdapi_config_hash="843dc2bc03da5015ba5abe4418ef9855" id="0c4634e5-207a-4f8d-afd0-b7ee705e9a1c" chipset="acmgt2" name="RayTracing48" />
+    <guid config_hash="b680a2398d8a00d2b80d2a3940045534" mdapi_config_hash="4f4abb4dcf8c3282e82e129e64f981e0" id="3983a842-c461-43e4-86be-43f74d1fc1fc" chipset="acmgt2" name="RayTracing49" />
+    <guid config_hash="10fc994ff35f7fe3140f5e6e963c4e44" mdapi_config_hash="b6b72bcaf7f087a466798d0625c95949" id="8da1e755-69e8-4c30-9d55-317dbd8c843b" chipset="acmgt2" name="RayTracing50" />
+    <guid config_hash="39dfc44a2a719363de9b9cef950b18d7" mdapi_config_hash="6575389c5ff958032832d997e3a42885" id="95175ccf-d7f5-47cd-aa92-3598fc431169" chipset="acmgt2" name="RayTracing51" />
+    <guid config_hash="4d1f6c8b333090ba62123082bc35fe25" mdapi_config_hash="6fc0695cdb60e175acc55ce99cf0a234" id="d2d43104-87a6-4fe2-9979-5469dd33f9fd" chipset="acmgt2" name="RayTracing52" />
+    <guid config_hash="a71b1332b01346bb8dcd5b59157fc2c6" mdapi_config_hash="6b5ec92cee19f2b0ebf9809f37641857" id="a51b5ede-d663-45a2-8ce1-f19dc664a936" chipset="acmgt2" name="RayTracing53" />
+    <guid config_hash="fe518a39381c00c05da426843aa4ef80" mdapi_config_hash="a4278a92c9b4cc4bbe37ff52b65676a6" id="25676609-7d64-47ca-b92c-9128a9907f65" chipset="acmgt2" name="RayTracing54" />
+    <guid config_hash="34b50a5337d8e89ed724b403270552b2" mdapi_config_hash="eccfa01e15b2408653450944a275ed7c" id="1edc6759-9642-442c-9aa6-850ca7715097" chipset="acmgt2" name="RayTracing55" />
+    <guid config_hash="dabd8b32eecaa3903def4e5f6f1701b8" mdapi_config_hash="2cf3b55a70f318d7f93ee4f607a96957" id="ecf6d5e1-928c-49dc-868b-89893073c183" chipset="acmgt2" name="RayTracing56" />
+    <guid config_hash="ee95a6c4be4aa7e6b8d79bccd5f3e10e" mdapi_config_hash="97deedc4d38fafaaf08b2dd819a67d60" id="f8998902-7ceb-46ca-a62b-881dca4ff1f6" chipset="acmgt2" name="RayTracing57" />
+    <guid config_hash="9b08d301332f29cb4fc3768855bc98c4" mdapi_config_hash="4322639079fd93306cf46adf23f3a1f1" id="b7b90bb9-b0b5-428d-a175-d9c89ecd35d1" chipset="acmgt2" name="RayTracing58" />
+    <guid config_hash="612d9d2c0dff7fbe338faa9069e8f95b" mdapi_config_hash="01783f71454dde7768a77755aa8e1f74" id="f7cd6361-0226-4e03-8856-cf375bd1264d" chipset="acmgt2" name="RayTracing59" />
+    <guid config_hash="c2ed7ee1bcb244a7c7126fb1a31dfbf1" mdapi_config_hash="a97a27463739feebf11ff89db100bef3" id="945822ee-5469-4db5-b86e-c5f5255ac9fe" chipset="acmgt2" name="RayTracing60" />
+    <guid config_hash="85fd4d246e8c1dbb353e96c5076732be" mdapi_config_hash="bc4c3390050531a635c6f1e406c3d6e0" id="8cd0af0d-1298-4414-aa94-5e13b6083af2" chipset="acmgt2" name="RayTracing61" />
+    <guid config_hash="8bb1d88aba8645a519e7d80ca4d7aee2" mdapi_config_hash="0f7bbdcabd4b6e24074388cfe1ed9417" id="bb7ccc48-ff70-4ec5-a35d-9b77ca79034a" chipset="acmgt2" name="RayTracing62" />
+    <guid config_hash="e76233211df28a1605aeb5be0aa7e8aa" mdapi_config_hash="ed9bf2976f941bf0e658aa80a1023eaf" id="f4c111b5-6f5f-4109-9887-0968ddb7901e" chipset="acmgt2" name="RayTracing63" />
+    <guid config_hash="dd2143523ba71fca91c1864b52c48081" mdapi_config_hash="2ef60a111532f8071046e3f3b148f46b" id="dd2c9174-67a1-4114-a71e-921548e9a033" chipset="acmgt2" name="RayTracing64" />
+    <guid config_hash="75837db88ee3f74bff4b6a1ed8e9b0aa" mdapi_config_hash="8efcab2bfab6cc56a01a70496d69ec99" id="1a5ef45d-9d6c-4cde-804f-bdd054d2527a" chipset="acmgt2" name="RayTracing65" />
+    <guid config_hash="97a0ae67cfe1d575b5b397d7a306fc17" mdapi_config_hash="dfec104ee21f0fe71a6546508bb8ad75" id="fa54a0b0-a5d0-4423-97c3-37cc477cbcca" chipset="acmgt2" name="RayTracing66" />
+    <guid config_hash="c87c0c260d796465b89eca0be66ad6ee" mdapi_config_hash="7ed252af295402f184f3085d0fd97c69" id="1efaa5e7-98d8-4752-8111-3b293d46b884" chipset="acmgt2" name="RayTracing67" />
+    <guid config_hash="1a2895e49eb54b25e1fd439ec4c71097" mdapi_config_hash="7e1a11880575f4896d2793ea6d34ac8d" id="046afd23-c347-4139-9768-ced28fb81d81" chipset="acmgt2" name="RayTracing68" />
+    <guid config_hash="3b76ac2169af0e1352612da985e64792" mdapi_config_hash="e90d1417074ee13ba5969424cd63625d" id="7b00995c-f689-4a8a-862d-6391ffa9ceee" chipset="acmgt2" name="RayTracing69" />
+    <guid config_hash="2ae69f532ab4504ed11dec3ba1c0ba7f" mdapi_config_hash="5bf37fde3b5ef3ddf3589d237d25eded" id="981e8cee-e786-42de-9ca0-2ffbf6eb4ed1" chipset="acmgt2" name="RayTracing70" />
+    <guid config_hash="c7b7a9abf5196dc2c7622a1a9bb7cf54" mdapi_config_hash="abcfcc9408157fadff3e0cacfba84c0e" id="b02dcfab-bb8d-4327-ae9f-677412a38645" chipset="acmgt2" name="RayTracing71" />
+    <guid config_hash="5cb5e502454052bb27198043fa75025f" mdapi_config_hash="f93d4b8f6476f10043994d4ad8e14a2b" id="87ae14d2-1266-4939-a094-0b69e0b7f171" chipset="acmgt2" name="RayTracing72" />
+    <guid config_hash="bfc5ef590099f69b46dffe2a487f12fd" mdapi_config_hash="f0463e5b7a22c055aac79428abf6f336" id="e561fce8-e7a3-44f6-950d-96e2c7e621e3" chipset="acmgt2" name="RayTracing73" />
+    <guid config_hash="96a3b23c618b51b35f5253d457b993a3" mdapi_config_hash="21d5ab04f3f0d2e6f6267127ec4cc94d" id="f396f14f-c1f5-4f46-839a-ac7f00810d4b" chipset="acmgt2" name="RayTracing74" />
+    <guid config_hash="b554ed62d477c3e4a5f09edaed811897" mdapi_config_hash="c461ae420531ed89b63187f70ff3dd94" id="028f9e23-485e-4124-b061-6448a3a5b676" chipset="acmgt2" name="RayTracing75" />
+    <guid config_hash="36bb99404cfba411e6b956266d1a69a8" mdapi_config_hash="464364843d87ea6fef3e445cae162b04" id="57b2791d-0a96-42a3-8e1b-5692658c4f87" chipset="acmgt2" name="RayTracing76" />
+    <guid config_hash="ebb28bf125d3ba179155d6d433c42c8c" mdapi_config_hash="cfefed7b614d2b6b9cfd04c9492188d8" id="a2ff8f41-89ef-4e9a-a7f0-31412cff350d" chipset="acmgt2" name="RayTracing77" />
+    <guid config_hash="906293f6490a26da2dfee2cc3ca48f5e" mdapi_config_hash="bab650d4d331c545ef3a96aaa3c1d34f" id="c9ed79c3-88ef-415b-8d59-a4da69888f66" chipset="acmgt2" name="RayTracing78" />
+    <guid config_hash="e05907f8dd32827864d29a67500c416a" mdapi_config_hash="3b25dbe5aad01a73186cfb7a6daeac87" id="97b017f6-f65c-4a0c-8078-7a1cb65157f0" chipset="acmgt2" name="Sampler1" />
+    <guid config_hash="ae2786993813d080d09a71b7d06d70b6" mdapi_config_hash="c6805c0e5d9d4c6115426321e3c03ce7" id="62f6959a-fdae-4cdf-b50e-e818f96d3fa5" chipset="acmgt2" name="Sampler2" />
+    <guid config_hash="3e9b905a4c8037471dfafebc278c542d" mdapi_config_hash="64ac3d6e940eab29f23ef6fffbf94212" id="ec2a8d38-54ef-4090-99de-4e2cc5a1892f" chipset="acmgt2" name="Sampler3" />
+    <guid config_hash="6191d68eedd23e1204cee0f2b7658492" mdapi_config_hash="e34154e33d7001137b0f6a660f1f3bd0" id="2a10d977-d656-464c-91a0-303aff97e4af" chipset="acmgt2" name="Sampler4" />
+    <guid config_hash="973a7c9281d8d5c18a6bda46dab33087" mdapi_config_hash="b6dd66d743ee43120e30564fd65ec825" id="51dcfdcf-ea8c-4963-ab0b-72013e72e433" chipset="acmgt2" name="Sampler5" />
+    <guid config_hash="4fe9858634b37887247eceb0e2e07fcf" mdapi_config_hash="d2d7c063534e2d7c80dea60ee6936908" id="8203850e-45ae-4f59-81be-45f721f5406a" chipset="acmgt2" name="Sampler6" />
+    <guid config_hash="0a6d33f05112a9e568f0680b3c89fb55" mdapi_config_hash="3dce201b1e02cc804d0c3ffdaaefd7c4" id="3e6e7ddd-572c-4628-94a2-b8a8385fc7b0" chipset="acmgt2" name="Sampler7" />
+    <guid config_hash="b57a14e0ce4c2bf09a03970b2839aec4" mdapi_config_hash="9e9f2848e54d1491d484bc2979f39e0d" id="5683991d-228c-41e5-812b-98bc82e244b2" chipset="acmgt2" name="Sampler8" />
+    <guid config_hash="2acce003799df24c332142ef71868f0a" mdapi_config_hash="eaac1737d7e05d5c8f707a266f17226c" id="2c897818-565a-4753-a1f6-8f81529b2447" chipset="acmgt2" name="Sampler9" />
+    <guid config_hash="a265423438bcad6527bcd832767a74c9" mdapi_config_hash="69ad1017a54dfa23879b79fe78d98982" id="f74b6a50-22da-4c0e-b621-c0627525e511" chipset="acmgt2" name="Sampler10" />
+    <guid config_hash="328c61f6bfd2af104b5d00c57d544798" mdapi_config_hash="a4f28d91c554d8623f97851cb85628a6" id="6edeb7d7-a21c-4d06-bd66-dd804480f1f1" chipset="acmgt2" name="Sampler11" />
+    <guid config_hash="41a9cd4ee3d8856804b5bcedcd431e8f" mdapi_config_hash="cd0fcf8252587a434c095aba4142b7d3" id="7d691d4b-febf-415b-8d1b-1d623e936c19" chipset="acmgt2" name="ThreadDispatcher1" />
+    <guid config_hash="04c5ce7c8abe51f1f9dcd7dc51cf7721" mdapi_config_hash="e37c02b623b58fabb2d1dbcdcd14ac0f" id="04737515-c210-40b6-90b0-2ad6ce51ff72" chipset="acmgt2" name="ThreadDispatcher2" />
+    <guid config_hash="b5ec98bf5eae19302560b8ba060da03c" mdapi_config_hash="c6aebfd50fd0ae6566ff8b677f861cc7" id="6215b3ed-0c9a-4171-b8bc-035be8e8b140" chipset="acmgt2" name="ThreadDispatcher3" />
+    <guid config_hash="46e67688158bb5b58a52a38618015f0d" mdapi_config_hash="46aa11f6f56faa6be7220d4a0964442b" id="cf7b0026-fbed-4f29-ab6a-0f6acbea337b" chipset="acmgt2" name="ThreadDispatcher4" />
+    <guid config_hash="ec7ab4f8499812d3f64bb1691a46d294" mdapi_config_hash="36ceeee9f41bbd80bd3136469e417ee7" id="9fcfbc28-caaf-44ea-84a5-f1c5c2341b2a" chipset="acmgt2" name="ThreadDispatcher5" />
+    <guid config_hash="3e4057d8d1bb3d440861c51028054d1b" mdapi_config_hash="a6b105f2b8920978f0ad0c5104754018" id="c0af81b4-8172-4e9c-8da2-5051e5817de6" chipset="acmgt2" name="ThreadDispatcher6" />
+    <guid config_hash="0e1226eb3161157b19e33c5ee1f76b6c" mdapi_config_hash="f8a1fccea414832c6ed0cbb8de5e7b80" id="74538036-2ddc-486d-914c-ffe5d3ce6cfb" chipset="acmgt2" name="ThreadDispatcher7" />
+    <guid config_hash="d60a6da129e9bd73c873f69a750a7ce0" mdapi_config_hash="4c43d1866e6e83c878df73e1b48f5917" id="558bd2fd-a7f4-41e5-9ef6-1d529263bcd2" chipset="acmgt2" name="ThreadDispatcher8" />
+    <guid config_hash="0bb0ef1dccfb6cd1761249b2dca5eb13" mdapi_config_hash="fb243463fd1b924965fab18f159275bd" id="ac68b4c3-f63a-4dd8-855e-d3fd781a8bde" chipset="acmgt2" name="ThreadDispatcher9" />
+    <guid config_hash="19889d1c97e898d3976ec2a5b381dd44" mdapi_config_hash="98f6be6662c7b8a4e7722be60a2101e0" id="b969747f-2450-4725-899f-5d0701930ea7" chipset="acmgt2" name="ThreadDispatcher10" />
+    <guid config_hash="2b6bf3bafae690333c393caf2cbdface" mdapi_config_hash="da76cdec51cc789a90a98e4ddead044e" id="b2e80bd3-d852-4c07-86e0-520c90236acf" chipset="acmgt2" name="ThreadDispatcher11" />
+    <guid config_hash="b6e2a8c5afd871de9137d308f1d46280" mdapi_config_hash="87227a1b0935f24584b0c7b955222bf8" id="5622d707-7646-48bc-90e0-af17a55ab1c7" chipset="acmgt2" name="ThreadDispatcher12" />
+    <guid config_hash="8f73f1c53b7dc713290921c87a5f8d11" mdapi_config_hash="16b8a77bd8dc04dcda5da6609f5e784f" id="6149c8e0-84f6-4643-ac19-0f5b5a8fa830" chipset="acmgt2" name="ThreadDispatcher13" />
+    <guid config_hash="5689cdf757e692ca8c0cf4efcf0c4366" mdapi_config_hash="3d5d4925f07ee6c1cc5a245bfac2e157" id="3ad2842e-a192-4cb9-aca4-c3dfa9238070" chipset="acmgt2" name="ThreadDispatcher14" />
+    <guid config_hash="9a05d003976e5f710b20269eee6789db" mdapi_config_hash="3f7b2564957ae6067cee63ad1e5e26ac" id="a8b90aef-99fa-443f-8e74-06489d14a031" chipset="acmgt2" name="ThreadDispatcher15" />
+    <guid config_hash="c63718000c3c69ee99841e290aa9ac14" mdapi_config_hash="d2c12024058bf6561eee74f46338d657" id="3c5182e0-c1f6-4e9a-b5a6-752052f23389" chipset="acmgt2" name="ThreadDispatcher16" />
+    <guid config_hash="edb00f36d942aee4259c376419d97964" mdapi_config_hash="490426110fb2a81ee430a46c8c580813" id="72a4eaf8-b31d-4749-85e9-d6670ecfda25" chipset="acmgt2" name="ThreadDispatcher17" />
+    <guid config_hash="b2607dc81c5f9e38ce25bc979cbba4e2" mdapi_config_hash="f04dc0b27fe768441dcdb690525c9320" id="2b0b4fde-719b-49de-a309-aeb1f96e2f6b" chipset="acmgt2" name="ThreadDispatcher18" />
+    <guid config_hash="287a0184341c5922146db15d7858b123" mdapi_config_hash="1c1913aee4d82cef6b3684a7574cd8c8" id="d25f6c66-eb80-49f5-ba95-74e5bbeffba8" chipset="acmgt2" name="ThreadDispatcher19" />
+    <guid config_hash="2008e74bc04c777ddfff6b5a7113b6ab" mdapi_config_hash="966754d5777acd55d0971aa0d4b2ba89" id="9decfc7a-90a5-4e0c-8f20-be21a3e00e2b" chipset="acmgt2" name="ThreadDispatcher20" />
+    <guid config_hash="7c29f507cdda8151183e72bc83b16aba" mdapi_config_hash="e969dfb53b008b9a361330222efe7e5c" id="f2099f1b-7280-4175-b2a9-a373b7039027" chipset="acmgt2" name="ThreadDispatcher21" />
+    <guid config_hash="da5ea82f2cfaca1a52ae3edf053aa1cb" mdapi_config_hash="a71bf4375f0cdb69773ab605e7a31283" id="1be88735-2a46-4564-84f3-0c832cd05571" chipset="acmgt2" name="ThreadDispatcher22" />
+    <guid config_hash="45e7a48e3bbe4684b4a0ac03eda93633" mdapi_config_hash="554e74b54089d02fd66a2793804f4d3d" id="71d12693-64c0-4da1-8f5e-fdaf00bcf83e" chipset="acmgt2" name="ThreadDispatcher23" />
+    <guid config_hash="bbbe2f1b6257b2fd578fae55f30fcc6d" mdapi_config_hash="57103e1e92a526390110d4f2b0840147" id="6ad141b6-faae-40da-bdf4-02247ec1121c" chipset="acmgt2" name="ThreadDispatcher24" />
+    <guid config_hash="ab62e0256745f87471b612b97c240bad" mdapi_config_hash="5a4720b41e73b2ad76718685bb732c6f" id="74433d30-ffa1-410d-8c87-7cee0acfe4ea" chipset="acmgt2" name="ThreadDispatcher25" />
+    <guid config_hash="b95d04c098b3cd365fd868fa84123616" mdapi_config_hash="91f38934ab63e7a12883c64f2d790869" id="5ba834b3-4603-4c43-94da-6e1bacf9500a" chipset="acmgt2" name="ThreadDispatcher26" />
+    <guid config_hash="c069b37465a35182756324b38f56b9b9" mdapi_config_hash="0becb549fa9d0ddf2860b7ff763d47e8" id="dcfd59c3-e7b0-402e-a656-ca2a2f2d95dd" chipset="acmgt2" name="ThreadDispatcher27" />
+    <guid config_hash="dc3e2589349f55923689823d0f28c9c6" mdapi_config_hash="1645843b4d85e17fcd996d56b03a1ec7" id="f4a8f90b-7b27-40e1-9015-6b2b3c60920a" chipset="acmgt2" name="ThreadDispatcher28" />
+    <guid config_hash="a53f73648609ff3b6d879d65ecaacca8" mdapi_config_hash="25935ce89c394150072abedb72461dc7" id="e3476c20-6530-4dfe-bbcd-f98065ce0702" chipset="acmgt2" name="ThreadDispatcher29" />
+    <guid config_hash="7315914f4f118e90322b0391ba1e03be" mdapi_config_hash="dba993eb0806b10fd06c15f66ddda3b1" id="235cf07d-fa5f-48bf-8906-f089284a77c0" chipset="acmgt2" name="ThreadDispatcher30" />
+    <guid config_hash="f1839cf12d79452e3e00451af366fea8" mdapi_config_hash="3749bd0eb48d1930c2f0abfd432eef71" id="60f202e0-3078-4cee-bb6c-7b579827b501" chipset="acmgt2" name="ThreadDispatcher31" />
+    <guid config_hash="4839267b2c39e40d123eb1d18ea53b33" mdapi_config_hash="82806b8d59372b9472349a592296a791" id="68400a0d-dffd-4787-a1f3-7385e2f2f39a" chipset="acmgt2" name="ThreadDispatcher32" />
+    <guid config_hash="608489d87b5465ef7a59e3e60fb8fa8a" mdapi_config_hash="d349def397ceced965d0f945d167137e" id="c0fb4de2-f14e-4576-b7b4-b564a6d1eccf" chipset="acmgt2" name="ThreadDispatcher33" />
+    <guid config_hash="a979f219b220c4230fae32f86b21ab5e" mdapi_config_hash="0d749a14571a1c8cfa243d5928825422" id="ebaac92d-ede4-44be-b0d8-d3a292f1c696" chipset="acmgt2" name="ThreadDispatcher34" />
+    <guid config_hash="30a370bff9a6ac09558f7b3941f5c42e" mdapi_config_hash="b4b73b9f4bdd684e31324fb59ea13659" id="310c4352-616a-4995-a8ca-dc1b0b4083e2" chipset="acmgt2" name="ThreadDispatcher35" />
+    <guid config_hash="8d3f71932599d0926162eacd703e1484" mdapi_config_hash="c1983ac703e6dbe08a0552f6f76f451b" id="70244132-9e7c-42e1-ad19-14b16fd415ac" chipset="acmgt2" name="ThreadDispatcher36" />
+    <guid config_hash="0057ae71622c9628abb2cad982e74e82" mdapi_config_hash="f56f2a174387491e481d45cb695bf0d4" id="c7d9ebf5-268e-4377-852d-0dd8eb89151f" chipset="acmgt2" name="ThreadDispatcher37" />
+    <guid config_hash="04694d96f603223c1ffe4b566f688ebc" mdapi_config_hash="8bf8267f3cdcf704fd38227984f8c5e5" id="b7b02568-d2ce-40b8-bcbb-4ecc07ff731e" chipset="acmgt2" name="ThreadDispatcher38" />
+    <guid config_hash="0db5677558a053a7b7323022b9c2c876" mdapi_config_hash="d50175e820ace925e81239cfa4c2a778" id="af83fc4d-719e-460b-8cac-d315583f63a7" chipset="acmgt2" name="ThreadDispatcher39" />
+    <guid config_hash="7e7a598638d3b4e222a0551896cb1327" mdapi_config_hash="f61d9f8e3257b65593db09f7c8b18859" id="3d539f37-55b5-4473-9b4c-2f7d704c0d3b" chipset="acmgt2" name="ThreadDispatcher40" />
+    <guid config_hash="affba5edd0c96031ad8117e9172051ce" mdapi_config_hash="7b47b7d3bf25272c23b41a524156356a" id="c6251684-6ce6-462f-807c-657b84a2234f" chipset="acmgt2" name="ThreadDispatcher41" />
+    <guid config_hash="0f97376a548f8be3585dd5996e4266cc" mdapi_config_hash="444e46228738f84500275820ec379913" id="55cbe93c-e003-445a-95ca-478e9b8b9b51" chipset="acmgt2" name="ThreadDispatcher42" />
+    <guid config_hash="ae02977c70abb40c50d586058590b16d" mdapi_config_hash="7bd15e39458ac8f6766bb6741c14361d" id="9c9204e8-e9e6-4b93-975e-2fc874b22d9c" chipset="acmgt2" name="ThreadDispatcher43" />
+    <guid config_hash="28c56b1b4cf96b50d23063e661eff865" mdapi_config_hash="9796065ab20600213fdfa15a98e40d89" id="ea77a8e8-375a-46a7-a4cb-b0a40f3ff83a" chipset="acmgt2" name="ThreadDispatcher44" />
+    <guid config_hash="15b10155ad35b4e4672d2f5ca3a27c70" mdapi_config_hash="a642e049137262ec3f73620297dc64a5" id="22202c50-f46b-4a14-aab6-15d079655616" chipset="acmgt2" name="ThreadDispatcher45" />
+    <guid config_hash="fb03132f0214e12de2f77f01f1632306" mdapi_config_hash="004901c77410279094c8addf406d3649" id="4d77eb41-a74f-4e76-a0ac-66a63d2ad7c6" chipset="acmgt2" name="ThreadDispatcher46" />
+    <guid config_hash="9502494d9c5ada489d346061e344feb3" mdapi_config_hash="2e9605bdf39bfdda41e0ab0b4dd7a477" id="f02fbce6-28cf-42d5-a07d-6a5c07e3baf6" chipset="acmgt2" name="URB1" />
+    <guid config_hash="7d7fdfd765dd4090d2f11a433ed32418" mdapi_config_hash="5c87f223cab4513b17196c849dfe33b0" id="1f749c36-964c-40d3-ac0f-3b8e24d4149b" chipset="acmgt2" name="URB2" />
+    <guid config_hash="386b161f2653fa17b3fb4bf498e6a088" mdapi_config_hash="4f58791db71f39f2a81aa99d789dde52" id="b7679a40-d48d-4994-8342-6277a37840ce" chipset="acmgt2" name="URB3" />
+    <guid config_hash="effd1dd070aba7151dd08ff93005839c" mdapi_config_hash="290752ecc0a9af2befa1ef6a7a54d0f2" id="23924e32-c593-4b9f-905b-908c380fb0b9" chipset="acmgt2" name="URB4" />
+    <guid config_hash="a8c90f7d1bc10c40180e6edbf29fb3ae" mdapi_config_hash="f998f3c3b6040fd12a597a40e2b49b1d" id="30376d17-f01b-44cb-b41e-43a606fe4e0d" chipset="acmgt2" name="VectorEngine1" />
+    <guid config_hash="dd24329413190ca855f9c7f3cb3962c6" mdapi_config_hash="c5b0390a05d47e4aa53320a579284856" id="cbc51aeb-65c2-4bb6-8fb5-40a47800bf28" chipset="acmgt2" name="VectorEngine2" />
+    <guid config_hash="1d43902056b9596974db91a141761240" mdapi_config_hash="e54d4d98b813dccd72aecbb208f06f01" id="48620eda-41d2-4684-b4da-0140d1cdc8ba" chipset="acmgt2" name="VectorEngine3" />
+    <guid config_hash="8058f2df0e8e5b9caf8d32bef2e041b0" mdapi_config_hash="641bd5a23e2f119b8ce19e91d8db84e5" id="4f2d3240-5242-48d7-8f25-1064a7044c01" chipset="acmgt2" name="VectorEngine4" />
+    <guid config_hash="228036f7e46809d591ea8a1b7d1f8a17" mdapi_config_hash="1b0a59bf7aefd0157a166d404c8714a5" id="510e005b-5631-437d-b898-17d89b9df71d" chipset="acmgt2" name="VectorEngine5" />
+    <guid config_hash="34432fa55767983be9ed6e5106d5e2f8" mdapi_config_hash="026caf33ffbc938f0b87023a90c34846" id="c063d6a9-6cb2-449f-8799-322c31d6eb0d" chipset="acmgt2" name="VectorEngine6" />
+    <guid config_hash="8b8cf89cfb03328a0a15a97116e6c3b6" mdapi_config_hash="792bbea60341cad33fe71c0772dafeb5" id="fbfb8b12-d3b3-469d-ae93-c026b05b2107" chipset="acmgt2" name="VectorEngine7" />
+    <guid config_hash="a5d45bc68ebca135572eec0e7f0141ec" mdapi_config_hash="d495fa4ebfe11d5b5e41bfd6cc9ce800" id="2705f48c-206f-43e8-bde7-110fbfb0facd" chipset="acmgt2" name="VectorEngine8" />
+    <guid config_hash="ec8de6a7bc5bcc1dfa132f99ba928991" mdapi_config_hash="a789747bf48b7688245c03fd424eea77" id="85cb3e85-43ab-4e7f-8962-ff5e203b079f" chipset="acmgt2" name="VectorEngine9" />
+    <guid config_hash="d9f64fdd39fbf4c5f3ab387bc20ec57a" mdapi_config_hash="07d17dc7a541e2d3e1574b0faee8cc72" id="b2c23ce7-cfd8-45c8-bde6-b5d7c248b5b3" chipset="acmgt2" name="VectorEngine10" />
+    <guid config_hash="45cdd1511530f41baea0c97beb47c6fb" mdapi_config_hash="db2823c7d19e0a963a287c8731893951" id="567eef44-e37e-48d9-8f4d-fe2634110051" chipset="acmgt2" name="VectorEngine11" />
+    <guid config_hash="df5770cf6addb6884c0596b024407dec" mdapi_config_hash="99ab93bd326023b05849af3528dff7c1" id="d68e64a7-2ddb-4c33-a5d0-a0ff9de398f9" chipset="acmgt2" name="VectorEngine12" />
+    <guid config_hash="8aad3d33833ae383424520dc9771b27f" mdapi_config_hash="e2f5bdd1bda6a2942b3e5a597e0f9493" id="5123cfe9-f7b0-41ee-a2f2-6e5801ac55f6" chipset="acmgt2" name="VectorEngine13" />
+    <guid config_hash="52e4082672912484856b91fdf549f091" mdapi_config_hash="560ac8970a75e133e7f9be0dfc37aa53" id="f7b22238-61e9-4c17-a211-90f5feb9dd31" chipset="acmgt2" name="VectorEngine14" />
+    <guid config_hash="544ae8b05560aa67aec93d6fc231a8cb" mdapi_config_hash="6be5f68652602af95dfab44aebc55414" id="27f15518-fd8e-48ac-8fa8-f844a09a9cf3" chipset="acmgt2" name="VectorEngine15" />
+    <guid config_hash="6ff3288db58557799413eb1901bb4167" mdapi_config_hash="4817ab26da43744c45eca6d8a63e04ac" id="75bcab1e-545a-41a4-8437-70d37569f798" chipset="acmgt2" name="VectorEngine16" />
+    <guid config_hash="aa0d857c62223fd7726768fd6746b686" mdapi_config_hash="978c2348694889b42b214ba7d8ec9c8c" id="5f1c4a7a-d5ab-45ad-a4fc-1e64a66839db" chipset="acmgt2" name="VectorEngine17" />
+    <guid config_hash="be08c2d336f9b910a163db072d9954d9" mdapi_config_hash="a8b59cac6524ca1bf4a914823336f2bf" id="c3522b36-01a6-4b3d-b95f-414dbc013ba6" chipset="acmgt2" name="VectorEngine18" />
+    <guid config_hash="453d3bf10389f64a30ff23119d524e73" mdapi_config_hash="74c9d01cd75a0ba35662724d7574bc75" id="3e973327-7b3f-4168-afd9-b244050e9ce7" chipset="acmgt2" name="VectorEngine19" />
+    <guid config_hash="8d5b17cb47ba8ef07ee67e0a03da7f46" mdapi_config_hash="0132162d83ffd060b15ce2a3a1205847" id="71d2d15b-f26c-4978-908a-f60275fa3562" chipset="acmgt2" name="VectorEngine20" />
+    <guid config_hash="3504978153cef2ed99ab5b6c5506a760" mdapi_config_hash="a26b067756b6e139ac0035798b700b56" id="83cf4cf3-b666-44df-8702-7fc3e907164a" chipset="acmgt2" name="VectorEngine21" />
+    <guid config_hash="8279b9d7b435713d0ef2455e2b2620c9" mdapi_config_hash="699e79fd83998857a2c22dee7e8a7849" id="c6b408ba-0479-40cb-8326-0fb1d709a261" chipset="acmgt2" name="VectorEngine22" />
+    <guid config_hash="0ded5bf2b82cbc2e374f5f10a1acbbcf" mdapi_config_hash="4bc6f9a99947b8e2c8f3f22bb7384a88" id="1f43061b-db78-405a-9246-6df8ff0592f4" chipset="acmgt2" name="VectorEngine23" />
+    <guid config_hash="753fdd40d26e85ee9ddabccd09669466" mdapi_config_hash="9911dc09ae10e843471b7f0c593e4c7e" id="7aa880f9-6185-4b35-9d71-45cd71099d1c" chipset="acmgt2" name="VectorEngine24" />
+    <guid config_hash="b0c1a0c378760939b8256d7e938293f0" mdapi_config_hash="945af4fdfa16f29c690ff661d34cf3e7" id="35c22c75-f1bd-4740-854b-b7248e45bb84" chipset="acmgt2" name="VectorEngine25" />
+    <guid config_hash="53c9b294cf264f7e353f78c5e848f599" mdapi_config_hash="852ad010914e52492741be89771f4064" id="208fe223-385c-4961-b2e7-cb44f3612b79" chipset="acmgt2" name="VectorEngine26" />
+    <guid config_hash="3c03385c40740a43986a122f91857d73" mdapi_config_hash="0b98639ab5b8b7014dbc10e836bf2602" id="b72101b8-7ef1-4bd1-ac6f-5e9ac5d098d6" chipset="acmgt2" name="VectorEngine27" />
+    <guid config_hash="a0fefb1206292de24e74f6b86949c40d" mdapi_config_hash="cf80bcfa7ca9f94694d760907758b7ac" id="fdd412a9-274d-46ab-a27f-f3e107321d24" chipset="acmgt2" name="VectorEngine28" />
+    <guid config_hash="c83a1985f4911340d74058a02608b8e7" mdapi_config_hash="808fc2c7839310903946d7ef4a711d52" id="233317d4-03cf-4497-bb57-f9690bc057f4" chipset="acmgt2" name="VectorEngine29" />
+    <guid config_hash="dce85362b607b037302e4c5edbafff01" mdapi_config_hash="8f44b8aa63bc25eff9cc7e0e3a2923ef" id="c11f8f0b-35fc-45de-b8d9-06664fa2b65c" chipset="acmgt2" name="VectorEngine30" />
+    <guid config_hash="78bb705aaa2bfb24dbb04e49b0c98e11" mdapi_config_hash="a85dd41fa704767d39d58bf4d38fa062" id="413fc3f3-9886-46d6-ab81-8cd6537f20e3" chipset="acmgt2" name="VectorEngine31" />
+    <guid config_hash="bb9fcaea31e699a775f9527fe6f95d5f" mdapi_config_hash="e42394558eb10838b53e0f3eac7ee73b" id="fc0b9614-6c1b-4e90-976c-41dab7ef47aa" chipset="acmgt2" name="VectorEngine32" />
+    <guid config_hash="e90db5a8c253e1ea6fff28b0dd71f6c1" mdapi_config_hash="0764250e1a62c6ab04c8e6f8caa99d30" id="fc0d31b8-0d2d-4674-943a-3b2929dd7053" chipset="acmgt2" name="VectorEngine33" />
+    <guid config_hash="ff1dac84bb82a5c4a2a606e46fd82ba7" mdapi_config_hash="9c9f90348b4a34f23b3160dbfcb8a618" id="0b91a434-3d1a-44b4-aeb8-c0fe350f4ef0" chipset="acmgt2" name="VectorEngine34" />
+    <guid config_hash="5d2c1001983d6ffbe9a9a30f78767346" mdapi_config_hash="701a7a4c7bfba1be149fb8a46f75b93d" id="bf1e00b6-18c0-409e-8d2c-8105be297da4" chipset="acmgt2" name="VectorEngine35" />
+    <guid config_hash="6e4e00bee5dc27d0659e48084a4fa088" mdapi_config_hash="5d4803d0a2779c18f32c873a0b3689be" id="bbb25709-1345-473f-8233-6df9075eacda" chipset="acmgt2" name="VectorEngine36" />
+    <guid config_hash="c4809b4f9dbd405691ebd29dea153aa2" mdapi_config_hash="8d1002c55a03d16517de67b4b8970d12" id="fc1c6f5b-60ad-48c8-b0b7-ed9328548c7a" chipset="acmgt2" name="VectorEngine37" />
+    <guid config_hash="1ec98f7213f07aadb3317a28f4f5d47c" mdapi_config_hash="ca1807be545f1637d1a8d037fbb1732a" id="39a71cf8-2d00-49f4-b8fb-38da2b23da30" chipset="acmgt2" name="VectorEngine38" />
+    <guid config_hash="7ad328b15bdc86e72c437c7768a7953c" mdapi_config_hash="d9ea9178593ec733d2ab21c736decff9" id="d538856d-b249-46ab-b850-9058093d45d6" chipset="acmgt2" name="VectorEngine39" />
+    <guid config_hash="d3f8cdb20e25c5661c51143cc787973e" mdapi_config_hash="2c0b7be0e7cf660440ca3156fb665fd2" id="7392b735-c76c-4e4d-b936-8ec5fc8877e6" chipset="acmgt2" name="VectorEngine40" />
+    <guid config_hash="f8bccc509994dd2ffeb3f02d85d73497" mdapi_config_hash="94ac6d1aad6546de0000ffa2074dd391" id="02d21db0-db5d-4eae-9ffa-8fa1603ec8f2" chipset="acmgt2" name="VectorEngine41" />
+    <guid config_hash="8b936c07e7e00b9d14bbcd97f90514af" mdapi_config_hash="9ed0290565f072523fd331c876fa7daa" id="47b237c5-ed48-465b-b869-0d7ef59a6982" chipset="acmgt3" name="RenderBasic" />
+    <guid config_hash="47dd4aee9ef5ba2d15e61d25f735d1d4" mdapi_config_hash="c4c86e8bd7e0cfffa7c553517340292a" id="1643fb69-a674-4438-8b44-840e988877bd" chipset="acmgt3" name="ComputeBasic" />
+    <guid config_hash="da49b5c7e497eab30522295f416dd84a" mdapi_config_hash="80f802eb9434e078d1c158be06940d88" id="a4b6cfe0-e514-49d2-857c-38f3487ea62a" chipset="acmgt3" name="AsyncCompute" />
+    <guid config_hash="1a28d05d945714b099a9417181b72962" mdapi_config_hash="0cdf3168ffd88a84c2a42d4c62567189" id="026653d5-37d2-4970-bffd-b1c64dc03dec" chipset="acmgt3" name="XveActivity1" />
+    <guid config_hash="3edc7a1a8227edab55da46bf38486de8" mdapi_config_hash="d02864c6730c87e0eefaa65e0cd7bf9e" id="a20872dc-9d91-4ec5-966b-3ae75cb581b7" chipset="acmgt3" name="GpuBusyness" />
+    <guid config_hash="fbe20d97611b26288a6ed0b37280dc6c" mdapi_config_hash="aa1a7c5dbe73c2f8b180f5d1f5c08a37" id="7389b9c9-de73-468d-83a8-b27776215e6b" chipset="acmgt3" name="TestOa" />
+    <guid config_hash="c13bc9359bfc67b7117c9c6dbd41fc5c" mdapi_config_hash="7b69d2b467cea3aee9e62d74f18124b1" id="ba8ef361-332f-42f2-9c66-f8531db5e511" chipset="acmgt3" name="HDCAndSF_Slice01" />
+    <guid config_hash="90a247f2963fbec55553a58570e4f943" mdapi_config_hash="bbf6cab5fb838e4fc549da4429fcea32" id="a950a603-f683-4f26-a83d-a7ebbe218afb" chipset="acmgt3" name="HDCAndSF_Slice23" />
+    <guid config_hash="bd68a2c58e93fb61cc76c45454a08bf0" mdapi_config_hash="7c434f268899bd187788181bc4053e88" id="60f4dc32-a7b6-4301-8d34-be04b1c94e38" chipset="acmgt3" name="HDCAndSF_Slice45" />
+    <guid config_hash="ef9df4e9e10249053defc29a9cc48275" mdapi_config_hash="0bf87ccd7bc6cc3d85799ad4ef026d36" id="7666a6f3-801d-4082-ab47-f534b4dad494" chipset="acmgt3" name="HDCAndSF_Slice67" />
+    <guid config_hash="be7c8bd832a03d8843534873315435af" mdapi_config_hash="35e02e355c5baadda8a831816b16beb9" id="5357c0dc-c0cb-4ee0-bb6e-2d0882d357a6" chipset="acmgt3" name="HDCAndSF1" />
+    <guid config_hash="d5f23a2a2976e3f3db0f2b55bf55ba03" mdapi_config_hash="2af304e278af427227161dc1380001ba" id="b0c45d01-03a9-46c2-a04f-2c6a7a5d73d7" chipset="acmgt3" name="L3_Slice01" />
+    <guid config_hash="00e5a514ab3f572dfa3f1bae37bc1e09" mdapi_config_hash="e2ed813bf771f8ecb58f17bf4338cb3e" id="0c42d17c-81b7-4058-9864-65db72b70e27" chipset="acmgt3" name="L3_Slice23" />
+    <guid config_hash="a554ae599dd34a41a7ea731bef7dd856" mdapi_config_hash="b2894c23bec6f8251cc10fe3be840904" id="59ce881a-3c51-45e0-96b4-3b565220f3a7" chipset="acmgt3" name="L3_Slice45" />
+    <guid config_hash="7b94162b98c8e5709f7534444cb32e97" mdapi_config_hash="7b911c756e648a46609196d73da56254" id="36b86585-1933-4c0f-9fd0-6dfe61480d8d" chipset="acmgt3" name="L3_Slice67" />
+    <guid config_hash="e21864b05628f5843877fc3d2eaf5872" mdapi_config_hash="50c3b0b63a780149f9dbdb746f4ae456" id="99a4388a-a104-4bbb-b8b2-7b827644a16b" chipset="acmgt3" name="RasterizerAndPixelBackend1" />
+    <guid config_hash="861421d8e6ed14e3a127eeb638539c5e" mdapi_config_hash="a5ba86b63c0d436b33d07331f22c68c3" id="c5db2948-d89c-468c-b52e-f2323a099c92" chipset="acmgt3" name="RasterizerAndPixelBackend2" />
+    <guid config_hash="308dd99534327f723119073f609e96d2" mdapi_config_hash="e65d259a1e3e3e06d0b48d8b5d6baeab" id="d8d668a7-3468-4ff2-84ab-f285b2468295" chipset="acmgt3" name="RasterizerAndPixelBackend3" />
+    <guid config_hash="7605c737027b8fca919492cfb88d4281" mdapi_config_hash="c9ea1638381959f6d88bc15eda3e8430" id="0c4bf00d-3ee4-4804-9f61-5b78f9810d6b" chipset="acmgt3" name="RasterizerAndPixelBackend4" />
+    <guid config_hash="f27177db87efb799b2343da6887249b4" mdapi_config_hash="1a2531165876a41d2d264eefe65478d1" id="0eef4659-956d-4a4e-840c-dca20176165a" chipset="acmgt3" name="RasterizerAndPixelBackend5" />
+    <guid config_hash="4c62706cc1ce7cf4ecdb09776e4aea90" mdapi_config_hash="826f5e9b6e520a295dae09a873cce3cc" id="ac9c3eb4-c49e-4297-8126-3d0a78a056f8" chipset="acmgt3" name="RenderPipeProfile_Slice0" />
+    <guid config_hash="24fc40d811455cf7372c73b8b097a950" mdapi_config_hash="4be40435ee1b3802eaa28b962a495157" id="53434b4e-ae6b-457a-b337-c9ebefa86aeb" chipset="acmgt3" name="RenderPipeProfile_Slice1" />
+    <guid config_hash="dc91a8e7384850fe3d13bbf877c0afb4" mdapi_config_hash="058524f19bf713f668214398ac27c850" id="3921cb4b-32f1-4595-b51b-531651d6d89d" chipset="acmgt3" name="RenderPipeProfile_Slice2" />
+    <guid config_hash="96c047779d77b01be592b7bf0725daa9" mdapi_config_hash="0e1e95c02289d7cc6b6606ff7ee9cd1e" id="47924a4a-4cbb-4c9a-a186-efd3af8acf6a" chipset="acmgt3" name="RenderPipeProfile_Slice3" />
+    <guid config_hash="02dbd83ef5c6f69214d1e8021bf31765" mdapi_config_hash="8fc8e4ec970bf7490e91884761995195" id="ee1b4183-c89c-4bad-a11d-b91b60769895" chipset="acmgt3" name="RenderPipeProfile_Slice4" />
+    <guid config_hash="e8a46fabbb62401310d50dc1abf52505" mdapi_config_hash="cbdb7df86b5822e69718d2655ba1776f" id="a1534029-affd-453e-b8d9-2931505c5288" chipset="acmgt3" name="RenderPipeProfile_Slice5" />
+    <guid config_hash="9f396893409736d61f7bd7b60f2bba67" mdapi_config_hash="947cc529bb7bfae7a383bc2a06dcb911" id="26a82035-dadd-4227-a1b4-f7808081f10c" chipset="acmgt3" name="RenderPipeProfile_Slice6" />
+    <guid config_hash="b6b40f930fa055f2d6d3508f3216529f" mdapi_config_hash="d5238a45534700f4d129e99bf93fda92" id="71b5ebc0-874f-4ecd-b409-c387a5bb0543" chipset="acmgt3" name="RenderPipeProfile_Slice7" />
+    <guid config_hash="3d21c4c0eb01277553ddc566c7de81cf" mdapi_config_hash="af47c7b6e2c925a1294d975e93668a54" id="1fa63cc6-c791-42ae-9db4-4170daefe666" chipset="acmgt3" name="Sampler_Slice01" />
+    <guid config_hash="c2d3513a6f9372828f4eba9362839f24" mdapi_config_hash="92055c802a926c29679e7fb927dc3b76" id="c22bbd17-c8bd-4f7e-bb2f-4b045e41f1cb" chipset="acmgt3" name="Sampler_Slice23" />
+    <guid config_hash="1374ab11b0f433f1dc6e081647334a36" mdapi_config_hash="ddb8d3c8de077e60fedb2fea2db935cc" id="3946ded6-dff6-461a-a9cd-5291d9dcce51" chipset="acmgt3" name="Sampler_Slice45" />
+    <guid config_hash="ae0e334584fb700d164940cf4e644074" mdapi_config_hash="30df491a1b3e2b5bf70d84a4407418bb" id="6ab037fb-065e-4f01-b24e-5f425077189c" chipset="acmgt3" name="Sampler_Slice67" />
+    <guid config_hash="4e7aa02a87fb99fea30bc3edc4ee1c6c" mdapi_config_hash="173f234a8b0990b5bbc9d92080ce9bc6" id="f0294ed6-827a-44e0-9f79-1ddc22182899" chipset="acmgt3" name="TDL_Slice01_1" />
+    <guid config_hash="32462de2a55d983a095c140d2609df2f" mdapi_config_hash="d3f4c0c7edd1b89497679fb2cc9bc665" id="14477b8c-ad25-4351-8c67-e6411cb77bab" chipset="acmgt3" name="TDL_Slice01_2" />
+    <guid config_hash="ce6cc576f7a3cdc61121b39bfb9c4df1" mdapi_config_hash="be24d2201067d716eb72dd8774d7856f" id="6b48996e-1179-4955-bd28-d5aefeea1196" chipset="acmgt3" name="TDL_Slice01_3" />
+    <guid config_hash="f1b4051e216202e891eefa4dc071882f" mdapi_config_hash="5d73b7569997cdd6cad54f969e177b2a" id="6403c3b2-e302-4c1a-a604-7817e846ab2c" chipset="acmgt3" name="TDL_Slice01_4" />
+    <guid config_hash="2c30d81675fd855439242b99a22b16da" mdapi_config_hash="531a69fca4aa96a5ccfc4aefaec08c39" id="51d2c1bd-7432-411f-9095-ac97d55dc285" chipset="acmgt3" name="TDL_Slice23_1" />
+    <guid config_hash="ece261b3234c607e40bf5df3d0a835c9" mdapi_config_hash="f97c883cab7584a474510d14490475b8" id="32e32945-471f-4f17-bae1-9d96f9c54f8d" chipset="acmgt3" name="TDL_Slice23_2" />
+    <guid config_hash="fd11cad6d43ad39f8591c10cf6593bdc" mdapi_config_hash="462ad1e4812fca230fc447d26e8fa005" id="34804b9e-0d2b-4e97-ba78-5c2069bc9df9" chipset="acmgt3" name="TDL_Slice23_3" />
+    <guid config_hash="797272c16a8a55b09aebde9e3cd307f6" mdapi_config_hash="f70b0f0774bb4082b58db07e8967d5f7" id="97ca0de0-9d3b-4bdd-94f7-662113dfc905" chipset="acmgt3" name="TDL_Slice23_4" />
+    <guid config_hash="9b89697a77440e83dbfa355849c76fe2" mdapi_config_hash="d0d1ad642d1d30381cb71b75f3378dd3" id="f4ba49b6-37a1-4848-88d6-3c63cb8e1c12" chipset="acmgt3" name="TDL_Slice45_1" />
+    <guid config_hash="d7bafd2fc4ed422cd6e1bd0c30a387d3" mdapi_config_hash="07998d7c5a035d64ea9c0b5c4ee9e149" id="a6969313-fe82-4f0b-9499-b90c98e9ede7" chipset="acmgt3" name="TDL_Slice45_2" />
+    <guid config_hash="fecfb382a08d1fed003d14dd1f32b736" mdapi_config_hash="89efd128a656906c314d3dd905ddae37" id="8dd20826-657e-43b7-9bba-a48ef4db2d14" chipset="acmgt3" name="TDL_Slice45_3" />
+    <guid config_hash="024391d91887a202ab3ae699b2055c63" mdapi_config_hash="c93170fd7d84a471b003ab81f5cbe8f6" id="e479a02f-fc83-438f-818d-3e11e769fbae" chipset="acmgt3" name="TDL_Slice45_4" />
+    <guid config_hash="5af1421d9297050007520966b5e5c424" mdapi_config_hash="502e8637c7c9b672cd4ea529082e9c9c" id="deb1e6dd-bddd-42a4-87f5-c4bd8438a884" chipset="acmgt3" name="TDL_Slice67_1" />
+    <guid config_hash="e4fdcad7b2b16074c9c557052fbfafcc" mdapi_config_hash="e9af2a87b5ff750b024914edfad80749" id="0a6abc27-343e-4118-b17e-5c5121611b08" chipset="acmgt3" name="TDL_Slice67_2" />
+    <guid config_hash="1bbdad0fe147888cefa42c35843760bf" mdapi_config_hash="a0afe2ace5f2b1d6115ad70c760e7d07" id="67abb260-55fb-4c66-8469-db2f8700884a" chipset="acmgt3" name="TDL_Slice67_3" />
+    <guid config_hash="ba76d4c76de2f0d4075125116e2d6b6d" mdapi_config_hash="ceab4ddb2908866a598a47410bd7bc04" id="7c064e0d-b3ee-4159-9361-8d1da3158d39" chipset="acmgt3" name="TDL_Slice67_4" />
+    <guid config_hash="150f8985cb74ad2a5287cada74b6fa15" mdapi_config_hash="50a4f55c0059fd3b9a9c8b2cd104b971" id="5ae9db29-303b-4e74-8dc8-b9f2eb31aaa1" chipset="acmgt3" name="ComputeOverview" />
+    <guid config_hash="c62510f450f8a0cc5730759cdfbacd12" mdapi_config_hash="09bd91a8c4e0206fa870c4f24d220dbc" id="16047ddf-5ee1-4948-81dc-edbe26576ac1" chipset="acmgt3" name="L1ProfileReads_XeCore0" />
+    <guid config_hash="7b1eb3b7ed83436c982c6cc79575e139" mdapi_config_hash="35442e771c1923324d3d0691fdb9f302" id="224881aa-faa7-4d2d-8161-50dbb10026e8" chipset="acmgt3" name="L1ProfileReads_XeCore3" />
+    <guid config_hash="b74695f2b1086f0936360d6780a5c7be" mdapi_config_hash="9b4251c5bf70b194b4074e26442d2782" id="dc5ee653-2006-48de-8be2-e8b760a4369c" chipset="acmgt3" name="L1ProfileSlmBankConflicts_XeCore0" />
+    <guid config_hash="b8199134f6cd987db3932a1750d189d2" mdapi_config_hash="8e3a231108ccc00f81076f0c3631da5a" id="41302bd4-41dd-4c52-b250-569324d62f1a" chipset="acmgt3" name="L1ProfileSlmBankConflicts_XeCore3" />
+    <guid config_hash="70282042befaa3cea33250700bf0ba67" mdapi_config_hash="e479ab02e92a7d5aee5a6dfcf57282e4" id="a0369d50-1c37-4bf4-97a9-169c92b63483" chipset="acmgt3" name="L1ProfileWrites_XeCore0" />
+    <guid config_hash="154e3b786bc51d9a5bf4a3702bc8983a" mdapi_config_hash="02be7f02195c3e0122ed8b321ee1984d" id="ff386ef9-604c-48a5-9fc9-e2281bbd7463" chipset="acmgt3" name="L1ProfileWrites_XeCore3" />
+    <guid config_hash="166b6e6f5932d75a7a88705eb8a713c0" mdapi_config_hash="347992c13b141ef331caa118e0bfd05b" id="c027d083-6448-4ec1-9415-8a1ff807562c" chipset="acmgt3" name="DataportReads" />
+    <guid config_hash="fdd790eb59ca42388d1cebde55a24164" mdapi_config_hash="ce337b03a5e5ee5af8f503648f388a61" id="57e2e261-2715-4b63-baec-527eba9e06cb" chipset="acmgt3" name="DataportWrites" />
+    <guid config_hash="a1643e150afc0bab327e6028b6e6c585" mdapi_config_hash="529f4053bbd749fe0af1263cd18ee132" id="9e92a393-69c4-46fd-b038-e6183364d8c5" chipset="acmgt3" name="Ext1" />
+    <guid config_hash="9f94fa6d086bf98efe2870491a618d99" mdapi_config_hash="b2f34d69d307b0441de82d4bd0eef71e" id="e8621f59-b8d2-4e00-86a9-472e3848973d" chipset="acmgt3" name="Ext2" />
+    <guid config_hash="54f10148e09cf0e228b59ac34878cc1b" mdapi_config_hash="fb04b2ee7e2d3ca369e96915b99331be" id="12eee9d0-7d4a-495c-a3b5-7d8ab1b0fe02" chipset="acmgt3" name="Ext3" />
+    <guid config_hash="3c5affbee62f040dab3f589924c7c74a" mdapi_config_hash="803b021774ddfc1bda9665909a68a0d4" id="59c0b126-b2dc-4a97-818e-741e6355059c" chipset="acmgt3" name="Ext4" />
+    <guid config_hash="8b45a91a7a0ed26c9a885a56ec760db4" mdapi_config_hash="6fa30d2622d186f03947c2c8ee540483" id="9da5cb85-6e23-4896-8d99-1b8a87dd8930" chipset="acmgt3" name="Ext5" />
+    <guid config_hash="ffbe8e91559986856b0cef6a11999076" mdapi_config_hash="6ab43021269fdacc958899e92e8c2ed1" id="4cd5fd6b-e82a-44fc-a068-4debac13114f" chipset="acmgt3" name="Ext6" />
+    <guid config_hash="b936c002cbd2e3f13e156830f61819ae" mdapi_config_hash="13901e3adaadfc9bb5b5691b88bf1cdf" id="29eade65-5f7c-4b51-8006-66852e9f2181" chipset="acmgt3" name="Ext7" />
+    <guid config_hash="b00abd710b816154a71f296d7b577538" mdapi_config_hash="461f640fa828d836cb6d504557323406" id="859c2807-55de-47e0-aa30-320c23c9373d" chipset="acmgt3" name="Ext8" />
+    <guid config_hash="710439d97ba97a8a07573aac7c61a095" mdapi_config_hash="193e76601f9aa469188e9e66cab8033f" id="c9c488d0-950c-4a0a-a079-b299cd33aa6b" chipset="acmgt3" name="Ext9" />
+    <guid config_hash="9466fef3ac9944a2e9e80f74cbaac54a" mdapi_config_hash="9fa08150fd873ceea62fb500aca02fd8" id="4599426b-4cfa-442a-8a59-9eda3dd742db" chipset="acmgt3" name="Ext10" />
+    <guid config_hash="23627d1f747ff2d04aab280fc5fea540" mdapi_config_hash="ba02b567b92872e258d9f6bf82179dae" id="42107330-c266-42b4-aef5-5c2ab410edc4" chipset="acmgt3" name="Ext11" />
+    <guid config_hash="f9e8b10f87fb67d97a1238c9ba5e0488" mdapi_config_hash="b73a181e5ae3b9c36f1e9a2567a01d06" id="a0add3fe-f028-4e6c-b104-c369fabe2b09" chipset="acmgt3" name="Ext12" />
+    <guid config_hash="869b4754c1d03766ebf4ce8abb449392" mdapi_config_hash="ad24cb3846676c98edafde09ccc0b503" id="4aeacf49-91c2-41bf-8d9f-49233689e36a" chipset="acmgt3" name="Ext13" />
+    <guid config_hash="479273f0eb64a8f91423db730ce8190f" mdapi_config_hash="6f28806ee20baa48121f29b571a2367a" id="60e3a9fa-b807-4a8d-8a83-88705d05e2c9" chipset="acmgt3" name="Ext14" />
+    <guid config_hash="fe8af2de3976e29c7a4b156e1c397dea" mdapi_config_hash="5ebd58672087cec2ac70914b7464b00c" id="0aab7745-1e24-42af-9c96-c640e4f45aa9" chipset="acmgt3" name="Ext15" />
+    <guid config_hash="37cfa4226b0d1f7565c4998a7b54977c" mdapi_config_hash="5feeea46db9fbd815cfe49a768ca8c0b" id="97670487-9837-4cd2-9475-dea1d28d34fc" chipset="acmgt3" name="Ext16" />
+    <guid config_hash="e805dab51e3aaa79dc44d4df1c6c5e7c" mdapi_config_hash="816316a76f08723ec8984f6c9f35969f" id="2908914a-a836-44ec-a053-36a7ed383462" chipset="acmgt3" name="Ext17" />
+    <guid config_hash="f9dcd384d1a5366131c332ec80e2b502" mdapi_config_hash="81cbe9fcc1f58227bfd7a326a93fe425" id="34f121ae-5907-4fe2-a237-a36940510708" chipset="acmgt3" name="Ext18" />
+    <guid config_hash="99a6a96815df756f63b8453f5c362023" mdapi_config_hash="17a3903bc7086555c26bd833011aacb8" id="f3893d2b-10f8-48f6-8417-6ed748d3dccd" chipset="acmgt3" name="Ext19" />
+    <guid config_hash="3beb840cb706eac193564144b0b294fc" mdapi_config_hash="3bcbd38d2de56e1e8460ca2aa33b2057" id="6b5ae61c-ceab-4202-b550-8430b037566c" chipset="acmgt3" name="Ext20" />
+    <guid config_hash="0e74bbbfc3314d55c57a9a31fa62090f" mdapi_config_hash="8ced7baa4663a83955a8be3b0ef96767" id="66bbd7d1-f6a2-4189-99f7-8e360e28be45" chipset="acmgt3" name="Ext21" />
+    <guid config_hash="2d4e27ebf0a9576258db9d74fb21a435" mdapi_config_hash="05e77606cd218171cbb9de6f30c0c4fd" id="b8a9f40b-5906-46b2-ad95-8d36eb9cf998" chipset="acmgt3" name="Ext22" />
+    <guid config_hash="e559e4b46c6a421edf03336ced0c35ee" mdapi_config_hash="ae7a2683c57a1c9cbd3901bda793054f" id="e5d242d2-5bf6-4380-8f7c-cb0ff2372733" chipset="acmgt3" name="Ext23" />
+    <guid config_hash="0c31f3c82b04f826ceed9ce3bc5a8ac2" mdapi_config_hash="09536faf7cdef01594ccec0fb36ea5c8" id="b6096e7e-a2c9-4622-9bd6-2169cdebc490" chipset="acmgt3" name="Ext24" />
+    <guid config_hash="bd7a035b465390b0db66014ec02ae0cc" mdapi_config_hash="ca7a8895bd4dc7fee5085342b3cee3d1" id="c7b9f883-12c5-470c-ab75-790961e66be6" chipset="acmgt3" name="Ext27" />
+    <guid config_hash="e57bd76cda7013438599e06775a38424" mdapi_config_hash="657be33342d34620f1328dd6641abe52" id="78161cec-30c8-4b7f-aab8-6f13139f454e" chipset="acmgt3" name="Ext28" />
+    <guid config_hash="f0cd8d86eb9759ac70a151a3333e1746" mdapi_config_hash="a2fac04e9bfb6ed558c82794c473d940" id="e9ba5301-d2ca-4978-af6e-19096ad16dbb" chipset="acmgt3" name="Ext29" />
+    <guid config_hash="c8fda80bc6b18ccef9e0794115192e6a" mdapi_config_hash="564254c6a7e517a15f745499c8db8289" id="cae0eb96-c3e6-4a3a-83e2-e939146602b5" chipset="acmgt3" name="Ext30" />
+    <guid config_hash="7c3d63d19ced2bfb5f90641b82059e74" mdapi_config_hash="d7c7b08f86b84138391cf7028e16f15b" id="002950f1-a311-45f9-b88e-2276f42d8f92" chipset="acmgt3" name="Ext31" />
+    <guid config_hash="68198cd360b65e94c3a14982af25e346" mdapi_config_hash="0b5ba226c73f8f0d258d58d905739cdc" id="98b27683-8d7c-4b3e-92d9-3c3683b2cc38" chipset="acmgt3" name="Ext32" />
+    <guid config_hash="924bf6aa128885464ec08c2a2c509fb1" mdapi_config_hash="94670fb695cc213296897fd0aadcba3b" id="57d03ea4-1959-4b4f-8a32-abaa96246b1d" chipset="acmgt3" name="Ext33" />
+    <guid config_hash="7c45181446f0a2711e42504a3eff276d" mdapi_config_hash="5c89bbe4a73f400aaadf5f4fc7038edd" id="50fbda4a-d852-437a-9178-432d1373111a" chipset="acmgt3" name="Ext34" />
+    <guid config_hash="01bc753ac8b818c9553a3c2b46572cff" mdapi_config_hash="c322cabd6a94063d3bfc006eabb6b9f6" id="8357ba54-bded-48d6-bcb4-0f14a2da9b7b" chipset="acmgt3" name="Ext35" />
+    <guid config_hash="e58187653ca45eb169444001156587c2" mdapi_config_hash="e782335fe23bacf00b137a48e03dfb8b" id="32c9e67d-11d7-45f7-ae53-40fe6349cb5c" chipset="acmgt3" name="Ext36" />
+    <guid config_hash="92aee11e04f6a357bd584548f2db76c1" mdapi_config_hash="96c1cf144015957174b858d363f8cddc" id="53553df5-1d80-4d9a-ad30-d72ef4503603" chipset="acmgt3" name="Ext37" />
+    <guid config_hash="8251fefa48866a2b0e306d860cdf28b9" mdapi_config_hash="b8d03be6087d8b8df12e9a062881154d" id="5e66948b-68ab-4208-93f4-44c4fdd1378e" chipset="acmgt3" name="Ext38" />
+    <guid config_hash="0716571ce6c52d873bbbd96871b6e56d" mdapi_config_hash="4ab127be8ef75138827eb3586e22684b" id="0e04ae60-2cb4-47ea-9b5b-111c25dd9929" chipset="acmgt3" name="Ext39" />
+    <guid config_hash="ed0b18e9cae979707f2965013354576b" mdapi_config_hash="87059afd5280ff8dfb1094ec31000851" id="46c8c61b-b6e3-4ea7-95d9-3f9861d17133" chipset="acmgt3" name="Ext40" />
+    <guid config_hash="d350cf543099f4ab21d03a0da685dd28" mdapi_config_hash="fd104325e5ac6a1ed0664a04cb8c8d13" id="3c7fdece-0f76-411d-a7e3-583c22965830" chipset="acmgt3" name="Ext41" />
+    <guid config_hash="69060132f8453292062084b0f28e0a3f" mdapi_config_hash="2b80dc3037155b6c41f009922acce1f2" id="2324903a-33fe-4512-870b-2f8316f85ba1" chipset="acmgt3" name="Ext42" />
+    <guid config_hash="9a07cfe8a80f584ad7299227fd71bf56" mdapi_config_hash="4dad1970865036cb0291eb2d8055fda5" id="cc074ca3-3e9f-4924-805e-27d69dbf2bbe" chipset="acmgt3" name="Ext43" />
+    <guid config_hash="6cee229aae0ae658f9bb7be966c6b2cf" mdapi_config_hash="bdb9c5c12f4c70ab6a71f3ff5fc9226b" id="3fd7e51e-732e-41c7-8f9d-b81500a438cf" chipset="acmgt3" name="Ext44" />
+    <guid config_hash="d350cf543099f4ab21d03a0da685dd28" mdapi_config_hash="fd104325e5ac6a1ed0664a04cb8c8d13" id="d71b7626-b7fb-49ce-b512-22030d666820" chipset="acmgt3" name="Ext45" />
+    <guid config_hash="69060132f8453292062084b0f28e0a3f" mdapi_config_hash="2b80dc3037155b6c41f009922acce1f2" id="e87db70a-571a-4cc6-852f-8929fe2404ca" chipset="acmgt3" name="Ext46" />
+    <guid config_hash="82de07fb4704c370229487a5af67e6c8" mdapi_config_hash="a1b09192427dd154d35e069529e62a75" id="f31ec8fe-7987-48fc-ad8e-ebe0b25374b2" chipset="acmgt3" name="Ext47" />
+    <guid config_hash="80a0334e830ae1b10716cd97cf93cfd0" mdapi_config_hash="b22965c4e2693f34d58f99627beb6bea" id="add101d4-45eb-4394-9c22-66da145c4731" chipset="acmgt3" name="Ext48" />
+    <guid config_hash="626eff8d7913c56ee819229d18db5c30" mdapi_config_hash="d7f98c9735c1e339cbaa060757493d86" id="da4046b1-521a-43cb-8328-c219155e59e5" chipset="acmgt3" name="Ext49" />
+    <guid config_hash="23421f72af964cb1b063682544a004f9" mdapi_config_hash="a28604f4d352090650767df2ddb49130" id="fd655951-07ee-4a28-81d1-fbb62cea041e" chipset="acmgt3" name="Ext50" />
+    <guid config_hash="e62afe73b62a2074994b2765026b1400" mdapi_config_hash="fda45236ac8f7a06213930142b08e955" id="22089a93-123e-4b18-80c6-5aca789ae5a6" chipset="acmgt3" name="Ext51" />
+    <guid config_hash="ebaa8676e4b6545a0656d4374fbe75c4" mdapi_config_hash="bf07dc61b50fd7664471ac0aa6c6d9b7" id="b8d0b133-7e12-4338-adf3-41034b6a37cd" chipset="acmgt3" name="Ext52" />
+    <guid config_hash="d5a0bc06f81bbc311e518b3865b8ff99" mdapi_config_hash="d33a0ab0b321a4d047bf4ecee53c372a" id="3012f753-92cb-4f10-b5a8-437ac9bb77f1" chipset="acmgt3" name="Ext53" />
+    <guid config_hash="17ce948dd489497b0a6aa0853af5582e" mdapi_config_hash="558a1d423e58b4e30c24be90e9d270da" id="f585cd71-e1d5-4c8c-912e-399f0680c73f" chipset="acmgt3" name="Ext54" />
+    <guid config_hash="dd75dacccdc2f59c3e32630d4e4e6a48" mdapi_config_hash="a85d49cfa9a3fa85805c66a0b6364f34" id="f16c9548-0371-4a07-9522-44f9289e2756" chipset="acmgt3" name="Ext55" />
+    <guid config_hash="50575df7222355bc135d537981a8cb86" mdapi_config_hash="fecc044bffd882d37c7ca68f3034faf4" id="806924c4-d2c4-4861-b2cd-6d3ce66586cf" chipset="acmgt3" name="Ext56" />
+    <guid config_hash="cfaa3d7b6bd1750f1e655064c69c192e" mdapi_config_hash="b7752457c711b992a0ae06fc51cabc13" id="4a24b85d-8511-468b-98ca-9944600637a8" chipset="acmgt3" name="Ext57" />
+    <guid config_hash="f1dfa2d497a1e15a9574f4d50ae7f3c2" mdapi_config_hash="7f9610d83dd0262617bd18a41ecdaf19" id="3573dd0a-8981-45a3-85e5-7850871e9eca" chipset="acmgt3" name="Ext58" />
+    <guid config_hash="822b964444c0aa2729f28a9e7207cf36" mdapi_config_hash="defbf4fa931ca64eb00ae2495ba41ce5" id="4dbde56d-e0bb-4f3a-b2a7-0a87baf4462e" chipset="acmgt3" name="Ext59" />
+    <guid config_hash="cfaa77158c09bbc1c8f3e9b55a8cb12b" mdapi_config_hash="f43225dc9087929e04df9e8b6b9cc059" id="d24e53df-6340-4a08-8449-54d69fdad628" chipset="acmgt3" name="Ext60" />
+    <guid config_hash="f8c77895247830f5c79e6d9eacf2ac22" mdapi_config_hash="229aabfcd005db922c7d0288be1b8e6d" id="0e24a924-838e-4f24-bb83-1c6aa4e9a602" chipset="acmgt3" name="Ext61" />
+    <guid config_hash="f496a0585ed23c58ce5e1179b3805335" mdapi_config_hash="8d4707a5e54d8d995aa0ceb56df33cbe" id="c6f5a056-c412-4425-9877-a2309ebd61bb" chipset="acmgt3" name="Ext62" />
+    <guid config_hash="b1b13d01fa5d64700356f30e38421c70" mdapi_config_hash="f307816438af8e7d1c286af52e808091" id="e301dc02-b677-468a-9038-c741af4d91ed" chipset="acmgt3" name="Ext63" />
+    <guid config_hash="fb66f4cf1cbb95e3830f789f6205c424" mdapi_config_hash="496a4d095c269fa475d2df83b7ae6c6d" id="e595dd56-de7c-40ff-bea9-b9a15d893b11" chipset="acmgt3" name="Ext64" />
+    <guid config_hash="11fbb489b019213d0976996f7ed79a42" mdapi_config_hash="d4a632fb75cd46bbb378d316e84fcc1f" id="7c8329df-0d11-4685-9762-8530d350aa19" chipset="acmgt3" name="Ext65" />
+    <guid config_hash="d92c158ecd62bb4714d572b778db25e3" mdapi_config_hash="5a9b2f782bedf2efb54d8f61fad49f97" id="d02aa389-0a8e-42f0-b62b-7b8091f23fe7" chipset="acmgt3" name="Ext66" />
+    <guid config_hash="d7954beb6cca56e15f26b7d656496a85" mdapi_config_hash="edf2f24a796864fb98dc293e33d1997e" id="cf345893-06de-44cb-9d0b-3dde2f62947d" chipset="acmgt3" name="Ext67" />
+    <guid config_hash="2889d5934a0548b8acff5d24cdd80cb5" mdapi_config_hash="5db943c9912ec93ee8b881420e3d02b8" id="23bd55f6-39b5-48af-8cf8-b7c136e60052" chipset="acmgt3" name="Ext68" />
+    <guid config_hash="323917748f5c5fb2229f377689efb0b3" mdapi_config_hash="f68d6289d1d2c886e8b00c554e0f9da5" id="464517de-6883-4550-86c5-4e084b2a34dc" chipset="acmgt3" name="Ext69" />
+    <guid config_hash="61c3ab518933d783a93b6b653a5863da" mdapi_config_hash="23c9f4152b2a36e96112dd6c7773ed51" id="ccd967c5-9110-4c66-aabb-435114ebf67a" chipset="acmgt3" name="Ext70" />
+    <guid config_hash="15d5c29db09c1aa5f0f4fc3d37e28a0f" mdapi_config_hash="536d12ee63fb8a3f99c90b6bcebc9356" id="df75cd02-66d3-41f2-96ad-d53003d4b0b8" chipset="acmgt3" name="Ext71" />
+    <guid config_hash="a5d1cc7c918a4bb15f02d993f301c54d" mdapi_config_hash="7a23265287e746eeffd5b989648e1c49" id="adfba67d-3d40-4b20-92a8-70d11c8cffbb" chipset="acmgt3" name="Ext72" />
+    <guid config_hash="7b03decc7354fcf4b9948f21ea1814dd" mdapi_config_hash="4c7c0a9e72def2c40df31ec78d5db5d0" id="e13dd0e5-e6ba-4a86-8e32-d5971abd8571" chipset="acmgt3" name="Ext73" />
+    <guid config_hash="7f105ea5ba4dfa60c335817d9e557b5b" mdapi_config_hash="27bf86804a8a1fe1359b17da811c955e" id="e75ed2f8-19f0-44d0-ae03-ca2a8afbdbc7" chipset="acmgt3" name="Ext74" />
+    <guid config_hash="2a9c34943536001a78b445ca705cd282" mdapi_config_hash="1998d8ec2ce54e995767b6f2c29f5021" id="ddac10e6-c812-4b70-a61e-e6f9e43e47d1" chipset="acmgt3" name="Ext75" />
+    <guid config_hash="237bc1ec8c7908c0a6ac8ab969662db2" mdapi_config_hash="35f266883a1cd61afcf032947e4a8357" id="8eea86e6-a456-499a-9c4d-dec0dcfd9a8c" chipset="acmgt3" name="Ext76" />
+    <guid config_hash="73ccb749b6eadff0c48498a7ed95b21d" mdapi_config_hash="ba6b08cd6995d20c01cdc72c045a4810" id="fedc5df4-a74e-4de8-9296-96571b72092a" chipset="acmgt3" name="Ext77" />
+    <guid config_hash="2861fdca71a2e27e0c84ff51e1253626" mdapi_config_hash="bc838583640434dcd7be36e12eb046fe" id="c144b291-ed97-49e3-beab-2bbbf83353e8" chipset="acmgt3" name="Ext78" />
+    <guid config_hash="f29a26deb29077965e671d3b01846fea" mdapi_config_hash="c6f067cabf68a2d4d0a1547ba840a7cf" id="15f74cc9-7e20-46fa-bbd5-f8f363c99d8d" chipset="acmgt3" name="Ext79" />
+    <guid config_hash="cb40ec655a09e715c889d4457f568e73" mdapi_config_hash="34ee87683aed335a132e01eb0e6c1a97" id="8a2cc3e1-3df7-4f4a-ba68-73bd1fd0c371" chipset="acmgt3" name="Ext80" />
+    <guid config_hash="461d97da5eada7abb202d113e9e2e32a" mdapi_config_hash="cf56d27580ed6b8e4ad601986b03ce28" id="44a0a4a3-e4c3-4a48-bd62-47154ca53a10" chipset="acmgt3" name="Ext81" />
+    <guid config_hash="35dbde72335d00a390936c8cde8fe70c" mdapi_config_hash="b48b92bba46f01afc1ed4d7d69cc28c1" id="66cd1f83-fe8c-42ef-9b9b-6674a054e256" chipset="acmgt3" name="Ext82" />
+    <guid config_hash="12fa33d37eb49483a2370e74d3b746ee" mdapi_config_hash="a6c2b09c5a5ece81eb893c6e5577ce95" id="77059291-c7bb-4048-ab5f-ab239b75f8f3" chipset="acmgt3" name="Ext83" />
+    <guid config_hash="e0777d31ca42cd4aea51c29c70f03c0c" mdapi_config_hash="89430c680e032728fe03be3416302f24" id="73d8a4d2-dadb-4b04-b368-d21f1587206d" chipset="acmgt3" name="Ext84" />
+    <guid config_hash="ff22d59c4988a669c4ca1c194bb4fe87" mdapi_config_hash="cd4e6f442fcafe9996d661b1a0c790f1" id="463c75f3-e572-4f30-a6e0-86635e2e2bb5" chipset="acmgt3" name="Ext85" />
+    <guid config_hash="028d6c304bef8e82e2a98202a62bc65c" mdapi_config_hash="31b789c9435d232974f70d34af86040d" id="41c4ea0d-eeab-4e80-b8ef-e0bfbbf178e4" chipset="acmgt3" name="Ext86" />
+    <guid config_hash="c5ede8c124acdcd5a61be05558cd4fea" mdapi_config_hash="d523420703a2823e457e861f55a804a1" id="2d7cb182-179b-4d5e-ac1a-0fb084054a79" chipset="acmgt3" name="Ext87" />
+    <guid config_hash="b213e48574638fa5177669173e074dc2" mdapi_config_hash="1d8969b5299c013e57787599f68c17b6" id="00c41d05-9419-43a2-baa7-157ba0558803" chipset="acmgt3" name="Ext88" />
+    <guid config_hash="d3974751228d11dda0a8aef71a3ac051" mdapi_config_hash="192626eadbb309815b071197c14e57a9" id="743a4a2d-4cbc-43d2-870e-bb2ccaf85fef" chipset="acmgt3" name="Ext89" />
+    <guid config_hash="cdbfcd0f3b019182d1d7710c6542d108" mdapi_config_hash="81d2af7c8c3bac94bb333fbe25a5db1d" id="2d4814e9-bbbd-474f-8705-e84b358bb946" chipset="acmgt3" name="Ext90" />
+    <guid config_hash="7398ec8ec10b4118411eb63a73cabf1e" mdapi_config_hash="c3962b786adb24ee55256d74354cb506" id="cdac43dd-b724-412a-bba3-cbca3655f487" chipset="acmgt3" name="Ext91" />
+    <guid config_hash="c2860841bcf87bc80c791f8cd5ce4b57" mdapi_config_hash="7ec8ede24d1826a31c0b54c33cf77c96" id="e8486fa5-fdf7-4629-8f90-cf4365951bab" chipset="acmgt3" name="Ext92" />
+    <guid config_hash="1c308ce9d8223ddab13e74b53f6543bc" mdapi_config_hash="1c3c6340b8a33b74164f72afbd9c4466" id="808604f1-6872-4afa-9b81-47df20489b9f" chipset="acmgt3" name="Ext93" />
+    <guid config_hash="c534f9ce5643a5c1f82fd447f6f811a0" mdapi_config_hash="7e143f96888f3f901d3ef29b0051d6a4" id="a06f53f5-e778-48a7-9bcc-d6aaf9fd6e7b" chipset="acmgt3" name="Ext94" />
+    <guid config_hash="b5bb8c05ce7ecd9517c9353f2f343326" mdapi_config_hash="9ab1d180fb9b3475c3851aeab291d70f" id="cef87716-edfd-4d06-985f-1d04654dcdca" chipset="acmgt3" name="Ext95" />
+    <guid config_hash="06a3f9c81f72f742cef21c6ca9292ee7" mdapi_config_hash="ae1edc3e88a2adb47b430c4ad1e133d7" id="20e3d0ca-8d80-4590-997c-818512c59e5d" chipset="acmgt3" name="Ext96" />
+    <guid config_hash="b875b3de3cf6dae445c6740562c6cdc5" mdapi_config_hash="8cd456b79220208e265af96618575206" id="37fc43b8-fce9-4eba-a268-aa8242bba6d7" chipset="acmgt3" name="Ext97" />
+    <guid config_hash="8e8696e752280e5a7db6aa77df4e3abc" mdapi_config_hash="35cb89b50c514a30297311098af214d0" id="c962e059-3012-4bd3-98e6-b25c7306bb38" chipset="acmgt3" name="Ext98" />
+    <guid config_hash="cc7ac733f293d9c51600a6d4fd70f015" mdapi_config_hash="a946b36ee79b8187ae41322ae99a76b3" id="5462b931-faf7-4351-abb9-e31a93cd0c67" chipset="acmgt3" name="Ext99" />
+    <guid config_hash="893a39a2d8da6f65218ae0cf0025a0a0" mdapi_config_hash="9aaf007ec824a6af7d8be3137a3b8672" id="2f212e4b-0dab-40cf-9b07-2ca40d7f8c9c" chipset="acmgt3" name="Ext100" />
+    <guid config_hash="cb4dc52a2bf86e67f48f077c166479e7" mdapi_config_hash="fa57c59964635bef85cffbea33d7ee53" id="945c799b-3062-4a46-995a-2527d8c6a550" chipset="acmgt3" name="Ext101" />
+    <guid config_hash="527b989139ead2032ac8f2b874b9e9df" mdapi_config_hash="bfe412fac3b507676033da725eb82af8" id="c2e93414-bb8d-43b4-a992-97f998abfefb" chipset="acmgt3" name="Ext102" />
+    <guid config_hash="aee88df868b30fa7488302db1e4fd0ac" mdapi_config_hash="356090d14edf7f8849b559fa7ca92b01" id="fd4fca73-0631-42d7-89c1-0821a3e0f3c3" chipset="acmgt3" name="Ext103" />
+    <guid config_hash="837d50871fbcc0cda495ef2a8fe6d461" mdapi_config_hash="fbf11624f8554093b1412c972bd39b4a" id="4c457fa7-afa6-4ab4-8489-e6eb0d7fbfa7" chipset="acmgt3" name="Ext104" />
+    <guid config_hash="0f35f81a0bffebfdc28205c7a630cf02" mdapi_config_hash="5c68fc6928ac825013b768507801da6a" id="218b02bc-7e36-488f-894d-9d97b9501b1a" chipset="acmgt3" name="Ext105" />
+    <guid config_hash="1b019640ab420ec7c73883c7552e2f23" mdapi_config_hash="f2f907f48a1a91dde1443185e492ce35" id="673836b5-04ac-405b-b85c-cbe99892ba08" chipset="acmgt3" name="Ext106" />
+    <guid config_hash="04d0791ca98cba20bfe35fbe00043094" mdapi_config_hash="7192753c455583f9c7c95b820383ac4b" id="3fa5d581-bfb6-4afd-a13d-9af9db03938f" chipset="acmgt3" name="Ext107" />
+    <guid config_hash="2dc490d3f0697666abf2487d605e2713" mdapi_config_hash="f5852fd36efbacb47bbb58741580ef42" id="516bd2fc-3b14-4700-97e5-988aac08db2a" chipset="acmgt3" name="Ext108" />
+    <guid config_hash="468be2e442908387b26d0bca4cbc9d22" mdapi_config_hash="1448c28c78499c18b4706c7c135e61cb" id="6897c9a4-ae80-4001-915e-9201413ae86f" chipset="acmgt3" name="Ext109" />
+    <guid config_hash="532b32de466df715cfe3a610b572117e" mdapi_config_hash="6436a70677ec6cc10fe00e9374aca7e3" id="3922417a-c9a0-41fd-83ee-1de270990952" chipset="acmgt3" name="Ext110" />
+    <guid config_hash="c4e2765ad8af171bf2572e41f802740e" mdapi_config_hash="d974d4dc2d6298a4ce503c62bb4cd953" id="2121affe-e3d8-496f-89cf-e9b21861ca69" chipset="acmgt3" name="Ext111" />
+    <guid config_hash="9b0c25d90962eff92fbe4e925d92b3fc" mdapi_config_hash="b87d4051abf5c7d528ec411ab07ed9b6" id="68cc12ab-8876-4071-8e2b-ea662e59d9ee" chipset="acmgt3" name="Ext112" />
+    <guid config_hash="c72076b5ca226c52bf624c2242f77183" mdapi_config_hash="e3585f2c883e051588a5f9e0c506d8d7" id="35fe4526-b6a1-438c-8592-b98c00bd5776" chipset="acmgt3" name="Ext113" />
+    <guid config_hash="3b4e5a124ab2783815e3cc499a3481a8" mdapi_config_hash="5b8e85ff1803b31fc68af08adcf58aa9" id="1093f7ed-ac49-48d0-ae94-0985d6a59ad9" chipset="acmgt3" name="Ext114" />
+    <guid config_hash="067390742df0d5c9e6edaf14673bc0c6" mdapi_config_hash="df3bd134ee173e1014a9b9ede4efa30a" id="65011d06-3903-4ec8-9e1d-54cb8ad171de" chipset="acmgt3" name="Ext115" />
+    <guid config_hash="389d0f7661dccc02aaca31c9a2b64c12" mdapi_config_hash="430294dd56cb5e52e5fb9d092c851fcd" id="07a01ff3-9f44-4798-93f7-8defeeee8a20" chipset="acmgt3" name="Ext116" />
+    <guid config_hash="21560ec068b151453d86faa77b452bff" mdapi_config_hash="825bd7d23dc864333ee969a21d5395c8" id="aeb29684-3152-48c8-8cb7-4bc25712605f" chipset="acmgt3" name="Ext117" />
+    <guid config_hash="e8426ddd6223c83acaf9aab72d4210d4" mdapi_config_hash="5cef4e5d7572482c38ae8b4521f9329c" id="beffa74f-caca-4b88-8f7d-7f01c3bc033b" chipset="acmgt3" name="Ext118" />
+    <guid config_hash="3797b01c8b246468dac47940fca0e813" mdapi_config_hash="538957d5641209f00848a7a05534c3fc" id="415ffe47-ea31-4697-a982-ee90636ed944" chipset="acmgt3" name="Ext119" />
+    <guid config_hash="5319ca56fe51780edcc011f200a31394" mdapi_config_hash="64a8452f490eba44930860e432290a09" id="8112be50-e97f-44dc-b790-bc09eca28009" chipset="acmgt3" name="Ext120" />
+    <guid config_hash="2ff2ef82ec9f637a24629e016b109090" mdapi_config_hash="446906746c12b1dfa70d993526a7b4ca" id="e4c09690-3425-467a-a9cc-4a858c817c0f" chipset="acmgt3" name="Ext121" />
+    <guid config_hash="50cf23493a1fde6b254d9d63925e81a5" mdapi_config_hash="5dbb67f4ed432368b49a1981ac441e6e" id="61157f65-aab4-4b3d-b780-658829e378e2" chipset="acmgt3" name="Ext122" />
+    <guid config_hash="d8052b8060dacb2c9cd07fa5472e309a" mdapi_config_hash="819aa5d7134372b74b36ab118de875d0" id="4a875c0a-59be-4dc2-bdd1-948745fe142e" chipset="acmgt3" name="Ext123" />
+    <guid config_hash="44976e8312977a7625e57a9bb74e6436" mdapi_config_hash="d5e287130fd5f19c969b3315ffb05943" id="8c1d463d-eee4-4f13-b01b-4b120fbbb4ad" chipset="acmgt3" name="Ext124" />
+    <guid config_hash="97e3d52508bb2d4b5314c53f981a9f36" mdapi_config_hash="ae93d269d43b40fcdc36e0270b0cfbac" id="b6abefa1-e939-431b-8975-e1c687f437b3" chipset="acmgt3" name="Ext125" />
+    <guid config_hash="5a96bdd8cf054e3814b1987fdba7518c" mdapi_config_hash="07b2c00f67f5d412ba25d305b5373db7" id="7aa427eb-754a-4222-b199-d41bc47ad3c8" chipset="acmgt3" name="Ext126" />
+    <guid config_hash="989bb158050b2031d00c41848730e885" mdapi_config_hash="aedc8f07206dd9687045589faac7d80c" id="101df6ed-1648-43a4-a44a-21440a9df6b1" chipset="acmgt3" name="Ext127" />
+    <guid config_hash="55c21e04705d89c684f27a895bf9053c" mdapi_config_hash="d0adb8253cd414c8d695e7d7a9988f17" id="edf10822-9b87-4c5a-9d08-de730b73783c" chipset="acmgt3" name="Ext128" />
+    <guid config_hash="98d0866b811710e3765ef06a281286d2" mdapi_config_hash="5df96d0dc40acc7fbd39e99a21f07d5d" id="57adc349-a036-4227-bb0b-f35df5cdefc0" chipset="acmgt3" name="Ext129" />
+    <guid config_hash="50d12b43071da8a53ca600b8e470ce24" mdapi_config_hash="5480327ecf5e7dc93fa31f9a334d0950" id="fa55a401-6330-4838-ba1d-97d99d1b3dab" chipset="acmgt3" name="Ext130" />
+    <guid config_hash="db8249ee0796eb25ffb5bb59ff58f3ca" mdapi_config_hash="41df6640a3a2846ad58e763abc799b65" id="b3dcbad6-531c-42f5-be91-de0a33aa7a74" chipset="acmgt3" name="Ext131" />
+    <guid config_hash="5936908fa27ab4d0e7d80403ca65f7ea" mdapi_config_hash="a9adea67ef7ad9c6f56aae8464119bd3" id="f2043fc3-5aae-42c7-aa3f-eabd0cf24b60" chipset="acmgt3" name="Ext132" />
+    <guid config_hash="615c0cdc20b47d758e0369fc44e9a8a9" mdapi_config_hash="6ed73fb16ad167c4bbd67fd5688ec44e" id="fc8faaca-0410-41a8-baa5-881d1c172763" chipset="acmgt3" name="Ext133" />
+    <guid config_hash="497ff1c6c37e82cd602ed7d9d345d4ce" mdapi_config_hash="7318e1ee1a20da7c18ca26300185a448" id="c87b7319-7935-4642-b124-c14ad8fda69d" chipset="acmgt3" name="Ext134" />
+    <guid config_hash="f48b8fb54463163f28f48a2c8b634c8b" mdapi_config_hash="99fbbb0aade65871873618d478d3dc7b" id="3e0b0511-a1d8-4bfe-b1ef-48520609b5bb" chipset="acmgt3" name="Ext135" />
+    <guid config_hash="6fc0d91ac0db7fa343ed9100044bbf28" mdapi_config_hash="139f3174b33031bdd5516c13e9acacaa" id="44085566-4f70-4640-aafd-bbc83062552a" chipset="acmgt3" name="Ext136" />
+    <guid config_hash="a594d5f752af2c4d8d6caedaeb56cdad" mdapi_config_hash="057cdf51008e9d822cf16f9b4fb8787f" id="c7d9a6b4-b939-4eb2-a272-1737f6f3df45" chipset="acmgt3" name="Ext137" />
+    <guid config_hash="8fd561f89162a0a407b2f9cb290c3696" mdapi_config_hash="954e5eca072e72080a101427c8f9f2f5" id="428b3770-8cd8-469c-b83f-545610b80760" chipset="acmgt3" name="Ext138" />
+    <guid config_hash="4d8309a5c4751fe09a1dfb0154a3b105" mdapi_config_hash="3c4b4ce92481f0cd082809912eff3f4a" id="4e566d7d-9e9d-439a-9d4c-bc2fd96d7716" chipset="acmgt3" name="Ext139" />
+    <guid config_hash="c1d9e3593292b2f060820a5fa5b1dafd" mdapi_config_hash="b16bbca33517186fedd4a180a60f9225" id="9f0b112a-780a-4e61-9d1f-47f90b536d59" chipset="acmgt3" name="Ext140" />
+    <guid config_hash="39a624f2ec7866da75b10f887e0e562d" mdapi_config_hash="5f9a64cb083841237a2b03c111739050" id="854fb71e-5727-4f1d-9384-52b395a4d8a3" chipset="acmgt3" name="Ext141" />
+    <guid config_hash="476cc8f8959639471dd01e0b1054e0e2" mdapi_config_hash="3c469196bfda81195e1d5c60fc9388a1" id="fe0561e1-8d92-495c-b849-4d9707cf5682" chipset="acmgt3" name="Ext142" />
+    <guid config_hash="52196d1a225b873763c70fefc0499912" mdapi_config_hash="7089d58f55ab23c37b2f12ea4c4be58f" id="46dbfe20-297f-437b-a33f-55e3a55b3f49" chipset="acmgt3" name="Ext143" />
+    <guid config_hash="adeec388c9603fa74303cd14a404ef98" mdapi_config_hash="3669d4ea444769541a7208b8d0a34fb3" id="771f932d-6d5d-455a-ac07-95b7944cf0f3" chipset="acmgt3" name="Ext144" />
+    <guid config_hash="30ad8efd8a98060b3651f42cc4e678b7" mdapi_config_hash="e844fafedd98925ab6f2d26af3c686cc" id="8798172d-cd55-4b8b-bdd4-b0e4506f5814" chipset="acmgt3" name="Ext145" />
+    <guid config_hash="6a585f2c59da7ae5fc0402e824768f6a" mdapi_config_hash="e5024ed1e541d19db5a2a389d525d915" id="cdb10de1-e17b-4a8b-b90c-19de2c4759f9" chipset="acmgt3" name="Ext146" />
+    <guid config_hash="01a6c2753768e0dae63fe3656f93070b" mdapi_config_hash="6074523444ac5efea05563f77c995a6c" id="23705ec8-4cd3-4907-a1ad-3fe56529d8ff" chipset="acmgt3" name="Ext147" />
+    <guid config_hash="829072e493dcc8b654beeab17f6268d1" mdapi_config_hash="85d7c5e0504b383b9ba032b5bae8e964" id="dbed477b-2c30-478d-b3fa-b5615416b1af" chipset="acmgt3" name="Ext148" />
+    <guid config_hash="2c9034754f243894f83c1799abf063a9" mdapi_config_hash="24ba0140ab2b2fd98a4a5c6fab497ae9" id="8f6adfed-5fbc-42c7-80f2-30904a388408" chipset="acmgt3" name="Ext149" />
+    <guid config_hash="516929a10a46ea6556d2535d2b3c34d1" mdapi_config_hash="3c6502b57b76fb7b4c9c907e16644940" id="aed081c7-ab5e-46c5-bedf-91477e538dd6" chipset="acmgt3" name="Ext150" />
+    <guid config_hash="499d054221d60d1692e01e8593de19f7" mdapi_config_hash="c1867542bd66c6b101d4a82c46ec01a4" id="a09e1665-c5dd-4819-81fa-04a797f9de26" chipset="acmgt3" name="Ext151" />
+    <guid config_hash="cf5295b7121658b1ae5e06539caf2293" mdapi_config_hash="ca190237e0ad73090a761feca17233ae" id="c963fbd4-f12b-4c8b-b5a8-03aff5190950" chipset="acmgt3" name="Ext152" />
+    <guid config_hash="493dc38d2aeb448b39b61148e7b2b11c" mdapi_config_hash="f8dc6e9d2a3695cef1ba9b6502b94a8a" id="a7cf7aba-86a2-45dd-baa3-e877df9883f3" chipset="acmgt3" name="Ext153" />
+    <guid config_hash="cda606ec36fd9779ac58ae0a9a193b72" mdapi_config_hash="fee91e8036f1da6cfe3543fc441b3b6a" id="5207e446-2d9c-4d66-8afa-2f474c9d403a" chipset="acmgt3" name="Ext154" />
+    <guid config_hash="6b515e974375166d53b679d51d5c1010" mdapi_config_hash="730d867ecc42cad8cdabe2a59c5d4823" id="446e638a-6570-4b0a-b980-15071ca6a136" chipset="acmgt3" name="Ext155" />
+    <guid config_hash="d3d0cb9c60d6d98b16d0597407c428e4" mdapi_config_hash="53dc80819174c23eb9144d47a343e73b" id="4c6764e2-9e79-4cb7-ae35-03459c6d06e4" chipset="acmgt3" name="Ext156" />
+    <guid config_hash="620c2bd27ff929118bc5c71a21fac518" mdapi_config_hash="d3f04a032f89423fae54b5ceb088c171" id="c148c5e1-7709-4fbe-ae06-1f23721141c9" chipset="acmgt3" name="Ext157" />
+    <guid config_hash="5213d22dd9ba6d8f41107c5afd23923c" mdapi_config_hash="61e3b5523b9bf3532c449f7031524b8d" id="a733cb3b-6a08-44a2-b732-11e7ba701391" chipset="acmgt3" name="Ext158" />
+    <guid config_hash="eb1e73891f3e398be5ff246bc5cb62cd" mdapi_config_hash="27d0335f6d90e9b7d2b3eaa28d21987a" id="15186c13-8523-470b-bda5-363a5b4e001a" chipset="acmgt3" name="Ext159" />
+    <guid config_hash="67406da764acd1225f8dfb843813a099" mdapi_config_hash="f046ae83874260c87eca94e175d22e1f" id="df25a2c1-8375-4034-8ad9-f291c80a3f9c" chipset="acmgt3" name="Ext160" />
+    <guid config_hash="84c01e91da46aa1b4e563b09617f0942" mdapi_config_hash="ccd14ce941cae7b2109402b86644bfe2" id="97bb9d99-1be8-4add-a674-50795062f1a7" chipset="acmgt3" name="Ext161" />
+    <guid config_hash="9da64b8280ae7167370a66e952505a98" mdapi_config_hash="2fe475bd26bfe2083e0ca3611540d0b1" id="725d052c-1ead-4fd5-96fc-68d7db607dc7" chipset="acmgt3" name="Ext162" />
+    <guid config_hash="1a387dd7560552e3e217c1652af48506" mdapi_config_hash="4e6259f2b552ae50bdcf68fc14c50d02" id="63a891bb-dcce-41a0-8c54-cddd68cd298b" chipset="acmgt3" name="Ext163" />
+    <guid config_hash="eb01f400642e8134b4fc62c4383c01a2" mdapi_config_hash="e42b2f175d17761465ebb16b038eb09c" id="0d6008ca-0cbb-4be9-a615-e9ecec99f5d7" chipset="acmgt3" name="Ext164" />
+    <guid config_hash="f42bc084341302c9327ff15191b02f9d" mdapi_config_hash="4ecda9b355316630f23a08b50f70edca" id="7df82e88-2ee2-4fbc-8adb-d727d7642c39" chipset="acmgt3" name="Ext165" />
+    <guid config_hash="8891d254b60caea53412700e13c3f9bd" mdapi_config_hash="bafbefceb3a43fcb587eb19c60cfa68a" id="3e04e13c-9dea-45d0-ae38-0596b159f871" chipset="acmgt3" name="Ext166" />
+    <guid config_hash="1dfedfc7ad2e6f0778078099ef530f72" mdapi_config_hash="8ca8fb884bed9f3a3abd4c801820c392" id="47678de2-1d55-41be-9fce-6f7d5e771f87" chipset="acmgt3" name="Ext167" />
+    <guid config_hash="bd7c0925028b54bf6ab04d4fa8544c7e" mdapi_config_hash="0cc113f29f3182004b93618c0cf8b468" id="0dbdebc2-4202-460e-941b-d3b4a321f450" chipset="acmgt3" name="Ext168" />
+    <guid config_hash="03b89fd81cf27cec6ab4b453d565d173" mdapi_config_hash="ea23773d981422d1bb2b5e32fea40577" id="406d841d-d415-434e-94d4-5756af4a9e37" chipset="acmgt3" name="Ext169" />
+    <guid config_hash="b185f3e90032e26b92b36ef21f343df8" mdapi_config_hash="431760b11cb7644a1a0dbbf3a556e1a0" id="3e3ce4f4-1ead-4705-8243-a7786c061089" chipset="acmgt3" name="Ext170" />
+    <guid config_hash="ae91a7a9bb63974ef366d4865544bd8e" mdapi_config_hash="1425936bc3093ba326ca7dbfbe616b79" id="e9e8cc3e-2c88-4b2c-a8d2-67f00c9699a5" chipset="acmgt3" name="Ext171" />
+    <guid config_hash="5bcb737ca08c5eb57d602edb51a7f434" mdapi_config_hash="cd21a2ad7b6e26b8ccf32261f376818e" id="23e25067-e274-4172-a380-e032c4d685d6" chipset="acmgt3" name="Ext172" />
+    <guid config_hash="c3696960a77eea7be3297d656d1e365a" mdapi_config_hash="ed265a54ec0f210d25415b765d07a75c" id="21d3e3ca-2381-47d9-bf55-0aa699ebac4b" chipset="acmgt3" name="Ext173" />
+    <guid config_hash="7998bcfbfd1169b77066056e1ba05dc8" mdapi_config_hash="1e0ae0a2a030d9684fed00eacf81242e" id="0b4f4666-f7af-484e-8f18-68762db73ad7" chipset="acmgt3" name="Ext174" />
+    <guid config_hash="9581b2e6120f7f769e8f78c2922568f8" mdapi_config_hash="88e4e1da868907afa26e7cf2e08f4a93" id="27c6aca7-31ed-477e-a48a-34fefb2a02a8" chipset="acmgt3" name="Ext175" />
+    <guid config_hash="1dc5d5350d0f08bb22e85a653b3f11f2" mdapi_config_hash="d3f4da10cb747b3032dc2a8f20af68b0" id="813597c0-4e8c-408c-8410-e6e5ece2b810" chipset="acmgt3" name="Ext176" />
+    <guid config_hash="5ab746537b02797cc1de591508875535" mdapi_config_hash="9ec457c1369c71bdcf9522a29f9271ab" id="a31bccd0-3d2c-4697-8c8b-2e4c0920b30b" chipset="acmgt3" name="Ext177" />
+    <guid config_hash="41c1991cfb1f1e33844e67e1b4890c0f" mdapi_config_hash="5a4ac8aee4db1c143c2ab830dd63b706" id="d936d62e-18f5-4216-84a6-e419ae29b3c7" chipset="acmgt3" name="Ext178" />
+    <guid config_hash="08e1fcd61b15824fa99cc2381d4314cc" mdapi_config_hash="5c7975fa0f274fb2253f42b27a22ced6" id="49b08c39-b26e-42e8-99b7-f1be426862cb" chipset="acmgt3" name="Ext179" />
+    <guid config_hash="6e86fef4e21067b54d72546c3d1e068f" mdapi_config_hash="25d6831afca84563dacc7499167ecc5b" id="2c9db1da-1263-422b-9ae6-b2d59b5ec7b4" chipset="acmgt3" name="Ext180" />
+    <guid config_hash="3081321fa896ab6f5e6db6426e918f41" mdapi_config_hash="4e99483024350a85e95ff8aa226d836e" id="135f67bb-5cc5-408c-a5aa-760f9df1a3c1" chipset="acmgt3" name="Ext181" />
+    <guid config_hash="c0772184488e17b6463c0e8fe6ce0cba" mdapi_config_hash="bdadfc87420d61c441edbbb498b81fd0" id="c106cace-c1ea-4023-a288-f4b0a2487cc3" chipset="acmgt3" name="Ext182" />
+    <guid config_hash="865d91cd706e7afde4bfa603912f774a" mdapi_config_hash="c17c3e3b76bde9d6de4df94a639287c7" id="4483d3ce-c377-4a00-8f10-7159c70fecd1" chipset="acmgt3" name="Ext183" />
+    <guid config_hash="2ec204b2094911bc58f0ba860623783c" mdapi_config_hash="d420195bb4507bfaa989f8f6aa526030" id="eaef6bf8-dd2a-4a07-a948-d837765220ff" chipset="acmgt3" name="Ext184" />
+    <guid config_hash="2d2cd0a344b9baa14e794b6ce8d98264" mdapi_config_hash="a1df408e4cd0b2c9f5743fd642ab9ef8" id="00a90659-f144-4e89-b782-5dc13e3b3ca3" chipset="acmgt3" name="Ext185" />
+    <guid config_hash="3f011002dcabb271b29d9e1853454890" mdapi_config_hash="a9585473ad0de30b00e662d880878f97" id="b74242c4-91fb-4fed-a5bf-7154b99fa647" chipset="acmgt3" name="Ext186" />
+    <guid config_hash="d587300464e20dc7e92b407742f09406" mdapi_config_hash="0276a092eddf879412dff36f02eef566" id="14d62995-8763-403b-aa49-28c9f09f32c4" chipset="acmgt3" name="Ext187" />
+    <guid config_hash="a69ef3eec23946e6f3c00206ce573c1e" mdapi_config_hash="9bf6134b2cf0abb13095a6311d43fe6e" id="1f8abc30-c7f6-469e-9a6c-1b6c62208c75" chipset="acmgt3" name="Ext188" />
+    <guid config_hash="dee40a8daebabd216ab4135f76090584" mdapi_config_hash="1e925aac03cd140d1166f6bbd48aa48e" id="b8d49514-56d9-4a63-b5a2-539f97739cf3" chipset="acmgt3" name="Ext189" />
+    <guid config_hash="fdb86236ef58d8e6c5009568a516ae85" mdapi_config_hash="ab747033071444818264d1bb8a7b4f29" id="1cec7b0a-c4c7-4a32-ae0b-9b809c84a7a0" chipset="acmgt3" name="Ext190" />
+    <guid config_hash="45be7306242f0356364c2fc67ce6c5e6" mdapi_config_hash="227f6c6813928bfb19def7b061ae8fe2" id="3c9f5268-8d6f-4f54-8f76-a5364a32509d" chipset="acmgt3" name="Ext191" />
+    <guid config_hash="b98a1f8945d0ff7806d5cb53d2ba5c44" mdapi_config_hash="c194d9b9bcdff511c957460d94e80cc6" id="fe743705-afe0-4964-8976-ef793e6730c3" chipset="acmgt3" name="Ext192" />
+    <guid config_hash="97e07159767de612e785ea2d54a276d0" mdapi_config_hash="fbbcfd8eb5db89c4342ccf05a765e53b" id="3764f231-efa0-46c8-8fd1-d7524f7d287d" chipset="acmgt3" name="Ext193" />
+    <guid config_hash="92df881256cd86eb564b56d71a488bdc" mdapi_config_hash="75e5379816770728c9655616b209ee57" id="7ae1c3db-b806-43e8-a5cd-2f9fdbbbdf2e" chipset="acmgt3" name="Ext194" />
+    <guid config_hash="9c3d393a75d7c2b5db174abc2d24dcd0" mdapi_config_hash="9223511a0748adbd955493140439740b" id="addc5fb2-b8e8-4aab-b696-c033136f0207" chipset="acmgt3" name="Ext195" />
+    <guid config_hash="3307471d2c2ffe595d27b605ff4cabe3" mdapi_config_hash="df401a0078a3fd2148f8c090d909e12c" id="b57b99a2-d4df-46f1-b851-a0ac6e5f728d" chipset="acmgt3" name="Ext196" />
+    <guid config_hash="17da278f24ae0c4a790b6118c0032ad9" mdapi_config_hash="dbeddb9b475865ae06b7b2edd4b56dc9" id="bb509d13-b4b4-4d2e-844d-9f67591c66bd" chipset="acmgt3" name="Ext197" />
+    <guid config_hash="619c0b1afc9f968bdaa3b7de2928f201" mdapi_config_hash="b16aae96be9ba284db7dcdb2e78c082f" id="15e524f3-6392-401d-b3be-02b317cbd359" chipset="acmgt3" name="Ext198" />
+    <guid config_hash="39bc5c7f471266835072e98e914f04fa" mdapi_config_hash="09f0f1272c9193edaa954855d3396a29" id="f65fb347-b70a-486e-b1b5-a44da3da8b66" chipset="acmgt3" name="Ext199" />
+    <guid config_hash="f8c32b5fa6e5a689c77e5be3f65f22d8" mdapi_config_hash="772d9a1ce922b91dfd39ee99aa914b41" id="570e0476-84a4-42a2-8022-38fecca851ad" chipset="acmgt3" name="Ext200" />
+    <guid config_hash="39630acf52f39936c08357e4a0ecd2b0" mdapi_config_hash="a7231fa73b3f72b82bdc6a109c20f09c" id="4d7b3d3e-cafe-41f8-bb69-06d3a5d87305" chipset="acmgt3" name="Ext201" />
+    <guid config_hash="95fa9640fb377fcad702f75385997549" mdapi_config_hash="5927e83f8bed1f21fbb2af9179e051e6" id="356bc819-2d0a-40c6-afcf-531107e99c87" chipset="acmgt3" name="Ext202" />
+    <guid config_hash="fff932c580ef69921a10b1b6c184d913" mdapi_config_hash="28f3a0c58cef59860c0759f89a3c6284" id="6a08a183-8d09-4e98-a198-b72edf387ceb" chipset="acmgt3" name="Ext203" />
+    <guid config_hash="14aebdf77522b3b246ffd9dfdb72f0a9" mdapi_config_hash="3aaed6958fd03c64fd4e599b34c0eb97" id="7afa64c7-c65b-4671-b6fc-c99a9b7fe6d4" chipset="acmgt3" name="Ext204" />
+    <guid config_hash="a097ebef6a8472167cd9d86275ba3bd2" mdapi_config_hash="dc0926365ba14f6818bedd793cbe0a73" id="92562fac-284e-4612-b25e-378432c85ad3" chipset="acmgt3" name="Ext205" />
+    <guid config_hash="e730bcc3e5fe5f274103dd44ecfbc97b" mdapi_config_hash="68a76045958ae6aae80f078a03987529" id="eeeb0ea8-ea9a-42e5-b793-e9143baf6425" chipset="acmgt3" name="Ext206" />
+    <guid config_hash="c6af18e47eeb86dc346147b6f7d7ac19" mdapi_config_hash="6f0b765593ea7973491dd18b0371304b" id="de748c4d-cf66-43e6-921e-d9d13b47f817" chipset="acmgt3" name="Ext207" />
+    <guid config_hash="684b1380e461b4cd54ef7d03a459328a" mdapi_config_hash="24666f74f30c464d15bd7e6aea1c744e" id="50c6035f-68f0-45a8-b316-1dcda3d00e9a" chipset="acmgt3" name="Ext208" />
+    <guid config_hash="3f5e19f7ad0a466bf81bc79d97c17dc2" mdapi_config_hash="5d60b3a0f427e1f74a955303f87a91ef" id="0c6c792b-9f14-44c1-896d-3c122c75ab69" chipset="acmgt3" name="Ext209" />
+    <guid config_hash="63d57c6a5c2922120ce4379e1705eadc" mdapi_config_hash="f5e6d5917721d14ae5a9f61076b7b450" id="a931106d-e624-4d08-8fda-ecaead88f576" chipset="acmgt3" name="Ext210" />
+    <guid config_hash="a19c277de7f39cfc2632151b2a5d3459" mdapi_config_hash="a9d5dc5f806add4d7b06998c72ea17fd" id="baa9de2f-f71f-4824-95f0-5fc9d96c7fc5" chipset="acmgt3" name="Ext211" />
+    <guid config_hash="e6e863d57178fa388a991f119c8485b3" mdapi_config_hash="08b12579c535552ed6b896b9fee5cac0" id="bbbd7113-221b-4fca-aae2-5c8a259cbc48" chipset="acmgt3" name="Ext212" />
+    <guid config_hash="52ac2525c5a61ce935f90081f4ce1f98" mdapi_config_hash="0ebb2722100e4cde38fe655d77e0e34a" id="6ca2babc-de4f-469e-ab01-d291e28d63e7" chipset="acmgt3" name="Ext213" />
+    <guid config_hash="387d0dfc6c2d1c020eec6dc4f76f9739" mdapi_config_hash="743039f8947c074de44bed0c1bc36861" id="74a2399e-2681-4433-8878-4dfe42324fcc" chipset="acmgt3" name="Ext214" />
+    <guid config_hash="8dda41e9114dbb1583133bf3fa838c53" mdapi_config_hash="3d3ff0c896bea9f2778b04b1b9ab9e57" id="401e46da-ef68-4a45-a2e7-7daa5b376228" chipset="acmgt3" name="Ext215" />
+    <guid config_hash="eff36231985f11e9ee82b56d339fec65" mdapi_config_hash="137c878d93161242008e04edc4468623" id="b7ae12df-db7e-4936-b449-c52f80ee5d29" chipset="acmgt3" name="Ext216" />
+    <guid config_hash="2da6a317f6fd074eb7c1643bdfdb035c" mdapi_config_hash="8ec3057c495d09f393aacfa6fb1f2a8a" id="c69966b7-9ef1-430a-8936-0976458b2291" chipset="acmgt3" name="Ext217" />
+    <guid config_hash="e97a59ce8afea9006d95c5def07b08df" mdapi_config_hash="7f4422b28c9fd8fc0db3bc302880060f" id="01cb7b35-7ed2-43b5-b046-efde9201ca35" chipset="acmgt3" name="Ext218" />
+    <guid config_hash="8d84f02612a4822135754a0e52541bb6" mdapi_config_hash="305232e26d0bdae0a064994fccd0ae48" id="c614285f-3ef0-43b8-9b09-1b13adbe2e8f" chipset="acmgt3" name="Ext219" />
+    <guid config_hash="dd5ed67860f6b4c29b6a643cdb5cc49d" mdapi_config_hash="0097c51fd552193141d77967d681b3e2" id="4bdb50d9-dfc5-42d2-86aa-d8592e876856" chipset="acmgt3" name="Ext220" />
+    <guid config_hash="8c345125a46c84f7afdf867728089931" mdapi_config_hash="3e01acc2238814b9cef432adba88b9a1" id="50714f9c-2bb3-459c-b546-8a374589bf9e" chipset="acmgt3" name="Ext221" />
+    <guid config_hash="e87952abe6b8e7a137958d762ead7b0c" mdapi_config_hash="bcb74cc78ab8e83291d9b0ba15a7e3b3" id="fcfd6090-d189-4cd7-9c85-3a5acc193e7f" chipset="acmgt3" name="Ext222" />
+    <guid config_hash="5c0e80ee8b03d578a6716dd7aae859ec" mdapi_config_hash="3e34e19e095b5e5d0f4b10541dfc07a8" id="4ed943c0-2d87-4749-876f-811e1b39e607" chipset="acmgt3" name="Ext223" />
+    <guid config_hash="7489774dd67d5b32015076157618bd42" mdapi_config_hash="a0293881e8e73c253ad69189c8095794" id="2b3af12b-71c7-4f36-bb8f-049547bf5c2d" chipset="acmgt3" name="Ext224" />
+    <guid config_hash="340575f71a94d74651a7351eb8c72269" mdapi_config_hash="e3cb65f87555310c8dce966db9fdeb76" id="1dde6c6e-a7aa-4f8f-aaf4-3b26dd6bca69" chipset="acmgt3" name="Ext225" />
+    <guid config_hash="6ea3fde412ded8c90a5d928458d5e47f" mdapi_config_hash="0241c9964fc42a9711e25bae15951a0c" id="d9db7f79-0da3-4ab3-8b28-8dd70416656f" chipset="acmgt3" name="Ext226" />
+    <guid config_hash="362c57e0a17dcd3ea2bf21e79db7872d" mdapi_config_hash="69966b5cbd6c56ccd346daac7f41c71e" id="d98e7c96-ff33-493f-9e6e-0e5c2ff4d3b3" chipset="acmgt3" name="Ext227" />
+    <guid config_hash="b9f1eb41d9593fb886b70c0c78c81e58" mdapi_config_hash="707ec433835259a033b50314f1d8fb40" id="ee084440-5ff3-4348-98aa-69f9bc50bc13" chipset="acmgt3" name="Ext228" />
+    <guid config_hash="c66bc3dc6721fa6ee5f96d7401dfa720" mdapi_config_hash="ef50e9c8bfa8547b2f71bb3d5c2bf569" id="8591ba5f-8306-4275-92a8-d9059ad66ed0" chipset="acmgt3" name="Ext229" />
+    <guid config_hash="2897f2c2df7765375e6b40ebaa27e38a" mdapi_config_hash="a7375c84df7e58e6fef15844a9c3b90a" id="00e97ab6-80e8-4fb7-8735-d2c9fd2e57e0" chipset="acmgt3" name="Ext230" />
+    <guid config_hash="a205a88b9dec83466641180564e936ef" mdapi_config_hash="f57ade4f9120a926fc24e9fa8b5a4464" id="8843165e-fc6d-4b1a-8356-201b7b0bdb25" chipset="acmgt3" name="Ext231" />
+    <guid config_hash="d083748862d298836726d5cc1b202f9b" mdapi_config_hash="1ef6a2d0a6857a04f17ee8daeb5f10ff" id="964b5b29-6acf-4be2-b50b-030c7a8c3fc8" chipset="acmgt3" name="Ext232" />
+    <guid config_hash="184449a3a33f55b28f495eb2d6001064" mdapi_config_hash="39f41d856d93bc17ce52439791c05ab6" id="796a2acb-6ddb-4567-9c5e-ad1b18f74271" chipset="acmgt3" name="Ext233" />
+    <guid config_hash="13e1fee09d042cfb2f7d417df987bd63" mdapi_config_hash="1c8b207ae119986d0e82a47b1caf54fe" id="8c5e4033-e50a-4f55-a17f-2fca9ac26074" chipset="acmgt3" name="Ext234" />
+    <guid config_hash="5a440a25d708b0f2adf822da1ddee94c" mdapi_config_hash="6d9a4249993e97c34aceea5db4015a18" id="6717aa54-589d-4ccc-b40a-a2fb3dd9e11a" chipset="acmgt3" name="Ext235" />
+    <guid config_hash="113d9e34f91e1fb8b6e931772ec8ea03" mdapi_config_hash="4a0344c013d4d08769c832f2fa2e5bda" id="4e1d6474-b268-4c2e-9437-208ee88b8a46" chipset="acmgt3" name="Ext236" />
+    <guid config_hash="064732a8ec77c2a43cb58fac83dcfaaa" mdapi_config_hash="797f0e602896ca8ed0ed18654d0aa37c" id="88f46503-19d1-42d1-be21-a3655e1b0136" chipset="acmgt3" name="Ext237" />
+    <guid config_hash="8787d4b9962580cebaa5d1240b36689e" mdapi_config_hash="1f61cdb0b12118432346ae7324a29e73" id="5da6f145-39c5-44cc-8329-0998439ee9c5" chipset="acmgt3" name="Ext238" />
+    <guid config_hash="2d3bb620c6644457f0d6f544deacd164" mdapi_config_hash="d71cc5522a4e60c456ba4d9aec5e72cd" id="4543c6ec-412e-4dee-b121-a3b02275a132" chipset="acmgt3" name="Ext239" />
+    <guid config_hash="37419372080f581ea9aebf5ac6748a97" mdapi_config_hash="b2366db2941a52293ce1928492cd29b2" id="e6b031df-b3fe-4fd4-97c3-7c26f28dac6f" chipset="acmgt3" name="Ext240" />
+    <guid config_hash="dfe270d5f0f2e3a0fe2b52897443c825" mdapi_config_hash="a2ed761a31abf014a413bc0194bec396" id="4ab6ae4f-59e0-4dee-b907-026737066065" chipset="acmgt3" name="Ext241" />
+    <guid config_hash="25dc695c02cd7e0407a402adcf50800c" mdapi_config_hash="bc705e280eb2147cfdf3ad5a323d4b64" id="db802a4a-11cd-43aa-8baa-3b951ed19672" chipset="acmgt3" name="Ext242" />
+    <guid config_hash="f208442e0015c384589e03c1ae7738e6" mdapi_config_hash="3400a6dfbc0c0cbe1f9addf6fc5d37d9" id="e7f929f5-f382-4bb2-b32b-e808e816a751" chipset="acmgt3" name="Ext243" />
+    <guid config_hash="36dc63bbbb95bbbbade838f80db36b65" mdapi_config_hash="a09b653dc8693111f47b229195eeaea3" id="81a25cda-94c8-4b9a-b9e5-38994ed22ab0" chipset="acmgt3" name="Ext244" />
+    <guid config_hash="b0533196c7592b3f37c846e68568a850" mdapi_config_hash="ddad036f084b4e90d50b702b76cb567b" id="6a234e4e-a4a9-483c-b0b1-f6be43dfb64c" chipset="acmgt3" name="Ext245" />
+    <guid config_hash="e432477aed530b176d8c7c9d6ef61a31" mdapi_config_hash="d7e846b5e7cac168ae9a67909e8a419a" id="94757ea4-0b0b-401f-93a2-b119ed4f5204" chipset="acmgt3" name="Ext246" />
+    <guid config_hash="e523f2862e60ce6ad9d4b7ff556ea07e" mdapi_config_hash="7a1498e57e356af309622c918d9f48e5" id="b90ea8da-5965-4457-97aa-49a688fb0d39" chipset="acmgt3" name="Ext247" />
+    <guid config_hash="87b4488cf03862b155d4581a57b5b661" mdapi_config_hash="bbcfa47dcf4e3bb88b4803a0521881f5" id="74996160-a911-4eb8-9db3-e83969d92a35" chipset="acmgt3" name="Ext248" />
+    <guid config_hash="7540295df31b0e3d936a2eec247b90fe" mdapi_config_hash="f5906f9fd52c56697b2defba8ee9eaf8" id="f287382f-3de7-43af-a4c5-20ec8d84b7b1" chipset="acmgt3" name="Ext249" />
+    <guid config_hash="8cc0416ae9ee83248a079e1707452331" mdapi_config_hash="d6075697296394168e78bc435a85b212" id="a92c55c1-352f-44fc-a86c-3f0b0e525d97" chipset="acmgt3" name="Ext250" />
+    <guid config_hash="d90b736ffc6e3950e6f83647b8d3b7e1" mdapi_config_hash="fc4c00abd796d51e4fca444a4e937c04" id="dd5abc73-e90e-4da0-82ed-53c3a598ccf1" chipset="acmgt3" name="Ext251" />
+    <guid config_hash="a8687e7a9ee5087ca588b6c5a3ea3ba7" mdapi_config_hash="9ade8d986acb377cadee7966b37df077" id="f4e6e4c6-94f3-4684-813c-b99cb703a638" chipset="acmgt3" name="Ext252" />
+    <guid config_hash="abb6f6a6aa35a23b3af00996e9e03bdf" mdapi_config_hash="43a056bfb7290c510e6041df4f94bb34" id="9eb32240-9aee-4864-8229-20ddbb84d6f2" chipset="acmgt3" name="Ext253" />
+    <guid config_hash="414968453a3155ba42dce3a8c0de819e" mdapi_config_hash="3c5b635bc3b78d79ebccc9551f7e6e7f" id="6e1f70bd-36b6-432d-8576-5461e5ce55eb" chipset="acmgt3" name="Ext254" />
+    <guid config_hash="4ae10aeb3d1ce36486191e6bb0cb9387" mdapi_config_hash="2c23fbba7e75083142e3f1df27cad429" id="0104ce81-df1b-4f1c-acc4-14cb239f06c1" chipset="acmgt3" name="Ext255" />
+    <guid config_hash="42a68c6c0eb238a42be79ae1a28ceb9e" mdapi_config_hash="224d41e6ffea47b1ef9ed42bec7984a8" id="4baeb5dd-8732-4330-8196-dd8b921d710f" chipset="acmgt3" name="Ext256" />
+    <guid config_hash="694655c88c0dafba3aba9a304eda07d3" mdapi_config_hash="f3c472dc2d863e7fdb8e73723d4d5c1a" id="9e4277a2-341a-4e2b-820d-f53beec1dd6b" chipset="acmgt3" name="Ext257" />
+    <guid config_hash="796fa48b6a2c1b887f9f1cb8ea749c46" mdapi_config_hash="1613caab4b2d9a822b5102329b642727" id="e318efaa-f015-4ee9-ae9d-485a352c06f6" chipset="acmgt3" name="Ext258" />
+    <guid config_hash="90fb1cde901ba15f3a439f5c9a9d4dfb" mdapi_config_hash="aca70d452db02f17e2a1ad11844b7196" id="cf9912aa-c74c-40f0-9120-07ef68972190" chipset="acmgt3" name="Ext259" />
+    <guid config_hash="a8f485a34bab9ef593232b85f3bc4de7" mdapi_config_hash="9425348af33f8d2367686fc807860a92" id="b4b0f306-7714-4fd7-b32f-5bf89d0ea022" chipset="acmgt3" name="Ext260" />
+    <guid config_hash="cf9102ca04924c635339161b97be4340" mdapi_config_hash="7f2fe865115865dfa827c3af8ff17905" id="0a9b31d6-473b-46c9-8ad1-d9ae2e47cc8c" chipset="acmgt3" name="Ext261" />
+    <guid config_hash="85a6776392e72ca25f8fd1bd0861d281" mdapi_config_hash="cbf9f6b4aedfa472e364f718bed289bc" id="17f09c56-52ed-4d95-a2c4-8d364f7f2055" chipset="acmgt3" name="Ext262" />
+    <guid config_hash="8b5818606bd02d2805733dc8b24f0d8c" mdapi_config_hash="96a923693a6042bac2a5327f04dbeb1b" id="755de6ba-8321-4b8e-8b29-30928734d252" chipset="acmgt3" name="Ext263" />
+    <guid config_hash="e4ef7605490411fbca991bb5f375487a" mdapi_config_hash="5c924957c7836d2e78dafe08ada3d8a9" id="b622f02d-6710-4412-94f9-4e4abba0bbaa" chipset="acmgt3" name="Ext264" />
+    <guid config_hash="eecd47c787b83ad3849750dc680b0194" mdapi_config_hash="fe85073a8033a3442699793e391548a5" id="e448a51b-7b45-4454-b682-b3488a24b167" chipset="acmgt3" name="Ext265" />
+    <guid config_hash="dadf826e97050d798b3f70634a380574" mdapi_config_hash="c213d1799df7706a3b089cba5681b1c0" id="df480a9e-5d23-4477-b5cf-e89d7590ff9c" chipset="acmgt3" name="Ext266" />
+    <guid config_hash="8916353d70774c780adb3cc4c1315830" mdapi_config_hash="cddaeef4a982c080d6ab2b56521d72b8" id="d2569d38-f95c-4996-9f95-aa61ba11015a" chipset="acmgt3" name="Ext267" />
+    <guid config_hash="23059f9cabeaf786f51a8a07b67f812f" mdapi_config_hash="c18bd07a0bebf5665d4294b6fb994365" id="95a739c5-5a9c-47df-836f-3b323b9d8df8" chipset="acmgt3" name="Ext268" />
+    <guid config_hash="f94e8aacce7ef9681812dc02eec4f108" mdapi_config_hash="3fe79f8a731a89690f1a99e3bd35596b" id="4ee78f20-69b6-4bcd-9d6f-06ebee2e2f54" chipset="acmgt3" name="Ext269" />
+    <guid config_hash="a7918e90aec85f77dbdbc388af7f7e68" mdapi_config_hash="5a0d7e3c9bffa54860fbb422d3011276" id="e9217a53-0407-4df2-a014-8df62ecd2dcc" chipset="acmgt3" name="Ext270" />
+    <guid config_hash="764c670e15bb32fa44e2abac3e3dc3f0" mdapi_config_hash="60f529bcd8e3a39f5d459a5539b06110" id="7d6d9a79-6ddf-4970-9fcd-ece8cfc4f26b" chipset="acmgt3" name="Ext271" />
+    <guid config_hash="75bd4e4e504ea8b1f5d9915f3389c02b" mdapi_config_hash="08ffa5b05b0ef5b40711e22e4a73268c" id="0ecd2c83-ea1b-4801-b6c0-c571e301477b" chipset="acmgt3" name="Ext272" />
+    <guid config_hash="ca0df34605ae727a63121e1fcb922022" mdapi_config_hash="4724776f07164a4ca0fc3f242087f24e" id="377395f6-3e5d-45ab-a2ff-980f1f795590" chipset="acmgt3" name="Ext273" />
+    <guid config_hash="be7d89f1a1ef463d1d375f3a68596ff0" mdapi_config_hash="f634f94c99a723b4df77dfd0ec5d845b" id="ebf4b987-f2e1-45c5-83c1-145baa637929" chipset="acmgt3" name="Ext274" />
+    <guid config_hash="9c7e2a301f01e29bdb9bb193c7220ed8" mdapi_config_hash="64da8273885ea52d76e6e4cff56c797f" id="e0559ea9-aae3-4ede-8d15-30dcc8c4a202" chipset="acmgt3" name="Ext275" />
+    <guid config_hash="b33f851ec272ba40beadc5d845b84811" mdapi_config_hash="65b464eedd4f4d1aa196bc0b52f95704" id="180b2a02-9d8c-4bf9-be0b-31cf265c21da" chipset="acmgt3" name="Ext276" />
+    <guid config_hash="76addf3cc1fef314a231d1741418605c" mdapi_config_hash="27aac41a401113a72d590ba93b62b0d2" id="4e381e22-6068-4a63-9fea-270aee7731af" chipset="acmgt3" name="Ext277" />
+    <guid config_hash="d4d8a85b7461ac36d6f23dd22cf03fbb" mdapi_config_hash="5eb611ffb43fb240d478a2bfcbc71e88" id="3e47b601-d0e5-4eac-a32a-d4419b455ef6" chipset="acmgt3" name="Ext278" />
+    <guid config_hash="c63e4244b5834ef4e097d36171d8f5db" mdapi_config_hash="df7a564bab59191a78569d8e0463ea94" id="45b87d00-391e-46a0-8750-61da7a17db1c" chipset="acmgt3" name="Ext279" />
+    <guid config_hash="0a4259f9ec94c06e0eb34e00d5f32e67" mdapi_config_hash="7e36d2188e6cb6a9243a468034bf6ea6" id="85c3a4dc-ebc9-45e6-b572-fab58fa5bdd2" chipset="acmgt3" name="Ext280" />
+    <guid config_hash="d8c1306b6111726b2768d250e739d760" mdapi_config_hash="1edbc8c854572341a9d6f8721d562d6e" id="d7725644-0058-46cd-935d-55e1bf8d0e8b" chipset="acmgt3" name="Ext281" />
+    <guid config_hash="9ae78fe7fa8bd7f1aa924ab0f3b15390" mdapi_config_hash="51d5b984261c391b86e079a0eee2ef2d" id="234accb5-7742-4ff5-b3d6-598cc74a4f95" chipset="acmgt3" name="Ext282" />
+    <guid config_hash="f95df0ed24808c39cac1c0149d3affad" mdapi_config_hash="42ab483289ded612d374e1ce7b3213e6" id="75c93a0c-e686-4e48-baca-a557d2284a06" chipset="acmgt3" name="Ext283" />
+    <guid config_hash="3dcdcb7d63947fd101b7213ef37ba568" mdapi_config_hash="5add4b765698e5dff27b03fe9e96daf0" id="6059f40a-ba6c-4032-8eb0-a3a60760d22e" chipset="acmgt3" name="Ext284" />
+    <guid config_hash="15ff1e52a3fba99006a6e42d152df55d" mdapi_config_hash="fed21e54c402f72a50ed87fd9a81fd36" id="030a5d74-26a8-40ea-b40e-be5f1e0cd212" chipset="acmgt3" name="Ext285" />
+    <guid config_hash="97c19be8c7da3a91940dc55dbf25a913" mdapi_config_hash="49773c010f13ee978a3fe606730330a1" id="92ecf953-51a1-47dd-b5f4-f942e64b9c7c" chipset="acmgt3" name="Ext286" />
+    <guid config_hash="ac146e042c048573f13a0fb7495cfb30" mdapi_config_hash="066eb404136ba006a8cf2647d9bd7e5a" id="1f9ac2d2-5aee-4e58-acb1-9d609849ac7a" chipset="acmgt3" name="Ext288" />
+    <guid config_hash="75392c0be87a58ac5f01cea032899539" mdapi_config_hash="ae9299b4252336b05f37210b12c545a9" id="aa8781c1-b216-4aec-918a-142fe18607ac" chipset="acmgt3" name="Ext289" />
+    <guid config_hash="560ecdde73f5f5fe5a33d68c2481eed8" mdapi_config_hash="b29e6a422f3cb1e8de77774db90c0c64" id="16a4c831-37d6-4fff-a77f-0e4c5b325510" chipset="acmgt3" name="Ext290" />
+    <guid config_hash="ae4b50307c7a7dbbf0992b84bbceeabe" mdapi_config_hash="68789545e9fed53fd89bdd3560b75f05" id="be7c8afd-0a80-4cd9-8266-faf796deb5d8" chipset="acmgt3" name="Ext291" />
+    <guid config_hash="ca946bf8973a75756b5e23b539e39d00" mdapi_config_hash="9670f14cf156319e9652865f5854fe2b" id="d87b1ecd-4ef5-4632-9f83-19ca481f2ece" chipset="acmgt3" name="Ext292" />
+    <guid config_hash="918136d928e96b15ae88c73c8c6b188a" mdapi_config_hash="69b6a653bda351c6e38cc2fb2bbb49e6" id="918f11cd-e0a7-4503-87b3-0f16c4464d77" chipset="acmgt3" name="Ext293" />
+    <guid config_hash="d301ec0dacea754b68f8e301988c8cef" mdapi_config_hash="ede1b277ef4d52bfa2820f189bd03a89" id="1b1d6474-3018-4d9a-938e-11d81cc70491" chipset="acmgt3" name="Ext294" />
+    <guid config_hash="4f6dc1933f880b1c383f20c913e51de6" mdapi_config_hash="a14a809361167c93486901777968d49a" id="50114a1e-a637-4027-9ee5-42d12d569896" chipset="acmgt3" name="Ext295" />
+    <guid config_hash="68da0a3cd4c5cecc817d11e3897825f5" mdapi_config_hash="9252f92c0667400545b29da740e466d5" id="d67549fb-4308-437b-8c48-662a3782b3fa" chipset="acmgt3" name="Ext296" />
+    <guid config_hash="4fb85aea1046d132563e9f3195c0e15d" mdapi_config_hash="d4000132f6a7ef12f9e6817d4559c0b2" id="1b1a9373-ac71-43d2-a428-b02826a6d5bb" chipset="acmgt3" name="Ext297" />
+    <guid config_hash="df3e73ce379941f02c0bfcbfa3fc6cfa" mdapi_config_hash="1f0981ee915b585d12ac1f5f5074efc8" id="87e14c77-8814-4632-941c-567a5aed2b97" chipset="acmgt3" name="Ext298" />
+    <guid config_hash="cd6342ace4ca0193db1e6124fc4a04d4" mdapi_config_hash="b5a700dec8b953139435d57bb2867bd6" id="13ce3184-9cd0-4c5b-bedd-a6fa38d76456" chipset="acmgt3" name="Ext299" />
+    <guid config_hash="c8ad49b51452eb1bdbebabf56d681796" mdapi_config_hash="64264fa7c39bf83b666331347220e8a6" id="015cec04-576e-496b-b4d8-53409c442065" chipset="acmgt3" name="Ext300" />
+    <guid config_hash="0a17009445b082501b8e9d7280bbe777" mdapi_config_hash="a8310541e43002bb770eeec21a4173ff" id="8b9a7b9c-a688-43ea-9c4b-fa6ba53852ab" chipset="acmgt3" name="Ext301" />
+    <guid config_hash="2247f50d756d084f4b2942e7cbda09fb" mdapi_config_hash="eadd3d40acb29c3a05c63b894fa6d560" id="7b0d1439-3ea4-48b4-97a7-934789bb750b" chipset="acmgt3" name="Ext302" />
+    <guid config_hash="efb9860feba1d41d72008e9e75a332cd" mdapi_config_hash="e665ed878d8847db341467c000f51c87" id="ae51b0bc-1de2-472c-915c-ac570a5d25ca" chipset="acmgt3" name="Ext303" />
+    <guid config_hash="c8527a8a3889bf1d8e84b9262ff32b9f" mdapi_config_hash="31047fd38fcc2dcefd5de0ee1224fed4" id="3e837b13-a03e-4f77-8bc0-bfdaed855b49" chipset="acmgt3" name="Ext304" />
+    <guid config_hash="f71d09d0f4e74923841c27c55b93f962" mdapi_config_hash="20ea6f72696ee97dce433ea9fcae25d4" id="793a787c-6646-4e56-8bfa-acca313d86f5" chipset="acmgt3" name="Ext305" />
+    <guid config_hash="ce07e3cc1d61bc229d0093a4339d68b7" mdapi_config_hash="4028a24bc2332d74bc5155fe19c17797" id="e7767971-3cb4-4a31-8467-0d83cbe7b292" chipset="acmgt3" name="Ext306" />
+    <guid config_hash="f2559e3b7af97353baf264438a32e2e9" mdapi_config_hash="a5cb0ce213db48981c96258e3e08c624" id="9375cccf-e4b4-44cc-b6af-ffc2f51c3bb1" chipset="acmgt3" name="Ext307" />
+    <guid config_hash="fa492cd5b9b87cd80c9673db98590625" mdapi_config_hash="5c5b1af6c5771d957d1d6fabb07e345f" id="0218e76e-7c34-4c67-a967-205a817f2435" chipset="acmgt3" name="Ext308" />
+    <guid config_hash="2183325297238bd499ad83604f83cb66" mdapi_config_hash="640e17a3d36aa6d5f53006cdd45b089e" id="7a2ef8ea-0510-4066-b7de-0af99bf5b0b7" chipset="acmgt3" name="Ext309" />
+    <guid config_hash="ca5d586036fa908a16975d37bfe2ae03" mdapi_config_hash="4c2e9c6ed7e08417afb921fe11f309cd" id="7f6f2cd5-235a-4479-9724-98bc76338071" chipset="acmgt3" name="Ext310" />
+    <guid config_hash="05682cb51a9e2391bcc6fc2dcde1e2e0" mdapi_config_hash="4e9d3c46331978a5bbfff6b3c28b0853" id="cd5aacba-f72a-44f7-8794-ce2bcf92ec1f" chipset="acmgt3" name="Ext311" />
+    <guid config_hash="20b3f28877e946fcee3afc13cd8aa2ce" mdapi_config_hash="c6b6ddd34b1d4db4dc51ed7f4b844524" id="a2f9ee62-175a-4c99-ad05-daa5dd83c268" chipset="acmgt3" name="Ext312" />
+    <guid config_hash="6e8f71787318c2128233df893b344295" mdapi_config_hash="32a9f5ac995f407b416c0cd59efc070b" id="8cc89495-676d-46a3-aa5a-d5e50bd8b547" chipset="acmgt3" name="Ext313" />
+    <guid config_hash="42e08d562327860be753be8f57ca0388" mdapi_config_hash="834782ab86ddab44c45b07a10a5a8020" id="6a9b6d4b-0ad5-410b-ab23-a755c2069502" chipset="acmgt3" name="Ext314" />
+    <guid config_hash="88d24d1d467b698a9a3ae5cfd0fa2c53" mdapi_config_hash="09be54c8cd4afbbd8e0d17e7610150e7" id="ff1b4077-1346-45a5-acae-d08e7651e126" chipset="acmgt3" name="Ext315" />
+    <guid config_hash="47fce45a807977a67d7a2a572ea910b3" mdapi_config_hash="61c404882430c3a7029b121a86e01e16" id="d4367f9e-ceaa-4751-91de-c80918a32d0e" chipset="acmgt3" name="Ext316" />
+    <guid config_hash="9a2da0cc1c9bed9052711874690c01b7" mdapi_config_hash="819a6b4e5dd713ca02c15080d411e2c4" id="ea24cfe9-dca1-4520-b55a-78ac4b9c94b5" chipset="acmgt3" name="Ext317" />
+    <guid config_hash="72aefa9bc5899adc3e3bdc4d533bdbb0" mdapi_config_hash="7dad18fc32eaaef8c4eb122e1a0ee6da" id="570970cb-b1ae-499e-9113-73b1489bebe7" chipset="acmgt3" name="Ext318" />
+    <guid config_hash="3f7e895f9be4b4d567ff659bcf3ff99d" mdapi_config_hash="3231a0958695a551c97faa28faecd261" id="a2b926df-458d-4580-99d9-731b9e9024b1" chipset="acmgt3" name="Ext319" />
+    <guid config_hash="9c2aac2910e1236583f90ba50073f5ff" mdapi_config_hash="13049238c83707eb756d1a9d562c63ad" id="b357c635-b799-46d2-8714-4f4fddffe2e9" chipset="acmgt3" name="Ext320" />
+    <guid config_hash="71af1d27006b6935d4345876ec340710" mdapi_config_hash="224de537e48273f528b234d6705b1ab1" id="a8c3e950-b343-4f27-a434-a49ba7c87254" chipset="acmgt3" name="Ext321" />
+    <guid config_hash="3f45787ac9cb60d6b89a35e76781de34" mdapi_config_hash="59ea153224cec61cab697f70405bc1a4" id="be052c4e-a835-42da-9b67-3917052ada60" chipset="acmgt3" name="Ext322" />
+    <guid config_hash="2ec807e7385235be8bc7aaf97071110d" mdapi_config_hash="a7f760d048370e4177ab3b85b8f05399" id="d911722e-b0cd-4b54-92e5-d98dda5b6c90" chipset="acmgt3" name="Ext323" />
+    <guid config_hash="7fb4b539879c10ea140484fa502e0e30" mdapi_config_hash="047e20718fdb091079ed6991e46602d2" id="0bc72c8f-65c2-4ab7-acd8-c65a40a707ac" chipset="acmgt3" name="Ext324" />
+    <guid config_hash="a47e5518e8ebc243615809184193119a" mdapi_config_hash="3ff3c4a099f0dcf1b30b5c301f433993" id="86524707-6f59-4929-ac15-a293133850b0" chipset="acmgt3" name="Ext325" />
+    <guid config_hash="1c5de72e62f380fd175c252a2605a268" mdapi_config_hash="f9f62828899d67fe0308a5f61b7d277d" id="199027ff-3c22-42d5-a543-a9467be1422c" chipset="acmgt3" name="Ext326" />
+    <guid config_hash="d5b000564916c4faf26bffde52de86fa" mdapi_config_hash="014598baec63ca10f53e6e34e6f86814" id="38473fe1-ab75-4be0-9cef-c9d84a803787" chipset="acmgt3" name="Ext327" />
+    <guid config_hash="640a1036be2bb6b85d0a27145d543315" mdapi_config_hash="c0826eb5bfc281387de0ea78cc78a220" id="4500f1fd-d762-4a31-88fd-17ae40ee0727" chipset="acmgt3" name="Ext328" />
+    <guid config_hash="e1d6d8f38dbe7a4953276bb7ed2fddb0" mdapi_config_hash="218df27250f76a9eaebc3077bc53a09a" id="2458839a-476e-4804-ba6b-a3d06323b800" chipset="acmgt3" name="Ext329" />
+    <guid config_hash="a0efe37a4184eb6f2a7094bf4065e671" mdapi_config_hash="9312c6a9059ee6d94ae0d22c72050716" id="9aa833d4-ba51-487b-a586-a0df6d462909" chipset="acmgt3" name="Ext330" />
+    <guid config_hash="1d552c8e6492b6e5e1655d35cd4f808b" mdapi_config_hash="cf1d0b86975740393af123f4dc27fa02" id="1ca59138-4493-4e1e-bf2d-452da6a50597" chipset="acmgt3" name="Ext331" />
+    <guid config_hash="bbcc1cff730db168e318e95c4fc76ed9" mdapi_config_hash="3138ce841c68b9db6f4b227e377fc56e" id="88514dd5-9e66-457e-9493-8ffc78893322" chipset="acmgt3" name="Ext332" />
+    <guid config_hash="988f959c9ec7c0d11e22d9d7543217bb" mdapi_config_hash="9228824a1230639ba6ef23e55602cadb" id="38fcb336-fc63-4e5e-aa3e-a40f7feb693a" chipset="acmgt3" name="Ext333" />
+    <guid config_hash="59a4814ab1ad90e274471fc118556fb3" mdapi_config_hash="716ab3de2e9c18233f7d7b54d9e5e1a8" id="b8a9ea64-362d-473b-b9d7-a2175179a0a0" chipset="acmgt3" name="Ext334" />
+    <guid config_hash="c8fa61fb18b5d6d26c6c172614f8b2e0" mdapi_config_hash="90b7e02ebef38ac55edfe8a4f1e75c76" id="6771c5d0-cc06-41ec-b5c9-7d4a8d657bd2" chipset="acmgt3" name="Ext335" />
+    <guid config_hash="52ffb51d118fc9dfc0c2b01327af8ae4" mdapi_config_hash="611d3926d9bd8d6879c642f56564a517" id="c99de5cb-2a05-4d95-ae63-7465a9fde881" chipset="acmgt3" name="Ext342" />
+    <guid config_hash="35c1a65373ae9b92b695f7b36286b0df" mdapi_config_hash="a6550e56a41e0762ee1ad9159692c6d6" id="c83a1e77-4edb-4157-86d2-8ae073b76783" chipset="acmgt3" name="Ext343" />
+    <guid config_hash="25dd24562db58876dceca9245165669b" mdapi_config_hash="84884c0ce905aa2b4a060b405e26a33b" id="7bdaf544-993e-4a5e-8040-9391d9be562d" chipset="acmgt3" name="Ext344" />
+    <guid config_hash="2b03d9691f0ed758a190605a5711be4a" mdapi_config_hash="52ab913701d053fd96620bf44642dabf" id="7e311c03-26ed-437c-9f60-28d92df03534" chipset="acmgt3" name="Ext345" />
+    <guid config_hash="a5a22e0cc555b672b169fc0675467e61" mdapi_config_hash="08cd856be325faff77d20d4d64cfc0fc" id="e7738d4d-64e4-4a54-81a3-86702c6fdb47" chipset="acmgt3" name="Ext346" />
+    <guid config_hash="30fe5c3c9d967ea1a98aa5d381ee87f1" mdapi_config_hash="fffe3915b6d3da13306cf99de3a6676e" id="bc487d2d-a32a-48d7-bce8-96b19d7853ec" chipset="acmgt3" name="Ext347" />
+    <guid config_hash="edcfc03f9a5444b661c2477f0149388b" mdapi_config_hash="bb1ad569d100cc8353967cb27894e83e" id="434a0292-cb9f-46aa-acec-fb56af5aacec" chipset="acmgt3" name="Ext348" />
+    <guid config_hash="931fa7d62526828d368f6a3b8370258d" mdapi_config_hash="974447f20adf55d781d897ce3939f289" id="cf3716ea-68c0-470b-b2ed-07dcad433550" chipset="acmgt3" name="Ext349" />
+    <guid config_hash="b26acf3c22d765b6e82f9fc4866fc108" mdapi_config_hash="06f4e7d4dda81474e1c7c7aba455a788" id="0233f2f1-7ba2-4419-a8e8-90028db78f6b" chipset="acmgt3" name="Ext350" />
+    <guid config_hash="7669bc3762269a3c55885cdaf0f3df75" mdapi_config_hash="c22b1ae73b6c44d7c97068deeec727d2" id="86fb99a2-94a0-4830-bd6e-f22db96c9f9f" chipset="acmgt3" name="Ext351" />
+    <guid config_hash="440719e8f887ca5d1c0633167d4f42b4" mdapi_config_hash="be1da8c1d9ebc2333da4b26d465b2343" id="f189613f-66ee-466c-8ede-7fe9319d4aa0" chipset="acmgt3" name="Ext352" />
+    <guid config_hash="352cf837e4bb0018cb7829a0498c9e9a" mdapi_config_hash="f74f1e9d1764747a54ad862e4e961447" id="0f278998-80a9-4e06-8f01-3d59e0bbfb4b" chipset="acmgt3" name="Ext353" />
+    <guid config_hash="c175871aeb6b1e50663b782ca79bd5a1" mdapi_config_hash="56c1107a70be11bff094c71c0cdd5440" id="9a3c0284-c012-4094-80ed-bfb46ab762a6" chipset="acmgt3" name="Ext354" />
+    <guid config_hash="784f11ce0b305276bc93b52b37c11b89" mdapi_config_hash="fab117db94e4e811a511e4d004f91614" id="21ebf724-d9a5-473d-a173-04923a9014fa" chipset="acmgt3" name="Ext355" />
+    <guid config_hash="4a49074c95cb3692ede631c186e891aa" mdapi_config_hash="bf7ffd2a8789cb203296bdf1caae8743" id="44f5ade0-0120-4af2-9748-1bf550c3550e" chipset="acmgt3" name="Ext356" />
+    <guid config_hash="db49a37b258468f59b62334671c84533" mdapi_config_hash="afedd995c5cb9d9a8a641a4f3cfc2c76" id="feda9279-042d-4ad4-9d09-b08448fb71e2" chipset="acmgt3" name="Ext357" />
+    <guid config_hash="cf1861b1a218097dd180b9fe6d94af12" mdapi_config_hash="66ac67e0c830f90ec11150fcba0d6208" id="287a8880-aa97-4a61-bd9c-c4ea26cac685" chipset="acmgt3" name="Ext358" />
+    <guid config_hash="0b2c652e7eadca41da6f3a8ff8f8204a" mdapi_config_hash="5d241816e60ec5a19aedf67595bb70e3" id="6ec0ccb7-2c59-4c56-a541-5cae1577ccef" chipset="acmgt3" name="Ext359" />
+    <guid config_hash="003d9962e7cf0a90cf4318b4f0d4daf6" mdapi_config_hash="7fcfc93dbd94b9524822da3e5fa255f1" id="3c210e69-5238-4d7f-a875-5526e0d10784" chipset="acmgt3" name="Ext360" />
+    <guid config_hash="4792219d9f6509251595eca8048641d1" mdapi_config_hash="c2d9764103ed7391be292eef644dec89" id="3c9d3497-fa1a-4120-86fd-3b5c6dce0608" chipset="acmgt3" name="Ext361" />
+    <guid config_hash="4683655dfd86828ca197f80dd0d25052" mdapi_config_hash="d17bd8a6a090cd603b221fe72ef606fe" id="176224fc-33cb-480b-90b8-91225247a303" chipset="acmgt3" name="Ext362" />
+    <guid config_hash="f41d9031a77fa9af31f1a4819003baa7" mdapi_config_hash="61b8fe21039656a0e6e7e6cb08d16209" id="496b0c36-4849-4398-aad8-131402b38b41" chipset="acmgt3" name="Ext363" />
+    <guid config_hash="34fdf83dde42a201aa1592316aa83455" mdapi_config_hash="1723f218d115dd90a1f5105ac09225a9" id="0a0b4d5c-4cc0-4f18-84b7-bca6fde241b4" chipset="acmgt3" name="Ext364" />
+    <guid config_hash="c6d70d51893da920dd9648e5dab843f7" mdapi_config_hash="d44dede739359e2de11fd3b193389d3b" id="a726bcbf-febf-4840-8d84-d4e6ce3a7fb0" chipset="acmgt3" name="Ext365" />
+    <guid config_hash="2098a75ebabc581e2fc69cf69abf5bb4" mdapi_config_hash="9b3865850cb37f6a7cd75679a6db4d6c" id="14001989-7d14-47a5-bd85-d1d2b11d15c1" chipset="acmgt3" name="Ext366" />
+    <guid config_hash="bf5f29b4bf43500153ec5d4df7ae804a" mdapi_config_hash="f627678bbeb9d8bcc593245c95abcca1" id="421c3eb4-c4fc-4a3b-91b3-87a99603466e" chipset="acmgt3" name="Ext367" />
+    <guid config_hash="7668727611d371858f88e24bc362b77d" mdapi_config_hash="aaf7875b655c2add7fa873b19e23a8dc" id="854ec412-1ca6-4628-a51c-620c0c9297df" chipset="acmgt3" name="Ext368" />
+    <guid config_hash="c508e310dd9932a08d3fafda8c8a1192" mdapi_config_hash="52bff5097d61f066ac8fca0a0e802959" id="02175256-9f81-41d6-97e1-ace9e4e4cd45" chipset="acmgt3" name="Ext369" />
+    <guid config_hash="916f4085e4b3fa51bc2ec8f7558e633a" mdapi_config_hash="90442e4c6d1e49b10972ef39d8f9ab5f" id="5a99d803-48ba-4b76-b689-58bf406ceaa5" chipset="acmgt3" name="Ext370" />
+    <guid config_hash="e26ce1b5480a57cc99a2f33b368f84ed" mdapi_config_hash="f6ecc8126e5c447b06728b019931f7c1" id="64b5963c-65cc-4216-8f23-d96e4268dca8" chipset="acmgt3" name="Ext371" />
+    <guid config_hash="5afb717a83b0348e3979e2d0fef902b8" mdapi_config_hash="f9ed49ae81a90bcead4ea8336a82f6f6" id="7cf2bd19-9c7c-48df-8080-04b324c1a205" chipset="acmgt3" name="Ext372" />
+    <guid config_hash="e0560b92c652de91321620b3d6e66251" mdapi_config_hash="1a2ce28d7b027c36c4be56dab7804852" id="2ac3ef91-7515-4519-a5bd-743564e52e46" chipset="acmgt3" name="Ext373" />
+    <guid config_hash="0b3251f3f963eb831188de821e80ea08" mdapi_config_hash="37aabb3d0f3bec458524786143171b33" id="1bd48e5e-2efa-4f4c-b8c1-7600113347ce" chipset="acmgt3" name="Ext374" />
+    <guid config_hash="a3d400d9b379e21084701960c941f14e" mdapi_config_hash="c31db7b4846495f489d85c08f3dee459" id="e3e63d50-a2dd-4880-899b-fc676a87853d" chipset="acmgt3" name="Ext375" />
+    <guid config_hash="354b5fe7fb069fc4e79af2112aa9f344" mdapi_config_hash="405e2970209823a50a238b3bb9b19a31" id="eb0b8725-7fc3-481c-b4ce-c53f32c8e828" chipset="acmgt3" name="Ext376" />
+    <guid config_hash="21a89fc33ebad050aa5974c1ab72d02f" mdapi_config_hash="fc70a6c08666aa194171e043f5c57fd5" id="dcb8bd26-ed68-483d-b0c9-41a81b3717dd" chipset="acmgt3" name="Ext377" />
+    <guid config_hash="f33208673510549d737fdce81af828fa" mdapi_config_hash="9619d3bf3a05972ef1412d5d2ee0094d" id="2e0b9ef7-89fc-4a49-b8e9-53f2c4c17e1b" chipset="acmgt3" name="Ext378" />
+    <guid config_hash="9dfa43d46d579a7e3ad366f377084004" mdapi_config_hash="7f77041037046f4ac1f08b7d600e5897" id="08199543-f47a-47ac-ae63-c384083ef85d" chipset="acmgt3" name="Ext379" />
+    <guid config_hash="bcf27df3f74055ce4d9dc66d4d2218ea" mdapi_config_hash="a7692f9f1fef0808450b74ea68403aae" id="7f7a14d6-3e61-478e-a4a1-8c6cfe0eb323" chipset="acmgt3" name="Ext380" />
+    <guid config_hash="aa8c72517a8c840fad9807bb4b954d8f" mdapi_config_hash="1db942487c60fcb5a1e0565574d037d1" id="cbcdedd3-06c0-452a-80bc-2657fd042c53" chipset="acmgt3" name="Ext381" />
+    <guid config_hash="823f0a9f8ad93b61cc93f811e75b7f19" mdapi_config_hash="0923d7d0ecd15ab26d99e1a4a23a0c4e" id="a43eac54-7cf5-4d96-8496-514979ca4c9a" chipset="acmgt3" name="Ext382" />
+    <guid config_hash="ee6471e9ae19e7a7f6095253cb40259a" mdapi_config_hash="bd52c1038143e4b3185760f5e3f50079" id="ca5db39c-f550-4965-8402-553fbf5e7920" chipset="acmgt3" name="Ext383" />
+    <guid config_hash="b0d28e7d957ab009a062a6c92dc0b75d" mdapi_config_hash="b6dc25afd3721189d7e44b6b690000a4" id="45be76fb-6be9-4028-b98d-5cff32f7a51e" chipset="acmgt3" name="Ext384" />
+    <guid config_hash="ec2087ff0e9dc0aa30ac55265f673a1a" mdapi_config_hash="fa956833fb6c816a92dcd6905029b019" id="840b7ed8-e148-4503-9f1b-2df3a551c5c3" chipset="acmgt3" name="Ext385" />
+    <guid config_hash="a5a22e0cc555b672b169fc0675467e61" mdapi_config_hash="08cd856be325faff77d20d4d64cfc0fc" id="5475ddd8-8385-4631-a009-45fe26c8658c" chipset="acmgt3" name="Ext386" />
+    <guid config_hash="30fe5c3c9d967ea1a98aa5d381ee87f1" mdapi_config_hash="fffe3915b6d3da13306cf99de3a6676e" id="0906197a-4ac1-4af4-868f-8172f9b034ac" chipset="acmgt3" name="Ext387" />
+    <guid config_hash="edcfc03f9a5444b661c2477f0149388b" mdapi_config_hash="bb1ad569d100cc8353967cb27894e83e" id="ce2dc9cd-b9e9-4c74-934b-d1b3590b473c" chipset="acmgt3" name="Ext388" />
+    <guid config_hash="931fa7d62526828d368f6a3b8370258d" mdapi_config_hash="974447f20adf55d781d897ce3939f289" id="d87d855d-5896-4c76-b0fe-4120c5ad1a63" chipset="acmgt3" name="Ext389" />
+    <guid config_hash="b26acf3c22d765b6e82f9fc4866fc108" mdapi_config_hash="06f4e7d4dda81474e1c7c7aba455a788" id="d8b0608d-4fe4-4762-8df3-429344ff1a10" chipset="acmgt3" name="Ext390" />
+    <guid config_hash="7669bc3762269a3c55885cdaf0f3df75" mdapi_config_hash="c22b1ae73b6c44d7c97068deeec727d2" id="1635ad22-5347-4911-a15c-0716a7fd55d0" chipset="acmgt3" name="Ext391" />
+    <guid config_hash="440719e8f887ca5d1c0633167d4f42b4" mdapi_config_hash="be1da8c1d9ebc2333da4b26d465b2343" id="e001e26e-5522-4f0b-a437-e6d6c3144a8c" chipset="acmgt3" name="Ext392" />
+    <guid config_hash="352cf837e4bb0018cb7829a0498c9e9a" mdapi_config_hash="f74f1e9d1764747a54ad862e4e961447" id="64ea4666-79c3-4e0a-a68e-5a65ed571a8d" chipset="acmgt3" name="Ext393" />
+    <guid config_hash="c175871aeb6b1e50663b782ca79bd5a1" mdapi_config_hash="56c1107a70be11bff094c71c0cdd5440" id="437d1633-c275-49f0-9994-4e94672ac99c" chipset="acmgt3" name="Ext394" />
+    <guid config_hash="784f11ce0b305276bc93b52b37c11b89" mdapi_config_hash="fab117db94e4e811a511e4d004f91614" id="ed6321f2-59be-4560-889b-5682128d1177" chipset="acmgt3" name="Ext395" />
+    <guid config_hash="4a49074c95cb3692ede631c186e891aa" mdapi_config_hash="bf7ffd2a8789cb203296bdf1caae8743" id="c3a07e91-05fe-458d-a578-55b67eb8625a" chipset="acmgt3" name="Ext396" />
+    <guid config_hash="db49a37b258468f59b62334671c84533" mdapi_config_hash="afedd995c5cb9d9a8a641a4f3cfc2c76" id="25a1e5ce-835d-4659-896b-a7279e2df94e" chipset="acmgt3" name="Ext397" />
+    <guid config_hash="cf1861b1a218097dd180b9fe6d94af12" mdapi_config_hash="66ac67e0c830f90ec11150fcba0d6208" id="13b89a1d-1377-41f5-ba3f-800afcfb86a7" chipset="acmgt3" name="Ext398" />
+    <guid config_hash="0b2c652e7eadca41da6f3a8ff8f8204a" mdapi_config_hash="5d241816e60ec5a19aedf67595bb70e3" id="dea45968-7d62-4989-bb89-ff1ffcf44402" chipset="acmgt3" name="Ext399" />
+    <guid config_hash="003d9962e7cf0a90cf4318b4f0d4daf6" mdapi_config_hash="7fcfc93dbd94b9524822da3e5fa255f1" id="5df56b7b-4cd0-4f36-b91b-44e4f47ab5da" chipset="acmgt3" name="Ext400" />
+    <guid config_hash="4792219d9f6509251595eca8048641d1" mdapi_config_hash="c2d9764103ed7391be292eef644dec89" id="f48f4171-49a5-4a0e-bfcc-9f1f89569138" chipset="acmgt3" name="Ext401" />
+    <guid config_hash="565525ffd215a6c665ed3619f2d9e8f7" mdapi_config_hash="21c96928eee0873059cdb9969e287ba0" id="bed2251c-d53e-402c-9100-2f27febc1672" chipset="acmgt3" name="Ext402" />
+    <guid config_hash="778b41293b4b7cad38f9d0e7d38dfa0d" mdapi_config_hash="6b28a9056b8e5df02fbd0e419d07499b" id="1894c9d9-8ba5-41df-97ba-6cadd89a8418" chipset="acmgt3" name="Ext403" />
+    <guid config_hash="7dd397a18515676ec3dcf6875cc1183e" mdapi_config_hash="634f6b3e1e55e867dc9bc4f70cbfe3c6" id="8712ea52-9c71-4036-a736-308b77af503a" chipset="acmgt3" name="Ext404" />
+    <guid config_hash="39b5c50c7b6c3d1f858991de68833d5f" mdapi_config_hash="f051fabe94fcc79797cd90a1be344391" id="8e9ae82a-577e-4804-b314-de02d7206903" chipset="acmgt3" name="Ext405" />
+    <guid config_hash="1d02596c4edfdfca374f4a99e06490ff" mdapi_config_hash="ce1d03a2624971c870035fb3e8ca1ba8" id="654e925d-2c2a-49a9-bd44-3470039c6e86" chipset="acmgt3" name="Ext406" />
+    <guid config_hash="b711f855b1439620388e26362f818104" mdapi_config_hash="9c5781684c870368a7f6288add10440f" id="f9c431af-992b-4f6c-b068-4e89ca0b3538" chipset="acmgt3" name="Ext407" />
+    <guid config_hash="aa2343e4e6e1f5085d6fd46e5c178143" mdapi_config_hash="1fe8f6ca9ead03111fe046d8672aeee4" id="c7fe43dc-ae1a-45d9-b64d-60fac946a070" chipset="acmgt3" name="Ext408" />
+    <guid config_hash="0289b5d358e5a810c63561a47b7ad6e3" mdapi_config_hash="56f0355d45fccda230c2e271a6a592f9" id="0b7c4602-76f0-4a2e-abe4-f0829f2f9b02" chipset="acmgt3" name="Ext409" />
+    <guid config_hash="3e0b5850b3d0cabac670e3d931551a3a" mdapi_config_hash="fde4a8d2424b85b2647b34b6e43d49fd" id="64a617b8-cae0-439e-b014-1e70e72ac75d" chipset="acmgt3" name="Ext410" />
+    <guid config_hash="eb9650578fb1ce03a8f8168d57556362" mdapi_config_hash="777806424bb4adab7ba0e3399221de95" id="304aa1c9-59be-4f9d-ab68-2d607a9b90ee" chipset="acmgt3" name="Ext411" />
+    <guid config_hash="5942f4b4f43299920d088192cc50d47c" mdapi_config_hash="3815a1d691c33ac174026dfcb90949f5" id="d9a3534a-4dca-4b28-b8e8-d447017b82a5" chipset="acmgt3" name="Ext412" />
+    <guid config_hash="e7142c3a86bfd820f714e07233dbd8fa" mdapi_config_hash="e13b60c9b41dafa399ef0c94262243f7" id="594a085e-c744-4544-b38b-196e9b52d1b0" chipset="acmgt3" name="Ext413" />
+    <guid config_hash="3f3a055f866b9f54d7925db6b7df13d2" mdapi_config_hash="f5ddb946dfe27f591c3703fef1addce5" id="99fd5805-5f5e-48ae-95d1-6cb7d5c09bfb" chipset="acmgt3" name="Ext414" />
+    <guid config_hash="bfaf72687d30faea35994a239e14bf12" mdapi_config_hash="795e2b380b76b048972eecab8a873b96" id="1be807ab-2f67-45bb-901f-9bb9d805d4a7" chipset="acmgt3" name="Ext415" />
+    <guid config_hash="9a5f753c0fcbc4c74d39e53ef7a76efc" mdapi_config_hash="35202e31bdf2bb3244bb74d69d009826" id="8204f26d-37d5-458f-aac4-e1120b674145" chipset="acmgt3" name="Ext416" />
+    <guid config_hash="41c9663fbfb9efee4d3489468d02c4d0" mdapi_config_hash="364a95814a3c2efc472d722af0405833" id="7f38c38f-0f80-4e50-9269-dfc0e08b0660" chipset="acmgt3" name="Ext417" />
+    <guid config_hash="1205381129d38276b9d747bb120ea226" mdapi_config_hash="c9c1f6b5d4372003c76fad67b81a5cf4" id="2654399f-54e6-45ca-931d-1f01c9f8ca06" chipset="acmgt3" name="Ext418" />
+    <guid config_hash="c19ad59775884ffe7b842fb6ca464ae6" mdapi_config_hash="0b32f9419989fe835aba5c86dde85f1f" id="8a2b3a4e-791f-4f5a-931d-78e3a6c673bb" chipset="acmgt3" name="Ext419" />
+    <guid config_hash="ac5393716ff764f494362b1f2b4cb60d" mdapi_config_hash="bf9b0fe2633654fdb7ad94148bb3225a" id="d5d2ec61-a953-487d-9e9f-9e15c80ad7ac" chipset="acmgt3" name="Ext420" />
+    <guid config_hash="f97d8b2baa9368e6c762e2b474f12f55" mdapi_config_hash="a0d89a98fa88c90d29ecb5416c3ecde6" id="581a1d88-3759-4cf4-ba59-4c25377cdece" chipset="acmgt3" name="Ext421" />
+    <guid config_hash="153861a319e2661463346c69cd1eae6f" mdapi_config_hash="bef15c6f614901fb73b11aef7cc3cb4f" id="316fefa3-9d16-4eaa-9904-15b2203ec95c" chipset="acmgt3" name="Ext422" />
+    <guid config_hash="4809264e0d152b35389826e2190a970d" mdapi_config_hash="e6b027af40084635ca439219675bae99" id="6e0a01cd-c537-45e1-aedd-3e181b7a7c01" chipset="acmgt3" name="Ext423" />
+    <guid config_hash="0630c3343e1646c7d4c23f5bbd5a2696" mdapi_config_hash="c0cb35547c19bafbf75ca79e45811f4f" id="9141c2fe-b37b-4f53-a292-a09a3a54dbd4" chipset="acmgt3" name="Ext424" />
+    <guid config_hash="3f2ccf0b87ca7bb24b9af2b47cf17fec" mdapi_config_hash="a5d422cb67d11f94a297bce3c4986c9c" id="b655bffc-0284-4ad5-847e-caf886a651bc" chipset="acmgt3" name="Ext425" />
+    <guid config_hash="abf13254e85fd889bee51df04cf9dac2" mdapi_config_hash="c175a1d89a40ba2f951c5ec3c229e527" id="5aca86ba-4035-4c53-af84-25152bf169e3" chipset="acmgt3" name="Ext426" />
+    <guid config_hash="8619c3fe81c5fda8bb186241476a21aa" mdapi_config_hash="8773b3ed6d6fa23b0301ffeaf85d8c08" id="0ab07bde-21c8-443c-b0b2-0ab740168d29" chipset="acmgt3" name="Ext427" />
+    <guid config_hash="85e5bf227031443dbeb0004bbf85d222" mdapi_config_hash="6a860ce3436c30532e3aa6ae4415354a" id="62a24a66-2325-40b3-a945-6ef37508674a" chipset="acmgt3" name="Ext428" />
+    <guid config_hash="ab7eb1ff6241683b3ea23b12e4e65ad9" mdapi_config_hash="1f51c6f6fc968608bc2daba0408dc0da" id="47acaafe-6b68-4d1d-a674-8d94ed118606" chipset="acmgt3" name="Ext429" />
+    <guid config_hash="b6a59649942eac9299d8b27f471579a3" mdapi_config_hash="92d47d4f0b718bbb5ec7d3c4f9166e66" id="72cb7918-7248-437c-ad7f-a0b2b8815148" chipset="acmgt3" name="Ext430" />
+    <guid config_hash="cc200dfffb9b298a4455d23f48263440" mdapi_config_hash="f425b1232803a94f21fdf6f50e51f84e" id="0ccfdef6-3cdb-485c-9aba-d3e0040e305e" chipset="acmgt3" name="Ext431" />
+    <guid config_hash="e4c5aaed23f1360734c7dd2e661d9b2f" mdapi_config_hash="17d666c68d57136d9e6e5d0ad604d1d6" id="e9b7707a-c96e-45dd-b513-fae7d7468ddb" chipset="acmgt3" name="Ext432" />
+    <guid config_hash="4a412208741539ecc74e73a4f18e547f" mdapi_config_hash="caca18d4c0cfa0c74689b45fd3d53f78" id="4ecad344-9bda-4c3e-b310-284a9d249028" chipset="acmgt3" name="Ext433" />
+    <guid config_hash="6aaf52fea6822f3af6fc7fc3bcd46433" mdapi_config_hash="bd7512498350d37c5bd83ce0a9566bd2" id="ddb99956-0871-42f4-8b6b-dbca21a726ee" chipset="acmgt3" name="Ext434" />
+    <guid config_hash="d89a6b3f24f98205fd20d42a38937f12" mdapi_config_hash="fd7ff26be4365af31b50bfe4e5a42b77" id="a992c151-134d-4959-879e-2c5b8dc2b98a" chipset="acmgt3" name="Ext435" />
+    <guid config_hash="4e6a45e0919d2a86be1b1dfda0cd69fb" mdapi_config_hash="86ea6a243725ebe329ffe5231984d749" id="05453f6f-3850-4412-9dc5-aacc57dc23ee" chipset="acmgt3" name="Ext436" />
+    <guid config_hash="b0e6c3f75ad6f28533800760257eac50" mdapi_config_hash="df4e81ef669fa5d4b548fa72400d990b" id="6a863ebb-4f0a-4a6f-81a0-979a0a972ce1" chipset="acmgt3" name="Ext437" />
+    <guid config_hash="5e74374f232dd66002897b3db70814b0" mdapi_config_hash="20e8d3b043eb806ab3808db82b60423f" id="5b95cc2f-5942-4fe3-be28-8940db9b99bb" chipset="acmgt3" name="Ext438" />
+    <guid config_hash="97e9078a622dacb4c6aaab21abc1de4f" mdapi_config_hash="2408e86fbdc16ca77d6cdb789d12a337" id="1474625b-322c-439d-90e3-53c245a07f97" chipset="acmgt3" name="Ext439" />
+    <guid config_hash="4ad598c436fef18f7b666f2e2760dbe0" mdapi_config_hash="873f3c37286eff7fee0143d4281a24d7" id="9112768a-99fd-4861-b1b2-ca7eb9a46228" chipset="acmgt3" name="Ext440" />
+    <guid config_hash="baf4e59a08a52d3c14bc694a7b70f3c0" mdapi_config_hash="36661d79efd0d8f1537b5b9029e42368" id="f2579b7f-2747-49fd-b5ed-ef10662ce62a" chipset="acmgt3" name="Ext441" />
+    <guid config_hash="b9a73d315d5203ba8f844b8550e4c73e" mdapi_config_hash="bb9ac5a4dfe508f4fc40d9c82617b2e6" id="f572f1c9-3f61-48e8-9bd1-d58a8cd60520" chipset="acmgt3" name="Ext442" />
+    <guid config_hash="241cfdd727daaf1cc8577ee89b618938" mdapi_config_hash="5fc0604f5fa399403986cec674228c4d" id="4c923c96-134d-4802-a61f-9c3e50af7e9f" chipset="acmgt3" name="Ext443" />
+    <guid config_hash="c45bd4ad69caf421d99c9b0a74816689" mdapi_config_hash="e31e1f67558db7aea87fb6558a97e0c5" id="c89197d6-8bce-4479-9961-2c50e8ffbcf7" chipset="acmgt3" name="Ext444" />
+    <guid config_hash="86231e412f91d74a56915efe3840428f" mdapi_config_hash="0da6760597d5891a29115b51b27c3a9a" id="87885a48-5d45-47e8-81b3-176db423b454" chipset="acmgt3" name="Ext445" />
+    <guid config_hash="c65fd3106da01870a15fd2f8e8ff444b" mdapi_config_hash="b9b9d1323fade3ec51fbf8bac25bada9" id="323e04f8-e194-4032-bd1f-159b0131f1bb" chipset="acmgt3" name="Ext446" />
+    <guid config_hash="717f79980285f53c545fe0b329b481d2" mdapi_config_hash="069b2effa876de094f0a62eb0a867771" id="1999b632-cd36-49ec-a888-0a458f9f5673" chipset="acmgt3" name="Ext447" />
+    <guid config_hash="4525cda5f08028c2f1875b5484021700" mdapi_config_hash="ba6eec9e4f2550641143b6f7fab55a66" id="71487a9a-9e3f-4bee-95b9-cd42969e4278" chipset="acmgt3" name="Ext448" />
+    <guid config_hash="79b946b869b1247842c7511fe6d2945d" mdapi_config_hash="f109972ca1b60b6823821d6f634d77a0" id="299dff90-c563-48f4-b1b4-eacf678b6727" chipset="acmgt3" name="Ext449" />
+    <guid config_hash="0bf6f6dd56b2c6d336a1781aa04b1502" mdapi_config_hash="d83b675b6c2e45da6d5e38f14c07b25a" id="85729a73-d105-4f88-9f85-833961661877" chipset="acmgt3" name="Ext450" />
+    <guid config_hash="461fc5b37c585489544c8b30c6d7fa67" mdapi_config_hash="3e98c9037946c5928c0a8bf154c2cde3" id="74df82fd-abc3-4934-8cb5-cc71324c1816" chipset="acmgt3" name="Ext451" />
+    <guid config_hash="8d1ecf39aa7832cbb7bf760bd2f13bd6" mdapi_config_hash="e628765e7c5efab3dc2e2e9732006d64" id="d1c28b9e-8ce0-4750-bf4b-ec446d4c3916" chipset="acmgt3" name="Ext452" />
+    <guid config_hash="fd19478ad4dea6da61caa9c314b0c346" mdapi_config_hash="cbf5a565723de1db8e228c6aed4f2644" id="56876ce8-6162-4812-a5ff-acdf8b896a9c" chipset="acmgt3" name="Ext453" />
+    <guid config_hash="08daad6beed06b0a6f1accc8a9b38d0d" mdapi_config_hash="639f98aac3aaaa33017c30309e3adc93" id="4c84ebed-5683-417b-8b31-d60919bdf00e" chipset="acmgt3" name="Ext454" />
+    <guid config_hash="60b4fd27d58e4d0f16f449005dc056f8" mdapi_config_hash="45100f131377ea7d63ea6da81c998d81" id="870f786b-e570-427d-868d-bdead22a485d" chipset="acmgt3" name="Ext455" />
+    <guid config_hash="cd58e9f6e1ed094df520055bbf9e5afb" mdapi_config_hash="2962a7e83576cdad7432b888568e3d5f" id="7385d290-7061-4248-8b13-ac4abe1212d6" chipset="acmgt3" name="Ext456" />
+    <guid config_hash="59fdefcebea930b738587742f647bafd" mdapi_config_hash="8137d97935bfd603149c0890dcde572b" id="e92a854c-ef93-44fe-a9c9-2e564fd57215" chipset="acmgt3" name="Ext457" />
+    <guid config_hash="06737eb8fef0aa339dcc5960928cddb0" mdapi_config_hash="74d3377292d0850accfb45a17420ee87" id="0839f197-8c02-4ab5-adee-f26d39d57060" chipset="acmgt3" name="Ext458" />
+    <guid config_hash="aed7ab1a9b5c0754db7faaeffbcbc3a5" mdapi_config_hash="87bead09a4791bd66eea1734d3c55842" id="b39c926c-557f-42d6-9ab8-3dc749774ca2" chipset="acmgt3" name="Ext459" />
+    <guid config_hash="dd354ed3b063f3cacfd351c38919183a" mdapi_config_hash="d153c010210ea77a81b5a0c372aa0412" id="9a7989c1-a520-4785-9aeb-f522bb692de6" chipset="acmgt3" name="Ext460" />
+    <guid config_hash="c0555923d51318b1413e476c037740c3" mdapi_config_hash="5a161fb49c8d5377fa13294e7399a31e" id="6eb94cf4-077d-4d52-89c6-272cb33fd9bc" chipset="acmgt3" name="Ext461" />
+    <guid config_hash="7f67010c34704c1863df8024edde8632" mdapi_config_hash="533b62ab153e7b96cde60055b62bc13e" id="a50d2370-c6ff-4a53-a6dc-b9523562b371" chipset="acmgt3" name="Ext462" />
+    <guid config_hash="bc07c48142ac727e2b39e20d891d52c2" mdapi_config_hash="05d49ab8f2e886c17bb46498a0370cb0" id="b737779b-4652-4892-be0b-aa8764d116ba" chipset="acmgt3" name="Ext463" />
+    <guid config_hash="88b0f394222420ca175ecddc1a78f6bf" mdapi_config_hash="1d8416037f70bf58f2e7a5db0cc160ce" id="447d463d-77e3-4bb4-9f02-7523eefa3549" chipset="acmgt3" name="Ext464" />
+    <guid config_hash="c50931c8859b71d0f63a3a781c88be28" mdapi_config_hash="9c1e026eb7dd79c1faa4ca243e1eb3fc" id="0b0dd8de-3217-4d32-9033-988a7a4a2f59" chipset="acmgt3" name="Ext465" />
+    <guid config_hash="fba5a73a68dbb764077d1e6f11061390" mdapi_config_hash="1a191cb7909055011f0167505da69512" id="46a09e7c-f9e1-4eba-ac1c-4151dc54d51f" chipset="acmgt3" name="Ext466" />
+    <guid config_hash="ab26c68707585b41c9268b8c302652ab" mdapi_config_hash="ab5137a89c28d279f4c922f76900c3fe" id="59c513fe-9984-455b-9b07-5b5f02c36e70" chipset="acmgt3" name="Ext467" />
+    <guid config_hash="411dfd4865f250f7f13b70c1dc210a53" mdapi_config_hash="9e9e1ec1e148c17c0d8aa8ea69aca70f" id="aa729499-9f35-436d-91ad-7100098dfd47" chipset="acmgt3" name="Ext468" />
+    <guid config_hash="eecb8626d28d9fd7fe5cfb50da1dd9d5" mdapi_config_hash="289e6cbc5d57343a182d5bb64e26e593" id="dea127d1-19d5-4298-b9d6-cf4a21be1563" chipset="acmgt3" name="Ext469" />
+    <guid config_hash="0c7bbc97573b03d0e19d4a5b1196c9d4" mdapi_config_hash="5a1c1d910c357a3e9f80a6612b11e01d" id="1dc79687-d7a2-4c2d-b810-0a6d5db141f6" chipset="acmgt3" name="Ext470" />
+    <guid config_hash="71560dd33f75657f5051994603438ab9" mdapi_config_hash="7e344671dfc3def53584aa2f28d0f5be" id="4487fcbd-dcf6-4f08-9512-1cadbd7f246b" chipset="acmgt3" name="Ext471" />
+    <guid config_hash="de98962d5a57c0aa0cdd495c41911f7b" mdapi_config_hash="4ea72be14c3aeb87aa2d3eb6cd7db446" id="641f5e4b-0404-456f-9aca-03154415cd34" chipset="acmgt3" name="Ext472" />
+    <guid config_hash="2b7c1419f1706a366b1d04952ee133c1" mdapi_config_hash="15720dda97a2b5d37623b6d0b1a0caac" id="2055dfa1-2b3c-4939-b905-dc3cfc8a5124" chipset="acmgt3" name="Ext473" />
+    <guid config_hash="2cbde2a80e941745417ca844498adfbc" mdapi_config_hash="3c4df221f75a524726a6da4de21552fc" id="c16b25d4-0460-43ca-a0c0-eb198877b615" chipset="acmgt3" name="Ext474" />
+    <guid config_hash="1d710775ed9c0b93b30309b571d8e00b" mdapi_config_hash="687a440a688a6e76e7b9f9aecf3554e5" id="939bce80-8718-4d3d-99ff-7908d07f7ca5" chipset="acmgt3" name="Ext475" />
+    <guid config_hash="adb8b6e9deea07ca2abd5ef1d0077b1d" mdapi_config_hash="8f751b644b8ab582f768ab9b2aef9108" id="d7cce1dc-00c2-4548-a0cd-469134c446b5" chipset="acmgt3" name="Ext476" />
+    <guid config_hash="6fe125560c8a16a74c082d56dcedbe8c" mdapi_config_hash="e775598915b331072af7dcc8a53537e5" id="c939c362-8ff8-4c4c-857f-c429c61dbaee" chipset="acmgt3" name="Ext477" />
+    <guid config_hash="9a6db5608b56252f791e4a819145e0a9" mdapi_config_hash="4366bcd940f81cb7993b412cea95b86f" id="59ec69a0-17fb-4d3a-b303-8463a4631464" chipset="acmgt3" name="Ext478" />
+    <guid config_hash="6769a79a3c30a4df78ee59bee16b22b2" mdapi_config_hash="d4639cb9b9176cfbe9a2fbe05acdea93" id="8e1b82ed-be18-45ae-88e5-2e3dfe96935f" chipset="acmgt3" name="Ext479" />
+    <guid config_hash="5588afe09365136d8932dd7a73683c98" mdapi_config_hash="8836290134ce2299aac44a528a4d6973" id="c4e0c25a-5e43-4238-a7c9-6cca88251495" chipset="acmgt3" name="Ext480" />
+    <guid config_hash="84f3050a52808d6ad68cee4c0815ea50" mdapi_config_hash="3db66d66df8a853c71666326e1b01e93" id="d70cd6f5-4ec0-4645-9654-c619926928d3" chipset="acmgt3" name="Ext481" />
+    <guid config_hash="d7030460a172f1accd4d78f3cbd6227b" mdapi_config_hash="19c0b21d799f047dd3cd5fe733fa1cd5" id="d7028d09-39d0-4009-996f-a4b193ee726a" chipset="acmgt3" name="Ext482" />
+    <guid config_hash="36db18fa0c297eedfefe3220582c03d4" mdapi_config_hash="7f8bd7fd23bd1b297e39705bad1e1e9b" id="096dd150-0f36-4af1-a2e3-2a309d19ff11" chipset="acmgt3" name="Ext483" />
+    <guid config_hash="e31eeca04b11a0eef861a50cf647ea08" mdapi_config_hash="8d7f6bae3754783f735f7bd633f52c1b" id="a3d45e15-66d1-44f4-8e1d-a0c131cf0c20" chipset="acmgt3" name="Ext484" />
+    <guid config_hash="2b0be92c62089147ec929b2799d8b305" mdapi_config_hash="11ddf6af014483dda33f8c3df20cf0af" id="26fe4473-14e3-4ec4-825b-edec00c9c60e" chipset="acmgt3" name="Ext485" />
+    <guid config_hash="d85c4fa74b860a299a55dfc0f7662cf7" mdapi_config_hash="c1ccc5b626aad7d4ece15695fa44a2ae" id="5743595a-ce3d-4942-b5e1-60f90bfe6d15" chipset="acmgt3" name="Ext486" />
+    <guid config_hash="538feaf90d74ad5a8637eadbc6991d78" mdapi_config_hash="e59cb55f7d295fa34d2aeabe1b1b5481" id="bcce765d-4327-4ce9-8dc4-beae0d4c8738" chipset="acmgt3" name="Ext487" />
+    <guid config_hash="98c4fd0bbfaa66f3664083ffa97e6113" mdapi_config_hash="0d76281d1cac0ab935039f4e47698c84" id="075a4845-117c-4d77-b2b2-b7184a875516" chipset="acmgt3" name="Ext488" />
+    <guid config_hash="8018f095d96cfc59f18b537f9e098561" mdapi_config_hash="84d89976904c9cc8c7a4650615cf83d5" id="4a9f4ce9-4ca3-4bbe-ac73-5f4299841575" chipset="acmgt3" name="Ext489" />
+    <guid config_hash="5519147608b0a2d06ceee7d8b2b8133f" mdapi_config_hash="4cdea954c4276dbf5f3bbb875df287a3" id="f24a588d-b6e3-411c-a4ba-7fe5ce65bb18" chipset="acmgt3" name="Ext490" />
+    <guid config_hash="507fd30fd3057ba7fe0bb56c1df81790" mdapi_config_hash="57ab3a2aa42d7281291058a377b3bbc1" id="70b12fa6-060d-4c67-971b-1c5c6b4fd058" chipset="acmgt3" name="Ext491" />
+    <guid config_hash="31db0da0e80572e0446adeeee7adf2db" mdapi_config_hash="91d0d3e33224d40f3cacfccdda268842" id="0a0b3e8f-9f83-4a85-a594-dd6fb87dc2ff" chipset="acmgt3" name="Ext492" />
+    <guid config_hash="b6cf112f53641d16dfaf789417da185c" mdapi_config_hash="f2d5fdd1553ebd5b2eaa850926093c30" id="413ee32f-ea00-431f-b325-39bb65fa8a82" chipset="acmgt3" name="Ext493" />
+    <guid config_hash="966ed3e6172963b604008599601e0f2f" mdapi_config_hash="c8ac1037e6ba33449898f2cd743d3d00" id="7a411505-9241-4b5e-b609-5c4788bbcb6c" chipset="acmgt3" name="Ext494" />
+    <guid config_hash="75177d16fe784efdf9bf5b97ac19b9af" mdapi_config_hash="e7234db17ef1f76b87cef715f95f9315" id="6db60455-95d8-4fe1-8205-194b741b7f9f" chipset="acmgt3" name="Ext495" />
+    <guid config_hash="3d4336527a84f7b17395dca1a675b715" mdapi_config_hash="72dd60bdeb480010dd91aac1f5471f73" id="2b445bfb-5e26-4638-9831-6d3108343565" chipset="acmgt3" name="Ext496" />
+    <guid config_hash="5bfdc0dfc22ea8dbd48b6442324eed19" mdapi_config_hash="34dacfee573a5e0f86deb1a92b77a39f" id="5f3eb4c5-fc54-471b-9f82-54de40bcbc96" chipset="acmgt3" name="Ext497" />
+    <guid config_hash="1475cc3f105c8b7b2d09d1105ada0b6a" mdapi_config_hash="309906dd5a413d7f064324a8a1b46c18" id="8ab9e563-9c33-4b0f-adde-029bd2cd484c" chipset="acmgt3" name="Ext498" />
+    <guid config_hash="7bb8e179f6e1922b3781270eccacc0b5" mdapi_config_hash="76b72c993f5fc49c33595fe1d4c28950" id="2d96310e-89ce-4f66-b558-0b253531b58f" chipset="acmgt3" name="Ext499" />
+    <guid config_hash="ce1ed6ac7b6b646528efc6ae437d0093" mdapi_config_hash="cef8755889987f6e59c6aa779f89a339" id="a9c29325-cfab-4d4b-be96-75c69b8ce57f" chipset="acmgt3" name="Ext500" />
+    <guid config_hash="7e64d60b7fed53aefe4b922cea79adad" mdapi_config_hash="0ad1ce2abb2241fe714eebbc54ffa27c" id="262f0b30-997e-4ee1-85e6-6d6647a17611" chipset="acmgt3" name="Ext501" />
+    <guid config_hash="54d6caf1fd42c342c383a9444b6aec52" mdapi_config_hash="869c91d121bdcf6d97f184bb10593d30" id="07b710c4-da24-46fa-bd26-5e761066024a" chipset="acmgt3" name="Ext502" />
+    <guid config_hash="e1be5247d18cf58c93c1291c756fd479" mdapi_config_hash="d232d835325028637d7a4a7ba382b742" id="0b727214-7830-4c26-a3e4-7dd5c446083f" chipset="acmgt3" name="Ext503" />
+    <guid config_hash="3561eb21e7cd5db1bb5cc14a254f592d" mdapi_config_hash="a1788996357fb5003bac234cb5a368b3" id="1864f248-2169-4ae4-aae4-a16c2ddd0a86" chipset="acmgt3" name="Ext504" />
+    <guid config_hash="ebce2f3df51d249e0a93a9068f320b54" mdapi_config_hash="cc4155758e90a3b9f9551b0417247d5c" id="8e644770-9bee-40ab-8a9b-359bf441e5d5" chipset="acmgt3" name="Ext505" />
+    <guid config_hash="15002033448639403d367bc03bd60606" mdapi_config_hash="ef234f0bbbfa6e3a5e65a658c07b3ec1" id="2c979a9c-11b5-4d43-bf6b-6f89a4e93dd6" chipset="acmgt3" name="Ext506" />
+    <guid config_hash="e5a73736dac16241f57f9c75ac6b5240" mdapi_config_hash="66ed38ae3f7e0e4920974db8289b9920" id="2f346753-30a5-4c6c-b6bb-5b5605a42cb1" chipset="acmgt3" name="Ext507" />
+    <guid config_hash="9a56a1213c82cea823f98b897c5bcb16" mdapi_config_hash="c2ab74c5335f17c3586295d8572de62e" id="4e07923a-091a-49c7-b823-b63e43c6fa19" chipset="acmgt3" name="Ext508" />
+    <guid config_hash="26d70ca9f31a762f8872425d9526083e" mdapi_config_hash="81e387c21c09d4b1a40764d24367b2e9" id="58350136-7dcd-4d4a-84eb-98cf90542527" chipset="acmgt3" name="Ext509" />
+    <guid config_hash="3e3d73e87043b4cff93ef9d364a879f5" mdapi_config_hash="b5dac651b688c28df2998d381bb3d5e5" id="8048a7fc-5649-47d1-a5d6-eec5249fe69b" chipset="acmgt3" name="Ext510" />
+    <guid config_hash="de12b887e71b3103b6da108e3335c505" mdapi_config_hash="2e6fb82b20511ff84cdc0f9564b5f2e8" id="a9829627-0ebb-4f96-b62c-66c235fb73b5" chipset="acmgt3" name="Ext511" />
+    <guid config_hash="c9e85ee33688ab0c21f38bcd84594b26" mdapi_config_hash="bf22d36e32664c5c660a1ee7c1768a3e" id="602d5bcc-18e2-4679-a253-b8447ae2934c" chipset="acmgt3" name="Ext512" />
+    <guid config_hash="7844b268cd0aa8187c7ad6e83fc65a0f" mdapi_config_hash="23d400ac149a6c315bd690d09df1a2b1" id="019ce184-cf6d-4457-aa35-e2b78d84b46f" chipset="acmgt3" name="Ext513" />
+    <guid config_hash="5df5d49e766b58936fe2df2bb18769a4" mdapi_config_hash="23f1c416c09d7f599c9e4fee3ad12bfa" id="207d4da9-9398-48d6-8853-c1f6c2162ff8" chipset="acmgt3" name="Ext514" />
+    <guid config_hash="9c75930cb38de95eb5e9643faa27a5f9" mdapi_config_hash="8f093f1ddc66c471f33aef986509fecd" id="17dee536-5513-4419-9551-d4f5dc3bae81" chipset="acmgt3" name="Ext515" />
+    <guid config_hash="e9816a1d86d01e0e3c3c667cc2149fab" mdapi_config_hash="b732849d8064a42ea408a8ff78c797cd" id="59061d86-24fc-4b93-baa8-c1955328ef28" chipset="acmgt3" name="Ext516" />
+    <guid config_hash="adc4d3baf26b9d81093a92a9799f2faf" mdapi_config_hash="95d02d08f591294a82c7b8989af16548" id="e626d1fe-ab2c-4728-a8d8-3be5dd359551" chipset="acmgt3" name="Ext517" />
+    <guid config_hash="778c090ed8ac80bad826ef07c33b37d1" mdapi_config_hash="c2c21553c65927ddab24d4068a93022f" id="10a8e59b-ad36-4def-a007-068dd782a72f" chipset="acmgt3" name="Ext518" />
+    <guid config_hash="7f57b28de62ae66a91abffe2f4c50915" mdapi_config_hash="76d15720d1551000e531f8ce0e5d0244" id="e433e93a-0a7c-445c-957d-ed4ee1fc2f80" chipset="acmgt3" name="Ext519" />
+    <guid config_hash="fa0ce1bb783756758851dd60d5a4c57b" mdapi_config_hash="d916a5f533b22fa9e7f737ecbb472e01" id="19225cc5-e529-4943-a909-3cc9f147129c" chipset="acmgt3" name="Ext520" />
+    <guid config_hash="afd005ac38b40acb7525cee020b54f37" mdapi_config_hash="29c1e5b2904ecba477828a963f828b7b" id="b3add843-8502-41a9-a341-95f077741e80" chipset="acmgt3" name="Ext521" />
+    <guid config_hash="d9748ba7a54c0fe5b69fdcaded72793e" mdapi_config_hash="c97ca8bf57de25cd935eb3ee02b8b592" id="24c9f0f5-1452-4c1b-9c37-5d5820da5723" chipset="acmgt3" name="Ext522" />
+    <guid config_hash="d4abf37807dad85dd724f4a2f6d4526e" mdapi_config_hash="11779157de9621ce97046ebeced5a569" id="8a3fad35-8f48-492c-a3c0-71d60b35cc9f" chipset="acmgt3" name="Ext523" />
+    <guid config_hash="468e87c719fbf85fedd546a68e906f38" mdapi_config_hash="72de3fba1f51c4f320255a7b53de255f" id="d78e5523-29e2-486c-bb2c-f850c02f0538" chipset="acmgt3" name="Ext524" />
+    <guid config_hash="6258cf6b2cc2a410ed0b1e4238e31463" mdapi_config_hash="45ddae34eed2c6233b4dfb187b1339b8" id="f9a891a4-ce16-4f09-9d87-4b9462537ac8" chipset="acmgt3" name="Ext525" />
+    <guid config_hash="45a1e9130c9e58640506749fa992fc99" mdapi_config_hash="ba61f231486bed73c6f61d33bc9d7174" id="d09595c4-1c94-406c-94f5-9eaa44a56b63" chipset="acmgt3" name="Ext526" />
+    <guid config_hash="6b9d8d73ef58298c5fd0ec6f2c827e7d" mdapi_config_hash="78baec9820e47f9a7802419c085bf0a9" id="e1bc7df6-3d10-4f45-881c-398cd9e3e037" chipset="acmgt3" name="Ext527" />
+    <guid config_hash="8239a6af95c55bbd059916553a30e214" mdapi_config_hash="58bbb76d59b36c0e6fb31992da22b367" id="2c30a5a4-7ceb-437d-83df-7d9a507060a8" chipset="acmgt3" name="Ext528" />
+    <guid config_hash="30eb0207d749a6e1881b58afe611cee3" mdapi_config_hash="b20f49345e12d7892ed825086f6b56a6" id="a87f8d10-83c9-400c-8e56-286b233c8570" chipset="acmgt3" name="Ext529" />
+    <guid config_hash="533e111102366df0c7ca1387426e6c4a" mdapi_config_hash="24bbfb8a803050590db9fe20e55a78b3" id="08cbf4ca-3da9-45a2-897c-1d817e4dfdc1" chipset="acmgt3" name="Ext530" />
+    <guid config_hash="0e5ff9e86181a16858294ddb47b4717d" mdapi_config_hash="449b73a6262b08a727ef0035063e4479" id="8f8bfee8-6aa3-4862-bf42-c2b988bde49d" chipset="acmgt3" name="Ext531" />
+    <guid config_hash="82d46193910ea1c43bdca41dffad9d87" mdapi_config_hash="18aeb7a09696178d969465541a225102" id="4373c554-04d3-4e15-abf9-c6cbe7dcd17a" chipset="acmgt3" name="Ext532" />
+    <guid config_hash="4759963a91d7864edfc2b61cd5e233fe" mdapi_config_hash="84d63289be43a7dad9d1b283b32b4680" id="b0a3dc10-4fd1-4f5a-92bc-14c53adbd1d9" chipset="acmgt3" name="Ext533" />
+    <guid config_hash="7b7b07252e160bff18c9f970093db4ba" mdapi_config_hash="262fec85c5c81ada50b7bc3a43d95cc5" id="ddd0d949-f0ff-4a4f-a36d-a465d5ff0040" chipset="acmgt3" name="Ext534" />
+    <guid config_hash="c8b5ebc3608eabcb8e383e87a8e59557" mdapi_config_hash="0dac4574ba05ce74d501de948dc0c86d" id="79d88e98-4d0e-4aa7-bbe4-05039857e623" chipset="acmgt3" name="Ext535" />
+    <guid config_hash="0958aac00074548ec1eaa49238b504bb" mdapi_config_hash="17aee33cc999eaf66008c92b7111e4e8" id="8dcba9b0-7604-491f-811d-ff80bf4e2a6f" chipset="acmgt3" name="Ext536" />
+    <guid config_hash="dd2f49b44ce341235b698d0b1951d187" mdapi_config_hash="0e853dd6bf45b8a7b97114ecb650480f" id="c0619436-6cce-4029-95ac-f6761b5afdb1" chipset="acmgt3" name="Ext537" />
+    <guid config_hash="cefd09744a993f6198a6311c97708b85" mdapi_config_hash="54f60443c344b3f1b55af18bfb48cfb8" id="f24aba41-66e9-4a6e-8d78-a7ddd46d3d49" chipset="acmgt3" name="Ext538" />
+    <guid config_hash="5867124cba63f4d67ece27ec7eb26da7" mdapi_config_hash="7042ea618875695df23a3d3aa7547a0b" id="0e79879a-074e-4ea7-b942-92cdc63855cd" chipset="acmgt3" name="Ext539" />
+    <guid config_hash="649d6ca2a62a990a972638f863c12956" mdapi_config_hash="5255183ff9b0320debe98a854a691358" id="b3d690ba-d58e-4cc9-9faf-0b51c5ba958e" chipset="acmgt3" name="Ext540" />
+    <guid config_hash="3cf77aa2a4349a58bdfef5bcfb9eaa7e" mdapi_config_hash="4bf93266f82f7c7ccfaf7ecd8edef94a" id="b0065120-ac7f-42fe-8ccf-88b32df3e4cf" chipset="acmgt3" name="Ext541" />
+    <guid config_hash="cb83036c96bdcbaceefb12c38b222006" mdapi_config_hash="df22793d5e48a257f7f6cd09f754a0d1" id="ebbb6680-4931-4719-ac03-fba60301a688" chipset="acmgt3" name="Ext542" />
+    <guid config_hash="87b0222733ab7612cf79f861b161ba66" mdapi_config_hash="085823b76335140d024dbc42062e4fd9" id="672eba96-2c76-4056-a7fa-4e73a9d25627" chipset="acmgt3" name="Ext543" />
+    <guid config_hash="a86ac5a5644bbe0d5602f594eda3f641" mdapi_config_hash="2067a6158e483a087ac46c2e8585b4d8" id="de044605-80ac-43b0-b512-5f629a51ebec" chipset="acmgt3" name="Ext544" />
+    <guid config_hash="b45cfd7dd6f71aba11e26e00c78b35d4" mdapi_config_hash="be5df28b5f276d3da22341ca492d1b9c" id="720b8b78-896f-4056-88fa-9074d5127dd7" chipset="acmgt3" name="Ext545" />
+    <guid config_hash="927a2f5c1355dea773c3daca4ab8989b" mdapi_config_hash="b116bc01c500f0526bd8fbfb3a63038b" id="ee7f867c-816e-449f-a330-1b9622b33ae6" chipset="acmgt3" name="Ext546" />
+    <guid config_hash="4ffb30753472a32a3e88225513e2f459" mdapi_config_hash="729bea0da573a6700bcd6c6a2e09b3a3" id="671d65a6-32c0-4983-9204-96e9eb7ff8fa" chipset="acmgt3" name="Ext547" />
+    <guid config_hash="b6ace9ec19cc9b5cc88db14ed9ea3aa0" mdapi_config_hash="8f15c0228830390a258cc4463d0c974c" id="e23b228a-c5ac-4f11-8cb0-bf2353dfffde" chipset="acmgt3" name="Ext548" />
+    <guid config_hash="f6b813b01f5ed3f3528a107527bf0c37" mdapi_config_hash="b4089f650b18e577bf6fb0abeedb145d" id="3b521dba-b087-4c2a-bfbe-f043967881b6" chipset="acmgt3" name="Ext549" />
+    <guid config_hash="8c5c9517b020e02ad83fa7ffac202392" mdapi_config_hash="1a7edba98b8446826e44c47d446f52a8" id="b359e8f4-73ed-4da2-9471-2999a6d5473f" chipset="acmgt3" name="Ext550" />
+    <guid config_hash="7bb5b329e31f03f561fa48db3fa14ee5" mdapi_config_hash="2cf6c52a6d372230cb5e32b8f41f2580" id="4bbd08e1-85c4-4de2-8ff6-9e5342bd0267" chipset="acmgt3" name="Ext551" />
+    <guid config_hash="66bef021e1d1e4c0b423180ca99cd611" mdapi_config_hash="c8226b062213e95d51e87148f43c9965" id="a0320c5d-dcd3-49ca-ba92-c19c068a69c8" chipset="acmgt3" name="Ext552" />
+    <guid config_hash="07dfbe584372d7c602be7208d2cc2679" mdapi_config_hash="a907826bf398f9a2320bbdf20ab642fb" id="5a2dc84d-c4a8-4b4e-af0d-b14a04ffb79e" chipset="acmgt3" name="Ext553" />
+    <guid config_hash="cdb5b209631425f594dc568c85045524" mdapi_config_hash="efbb7264b4d4b45dcb1e612711935e8e" id="82287cfa-dddc-4b40-a0ba-feae2d42d826" chipset="acmgt3" name="Ext554" />
+    <guid config_hash="3f24101554c775f0060c7e2a7604f1a4" mdapi_config_hash="f834cdbd8f899ddf45b55ed1cc19340c" id="0a00e087-e302-497d-b832-d04cd048054f" chipset="acmgt3" name="Ext555" />
+    <guid config_hash="ebccea159f9231c7b3968b28ca1f4ade" mdapi_config_hash="bc81b0d9cc155d82ff75965583b6b85f" id="204f7d1a-1063-4e39-9c93-d3fe68a48e93" chipset="acmgt3" name="Ext556" />
+    <guid config_hash="84ee7202ca09544ac060b73e63ed8e53" mdapi_config_hash="c619fdd63623e1e79cbe4b76d2944a50" id="67278ee9-56da-4f70-a405-85e27e8922ec" chipset="acmgt3" name="Ext557" />
+    <guid config_hash="460de45519ecb1b85aa773c32bf4929b" mdapi_config_hash="2c66ce1cdf6af490bff6c44536523ea1" id="b8723d61-732a-4c2f-8765-7e7aba97d348" chipset="acmgt3" name="Ext558" />
+    <guid config_hash="f86f71e58107ec9c6ef9585c48d73d46" mdapi_config_hash="2c82e375a71879ec0f607589b7014084" id="d8091fdb-460b-481e-b36f-4bc4c05c542f" chipset="acmgt3" name="Ext559" />
+    <guid config_hash="10b78551509f0b30978586be872a6eb8" mdapi_config_hash="75f87947bbdb8fd743376b22e00739e3" id="a6c44052-b731-461d-8333-da99eeb8d5de" chipset="acmgt3" name="Ext560" />
+    <guid config_hash="43175e2f125208ccb57577ed9a2436c6" mdapi_config_hash="2fcd22ec1d208f4768fa7d203315b22d" id="f2be6d7c-336b-46dc-8167-fb6e22106fe0" chipset="acmgt3" name="Ext561" />
+    <guid config_hash="ecc4b410e9a79ed87ffe1c5652fd8a45" mdapi_config_hash="342d80d50c60abf12866cb9eee1ecd5c" id="14cbc671-bc91-461f-b36c-11cac04a4368" chipset="acmgt3" name="Ext562" />
+    <guid config_hash="34b0bd7a90e1ec2209b4be846e0ed014" mdapi_config_hash="6cea79eb2457e21483f32c7b04f61f48" id="e2422880-ab04-429a-9c59-83e7d129cc06" chipset="acmgt3" name="Ext563" />
+    <guid config_hash="4b85ca5cf2f4d8a1e98e596db1bb5b2b" mdapi_config_hash="bf04449c1912d5e75274304a5dbc6496" id="665be155-1110-4a9a-9281-7c3005cdb3ae" chipset="acmgt3" name="Ext564" />
+    <guid config_hash="1829c0c6198e3d026d8d1de0e6798d3b" mdapi_config_hash="6f39550252a2257415689a69b225020f" id="65bfe375-5cb3-4677-81fe-be5cde04a66f" chipset="acmgt3" name="Ext565" />
+    <guid config_hash="379ec6ca1d29b64f3832bd505dd1ee35" mdapi_config_hash="ea09bd1484338ab13ebce1e5364ae93f" id="a039f0c8-1641-47d8-8e59-6df51100da38" chipset="acmgt3" name="Ext566" />
+    <guid config_hash="3c56ca4335075d29e7f66098aae00dab" mdapi_config_hash="92650dfb901be26f0fa8b8c6d75919d2" id="87c6ccd6-4f63-4f59-b3bc-54af974bf7c4" chipset="acmgt3" name="Ext567" />
+    <guid config_hash="afbc97754b5193186184b34681cf4c55" mdapi_config_hash="f0405a4e1c76eb0756183bb036b06d77" id="fe0cbe07-d685-40d8-ba09-4a5a8fb45b99" chipset="acmgt3" name="Ext568" />
+    <guid config_hash="e9907d0871b071a8247114e196f85fac" mdapi_config_hash="ecb8b329d75142e88a36f00af45ce953" id="05da3d04-5cf9-4ecf-ac16-65cd2c06269c" chipset="acmgt3" name="Ext569" />
+    <guid config_hash="673ee9625bf988dd5f8c2eb640c5c447" mdapi_config_hash="f8f59121feb85b6673679a5f801671b3" id="e4576efb-543e-4a05-8ce4-9b8cf86d0d65" chipset="acmgt3" name="Ext570" />
+    <guid config_hash="3123f27a6aa078e693d59b62ed080072" mdapi_config_hash="594b8beafeac5125560006d332e5dc5e" id="07dc1b67-a2ad-45a5-941c-a4f294dc5426" chipset="acmgt3" name="Ext571" />
+    <guid config_hash="d4bfdfd307744b7063f2391f0d64ccb6" mdapi_config_hash="6d1008d0babbb2cb7f68fc55ac139566" id="8c1361cf-3383-4b12-9865-d041c3c7ef80" chipset="acmgt3" name="Ext572" />
+    <guid config_hash="1339211d504a5346c7cbccef7129a48f" mdapi_config_hash="154e86cd5a2cf8864269e67ede679875" id="7b800152-513a-4d41-bcc9-f79e175f66c7" chipset="acmgt3" name="Ext573" />
+    <guid config_hash="38bd2e5d862c19552f7fbbf787a12555" mdapi_config_hash="0c1b9cee36cef2911fdc6dcdb136a670" id="089c60d7-18f0-447a-98c9-abaf82aba70b" chipset="acmgt3" name="Ext574" />
+    <guid config_hash="7b97c54cd7359a81b8b949109fb27d8a" mdapi_config_hash="e9133c44b5bb429f372ea4d80a65e73e" id="00101c81-f560-4e07-9ac8-7e276798feda" chipset="acmgt3" name="Ext575" />
+    <guid config_hash="e7df656eaa25ffdd0fd4c07f663e4a0c" mdapi_config_hash="dda8142c89ebfe099d9c8ca8c5613dab" id="bf4a340e-056c-42cc-b1a6-66ace5b2e385" chipset="acmgt3" name="Ext576" />
+    <guid config_hash="2d750c44002abd43091a81e4b2eca406" mdapi_config_hash="9b6e8dbd7c02eedc8ac82210e05e631d" id="67b34202-9016-4aea-a1f0-5978b11c8636" chipset="acmgt3" name="Ext577" />
+    <guid config_hash="a869b6f34414f43babc1b4a13356470c" mdapi_config_hash="a6ca2d47e319a29da6afb6ed0b705d6e" id="fafe97c9-e42c-443c-aa3b-bd18dcc6903c" chipset="acmgt3" name="Ext578" />
+    <guid config_hash="c20a50edee3aa29c5f66f43f58784984" mdapi_config_hash="0150ed0c57cc855c1dfa3ff15ae2800e" id="2d7f6b11-59c1-468a-bcef-131d2cb62a28" chipset="acmgt3" name="Ext579" />
+    <guid config_hash="6853e49df60ca733cbd2d8ada43c3218" mdapi_config_hash="1826a9552a510328dd569d0804299a39" id="dee1277c-09d1-49f7-9035-039420ce8f55" chipset="acmgt3" name="Ext580" />
+    <guid config_hash="237e152ac42968616089415fe5cf3023" mdapi_config_hash="4618aa0d6d5a669541fa04621971b342" id="97733423-59b0-4de6-9909-39bbe2e5f0b7" chipset="acmgt3" name="Ext581" />
+    <guid config_hash="6a51f493c0ada543d70f81ad4094a581" mdapi_config_hash="11ea4723bc723e3a2367d8dcd8fd4d46" id="14f60fa0-1209-44d4-8618-c8dd54b8965d" chipset="acmgt3" name="Ext582" />
+    <guid config_hash="4125580bcdab8928a1339fa1f066abe5" mdapi_config_hash="ad4d06ff80ba171784c2430bad7d47cd" id="6297276e-f7c6-4ac7-bc7b-4e1fb4c606a1" chipset="acmgt3" name="Ext583" />
+    <guid config_hash="5cbc17866e8c61e142e0734276fe5103" mdapi_config_hash="9e53f31e504bb84f1b22afa2cfd1dc66" id="812c0cf8-1163-454e-a6ff-36c6b3866b1f" chipset="acmgt3" name="Ext584" />
+    <guid config_hash="56e2ba8aa4a506805e9d8c0bcedf1d95" mdapi_config_hash="77c4c6a2b7c17f1b195ff881b9305d59" id="2921d39b-5490-416a-bc1f-61d1782819fc" chipset="acmgt3" name="Ext585" />
+    <guid config_hash="c79e4b150d537e8886fc45dcb5ef3136" mdapi_config_hash="9ef7973a4f81d11a5242277b1aeb1248" id="340dd552-3f57-4f94-b8c5-2d7d96c4bbdf" chipset="acmgt3" name="Ext586" />
+    <guid config_hash="ad344b9ee642449c865f5b748d589d13" mdapi_config_hash="d49ff25aa4ff793e622f0b478473fcb7" id="09a795b1-15ba-4f83-a662-18804b4eda96" chipset="acmgt3" name="Ext587" />
+    <guid config_hash="3763146387261a509535e2355b331860" mdapi_config_hash="13ebf452b2784eecf96ee483cbb7cd01" id="91a7be1d-3a4d-488f-999a-fd2b9564714e" chipset="acmgt3" name="Ext588" />
+    <guid config_hash="9c56d7e23c3075878f4f34884390686d" mdapi_config_hash="79679770d23d92c4f17c15a1b05be0ae" id="702f4f48-255f-4a82-94b9-2149053fa6c5" chipset="acmgt3" name="Ext589" />
+    <guid config_hash="97f3606c60950862ab25fac01bee36be" mdapi_config_hash="d715581225f9661aac251e3c3fd2b18a" id="21788d5b-810d-4982-b915-0048962b86e7" chipset="acmgt3" name="Ext590" />
+    <guid config_hash="6196109f4b0a65eba53a7b4c7cd5d749" mdapi_config_hash="f917ce18040b5d63299e6ff310fde306" id="d3416b56-6640-4b2a-b81d-295287c90a22" chipset="acmgt3" name="Ext591" />
+    <guid config_hash="6722721efa9f8aea249d2a31a27caf88" mdapi_config_hash="331ffe529143349ad6cdfa40215bfcee" id="0d6485c1-7bfb-4f49-98a4-6247c0597e31" chipset="acmgt3" name="Ext592" />
+    <guid config_hash="b57499b3aa569f3f5c18b7019757fd6e" mdapi_config_hash="19d56c4ef129df83d5ba0dbcf57b23c4" id="7b4adfcb-b4fe-4e2b-803c-b9cfa2b2cd17" chipset="acmgt3" name="Ext593" />
+    <guid config_hash="dbe2486f8cb57ab21f27801727fec33c" mdapi_config_hash="25fa6d8f6183c37dcd37723ef984f4b8" id="35040db3-1214-41dc-b856-f26d3b553905" chipset="acmgt3" name="Ext594" />
+    <guid config_hash="b970ca808cc236de83475c509cd1b6dd" mdapi_config_hash="6b478f4a5fa1f4e34867b8a8ce13ea4d" id="3279a141-6b9b-4f1b-a38d-2bd7386c46dc" chipset="acmgt3" name="Ext595" />
+    <guid config_hash="a26590108e6b53635bf73286339f8c62" mdapi_config_hash="82ad0a9852a5687982a7a687054dffbe" id="2a08b276-0fb8-4c89-bbed-57892a7c9542" chipset="acmgt3" name="Ext596" />
+    <guid config_hash="df86cc798f815532bd976066cc30b727" mdapi_config_hash="6ac58ed8ec289e220140544897530da6" id="2628efb2-4b7c-4d88-8a03-620235fd1014" chipset="acmgt3" name="Ext597" />
+    <guid config_hash="7ea62e412dad7f0c611d00b0c6bf55e6" mdapi_config_hash="e3269b6884221d49d689f55cbe58c148" id="b45e047d-88d6-4234-89f1-2b3763e2ec7c" chipset="acmgt3" name="Ext598" />
+    <guid config_hash="5cd92db0ead6e288ba5e623befed651e" mdapi_config_hash="e40f3da2d595de82289467cabc9802ca" id="8f41dd6c-778f-4060-b8ab-13e66e76d4ff" chipset="acmgt3" name="Ext599" />
+    <guid config_hash="70647d348c0eab5d7fee23de6490ee9f" mdapi_config_hash="7a0bb5459048161ece565630d692d3a8" id="c0cc46d1-0475-478d-ad6f-cbef207c1ccb" chipset="acmgt3" name="Ext600" />
+    <guid config_hash="a6c784e23373c9e5e40842a268114ce3" mdapi_config_hash="ebf1ee5b4013d724f0b4b916c4c47baa" id="11c7bdc4-a63a-46cb-a967-33ded50ecd42" chipset="acmgt3" name="Ext601" />
+    <guid config_hash="9d03067b339aafff5d8d1bf7055e986f" mdapi_config_hash="160b14c949cb1e0ffd837bde287d7ff7" id="d7899495-d4d2-4235-8670-dd0ee48cc477" chipset="acmgt3" name="Ext602" />
+    <guid config_hash="2288b7f17d231ecc24080fcd5afcac5a" mdapi_config_hash="1e7544bc799d6fd0c6b0cd0777d66082" id="b58e27fd-3505-4a89-a83f-0767b2f949fd" chipset="acmgt3" name="Ext603" />
+    <guid config_hash="f7991e796d87fcf0882cd89a75a45996" mdapi_config_hash="eedf799a73e13a15e8e656a80eac2137" id="abf8d7f4-395b-4c43-aaf7-e327cb5a3dc6" chipset="acmgt3" name="Ext604" />
+    <guid config_hash="1ea0135993dafa4455ce8e85b4841c7c" mdapi_config_hash="cf2a89b8c8a9996779f6289ba3a7fff0" id="44fa1922-0aca-4a6b-8adc-78e764982068" chipset="acmgt3" name="Ext605" />
+    <guid config_hash="f438f92b8f849a44db6878f4c0e1d7af" mdapi_config_hash="4e4ec1e4d84b86213d57ba4e56085ca4" id="1d5881b6-188f-4dfd-9a06-08df383da728" chipset="acmgt3" name="Ext606" />
+    <guid config_hash="c2f1af833d67bafcb1ffa9faaa3997d5" mdapi_config_hash="1cc61ee1d67c30b20d226d2922ea3637" id="4542bc83-0786-4a99-977c-52a7f0418de1" chipset="acmgt3" name="Ext607" />
+    <guid config_hash="09bcfc2387a019b26d91231c82938c9f" mdapi_config_hash="b532ecd86f4bb7511f0bcf1ec73b9eac" id="8dcf0fe7-8df6-4abc-a15d-26dcdb7634f0" chipset="acmgt3" name="Ext608" />
+    <guid config_hash="c1945d7566567fc307afdc07063b1b0d" mdapi_config_hash="4ecb92fe4bbd6aa0aa6a787291b60997" id="ee320b1d-1350-4b3a-bcbf-9de658bcd8f5" chipset="acmgt3" name="Ext609" />
+    <guid config_hash="09bcfc2387a019b26d91231c82938c9f" mdapi_config_hash="b532ecd86f4bb7511f0bcf1ec73b9eac" id="2530a673-a35d-4646-82c3-a8c3330c1baf" chipset="acmgt3" name="Ext610" />
+    <guid config_hash="3003b7560ce30cb10674b22392a3c555" mdapi_config_hash="3d1ee1e2099f29b75c94415d250e5e4e" id="bb03aede-d6b2-4a50-a851-cdbaaa918df9" chipset="acmgt3" name="Ext611" />
+    <guid config_hash="bc4c065abc5c269d0edc8a0ebeb0aa91" mdapi_config_hash="fa9b8c6c2341ef0e306a76cab99bdcfc" id="c9b9305f-5bbd-49cb-8835-f351efcc48ce" chipset="acmgt3" name="Ext612" />
+    <guid config_hash="2ed6bbabdf97abcb8d68fbfb6a5ff234" mdapi_config_hash="59dc9149aadca0def8aa4ef95ae639af" id="d5d3fda8-e845-4038-a746-538432843c47" chipset="acmgt3" name="Ext613" />
+    <guid config_hash="3229341d64538deef5930ae2836176cf" mdapi_config_hash="7ddb2b9ac927a0e07d917b44d3fe6bc1" id="2183a6ac-d667-4b20-a851-b97ccb5d5b21" chipset="acmgt3" name="Ext614" />
+    <guid config_hash="7b46c58ee82f23db97c3a3ec4fac44c6" mdapi_config_hash="28a489248b893d37df662335553a18c4" id="736b7243-3c5a-41c7-a212-d506ebdf2fe2" chipset="acmgt3" name="Ext615" />
+    <guid config_hash="4d941596e53c95e06886aa6ab2f5e6a5" mdapi_config_hash="6b5b6a41075a0ec478f2814ce34c9543" id="bebf8f78-b673-479f-803c-2e1f403454b3" chipset="acmgt3" name="Ext616" />
+    <guid config_hash="c7680cd98b3bd90a653eaa7eee713421" mdapi_config_hash="b26d97ad6c079ff809303bab5bc220ad" id="3a2d5424-78f7-445d-857f-fbea361be3fb" chipset="acmgt3" name="Ext617" />
+    <guid config_hash="f21a9b7239861712524e10e7ebc1762b" mdapi_config_hash="90b9c76f402fd65e7df988b49ce5fcdf" id="43c7733d-9c5e-48c8-a1a6-4c82e487dab9" chipset="acmgt3" name="Ext618" />
+    <guid config_hash="fd81084fbe4dc799d153e3bf8ccd23ba" mdapi_config_hash="49625deadd3b6312d1cfdb4dd5237465" id="51f2492c-e8fb-4f62-b4a7-3acd0301e2f2" chipset="acmgt3" name="Ext619" />
+    <guid config_hash="52a2a612c77154e754dbf7b11388d74b" mdapi_config_hash="d15bf91a0fb7919b1fa01786c73111da" id="dd87d3c7-2f33-41ba-a19f-36cc5eecf723" chipset="acmgt3" name="Ext620" />
+    <guid config_hash="8e6dcf4d48ab624f6d8298dbef818b23" mdapi_config_hash="c0b76844c93233935ad76d9a9a37a541" id="5762280f-381f-4c9a-99dd-96811abec85d" chipset="acmgt3" name="Ext621" />
+    <guid config_hash="e1d444f909ae85773232e11edc110bdf" mdapi_config_hash="70b58bddc144052948a143e0865fea0b" id="21c9f2d3-9ffa-48a0-8f77-b25bc916b889" chipset="acmgt3" name="Ext622" />
+    <guid config_hash="231dba32fd1f0bcd4322c19b5e6d9d41" mdapi_config_hash="3d769ce5bd2f6e22e13e37617c775064" id="fa526e5f-fd03-4a7c-a49f-fda2ade7305c" chipset="acmgt3" name="Ext623" />
+    <guid config_hash="f066956a2439276cf944bad9f380090f" mdapi_config_hash="5b19d9504651a9fa9aefdf7c62d22a7f" id="4fffc158-263b-4d29-afd1-1aa0dd09f1e3" chipset="acmgt3" name="Ext624" />
+    <guid config_hash="fc17f86011bec712261cd0449d9ca0dd" mdapi_config_hash="cf4d8aa5d4ca4c780b8dd3dfe094acfa" id="84cc7f2d-8833-4508-b075-965fc4d88ee2" chipset="acmgt3" name="Ext625" />
+    <guid config_hash="8c3f7c9cf3c782e974b3f6f3c72f3d43" mdapi_config_hash="2d47d315ba1dfd8605d78e51e728ffe7" id="0a6dbfd2-9294-4638-98ca-730eb9906e7f" chipset="acmgt3" name="Ext626" />
+    <guid config_hash="c659308cd8519687b61baa8a5df6f532" mdapi_config_hash="2d97804c9a0386617fd4b7d841fc9ce6" id="59af2a26-e755-437d-9bf0-8ce5ac59c5e3" chipset="acmgt3" name="Ext627" />
+    <guid config_hash="901efdfdbc97a68f8a7e1762bba2a1e2" mdapi_config_hash="db7d226d3605daf611bb6f0a40d055d8" id="07ea29bd-3559-458b-8aa8-75bbdde0f619" chipset="acmgt3" name="Ext628" />
+    <guid config_hash="db89d9bb907771f0176aa55dac8c8c56" mdapi_config_hash="30ab21772865bc936cd1e848478bcd07" id="c0a396af-30c1-458b-ae7f-e39cd59e6e99" chipset="acmgt3" name="Ext629" />
+    <guid config_hash="cb246377c78269d2ce201390b17f92af" mdapi_config_hash="bd5ab6a2470fcf1085e634539ceaed35" id="fdbc72a7-fd96-4120-b5fb-f7340e4ef6aa" chipset="acmgt3" name="Ext630" />
+    <guid config_hash="25d8feadca20f97673a8657f73895993" mdapi_config_hash="57df98202c7605220f5f8ddb8f79a9c0" id="8a190eb3-4bf6-456f-ba97-6ad3dd9f9041" chipset="acmgt3" name="Ext631" />
+    <guid config_hash="c94ac66bb1bd3bfd11b8fb818bcceab6" mdapi_config_hash="2635f3585d92b5e3d05cd1e9a7c95f76" id="690cf267-acc5-4f2a-a9d9-e424d39d0085" chipset="acmgt3" name="Ext632" />
+    <guid config_hash="768f678bcc3bddf8a84861187dc35346" mdapi_config_hash="e2e02f35accb3ce5c1fb0291cc202071" id="7dfd1792-f14e-47cb-b3c3-969deb04e830" chipset="acmgt3" name="Ext633" />
+    <guid config_hash="bdfbe424347697b66dad2f76a41bf4c4" mdapi_config_hash="1ffdbc88b73ff4eeeeec0baacb4f0007" id="255faebf-ef8b-4fa1-9d3c-d82b46a8a9f1" chipset="acmgt3" name="Ext634" />
+    <guid config_hash="1d01a9be6ea7a4f74d5ba3eb862949fe" mdapi_config_hash="1b70fdc20706dc235c0d5c29440108e8" id="53827355-f253-40a1-b02d-b07b591aa394" chipset="acmgt3" name="Ext635" />
+    <guid config_hash="f9b7b8d9a80506fdd1257871246e983e" mdapi_config_hash="c918d67180b94892139d79540e71abe6" id="1902b796-e21e-40b4-8132-0fd73e341735" chipset="acmgt3" name="Ext636" />
+    <guid config_hash="12c4f16efd01006503c2b60955aafda0" mdapi_config_hash="d5777f52e918f25bee3f10f4c8c78634" id="7ec62259-93dc-464b-99ea-629737cf9861" chipset="acmgt3" name="Ext637" />
+    <guid config_hash="5948dceb9176a58c3c8c7eef5230e144" mdapi_config_hash="2b32fee0630a4d64077d46a0843ccaab" id="32b54940-c66d-4636-b61a-a8f6b46d32d0" chipset="acmgt3" name="Ext638" />
+    <guid config_hash="86a34f480bfb0ffb4c5536827cfd579e" mdapi_config_hash="b7c4bd0e8504b20b0d37084a5c30a771" id="10e959bd-ef25-44ff-9d2b-b8c773e6087c" chipset="acmgt3" name="Ext639" />
+    <guid config_hash="758c0175ce5d1b5e134296ef2894e2fd" mdapi_config_hash="83fa429ba2115674e54969d7027827fb" id="371d7a11-3eef-4da8-88e5-fd25d85d10d6" chipset="acmgt3" name="Ext640" />
+    <guid config_hash="6516b26e1400ffcb9295e35a3c44b481" mdapi_config_hash="6e2a8a79a3d14c8a33d479cbd95c7e9e" id="a5be5bd5-b23d-48bb-b56b-ae9fd49acca4" chipset="acmgt3" name="Ext641" />
+    <guid config_hash="168ec4b181871c998c2203a097974860" mdapi_config_hash="e6f1c18a016b7ee9bcd810c1c5db5929" id="dd277896-494e-4db9-8da4-9efb89846b6b" chipset="acmgt3" name="Ext642" />
+    <guid config_hash="ade17d5442b2631b6ec410c1f00073a7" mdapi_config_hash="b1ec2c2e7b9e80e7dd67c1d3f5e5dbe1" id="4a13f620-9b8f-41e8-9189-0712948bc7ed" chipset="acmgt3" name="Ext643" />
+    <guid config_hash="49cabc26ac34834ac85e515a7fe3f385" mdapi_config_hash="6d979b7dbaffaf9126d431c9bad29cc5" id="c6b5a675-c1a9-4e9c-bf68-af0b1ad8dc08" chipset="acmgt3" name="Ext644" />
+    <guid config_hash="f9b8ff73a811dc4cf582a05dcbacb012" mdapi_config_hash="a8c850e993d7f0106c82ae87f7e7c4ce" id="81a0ff81-482c-4fea-93c8-f2ad4cc6a42e" chipset="acmgt3" name="Ext645" />
+    <guid config_hash="31d812ce4f90197dc6c1d9260cd9f300" mdapi_config_hash="7088d9c60b79a4aea67cd3d133d1a1e2" id="51ef51ba-0cec-4c46-8cf9-65b6b366a20f" chipset="acmgt3" name="Ext646" />
+    <guid config_hash="3be670768dfa98be4c6912c08579f6a6" mdapi_config_hash="24a0f7031e0d41ce2269e8e8cfe9dc93" id="80b23cbe-5ff0-49aa-9591-7f63c958e510" chipset="acmgt3" name="Ext647" />
+    <guid config_hash="32038de6c5cc71bf3aece769b0625d3a" mdapi_config_hash="f9a207ab9f064769db453b017f9b9108" id="c8baa82f-efca-44de-9464-75f7653c1ecd" chipset="acmgt3" name="Ext648" />
+    <guid config_hash="e9e863f7ee56e4b2a60cdc980595d8af" mdapi_config_hash="e1e725da4867c51803637c5fbf69d69f" id="417cd1e9-b680-4389-99a0-d11bd6076465" chipset="acmgt3" name="Ext649" />
+    <guid config_hash="714559764db9c60e07cba8dfe8b4da13" mdapi_config_hash="8409df8827dcd9515e7a1847f67c9636" id="5513c6b2-2b34-43f9-aa42-66ec99231838" chipset="acmgt3" name="Ext650" />
+    <guid config_hash="0308a6d42b51f31e1f68cf76de40c438" mdapi_config_hash="47f2f8e2e7fc7e6378e6924100a834da" id="e219ac69-3ea7-4ef4-90fc-43da93940404" chipset="acmgt3" name="Ext651" />
+    <guid config_hash="1c7a8e20761b355e34a3a32929799c38" mdapi_config_hash="6ea8582cad360de6797a6074912a2778" id="bd0f78e6-755f-495f-a530-2181a36e202b" chipset="acmgt3" name="Ext652" />
+    <guid config_hash="cc1290302b09bce262806e3aeaba0266" mdapi_config_hash="2249678e56761ab7da6f0b8c4a3e679b" id="ee687e64-5d49-4f00-8487-7f29ce84112b" chipset="acmgt3" name="Ext653" />
+    <guid config_hash="82b093c421bc12f2d31b36b82e144f8f" mdapi_config_hash="89a43013fe43b451ad0a60851635fc62" id="7fa4182a-6679-43a8-863d-20bf117c2f6e" chipset="acmgt3" name="Ext654" />
+    <guid config_hash="177b0945da341d86db75e7f27c414aa4" mdapi_config_hash="5173d8dc7f828b4d5ac1362e3a16713e" id="4776e4a6-e322-4a93-8492-f9e5c7ae25a9" chipset="acmgt3" name="Ext655" />
+    <guid config_hash="073ac924ce2112c529eff114e7343245" mdapi_config_hash="a8a0edb908d36a9c5e3ef41d8ac256a0" id="7e54fcd8-7d05-4a6e-a564-77da9ee3d948" chipset="acmgt3" name="Ext656" />
+    <guid config_hash="5800cbafb65e8677e930f6c50ba78a11" mdapi_config_hash="b631fcc71a8d51f56a2af24f707ca2a4" id="616a2406-05c9-412d-a3aa-a524acd66aa0" chipset="acmgt3" name="Ext657" />
+    <guid config_hash="43bebab0dcec6e64cc677f718b084709" mdapi_config_hash="833387cab16683c0a5fdaf8833db67ea" id="0902fe2b-216e-4634-ae60-349382ded3ce" chipset="acmgt3" name="Ext658" />
+    <guid config_hash="e4370e0ef2d8fbc5ecc9f578ae969104" mdapi_config_hash="0a8fab693d0eb2171d2b74c9acfa668e" id="3ed655a3-105d-438b-912a-438fb8953965" chipset="acmgt3" name="Ext659" />
+    <guid config_hash="18796680287189de473339f971891a24" mdapi_config_hash="e7e15a702997e809ee2018b17eea225d" id="609bdc17-fa1d-4dc1-b1f9-04d959d9502d" chipset="acmgt3" name="Ext660" />
+    <guid config_hash="f40003f7282a91e285d14c87ea63b3a3" mdapi_config_hash="718aeb19aad96934b19a8391d3230ebf" id="8670adf5-1083-4e44-9b34-1ad5f7187e4b" chipset="acmgt3" name="Ext661" />
+    <guid config_hash="8baf05398ef6b5a8de630b9f23c1dbaa" mdapi_config_hash="45d75eb5fdee0219d32724cee2c617d4" id="6295fd5c-e29f-4522-a7bf-83be283e0bbb" chipset="acmgt3" name="Ext662" />
+    <guid config_hash="152c742f185bd926ce65fa134a6b2fd4" mdapi_config_hash="f0d7447e15ecd998cd1f2af471c94486" id="a50eb103-f419-4fdc-bdc5-cabcf1f5f799" chipset="acmgt3" name="Ext663" />
+    <guid config_hash="2918a8770a7e69ec28679449138bf6d6" mdapi_config_hash="6f95d55befbd397476ca48d4153800f0" id="8a026261-ef0f-4331-8a07-161022e4d2a4" chipset="acmgt3" name="Ext664" />
+    <guid config_hash="3fe5501160ec84a2b964c9758636a3b4" mdapi_config_hash="fdc4cf31c16bbf8f172801edf999edd4" id="73c5b3d6-f3f9-45d5-8c88-3c3bc7cb2a7b" chipset="acmgt3" name="Ext665" />
+    <guid config_hash="83ac68986762aae5072017caa9de81da" mdapi_config_hash="68a58a4b6d986fc976bb0b6a74a96c4a" id="28f09392-e361-444e-984a-35bc2cd7319e" chipset="acmgt3" name="Ext666" />
+    <guid config_hash="17cda3afe718c7deee00be3e58e2b2a5" mdapi_config_hash="dedfa7832df192fe4d9d3ba5b651b6ec" id="b5bd5646-7215-4cfb-a393-012e42f86e6b" chipset="acmgt3" name="Ext667" />
+    <guid config_hash="fd67d74137729879007fb28d1a05922f" mdapi_config_hash="6d21fb83dcaf1fdbc45708a48d98d6ff" id="e3b9472f-95b7-49b7-9f95-96d9cfcea28f" chipset="acmgt3" name="Ext668" />
+    <guid config_hash="8337a6c59f2e5237fb8f6a99a3b2ecb3" mdapi_config_hash="62f3514ce6f3f0aaece5faafdc672c0e" id="41aa8222-8353-458f-809f-88b87bb3205a" chipset="acmgt3" name="Ext669" />
+    <guid config_hash="a4dd686fa4c080cc9f3abc3fea11f5c6" mdapi_config_hash="601d4f87467d4370f290325e54b91ac5" id="811a2fd2-eabe-421a-822c-9a3187bae218" chipset="acmgt3" name="Ext670" />
+    <guid config_hash="7d52ff3ebdec59c1bcd368ef562771ba" mdapi_config_hash="bf9711e10fddbf82677dd18fa3c5b523" id="22d6be5d-b649-4df4-87d3-e9e00f221d5a" chipset="acmgt3" name="Ext671" />
+    <guid config_hash="7540dea8de1c43c6fe39989a79ac2f05" mdapi_config_hash="9cc0c3e5060c4580d7f64e28dcc9c1ee" id="0e76590d-a922-4979-9f18-e04bf3619109" chipset="acmgt3" name="Ext672" />
+    <guid config_hash="abd37bbc0b9a946c53413bd9e6a651fe" mdapi_config_hash="52a84f25f0ba17573669b3c88f34dd45" id="1b1b6054-62b3-4811-b3af-7430310b36f7" chipset="acmgt3" name="Ext673" />
+    <guid config_hash="82a7d5bd58bbeb66df3118244abe9257" mdapi_config_hash="8ddcb516bec141f6a202328fbc92c390" id="8485658d-80cd-44e4-b275-e24c659732d4" chipset="acmgt3" name="Ext674" />
+    <guid config_hash="dcbb07ee1d2b4a5e019061a7103c95fa" mdapi_config_hash="b81b96e2d675d5061ad914894b62d1fb" id="90e30b6c-ee34-4fac-8b0c-28afe0397b18" chipset="acmgt3" name="Ext675" />
+    <guid config_hash="3076f88c9aefbc25e6c98c51bbb95651" mdapi_config_hash="879d42a78931c8d58671089b38838225" id="ac420c4f-90eb-42ec-9be9-75aaa09c99ff" chipset="acmgt3" name="Ext676" />
+    <guid config_hash="eab777d033f77da2a2438ce2644a8baa" mdapi_config_hash="74148fff4fe613740e174edd85734d1e" id="cded2a1d-8dce-4b4d-91cf-b51859474310" chipset="acmgt3" name="Ext677" />
+    <guid config_hash="b95bfe9cd9ef0a8ada6cbd05a2c25287" mdapi_config_hash="c1de4412afc725c37ca6ed938047285a" id="c1339b79-a656-4338-ab32-99638d7cea0a" chipset="acmgt3" name="Ext678" />
+    <guid config_hash="0a211e1326c56acb959096d8566476ee" mdapi_config_hash="0e26ef3746caf53b908b7b2f989e9993" id="26d16b76-0337-479c-aa3c-c47a7a10eb23" chipset="acmgt3" name="Ext679" />
+    <guid config_hash="36e16e4acc7c550f328583d8ad035d15" mdapi_config_hash="3a724b1e4dc65a02f2f32bd70c518899" id="99d71df4-d88a-4169-a019-2b2758eea5c8" chipset="acmgt3" name="Ext680" />
+    <guid config_hash="45ff392ca8268667dd82ebaf5d1e9a7f" mdapi_config_hash="90d4e02713afcbe5b3f6ae4d87db5574" id="1f921826-65ba-4ab6-a1d7-48eba4eedd34" chipset="acmgt3" name="Ext681" />
+    <guid config_hash="86536638aaff98683627063504490d2e" mdapi_config_hash="d0d878cebfc7b384f56887f95b43a131" id="69e3df50-90cf-4346-a55d-1eed069efda7" chipset="acmgt3" name="Ext682" />
+    <guid config_hash="6a9d190274478e6431d87a1b2f73bc66" mdapi_config_hash="51c45fe8961682a110b168ad4f19aeae" id="469421c9-dc97-4550-b37f-7c173053b76c" chipset="acmgt3" name="Ext683" />
+    <guid config_hash="41abd8a8e329a487b7d22853789e3e93" mdapi_config_hash="d25c10fcf17fe45eaa8d1f8b3da00367" id="286faab2-da2e-4608-bd2f-39da15cb678c" chipset="acmgt3" name="Ext684" />
+    <guid config_hash="2691669444556c87b4897f20e5491a0d" mdapi_config_hash="1dcb0a3ea11ae9b46f97ca0a1436e2c2" id="49c8e6b6-5244-4b9f-85cf-2547d6d20a79" chipset="acmgt3" name="Ext685" />
+    <guid config_hash="e9f0d3d7fc1afafb3ee93e014c70cb86" mdapi_config_hash="6cf99e9cc91de2ec49e5464791ad034c" id="79941e03-5bdc-46e4-b142-84d418628e99" chipset="acmgt3" name="Ext686" />
+    <guid config_hash="ba926411e1a73d4085a03afd4d3b6c03" mdapi_config_hash="b94c047199098c8b4bd2f8c810690224" id="9e53769d-3d3b-4a27-ab3f-f524dca94ac8" chipset="acmgt3" name="Ext687" />
+    <guid config_hash="98d5a7b785c178d951eb8c82a6f54072" mdapi_config_hash="2de70223befd80f250764a7960108e01" id="30301f6f-0a43-4ba9-a9d5-28aebf205bdf" chipset="acmgt3" name="Ext688" />
+    <guid config_hash="1a34327c1d6dd2fad4222654a46ccd29" mdapi_config_hash="5132ac250300a8309ba25dd6fab21c66" id="1d483608-9139-4903-a3af-e3ed4efc0992" chipset="acmgt3" name="Ext689" />
+    <guid config_hash="374cc49885dc987a5eb781ce893c1a7b" mdapi_config_hash="a13a7809cba931be1db24cfc475d4299" id="a9cf3d9a-04ab-40d7-ab88-0eb97a8ddcca" chipset="acmgt3" name="Ext690" />
+    <guid config_hash="c936d3bcbf9f182e78512380981a2e46" mdapi_config_hash="189b1ee202b31eef41e4db5203d56435" id="191874c3-d6af-4243-9b01-2b0f85bee6e4" chipset="acmgt3" name="Ext691" />
+    <guid config_hash="bdaedf65e1edf4167a5a5c6d974f0609" mdapi_config_hash="d63a6bc8c1952b106bdc0fd912e89626" id="0bcd4036-fa21-4cd9-8f17-dc709ee95db0" chipset="acmgt3" name="Ext692" />
+    <guid config_hash="a2b157cc51c6e0fc9d3d5f9c2ae76349" mdapi_config_hash="57c7ae66b1c05cd2b22f6600cc726430" id="b7b13b5c-1e45-4127-9bc9-fabd732ec407" chipset="acmgt3" name="Ext693" />
+    <guid config_hash="be79f2f30ee22d71f71ec34cb82467c4" mdapi_config_hash="aac1915d8dd0183201ee534bd429814b" id="e1c1db08-2425-4276-9b36-13831ce7774a" chipset="acmgt3" name="Ext694" />
+    <guid config_hash="8c451a750a4458acd86290a093279a37" mdapi_config_hash="f721fba9373c32e4cf0a7705475ad3b7" id="84e85a65-8a55-41ac-90af-3c4fe98910a5" chipset="acmgt3" name="Ext695" />
+    <guid config_hash="87a8d5176553d40c914bfc8fb08b0f1e" mdapi_config_hash="0d6399221978d7d23c7592694f24c05f" id="58ee0229-4bdc-4d5b-beaa-12bdff92eb97" chipset="acmgt3" name="Ext696" />
+    <guid config_hash="63a471ae2cc33866139d9eb307035f84" mdapi_config_hash="d7021fb43ae3f564d95f4035d36775f7" id="76811470-81d5-4807-9f02-f1c61785015f" chipset="acmgt3" name="Ext697" />
+    <guid config_hash="ad93c5157cee05cc12d569b09602a9c1" mdapi_config_hash="8663e1567a82359bebb86543182b6e6a" id="ee3d62c3-7921-453e-9e17-4de797e22de6" chipset="acmgt3" name="Ext698" />
+    <guid config_hash="7866b38ee176de433c35d99b4d85d174" mdapi_config_hash="739e9e7a5ef5959c7a8eacb7a0d330d1" id="c53174bb-fbdc-4c0a-8132-75c1a668b433" chipset="acmgt3" name="Ext699" />
+    <guid config_hash="b20490a6ca7175d5ee4f167d260e2319" mdapi_config_hash="e96e961d3eb7528c5dd0f89fe9555e89" id="642d68f5-312a-44d6-9bae-2bd1e3b3e617" chipset="acmgt3" name="Ext700" />
+    <guid config_hash="ade11cbf0ece406ba02d3237c7b9cc21" mdapi_config_hash="0187a740de990fb6b315efaa043bbf6b" id="5269dd1e-6831-4902-8ca4-592b23c58ef2" chipset="acmgt3" name="Ext701" />
+    <guid config_hash="fcc1fe90a834766a5bea5aa750f14cd5" mdapi_config_hash="53892130ba9a3b855c3afbf2a8c7f875" id="b1b5a799-4514-4027-9223-f51839cab382" chipset="acmgt3" name="Ext702" />
+    <guid config_hash="5f3e269b9f8ae4a9ca3ad71249283561" mdapi_config_hash="f6a2ccaaf22c75b6fbdac0346a804537" id="6357ffd6-fe33-463d-8251-2113c8a90e6b" chipset="acmgt3" name="Ext703" />
+    <guid config_hash="9f23d0102b16ed7c317eb72c9254561d" mdapi_config_hash="f273181fed4eaacaa8b12501175591a7" id="06b581a0-09fb-4a45-a8d8-bd77234eedf5" chipset="acmgt3" name="Ext704" />
+    <guid config_hash="2c3585e780cf400547f67ea261ac1c62" mdapi_config_hash="43f2c8ebaf6637ea56c28b4b984c4b56" id="8c310d10-71e6-461c-92cb-4b33e359c923" chipset="acmgt3" name="Ext705" />
+    <guid config_hash="56e52f531905a8164054e6010e69c0bd" mdapi_config_hash="173211c834f901d21c6ed6b612e5474a" id="01126493-600a-4768-aa3e-283509f04aaa" chipset="acmgt3" name="Ext706" />
+    <guid config_hash="b45eeb313f6a1e3af4c1dced43176f4c" mdapi_config_hash="897a53bad97970470ccf9773e0b690ae" id="516486d7-89fc-4a00-a8ac-8cd23b9fc260" chipset="acmgt3" name="Ext707" />
+    <guid config_hash="5014762d09f88c126f7fc12ff20dd038" mdapi_config_hash="00c5b26b178ee75cc450b36e2adaa059" id="61ba9e98-48b7-4081-8907-a5f9f6a16244" chipset="acmgt3" name="Ext708" />
+    <guid config_hash="d89f6f966b240817ec00c9c80ad67240" mdapi_config_hash="19ded895ad1930acff9c1d09f69ce88e" id="a638ef3a-2575-4dcf-93dc-8d351b712a73" chipset="acmgt3" name="Ext709" />
+    <guid config_hash="2c233d9f883422231389f4821dc881fb" mdapi_config_hash="8cd8c74ad3028d01dd7af2a08d324cf9" id="3b04d5c5-301a-4089-ac8b-71ab483ead8b" chipset="acmgt3" name="Ext710" />
+    <guid config_hash="3d1d573b53d1f20b713ed6a6f3f0bd52" mdapi_config_hash="e091c1aba7fa6a7000290acc63c86369" id="80168138-f069-490d-8e12-81c65d059597" chipset="acmgt3" name="Ext711" />
+    <guid config_hash="fb453b6344eb077cd4285678a692e9c2" mdapi_config_hash="5d89be05bee184e9d0bd8fa766228de0" id="26fb9ee1-06c9-488f-9454-6506a7fd0843" chipset="acmgt3" name="Ext712" />
+    <guid config_hash="fcd6af93ddc59ca999d744a1020070ba" mdapi_config_hash="5ada88dc18a11df2f420f99d9e5b2c0a" id="bf21f1d0-886c-4295-a1ee-dcf1fe02a78b" chipset="acmgt3" name="Ext713" />
+    <guid config_hash="a6870d048d72aa277bc478e15f079f06" mdapi_config_hash="d3a1adbcdb2f5a740d8dd27928d03a05" id="b2bc5d5d-269d-429b-823a-50fbb0515f9c" chipset="acmgt3" name="Ext714" />
+    <guid config_hash="e48ff9ac7461918f6383043572b291b5" mdapi_config_hash="ea5b00a94c794800c5f3345fa46278b2" id="bfa11009-8e53-4adf-9cdd-68469b9831dc" chipset="acmgt3" name="Ext715" />
+    <guid config_hash="8750da91c5ff18908bf85bb9ad4d66cd" mdapi_config_hash="b06041429dbfe063df6db3154c1e09b6" id="cfdbeec4-9757-4bbc-88df-c239c4cfd596" chipset="acmgt3" name="Ext716" />
+    <guid config_hash="b149ca4faf4a816d8668393b3faa1f64" mdapi_config_hash="e5b5ef180a64707a36424434e19e94ad" id="f846da31-bf9f-4bbd-a0ed-c4b4d5847aa0" chipset="acmgt3" name="Ext717" />
+    <guid config_hash="aef5e28718ea106a771e02daf106a709" mdapi_config_hash="c1750495ba078ecc8d35098fe45beb19" id="894bbe73-d0e2-41ae-86e4-26f2b865b04e" chipset="acmgt3" name="Ext718" />
+    <guid config_hash="ca25624f0bcccd4c77ea9384ee279bea" mdapi_config_hash="bb3c6315942c9e238612d54d79817b89" id="59118cde-ff58-4cfc-96f8-bc4339f59ca4" chipset="acmgt3" name="Ext719" />
+    <guid config_hash="6ac4cb9b25a5334e61e34589fe09739f" mdapi_config_hash="193077bd28ffdae077e386e26833506b" id="93b6fbd9-7440-4806-be39-642fa92233b3" chipset="acmgt3" name="Ext720" />
+    <guid config_hash="194e1f887b6beedcff7e0f96bb49b9a3" mdapi_config_hash="4830b0ad76ae18c57883aff6be81a343" id="cede3ea4-0edd-4d1f-9cec-0ef818ed889f" chipset="acmgt3" name="Ext721" />
+    <guid config_hash="18bc0b66362441b7a727a72dbbfaedf6" mdapi_config_hash="d18906a8c3c3a74eed499d63ca521966" id="dce7b950-36f2-44fd-b054-0a0329f3f3f6" chipset="acmgt3" name="Ext722" />
+    <guid config_hash="cc01e62842060ae23c1413fe7b5604a6" mdapi_config_hash="db5a435eefd504cafd566aaa7c9e0684" id="c3af1c92-2c04-4d33-99a6-20c5354f499d" chipset="acmgt3" name="Ext723" />
+    <guid config_hash="056b991f3b3025398e80849256e3fc29" mdapi_config_hash="5584c7343570c547f7daabcbcf3c2373" id="e2e9e72d-9eb9-493e-b8c6-27a4b3864ca0" chipset="acmgt3" name="Ext724" />
+    <guid config_hash="f71ca815729db7c4f5d2fe23b1ff363b" mdapi_config_hash="5fedddc940f045599030ad89d7b697d0" id="0511f93b-3bf2-48f7-afc4-9c4783a17d65" chipset="acmgt3" name="Ext725" />
+    <guid config_hash="226d26de9a6854da12ba33b6588a12a7" mdapi_config_hash="97dfb713ee72adb3a0d979554817380d" id="eca95fe1-d70f-46a0-b997-858695f87ed2" chipset="acmgt3" name="Ext726" />
+    <guid config_hash="2423328be437e44ba67eab0db5c3bbae" mdapi_config_hash="a066487d18ae4437159ade81b75f1333" id="d8a1a2c8-b8bf-40bd-b752-7413f227b6b9" chipset="acmgt3" name="Ext727" />
+    <guid config_hash="53c33fb094c14c1d945d754b3a51236b" mdapi_config_hash="db1bf625eea0b699b5ad9a296a5501fb" id="8b036b26-9616-4a12-84f7-5a59e54dbd95" chipset="acmgt3" name="Ext728" />
+    <guid config_hash="c1cb8bcd21d2e2bed6d75c82a62f14b6" mdapi_config_hash="151163c4af5bec4fb8ef101302062342" id="627a650a-b847-4f3b-8e74-5cbe7eded518" chipset="acmgt3" name="Ext729" />
+    <guid config_hash="9b5fa9360cd7a03808e583ca3efe1fc5" mdapi_config_hash="cee8ec351ce1210c0c4194aae240c4c9" id="44ca23da-3f5a-4b64-8dd3-5dc743588b63" chipset="acmgt3" name="Ext730" />
+    <guid config_hash="cdd39b8b990f9e29c3bc8d80f9a3572b" mdapi_config_hash="de5deeee1c16a9ddf8f70cbb3cce54eb" id="c1327b57-650a-46c6-a7a1-50567953b8ee" chipset="acmgt3" name="Ext731" />
+    <guid config_hash="b5467e098b50722f8a6884c30a340088" mdapi_config_hash="c218d96012cf5eea11a01729c7766f0a" id="8029fecc-6327-44c7-8d6a-e793609f2c4d" chipset="acmgt3" name="Ext732" />
+    <guid config_hash="fd8cbbda9ba5ed6cda2944a465fc34c2" mdapi_config_hash="d1e243a94d6136548c242de34fda800b" id="6743fa5a-d2cc-4434-84bb-98ff69765e2e" chipset="acmgt3" name="Ext733" />
+    <guid config_hash="3e8370f764415593452f65ef5702a604" mdapi_config_hash="9e042fa5fc43b50f7670a236b1f10cc0" id="993468bb-355c-44f1-90e2-1aeeff3d2b4e" chipset="acmgt3" name="Ext734" />
+    <guid config_hash="93dee25ddaba2d0af3ec9640f34b15d2" mdapi_config_hash="e2f15dac5d25809320db38226ff3923e" id="3fffa1b9-22e8-49f0-9f52-6f393fe33471" chipset="acmgt3" name="Ext735" />
+    <guid config_hash="881cc9c85df25174aa520a8c6f6bd181" mdapi_config_hash="b5b5a1f8b393900074b0acaad807158b" id="3a9252e0-711a-4c7d-9103-d67ccba0a84c" chipset="acmgt3" name="Ext736" />
+    <guid config_hash="8bb701753d27402a4aea26f6b6b73f53" mdapi_config_hash="ec2b6cc08f09422ca70882ca41d5d445" id="7a784b26-20ec-45bd-9e65-cb91454a0529" chipset="acmgt3" name="Ext737" />
+    <guid config_hash="dd4487aec34ea900e2082b240dd7b1dd" mdapi_config_hash="6a0baf87c2ac36b4b1c444248a88469f" id="2012b848-bd30-4c0e-8c20-b76c9be7411d" chipset="acmgt3" name="Ext738" />
+    <guid config_hash="1a407ba2cd935455bcb712f432dac288" mdapi_config_hash="d4eedec31e09d1005db71c6fc964cba5" id="c66cdb98-dfcf-4493-97e9-4c779e039ece" chipset="acmgt3" name="Ext739" />
+    <guid config_hash="f1e1e3dc6a0223a509a11d2ceefc7905" mdapi_config_hash="3f20084a3a9ff94f2452a223f0cb00f8" id="d38b4fa2-475c-44de-afc2-53bed3d44761" chipset="acmgt3" name="Ext740" />
+    <guid config_hash="763e92cc40b622e35feb40332ca21ccf" mdapi_config_hash="20308f642159ecff5b7d5c7bc3fc0d29" id="b11e2740-3d43-422c-8593-3739b66cdee5" chipset="acmgt3" name="Ext741" />
+    <guid config_hash="502493b032734cee788cecf9dc9a3bbb" mdapi_config_hash="58b57a8509ef1caec5fdecb2e823e0e7" id="3530dd8c-3c07-4b30-bb10-94efd308113e" chipset="acmgt3" name="Ext742" />
+    <guid config_hash="dc5e59004db65b8498af5c9297c29a8a" mdapi_config_hash="b51023475648557fc31bdc79e9cba6a8" id="fec76475-ec48-42b1-b794-8fca6c8d3f68" chipset="acmgt3" name="Ext743" />
+    <guid config_hash="bc615ca0c3b0f5e802d7b3e9b47c3ec0" mdapi_config_hash="5dca0c3e23f6f5eedc98719789034ea9" id="8b8d31ad-8dd7-492a-9339-3f735afeb52d" chipset="acmgt3" name="Ext744" />
+    <guid config_hash="54e92b8a35339e0d3f74605d445e7887" mdapi_config_hash="596e66256cfdadf59cf0becd9887e359" id="4273606f-d838-4bcd-a192-87ec29f55cb2" chipset="acmgt3" name="Ext745" />
+    <guid config_hash="c83c940204d11e91b81845009279d282" mdapi_config_hash="f2c48de85f1725ae08a14386ba855a3a" id="e0518ba4-65e7-4855-83dd-81d0a77f939b" chipset="acmgt3" name="Ext746" />
+    <guid config_hash="64646fd0788a30256a28a0a0cfff8505" mdapi_config_hash="a62a77df08b5698a13aef99ce70c04eb" id="bde1c4bb-6237-4038-becf-218c1c17d872" chipset="acmgt3" name="Ext747" />
+    <guid config_hash="603782c1e23fa1bd68149bb0a4d5a20a" mdapi_config_hash="5e4032e78ea70489eb7d19e0368a7297" id="331329d1-35f6-421d-9bdb-528bb0e20659" chipset="acmgt3" name="Ext748" />
+    <guid config_hash="82b3b82c5d4a78e16573727fb2469bca" mdapi_config_hash="9e6e747c16087552824d1e35c3689cfa" id="c4cb0cd8-a65d-44f7-b06d-f94cd7c99eb7" chipset="acmgt3" name="Ext749" />
+    <guid config_hash="f318204d62bc6ee0cc3370c5e963fc15" mdapi_config_hash="678dd4423a37af28217224954e26b2f7" id="2d70235d-0d5a-4aa5-8af5-e027f2a3eb6b" chipset="acmgt3" name="Ext750" />
+    <guid config_hash="38d0d5bb98e72586f1f601ba01fa0a00" mdapi_config_hash="3d966a35d96b3fc0230e6256a485b1cd" id="5673e7be-0e2f-4ef4-882d-7c8c10026603" chipset="acmgt3" name="Ext751" />
+    <guid config_hash="5d558d4c2229d20e152dc7ee71a58f56" mdapi_config_hash="8a304599ab64a70722b0d214156ec66b" id="c95a1628-c0a7-4cd5-98ca-212a6eeb480d" chipset="acmgt3" name="Ext752" />
+    <guid config_hash="4c1d4b694da270532073ab30edba2605" mdapi_config_hash="71c053993ea576b0438f2d02026f5ace" id="35169b45-6470-430f-b450-25c6edbc722c" chipset="acmgt3" name="Ext753" />
+    <guid config_hash="8ac2f4a286cc5bf200e13c23630487e2" mdapi_config_hash="ba7449d6113849bcad688ea9e2f674e1" id="654777a6-f5d0-4360-804e-8add6b37700a" chipset="acmgt3" name="Ext754" />
+    <guid config_hash="ab0da13bbf17b3bbc6733a6a75b4f6fa" mdapi_config_hash="499ce6846ed13d72b9c02a2a79248d73" id="e5ff2f98-6a0a-4a1e-9c6f-fd7e37a4acfd" chipset="acmgt3" name="Ext755" />
+    <guid config_hash="c9f48edb307547d585ed5430704bee1a" mdapi_config_hash="0ca8a6beb972f080ed923a22cc59b23e" id="c5ef0564-f5ee-4c47-81d1-82f9e3c5356e" chipset="acmgt3" name="Ext756" />
+    <guid config_hash="923094647220589dcfd5d3a9a49a74d4" mdapi_config_hash="607836679b54017e67be291c8a45f802" id="4b9def4f-6c45-4b4c-aebb-b258b1432dd2" chipset="acmgt3" name="Ext757" />
+    <guid config_hash="184baee4dcfd6fdcfbfa2f32df9a6c83" mdapi_config_hash="b470edf9e97adfd1085109c66826fdcb" id="4baa43ef-46f0-4563-a23c-23f7a7831777" chipset="acmgt3" name="Ext758" />
+    <guid config_hash="32462de2a55d983a095c140d2609df2f" mdapi_config_hash="d3f4c0c7edd1b89497679fb2cc9bc665" id="a41a6cba-5801-4b99-b6ca-522ab27bcc09" chipset="acmgt3" name="Ext759" />
+    <guid config_hash="ece261b3234c607e40bf5df3d0a835c9" mdapi_config_hash="f97c883cab7584a474510d14490475b8" id="ea5c0abd-cb97-4408-b10c-5b1e5cedfa44" chipset="acmgt3" name="Ext760" />
+    <guid config_hash="d7bafd2fc4ed422cd6e1bd0c30a387d3" mdapi_config_hash="07998d7c5a035d64ea9c0b5c4ee9e149" id="7d0f9d56-a46e-4af8-80c5-60bad08a9465" chipset="acmgt3" name="Ext761" />
+    <guid config_hash="e4fdcad7b2b16074c9c557052fbfafcc" mdapi_config_hash="e9af2a87b5ff750b024914edfad80749" id="1471b5b1-3c7f-45a5-b57b-ff70ede916ca" chipset="acmgt3" name="Ext762" />
+    <guid config_hash="9d6c4586991f71e9271a8a782f8a32ec" mdapi_config_hash="b1c173aedc55f6fb25a970e39c2b486b" id="cafc80ac-ba40-47b1-8e73-aad5b08d65fe" chipset="acmgt3" name="Ext763" />
+    <guid config_hash="dbf45d33e0a6a982d80061b7ec011da6" mdapi_config_hash="fed72ce6ecb76b7102a0f4b24d16540f" id="0af2df6b-39f4-4104-b2d0-c3e4077f81db" chipset="acmgt3" name="Ext764" />
+    <guid config_hash="dc2e60a06fb477ee0bc71e77f6cc22f6" mdapi_config_hash="0097a8c6b5fec037bedb9aed5bf5db7c" id="3e45edea-81f9-4d7b-879b-5b4097bdd786" chipset="acmgt3" name="Ext765" />
+    <guid config_hash="9eff22a15378d1e047a1c4854292b47f" mdapi_config_hash="1f8fff2c51eb31fe64544bf6e0aeeecb" id="eeb406e5-89ec-40f8-98d3-26deaad17507" chipset="acmgt3" name="Ext766" />
+    <guid config_hash="1f60191cb60209e34aa047cbc68884c5" mdapi_config_hash="858503a8aa44727460d600943bd90d08" id="d68aea6c-1a71-4cec-89cf-9904b9b5707d" chipset="acmgt3" name="Ext767" />
+    <guid config_hash="a3fafcc817d85762141836952131a973" mdapi_config_hash="93e16b42a59c946721555b40e230c50a" id="9a25cdbe-0af1-4586-859b-d8f03c5a4c38" chipset="acmgt3" name="Ext768" />
+    <guid config_hash="27712ab3b48b992e28d39cdaafff83f1" mdapi_config_hash="047bb1af678ae9b815b3073e08f41f80" id="d20aa948-8455-42ca-a4df-cc3040f89330" chipset="acmgt3" name="Ext769" />
+    <guid config_hash="db511fe8b97fce70cc5a5a9ca8670a36" mdapi_config_hash="bac60b89fba5795d89db65e8cf69feb9" id="adc02df6-b299-43fa-946e-2de9d979fb39" chipset="acmgt3" name="Ext770" />
+    <guid config_hash="ee262853f22dcabcaeb2d51603ecbced" mdapi_config_hash="a1de7dcf6aa6b002490b65fd603db38f" id="a5d13667-8d40-4986-bf3c-60c7cdeab38f" chipset="acmgt3" name="Ext771" />
+    <guid config_hash="20fb2f9293431b45b5a59a08ed9610c0" mdapi_config_hash="f49508cf6457480d5ef614d0aa602b3c" id="534443d5-42af-4388-8594-e1ff0f90dc3c" chipset="acmgt3" name="Ext772" />
+    <guid config_hash="1d82d309b654ac2e2520847128b46ba6" mdapi_config_hash="74c325931b8d57a2882de6cee7f2efd4" id="ff303167-7860-456a-bb57-3f33a851b1be" chipset="acmgt3" name="Ext773" />
+    <guid config_hash="e11b2b10493faa95f3b8c3b241e1f5a4" mdapi_config_hash="0bd46f5cec0932b12de5977144c78f54" id="7bef3eac-1836-440d-be35-4c9b66eb30d5" chipset="acmgt3" name="Ext774" />
+    <guid config_hash="857a89bf6d9df95fa0bc98ea1439932a" mdapi_config_hash="5e9ffa0a7b4356238145811a34f40128" id="e92a471e-0ed7-49c0-a3c0-fbb3ada6b722" chipset="acmgt3" name="Ext775" />
+    <guid config_hash="fc57da17879b1964b202d1d5a90e787c" mdapi_config_hash="5490f3ba2edface9b6d2e45371d21dbb" id="4a97778b-b9b8-4d0b-925a-82aea8f47efd" chipset="acmgt3" name="Ext776" />
+    <guid config_hash="2534fbb5f1119b77392d80fa08291519" mdapi_config_hash="3b6e035afc007b38b7bb9ba3bc96d27c" id="56abdb73-a247-461c-b516-667a353dba66" chipset="acmgt3" name="Ext777" />
+    <guid config_hash="82bd1d7823a8ad5a9d8dca138df49394" mdapi_config_hash="2d249e24796c048aafa4b40ac49f3698" id="adb95c52-6732-4701-bf82-b19e40610730" chipset="acmgt3" name="Ext778" />
+    <guid config_hash="aaa5fb497ea8ec216d8b421cf8912e38" mdapi_config_hash="7287f116e2f7bdfea4ecc5226264c3c4" id="25f4ce6e-3e46-47c5-9fab-ba1503e64779" chipset="acmgt3" name="Ext779" />
+    <guid config_hash="8c856391f84fa28dd7cf76c4b57e050c" mdapi_config_hash="fb80d0a3625e7730e25e9ffa99b87fb0" id="1c363007-b280-4450-bf7a-89b2f26bfa87" chipset="acmgt3" name="Ext780" />
+    <guid config_hash="db6550d6b1da8ae3707479ec864fb7e6" mdapi_config_hash="d1cac3686a06581b37cd3061cedf3eef" id="16822061-bdb0-4337-97f9-621fa82266f5" chipset="acmgt3" name="Ext781" />
+    <guid config_hash="a3ab175069be1a26e6507dce27125233" mdapi_config_hash="3843101190c3a70e2912a02d55a5b2ab" id="1d540165-56a1-4bac-925e-b5f85c930662" chipset="acmgt3" name="Ext782" />
+    <guid config_hash="69ec6f2068b28bcd38041e1ab6043b72" mdapi_config_hash="dbf0d66d8ca87addd6b77462e428971b" id="ded56000-0bad-417e-a357-3e96ff672775" chipset="acmgt3" name="Ext783" />
+    <guid config_hash="e231b3f689b38b59808ee88b2e0844d0" mdapi_config_hash="9e6e27e34937492c67ae56dada5bda0f" id="32b605b2-1b0d-4637-9570-7cf8fe65fc4b" chipset="acmgt3" name="Ext784" />
+    <guid config_hash="c11bc8951ff889c2c1537bdb4ae880d4" mdapi_config_hash="98cfe96f9a63830a4223457ab2c9c045" id="c75ec9a3-1b38-4b79-84ec-5978b66a2025" chipset="acmgt3" name="Ext785" />
+    <guid config_hash="a2a60f7040abefa9b74112b71ecfef4e" mdapi_config_hash="e386624cd141a6ccdc866497b997de1b" id="91bd53aa-441f-4ac9-98a0-7736d2e0b114" chipset="acmgt3" name="Ext786" />
+    <guid config_hash="3290b5ffa1d1a16275b7e4f9507ec52c" mdapi_config_hash="8b6d6f7d1f5ef333c2ddd25dffe0550f" id="94f9a5a7-03a9-4b7c-9dbd-9c21a8cf812d" chipset="acmgt3" name="Ext787" />
+    <guid config_hash="8144f6d315b04f73b7a56b784ba692b0" mdapi_config_hash="ef9051bd2b53e9a038da3de17a74a5d6" id="4f1c78e4-d2fd-4830-aefc-bfb88842abaf" chipset="acmgt3" name="Ext788" />
+    <guid config_hash="91cc21fb4f93628df5e7c249912d6d4d" mdapi_config_hash="62d488112fbd44c3c7b6019d37892011" id="c5e2f4a2-6f3e-4639-b894-2c45e1a9f0a8" chipset="acmgt3" name="Ext789" />
+    <guid config_hash="e21555486dc76b1636a144589fcdde3b" mdapi_config_hash="7a35e03e5fb54bb4481339335b16e222" id="3b972302-7e1a-4da0-a144-6bd89d47dba6" chipset="acmgt3" name="Ext790" />
+    <guid config_hash="8564471c5380facbcc6a6baebc1d599d" mdapi_config_hash="cf7f1baa127cf819c8d6288265e1cb9b" id="3cc5aaa1-5cb8-49d5-ac8f-51520b860975" chipset="acmgt3" name="Ext791" />
+    <guid config_hash="9f3aea525c0a720235d118530d061fbb" mdapi_config_hash="91bba4e092fe021ee28625da880492d8" id="ccd1df98-fb94-4b65-94d5-25c3a1d39be5" chipset="acmgt3" name="Ext792" />
+    <guid config_hash="aa2cd1b8eeb6a5c7d828374493bb4500" mdapi_config_hash="d013555d047505d00d97e86c1ce44c3a" id="317b6732-6990-422c-960b-1a82ee3b02d2" chipset="acmgt3" name="Ext793" />
+    <guid config_hash="9d7367ef1b9f34df0ffb59f8853c3b8e" mdapi_config_hash="b9181a6d28686fb45e36000610452626" id="d4d3594d-4c78-4a8f-b663-2781c6aef1f7" chipset="acmgt3" name="Ext794" />
+    <guid config_hash="00ea6ae9cf6ff5e0b92fd6185564c641" mdapi_config_hash="3abb54fbd02adabf82f877ba450811a4" id="9d5f4e50-1050-47ea-8876-02e8d2a71e3f" chipset="acmgt3" name="Ext795" />
+    <guid config_hash="cc145329e4357d891ee020b87b2e9ac2" mdapi_config_hash="36eac16f54f442633e307ff70e44d756" id="5b6d809b-26ee-4832-86bf-970d1678489b" chipset="acmgt3" name="Ext796" />
+    <guid config_hash="717848a5d663294b8d2d7b9e50de9f55" mdapi_config_hash="9a92338103bc312722156939f9b31438" id="5da0a308-98ff-4ff0-9481-4971aa263b06" chipset="acmgt3" name="Ext797" />
+    <guid config_hash="ef7e8881d8306ad3fd990919857eabaf" mdapi_config_hash="8de9d23bdc413dc8e079b93fbd1257cf" id="34cac917-42ff-4860-babe-cd0952722cd5" chipset="acmgt3" name="Ext798" />
+    <guid config_hash="57025bb16845f0dca1526ef991118d5f" mdapi_config_hash="46627f360a9e7eecf972c92c6a18ae9b" id="c7dcda7c-388d-4a21-8e24-dad58512c79d" chipset="acmgt3" name="Ext799" />
+    <guid config_hash="f6105b8f75a932f68317b9bdeec4c4a0" mdapi_config_hash="949ead5743e264daad23e8c267a3c88a" id="1528d417-08e6-4356-863b-c860637abf66" chipset="acmgt3" name="Ext800" />
+    <guid config_hash="c8a389e61dd5634f62b29c93537005e2" mdapi_config_hash="b22ecbc1df4ac10d473cc7031e2d2aac" id="b2263f12-501d-42b8-bcda-f63faa1ba105" chipset="acmgt3" name="Ext801" />
+    <guid config_hash="f26b73a49d52c7c8ad9047ec0de1c130" mdapi_config_hash="10dd4c83f5da534652ce68786c7db775" id="5db30c72-78f5-4150-87c8-264d72199699" chipset="acmgt3" name="Ext802" />
+    <guid config_hash="27deedadc1b94e4ca421f9806d834956" mdapi_config_hash="27fca788eb5cfff1721187a556563c57" id="85f9346c-6b1e-4eb1-8ab7-69cdfcee678d" chipset="acmgt3" name="Ext803" />
+    <guid config_hash="7db42fcb21e683b22e163b0e8541b967" mdapi_config_hash="90a7f1933e95259f9e5f8d67ba1066f7" id="ba52d055-bcb2-48ba-8c21-9f41517f81e7" chipset="acmgt3" name="Ext804" />
+    <guid config_hash="d4fd5bb2ef5e2cbb2f348bee12525283" mdapi_config_hash="b8a376722a9e992c6a1f3ccc692906c0" id="4b9170d3-8599-49da-a448-461ab6847b01" chipset="acmgt3" name="Ext805" />
+    <guid config_hash="eb70490e06ed627b1e45ef0c3310cc5d" mdapi_config_hash="b71f467b9ea11b23169b91b0b616161e" id="01f56dac-1c55-4720-8ecf-de58c295648a" chipset="acmgt3" name="Ext806" />
+    <guid config_hash="f18ee686a14c09b8ed096c59752b9813" mdapi_config_hash="08fd6a7268ba567cd750278158d9cb80" id="bba5c945-2c0c-4e5a-8a85-233623f5a46e" chipset="acmgt3" name="Ext807" />
+    <guid config_hash="f5476475eb3aab51276b832f57ab6da9" mdapi_config_hash="75ff38bd21048054c2f18e8a4f1b77b5" id="cbd45de0-0a72-4273-a133-04075a1b6606" chipset="acmgt3" name="Ext808" />
+    <guid config_hash="23db17cc53ee98ee78941b1eba42532a" mdapi_config_hash="e4ccf7335e246ab78e579c8fd97f34e5" id="c5dd3d85-c642-4bab-9b0d-a5cf7516fd9b" chipset="acmgt3" name="Ext809" />
+    <guid config_hash="b8c2fea0aa75ae0bb8b0a7f4ac587cea" mdapi_config_hash="d5767507b6b12d96bc953076f3814c54" id="311d6164-1ed7-416c-b029-e4ce8b6c7bf2" chipset="acmgt3" name="Ext810" />
+    <guid config_hash="61fe0e00600ee30c7244a56f5fe99cb8" mdapi_config_hash="919335b5c5886b31c1bc3a081bc89144" id="a75430da-ab08-4b44-abf4-21de4a98210d" chipset="acmgt3" name="Ext811" />
+    <guid config_hash="ae84a2b7221d033e20d07026dd24dc13" mdapi_config_hash="55c4f81d861cea976be6844baabc0b8b" id="b50ad38b-7555-47d2-a46c-257ba01fa79e" chipset="acmgt3" name="Ext812" />
+    <guid config_hash="550411d374a4bc7f6a21dcc0a83d683c" mdapi_config_hash="84e81842444232432952fef63a16e362" id="04682809-a9ee-4ef2-a4a7-9d65454305df" chipset="acmgt3" name="Ext813" />
+    <guid config_hash="d6c660bee92e4f68940b17d356fb47b4" mdapi_config_hash="b09e23f43434dd67372f338a81dac2d6" id="b8213dc4-d664-4c60-8a93-4eefb9a35c72" chipset="acmgt3" name="Ext814" />
+    <guid config_hash="c93fee24f61441a0683063cbfeeaba85" mdapi_config_hash="1d553631157627cdcf49cdd9ee857552" id="b62ea20f-c05b-4817-81c1-d79e28df757c" chipset="acmgt3" name="Ext815" />
+    <guid config_hash="1e1c8800c28ce235d2161fa864dffb12" mdapi_config_hash="922c3fb67a024eedb5e24086c551b427" id="6670d652-d39b-4d76-98f5-c12c50440f15" chipset="acmgt3" name="Ext816" />
+    <guid config_hash="5153c93fce32b4ef892f8d703ae676b9" mdapi_config_hash="ead93d33823ed157db5c5f2e1b403385" id="5e08ce48-10e9-4321-b042-480df816d469" chipset="acmgt3" name="Ext817" />
+    <guid config_hash="8e2f6a51a702dfa51f0e246b393f9e5d" mdapi_config_hash="3607b2dd2b09670de00ee1788086be6b" id="c422c5d1-a02c-48b4-96df-9b8875974dc3" chipset="acmgt3" name="Ext818" />
+    <guid config_hash="f4b82be7847c70e849c516618bf8e3f0" mdapi_config_hash="b1175784f5c77050834c5bb2baea2712" id="4a75128f-63bb-48d5-a888-ab44203de10a" chipset="acmgt3" name="Ext819" />
+    <guid config_hash="5e952e3bff5f6698cc5ad4339aba1adb" mdapi_config_hash="dd35aac368d241a8c14188fdbfc6375e" id="43ba1de5-4b19-4c2c-b009-0cdf4c84c85f" chipset="acmgt3" name="Ext820" />
+    <guid config_hash="d8323ce918233dd30dfc4a265c0d6abd" mdapi_config_hash="8aa9d980a13e5d66398832d2470c8e06" id="f9881b7a-0445-44f3-a681-38a8a96179d5" chipset="acmgt3" name="Ext821" />
+    <guid config_hash="2d89a2b2f8eb4e531b4485134a9eb734" mdapi_config_hash="60c9d92702e10df379cc14d348b69ecc" id="0ba4ce29-a0aa-4a5e-8a95-005675a4a7d2" chipset="acmgt3" name="Ext822" />
+    <guid config_hash="6a99ef912f27b2c7cfd345b6d1d01612" mdapi_config_hash="5e6578671591eb6eead72642ec1233cc" id="a6008e79-794a-433b-8236-5b0cc13bb166" chipset="acmgt3" name="Ext823" />
+    <guid config_hash="54dd9cf988b339e8a017c8a5c81d8ddf" mdapi_config_hash="b230579ac42953e2d97a3c412895fcbe" id="7293c8c9-c859-4f6d-a9e1-7245a5dd2ad5" chipset="acmgt3" name="Ext824" />
+    <guid config_hash="87b1fcc25c6d48f10925de11fd3466fd" mdapi_config_hash="091e269b8f3e25bcac660e900e607928" id="703e8945-2aba-4163-be6d-46dfc2026a4c" chipset="acmgt3" name="Ext825" />
+    <guid config_hash="9cdf22b741a02a48749c283f5db9ce54" mdapi_config_hash="9ad18de80cf94074abbf29b714a673d9" id="86fe7724-e6d6-4cb8-be2f-e5974a7f09c3" chipset="acmgt3" name="Ext826" />
+    <guid config_hash="2ec621535580f132a62b068796e407eb" mdapi_config_hash="3f7e1123525d3392cd30b34602c5faae" id="7cdb9b53-1702-4343-bbe1-f82a5a7f0e90" chipset="acmgt3" name="Ext827" />
+    <guid config_hash="5ff17b4f9d7fb9998be4e11af1e4fd56" mdapi_config_hash="bba836350330b9d2c3cc77204eefe6f1" id="49835d12-bfcd-41c8-aab2-623fb75e5af1" chipset="acmgt3" name="Ext828" />
+    <guid config_hash="b34363bcddb572cf07ff338925557d01" mdapi_config_hash="982fcae049d57f23aa871aa87b7ed55c" id="bfdd0f51-5128-4a1f-aaa0-02fca7613300" chipset="acmgt3" name="Ext829" />
+    <guid config_hash="f9590dbe8559c9555ae15d60658a6156" mdapi_config_hash="6f087259bc631ed66e7c2d29087de792" id="2b893c3a-2f78-4e0e-aa92-bc332d6d1f0f" chipset="acmgt3" name="Ext830" />
+    <guid config_hash="92a130f20dd80c9dfdbf8dc7a0d7f675" mdapi_config_hash="304de68e7d2b860be7f9096e549e42a4" id="df89b9fa-509e-4980-be3f-a9fc3604e079" chipset="acmgt3" name="Ext831" />
+    <guid config_hash="9f9602a13a0bd404c7102c8aad71d53a" mdapi_config_hash="e784e5b988cbb65ac10a72df25ba446a" id="d6a49316-ce8d-467e-930f-66f89748d7f6" chipset="acmgt3" name="Ext832" />
+    <guid config_hash="00fab21d6b1b4d61a022056e01830f09" mdapi_config_hash="01237803e767bc3f807f7e818829ea0a" id="82b22389-9176-4be3-8cf7-ebeb1db973fc" chipset="acmgt3" name="Ext833" />
+    <guid config_hash="ca1559c710cd715cf16efa84aeb6493c" mdapi_config_hash="db41ecab2cb48a8355ddbe4088ceeaf5" id="c1e9d6fe-8cd9-4c83-b9ec-5669c16e51ca" chipset="acmgt3" name="Ext834" />
+    <guid config_hash="a0412809ef3463d8be08bbc97b1af897" mdapi_config_hash="ef55134769f14a4d1a48f3fbf8f105d2" id="ef2c993e-ea71-4d00-81eb-a4192d00cd5d" chipset="acmgt3" name="Ext835" />
+    <guid config_hash="535ba3a59c6aa469eb365f413d3f1a5e" mdapi_config_hash="cb1dd1539d9ffa983528aa718a7aa1be" id="e4a9361e-d864-4368-8129-9171a70c6ab3" chipset="acmgt3" name="Ext836" />
+    <guid config_hash="0eec03130f78ce272fcdf0cd04bca7af" mdapi_config_hash="7923f35d548710905ae6296b597427d1" id="5157b0b6-6842-4d74-afc5-e9cfc011b13f" chipset="acmgt3" name="Ext837" />
+    <guid config_hash="27f9a579de84bc1d30c19566105b6b21" mdapi_config_hash="c170b43782b9d5fc277736a46dee4169" id="317eb78e-5fd5-4c28-8d28-c0b9e7ec3f4c" chipset="acmgt3" name="Ext838" />
+    <guid config_hash="8c014d0647878e830f880ce6142b8792" mdapi_config_hash="2cf93dbce544bfd7e8d4fc2522a00309" id="e92851dc-f040-4f09-8241-78bc01faeb85" chipset="acmgt3" name="Ext839" />
+    <guid config_hash="90dda63b3a1ec91b984f6848213c36f7" mdapi_config_hash="782bf987f2d295d3e13d7d4051d4c88d" id="79e2fa72-7478-4392-bdf7-9b5f13d97dde" chipset="acmgt3" name="Ext840" />
+    <guid config_hash="588868721e3e08a85bda19eb74b0e5b2" mdapi_config_hash="b69fc5cd1a94e66c519dcc428e17d75a" id="8f581530-9676-4f41-9eab-c14b99208ff1" chipset="acmgt3" name="Ext841" />
+    <guid config_hash="87d144152e6087a780c24efd71544593" mdapi_config_hash="4127d881441e52c8c49e5d8396d3933e" id="48da56da-a122-4bde-8004-d5db9d488322" chipset="acmgt3" name="Ext842" />
+    <guid config_hash="f01f0544da6db2435d3387907433319c" mdapi_config_hash="9380dd8ad9e62cb53824f5470c0b292a" id="b101af1b-2ecb-4f87-b85f-d3fb1e7d081f" chipset="acmgt3" name="Ext843" />
+    <guid config_hash="dae8c241ba42e78a435285a54dfa391d" mdapi_config_hash="e3fb38155071932de602599d9a9b588e" id="2cbe2a2f-61bf-4dde-9fa6-89fbe658cbe8" chipset="acmgt3" name="Ext844" />
+    <guid config_hash="b57b9f9ea2c7c6951ac74a4be4e3ec74" mdapi_config_hash="6abb61f2043701cdfc9e7ca9340576fa" id="57ac6b30-2145-47c9-a05d-51cde53af72d" chipset="acmgt3" name="Ext845" />
+    <guid config_hash="f897202b401e5542ec1f4ffc027b566a" mdapi_config_hash="5393335463fed68a3cd7cf4e104120f9" id="4477cd4a-90b5-4ae4-b910-4ffe26ce08eb" chipset="acmgt3" name="Ext846" />
+    <guid config_hash="5c8f6fb36a3f715fac0976185ca56542" mdapi_config_hash="aecac6296e975761ac5718b988e7e634" id="9c491ff6-caca-48c7-8f9a-9e2fcdff732d" chipset="acmgt3" name="Ext847" />
+    <guid config_hash="c29b53d92ce1b63e13fe560771fbc122" mdapi_config_hash="f8c325659343d85f4ce0dab2b4a0d8a2" id="5d9982c1-e290-475d-8a42-460a08e42b71" chipset="acmgt3" name="Ext848" />
+    <guid config_hash="1813f3a23c5725d33005622255c5e930" mdapi_config_hash="0f6e50a8f51f8dae5ee7627cf1b554a1" id="86619a01-e374-4120-91c3-77009f623ebf" chipset="acmgt3" name="Ext849" />
+    <guid config_hash="2cb9eba90e3b528af2caad664de05305" mdapi_config_hash="9e13384ebb341cdff1b32a8f26c79331" id="0bd94d4e-4ad7-4fb3-bc31-5a602fb2712a" chipset="acmgt3" name="Ext850" />
+    <guid config_hash="381c547d83b6fb65b46475fcd04114de" mdapi_config_hash="1820824f770ff1474fc1df62f15459fa" id="ce2ff90c-1370-44ef-8cf4-00af4b13faa5" chipset="acmgt3" name="Ext851" />
+    <guid config_hash="54a36a79505c6753d37967aad591847a" mdapi_config_hash="467d4b32d210b3a2bfabac83837748f0" id="33a19e51-f39f-4933-8aa7-a475e82a38e0" chipset="acmgt3" name="Ext852" />
+    <guid config_hash="efd482c8bbbc06e9809449446edb1fb2" mdapi_config_hash="50b288d07eb35e3653710b26aecf28fc" id="cb81b489-bf38-423d-b4c6-b43360549140" chipset="acmgt3" name="Ext853" />
+    <guid config_hash="dc70bb290fd6c784b698da6c6473998c" mdapi_config_hash="daf481d8a58a9b1e3326792368ceaa62" id="5ed494ff-0fec-4980-960d-897413ec11b9" chipset="acmgt3" name="Ext854" />
+    <guid config_hash="6f339c165f1c45c723eb972836db4083" mdapi_config_hash="f14d394e0680b78502e75a742f1f5b7e" id="bc52aa18-e2ae-4254-ac8a-15c8b90f4e5b" chipset="acmgt3" name="Ext855" />
+    <guid config_hash="9a182cdbd68a3b7bd746e10dad651078" mdapi_config_hash="3f578e016f470c4b570a0ff80a105d77" id="fe9d46b1-9ef7-4381-bea4-cd258cd0476f" chipset="acmgt3" name="Ext856" />
+    <guid config_hash="1d6dee406507cfcc3643230002173451" mdapi_config_hash="b7fe5f3ec225972df898db6494471b09" id="eac16312-bd15-4486-aa9a-7430b13ec682" chipset="acmgt3" name="Ext857" />
+    <guid config_hash="3bba076a2c27d0a9b4103f052a1aaa66" mdapi_config_hash="2bbbf97b91d656d7dd418b268fe33729" id="6ace67c0-1c29-46ea-ae7a-63591d19d94d" chipset="acmgt3" name="Ext858" />
+    <guid config_hash="d3ebfae0c42096b40d0f13764752d889" mdapi_config_hash="7d1f12055742e7b26c776bc48508ef43" id="21ade297-b5e4-444d-8e59-8aebc60d9d8f" chipset="acmgt3" name="Ext859" />
+    <guid config_hash="be19322e662236b67c429ca312c14a4a" mdapi_config_hash="c7edf7e9ef983a0a72dc64165f2e8cff" id="143bd38c-0888-4f91-8d74-56a4fb91aaa4" chipset="acmgt3" name="Ext860" />
+    <guid config_hash="c28b63cd57d2a912c4801944de62f357" mdapi_config_hash="39004c109ed0a2ee7ddb64bb690bfaf3" id="a7c3ffb6-6925-4fed-88a7-5d06c1d20291" chipset="acmgt3" name="Ext861" />
+    <guid config_hash="2b5ea265744fbd97bed43b7756b4494e" mdapi_config_hash="368695e7065de05cdd9b8e5d0bca04fd" id="e3c34149-03bc-4d72-8477-261483c6b40e" chipset="acmgt3" name="Ext862" />
+    <guid config_hash="3a21395f7f643f474e255b3fb705d140" mdapi_config_hash="b145baced4fca15c377cedbdeab7f57b" id="0b4dff70-5115-468b-8dcc-e6e21b9468ee" chipset="acmgt3" name="Ext863" />
+    <guid config_hash="7e14c15fd63baabb16052db21bc9975a" mdapi_config_hash="5161ed30c5b481747bf8b5190412ab18" id="85869032-aa5e-4109-baff-f124584720c8" chipset="acmgt3" name="Ext864" />
+    <guid config_hash="204b18cdf12dc3c0fa47bdfc85a20bb6" mdapi_config_hash="7a817f01a836ede8c59127d416447004" id="5dd2de9a-2dc8-4f38-8aee-48d720ee1d08" chipset="acmgt3" name="Ext865" />
+    <guid config_hash="476bf961c2a1c0c39c48a562656ff485" mdapi_config_hash="ef710314e9477176898d62ae71b054f8" id="16098b83-88a3-451d-8c1e-f2b92ef1c2a5" chipset="acmgt3" name="Ext866" />
+    <guid config_hash="16df43c5cd787c150e6740464c2edce9" mdapi_config_hash="675b01b9df81b3178133bfe6479779e1" id="12e157ed-ca6a-4cc2-a3e7-5c35b9238f54" chipset="acmgt3" name="Ext867" />
+    <guid config_hash="1b3afc3a6fd355fd1620488c7e5ad148" mdapi_config_hash="4a5a8e14ff66b639cabd5142da79355e" id="7bb5d7df-919a-4c1c-9029-5b34dec3b0a1" chipset="acmgt3" name="Ext868" />
+    <guid config_hash="7fb336aad4b6b5a08185da0ddc8afb8d" mdapi_config_hash="457e665e185f9dc5b1937f8d121e7a8b" id="f090fb53-717d-4bcc-8ac0-515ef2e9e732" chipset="acmgt3" name="Ext869" />
+    <guid config_hash="4121249a076a688fc04763ce5013ab5a" mdapi_config_hash="c566eae9dbb9e5b0ea4e392e1fe2b294" id="aaeae265-2220-4838-947e-98558d911858" chipset="acmgt3" name="Ext870" />
+    <guid config_hash="78ee5133a3a5696c16dec67860294c08" mdapi_config_hash="f3609f8885abac6e8118885d60193c8e" id="662d8774-3e66-4c9b-b5e2-5be8747980d8" chipset="acmgt3" name="Ext871" />
+    <guid config_hash="9e46811e93ea398e6efaa688793c58a3" mdapi_config_hash="6ca3dbbd582029c77db44170ade79928" id="2c69a291-9d76-46de-9db5-ceab2dccda57" chipset="acmgt3" name="Ext872" />
+    <guid config_hash="fdcf85442d03ced12ed767dc05416b1f" mdapi_config_hash="757728a59e5e1bbc1bba39e432a77eb4" id="0f86e589-8993-42a0-b344-e2b667565ede" chipset="acmgt3" name="Ext873" />
+    <guid config_hash="e2790e8172e33377825248cd69ac54e6" mdapi_config_hash="c100ba76ff9607692c95e4f7336c1b6c" id="d11c464b-ef9a-4da5-9322-1e57cb0e0897" chipset="acmgt3" name="Ext874" />
+    <guid config_hash="ead8199276396b64fcf55a3a99db42bc" mdapi_config_hash="b9e81e77e6e6ec089eb1d336fdf4b821" id="49a40c7a-1037-479e-a24c-4e9f4e8ff55a" chipset="acmgt3" name="Ext875" />
+    <guid config_hash="554e861aeb21e281b11167fdb005c262" mdapi_config_hash="b48c331f73cbc2bf41c4f0704dca2c2c" id="80397a0b-40b5-4d6f-bc14-297a9094c5ca" chipset="acmgt3" name="Ext876" />
+    <guid config_hash="3bbd86ed1d0412027a0de5cc49f699a9" mdapi_config_hash="ac55e47799fa18178b1326cfe58e918c" id="4dd595cc-86a2-4abf-bda8-aaebda8bebe4" chipset="acmgt3" name="Ext877" />
+    <guid config_hash="3e0795b4a0e261d2b5a2d9fcabd08b50" mdapi_config_hash="546d756eecb9e17a8fc2187634094627" id="4bd452af-bdfc-4d44-a607-3f2b867b5ae5" chipset="acmgt3" name="Ext878" />
+    <guid config_hash="e5751e7487c50a3a00ddee7a0ebf34e4" mdapi_config_hash="07e3501b0b216f93c9161610f1dcb5a0" id="6793871f-9574-4605-b748-50f227dc8d0d" chipset="acmgt3" name="Ext879" />
+    <guid config_hash="3c13d108c1fbc6a5fbcde8952ebaada1" mdapi_config_hash="6b9832d3f2458fdb1db24f2381043006" id="eda73924-faa7-4e99-b942-e571db97ffd9" chipset="acmgt3" name="Ext880" />
+    <guid config_hash="a5a475ae2d444c946902713123452249" mdapi_config_hash="83642711aeec161eb4a5f96bde0adf9a" id="4c4c41af-23de-4ac2-adbc-db69aa7c7a59" chipset="acmgt3" name="Ext881" />
+    <guid config_hash="5f6687514bcebe6142135e68f0073d81" mdapi_config_hash="a91c6e2ac5b66e2474f4b53bb7ce0fa1" id="3d734ca7-99c2-4cc6-a42b-0678c30adafd" chipset="acmgt3" name="Ext882" />
+    <guid config_hash="b122112f8978656e2e00974b2119cf8c" mdapi_config_hash="d8794700e500284005b936970b1f7ea2" id="c435cabd-1edf-47e1-a0b8-e952e4144f14" chipset="acmgt3" name="Ext883" />
+    <guid config_hash="900dfb84cd09a4721501187d380e40b0" mdapi_config_hash="f9e061049cbb8959fd85358cb04ef480" id="b51c6d34-8b88-48c1-a88d-d3114cc750a7" chipset="acmgt3" name="Ext884" />
+    <guid config_hash="8b0bbe1db0554c00e7a7fac4c290e432" mdapi_config_hash="9b7695a241f268ebd1b3a4f5808e9218" id="cc13457c-3aef-4c2c-9b3b-d07058268807" chipset="acmgt3" name="Ext885" />
+    <guid config_hash="e22ad2e73de9ceb99b9948845d0255a2" mdapi_config_hash="aa7deb5b48f5677d8a5416f6b50f677c" id="3b526aaf-5919-4a41-ba31-2e6fb7205765" chipset="acmgt3" name="Ext886" />
+    <guid config_hash="861e6ba02eed7b95e87519d0d309807c" mdapi_config_hash="8f1758e33a31b215c4ffa1954c09024e" id="4e1fdf9d-9a97-45ad-92d5-c4dbf0b6b6c4" chipset="acmgt3" name="Ext887" />
+    <guid config_hash="52ac2525c5a61ce935f90081f4ce1f98" mdapi_config_hash="0ebb2722100e4cde38fe655d77e0e34a" id="51d516e5-4f18-4d23-abef-d4fe43d2cedd" chipset="acmgt3" name="Ext888" />
+    <guid config_hash="387d0dfc6c2d1c020eec6dc4f76f9739" mdapi_config_hash="743039f8947c074de44bed0c1bc36861" id="69746c29-88ae-4e33-9d89-832f961ce4d0" chipset="acmgt3" name="Ext889" />
+    <guid config_hash="8dda41e9114dbb1583133bf3fa838c53" mdapi_config_hash="3d3ff0c896bea9f2778b04b1b9ab9e57" id="3772217c-5bfa-4b4f-8ce6-c1d70e1e7409" chipset="acmgt3" name="Ext890" />
+    <guid config_hash="eff36231985f11e9ee82b56d339fec65" mdapi_config_hash="137c878d93161242008e04edc4468623" id="f0a9580b-73ae-4ae7-994f-4b6d5d265291" chipset="acmgt3" name="Ext891" />
+    <guid config_hash="2da6a317f6fd074eb7c1643bdfdb035c" mdapi_config_hash="8ec3057c495d09f393aacfa6fb1f2a8a" id="52064d17-d36d-4f45-ab86-8732a72ab376" chipset="acmgt3" name="Ext892" />
+    <guid config_hash="e97a59ce8afea9006d95c5def07b08df" mdapi_config_hash="7f4422b28c9fd8fc0db3bc302880060f" id="4b2771bf-21cc-4d4f-b0c5-70b3ff4144d3" chipset="acmgt3" name="Ext893" />
+    <guid config_hash="8d84f02612a4822135754a0e52541bb6" mdapi_config_hash="305232e26d0bdae0a064994fccd0ae48" id="d028b5f8-993c-4c35-9d86-2601fa6a78e9" chipset="acmgt3" name="Ext894" />
+    <guid config_hash="dd5ed67860f6b4c29b6a643cdb5cc49d" mdapi_config_hash="0097c51fd552193141d77967d681b3e2" id="1cd63d28-50ed-4c69-8683-44eba28275b6" chipset="acmgt3" name="Ext895" />
+    <guid config_hash="3e0d5a9adc281bf2b736527bc084d920" mdapi_config_hash="eff6b4777ac18a6331f09ffbf4f8698b" id="ebd6f029-7260-4c80-9698-f18439c74959" chipset="acmgt3" name="Ext896" />
+    <guid config_hash="729eccfe458f0fe4670c280fd272802c" mdapi_config_hash="0ea36d6670e5aa3ac6b37a0d062dd9f5" id="4fef4fe4-17ad-4869-bef4-2ebdebff9f9d" chipset="acmgt3" name="Ext897" />
+    <guid config_hash="8bb897717444708b05be4fd1081bd9ef" mdapi_config_hash="f47553e2138e25c9a4a6ace046a07dbd" id="cca4086b-edba-4819-ab17-70039adaa90f" chipset="acmgt3" name="Ext898" />
+    <guid config_hash="750ac000e1b62da0c3e79879f46b913a" mdapi_config_hash="26ef725c6bc31a63cbfc5eaed6acfba5" id="de978459-938a-4d54-8a6f-0860fba80b44" chipset="acmgt3" name="Ext899" />
+    <guid config_hash="13bdffd92219b17f1a212fa4495ba304" mdapi_config_hash="c67ce4bf08c92e4fca7f3f1e7184f877" id="31c70c2d-ab25-4333-8242-c980e65fe83b" chipset="acmgt3" name="Ext900" />
+    <guid config_hash="cb5fe5bbbe8c62db334c2edda8241933" mdapi_config_hash="d9798df598a03f4198ce715e8853f24c" id="bcf7ff4e-50dc-45f7-8c63-d649dc126717" chipset="acmgt3" name="Ext901" />
+    <guid config_hash="dc060f93a7f9a03cb08faded97d4bc2e" mdapi_config_hash="e16a48af8d30d07aead3b04d508ab305" id="c79fc1e5-c7b5-4dae-ba39-4861365060f3" chipset="acmgt3" name="Ext902" />
+    <guid config_hash="dadf864f228a223b5e929994c83afebe" mdapi_config_hash="85ad8f08e6bcf51432ceab2a6617d380" id="a213b5c5-965f-4daf-8a43-a254fec22419" chipset="acmgt3" name="Ext903" />
+    <guid config_hash="3f12871f10ce2174ada3000e643074a9" mdapi_config_hash="d0296bbc29ccefb584190a61f6d9a82d" id="3a901be2-0b46-4e5e-8852-dc0187f7a829" chipset="acmgt3" name="Ext904" />
+    <guid config_hash="20f0b927556aa0eb532fb04e4f1900c4" mdapi_config_hash="43900f31e8b850921d08a9cc1459a5ed" id="9c547e29-18b8-408c-8c43-bcc3c756eed3" chipset="acmgt3" name="Ext905" />
+    <guid config_hash="b02336a90f8a4861a546c5221692cf40" mdapi_config_hash="643815b0d0e1676d63edc15ce215e018" id="64ce4293-1f46-434d-a9e4-709b2fa8b0db" chipset="acmgt3" name="Ext906" />
+    <guid config_hash="335673ef14c822903d63f5eb4dbe4e44" mdapi_config_hash="9b42529d9621dff1400a2f40d1e42984" id="73dc617b-8971-4a76-96e9-2cf205acc81e" chipset="acmgt3" name="Ext907" />
+    <guid config_hash="90e418e3fe695c87242c320a721e5566" mdapi_config_hash="aa607e756b39a559195a6b36ec0af7d4" id="9eef500b-7077-4fc2-9101-dd900833104f" chipset="acmgt3" name="Ext908" />
+    <guid config_hash="9387192e08d33bdd9808cddd1a7029bf" mdapi_config_hash="7b566d0e11d5bc728a60f7d436493f33" id="d1160adc-3cd3-4dd0-825b-7bc15e319191" chipset="acmgt3" name="Ext909" />
+    <guid config_hash="08a7f501b435dd0146ff401e563e70f7" mdapi_config_hash="662ef68ea3a80eb3176395868f6e10d2" id="6ba0f6ff-cc07-4ba5-81c6-87e4279c9867" chipset="acmgt3" name="Ext910" />
+    <guid config_hash="e799e9ff7de8608904fa496497ac9e5c" mdapi_config_hash="559af2122c4aa6a1a218785ddff4f2d1" id="09a68225-f72f-4750-b6f1-b7f2a7b7bf7e" chipset="acmgt3" name="Ext911" />
+    <guid config_hash="b00f21134ef6029b079cae5ae1f9c860" mdapi_config_hash="dd7e9780a2c9ed79eb4ada14fa3798c2" id="76e4db74-d6d2-4774-80cd-702f27e15675" chipset="acmgt3" name="Ext912" />
+    <guid config_hash="7a82933b06db3aa47385353a393e0168" mdapi_config_hash="ad0d6cdcbd02bfeabec48c40e8d663e7" id="3506a146-a056-484d-bc76-191ba6ed5036" chipset="acmgt3" name="Ext913" />
+    <guid config_hash="296f3d8c3397a5edac5994b325cdffc9" mdapi_config_hash="3cf0c248effdddea177d610558370c0c" id="3846aa70-3952-4ad3-af8a-6463b74c38c5" chipset="acmgt3" name="Ext914" />
+    <guid config_hash="7e827651508da7ceb0a804f3bbe684e6" mdapi_config_hash="83a20fe69c932a448e8a3eaef5fa25de" id="e2a3f9b4-7fc0-4229-8f7f-2f8bf4f381e5" chipset="acmgt3" name="Ext915" />
+    <guid config_hash="5416971134d9e4cf154de2b4f485a821" mdapi_config_hash="2d7911a366387f712f1c796bb95123bd" id="ae92f979-3dfd-4172-9fd3-6551c9c938cb" chipset="acmgt3" name="Ext916" />
+    <guid config_hash="15ce775444e5f8dec051cd13ff909964" mdapi_config_hash="2d81f2e2a50dc3db2d339259b506aec8" id="2f2acb42-910b-4312-b86d-2f3e13ea5e1c" chipset="acmgt3" name="Ext917" />
+    <guid config_hash="84897c723cfc247d6f0e7419cc956221" mdapi_config_hash="53b5b7ad91a4354353f23db825b0705b" id="40216875-613d-4693-ba6d-1c6a37157b32" chipset="acmgt3" name="Ext918" />
+    <guid config_hash="0d623237f9abb876bedd3fe5234de44c" mdapi_config_hash="406ab00f19e14db1b68e6c66872fc5f7" id="db527284-999a-4f23-b319-4ccac15c54c6" chipset="acmgt3" name="Ext919" />
+    <guid config_hash="8a31e21e0af390ab3b0acd85ab67cb52" mdapi_config_hash="82d1510d7d6ae474e994e051cd5953d1" id="17b8db25-a815-4616-9251-caa558af0db1" chipset="acmgt3" name="Ext920" />
+    <guid config_hash="63c6286b1ef9edba7911513aceef8dd6" mdapi_config_hash="97d734833acd8441de81e19fe00a8b7c" id="7c5214fa-e627-46dd-bf73-96b97e3b46cd" chipset="acmgt3" name="Ext921" />
+    <guid config_hash="a883549b4026fee39ba8c0d13d92ec62" mdapi_config_hash="8bad9c39e34d72cfe4804faa47699124" id="044b808a-b7f2-4e2c-bcf9-34c161b9def4" chipset="acmgt3" name="Ext922" />
+    <guid config_hash="db2279a6eff0f32ef9e85166eb282a56" mdapi_config_hash="8161b5627b5185c03032653dc03c61fd" id="7a09a646-9e0f-495d-b768-fd55dd0ccc75" chipset="acmgt3" name="Ext923" />
+    <guid config_hash="4ee54cc5fd7c19fae38cb9978d2fe58c" mdapi_config_hash="3c5b9a86b3a47b51aa3e62f2a74171f1" id="5339dcea-309f-4df0-8858-c9e668536425" chipset="acmgt3" name="Ext924" />
+    <guid config_hash="7ce45927fa56372e55a4c31cfe7edb5c" mdapi_config_hash="b56232c646502b867a8e6830c3b758ea" id="9b59db08-b7d6-4544-a8e5-486158a6377d" chipset="acmgt3" name="Ext925" />
+    <guid config_hash="e099f6fb5c98f12fae3ef5f8ca473524" mdapi_config_hash="0488beeb6c2431c2e4aacc3d8378c184" id="5f31c335-12b6-4e4f-abc3-cdc650168def" chipset="acmgt3" name="Ext926" />
+    <guid config_hash="dd003b0f9ad4aa3d720f25b3ebae0dc8" mdapi_config_hash="aba33173b0125d97d6cc31c0d8181be0" id="c413bffe-ef29-40b0-899a-d23dfb0718a2" chipset="acmgt3" name="Ext927" />
+    <guid config_hash="aeed107dee9d1dea5ac4f5ccaf27368e" mdapi_config_hash="584aabc2d11aac48d265c5ebbf7f19b7" id="42ae6e37-0810-46c4-8d78-b76e28e7a7f8" chipset="acmgt3" name="Ext928" />
+    <guid config_hash="db57e7d12cbf3ee1d4c57caac37442d0" mdapi_config_hash="dfc16b66168c2f9470eeaf1eab0446de" id="cf938b48-3aa4-4b8a-ba01-ec993f0f4c92" chipset="acmgt3" name="Ext929" />
+    <guid config_hash="1002201239949e0a56b1e073ba1705f3" mdapi_config_hash="65ebcf1fbea746ffb0f5808115a1831a" id="39e1edcd-5c27-4f20-b460-5b506bab2c5b" chipset="acmgt3" name="Ext930" />
+    <guid config_hash="515251f1bdb77ea55690372a966c1827" mdapi_config_hash="986f1c683394520a02645d0e13de6ea7" id="1e3ee19b-dfbc-483a-b1b6-8df99fa18f9a" chipset="acmgt3" name="Ext931" />
+    <guid config_hash="4686ca880329078eead3bcaac99843f0" mdapi_config_hash="ea72f5ac8412569dc0d664e68b2809ce" id="8c63d2ab-71c0-4b22-b9d7-1b74ed86b77f" chipset="acmgt3" name="Ext932" />
+    <guid config_hash="844ec33d11f2aaa903691a45f31961a3" mdapi_config_hash="07fc13d35c3bb57aa04f455b7d4b1284" id="32abbaf3-3fa0-4bf2-b455-21bc065a470a" chipset="acmgt3" name="Ext933" />
+    <guid config_hash="8a76f903da2352cfd0d9e913dd2e4696" mdapi_config_hash="a0780403cf933cc692c3e676a154975a" id="36ec10c5-30d6-4ed5-80fc-7fca5bfc8db2" chipset="acmgt3" name="Ext934" />
+    <guid config_hash="b30dd37ee49723b26bec4f8e0ef44ddb" mdapi_config_hash="06940f8fe35fcdcdf7671094ca27ee09" id="93f4ca26-8eb8-45af-acc7-ade95a86bf4e" chipset="acmgt3" name="Ext935" />
+    <guid config_hash="91f57a31adce34b65c158ac24ce7c1f3" mdapi_config_hash="2842469122b8089978f5c29ffff6fb82" id="6411422a-9ae7-4d23-83b4-27a0f571daea" chipset="acmgt3" name="Ext936" />
+    <guid config_hash="2e0500f8e85b57c58166f253fb72e534" mdapi_config_hash="8d7ca44c235fcdf76e6a029bcb02ef82" id="2a21eaf2-0ff9-4d72-a54b-d47b31a09202" chipset="acmgt3" name="Ext937" />
+    <guid config_hash="58abcf064bab97d27de16041449ff918" mdapi_config_hash="ed3cca24d1a7935b973db3d1cc9f17ae" id="13073d0f-fa11-4814-9bcd-139958585128" chipset="acmgt3" name="Ext938" />
+    <guid config_hash="0540d295c7bf010fcff4d4dc73442ce9" mdapi_config_hash="460c37bdf1cc55012704f0be52e17276" id="43a8b6e0-50ff-486e-812b-42a4d00ec5f7" chipset="acmgt3" name="Ext939" />
+    <guid config_hash="989b03a4fd288435a9ea0aa8d1929f70" mdapi_config_hash="d85adb2507408082285e8917f6521d72" id="61e98434-0a16-40c8-9b7d-371652eb33cd" chipset="acmgt3" name="Ext940" />
+    <guid config_hash="91a54865f2afb6d3d6938ea8feb7fa3b" mdapi_config_hash="d40daf95498e7c7d4ba6476594472e9c" id="1c13d9d5-c6f4-47a1-b695-8273b93037fe" chipset="acmgt3" name="Ext941" />
+    <guid config_hash="0f5e5a81dbc21ccb629b6a455bcf02b0" mdapi_config_hash="42d61e86f5b104ee99286ee7358f6bed" id="9efa16a4-a3ae-4be2-a616-7b6164ed850b" chipset="acmgt3" name="Ext942" />
+    <guid config_hash="6626195a0b4715e544e6b3de38b4f5ac" mdapi_config_hash="866afd3d545d3fef7ad1e9287c4889d6" id="e0e775d6-908a-4410-8ed1-a26b1d316700" chipset="acmgt3" name="Ext943" />
+    <guid config_hash="63ba443e056ded6291dfdbc4f715b825" mdapi_config_hash="b2151fd09f477cb3c13c052eb7209035" id="5e825890-c584-4545-bf82-6a8ded48393c" chipset="acmgt3" name="Ext944" />
+    <guid config_hash="3984107cabb8c1b878a7a61209bd9d0e" mdapi_config_hash="0e768957129af6a18181e37aaece36fb" id="07f8b9c7-a909-4ea1-ab0e-d1a1b72fba23" chipset="acmgt3" name="Ext945" />
+    <guid config_hash="a23bde0183695112dcc30cfd97847018" mdapi_config_hash="14a9cf96ae72f6ce789bf3251d4120c2" id="01c4a3bf-e61c-459a-8eed-c736edf29117" chipset="acmgt3" name="Ext946" />
+    <guid config_hash="8033ef054ac3e2c213753aa32d0cb44f" mdapi_config_hash="2662db5cc785e16de05d56ce8fe09d37" id="37906cb5-0da3-49d3-875e-d11e3584e4dd" chipset="acmgt3" name="Ext947" />
+    <guid config_hash="14e7a1993d17b04071c1a8655e38d84b" mdapi_config_hash="41b2eb84de41fc70a3b589e210f23ac2" id="12e4baf7-6d8d-46c0-acd7-5f94223dddc8" chipset="acmgt3" name="Ext948" />
+    <guid config_hash="096b8acfcd012358ac31492dec224512" mdapi_config_hash="b23926e3dd72525cde70ca29b8ade2fb" id="b616fbb5-c0d3-4e63-bcff-61bcf8ba8ff9" chipset="acmgt3" name="Ext949" />
+    <guid config_hash="2809abf72aa843ca225ff6223ff7c290" mdapi_config_hash="134eb2ea837dae4256aff08a437f0f35" id="5e7edb7d-ba9b-4574-9bac-abd4742e186e" chipset="acmgt3" name="Ext950" />
+    <guid config_hash="f19e00683373b8e4630dc97e106cde8b" mdapi_config_hash="32ea8bbd526348bc5a86a4a6775f65cd" id="24ad6a9c-cb37-4e16-b25b-3cc444e081a5" chipset="acmgt3" name="Ext951" />
+    <guid config_hash="6adb50912db8424e7b22dcc1cbd1b766" mdapi_config_hash="fbdd712d9dc4662678b4d3be7cb6c5ff" id="526b1c1e-b636-4231-9d4c-6e6987c4b24b" chipset="acmgt3" name="Ext952" />
+    <guid config_hash="93a2b17c149c2f5d2ae19cadd011daee" mdapi_config_hash="ddde37cef8e60d6927aaebbb7c2301c4" id="da7fb135-174a-41fb-a6fd-0bdc44732d9e" chipset="acmgt3" name="Ext953" />
+    <guid config_hash="44ba1099e960d107c953627375c52c7e" mdapi_config_hash="63bca47629cec5f2151c2741bb930a33" id="7499a841-6a6a-45ce-9c27-9bf6080ea900" chipset="acmgt3" name="Ext954" />
+    <guid config_hash="9426596da2a2a3d0beaa7566e76d3e88" mdapi_config_hash="4c4c372f58e8b967bc7c45f208f91de7" id="4b6cce94-cbf0-4b56-9b24-6c2ebd167755" chipset="acmgt3" name="Ext955" />
+    <guid config_hash="c2d03a5fcd676dbae55b5e0adcd7389b" mdapi_config_hash="669639b99dc7495882270bfd5f951a7e" id="c648eaa7-cac1-4c84-a2ea-c3448f108ab2" chipset="acmgt3" name="Ext956" />
+    <guid config_hash="e213eb224e0f8feb6a5110f1e8a36fd6" mdapi_config_hash="62e820cac1e2d379358c9400bce27a58" id="37b143ab-aba8-4537-a735-14cccb02f079" chipset="acmgt3" name="Ext957" />
+    <guid config_hash="a4a004066a36647b9be6b8561eb09b94" mdapi_config_hash="370585e7086a747b3947c2eb8f57e60d" id="98d49ba7-236c-410e-958a-3f08c09b74c7" chipset="acmgt3" name="Ext958" />
+    <guid config_hash="089c84322b287520d8c42c50f9a21020" mdapi_config_hash="cd848da22216d867e23c6b9b55e74ea4" id="5d40ca14-33f7-4fc8-a9cd-7cd5d3aa58b3" chipset="acmgt3" name="Ext959" />
+    <guid config_hash="9873bdc8263c086435f278d8feeb590b" mdapi_config_hash="7b59dd18c5c0c01cbcaed364edb14678" id="04f3962b-a11a-4aa4-a263-d545823df4af" chipset="acmgt3" name="Ext960" />
+    <guid config_hash="669e000a992ffc27282056fd8d492657" mdapi_config_hash="1bce465874b6c13837d204c45dd0a36d" id="b07a3402-0c0e-4ea8-af95-738c3445e5df" chipset="acmgt3" name="Ext961" />
+    <guid config_hash="426b954c31450f185873065ca0e16cbc" mdapi_config_hash="171e27ef8d26df3a37ce7483bee9a5fd" id="fcab665c-5dda-47b6-9052-99f992805980" chipset="acmgt3" name="Ext962" />
+    <guid config_hash="9164575a6195f18e1624484a180d84d1" mdapi_config_hash="e187d4aeac7c2aaad2541a8b49423b04" id="88e912b5-3333-46e1-86e2-b7c5ebfff84a" chipset="acmgt3" name="Ext963" />
+    <guid config_hash="bf7621b59eefc64c22c6f90b3aa8cb9b" mdapi_config_hash="fa18ea073d5bb540f7a3488768e45a44" id="00a17d53-6cda-47b5-95fe-36770dab66c6" chipset="acmgt3" name="Ext964" />
+    <guid config_hash="e3b6d4f1cdc364b8d0877886a8490412" mdapi_config_hash="211d32a056fd6c4f6df0f31a87a7daf6" id="3259b467-758c-42e9-a86f-a35e44003569" chipset="acmgt3" name="Ext965" />
+    <guid config_hash="1e0cb9f8417cb64c20f7502f32ed56f5" mdapi_config_hash="cf022eea1c23b4c6f087a0e8633766dd" id="a96fef9c-bc3d-4986-b2b9-d2233b157ac7" chipset="acmgt3" name="Ext966" />
+    <guid config_hash="6cc2f0967d27e1a7583878507b4a7eab" mdapi_config_hash="38e0688280cfe489af3d9e8ae1f2a113" id="cffa549c-1997-4b02-adfc-81fbff2971c2" chipset="acmgt3" name="Ext967" />
+    <guid config_hash="e84a9759058816d2795bfec84198dac8" mdapi_config_hash="4ec3784c02b0c0468224ef96c1c16374" id="97bb78db-526f-45e9-b302-e71bdb354a51" chipset="acmgt3" name="Ext968" />
+    <guid config_hash="6fd3a8cd6a8b1739a8dd1facfb7ed842" mdapi_config_hash="1311d80d8ee408e4aafd55408da38293" id="0f12e897-1e98-49e9-bd01-463aec885b06" chipset="acmgt3" name="Ext969" />
+    <guid config_hash="e313885d9c19097fd1241f052a6dd90f" mdapi_config_hash="622e09114a6831f35f949acd8445fb35" id="742767ec-da64-414c-9f32-f59d97dd9c30" chipset="acmgt3" name="Ext970" />
+    <guid config_hash="4c613b536545a0cf2bbf9c242209cc48" mdapi_config_hash="d0199e9d70df5fceddeb247f657b5b9c" id="b8132d7c-7b59-4906-bea4-7401dd0eea38" chipset="acmgt3" name="Ext971" />
+    <guid config_hash="da1b326b8d0f03f1bed0e06c4f1afed2" mdapi_config_hash="abc6622a632be235f13d88d1e548eef2" id="cbcadae5-b72e-462b-9b5a-b06880be86c6" chipset="acmgt3" name="Ext972" />
+    <guid config_hash="7981624de1c9a8802cef5d507d8d2333" mdapi_config_hash="bff60afb6bd92bde1880ec2df61f7c49" id="03be681d-684c-4f4d-8a09-18e0a605c864" chipset="acmgt3" name="Ext973" />
+    <guid config_hash="52dc470611cddc42b1db3ed4aa68b574" mdapi_config_hash="d744e736c515ef1680bbb7582b58fb76" id="acca3492-bdac-49b9-aa54-9d7033f6d46d" chipset="acmgt3" name="Ext974" />
+    <guid config_hash="b0a303e670c8e74befe31b817ebea695" mdapi_config_hash="7373e82cff36850cbf79c3e09b0a2dcd" id="2c53a11a-5077-487c-bf6d-894ac78600c7" chipset="acmgt3" name="Ext975" />
+    <guid config_hash="2a9c15d6c9cc950e14fcb0f7ba8dc8e2" mdapi_config_hash="2a0d09eb8b6fec859c59dfe7e660a880" id="ce390b14-0e8c-4f97-afd8-d3296ca986c4" chipset="acmgt3" name="Ext976" />
+    <guid config_hash="c8c67d40e6eca04a98c3d7d61cddcbe8" mdapi_config_hash="e64570d607559dd630df9811f466ecf4" id="f638017d-bd81-4359-9f9b-daafcd5b9492" chipset="acmgt3" name="Ext977" />
+    <guid config_hash="32ebe2e68b5bb17255ff5c18dc347cb5" mdapi_config_hash="73fd1ff9456e17327c3fb8f02b755651" id="28b23f45-71a2-44d2-9661-423be5a6831d" chipset="acmgt3" name="Ext978" />
+    <guid config_hash="f011437f106bbfe9ad4de30d76423d6e" mdapi_config_hash="b15d0a3707637a5680d500baa0397df4" id="88f7e719-828f-466e-8c74-61c31b885975" chipset="acmgt3" name="Ext979" />
+    <guid config_hash="078a73630414edeb0538796d642d040c" mdapi_config_hash="ce952809690643f765156dcf218cac0b" id="8ac802cf-f221-461c-aedd-7a45bcb63165" chipset="acmgt3" name="Ext980" />
+    <guid config_hash="a958575446f1df9754b985bba7ace2a9" mdapi_config_hash="f951167824050451f5cc86119867fb81" id="1bcb5260-ee4d-4c39-ba59-033b7bd84271" chipset="acmgt3" name="Ext981" />
+    <guid config_hash="0b8b53869acbfb8373adda75af88f5fb" mdapi_config_hash="64c0e54cc81fb946f88a632bae168633" id="7480a976-6f5e-46e3-babb-01cc4b34cd75" chipset="acmgt3" name="Ext982" />
+    <guid config_hash="e61bfa49202515abdd5bbcf2641a6868" mdapi_config_hash="73e847dd0e9cdbd06b615b8bb074d4ba" id="599cd4bb-5fd9-4586-b813-fcb44b53b648" chipset="acmgt3" name="Ext983" />
+    <guid config_hash="fe07ccfb8727c83297b89e1eb10fd492" mdapi_config_hash="59af419ef4515814235e71166431d074" id="3661cc06-7370-4d4d-9838-6ba6847fb2af" chipset="acmgt3" name="Ext984" />
+    <guid config_hash="9ebc1f0eb7f1e510657b8384163127cc" mdapi_config_hash="bc0502181417ffffbbb8555f1d61a63a" id="3a7100ab-0b38-4148-9fc3-15b735b80668" chipset="acmgt3" name="Ext985" />
+    <guid config_hash="033f98dbb921b0b0e483461c41ca3e89" mdapi_config_hash="1943e138de652eaf995470c7fe621d12" id="ea7e1fea-e645-42b6-875a-170eadcf6716" chipset="acmgt3" name="Ext986" />
+    <guid config_hash="3c19c7087672329e658cecf097d8c494" mdapi_config_hash="1d5dd5bbfe7ba09cee2229607b9d87df" id="0cc6ded2-c760-49d1-80c2-0ecd33484aca" chipset="acmgt3" name="Ext987" />
+    <guid config_hash="6389c2dcb6a2b100db74a782d4f7006f" mdapi_config_hash="d8d0fcb20772d25731d0ac8a7d587cb9" id="6ed6774b-beba-4a52-baae-04188cd01cc0" chipset="acmgt3" name="Ext1000" />
+    <guid config_hash="e358e6156c7379f8064b679128fe0747" mdapi_config_hash="a9988177c98737d0b52bcf215079e95b" id="28009d66-9dae-4325-8339-06b19af58abd" chipset="acmgt3" name="Ext1001" />
+    <guid config_hash="c4809b4f9dbd405691ebd29dea153aa2" mdapi_config_hash="8d1002c55a03d16517de67b4b8970d12" id="75ef7f1c-7b1f-4d06-b666-6e09a69fc16d" chipset="acmgt3" name="Ext1002" />
+    <guid config_hash="8bb1139fff1ee995a5ade92734e11d8a" mdapi_config_hash="fbbbc2eaec0f182e838cbdfa1c8372c2" id="4994b075-c659-48ab-b167-84cdb120c759" chipset="acmgt3" name="Ext1004" />
+    <guid config_hash="83d7b8e952e3598565267c65964b2771" mdapi_config_hash="7a5482c523806abe25c8c4dbcf5273e7" id="b82ec6e0-2be7-4b30-a3db-21bd725849df" chipset="acmgt3" name="Ext1005" />
+    <guid config_hash="e7efe91c7aeb591043358c1b5e3c019d" mdapi_config_hash="94ecec147a25de742814fbb01fd4e9c3" id="a864bceb-7b38-4248-9fc8-0f0f7b8c6426" chipset="acmgt3" name="Ext1006" />
+    <guid config_hash="ae85ee9664f10b42cc854c26878d6cba" mdapi_config_hash="de92fab5a4df472219094e6a3b635632" id="361fc5ef-d568-4a9b-8ca2-d34707d10575" chipset="acmgt3" name="Ext1007" />
+    <guid config_hash="310dddcb04d1088a3865f698d758cbc2" mdapi_config_hash="c6a3be7d49b5697074021ca673a39a57" id="b5663ed9-0a8f-4a22-a3d4-a1ab08fad60f" chipset="acmgt3" name="Ext1010" />
+    <guid config_hash="765a4838b8533765250eb3ad9c55819b" mdapi_config_hash="8285f749ef42ef7730742aef723e70fd" id="232e858b-7116-44e8-a4be-856c59026650" chipset="mtlgt2" name="RenderBasic" />
+    <guid config_hash="47dd4aee9ef5ba2d15e61d25f735d1d4" mdapi_config_hash="c4c86e8bd7e0cfffa7c553517340292a" id="fea2b2b7-a072-41c5-9092-2d7c48bb56c6" chipset="mtlgt2" name="ComputeBasic" />
+    <guid config_hash="da49b5c7e497eab30522295f416dd84a" mdapi_config_hash="80f802eb9434e078d1c158be06940d88" id="011e5c80-c877-46fd-90ff-fd0bb29cb5ec" chipset="mtlgt2" name="AsyncCompute" />
+    <guid config_hash="1a28d05d945714b099a9417181b72962" mdapi_config_hash="0cdf3168ffd88a84c2a42d4c62567189" id="5f430543-ba1e-487c-b217-90570cfb85f9" chipset="mtlgt2" name="XveActivity" />
+    <guid config_hash="30a171d29dd5020b9c3e783770d368fa" mdapi_config_hash="7bab7a09782a068f84c86a936d26cbd8" id="3cb64fed-0f61-4e41-a754-b9c5b4892f77" chipset="mtlgt2" name="GpuBusyness" />
+    <guid config_hash="65340d74cb80df3ee2401d71d4b95c0d" mdapi_config_hash="74800fac78bc147297868f50f25488ea" id="27d6eda4-aabc-4203-8848-aef69658ae74" chipset="mtlgt2" name="HDCAndSF" />
+    <guid config_hash="a6cd8d6e9c44203dc49ef26cd4ba87eb" mdapi_config_hash="d575fb4e1794402955c9ed37694a3a15" id="50b898ad-44ae-4d02-ba5b-a7d2a024a480" chipset="mtlgt2" name="L3" />
+    <guid config_hash="7f4047c7b40fe74c5386de73e934f725" mdapi_config_hash="66f4afaa5b82df1619e751db3295c5dd" id="29adb364-f161-40cb-929d-c14036447c4f" chipset="mtlgt2" name="RasterizerAndPixelBackend1" />
+    <guid config_hash="2e3de14acc09dea6d3a8c4ab17bfcd91" mdapi_config_hash="6c3b33c6baafba9c5046823c7ab52d22" id="787c682f-68be-4a64-b998-77d8a30b4ea6" chipset="mtlgt2" name="RasterizerAndPixelBackend2" />
+    <guid config_hash="f8ac69a904de7bffdbd0af3b1c0e50b1" mdapi_config_hash="de6a9b8cb55c7125ba5ee310caa21fba" id="1269ddfd-22a6-47ca-9a1a-dc37b8c38490" chipset="mtlgt2" name="RenderPipeProfile" />
+    <guid config_hash="34539ea3f5c80956b72b788dcbfb13a9" mdapi_config_hash="8f4960f14074f3af57ac26be2592d477" id="3c304c3b-9ada-4d92-9b54-34ec4e70aea6" chipset="mtlgt2" name="Sampler" />
+    <guid config_hash="373388fb0836bdd9d577b496dff15a0f" mdapi_config_hash="235a4fce47d90e02f060ad633d0a6886" id="616fc1b0-53bb-4411-93b0-b34ab2b0bfb8" chipset="mtlgt2" name="TDL1" />
+    <guid config_hash="c3c0bc8930f763a09a8efc23f6c1cb20" mdapi_config_hash="374b4363fe79bd487e1a1de67631e7b9" id="952fa513-550e-49bc-a355-22fadbea5455" chipset="mtlgt2" name="TDL2" />
+    <guid config_hash="f7588f87b24ad3328f816574ec29ee3a" mdapi_config_hash="d7d99e82673ef509f1e1d37b0a1970f1" id="d0ed8afd-ad64-4774-8788-1a15f4ab7829" chipset="mtlgt2" name="TestOa" />
+    <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="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" />
+    <guid config_hash="a6cd8d6e9c44203dc49ef26cd4ba87eb" mdapi_config_hash="d575fb4e1794402955c9ed37694a3a15" id="a49e7038-1e78-4b49-bc55-e7e7d04e4074" chipset="mtlgt2" name="Ext12" />
+    <guid config_hash="eede85290cf080739c83ea0fd3ed4cc2" mdapi_config_hash="5b1a7fa91e28d06b0f7abc4c85223c9c" id="10f4cba5-2db8-46a9-a211-391dca810ea0" chipset="mtlgt2" name="Ext13" />
+    <guid config_hash="abd9542c5a4f9448419453ca9321090f" mdapi_config_hash="6b34a37d5c8421877062853389d01825" id="36c1995a-e670-4c2a-ab94-74b9e7360fb2" chipset="mtlgt2" name="Ext14" />
+    <guid config_hash="d9f8bdfdd83f60c4c6825bf3b7002c4f" mdapi_config_hash="76dc33267b5fc0c1e72904157a17c452" id="a04168f6-637e-44af-a1b6-e5f005708df4" chipset="mtlgt2" name="Ext17" />
+    <guid config_hash="ecccf5958726aca6600a5463878e15cf" mdapi_config_hash="f2e6df19e259eec4b02fd12448aa1e76" id="0486a0e0-3522-4689-bdf9-623603f8e3c6" chipset="mtlgt2" name="Ext21" />
+    <guid config_hash="fe47d492db7152a11f5af3ae0f96b37f" mdapi_config_hash="f276c8fe9f9c4e964833bc6626147190" id="b30ba7fb-fe8f-4e81-b271-3d6f52edc257" chipset="mtlgt2" name="Ext23" />
+    <guid config_hash="eb985e9199da1c856b5838ce5b915844" mdapi_config_hash="0a43d72e4da3ccb63f98cde72fd7de61" id="053ca218-0961-4bb2-b689-9fe2cb090fdc" chipset="mtlgt2" name="Ext28" />
+    <guid config_hash="57d1edc968bc247ca3a5d1980ca45bd2" mdapi_config_hash="afb3d322f2cdcd1f338c76ccde03bdeb" id="7a4a45f1-e844-460b-8800-91b62eb47124" chipset="mtlgt2" name="Ext31" />
+    <guid config_hash="e9422d51474ae2322f83584854c593ed" mdapi_config_hash="0996e8ed51a272a3843e361be3c568c2" id="fd99f6f4-d418-4d86-800b-52998df4eb00" chipset="mtlgt2" name="Ext35" />
+    <guid config_hash="49395b5d09f6656ffa0663aa31cf5f5e" mdapi_config_hash="e6faea8629a8503a3c13a5d83dc87cf2" id="10f4436b-83c7-4e38-867d-82144311e412" chipset="mtlgt2" name="Ext39" />
+    <guid config_hash="e8eb4fb7a2e8d2b8fb9bfcd2e301c12d" mdapi_config_hash="0c20b00317caecfc040c299fbfdaed0f" id="ab8c937a-a24c-4b7b-94d2-7cdf4cf3829f" chipset="mtlgt2" name="Ext43" />
+    <guid config_hash="08520364a03552d3f8982ff277bd3296" mdapi_config_hash="d5cab185f21568264fae6d541e463a96" id="aa3ac820-b824-4681-94ff-3425eee63648" chipset="mtlgt2" name="Ext45" />
+    <guid config_hash="338a9ccaf6c810f246d28e68cc70b9a4" mdapi_config_hash="2df64e320a0e757578ebca903c7010bc" id="3a093546-2929-4b79-87f4-97df02c1fe8e" chipset="mtlgt2" name="Ext51" />
+    <guid config_hash="bb46f028e07626dba6dae16eff28868e" mdapi_config_hash="328b9b5caba1cf941822285d8c270873" id="2ccdac56-9683-4eb5-89fd-7d42e77c117f" chipset="mtlgt2" name="Ext53" />
+    <guid config_hash="554b7ffcb89762832002981a66b9b07c" mdapi_config_hash="f7cb222a2895d749c41d9cfe84e33be2" id="d297b1e3-fc04-45a7-a5c5-f92ab4357eb2" chipset="mtlgt2" name="Ext57" />
+    <guid config_hash="452953e5e2b131979229302ead5450c6" mdapi_config_hash="ebcad3c1addcac5ccdb7b447aeab2f28" id="bc372334-fe31-452e-843a-515328c75fd2" chipset="mtlgt2" name="Ext61" />
+    <guid config_hash="69fc066b5f8dc4b038fbb63b91a5f2ad" mdapi_config_hash="940775c667d26d8b3e13a5581cbb805a" id="8a5ca732-17d3-4336-a33c-292a7f625237" chipset="mtlgt2" name="Ext65" />
+    <guid config_hash="cf7a75cfc1953b64a7e4a892bafbda7d" mdapi_config_hash="dec741278ca5e60b5f4b8106918c82fb" id="2e72f570-378b-4672-a615-374c1a3d524c" chipset="mtlgt2" name="Ext66" />
+    <guid config_hash="3cf40c51c606a47dc68e07c06e29ea21" mdapi_config_hash="48ebc8497a275fcd9e1ceafc7d48fa5d" id="8f63bf05-fccb-45c2-89c1-cf1226c4fb80" chipset="mtlgt2" name="Ext73" />
+    <guid config_hash="21ce98190a80bb4916bdc3149b138933" mdapi_config_hash="ecad183caf98e92b21e0566a5b1b8c16" id="2e5b5a64-580f-4cfc-ac3b-e6ccc55a1260" chipset="mtlgt2" name="Ext74" />
+    <guid config_hash="471f74bf4b3538cfd137c6e3c81331cd" mdapi_config_hash="34c46644652c355f91254d85c11873ef" id="1e7215b8-72b7-460b-99d1-9be3984e9f6c" chipset="mtlgt2" name="Ext77" />
+    <guid config_hash="dd347b2a8ac774650a6a90f56fba8c61" mdapi_config_hash="153f6c473f1f8670e8e4ae6c22e10eaa" id="a1a1cc95-7466-461d-a3a4-a04818bb5d74" chipset="mtlgt2" name="Ext79" />
+    <guid config_hash="efb8a48116d2c6fd53030edd6be30316" mdapi_config_hash="e3f794326b47260a4c8dabe76c0d125d" id="06d62e44-cf58-4e35-a8cf-c76ee2b4fd7f" chipset="mtlgt2" name="Ext80" />
+    <guid config_hash="ab6e94c6c452ea18b34d0874041701be" mdapi_config_hash="41eaaf6a094d249c7b39454e85a9ab11" id="428a93d8-3475-4efc-960e-3402b062d8f0" chipset="mtlgt2" name="Ext83" />
+    <guid config_hash="4f7ccb0bf94c14394c8a2135f55b3cce" mdapi_config_hash="c7931cdff3d2bcbbe1937092adb81ba5" id="e6db7a16-f214-4cd0-91e9-94d8036c20ee" chipset="mtlgt2" name="Ext85" />
+    <guid config_hash="0b3418bde24822c8e86141f94ec54da9" mdapi_config_hash="60fe1764b8785668eca4d57cae6efee0" id="b96d78d7-c0c8-4941-9f28-e746f36627e4" chipset="mtlgt2" name="Ext87" />
+    <guid config_hash="9bb2ad27e05044281e3bf7070ccfe3c0" mdapi_config_hash="5774953e586ef263253210314f34a0f9" id="55e5926a-364e-45f0-bbcd-69375ac61391" chipset="mtlgt2" name="Ext91" />
+    <guid config_hash="dd347b2a8ac774650a6a90f56fba8c61" mdapi_config_hash="153f6c473f1f8670e8e4ae6c22e10eaa" id="a06cf71c-ad14-49b8-8a22-b367118514bb" chipset="mtlgt2" name="Ext93" />
+    <guid config_hash="efb8a48116d2c6fd53030edd6be30316" mdapi_config_hash="e3f794326b47260a4c8dabe76c0d125d" id="a05152f2-80f2-47cc-add7-70f4664b58e8" chipset="mtlgt2" name="Ext94" />
+    <guid config_hash="a6088dbf5a232211a7d987e73ca36a1d" mdapi_config_hash="a5e11aae4003c1329e493d8c474b37be" id="39f8d4d2-b28d-40a3-b545-a57865d7714e" chipset="mtlgt2" name="Ext97" />
+    <guid config_hash="9380228536e90debf9f9585117a0fa7c" mdapi_config_hash="b34a62bf5183b1062b0a739ac6b8a02d" id="ee9377fe-2623-4588-8ffc-517e34c2eb75" chipset="mtlgt2" name="Ext98" />
+    <guid config_hash="43c1d65e64eb392ff5790865ea0b8425" mdapi_config_hash="606c77c839ad7a71ed4e68921cb16d4a" id="b5533650-f6f1-4f66-ad40-6b4aba600102" chipset="mtlgt2" name="Ext100" />
+    <guid config_hash="083d85b1e3851b3fff7a0f4ed97e853c" mdapi_config_hash="de2bd050056c4f45da9514ac1e5e58e1" id="136839ab-66a3-42ac-bca4-1cfca1d3088e" chipset="mtlgt2" name="Ext101" />
+    <guid config_hash="268abad818bec5c52ca2fc9edfd27ffc" mdapi_config_hash="d47eb8180371900676f3fc844266413d" id="bd8e9b37-35b3-4a94-8ff7-bbad7d67642c" chipset="mtlgt2" name="Ext102" />
+    <guid config_hash="00336fbcb8f17953ad66f36bcf96d1f7" mdapi_config_hash="e69cc0f7997cbe7eb427b46be253f9c6" id="576a210f-b921-46dc-9af7-7f34eb1d368e" chipset="mtlgt2" name="Ext104" />
+    <guid config_hash="92b1efe497b8cdb26c82c352b28dc049" mdapi_config_hash="c1f72a4fa4267a59e03f83aa669502be" id="96b32930-859d-4fa8-8d81-4d26a160f0e8" chipset="mtlgt2" name="Ext105" />
+    <guid config_hash="78fc03fbedac67627b981cea0af7dbe8" mdapi_config_hash="31dc77f8168b147760ff7738f82ca7a9" id="bbe4bf0d-03a3-482a-869c-1c6e71d52dac" chipset="mtlgt2" name="Ext106" />
+    <guid config_hash="26194f4043f9124535badae21420e944" mdapi_config_hash="a64ed4f60399b9d9371c4eb888769b8b" id="02eafe17-886d-4559-b18d-c661fd6914c0" chipset="mtlgt2" name="Ext107" />
+    <guid config_hash="70001583ec1c8443618eed56cb87983b" mdapi_config_hash="328f4d40a0ed0d43bee0aea380ea19ec" id="8cb51ae4-6d00-44d5-9d24-29521022f02b" chipset="mtlgt2" name="Ext113" />
+    <guid config_hash="ed2264fa989005660f1b165c5de71e2c" mdapi_config_hash="f45c258a615444f1e27058a3991b6dcc" id="c50c1328-01a4-44a4-bc10-cea109a86100" chipset="mtlgt2" name="Ext116" />
+    <guid config_hash="f88a3536fe9dd287783abe80d0edda1e" mdapi_config_hash="0289fc24004eefea42bef4e2e4b1b5ae" id="3ac7b553-9dd8-4588-be88-8a50d4aa8497" chipset="mtlgt2" name="Ext118" />
+    <guid config_hash="a347cb010be507b3c8a5c3fe2d6f0a5e" mdapi_config_hash="1bdd093a2c74398560cbb36c9af0220d" id="39bbba4c-b77d-424a-9156-ede3d325df25" chipset="mtlgt2" name="Ext120" />
+    <guid config_hash="7990587fda1b415497dbbe83e6d84ecd" mdapi_config_hash="3f0119875041ae93b86d07c4b6d33ca5" id="1c2b42f8-2763-4c20-85d9-5a5bd7381eb8" chipset="mtlgt2" name="Ext122" />
+    <guid config_hash="426403b08bd593b97e7071be2b651a3c" mdapi_config_hash="ef5368461a07b718a333e34464997fd1" id="80240cbe-83d5-44dd-a03a-c498a6928be5" chipset="mtlgt2" name="Ext123" />
+    <guid config_hash="7fd32575be46b5303a63516b12963442" mdapi_config_hash="9abf33fda46df7a6730885110ae24a3c" id="f8d36c8e-4129-4962-afce-7917f98e9b2d" chipset="mtlgt2" name="Ext124" />
+    <guid config_hash="e9877d30c603d3caa321b00f07acecff" mdapi_config_hash="a2b30d5c0faa5d26028fab800edf5d86" id="08670eec-8015-4c40-b900-d47b9824ec83" chipset="mtlgt2" name="Ext126" />
+    <guid config_hash="e7e92bbe863bdde8cc94787d195e23a7" mdapi_config_hash="78d1acbe85d3523bca2438dfad5a32f4" id="7d149ad7-90bd-4201-8791-2e8c1c4359e8" chipset="mtlgt2" name="Ext128" />
+    <guid config_hash="4470e96526ab06dee1ca081263b997d6" mdapi_config_hash="bfdb7b3de0006c0e3e1d56fad640e969" id="52597b67-dea9-411c-845e-c7f7befa744e" chipset="mtlgt2" name="Ext130" />
+    <guid config_hash="629aa39f9b3fa68572fb57e310b00e07" mdapi_config_hash="294cdd784cce86eb864ee9b066683bbb" id="56b5eb77-117c-4392-a4ed-6a809598c28f" chipset="mtlgt2" name="Ext131" />
+    <guid config_hash="ec2b35cf249483b929fb5f2022c40727" mdapi_config_hash="e0dbd537b992d8b56423012b918e6851" id="d4f5b1c3-553d-46f6-abb8-8535ee5e4c90" chipset="mtlgt2" name="Ext134" />
+    <guid config_hash="b699f44898863063eca264cbf37b766f" mdapi_config_hash="ed8191e28050161cd09ed205bca25ee9" id="2aa7d46b-8b53-4693-9e5b-1245dc85cb90" chipset="mtlgt2" name="Ext135" />
+    <guid config_hash="670ece191cdea35460a03f7979437764" mdapi_config_hash="32942251e17d0a11df3ff5173dbdc579" id="18d95a38-b79c-42ac-a1c1-f6f3ef5ee213" chipset="mtlgt2" name="Ext138" />
+    <guid config_hash="ef79fbaa45231adb103add557bcdfa7e" mdapi_config_hash="296a99e159aa5c96a44856cd1cbccef4" id="7869d90b-8a61-40c5-b705-91ce55b64cd8" chipset="mtlgt2" name="Ext139" />
+    <guid config_hash="67feee4b0df2ef6c6a6a39fbe4a07c4f" mdapi_config_hash="10f40c195c6f1ee08197d344cc5aa8d6" id="c9f005ff-957d-471f-b6d3-98ebfd423f88" chipset="mtlgt2" name="Ext142" />
+    <guid config_hash="d1407c269331aaa2d0c05f45425a0104" mdapi_config_hash="94290964a637448329f16058ba7d3ca1" id="bf8f687e-d93f-439a-904e-14758015b273" chipset="mtlgt2" name="Ext143" />
+    <guid config_hash="dc38e27d4dc72f8589c700821d80a78a" mdapi_config_hash="ed1d58c0bae86e0b3eb502fbeb0b1910" id="38cb3c8a-b6b1-46e9-b18e-331afd4faad6" chipset="mtlgt2" name="Ext146" />
+    <guid config_hash="d8c3994e7afd686d83ca62895c426ae7" mdapi_config_hash="10dec6f0a33749f4cee8d7cfaa551923" id="f0624b43-b429-4be9-9cef-1a9c966b9bf5" chipset="mtlgt2" name="Ext147" />
+    <guid config_hash="26a13684fb76c50dcf355fdc52bb8b28" mdapi_config_hash="a47769433761c24e04458cf2ca429a0f" id="9be51bc5-540f-4a51-80b9-a6e8f849107c" chipset="mtlgt2" name="Ext150" />
+    <guid config_hash="218be593da18d02c27dc438ebeac66eb" mdapi_config_hash="1a890451088d9aeec44fda3d667d92d2" id="5303f1e7-b41b-4f48-a638-02293743f84d" chipset="mtlgt2" name="Ext151" />
+    <guid config_hash="65afbf2d1ae9eef7ad7e15b50296d871" mdapi_config_hash="115918bdb42fc9fc6ab2bc2ae7652ea7" id="269bfd75-1e50-4717-959c-f72de6c5e37e" chipset="mtlgt2" name="Ext154" />
+    <guid config_hash="6b4c698b68aa600206bcc675a0ed43f8" mdapi_config_hash="9666952a31fe9299c21619db6dd6305d" id="77c2e8f4-297f-46ed-95a9-370e21e131c6" chipset="mtlgt2" name="Ext155" />
+    <guid config_hash="195f65fab22787417625c53e6382e313" mdapi_config_hash="4bff69a0e541805bbc4fa022cda7ad6e" id="dea81dd8-3792-4245-9ce3-4591a6ff2d31" chipset="mtlgt2" name="Ext156" />
+    <guid config_hash="3c74a93df63b8c7ae983fb52e95571d8" mdapi_config_hash="cb151c04e5f91f69a2bedc5926db6d93" id="0f6dfbfe-33f8-4910-996a-8b639c57066f" chipset="mtlgt2" name="Ext158" />
+    <guid config_hash="f7fae8ec5932274f4d5cfa49470e6612" mdapi_config_hash="be619a81061f1a909836d043bb90c24a" id="7b4a0c8f-f35d-49e2-b1a7-243740c4d888" chipset="mtlgt2" name="Ext159" />
+    <guid config_hash="da5d1d215d57616f2616302e959a51ed" mdapi_config_hash="8794a250fa93e368fbe322c2ced3d2a2" id="bf4c98bf-1930-408b-87ad-2674e6e617c0" chipset="mtlgt2" name="Ext161" />
+    <guid config_hash="3c57a4af712738e96d2500279bc29336" mdapi_config_hash="6049a1063763f119e351b87db59870f3" id="2826204b-5835-4b64-840f-133d1ca5b03a" chipset="mtlgt2" name="Ext163" />
+    <guid config_hash="ad47d4b0383fb791726a759ef28a203c" mdapi_config_hash="f359d9b78a1555b5c629c8a3f6a3c8fd" id="b9e7193e-99b9-4e9f-9738-de7144ea3b39" chipset="mtlgt2" name="Ext165" />
+    <guid config_hash="093c28b535d5b7a4ba2c2e08b0d61524" mdapi_config_hash="87421ac9c8a0d5159f46092e33ed2b32" id="4797cea4-4618-42c1-aa36-0f8210b42a47" chipset="mtlgt2" name="Ext167" />
+    <guid config_hash="59a2448863b980cc9c84588a8198323a" mdapi_config_hash="9d774cf27539f902b5db3668917df66d" id="daeb4a53-f0ba-4bec-9462-8025cc17ca8b" chipset="mtlgt2" name="Ext169" />
+    <guid config_hash="25c9d666664c04121ab36571481c4ee2" mdapi_config_hash="1db7b682ea705b0324dedacc348172a6" id="2aeaff8e-ce08-49f1-aacf-c9631dc3c756" chipset="mtlgt2" name="Ext171" />
+    <guid config_hash="94be50121358ed4c70c6c2d88eb054ec" mdapi_config_hash="c2fb4cbfb7c1b9d4b0da96354510ccbf" id="5005db3a-31a9-498c-8153-bf47147473b1" chipset="mtlgt2" name="Ext173" />
+    <guid config_hash="8bc132f67c4cf5774cbeccb244a3be7f" mdapi_config_hash="a8559e8882c604ea60d5cd17154ea474" id="3e2a351c-3f4f-461a-a6cf-64f099b83fc5" chipset="mtlgt2" name="Ext174" />
+    <guid config_hash="43db74afdbb95a784730e3e1977f3e7b" mdapi_config_hash="06e097060db7f52d5e1cdefca8b70bcd" id="14c17f9b-021b-41e5-a4f0-ab8daaad56a4" chipset="mtlgt2" name="Ext175" />
+    <guid config_hash="67a7d4eff753974ebe194d1a752bf814" mdapi_config_hash="4a885bf9c1decaf3f4ea6a0dd860de8f" id="a258d429-a165-4fed-bbcb-c743a09dd68f" chipset="mtlgt2" name="Ext176" />
+    <guid config_hash="a1d39c5d18e6b8869f26eef61ada3129" mdapi_config_hash="8651b8f0d81c9f4b961bc7b013928194" id="986b3512-df42-4300-a3fb-3a0d5835b5dc" chipset="mtlgt2" name="Ext177" />
+    <guid config_hash="152f2a19d7d671d47870f45fa2e2dd70" mdapi_config_hash="381509f3e8a574a4d27b68ad44c9f8a3" id="29b4890b-203f-44d7-a007-270354d414ed" chipset="mtlgt2" name="Ext181" />
+    <guid config_hash="dddeefc99febe71a2e99e4290be080eb" mdapi_config_hash="0dff1ae921ab22bf34fa593a757181b3" id="87ec0ca0-a406-4ddb-9fb9-60beed37e12a" chipset="mtlgt2" name="Ext184" />
+    <guid config_hash="7ed8c161b3386c558ee6bb1ca98ad3f3" mdapi_config_hash="0a77253275fb74a2be38fe879dd2fe89" id="11c77c80-498e-4cad-9e2d-565a52fd3578" chipset="mtlgt2" name="Ext188" />
+    <guid config_hash="33ca4423b0d44f0a3d77ab101be071f1" mdapi_config_hash="860911cb77ef428f4a35c18f83d2c60d" id="123714d3-5d52-49de-91eb-0c909557d221" chipset="mtlgt2" name="Ext190" />
+    <guid config_hash="7f8e420216e76edaaa23a477822bda55" mdapi_config_hash="13bffc77f392afd555b2904abc76f387" id="d2741830-1ee3-42ab-b578-2b9c31a69c1c" chipset="mtlgt2" name="Ext192" />
+    <guid config_hash="17c675742eb948d0e949699702f49c1d" mdapi_config_hash="4e8136e9561f4a161c87fecfe23d2c69" id="d41508b5-921c-4033-a2f0-8a88aad4e718" chipset="mtlgt2" name="Ext195" />
+    <guid config_hash="da6705ca06243ec6f1b464cd2e8c2bb4" mdapi_config_hash="b79a9dddeb2626a58b95e1feb6596589" id="73a53c50-0922-4d77-87d9-13b18d368e4e" chipset="mtlgt2" name="Ext200" />
+    <guid config_hash="c23cf5cd84138f26cd070b6b4bb43739" mdapi_config_hash="88f8aa2c40575a409a0127846902f7cf" id="32b9a4f4-b1f0-478f-8998-d86e5c5c458f" chipset="mtlgt2" name="Ext201" />
+    <guid config_hash="02325001ddfda0d37349ca08505e1231" mdapi_config_hash="3e452d2bd20cf7afe19a753dc2549a8d" id="e1606d82-b67b-4fd8-9b07-a769dd6e6581" chipset="mtlgt2" name="Ext202" />
+    <guid config_hash="14091012d862395ff4b1437664191971" mdapi_config_hash="5895f1f314f2fc4faf658e0120ff5450" id="16647b5e-c9e4-4201-afc2-cb47a9f3f4d2" chipset="mtlgt2" name="Ext203" />
+    <guid config_hash="bd1eaa0c95df534b59d09c72ca74a834" mdapi_config_hash="2c0d357c1467b95637a749f3d2e7e263" id="639a17e1-f339-49ab-9884-6b9a91a5a0c8" chipset="mtlgt2" name="Ext204" />
+    <guid config_hash="d5c3727ba4b91f4f62a9e15d8946b077" mdapi_config_hash="7f08cb770f0ff30aba8e827fb4de8b90" id="7420acf6-1809-41e3-b5d1-49455c60aa66" chipset="mtlgt2" name="Ext205" />
+    <guid config_hash="e3369a45267dbff4647add8f7c63bb71" mdapi_config_hash="7e0ecb17c631286c7c6fb2f9aa1c8322" id="015d134a-1b6e-4969-b972-b904c1d0cc85" chipset="mtlgt2" name="Ext212" />
+    <guid config_hash="509e5553d44ab5dd6f2c12838cfc8f95" mdapi_config_hash="b7e302f68f1b9b4d12c4c3aa00a43cec" id="191eb41b-6180-4cf9-b3fb-048bf4da8b94" chipset="mtlgt2" name="Ext214" />
+    <guid config_hash="73aaa5f46199c0784fdd70cffe5dc8ca" mdapi_config_hash="0915cca136dce4bea26f02fd1332316e" id="840ad20c-c8ba-4dd5-bc42-674987d6ec79" chipset="mtlgt2" name="Ext220" />
+    <guid config_hash="29c1ce19b5c64ffc6888f0842f8e9639" mdapi_config_hash="e034a61144f3354cc5bc8290e18ec8b3" id="a8bfddc1-d469-45d6-8790-7d8c649ada41" chipset="mtlgt2" name="Ext225" />
+    <guid config_hash="2fd50f84108fb2b17dfd2fada9d493e8" mdapi_config_hash="64eeab5e884e9addbecbe622f6bc637d" id="325e5e9b-a055-4c22-8997-98d546a31afe" chipset="mtlgt2" name="Ext227" />
+    <guid config_hash="38e23efc228a66b540103b546d489177" mdapi_config_hash="d0944fa48ea47bef3d83b16cd1fa5953" id="94537bb4-60fd-45fe-b172-29ed90c9abac" chipset="mtlgt2" name="Ext229" />
+    <guid config_hash="f80fcb75fad26cf87314e94d9bd1a20c" mdapi_config_hash="9c77551e17de495a8da3a3e865777f7a" id="7fceb68b-57e6-480d-81d1-991d8d6f7c4d" chipset="mtlgt2" name="Ext231" />
+    <guid config_hash="3057d5b3171642e12525304349ad7247" mdapi_config_hash="6bbe6f35785720965c5242880eeaf3ba" id="ad62dc60-987b-415e-9f7d-6976fbe82dac" chipset="mtlgt2" name="Ext237" />
+    <guid config_hash="956b340586f38bcdf82f515933afb5f5" mdapi_config_hash="4455b4c19f5834f0116157984f177517" id="e630dd77-cf9e-4deb-8f52-57506b306b63" chipset="mtlgt2" name="Ext238" />
+    <guid config_hash="f913d0b7b86a97842c99aed003b9e877" mdapi_config_hash="4d503375718b58b40107c3266fa2934d" id="6dfee12d-6bfc-434a-8873-bc076a47d80b" chipset="mtlgt2" name="Ext239" />
+    <guid config_hash="4a0418d6d5897f965772e67d7d510562" mdapi_config_hash="04933d3b78df474aeb64f18b825769f0" id="5edd0480-7a46-49f7-8709-7f737d0cc42a" chipset="mtlgt2" name="Ext240" />
+    <guid config_hash="4c0093ef4548f2db8d6b1647ae435f07" mdapi_config_hash="ce24cd03c7ed2767d8ee655bac0f2f84" id="a7cd6b7e-e8ee-4853-b2d3-269bf3ed73c7" chipset="mtlgt2" name="Ext500" />
+    <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="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" />
+    <guid config_hash="e447131244fe748ce43754407e989b65" mdapi_config_hash="951d9d20fb4e62ea8f73b3dd1177c13e" id="13f8665d-c5aa-47b4-ae3e-af80dd134e1b" chipset="mtlgt2" name="Ext519" />
+    <guid config_hash="494e73626c9ed982b41321ceb420fb5d" mdapi_config_hash="526073cfeb41eade55a0648cc0d0d8a6" id="4d5b4699-5a6a-4a85-81e1-3ad75d735476" chipset="mtlgt2" name="Ext520" />
+    <guid config_hash="afbf6eff823dc311237bffc716d9d6e2" mdapi_config_hash="810532e0a855e4a0b0d80f61bf141386" id="f9cc9e2c-c517-49a1-b27c-f81b08b411fc" chipset="mtlgt2" name="Ext521" />
+    <guid config_hash="039e3ae17b57bcec805b99da34a9ba2d" mdapi_config_hash="63296c1a360c20a6a7148bc2c019c989" id="f5fe71de-58e0-4fba-a75a-111906d8fb5b" chipset="mtlgt2" name="Ext522" />
+    <guid config_hash="976d54e9e4b863064ced81abfcb7a2f6" mdapi_config_hash="8f550dd46cf4040c385bb60019603a82" id="46d82207-1235-45ea-a0e6-f71fa55a3380" chipset="mtlgt2" name="Ext523" />
+    <guid config_hash="2d2f917670c799eaa8c65ef9ded7c1be" mdapi_config_hash="637b8f7cf80c76dd43a1f1f83bd23815" id="0ea54a28-5052-4c2a-a18a-8cc17383a072" chipset="mtlgt2" name="Ext540" />
+    <guid config_hash="513f0079011c37b9c81328099855f930" mdapi_config_hash="2e38671e81188a5e0d02ed2e9d0fa9b2" id="9cd9ba1c-3c59-483d-9ce3-136c8898f09d" chipset="mtlgt2" name="Ext541" />
+    <guid config_hash="9ebc7179829ba2d6546228ed24f3b7b9" mdapi_config_hash="a8104fb4f8d618d65e645d31d655cf45" id="ab29d0d9-3388-4316-af23-932aeef1ed23" chipset="mtlgt2" name="Ext542" />
+    <guid config_hash="fefee4d6b9f90c0fed73deb39bcc31ba" mdapi_config_hash="9ee06d6b610dac353d674590a41160e3" id="16bf4ba3-2204-4d52-8f5e-d49ef8f571bb" chipset="mtlgt2" name="Ext543" />
+    <guid config_hash="f5ad3b4e2f9a2d3bd99059e67d97f7dc" mdapi_config_hash="102886c4384e274df028ed8694d43d00" id="66331aff-0aaf-41e7-ad18-fa61060d3af6" chipset="mtlgt2" name="Ext604" />
+    <guid config_hash="6389c2dcb6a2b100db74a782d4f7006f" mdapi_config_hash="d8d0fcb20772d25731d0ac8a7d587cb9" id="2d24479d-6766-4632-8d2b-f440c9bf53c7" chipset="mtlgt2" name="Ext1000" />
+    <guid config_hash="e358e6156c7379f8064b679128fe0747" mdapi_config_hash="a9988177c98737d0b52bcf215079e95b" id="15aa1ce0-6750-4566-8b2b-6d71a6ac4039" chipset="mtlgt2" name="Ext1001" />
+    <guid config_hash="c4809b4f9dbd405691ebd29dea153aa2" mdapi_config_hash="8d1002c55a03d16517de67b4b8970d12" id="23131267-15c5-47bc-bcb3-4c05fc452e0e" chipset="mtlgt2" name="Ext1002" />
+    <guid config_hash="33b1153b5651e90c9f876a24d622b8ac" mdapi_config_hash="3006063ffc95bfa63b84bb54ea205114" id="605d1ee1-c160-46ee-9e31-6daf3885401c" chipset="mtlgt2" name="Ext1003" />
+    <guid config_hash="8bb1139fff1ee995a5ade92734e11d8a" mdapi_config_hash="fbbbc2eaec0f182e838cbdfa1c8372c2" id="40f4dcae-3ed1-4f3e-bddf-dbb87bc4279b" chipset="mtlgt2" name="Ext1004" />
+    <guid config_hash="83d7b8e952e3598565267c65964b2771" mdapi_config_hash="7a5482c523806abe25c8c4dbcf5273e7" id="099da490-3594-4baa-98af-cea30d4d6c15" chipset="mtlgt2" name="Ext1005" />
+    <guid config_hash="e7efe91c7aeb591043358c1b5e3c019d" mdapi_config_hash="94ecec147a25de742814fbb01fd4e9c3" id="ab298da4-5917-4592-bbe0-1c21dedf000b" chipset="mtlgt2" name="Ext1006" />
+    <guid config_hash="a96fb9e9d0949e6cc372ef445fded872" mdapi_config_hash="7fb3e6405e4b54b8566589aa79cd960e" id="1b429688-49f8-48f2-8a06-18ba5c6a2b52" chipset="mtlgt2" name="Ext1007" />
+    <guid config_hash="310dddcb04d1088a3865f698d758cbc2" mdapi_config_hash="c6a3be7d49b5697074021ca673a39a57" id="a4717f34-1c8b-40d8-a022-abbcf03cc6e5" chipset="mtlgt2" name="Ext1010" />
+    <guid config_hash="d379711c3ed9953849437a5a9c1b42ed" mdapi_config_hash="72853bc6b1fc36dfe4c7eeec066894eb" id="1124d1b6-6182-4b5a-950b-27b38ef7c996" chipset="mtlgt3" name="RenderBasic" />
+    <guid config_hash="47dd4aee9ef5ba2d15e61d25f735d1d4" mdapi_config_hash="c4c86e8bd7e0cfffa7c553517340292a" id="522743d7-4e01-461a-8600-7904e8ddc80c" chipset="mtlgt3" name="ComputeBasic" />
+    <guid config_hash="da49b5c7e497eab30522295f416dd84a" mdapi_config_hash="80f802eb9434e078d1c158be06940d88" id="d9edd254-60e8-4ce0-82b1-7b3de3bc79a6" chipset="mtlgt3" name="AsyncCompute" />
+    <guid config_hash="1a28d05d945714b099a9417181b72962" mdapi_config_hash="0cdf3168ffd88a84c2a42d4c62567189" id="703a9693-1444-4e7c-a235-1c4d6ee01943" chipset="mtlgt3" name="XveActivity" />
+    <guid config_hash="7fb3348429c22272f30d06cc280d712f" mdapi_config_hash="4a73d19b314757a104d1e3590c2f6c00" id="edae72d3-bb06-47af-87b4-7585274c6076" chipset="mtlgt3" name="GpuBusyness" />
+    <guid config_hash="048c29c99f2a51a14bb4621a3251854e" mdapi_config_hash="3ce1c33e1454f806fc806f7652a9eafb" id="e1a408d6-aece-4bde-8bbd-1c7fbfff02cf" chipset="mtlgt3" name="HDCAndSF1" />
+    <guid config_hash="b48a8431b61a59cc9e42c4cc201a47c0" mdapi_config_hash="fd8ba68df79e2b2a9954350de001161d" id="374e8aa3-09df-4d69-ad32-3133f6ad3c86" chipset="mtlgt3" name="HDCAndSF2" />
+    <guid config_hash="8b524b5a9426d6a09573abb7e7f3a44c" mdapi_config_hash="977769471915f98207ed14448a6bc61f" id="580d5311-4e9d-4210-b419-37259ffcd3f2" chipset="mtlgt3" name="L3" />
+    <guid config_hash="b0872ef353390889a717294e1ce9c50e" mdapi_config_hash="1a1c98d09ca2ed37298fd3aac477e0cb" id="4286bd8f-f9db-45e5-aa37-51dd7067f751" chipset="mtlgt3" name="RasterizerAndPixelBackend1" />
+    <guid config_hash="5e3c14edffb52947c5f4ec4292f9c43e" mdapi_config_hash="020f38e1b71f6039b7ae4875c48f948e" id="ac90f98d-14a6-4dcc-b5d7-31ee157bb6e2" chipset="mtlgt3" name="RasterizerAndPixelBackend2" />
+    <guid config_hash="e395591031565b1dddf3034216782bc1" mdapi_config_hash="aa2220d260291f3d3b2641205bffac96" id="f15b97f6-eb1b-43a8-839c-7bd956c143c4" chipset="mtlgt3" name="RenderPipeProfile1" />
+    <guid config_hash="06711cd69224f5be0970f1a34467da2c" mdapi_config_hash="464d03b341ea8fc6fe0eda64516a8eeb" id="86b9199d-8a44-4694-bbde-6fd35bada236" chipset="mtlgt3" name="RenderPipeProfile2" />
+    <guid config_hash="88d809d679c5560d7b83ea96370f8af4" mdapi_config_hash="5657d312fbca127e42830767e57baa54" id="ae70a69c-341d-492a-b703-afa08a3497ba" chipset="mtlgt3" name="Sampler" />
+    <guid config_hash="f43fa5ab5fa6f475cd9f4debc4b4dfae" mdapi_config_hash="d6521ce4ed82ece1d1af49577ee3e4f4" id="cf27081a-d750-4c9d-8a19-154f976992ee" chipset="mtlgt3" name="TDL1" />
+    <guid config_hash="d5da95435f87b3b2dddad10f4e1accab" mdapi_config_hash="f81b3500dba6bae30cb475a68b450623" id="fa292653-8b18-448b-b57e-8e8ff92fac11" chipset="mtlgt3" name="TDL2" />
+    <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="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="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" />
+    <guid config_hash="4e1fe79bb42638306bcea8cc462480e0" mdapi_config_hash="7a8465c347b7ec6e7c02cbabf1874764" id="3833e442-880a-4746-9df1-6347b7e5a081" chipset="mtlgt3" name="Ext11" />
+    <guid config_hash="c1d03b2147ea0f76deb7cfeba2902229" mdapi_config_hash="1d18ab4e0bcded835e9eecb45d9416b0" id="931bb082-6f87-450e-8910-fd6a4ab206f7" chipset="mtlgt3" name="Ext12" />
+    <guid config_hash="08e510b3f7601ce818fdba8c8b4f964c" mdapi_config_hash="4f1ef20feeef9aa8adfc8bc50cc38b42" id="f7fdd159-e273-47ab-99bc-f4fc410c6053" chipset="mtlgt3" name="Ext13" />
+    <guid config_hash="293f272afc98ed59c9d541aa896bbf9d" mdapi_config_hash="8afb2b1a2427c87340d1430cf61545f0" id="423732fb-f20a-4549-b632-53ac587668d9" chipset="mtlgt3" name="Ext14" />
+    <guid config_hash="90b4639151f5f3ad30d2ef227e96aed8" mdapi_config_hash="2925a421c27926ff8498938f9587206d" id="0fa8f991-d412-4014-a7a7-be08ccf5fc4c" chipset="mtlgt3" name="Ext15" />
+    <guid config_hash="f8641fe31d5f36c58296692ae77b2620" mdapi_config_hash="b0753979c6cc048e8676213967aee15c" id="e37de2da-c16f-4b2a-82bc-e1062fabfa2a" chipset="mtlgt3" name="Ext16" />
+    <guid config_hash="499b40c34f6bb9c34b4b8413ade24caa" mdapi_config_hash="27bc07fbc0e01d65bee4f1062a256bfe" id="e8a60701-f694-496d-95be-34cc80796a46" chipset="mtlgt3" name="Ext17" />
+    <guid config_hash="e83612768f09ec0b9efb3520a870dd8c" mdapi_config_hash="7f94b7c8d502d8d088987c5d32dc78b4" id="1c957158-09ff-4a89-aa5b-3c1b4e46f9ba" chipset="mtlgt3" name="Ext18" />
+    <guid config_hash="e02650a394a74a1e90dc736eb01a1026" mdapi_config_hash="38f94039244cad2e61756b842212a155" id="a0b46166-6078-4045-8321-6df39b8e8ced" chipset="mtlgt3" name="Ext21" />
+    <guid config_hash="b9f8f24947fa3168fa34073ae5fcc011" mdapi_config_hash="06f7be75246aa3c7b98295a4a5968dcd" id="92371114-aa03-46d8-ab34-6e843fc92123" chipset="mtlgt3" name="Ext22" />
+    <guid config_hash="e8c0a424c152b1543e94959717fdf5a1" mdapi_config_hash="ee36bce469ae9447b8c037b3095ccae3" id="c7cd47a5-39e8-4c58-9b4f-a9c6df869db8" chipset="mtlgt3" name="Ext23" />
+    <guid config_hash="21d31dff161af19a3857da0d9b074010" mdapi_config_hash="7394fe9b26fc0c3d7c6bc48f70b1fb48" id="2adf2c05-e151-4fa7-9e77-2331bd94235e" chipset="mtlgt3" name="Ext24" />
+    <guid config_hash="ac4fd588139786c58c0e61d7c50c85a0" mdapi_config_hash="91495c97b905fe10015bae056d784815" id="1fcdcf0a-54da-4397-8832-c884d8d0b3ff" chipset="mtlgt3" name="Ext28" />
+    <guid config_hash="ee257c12bdca8b749fe768d79d88c38e" mdapi_config_hash="2289dc2115f1ac4991ad8e310769175c" id="9701aca8-76a6-49ee-96c9-ff983f24d29e" chipset="mtlgt3" name="Ext29" />
+    <guid config_hash="9162f644c647e1b70d0afd9315c05744" mdapi_config_hash="fcd9f43d5bce9ee5df7b91bccd2bdfab" id="f47e74cf-7966-43ea-bbac-46f9a0d1dc1f" chipset="mtlgt3" name="Ext31" />
+    <guid config_hash="9b849140144bf66ebebf23069c05b145" mdapi_config_hash="fd831451961ab418239cbff8a7f8ca24" id="3e220edc-390e-4964-9e57-4d45f3e01de8" chipset="mtlgt3" name="Ext32" />
+    <guid config_hash="5fb2b44333c55500099bc27be124dea9" mdapi_config_hash="8bb2e9cce7b75a31af89abbfd00a5f30" id="d334294d-8dd2-4ae2-ae31-7d0d4acc2b6b" chipset="mtlgt3" name="Ext35" />
+    <guid config_hash="b163996d15ec4d05b4e8cce994a77a12" mdapi_config_hash="fec8dd0067a0b639ad34504fb6e30af1" id="b749495f-4fc4-4e54-965e-38990758473b" chipset="mtlgt3" name="Ext36" />
+    <guid config_hash="339da67172ac6e89bb82de83fbf43426" mdapi_config_hash="39e3a795587d5d639ca966fc2cdea1aa" id="09c0f842-3711-48f5-bf3e-74c1caa9f791" chipset="mtlgt3" name="Ext39" />
+    <guid config_hash="39b9ac5af143efc2ffbfbb79d5ff1e77" mdapi_config_hash="089833a35d72eda8879d42694f3544a6" id="be7c864e-0538-420d-916d-ce3aed7742ba" chipset="mtlgt3" name="Ext40" />
+    <guid config_hash="3f3a88d33535885690065d3a878f8503" mdapi_config_hash="81200085395f8713215ccd92a25e8fbd" id="86cf3d13-947b-4f7f-9685-1ff59ec342dd" chipset="mtlgt3" name="Ext43" />
+    <guid config_hash="75ec01b46b99f1a4248267f9ffdddf93" mdapi_config_hash="6b383cdfbf61cd299f3d394ea4b87e27" id="7675136e-a91e-4bf8-b206-32591b878339" chipset="mtlgt3" name="Ext44" />
+    <guid config_hash="cd1c94468b06e746dea62d9aa7756854" mdapi_config_hash="69910214c3c05ecfbf887ab686786cf3" id="e953dbdb-3451-4912-80ae-241ecc56a59e" chipset="mtlgt3" name="Ext45" />
+    <guid config_hash="4f0ab88a81b1430689674cd48b6d7995" mdapi_config_hash="96b88c95ba548e725b2f310f4cdd7a04" id="94219d74-6a23-4b93-bf62-88c9ad4ed4bd" chipset="mtlgt3" name="Ext46" />
+    <guid config_hash="d5128354807f67610a2ab9b8d9bad98f" mdapi_config_hash="a48c72657fb95a953a244c2423e628d6" id="cab52f96-c6bf-48ca-a34e-17e52cadc8a6" chipset="mtlgt3" name="Ext51" />
+    <guid config_hash="20fd7da676995435b082246cf05688fb" mdapi_config_hash="9a0cba03cbfa007bacea6424ea656109" id="e4597eb9-ffa4-4da5-a180-5e12299f22cc" chipset="mtlgt3" name="Ext53" />
+    <guid config_hash="afd622cf020c188763990941c4a32a2f" mdapi_config_hash="caa580213e78457e9b662f156c35f061" id="0a11c113-298b-4f77-a085-1b7cac225015" chipset="mtlgt3" name="Ext54" />
+    <guid config_hash="b47cd815b52a669c1cf78dad8de38c5b" mdapi_config_hash="bc505d4ae2001af2001205b2aa7e61f4" id="6f983509-03f1-463a-be88-3e4a40de40b4" chipset="mtlgt3" name="Ext57" />
+    <guid config_hash="ca4cce8a20d5cb29ff6e1d7b6d2ca6cf" mdapi_config_hash="9ec8b51606a07781842c6a65677ac3ba" id="75d3fdde-e74d-4ec2-a7f0-f88fe5971af3" chipset="mtlgt3" name="Ext58" />
+    <guid config_hash="84ad0a3caefdb2eaabe2aab0ca4a8e19" mdapi_config_hash="b564f52ad00dce14616dc099a1ce1fca" id="98c25532-687f-489a-b070-667edd3c41f9" chipset="mtlgt3" name="Ext61" />
+    <guid config_hash="2d68be12adc9228cb26ecefbf3e8d1a4" mdapi_config_hash="95b46b4cb2392c6d22337ba7a4ad357d" id="6ee28b50-5390-4655-af96-9d99569aee82" chipset="mtlgt3" name="Ext62" />
+    <guid config_hash="f62f805fe778e9ace913157a48827723" mdapi_config_hash="061736899929d5d258a65ca9723c08a7" id="89a4a65b-cbfa-4c75-99fb-e5d7f0def495" chipset="mtlgt3" name="Ext65" />
+    <guid config_hash="b1e63c805766ea8c224582126cb0d690" mdapi_config_hash="e258888e38bf640292690038895b1850" id="99e44f76-928f-4835-866f-663e25c69f66" chipset="mtlgt3" name="Ext66" />
+    <guid config_hash="f382748edeb17c2ac8e8d4817c4ee857" mdapi_config_hash="9665da513adfec01d0e7e1712daa76ac" id="f45dfc0c-70ef-48bd-83a2-30cf4a6ba0d5" chipset="mtlgt3" name="Ext67" />
+    <guid config_hash="d1f56fddb51936e6bb5d0419a3f0a1dd" mdapi_config_hash="b07d07820cadeebf0c104193c4905851" id="eab0942c-5181-4caf-aeec-44d9a0b69ada" chipset="mtlgt3" name="Ext68" />
+    <guid config_hash="c41d897e684d62aadb6664123bd03e10" mdapi_config_hash="5a663ddf09a8098711657aa90439bfe9" id="d9d0c398-6429-4ba8-bc08-6e8556a5880f" chipset="mtlgt3" name="Ext73" />
+    <guid config_hash="4e132724015f4644dc87f47aa13cdb0c" mdapi_config_hash="7f5cab881c9fdecbb261eccc7f41f98e" id="d91bf24f-08af-4d1d-b957-c2293923c9a4" chipset="mtlgt3" name="Ext74" />
+    <guid config_hash="f910a73bba1ab6363cc288fa80ddafc7" mdapi_config_hash="bc475f8d144f693ae277df2bd6533254" id="b5c2eaef-cffa-490b-a80e-de2b37ca63d8" chipset="mtlgt3" name="Ext75" />
+    <guid config_hash="cd48e9cbe7a28efb33867e8e4f41f0e2" mdapi_config_hash="9fe81fdea81bde745bf04df73a1d746b" id="d5cdafcf-483d-40f7-8dc9-feca73e94246" chipset="mtlgt3" name="Ext76" />
+    <guid config_hash="eaf9757a62fe2f398c9380e422a857bc" mdapi_config_hash="71a18b5b244fc162903e5a25bebcd7ed" id="240802cf-de55-472f-9e0a-710270ae9487" chipset="mtlgt3" name="Ext77" />
+    <guid config_hash="73370af89841c5fbd69f28ff5de0cf91" mdapi_config_hash="b6c293b26c65ed937ac3bd9c7fcc306b" id="3dd49211-aa69-4711-87c2-97289ff9cfff" chipset="mtlgt3" name="Ext78" />
+    <guid config_hash="7f1d73b2bdcf2bbe209e9d805ec49155" mdapi_config_hash="bd9c2882a3475d7fe2fbb0ad8e54d896" id="64aeba75-9dbe-4231-81f6-8c991b84c070" chipset="mtlgt3" name="Ext79" />
+    <guid config_hash="b18d414e19913ac7d67fcc8429952b52" mdapi_config_hash="3ed09a19ca45e3ed1d85bd67d5426ef9" id="3b293ce5-af38-4ae2-96f4-a542d3c68d5e" chipset="mtlgt3" name="Ext80" />
+    <guid config_hash="2536c43cb32b23255f894144b6018b6d" mdapi_config_hash="bc884426f69ac181e5132679a9721fd8" id="09516dce-66a0-499f-8457-97f78bb921e6" chipset="mtlgt3" name="Ext81" />
+    <guid config_hash="0bd76ac92be1e0843a2e34b3cd0c66d7" mdapi_config_hash="fabce59e3010dc86db4dd3d0038b4766" id="c0bdc35b-af55-4ac9-8078-f22578201756" chipset="mtlgt3" name="Ext82" />
+    <guid config_hash="cc1c7c752b2c021cc3f4d9acb06dcd1d" mdapi_config_hash="8fd5680f27748d5690472f6851e552a9" id="7f4b6bdf-4a28-4e6b-a67b-c9a0d320ddb8" chipset="mtlgt3" name="Ext83" />
+    <guid config_hash="62dcdd19bc413d716de3570b53678ba2" mdapi_config_hash="cbe0281f4815f184a7b48993998c804b" id="e19c5430-c632-43eb-b27f-eeb3d405bfd8" chipset="mtlgt3" name="Ext85" />
+    <guid config_hash="8944b12e013d6271d1b077410542b94f" mdapi_config_hash="e58affaf2999cda7dba89025fe8644d7" id="d379e5f5-32f3-4a6b-957f-5ccf607dda00" chipset="mtlgt3" name="Ext86" />
+    <guid config_hash="17f8a602749f92b0976d406b968b98e7" mdapi_config_hash="d3fca83fdd3626419235d6ff0ebd36d1" id="3e86ea71-8695-4815-ac18-0fd4510541a1" chipset="mtlgt3" name="Ext87" />
+    <guid config_hash="5228393e951034c19a63d3103d6b1966" mdapi_config_hash="b4bb5e199fa036db92a58885e9807682" id="31ad28aa-7425-4bb4-b1a3-423821d98d84" chipset="mtlgt3" name="Ext88" />
+    <guid config_hash="a7a4988daa8636042300224f010cb2ab" mdapi_config_hash="bd2d185b1a22864c3b2a7627e76bb5e1" id="a1963e82-2bad-44e2-9bb1-ee18657c09cd" chipset="mtlgt3" name="Ext91" />
+    <guid config_hash="f0f98c9097326a42069cedcbd27af3d8" mdapi_config_hash="b5781d959a25981d8f105fbaa7f8d2b1" id="fdf0722d-cb2e-46bd-8c1f-a85c6fbca3ff" chipset="mtlgt3" name="Ext92" />
+    <guid config_hash="7f1d73b2bdcf2bbe209e9d805ec49155" mdapi_config_hash="bd9c2882a3475d7fe2fbb0ad8e54d896" id="e0810ece-3bb5-4786-871b-b504faa00ba7" chipset="mtlgt3" name="Ext93" />
+    <guid config_hash="b18d414e19913ac7d67fcc8429952b52" mdapi_config_hash="3ed09a19ca45e3ed1d85bd67d5426ef9" id="8697d9f7-3085-4ae7-b88d-e77697972732" chipset="mtlgt3" name="Ext94" />
+    <guid config_hash="2536c43cb32b23255f894144b6018b6d" mdapi_config_hash="bc884426f69ac181e5132679a9721fd8" id="d059b804-fc25-4cbc-9682-ebc806a0d423" chipset="mtlgt3" name="Ext95" />
+    <guid config_hash="0bd76ac92be1e0843a2e34b3cd0c66d7" mdapi_config_hash="fabce59e3010dc86db4dd3d0038b4766" id="ca3c5e8c-b83a-474f-85fa-af7572a1ce27" chipset="mtlgt3" name="Ext96" />
+    <guid config_hash="576bfb7075042c54861b5e7cb7ff5054" mdapi_config_hash="5b18f890d96e4849a783b3361df49ab4" id="fbed5532-2b4f-4194-b856-0404c387b2e4" chipset="mtlgt3" name="Ext97" />
+    <guid config_hash="073488439c64df4b516dc89bfdbb0843" mdapi_config_hash="b499133252e58b0395572f9fdc806c18" id="4c975484-c2f5-4f29-b8fa-8ec1068de77a" chipset="mtlgt3" name="Ext98" />
+    <guid config_hash="51d44e10fd9d3db814bd9ec02ac7a40d" mdapi_config_hash="04f712959a996f10de12a5d91e0bf8e9" id="13017c9d-9d3a-41d1-8f9c-2eafdcbefab4" chipset="mtlgt3" name="Ext99" />
+    <guid config_hash="b9d5ce8b34486c84d3b95da633f545d9" mdapi_config_hash="74bed337b0e6fc7424f5ab775edfd518" id="a7ef0e01-74c3-48c5-8d0f-00241111cf69" chipset="mtlgt3" name="Ext100" />
+    <guid config_hash="4f7d9743a9db109f51abc8113f7cca94" mdapi_config_hash="6794fe08ea932f3c3c3b116e12524fc3" id="7e86b43f-715e-419a-83eb-e8777fd7c77a" chipset="mtlgt3" name="Ext101" />
+    <guid config_hash="b05af81036f19dd181627328ffe79abe" mdapi_config_hash="12a99b6a5ecb3e21c53284c46857c4c4" id="1fb36f5f-04a3-412f-a6ca-80233bf408a0" chipset="mtlgt3" name="Ext102" />
+    <guid config_hash="bbe343fe4f676e722c2d0a6224a02e17" mdapi_config_hash="0a2377c8eabc0e5c9fc7649801b4fdcf" id="5228137b-8e8d-4d67-b195-d5f64a88f5f0" chipset="mtlgt3" name="Ext103" />
+    <guid config_hash="c522d4d4aea6ec4c74eca84a344c9278" mdapi_config_hash="9a0469f5f8dae4f4d2606f210f868748" id="5503160a-7b2a-4099-9ec6-0d3a551cb388" chipset="mtlgt3" name="Ext104" />
+    <guid config_hash="feafba2b5724132b97cbf416958f4722" mdapi_config_hash="a419584a6f24f34f9ef483826da599ad" id="418f87f0-b6d8-4684-883e-4f10a79c5070" chipset="mtlgt3" name="Ext105" />
+    <guid config_hash="3ae3e99e7bc6ad07ad30a1d41bc43fe6" mdapi_config_hash="670ec2d5c4a55d80f2539cd206629cb8" id="f5b7256f-9bf6-4c95-94c1-4044cfad0ea6" chipset="mtlgt3" name="Ext106" />
+    <guid config_hash="af4ac637c7d969f94db5c2ab257d84c0" mdapi_config_hash="a602fbe2e5242c1038a774248654994a" id="28d75db6-0eb3-4651-b820-513a76013504" chipset="mtlgt3" name="Ext107" />
+    <guid config_hash="1fddc804398bca4cbc7da51e83c62f7b" mdapi_config_hash="f2cad9d9868ce728ea3e33a2eb570b7d" id="080da0b6-29a4-416b-b20f-ece0e2527f60" chipset="mtlgt3" name="Ext108" />
+    <guid config_hash="70dbc489309e77cf43a403263022e61d" mdapi_config_hash="ddc68543a084aa59b0f5c3bcad42cfd4" id="75a9e66d-9bbe-46d7-971e-71ca8ef680ff" chipset="mtlgt3" name="Ext109" />
+    <guid config_hash="57581e7da20e5efb1aae9575df5891f2" mdapi_config_hash="26c7a34139e3780d6db117abac5a0904" id="ae5589a9-7e09-4343-a611-3161977315d5" chipset="mtlgt3" name="Ext110" />
+    <guid config_hash="97ccf0a32274b8992a58755320526e5a" mdapi_config_hash="05a1ea932d33ad5e056c3a9d9111f1d9" id="a5e1e738-1338-4d76-a6a7-5517111cc852" chipset="mtlgt3" name="Ext111" />
+    <guid config_hash="94f1a68becc0108391fd6455df24a167" mdapi_config_hash="791ca31527b2e19be0cf657d5ccb769e" id="1a24edc7-8187-43b6-86aa-fcf56c223893" chipset="mtlgt3" name="Ext113" />
+    <guid config_hash="39e4bb4c4f1d3355cb4569c249c6594a" mdapi_config_hash="81d8ce027d98541d64e2b72e7f9b25bf" id="32565d07-8ac7-41c3-89a3-66d0c1100616" chipset="mtlgt3" name="Ext114" />
+    <guid config_hash="ab8c72137940e505ba2bc429826370cd" mdapi_config_hash="3dab0d87815befc90fe31cb9d19501b5" id="f725009a-c5e7-4418-9adf-ddb70cb2edde" chipset="mtlgt3" name="Ext116" />
+    <guid config_hash="f48cb69981b44d7814b721b9f2e9ecf7" mdapi_config_hash="697b024a5e43609141b242cbca43986b" id="f633497f-c116-461f-a0e9-bb3fdcef7683" chipset="mtlgt3" name="Ext117" />
+    <guid config_hash="fb4115d9d82da1e12aeb2a916f178d3a" mdapi_config_hash="0c600c3e7afef305650921743207c7c7" id="bae9e67e-4b5c-4fb9-b21d-21a6966bed46" chipset="mtlgt3" name="Ext118" />
+    <guid config_hash="a78cdb3224080bf1e1fcfddea6da09cc" mdapi_config_hash="dfc66357e62ec8925722cb5ebfac3a7f" id="95c08faf-813c-4b71-9062-09569c5ff432" chipset="mtlgt3" name="Ext119" />
+    <guid config_hash="9f6aa7635706acff494e64fa7ff81cad" mdapi_config_hash="4068f8f2605c6d716adfae3e01157e62" id="045ee54e-4e02-4877-adb1-5bd14ba49100" chipset="mtlgt3" name="Ext120" />
+    <guid config_hash="8f44bd8a33898bc34d388867c03b56b0" mdapi_config_hash="d891ad4276aec7da16fbef0a258fce78" id="2e3894b5-2b6a-49c4-b2b6-0dde7375cb7b" chipset="mtlgt3" name="Ext121" />
+    <guid config_hash="b6df552dd6b22d1eb876940b48a2584c" mdapi_config_hash="7ee691544205ffce052b1c2e40d37e1d" id="25ca1237-2ed3-447a-9767-1a85da89daef" chipset="mtlgt3" name="Ext122" />
+    <guid config_hash="d397cb13d8d046c737305418f304bfd6" mdapi_config_hash="59f49efdb867ee02b0ff5f3b65bbe682" id="cf41fd07-c4c2-466c-9d85-774dcde02359" chipset="mtlgt3" name="Ext123" />
+    <guid config_hash="5d43f4db3be940748177b34cce073e33" mdapi_config_hash="a86c30fb3396c0513fcf04378a2db310" id="2445e8f0-04c4-43f5-87ff-e2f99a2528ed" chipset="mtlgt3" name="Ext124" />
+    <guid config_hash="3f6e376e1fc3b3c1a02a0769390804b2" mdapi_config_hash="5ea87ac5d2d273d2491575ff19e3b7af" id="446192f5-9062-4f1e-a99e-1be87cdcd0b8" chipset="mtlgt3" name="Ext125" />
+    <guid config_hash="6347d0156a45d953bf19fb8c615fe9da" mdapi_config_hash="959da76f5eaecb36fd7696129e8267f8" id="9a0ec3ea-1d61-413e-8b9c-169cdec1f9b3" chipset="mtlgt3" name="Ext126" />
+    <guid config_hash="987196bae13b80aefd3fee6b6fd8d19e" mdapi_config_hash="21b03817e8c055656086e66395efc36a" id="1f70ab0a-6efd-461b-b06e-3b47d3602f36" chipset="mtlgt3" name="Ext127" />
+    <guid config_hash="ab1c69aab78bc0e99fbf5bc124a99602" mdapi_config_hash="28f42e3d49471ab50b6e698bd191e081" id="9eedb03f-340b-40ec-8a66-43d01973003e" chipset="mtlgt3" name="Ext128" />
+    <guid config_hash="2b7371cbef62964796d62765262a9a93" mdapi_config_hash="44808b31ac67521b3f30fee214f10ccf" id="0e5ffe58-83b2-445b-a439-9ee7a01642d4" chipset="mtlgt3" name="Ext129" />
+    <guid config_hash="ad99f7c4be1c30228b3096af076482d3" mdapi_config_hash="74d0e6925b538873d4e1c8d8d240b35f" id="78925a28-3e52-4d74-b03b-cb27c6a4401a" chipset="mtlgt3" name="Ext130" />
+    <guid config_hash="eba0af682e63c0f02756d60a5d64be1d" mdapi_config_hash="f7fdfda1128fadfe50722d6b0c8bb83a" id="1e91d8d9-ced4-4240-bf9e-fdd7d015c058" chipset="mtlgt3" name="Ext131" />
+    <guid config_hash="ed3bb8fff10f726e24cd8a3229eb5383" mdapi_config_hash="e3d3f89e16affdcd1ebc98bc4b97357c" id="1cacf022-b4d4-401c-abec-acc0a3353adc" chipset="mtlgt3" name="Ext132" />
+    <guid config_hash="8d63083bd63b2f0852c42c2993a48de1" mdapi_config_hash="1516962fb19587567356dea3b216e127" id="3c15657a-b3da-4513-8b9c-08bcc1ca0226" chipset="mtlgt3" name="Ext133" />
+    <guid config_hash="5a925f1b77c1663fb21212f1a431e0a1" mdapi_config_hash="f631688a61862c117cdc463431b81e74" id="da34c79f-d1c6-4d15-b848-2085528bb86b" chipset="mtlgt3" name="Ext134" />
+    <guid config_hash="31fce9668642a49d78187a7b27c90c71" mdapi_config_hash="775004df55bcd37dcb79332fb318610e" id="33ceab81-26bc-49f3-a124-5dbb2d592a87" chipset="mtlgt3" name="Ext135" />
+    <guid config_hash="5754bca32003bd881b498e95881ac453" mdapi_config_hash="367fc7a2dc17d55b0cc3722770f5f19a" id="d8b7d2f7-7c3a-4a68-b6c1-48d197b22945" chipset="mtlgt3" name="Ext136" />
+    <guid config_hash="623b12634eec4435a027b70800edfd58" mdapi_config_hash="b70c259360d9d61765ef0147a6ea1905" id="01d6bd34-b8d1-4412-b53b-0d16b327abec" chipset="mtlgt3" name="Ext137" />
+    <guid config_hash="4d57895e739ced0c7d61af80b26d1838" mdapi_config_hash="87426982a05610f17164d46e57ab8b5b" id="7485f9ec-ac5f-4c6d-8c5f-6a023e7d29d5" chipset="mtlgt3" name="Ext138" />
+    <guid config_hash="5167b7890e43b2e1f26414c15f49a637" mdapi_config_hash="c24330ab6ee2bfab6ba0a0b120ff9533" id="944dc12b-b2fd-4bf5-a59d-540e2b280cdd" chipset="mtlgt3" name="Ext139" />
+    <guid config_hash="6f32499aeec5a375a363d985ac8ad55f" mdapi_config_hash="7b50f0a284bfc4fe93aa2402830b8541" id="5c97330a-b407-4ef8-908f-7fdeec216f81" chipset="mtlgt3" name="Ext140" />
+    <guid config_hash="96d1ba7a8a491037d81b1aaa28503109" mdapi_config_hash="891130523e34fd75a2cb6ce40e845cb7" id="65e4ac2a-db8f-4918-bdd6-ac4d85de160e" chipset="mtlgt3" name="Ext141" />
+    <guid config_hash="9ffc6736d82905502fe255324dae0a45" mdapi_config_hash="942affcfd6a4404b30670ec6e4982406" id="0eb11775-ad71-44d4-ad2c-c2fa6431b144" chipset="mtlgt3" name="Ext142" />
+    <guid config_hash="e5ac62623933c6883c576daa62abe824" mdapi_config_hash="95acc70023a6d603b6fd440f660be0cb" id="d7736d53-f1cb-4899-8f3d-d8aaad1f1c67" chipset="mtlgt3" name="Ext143" />
+    <guid config_hash="68484d77859dc2a8c9027ce905c674ab" mdapi_config_hash="3a3e2bbc779462f1c31901a107bd71f1" id="496219cc-316b-4945-9fc4-180e60331262" chipset="mtlgt3" name="Ext144" />
+    <guid config_hash="32c74ee31a9cf1b79ade0867801fdd40" mdapi_config_hash="017693e9f88b9e83342949d66903499d" id="c7e6721e-51f9-40af-ba8b-0520a1082855" chipset="mtlgt3" name="Ext145" />
+    <guid config_hash="700a543b44a4df2993255c6d6c087801" mdapi_config_hash="180eeaf357e60beb3019df60af2a150e" id="0e9b064c-9fa7-4e85-8aaa-cc871010117d" chipset="mtlgt3" name="Ext146" />
+    <guid config_hash="1b2acda507ffeaf72511a25f127bb2d1" mdapi_config_hash="cfb556dc0948b9a0734dd834a2b9bf47" id="44d73f02-f843-4717-a3d5-3d1dfbd3f106" chipset="mtlgt3" name="Ext147" />
+    <guid config_hash="4cee03f704251cba8f5de1e5f8144ad5" mdapi_config_hash="64daf9368802f99d207c7e41eae10ce6" id="b84f370e-1b64-41d1-a4d8-f095fb79e5f8" chipset="mtlgt3" name="Ext148" />
+    <guid config_hash="dba35d067d64490d4ec1a305b3717021" mdapi_config_hash="c56aeffffee3b0186b951bbfe9403f2f" id="772a2c24-0a03-480e-baca-72f2f55a5422" chipset="mtlgt3" name="Ext149" />
+    <guid config_hash="978bc6108e7a44ec3a1388ee1a5b77f5" mdapi_config_hash="fee4d8a11368cb7a85ea5c57da17c600" id="953d3bf8-af3d-4287-ac22-dcd122c5eb51" chipset="mtlgt3" name="Ext150" />
+    <guid config_hash="c8c90d16a16f8baa37800968f0b1df9a" mdapi_config_hash="9f23a5fe7ea95105d2e7f6ed58b0b18b" id="dbb009c2-98ad-4af0-905a-e7808ac5424c" chipset="mtlgt3" name="Ext151" />
+    <guid config_hash="10d7844385bd97d561a3c5e8616a0200" mdapi_config_hash="679a886b97c3d29f71a3da04566e9b0a" id="16fd8981-676d-4cbc-b010-8d731ba66a06" chipset="mtlgt3" name="Ext152" />
+    <guid config_hash="b935e97490df078c9cec9221e54126f5" mdapi_config_hash="b90ef18e6b08e2c52781b76adf357752" id="7bcdd766-98a5-461a-ac8e-d8c648958364" chipset="mtlgt3" name="Ext153" />
+    <guid config_hash="79df661de37f475532c62d062c17a371" mdapi_config_hash="c6d9e2764c938d35794c85ab8bef3157" id="c0459fa8-1790-46b8-a0f8-3064baf7c670" chipset="mtlgt3" name="Ext154" />
+    <guid config_hash="8dedaa58bc5c72f78c0dc0dbfda6b835" mdapi_config_hash="fc3822c1a827917d132c657fa05c5d69" id="304d9439-4bdd-48a9-a82e-15b3533afaf4" chipset="mtlgt3" name="Ext155" />
+    <guid config_hash="dbda6f9bcacb02327f80b2d56b88a397" mdapi_config_hash="c8d01efd1c11076a03604142b3cf8ccb" id="90691d58-782d-459c-a242-f6e515fe9567" chipset="mtlgt3" name="Ext156" />
+    <guid config_hash="e9f892825cb93281e92bd95b73e89357" mdapi_config_hash="05b9bc602aecb23a3e8bec3e1607bd96" id="cf34a431-3cc9-4b70-a84e-0d31a71170f0" chipset="mtlgt3" name="Ext158" />
+    <guid config_hash="e7e777852592ccf26bc1b72ba22462d7" mdapi_config_hash="c40cc519814b47e976e211c2fd37f076" id="ad3cd014-8897-4613-8653-6d80c6eaff88" chipset="mtlgt3" name="Ext159" />
+    <guid config_hash="2183074bafb0f711cac56e8128228136" mdapi_config_hash="dd4d18a7e1f51eab5bcfccab86aa6098" id="aa12de63-7d11-4acf-af96-be89807729f7" chipset="mtlgt3" name="Ext160" />
+    <guid config_hash="b8065323eab58675015d298e309d6238" mdapi_config_hash="a455ebc49cb5b267cdb36c756a86cf8e" id="ac013132-7e0c-4143-bc34-ea6428ce3082" chipset="mtlgt3" name="Ext161" />
+    <guid config_hash="6ba7e6880f99c6d4320c415266a80a6b" mdapi_config_hash="918b895b37a0a4cc1299bf50f309204c" id="b9d8323a-7bb4-41b5-b99b-43ed99e23590" chipset="mtlgt3" name="Ext162" />
+    <guid config_hash="2f3e08b31f42d87f6e4420263ccbc3ad" mdapi_config_hash="57fe74a2fe03bebb8efa98fc1d85e5dd" id="6ae2c19e-672c-4ad6-9d59-0a391af1af4f" chipset="mtlgt3" name="Ext163" />
+    <guid config_hash="3a380aeed1d1ac148a8b69fc5a8236d6" mdapi_config_hash="a132354192ab856513ab113a1a762b14" id="c76b6b40-9d7f-48f6-b6da-595252c884f4" chipset="mtlgt3" name="Ext164" />
+    <guid config_hash="d0dd8dbf8a007636289d8b280f694e3a" mdapi_config_hash="cbdbda2cb7e15976448a1ab382ddd4c4" id="a85da4d8-d984-45f3-8dbe-c8678eac8aae" chipset="mtlgt3" name="Ext165" />
+    <guid config_hash="f54ad4885c3cedca6f59376e19213121" mdapi_config_hash="d422e33bf924d938594e015380c691d8" id="fbc7362e-4d05-451d-833e-f0ce5e7ad8e3" chipset="mtlgt3" name="Ext166" />
+    <guid config_hash="797a12d01f5b3da35960769111370bce" mdapi_config_hash="02b3c1d232951e26eff70731842e0b04" id="881454da-d271-41ba-9dfb-0cc354fb5aea" chipset="mtlgt3" name="Ext167" />
+    <guid config_hash="1591b950279f0c4dbd3e3670b42e9eb1" mdapi_config_hash="4548a6997cfe6ac42d5c780aed5648af" id="9f2b827b-01c6-4e82-b283-dfe91af30d88" chipset="mtlgt3" name="Ext168" />
+    <guid config_hash="9fc6c711e262b5923148b819f698d0b1" mdapi_config_hash="9ae70acc8092c087a54373c7222b0760" id="c6b40da2-4783-45d7-8252-9a4f1f75faf4" chipset="mtlgt3" name="Ext169" />
+    <guid config_hash="b6f09aab3f016fda28397126601af67d" mdapi_config_hash="edd612325e82e92f11f197292b7f94b8" id="b5883529-3595-412d-b40f-b7ade9cc3304" chipset="mtlgt3" name="Ext170" />
+    <guid config_hash="947269bc62fea65ec167e99a2d83e994" mdapi_config_hash="1218d27d42f487efb7d159c645f836e7" id="2455c20b-95bb-4e9f-8db2-597ba9447025" chipset="mtlgt3" name="Ext171" />
+    <guid config_hash="e1c65332e1527abff4a50288abe049d9" mdapi_config_hash="2ece8002782c030b6d124025b6e3847b" id="ec18cd0b-7caa-48d0-9a16-418ecbe1096e" chipset="mtlgt3" name="Ext172" />
+    <guid config_hash="0bf05f895b63b5db7124b122fad50947" mdapi_config_hash="0970ce9c1d289d37537078396680db82" id="3628b2de-d9f9-4db2-a74f-32a314e591c5" chipset="mtlgt3" name="Ext173" />
+    <guid config_hash="5f41b959d7b049e63b812d9b91ea04f3" mdapi_config_hash="aa5ae573263f8468853e4f622c007d0a" id="d35ecd39-0a9d-48f7-bf87-d3c318b8fadd" chipset="mtlgt3" name="Ext174" />
+    <guid config_hash="7fec85cfa88db131924843391378ad54" mdapi_config_hash="61d560a3b47ce80e4c17e29e67410928" id="d0d0e9cc-494c-4b01-8a43-683aae5beaff" chipset="mtlgt3" name="Ext175" />
+    <guid config_hash="1399459fe997232f503a9c4469777a12" mdapi_config_hash="7b4a6fe5c6a8cc52cde6f2c927bb5981" id="c5fde834-52c8-411b-854e-8d3197def109" chipset="mtlgt3" name="Ext176" />
+    <guid config_hash="17e850f62f2444f64b4551e3db3d51b9" mdapi_config_hash="506ccacc19b0a1be94d9fce63ac374e8" id="55830ebd-062b-40e8-8d5c-e921429957ff" chipset="mtlgt3" name="Ext177" />
+    <guid config_hash="98f72ed090075dd00d774139e66c1c3e" mdapi_config_hash="5f59632e3275dddaf1a42aa84dec5c70" id="9603d88f-e5bf-47b4-85fd-fbbb68f42632" chipset="mtlgt3" name="Ext178" />
+    <guid config_hash="029a9a53386bd6a3e2223919fe13d472" mdapi_config_hash="a80ea80e37565c0e79cdb4acf13a7115" id="b05bd7bd-387f-4fd7-a1b4-06a1dab5bc14" chipset="mtlgt3" name="Ext179" />
+    <guid config_hash="d82b578182ec53243929a874a8a69f3d" mdapi_config_hash="09edae94d82c771537ad53a49c57884d" id="49dc9023-be7b-4102-a4a2-d31b9a6b1ce4" chipset="mtlgt3" name="Ext180" />
+    <guid config_hash="56d6fb95fb581751b08c0bdf595167d8" mdapi_config_hash="e9a9dc6a0883340a0e61c50b99cfd412" id="871d8a6b-7c73-4cd7-a4ed-4bdb58d5b6ee" chipset="mtlgt3" name="Ext181" />
+    <guid config_hash="d27bfed27f8222b11af83df6dc4cc53c" mdapi_config_hash="c5e41a961878478f2c5c28cfc29ffc3f" id="25a2f80d-147e-4363-a0cb-53584b7a837d" chipset="mtlgt3" name="Ext182" />
+    <guid config_hash="dd125627d0695780c1ac61669550cb37" mdapi_config_hash="6ab8e06baf7786cc0696dfaab1908aa9" id="71863fcf-d57c-433b-858f-87f5f11ec3da" chipset="mtlgt3" name="Ext183" />
+    <guid config_hash="721b4f0187269016ccdc0ac0f2d5b5c9" mdapi_config_hash="f85bd34477fc8b1488a0dd432ea8d1ad" id="c29640d9-39eb-4a03-9043-2a54eb5a3112" chipset="mtlgt3" name="Ext184" />
+    <guid config_hash="d78cdc81b03ab2254f64288a8232c318" mdapi_config_hash="ce4d68cb8035cd47be5a7fe1c8c9751b" id="00882747-d1dd-4ba5-9b72-96df25dad7bd" chipset="mtlgt3" name="Ext185" />
+    <guid config_hash="0ac4b9a8091e9377168920de2dc8df65" mdapi_config_hash="1bda30dab3834c3d06dbc5d86629942c" id="89aea44f-ffa6-43cc-9a9c-103b4930e103" chipset="mtlgt3" name="Ext186" />
+    <guid config_hash="c793e46e8c9e4c5efea5e02b5fa2a8f7" mdapi_config_hash="e8e0cdb7017a9ccbcfb9371fe862fb32" id="11e92a4a-d605-499c-9159-e79797c230de" chipset="mtlgt3" name="Ext188" />
+    <guid config_hash="e8b7d7cd7e2d9925c1b7a6921e288825" mdapi_config_hash="1ef67dd436ccc0665bd6bcbcdbe27c1f" id="27c2ef51-6689-4ffc-acaa-3f46a8e834cf" chipset="mtlgt3" name="Ext189" />
+    <guid config_hash="d326d4159b6cfd1d9dca1cbe27f8505e" mdapi_config_hash="fb6373924b2944617e6562124d3e6a0a" id="1625df84-2f24-4aed-9ced-e652184c9949" chipset="mtlgt3" name="Ext190" />
+    <guid config_hash="09e88dd123a3120fde3ac1a4a7ce5093" mdapi_config_hash="5250011d85ce9822d67cf8a542263de3" id="d98e7947-ecee-46a9-b3ac-619d13d32b1a" chipset="mtlgt3" name="Ext191" />
+    <guid config_hash="8388ebf2e04b420d9b51d5e26e75539f" mdapi_config_hash="7356e43055e3956ec304eda7b2a29e48" id="ed973589-e13c-4115-a2b1-08bc443a4e8d" chipset="mtlgt3" name="Ext192" />
+    <guid config_hash="03ec9f9a3e75884e162d30050a30f43c" mdapi_config_hash="538fe0d38a410220a4b898a6f4ba6bf5" id="9bb6c40a-ec2c-4292-8ac8-d8b413abd301" chipset="mtlgt3" name="Ext193" />
+    <guid config_hash="6d39d90f37f6db386376f0c9ba51b23b" mdapi_config_hash="c8fb29869ab79891c05f0830645c1a13" id="9a911d6f-39b5-425d-aea3-15e49e6395fa" chipset="mtlgt3" name="Ext195" />
+    <guid config_hash="918dc4ca59e92eb297623dc156020dab" mdapi_config_hash="c968b1ed63dedf3c5ef477fbeef70827" id="814b3516-d465-4faa-b89c-67c30c96a256" chipset="mtlgt3" name="Ext196" />
+    <guid config_hash="b34bfb61b27a041a56523d33ce1536df" mdapi_config_hash="860a47c17012693c1df73d348bf393ff" id="3663ed58-377d-40c3-9af0-913cbc5d954b" chipset="mtlgt3" name="Ext198" />
+    <guid config_hash="2e1c1dd9882ddddbb73f55da3c645692" mdapi_config_hash="525b3eb81ea2efc491f0e38ee0dc346f" id="6ce22a01-9025-4afb-b3e9-652ce0c693b5" chipset="mtlgt3" name="Ext199" />
+    <guid config_hash="7128a0a1ff776e2131d2f8f82b89208f" mdapi_config_hash="5f5f9d44e4bb5b53250365015df7de19" id="7f59bef3-f0f1-4856-b4f3-e64fa9913956" chipset="mtlgt3" name="Ext200" />
+    <guid config_hash="7fabcd05be432641a0d6c29f3ea80d05" mdapi_config_hash="3dab5873273b202a3f8be8a09c6bf699" id="8982721e-16cb-42ec-92dd-eb049ae7a503" chipset="mtlgt3" name="Ext201" />
+    <guid config_hash="913941573702be71feda694890765e46" mdapi_config_hash="7a03e28c8a307a2dd95ae580ad781e16" id="d86c1224-3af7-4df1-a44d-e4522f22b2ae" chipset="mtlgt3" name="Ext202" />
+    <guid config_hash="95de2814586ae1ff92c38efd0e8ada9f" mdapi_config_hash="108b4f014f057f196add94557f49b200" id="03090380-689d-481a-ace2-9725ea0c10d2" chipset="mtlgt3" name="Ext203" />
+    <guid config_hash="187f57cadea1e58b25a4f30791632b85" mdapi_config_hash="e7d425c56b43f15c1154bd999663dcd8" id="78a1b79a-a5fd-4fa0-b33d-2ec51404e3b9" chipset="mtlgt3" name="Ext204" />
+    <guid config_hash="d185a05d0fc64e8d0bdb2d0ac240a564" mdapi_config_hash="686c88dad46a84a22474ebb5ccd80322" id="b3c2bff1-e203-4c90-8719-66546c370005" chipset="mtlgt3" name="Ext205" />
+    <guid config_hash="d69e54934297e915997271f2dc8071d0" mdapi_config_hash="a1ecff6f27eff5484af7d035bfa779d1" id="a209e458-76a6-46fc-bb62-29850f38eb0d" chipset="mtlgt3" name="Ext206" />
+    <guid config_hash="22064014f8fe7e3cb5dc49dfd54f3f0f" mdapi_config_hash="c45ed90c0aaa340d9f0480fc6f95f4d6" id="06aea283-f183-4e96-85a5-3bb7193f06c7" chipset="mtlgt3" name="Ext207" />
+    <guid config_hash="0455fd1b2a2833c64fbddafb9620b4ce" mdapi_config_hash="3a88b64bae923f2afb8ef6f07fac23a1" id="0c6d24a9-2489-4fcd-a9f6-d44380417dee" chipset="mtlgt3" name="Ext212" />
+    <guid config_hash="a0452cab88bc672122c1306c8cce790d" mdapi_config_hash="d8f6ca9528a18d24095ffdef0f5e994f" id="39a43efe-ee39-4fa2-88c4-3dfc34a74f4f" chipset="mtlgt3" name="Ext213" />
+    <guid config_hash="e6a8e49a73b5bc77092fb53e012f9c09" mdapi_config_hash="56ee5d41ee40abcd4db055b09cd2bfdc" id="f3ca645b-a2b3-496b-bf6d-f8f26b1faa86" chipset="mtlgt3" name="Ext214" />
+    <guid config_hash="7e99c71c424f94f201af36b8f3e4b48a" mdapi_config_hash="c30b2f19884a073c7d30cd7d23f4f24f" id="947b168e-df39-4e92-a622-0884c81221b3" chipset="mtlgt3" name="Ext215" />
+    <guid config_hash="8ffe459326dc9bc6048f2b0301dda8ac" mdapi_config_hash="eed630ff2d38c72d6944cacbb554bd2a" id="0722885e-4df8-4c98-8336-72b5e129e6be" chipset="mtlgt3" name="Ext220" />
+    <guid config_hash="9068320fed5d9895edc8fc1ac6c3fee9" mdapi_config_hash="b7eb003a026b5f5617812314339a05a0" id="db4a27f8-40a0-4cb5-aa3a-5368add92cd5" chipset="mtlgt3" name="Ext225" />
+    <guid config_hash="c3b4581b01fe3d0c7103628e3a37db8a" mdapi_config_hash="8167155b11844800407e945393cc2c63" id="6b5736f5-a627-4cb6-9078-1c05137bc460" chipset="mtlgt3" name="Ext226" />
+    <guid config_hash="e9ec53a52a95105299cb643af284ea00" mdapi_config_hash="59b4f0a0872022508d2ea1e1db54e4b5" id="5e6f4959-c37c-4be0-bb4e-2f1c1aef2bb3" chipset="mtlgt3" name="Ext227" />
+    <guid config_hash="94f64eaf831e296b8302727e54a94c7f" mdapi_config_hash="9df3a4ea850cabf14e504426574e5ee2" id="fe2d673e-8b2e-47d0-b9db-2c50e10ee53e" chipset="mtlgt3" name="Ext228" />
+    <guid config_hash="9b9c025f624a47719a778c435b19d660" mdapi_config_hash="df04496a358eca62d940a48c4ec83902" id="cb94a696-bfbe-4566-8225-c337f988600c" chipset="mtlgt3" name="Ext229" />
+    <guid config_hash="614f50642d8b720038815970f1a1033c" mdapi_config_hash="f6543b2c21aff10e5f7016914f526a4b" id="ec3032cb-df12-445c-9eb2-6b1031d2dc86" chipset="mtlgt3" name="Ext230" />
+    <guid config_hash="0dcf302a76f790a1e2fc69b6c0610421" mdapi_config_hash="ac24722772b5560ae72de64f46604208" id="e5e22fbb-0ff4-44f6-a549-6ed41df0dd27" chipset="mtlgt3" name="Ext231" />
+    <guid config_hash="54b2ecf4331db287f85f288f909860cb" mdapi_config_hash="3afbee7958dd2ca73515d55bcbbc14df" id="b6defb71-0fe8-400e-ae27-565ce9067082" chipset="mtlgt3" name="Ext232" />
+    <guid config_hash="48b627d11898ffd6b0ac7c1b14ed46a8" mdapi_config_hash="9c4fa67b828b68c9d493d012e290d047" id="98d5c3d9-bca6-4699-99e3-7b95a23025ce" chipset="mtlgt3" name="Ext236" />
+    <guid config_hash="ff5aeb73aeb135a97614b3c18dbbdfc6" mdapi_config_hash="e3d8562d798f0b62f1a4ed2ed750bf3a" id="4256db1d-9083-4497-9000-59bbcf9eee72" chipset="mtlgt3" name="Ext237" />
+    <guid config_hash="dbb4587f61650ce8535f97fc47a9ca74" mdapi_config_hash="36e4ae3077c51ec0fcd6ea8cacece167" id="5ba2bf20-ca4e-4872-86fd-9026c9de8c93" chipset="mtlgt3" name="Ext239" />
+    <guid config_hash="9af84da0c3095e29fc9f87588bce7f49" mdapi_config_hash="582ee8e4a7be8d7ca88804ad1674fdb5" id="fe8810c2-457b-47e0-a3b9-50cab24718b4" chipset="mtlgt3" name="Ext240" />
+    <guid config_hash="7de3e98c3348073bc17dfaad94473777" mdapi_config_hash="968070c0ee84a8065d2336937a49774d" id="ee0cc3d0-9ac8-4608-aaca-b37fd9d18238" chipset="mtlgt3" name="Ext500" />
+    <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="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" />
+    <guid config_hash="9fec5f63ba0c5d47ca05c5445f6512a6" mdapi_config_hash="11fc895aeea250a40ab6eeb8db0e9f1a" id="2c2ecec8-7f33-475c-9ca4-a7e89f949f58" chipset="mtlgt3" name="Ext519" />
+    <guid config_hash="47dcda9eb7e770266c7828ac82e22df0" mdapi_config_hash="67894674e52dcc86278845c91209e4a1" id="d866e2a8-310e-4691-9edc-f7263b8d5c07" chipset="mtlgt3" name="Ext520" />
+    <guid config_hash="d458a81e003b0edbe19d417d2eb62556" mdapi_config_hash="42d5f686975cffa9b0cb8be143061e75" id="e5a95c15-d54f-4d4f-bbe2-533240392df3" chipset="mtlgt3" name="Ext521" />
+    <guid config_hash="ac11505b59b50623881a3191e02fa100" mdapi_config_hash="de073731d6fa8e1c6ba3424e9f8fb9cb" id="bba76095-18aa-447d-9a79-00461a06f233" chipset="mtlgt3" name="Ext522" />
+    <guid config_hash="56ca8acf76263c80d32b2316c3869d7d" mdapi_config_hash="e0bad3256d74e5c3f313318687c731ea" id="724a5073-2463-4f7f-aecb-7cdd90c831e1" chipset="mtlgt3" name="Ext523" />
+    <guid config_hash="579ae606dbb62ebacca5b31f508ddba7" mdapi_config_hash="0dfb2884e96910729e70a9b37e27a77f" id="3b94a07f-e4d8-4cf2-969e-ea19bb253a8c" chipset="mtlgt3" name="Ext524" />
+    <guid config_hash="a5d3063124de4e4d721fc5b32fdf7044" mdapi_config_hash="6e202a652f836dcd45925d980512261c" id="f4399df4-e808-4a0a-85ff-0c66f9c9e8a4" chipset="mtlgt3" name="Ext525" />
+    <guid config_hash="58d1c9ed90a37363fc6b8e576046a850" mdapi_config_hash="7206f26ec894f3be54b248c17346cb96" id="f588aa78-c29a-4187-9818-480b12d5b076" chipset="mtlgt3" name="Ext526" />
+    <guid config_hash="f8b25af3925a4c4e334b0538a9bfc24f" mdapi_config_hash="a38966e20bf2c1c67a41938acae11c79" id="c0a38cc9-f0e9-40f5-9c1e-a4d7eba30825" chipset="mtlgt3" name="Ext527" />
+    <guid config_hash="665a5724008d1052e1562fab29268e92" mdapi_config_hash="b55ae7a311bc24d57f6fb69cc66e7ce3" id="1cb1d3ff-ff5d-4c9b-84c9-89b9d235be36" chipset="mtlgt3" name="Ext528" />
+    <guid config_hash="8ee82681a20b0ffbed57e38ac00376d1" mdapi_config_hash="bb3eff425f6e7b364ef81b752ea0342b" id="4491913e-99ed-4420-9575-75ab7a82c45d" chipset="mtlgt3" name="Ext529" />
+    <guid config_hash="e84563408f311380023297434a2182e8" mdapi_config_hash="63e946a2b374ec41d91ec7e69651c995" id="4fe2fe09-1ef2-45ff-87f5-e789f8405713" chipset="mtlgt3" name="Ext530" />
+    <guid config_hash="00e82e07b322a25ac55e72377c2bf847" mdapi_config_hash="9eab3b64dfe45a520b98452492471f7c" id="856f213d-954d-4b0a-be6c-307b41d39b18" chipset="mtlgt3" name="Ext531" />
+    <guid config_hash="10607fa1aadc4d123e67f47918640ed3" mdapi_config_hash="fb82484f62370d84758281eb4e44fbfd" id="03eb9c9b-72ee-4c7b-930b-6211dbb60503" chipset="mtlgt3" name="Ext540" />
+    <guid config_hash="69a68b7a752cbe4239f81b029c15a5fb" mdapi_config_hash="57751e36c6e7f1d3741542d1e9461cd1" id="e3bef1e9-f563-4927-9ce8-1be6e151448c" chipset="mtlgt3" name="Ext541" />
+    <guid config_hash="11fe4fbe69ed04782396bac8bc259084" mdapi_config_hash="e623e83a67a7cdfa118ffcfafdd2981c" id="de587fdf-1740-4816-a5c0-08c1cb6b43eb" chipset="mtlgt3" name="Ext542" />
+    <guid config_hash="0ebc4f9152108056269a57160d0354c7" mdapi_config_hash="d83dba62c3d467e9372c7288d4c68e80" id="cea536f3-f7ef-449c-91fe-42c721e54b52" chipset="mtlgt3" name="Ext543" />
+    <guid config_hash="22e477a9cc34b286eeb8509bc2b0a07b" mdapi_config_hash="8b7f1e0557da951bf85a4635ab76bcc1" id="c3586bbc-f20b-4ffc-bd62-21ea68c161f4" chipset="mtlgt3" name="Ext544" />
+    <guid config_hash="1a0ab2c152e4ff2578b3f87d23145134" mdapi_config_hash="5310dcfee9f7e167452ea7df9b373e2c" id="f3d6345a-b760-4433-844e-e35204b44e09" chipset="mtlgt3" name="Ext545" />
+    <guid config_hash="49d14d81c6078a9ea05029fde1b6951a" mdapi_config_hash="8954527b889d84c88110187789e8708f" id="f5448b6d-cb2a-4aad-804e-b1a285299582" chipset="mtlgt3" name="Ext546" />
+    <guid config_hash="7fd102b93b6fa9ef00d3da928322ea32" mdapi_config_hash="0ad8487819766233ba2d0cd54d785d98" id="7b8b6c53-abff-4570-b413-91cc843181d8" chipset="mtlgt3" name="Ext547" />
+    <guid config_hash="69a96f6d845ff45b765ef6644a4d97f7" mdapi_config_hash="2458289cc479adc24c2d901a32343511" id="b83befed-d2db-4806-907c-3f952798e117" chipset="mtlgt3" name="Ext604" />
+    <guid config_hash="6389c2dcb6a2b100db74a782d4f7006f" mdapi_config_hash="d8d0fcb20772d25731d0ac8a7d587cb9" id="0d368afb-b8fd-425d-a704-9a45eaaaed3d" chipset="mtlgt3" name="Ext1000" />
+    <guid config_hash="e358e6156c7379f8064b679128fe0747" mdapi_config_hash="a9988177c98737d0b52bcf215079e95b" id="08bee982-b34c-49c1-bf0c-93c1949ffbe7" chipset="mtlgt3" name="Ext1001" />
+    <guid config_hash="c4809b4f9dbd405691ebd29dea153aa2" mdapi_config_hash="8d1002c55a03d16517de67b4b8970d12" id="845617a9-5a17-4f1f-9a6f-61ff844065e4" chipset="mtlgt3" name="Ext1002" />
+    <guid config_hash="33b1153b5651e90c9f876a24d622b8ac" mdapi_config_hash="3006063ffc95bfa63b84bb54ea205114" id="24e3b1a8-b80e-4c8c-ab21-83640d78f896" chipset="mtlgt3" name="Ext1003" />
+    <guid config_hash="8bb1139fff1ee995a5ade92734e11d8a" mdapi_config_hash="fbbbc2eaec0f182e838cbdfa1c8372c2" id="974d6469-d51f-4e4a-a393-32033f9b562e" chipset="mtlgt3" name="Ext1004" />
+    <guid config_hash="83d7b8e952e3598565267c65964b2771" mdapi_config_hash="7a5482c523806abe25c8c4dbcf5273e7" id="c172fb87-e53f-468d-893a-d8528684accc" chipset="mtlgt3" name="Ext1005" />
+    <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" />
+    <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/xe/oa-configs/mdapi-xml-convert.py b/lib/xe/oa-configs/mdapi-xml-convert.py
new file mode 100755
index 0000000000..5903ef4d35
--- /dev/null
+++ b/lib/xe/oa-configs/mdapi-xml-convert.py
@@ -0,0 +1,1196 @@
+#!/usr/bin/env python3
+
+# SPDX-License-Identifier: MIT
+#
+# Copyright © 2024 Intel Corporation
+#
+#
+# "MDAPI" xml files are an XML schema for maintaining meta data about Gen
+# graphics Ovservability counters, where MD API is the name of a library shared
+# by Intel GPA and Intel VTune.
+#
+# These files aren't publicly documented and have some historical baggage that
+# adds some complexity as well as being inconsistent in a number of ways that
+# makes it quite a bit of effort to parse/use the data. We also don't have
+# guarantees about how this schema is maintained.
+#
+# We've taken the opportunity to find ways to simplify the input data and to
+# make it more consistent to hopefully reduce the effort involved in using the
+# data downstream.
+#
+
+
+import argparse
+import copy
+import hashlib
+from operator import itemgetter
+import re
+import sys
+import time
+import uuid
+
+import codegen
+
+import xml.etree.ElementTree as et
+import xml.sax.saxutils as saxutils
+
+import oa_guid_registry as oa_registry
+
+
+# MDAPI configs include writes to some non-config registers,
+# thus the blacklists...
+
+hsw_chipset_params = {
+    'a_offset': 12,
+    'b_offset': 192,
+    'c_offset': 224,
+    'oa_report_size': 256,
+    'registers': {
+        # TODO extend the symbol table for nicer output...
+        0x2710: { 'name': 'OASTARTTRIG1' },
+        0x2714: { 'name': 'OASTARTTRIG1' },
+        0x2718: { 'name': 'OASTARTTRIG1' },
+        0x271c: { 'name': 'OASTARTTRIG1' },
+        0x2720: { 'name': 'OASTARTTRIG1' },
+        0x2724: { 'name': 'OASTARTTRIG6' },
+        0x2728: { 'name': 'OASTARTTRIG7' },
+        0x272c: { 'name': 'OASTARTTRIG8' },
+        0x2740: { 'name': 'OAREPORTTRIG1' },
+        0x2744: { 'name': 'OAREPORTTRIG2' },
+        0x2748: { 'name': 'OAREPORTTRIG3' },
+        0x274c: { 'name': 'OAREPORTTRIG4' },
+        0x2750: { 'name': 'OAREPORTTRIG5' },
+        0x2754: { 'name': 'OAREPORTTRIG6' },
+        0x2758: { 'name': 'OAREPORTTRIG7' },
+        0x275c: { 'name': 'OAREPORTTRIG8' },
+        0x2770: { 'name': 'OACEC0_0' },
+        0x2774: { 'name': 'OACEC0_1' },
+        0x2778: { 'name': 'OACEC1_0' },
+        0x277c: { 'name': 'OACEC1_1' },
+        0x2780: { 'name': 'OACEC2_0' },
+        0x2784: { 'name': 'OACEC2_1' },
+        0x2788: { 'name': 'OACEC3_0' },
+        0x278c: { 'name': 'OACEC3_1' },
+        0x2790: { 'name': 'OACEC4_0' },
+        0x2794: { 'name': 'OACEC4_1' },
+        0x2798: { 'name': 'OACEC5_0' },
+        0x279c: { 'name': 'OACEC5_1' },
+        0x27a0: { 'name': 'OACEC6_0' },
+        0x27a4: { 'name': 'OACEC6_1' },
+        0x27a8: { 'name': 'OACEC7_0' },
+        0x27ac: { 'name': 'OACEC7_1' },
+    },
+    'config_reg_blacklist': {
+        0x2364, # OASTATUS1 register
+    },
+    'register_offsets': {
+        0x1f0: 'PERFCNT 0',
+        0x1f8: 'PERFCNT 1',
+    },
+}
+
+gen8_11_chipset_params = {
+    'a_offset': 16,
+    'b_offset': 192,
+    'c_offset': 224,
+    'oa_report_size': 256,
+    'config_reg_blacklist': {
+        0x2364, # OACTXID
+    },
+    'register_offsets': {
+        0x1f0: 'PERFCNT 0',
+        0x1f8: 'PERFCNT 1',
+    }
+}
+
+xehpsdv_chipset_params = {
+    'a_offset': 16,
+    'b_offset': 192,
+    'c_offset': 224,
+    'oa_report_size': 256,
+    'config_reg_blacklist': {
+        0x2364, # OACTXID
+    },
+    'register_offsets': {
+        0x1b0: 'PERFCNT 0',
+        0x1b8: 'PERFCNT 1',
+    }
+}
+
+# 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,
+}
+
+gen8_11_chipset_oa_formats = {
+    '256B_GENERIC_NOA16': gen8_11_chipset_params,
+}
+
+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,
+    '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': mtl_chipset_oa_formats,
+}
+
+xehp_plus = ( 'ACM', 'MTL' )
+
+register_types = { 'OA', 'NOA', 'FLEX', 'PM' }
+
+default_set_blacklist = { "RenderDX1x", # TODO: rename to something non 'DX'
+                                        # specific if this config is generally
+                                        # usefull
+                          "RenderBalance", # XXX: missing register config
+                          "PipelineTimestamps", # Covered by API timestamp queries
+                        }
+
+counter_blacklist = {
+    "DramLlcThroughput", # TODO: The max equation of this counter
+                         # requires dram throughtput value. Need to
+                         # investiguate how to get this value.
+}
+
+def underscore(name):
+    s = re.sub('MHz', 'Mhz', name)
+    s = re.sub('\.', '_', s)
+    s = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', s)
+    s = re.sub('#', '_', s)
+    return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s).lower()
+
+def print_err(*args):
+    sys.stderr.write(' '.join(map(str,args)) + '\n')
+
+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_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
+    # counters: rd40@<32bit_part1_offset>:<8bit_part2_offset>
+    if width == "rd40":
+        offset_32_str, offset_8_str = offset_str.split(':')
+        offset_str = offset_32_str
+
+    offset = int(offset_str, 16)
+
+    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 == 4:
+                return "GPU_TIME 0 READ"
+            elif offset == 12:
+                assert chipset != "HSW" # Only for Gen8+
+                return "GPU_CLOCK 0 READ"
+            else:
+                assert 0
+        elif offset < b_offset:
+            a_cnt_offset = int((offset - a_offset) / 4)
+            if chipset in xehp_plus:
+                # Most A counters are in a contiguous array, except
+                # this A37.
+                if a_cnt_offset == 42:
+                    return "A 37 READ"
+                return "A " + str(a_cnt_offset) + " READ"
+            else:
+                return "A " + str(a_cnt_offset) + " READ"
+        elif offset < c_offset:
+            return "B " + str(int((offset - b_offset) / 4)) + " READ"
+        elif offset < report_size:
+            return "C " + str(int((offset - c_offset) / 4)) + " READ"
+        else:
+            return "{0} READ".format(read_value(chipset, offset, oa_format))
+    else:
+        # Location in the accumulated deltas
+        idx = int(offset / 8)
+        if chipset == "HSW":
+            # On Haswell accumulated counters are assumed to start
+            # with GPU_TIME followed by 45 A counters, then 8 B
+            # counters and finally 8 C counters.
+            if idx < 1:
+                return "GPU_TIME 0 READ"
+            elif idx < 46:
+                return "A " + str(idx - 1) + " READ"
+            elif idx < 54:
+                return "B " + str(idx - 46) + " READ"
+            elif idx < 62:
+                return "C " + str(idx - 54) + " READ"
+            else:
+                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,
+            # 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))
+        else:
+            # For Gen8+ the array of accumulated counters is
+            # assumed to start with a GPU_TIME then GPU_CLOCK,
+            # then 36 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 < 38:
+                return "A " + str(idx - 2) + " READ"
+            elif idx < 46:
+                return "B " + str(idx - 38) + " READ"
+            elif idx < 54:
+                return "C " + str(idx - 46) + " READ"
+            else:
+                return "{0} READ".format(read_value(chipset, offset, 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
+    # reasons:
+    #
+    # 1) The offsets hide the particular a, b, or c counter they
+    #    correspond to which in turn makes it awkward to experiment
+    #    with different report sizes which trade off how many a, b and
+    #    c counters are available
+    #
+    # 2) Raw reads could be represented as RPN operations too, and
+    #    the consistency could make them slightly easier for tools to
+    #    handle, E.g:
+    #
+    #      "A 5 READ" = read A counter 5
+    #
+    # We replace dw@ address tokens with GPU_TIME, A, B or C READ ops...
+    #
+
+    tokens = equation.split()
+    equation = ""
+
+    for token in tokens:
+        if '@' in token:
+            read_exp = read_token_to_rpn_read(chipset, token, raw_offsets, oa_format)
+            equation = equation + " " + read_exp
+        else:
+            equation = equation + " " + token
+
+    return equation
+
+
+parser = argparse.ArgumentParser()
+parser.add_argument("xml", nargs="+", help="XML description of metrics")
+parser.add_argument("--guids", required=True, help="Metric set GUID registry")
+parser.add_argument("--whitelist", help="Only output for given, space-separated, sets")
+parser.add_argument("--blacklist", help="Don't generate anything for given metric sets")
+parser.add_argument("--merge", help="Additional meta data to merge into the result")
+parser.add_argument("--dry-run", action="store_true",
+                    help="Not generate new XML but to check any errors")
+
+args = parser.parse_args()
+
+metrics = et.Element('metrics')
+tree = et.ElementTree(metrics)
+
+def apply_aliases(text, aliases):
+    if aliases == None:
+        return text
+
+    for alias in aliases.split(','):
+        (a, b) = alias.split('|')
+        text = re.sub(r"\b%s\b" % re.escape(a), b, text)
+
+        a = a.lower()
+        b = b.lower()
+        text = re.sub(r"\b%s\b" % re.escape(a), b, text)
+
+    return text
+
+def strip_dx_apis(text):
+    if text == None:
+        return ""
+    stripped = ""
+    apis = text.split()
+    for api in apis:
+        if api[:2] != "DX":
+            stripped = stripped + " " + api
+
+    return stripped.strip()
+
+def add_gpu_core_clocks_if_missing(metric_set, counters, counter_deps):
+    if len(counters) < 1:
+        return
+
+    for name,element in counters.items():
+        if name == 'GpuCoreClocks':
+            return
+
+    print_err("WARNING: add missing GpuCoreClocks counter for MetricSets=\"{0}\"".format(metric_set.get('ShortName')))
+    counter = et.SubElement(metric_set, 'Metric')
+    counter.set("SymbolName", "GpuCoreClocks")
+    counter.set("SignalName", "oa.fixed")
+    counter.set("ShortName", "GPU Core Clocks")
+    counter.set("LongName", "The total number of GPU core clocks elapsed during the measurement.")
+    counter.set("Group", "GPU")
+    counter.set("UsageFlags", "Tier1 Frame Batch Draw")
+    counter.set("MetricType", "EVENT")
+    counter.set("ResultType", "UINT64")
+    counter.set("MetricUnits", "cycles")
+    counter.set("HWUnitType", "GPU")
+    counter.set("SnapshotReportReadEquation", "dw@0x0c")
+    counter.set("SnapshotReportDeltaFunction", "DELTA 32")
+    counter.set("DeltaReportReadEquation", "qw@0x08")
+    counter.set("NormalizationEquation", "")
+
+    counters["GpuCoreClocks"] = counter
+    counter_deps["GpuCoreClocks"] = []
+
+# For recursively appending counters in order of dependencies...
+def append_deps_and_counter(mdapi_counter, mdapi_counters, deps,
+                            sorted_array, sorted_set):
+    symbol_name = oa_registry.Registry.sanitize_symbol_name(mdapi_counter.get('SymbolName'))
+
+    if symbol_name in sorted_set:
+        return
+
+    for dep_name in deps[symbol_name]:
+        if dep_name in mdapi_counters:
+            append_deps_and_counter(mdapi_counters[dep_name], mdapi_counters, deps,
+                                    sorted_array, sorted_set)
+
+    sorted_array.append(mdapi_counter)
+    sorted_set[symbol_name] = mdapi_counter
+
+def sort_counters(mdapi_counters, deps):
+    sorted_array = []
+    sorted_set = {} # counters in here have been added to array
+    for symbol_name in mdapi_counters:
+        append_deps_and_counter(mdapi_counters[symbol_name], mdapi_counters, deps,
+                                sorted_array, sorted_set)
+
+    return sorted_array
+
+def expand_macros(equation):
+    equation = equation.replace('GpuDuration', "$Self 100 UMUL $GpuCoreClocks FDIV")
+    equation = equation.replace('EuAggrDuration', "$Self $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV")
+    return equation
+
+def fixup_equation(equation):
+    if equation is None:
+        return None
+    return equation.replace('$SubliceMask', '$SubsliceMask')
+
+# The MDAPI XML files sometimes duplicate the same Flex EU/OA regs
+# between configs with different AvailabilityEquations even though the
+# availability checks are only expected to affect the MUX configs
+#
+# We iterate all the configs to filter out the FLEX/OA configs and
+# double check that there's never any variations between repeated
+# configs
+#
+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][oa_format]['config_reg_blacklist']:
+                continue
+
+            if mdapi_reg.get('type') == type:
+                tmp_regs.append(reg)
+
+        if len(tmp_regs) > 0:
+            bad = False
+            if len(regs) == 0:
+                regs = tmp_regs
+            elif len(regs) != len(tmp_regs):
+                bad = True
+            else:
+                for i in range(0, len(regs)):
+                    if regs[i] != tmp_regs[i]:
+                        bad = True
+                        break
+            if bad:
+                print_err("ERROR: multiple, differing FLEX/OA configs for one set: MetricSet=\"" + mdapi_metric_set.get('ShortName'))
+                sys.exit(1)
+
+    return regs
+
+
+# We only have a very small number of IDs, but we aren't assuming they
+# start from zero or are contiguous in the MDAPI XML files. Python
+# doesn't seem to have a built in sparse array type so we just
+# loop over the entries we have:
+def get_mux_id_group(id_groups, id):
+    for group in id_groups:
+        if group['id'] == id:
+            return group
+
+    new_group = { 'id': id, 'configs': [] }
+    id_groups.append(new_group)
+
+    return new_group
+
+
+
+def process_mux_configs(mdapi_set, oa_format):
+    allow_missing_id = True
+
+    mux_config_id_groups = []
+
+    for mdapi_reg_config in mdapi_set.findall("RegConfigStart"):
+
+        mux_regs = []
+        for mdapi_reg in mdapi_reg_config.findall("Register"):
+            address = int(mdapi_reg.get('offset'), 16)
+
+            if address in chipsets[chipset][oa_format]['config_reg_blacklist']:
+                continue
+
+            reg_type = mdapi_reg.get('type')
+
+            if reg_type not in register_types:
+                print_err("ERROR: unknown register type=\"" + reg_type + "\": MetricSet=\"" + mdapi_set.get('ShortName'))
+                sys.exit(1)
+
+            if reg_type != 'NOA' and reg_type != 'PM':
+                continue
+
+            reg = (address, int(mdapi_reg.get('value'), 16))
+            mux_regs.append(reg)
+
+        if len(mux_regs) == 0:
+            continue
+
+        availability = mdapi_reg_config.get('AvailabilityEquation')
+        if availability == "":
+            availability = None
+
+        if mdapi_reg_config.get('ConfigPriority') != None:
+            reg_config_priority = int(mdapi_reg_config.get('ConfigPriority'))
+        else:
+            reg_config_priority = 0
+
+        if mdapi_reg_config.get('ConfigId') != None:
+            reg_config_id = int(mdapi_reg_config.get('ConfigId'))
+            allow_missing_id = False
+        elif mdapi_reg_config.get('ConfigId') == None and allow_missing_id == True:
+            reg_config_id = 0
+        else:
+            # It will spell trouble if there's a mixture of explicit and
+            # implied config IDs...
+            print_err("ERROR: register configs mixing implied/explicit IDs: MetricSet=\"" + mdapi_set.get('ShortName'))
+            sys.exit(1)
+
+        mux_config = { 'priority': reg_config_priority,
+                       'availability': availability,
+                       'registers': mux_regs }
+
+        mux_config_id_group = get_mux_id_group(mux_config_id_groups, reg_config_id)
+        mux_config_id_group['configs'].append(mux_config)
+
+    mux_config_id_groups.sort(key=itemgetter('id'))
+
+    # The only special case we currently support for more than one group of NOA
+    # MUX configs is for the Broadwell ComputeExtended metric set with two Id
+    # groups and the second just has a single unconditional config that can
+    # logically be appended to all the conditional configs of the first group
+    if len(mux_config_id_groups) > 1:
+        if len(mux_config_id_groups) != 2:
+            print_err("ERROR: Script doesn't currently allow more than two groups of NOA MUX configs for a single metric set: MetricSet=\"" + mdapi_set.get('ShortName'))
+            sys.exit(1)
+
+        last_id_group = mux_config_id_groups[-1]
+        if len(last_id_group['configs']) != 1:
+            print_err("ERROR: Script currently only allows up to two Ids for NOA MUX configs if second Id only contains a single unconditional config: MetricSet=\"" + mdapi_set.get('ShortName'))
+            sys.exit(1)
+
+        tail_config = last_id_group['configs'][0]
+        for mux_config in mux_config_id_groups[0]['configs']:
+            mux_config['registers'] = mux_config['registers'] + tail_config['registers']
+
+        mux_config_id_groups = [mux_config_id_groups[0]]
+
+    if len(mux_config_id_groups) == 0 or mux_config_id_groups[0]['configs'] == 0:
+        return ()
+
+    mux_configs = mux_config_id_groups[0]['configs']
+    assert isinstance(mux_configs, list)
+    assert len(mux_configs) >= 1
+    assert len(mux_configs[0]['registers']) > 1 # > 1 registers
+    return mux_configs
+
+
+def add_register_config(set, priority, availability, regs, type):
+    reg_config = et.SubElement(set, 'register_config')
+
+    reg_config.set('type', type)
+
+    if availability != None:
+        assert type == "NOA"
+        reg_config.set('priority', str(priority))
+        reg_config.set('availability', availability)
+
+    for reg in regs:
+        elem = et.SubElement(reg_config, 'register')
+        elem.set('type', type)
+        elem.set('address', "0x%08X" % reg[0])
+        elem.set('value', "0x%08X" % reg[1])
+
+def to_text(value):
+    if value == None:
+        return ""
+    return value
+
+# There are duplicated metric sets with the same symbol name so we
+# keep track of the sets we've read so we can skip duplicates...
+sets = {}
+
+guids = {}
+
+guids_xml = et.parse(args.guids)
+for guid in guids_xml.findall(".//guid"):
+    hashing_key = oa_registry.Registry.chipset_derive_hash(guid.get('chipset'),
+                                                           guid.get('name'),
+                                                           guid.get('mdapi_config_hash'))
+    guids[hashing_key] = guid.get('id')
+
+for arg in args.xml:
+    mdapi = et.parse(arg)
+
+    concurrent_group = mdapi.find(".//ConcurrentGroup")
+    chipset = oa_registry.Registry.chipset_name(concurrent_group.get('SupportedHW'))
+
+    chipset_fullname = chipset
+    if concurrent_group.get('SupportedGT') != None:
+        chipset_fullname = chipset_fullname + oa_registry.Registry.gt_name(concurrent_group.get('SupportedGT'))
+    if chipset not in chipsets:
+        print_err("WARNING: unsupported chipset {0}, consider updating {1}".format(chipset, __file__))
+        continue
+
+    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 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:
+            print_err("WARNING: duplicate set named \"" + set_symbol_name + "\" (SKIPPING)")
+            continue
+
+        if args.whitelist:
+            set_whitelist = args.whitelist.split()
+            if set_symbol_name not in set_whitelist:
+                continue
+
+        if args.blacklist:
+            set_blacklist = args.blacklist.split()
+        else:
+            set_blacklist = default_set_blacklist
+        if set_symbol_name in set_blacklist:
+            continue
+
+        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
+
+        set = et.SubElement(metrics, 'set')
+
+        set.set('chipset', chipset_fullname)
+
+        set.set('name', mdapi_set.get('ShortName'))
+        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.
+        #
+        # The hardware configuration is used as a key to lookup up a GUID which
+        # is used by applications to lookup the corresponding counter
+        # normalization equations.
+        #
+        # We want to skip over any metric sets that don't yet have a registered
+        # GUID in guids.xml.
+
+        # There can be multiple NOA MUX configs, since they may have associated
+        # availability tests to match particular systems.
+        #
+        # Unlike the MDAPI XML files we only support tracking one group of
+        # mutually exclusive MUX configs, whereas the MDAPI XML files
+        # theoretically allow a single metric set to be associated with ordered
+        # groups of mutually exclusive configs. So far there is only one
+        # Broadwell, ComputeExtended metric set which uses this, but that
+        # particular case can be expressed in less general terms.
+        #
+        # Being a bit simpler here should make it easier for downstream tools
+        # 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, oa_format)
+
+        # Unlike for MUX registers, we only expect one set of FLEX/OA
+        # registers per metric set (even though they are sometimes duplicated
+        # between configs in MDAPI XML files.
+        #
+        # This filter function, extracts the register of a certain type but
+        # also double checks that if they are repeated in separate configs that
+        # they don't vary. (Notably the current xe_oa Linux driver would
+        # 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_format)
+        oa_regs = filter_single_config_registers_of_type(mdapi_set, "OA", oa_format)
+
+
+        # Note: we ignore Perfmon registers
+
+        for mux_config in mux_configs:
+            add_register_config(set, mux_config['priority'], mux_config['availability'], mux_config['registers'], "NOA")
+        if len(oa_regs) > 0:
+            add_register_config(set, 0, None, oa_regs, "OA")
+        if len(flex_regs) > 0:
+            add_register_config(set, 0, None, flex_regs, "FLEX")
+
+        mdapi_hw_config_hash = oa_registry.Registry.mdapi_hw_config_hash(mdapi_set)
+        guid_hash = oa_registry.Registry.chipset_derive_hash(chipset_fullname.lower(),
+                                                             set_symbol_name,
+                                                             mdapi_hw_config_hash)
+        hw_config_hash = oa_registry.Registry.hw_config_hash(set)
+
+        if guid_hash in guids:
+            set.set('hw_config_guid', guids[guid_hash])
+        else:
+            print_err("WARNING: No GUID found for metric set " + chipset_fullname + ", " + set_symbol_name + " (SKIPPING)")
+            print_err("WARNING: If this is a new config add the following to guids.xml:")
+            print_err("<guid config_hash=\"" + hw_config_hash + "\" mdapi_config_hash=\"" + mdapi_hw_config_hash + "\" id=\"" + str(uuid.uuid4()) + "\" chipset=\"" + chipset_fullname.lower() + "\" name=\"" + set_symbol_name + "\" />")
+            metrics.remove(set)
+            continue
+
+
+        sets[set_symbol_name] = set
+
+        counters = {}
+        normalization_equations = {}
+        raw_equations = {}
+
+        # Awkwardly we can't assume metrics are in dependency order and have to
+        # sort them manually. We start by associating a list of dependencies with
+        # each counter...
+
+        mdapi_counters = {}
+        mdapi_counter_deps = {}
+
+        for mdapi_counter in mdapi_set.findall("Metrics/Metric"):
+            symbol_name = oa_registry.Registry.sanitize_symbol_name(mdapi_counter.get('SymbolName'))
+
+            if symbol_name in counter_blacklist:
+                continue;
+
+            # Have seen at least one MetricSet with a duplicate GpuCoreClocks counter...
+            if symbol_name in mdapi_counters:
+                print_err("WARNING: Skipping duplicate counter \"" + symbol_name + \
+                        "\" in " + set.get('name') + " :: " + mdapi_counter.get('ShortName'))
+                continue;
+
+            deps = []
+            equations = fixup_equation(str(mdapi_counter.get('SnapshotReportReadEquation'))) + " " + \
+                        fixup_equation(str(mdapi_counter.get('SnapshotReportDeltaEquation'))) + " " + \
+                        fixup_equation(str(mdapi_counter.get('DeltaReportReadEquation'))) + " " + \
+                        fixup_equation(str(mdapi_counter.get('NormalizationEquation')))
+            equations = expand_macros(equations)
+            equations = equations.replace('$$', "$")
+            for token in equations.split():
+                if token[0] == '$' and not codegen.is_hw_var(token) and token[1:] != "Self":
+                    deps.append(token[1:])
+
+            mdapi_counters[symbol_name] = mdapi_counter
+            mdapi_counter_deps[symbol_name] = deps
+
+        add_gpu_core_clocks_if_missing(mdapi_set, mdapi_counters, mdapi_counter_deps)
+        sorted_mdapi_counters = sort_counters(mdapi_counters, mdapi_counter_deps)
+
+        for mdapi_counter in sorted_mdapi_counters:
+
+            aliases = mdapi_counter.get('Alias')
+
+            skip_counter = False
+
+            # We don't currently support configuring and reading perfmon registers
+            signal = mdapi_counter.get('SignalName')
+            if signal and "perfmon" in signal:
+                continue;
+
+            # A few things to fixup with this common counter...
+            if mdapi_counter.get('SymbolName') == "AvgGpuCoreFrequencyMHz":
+                # To avoid requiring a special case in tools, add a max value
+                # equation for the gpu frequency...
+                mdapi_counter.set('MaxValueEquation', "$GpuMaxFrequency")
+
+                # Don't include units in the name
+                mdapi_counter.set('SymbolName', "AvgGpuCoreFrequency")
+
+                # Use canonical, first order of magnitude units specifier
+                mdapi_counter.set('MetricUnits', 'Hz')
+                mdapi_counter.set('NormalizationEquation', '$GpuCoreClocks 1000000000 UMUL $GpuTime UDIV')
+                #mdapi_counter.set('DeltaReportReadEquation', '$GpuCoreClocks $GpuTime UDIV')
+
+
+            symbol_name = oa_registry.Registry.sanitize_symbol_name(mdapi_counter.get('SymbolName'))
+
+            counter = et.SubElement(set, 'counter')
+            counter.set('name', apply_aliases(mdapi_counter.get('ShortName'), aliases))
+            counter.set('symbol_name', oa_registry.Registry.sanitize_symbol_name(mdapi_counter.get('SymbolName')))
+            counter.set('underscore_name', underscore(mdapi_counter.get('SymbolName')))
+            counter.set('description', apply_aliases(mdapi_counter.get('LongName'), aliases))
+            counter.set('mdapi_group', apply_aliases(to_text(mdapi_counter.get('Group')), aliases))
+            counter.set('mdapi_usage_flags', to_text(mdapi_counter.get('UsageFlags')))
+            counter.set('mdapi_supported_apis', strip_dx_apis(mdapi_counter.get('SupportedAPI')))
+            low = mdapi_counter.get('LowWatermark')
+            if low:
+                counter.set('low_watermark', low)
+            high = to_text(mdapi_counter.get('HighWatermark'))
+            if high:
+                counter.set('high_watermark', high)
+            counter.set('data_type', mdapi_counter.get('ResultType').lower())
+
+            max_eq = fixup_equation(mdapi_counter.get('MaxValueEquation'))
+            if max_eq:
+                counter.set('max_equation', max_eq)
+
+            # 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...
+            if units == "cycles":
+                semantic_type = "event"
+            else:
+                semantic_type = mdapi_counter.get('MetricType').lower()
+
+            counter.set('units', units)
+            counter.set('semantic_type', semantic_type)
+
+            # MDAPI MetricSets have 3 different kinds of counter read equations:
+            #
+            # 1) One for reading a raw (unnormalized) value from a hardware report
+            #
+            #       The line between normalized and raw isn't always clear
+            #       as the raw equation may e.g. read and ADD multiple counters
+            #
+            #       Not all counters have a raw equation if they are instead
+            #       derived through $CounterName references to other counters
+            #       in a normalized value equation
+            #
+            # 2) One for reading an unnormalized value from the accumulated 'delta reports'
+            #
+            #       Seems to duplicate the raw equation but with delta report
+            #       offsets and referencing 64bit values
+            #
+            #       The normalized value equations are always based on these
+            #       accumulated delta values
+            #
+            # 3) One for reading a normalized value
+            #
+            #       These may start with a reference to "$Self" which is
+            #       effectively a macro for the above delta report equation
+            #
+            #       If this is missing the delta report equation is effectively
+            #       the normalized equation too
+            #
+            #       XXX: Beware that there are some inconsistent counters that
+            #       have a normalization equation with a $Self reference and a
+            #       raw equation but no delta report equation. This seems
+            #       pretty sketchy, but (at least for 'MEDIA' metrics) we will
+            #       substitute the raw equation for $Self in this case along
+            #       with a warning to double check the results.
+            #
+            # Currently there doesn't appear to be a clear reason to
+            # differentiate these equations and the separation seems to
+            # complicate things for tools wanting to generate code from this
+            # data.
+            #
+            # We instead aim to have one normalized equation per counter that
+            # always reference accumulated counter values.
+
+            # 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('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 == "":
+                availability = None
+
+            # We prefer to only look at the equations that reference the raw
+            # reports since the mapping of offsets back to A,B,C counters is
+            # unambiguous, but if necessary we will fallback to mapping
+            # delta report offsets (accumulated 64bit values that correspond
+            # to the 32bit or 40bit values from raw repots)
+
+            raw_read_eq = fixup_equation(mdapi_counter.get('SnapshotReportReadEquation'))
+            if raw_read_eq:
+                if raw_read_eq == "":
+                    raw_read_eq = None
+                else:
+                    raw_read_eq = replace_read_tokens_with_rpn_read_ops(chipset,
+                                                                        oa_format,
+                                                                        raw_read_eq,
+                                                                        True) #raw offsets
+
+            delta_read_eq = fixup_equation(mdapi_counter.get('DeltaReportReadEquation'))
+            if delta_read_eq:
+                if delta_read_eq == "":
+                    delta_read_eq = None
+                else:
+                    delta_read_eq = replace_read_tokens_with_rpn_read_ops(chipset,
+                                                                          oa_format,
+                                                                          delta_read_eq,
+                                                                          False) #delta offsets
+
+            if raw_read_eq and not delta_read_eq:
+                print_err("WARNING: Counter with raw equation but no delta report equation: MetricSet=\"" + \
+                          mdapi_set.get('ShortName') + "\" Metric=\"" + mdapi_counter.get('SymbolName') + \
+                          "(" + 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 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:
+                    set.remove(counter)
+                    continue
+
+            # Some counters are sourced from register values that are
+            # not put into the OA reports. This is why some counters
+            # will have a delta equation but not a raw equation. These
+            # counters are typically only available in query mode. For
+            # this reason we put a particular availability value.
+            if delta_read_eq and not raw_read_eq:
+                assert availability == None
+                availability = "true $QueryMode &&"
+                raw_read_eq = delta_read_eq
+
+            # After replacing read tokens with RPN counter READ ops the raw and
+            # delta equations are expected to be identical so warn if that's
+            # not true...
+            if bool(raw_read_eq) ^ bool(delta_read_eq) or raw_read_eq != delta_read_eq:
+                print_err(("WARNING: Inconsistent raw and delta report equations for {0} :: {1} ({2}): " +
+                           "raw=\"{3}\" / \"{4}\" delta=\"{5}\" / \"{6}\" (SKIPPING)")
+                          .format(mdapi_set.get('ShortName'),
+                                  mdapi_counter.get('SymbolName'),
+                                  mdapi_counter.get('ShortName'),
+                                  str(raw_read_eq),
+                                  mdapi_counter.get('SnapshotReportReadEquation'),
+                                  str(delta_read_eq),
+                                  mdapi_counter.get('DeltaReportReadEquation')))
+                set.remove(counter)
+                continue
+
+            normalize_eq = fixup_equation(mdapi_counter.get('NormalizationEquation'))
+            if normalize_eq and normalize_eq == "":
+                normalize_eq = None
+
+            if normalize_eq:
+                # Some normalization equations are represented with macros such as
+                # 'GpuDuration' corresponding to:
+                #
+                #   "$Self 100 UMUL $GpuCoreClocks FDIV"
+                #
+                # We expand macros here so tools don't need to care about them...
+                #
+                equation = normalize_eq
+                equation = expand_macros(equation)
+                if raw_read_eq:
+                    equation = equation.replace('$Self', raw_read_eq)
+            else:
+                equation = delta_read_eq
+
+            if '$Self' in equation:
+                print_err("WARNING: Counter equation (\"" + equation + "\") with unexpanded $Self token: MetricSet=\"" + \
+                          mdapi_set.get('ShortName') + "\" Metric=\"" + mdapi_counter.get('SymbolName') + \
+                          "(" + mdapi_counter.get('ShortName') + ")" + "\" (SKIPPING)")
+                set.remove(counter)
+                continue
+
+            # $$CounterName vs $CounterName in an equation is intended to
+            # differentiate referencing the normalized or raw value of another
+            # counter.
+            #
+            # Since we are only keeping a single (normalized) equation for
+            # counters we only need one form, but we want to be careful to
+            # check if any equations really depend on the raw value of another
+            # counter so we can expand those variables now
+            #
+            tmp = equation
+            for token in tmp.split():
+                if token[0] == '$' and token[1] != '$':
+                    if token[1:] in normalization_equations:
+                        raw_eq = raw_equations[token[1:]]
+
+                        equation = equation.replace(token, raw_eq)
+                        #if token[1:] not in raw_equations:
+                        #   print_err("WARNING: Counter equation (\"" + equation + "\") references un-kept raw equation of another counter : MetricSet=\"" + \
+                        #             mdapi_set.get('ShortName') + "\" Metric=\"" + mdapi_counter.get('ShortName') + "\"")
+
+                    elif token[1:] not in raw_equations and not codegen.is_hw_var(token):
+                        print_err("Unknown variable name: \"" + token + "\" in equation \"" + equation + "\"")
+
+            symbol_name = counter.get('symbol_name')
+
+            # Make sure that every variable in the equation is a known sys_var or counter name
+            equation = equation.replace('$$', "$")
+            for token in equation.split():
+                if token[0] == '$':
+                    if token[1:] not in counters and not codegen.is_hw_var(token):
+                        print_err("WARNING: Counter equation (\"" + equation + "\") with unknown variable " + \
+                                  token + " (maybe skipped counter): MetricSet=\"" + mdapi_set.get('ShortName') + \
+                                  "\" Metric=\"" + mdapi_counter.get('SymbolName') + "(" + mdapi_counter.get('ShortName') + \
+                                  ")" + "\" (SKIPPING)")
+                        set.remove(counter)
+                        skip_counter = True
+                        break
+
+            if skip_counter:
+                continue
+
+            counter.set('equation', equation.strip())
+
+            if availability != None:
+                counter.set('availability', availability)
+
+            counters[symbol_name] = counter;
+            if normalize_eq:
+                normalization_equations[symbol_name] = normalize_eq
+            if raw_read_eq:
+                raw_equations[symbol_name] = raw_read_eq
+
+
+if args.dry_run:
+    sys.exit(0)
+
+# Merge in any custom meta data we have...
+if args.merge:
+    merge = et.parse(args.merge)
+    merge_metrics = merge.getroot()
+
+    for merge_set in merge.findall(".//set"):
+        pattern = ".//set[@symbol_name=\"" + merge_set.get('symbol_name') + "\"][@chipset=\"" + merge_set.get('chipset') + "\"]"
+        real_set = metrics.find(pattern)
+        if real_set is not None:
+            for set_attr in merge_set.items():
+                real_set.set(set_attr[0], set_attr[1])
+
+            for merge_elem in merge_set:
+                if merge_elem.tag == "counter":
+                    merge_counter = merge_elem
+                    pattern = "counter[@symbol_name=\"" + merge_counter.get('symbol_name') + "\"]"
+                    real_counter = real_set.find(pattern)
+                    if real_counter is not None:
+                        for counter_attr in merge_counter.items():
+                            real_counter.set(counter_attr[0], counter_attr[1])
+                    else:
+                        real_set.append(merge_counter)
+                        real_counter = merge_counter
+                else:
+                    real_set.append(merge_elem)
+
+    # For consistency + readability print everything manually...
+    merge_md5 = hashlib.md5(open("merge.xml", 'rb').read()).hexdigest()
+else:
+    merge_md5 = ""
+
+print ("<?xml version=\"1.0\"?>")
+print("<metrics version=\"" + str(int(time.time())) + "\" merge_md5=\"" + merge_md5 + "\">")
+for set in metrics.findall(".//set"):
+    print("  <set name=\"" + set.get('name') + "\"")
+    del set.attrib['name']
+    for attr in set.items():
+        print("       " + attr[0] + "=\"" + attr[1] + "\"")
+    print("       >")
+    for counter in set.findall("counter"):
+        print("    <counter name=\"" + counter.get('name') + "\"")
+        del counter.attrib['name']
+        for attr in counter.items():
+            if attr[0][:6] != "mdapi_":
+                print("             " + attr[0] + "=\"" + saxutils.escape(attr[1]) + "\"")
+        for attr in counter.items():
+            if attr[0][:6] == "mdapi_":
+                print("             " + attr[0] + "=\"" + saxutils.escape(attr[1]) + "\"")
+        print("             />")
+    for config in set.findall("register_config"):
+        if config.get('availability') != None:
+            print("    <register_config type=\"" + config.get('type') + "\"")
+            print("                     availability=\"" + saxutils.escape(config.get('availability')) + "\"")
+            print("                     priority=\"" + config.get('priority') + "\"")
+            print("                     >")
+        else:
+            print("    <register_config type=\"" + config.get('type') + "\">")
+        for reg in config.findall("register"):
+            addr = int(reg.get('address'), 16)
+
+            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 = ''
+
+            print("        <register type=\"" + reg.get('type') + "\" address=\"" + reg.get('address') + "\" value=\"" + reg.get('value') + "\" />" + comment)
+        print("    </register_config>")
+    print("  </set>\n")
+print("</metrics>")
diff --git a/lib/xe/oa-configs/oa-equations-codegen.py b/lib/xe/oa-configs/oa-equations-codegen.py
new file mode 100644
index 0000000000..a4a00f46d9
--- /dev/null
+++ b/lib/xe/oa-configs/oa-equations-codegen.py
@@ -0,0 +1,261 @@
+#!/usr/bin/env python3
+#
+# SPDX-License-Identifier: MIT
+#
+# Copyright © 2024 Intel Corporation
+#
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+
+import argparse
+import os
+import sys
+import textwrap
+
+import codegen
+
+h = None
+c = None
+
+hashed_funcs = {}
+
+def data_type_to_ctype(ret_type):
+    if ret_type == "uint64":
+        return "uint64_t"
+    elif ret_type == "float":
+        return "double"
+    else:
+        raise Exception("Unhandled case for mapping \"" + ret_type + "\" to a C type")
+
+
+def output_counter_read(gen, set, counter):
+    if counter.read_hash in hashed_funcs:
+        return
+
+    c("\n")
+    c("/* {0} :: {1} */".format(set.name, counter.get('name')))
+
+    ret_type = counter.get('data_type')
+    ret_ctype = data_type_to_ctype(ret_type)
+    read_eq = counter.get('equation')
+
+    c(ret_ctype)
+    c(counter.read_sym + "(const struct intel_perf *perf,\n")
+    c.indent(len(counter.read_sym) + 1)
+    c("const struct intel_perf_metric_set *metric_set,\n")
+    c("uint64_t *accumulator)\n")
+    c.outdent(len(counter.read_sym) + 1)
+
+    c("{")
+    c.indent(4)
+
+    gen.output_rpn_equation_code(set, counter, read_eq)
+
+    c.outdent(4)
+    c("}")
+
+    hashed_funcs[counter.read_hash] = counter.read_sym
+
+
+def output_counter_read_definition(gen, set, counter):
+    if counter.read_hash in hashed_funcs:
+        h("#define %s \\" % counter.read_sym)
+        h.indent(4)
+        h("%s" % hashed_funcs[counter.read_hash])
+        h.outdent(4)
+    else:
+        ret_type = counter.get('data_type')
+        ret_ctype = data_type_to_ctype(ret_type)
+        read_eq = counter.get('equation')
+
+        h(ret_ctype)
+        h(counter.read_sym + "(const struct intel_perf *perf,\n")
+        h.indent(len(counter.read_sym) + 1)
+        h("const struct intel_perf_metric_set *metric_set,\n")
+        h("uint64_t *accumulator);\n")
+        h.outdent(len(counter.read_sym) + 1)
+
+        hashed_funcs[counter.read_hash] = counter.read_sym
+
+
+def output_counter_max(gen, set, counter):
+    max_eq = counter.get('max_equation')
+
+    if not max_eq or max_eq == "100":
+        return
+
+    if counter.max_hash in hashed_funcs:
+        return
+
+    c("\n")
+    c("/* {0} :: {1} */".format(set.name, counter.get('name')))
+
+    ret_type = counter.get('data_type')
+    ret_ctype = data_type_to_ctype(ret_type)
+
+    c(ret_ctype)
+    c(counter.max_sym + "(const struct intel_perf *perf,\n")
+    c.indent(len(counter.max_sym) + 1)
+    c("const struct intel_perf_metric_set *metric_set,\n")
+    c("uint64_t *accumulator)\n")
+    c.outdent(len(counter.max_sym) + 1)
+
+    c("{")
+    c.indent(4)
+
+    gen.output_rpn_equation_code(set, counter, max_eq)
+
+    c.outdent(4)
+    c("}")
+
+    hashed_funcs[counter.max_hash] = counter.max_sym
+
+
+def output_counter_max_definition(gen, set, counter):
+    max_eq = counter.get('max_equation')
+
+    if not max_eq or max_eq == "100":
+        return
+
+    if counter.max_hash in hashed_funcs:
+        h("#define %s \\" % counter.max_sym)
+        h.indent(4)
+        h("%s" % hashed_funcs[counter.max_hash])
+        h.outdent(4)
+        h("\n")
+    else:
+        ret_type = counter.get('data_type')
+        ret_ctype = data_type_to_ctype(ret_type)
+
+        h(ret_ctype)
+
+        h(counter.max_sym + "(const struct intel_perf *perf,")
+        h.indent(len(counter.max_sym) + 1)
+        h("const struct intel_perf_metric_set *metric_set,")
+        h("uint64_t *accumulator);")
+        h.outdent(len(counter.max_sym) + 1)
+        h("\n")
+
+        hashed_funcs[counter.max_hash] = counter.max_sym
+
+
+def generate_equations(args, gens):
+    global hashed_funcs
+
+    header_file = os.path.basename(args.header)
+    header_define = header_file.replace('.', '_').upper()
+
+    hashed_funcs = {}
+    c(textwrap.dedent("""\
+        #include <stdlib.h>
+        #include <string.h>
+
+        #include "xe/xe_oa.h"
+        #include "%s"
+
+        #define MIN(x, y) (((x) < (y)) ? (x) : (y))
+        #define MAX(a, b) (((a) > (b)) ? (a) : (b))
+
+        double
+        percentage_max_callback_float(const struct intel_perf *perf,
+                                      const struct intel_perf_metric_set *metric_set,
+                                      uint64_t *accumulator)
+        {
+           return 100;
+        }
+
+        uint64_t
+        percentage_max_callback_uint64(const struct intel_perf *perf,
+                                       const struct intel_perf_metric_set *metric_set,
+                                       uint64_t *accumulator)
+        {
+           return 100;
+        }
+
+        """ % os.path.basename(args.header)))
+
+    # Print out all equation functions.
+    for gen in gens:
+        for set in gen.sets:
+            for counter in set.counters:
+                output_counter_read(gen, set, counter)
+                output_counter_max(gen, set, counter)
+
+    hashed_funcs = {}
+    h(textwrap.dedent("""\
+        #ifndef __%s__
+        #define __%s__
+
+        #include <stddef.h>
+        #include <stdint.h>
+        #include <stdbool.h>
+
+        struct intel_perf;
+        struct intel_perf_metric_set;
+
+        double
+        percentage_max_callback_float(const struct intel_perf *perf,
+                                      const struct intel_perf_metric_set *metric_set,
+                                      uint64_t *accumulator);
+        uint64_t
+        percentage_max_callback_uint64(const struct intel_perf *perf,
+                                       const struct intel_perf_metric_set *metric_set,
+                                       uint64_t *accumulator);
+
+        """ % (header_define, header_define)))
+
+    # Print out all equation functions.
+    for gen in gens:
+        for set in gen.sets:
+            for counter in set.counters:
+                output_counter_read_definition(gen, set, counter)
+                output_counter_max_definition(gen, set, counter)
+
+    h(textwrap.dedent("""\
+
+        #endif /* __%s__ */
+        """ % header_define))
+
+
+def main():
+    global c
+    global h
+
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--header", help="Header file to write")
+    parser.add_argument("--code", help="C file to write")
+    parser.add_argument("xml_files", nargs='+', help="List of xml metrics files to process")
+
+    args = parser.parse_args()
+
+    # Note: either arg may == None
+    h = codegen.Codegen(args.header)
+    c = codegen.Codegen(args.code)
+
+    gens = []
+    for xml_file in args.xml_files:
+        gens.append(codegen.Gen(xml_file, c))
+
+    copyright = textwrap.dedent("""\
+        /* Autogenerated file, DO NOT EDIT manually! generated by {} */
+        // SPDX-License-Identifier: MIT
+        /*
+         * Copyright © 2024 Intel Corporation
+         */
+
+        """).format(os.path.basename(__file__))
+
+    h(copyright)
+    c(copyright)
+
+    generate_equations(args, gens)
+
+
+if __name__ == '__main__':
+    main()
diff --git a/lib/xe/oa-configs/oa-metricset-codegen.py b/lib/xe/oa-configs/oa-metricset-codegen.py
new file mode 100644
index 0000000000..be9483af02
--- /dev/null
+++ b/lib/xe/oa-configs/oa-metricset-codegen.py
@@ -0,0 +1,257 @@
+#!/usr/bin/env python3
+#
+# SPDX-License-Identifier: MIT
+#
+# Copyright © 2024 Intel Corporation
+
+import argparse
+import os
+import sys
+import textwrap
+
+import codegen
+
+h = None
+c = None
+
+semantic_type_map = {
+    "duration": "raw",
+    "ratio": "event"
+    }
+
+def output_units(unit):
+    return unit.replace(' ', '_').upper()
+
+def availability_func_name(set, counter):
+    return set.gen.chipset + "_" + set.underscore_name + "_" + counter.get('symbol_name') + "_availability"
+
+def output_availability_funcs(set, counter):
+    availability = counter.get('availability')
+    if availability:
+        c("static bool " + availability_func_name(set, counter) + "(const struct intel_perf *perf) {")
+        c.indent(4)
+        set.gen.output_availability(set, availability, counter.get('name'))
+        c.indent(4)
+        c("return true;")
+        c.outdent(4)
+        c("}")
+        c("return false;")
+        c.outdent(4)
+        c("}")
+
+def output_counter_report(set, counter):
+    data_type = counter.get('data_type')
+    data_type_uc = data_type.upper()
+    c_type = data_type
+
+    if "uint" in c_type:
+        c_type = c_type + "_t"
+
+    semantic_type = counter.get('semantic_type')
+    if semantic_type in semantic_type_map:
+        semantic_type = semantic_type_map[semantic_type]
+
+    semantic_type_uc = semantic_type.upper()
+
+    c("\n")
+
+    c("{")
+    c.indent(4)
+    c(".name = \"{0}\",\n".format(counter.get('name')))
+    c(".symbol_name = \"{0}\",\n".format(counter.get('symbol_name')))
+    c(".desc = \"{0}\",\n".format(counter.get('description')))
+    c(".type = INTEL_PERF_LOGICAL_COUNTER_TYPE_{0},\n".format(semantic_type_uc))
+    c(".storage = INTEL_PERF_LOGICAL_COUNTER_STORAGE_{0},\n".format(data_type_uc))
+    c(".unit = INTEL_PERF_LOGICAL_COUNTER_UNIT_{0},\n".format(output_units(counter.get('units'))))
+    c(".read_{0} = {1},\n".format(data_type, set.read_funcs["$" + counter.get('symbol_name')]))
+    c(".max_{0} = {1},\n".format(data_type, set.max_funcs["$" + counter.get('symbol_name')]))
+    c(".group = \"{0}\",\n".format(counter.get('mdapi_group')))
+    availability = counter.get('availability')
+    if availability:
+        c(".availability = {0},\n".format(availability_func_name(set, counter)))
+    c.outdent(4)
+    c("},")
+
+
+def generate_metric_sets(args, gen):
+    c(textwrap.dedent("""\
+#include <stddef.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <assert.h>
+
+        """))
+
+    c("#include \"{0}\"".format(os.path.basename(args.header)))
+    c("#include \"{0}\"".format(os.path.basename(args.equations_include)))
+    c("#include \"{0}\"".format(os.path.basename(args.registers_include)))
+
+    # Print out all set registration functions for each set in each
+    # generation.
+    for set in gen.sets:
+        counters = sorted(set.counters, key=lambda k: k.get('symbol_name'))
+
+        c("\n")
+
+        for counter in counters:
+          output_availability_funcs(set, counter)
+
+        c("\nstatic void\n")
+        c(gen.chipset + "_add_" + set.underscore_name + "_metric_set(struct intel_perf *perf)")
+        c("{\n")
+        c.indent(4)
+
+        c("struct intel_perf_metric_set *metric_set;\n")
+        c("struct intel_perf_logical_counter *counter;\n\n")
+
+        c("metric_set = calloc(1, sizeof(*metric_set));\n")
+        c("metric_set->name = \"" + set.name + "\";\n")
+        c("metric_set->symbol_name = \"" + set.symbol_name + "\";\n")
+        c("metric_set->hw_config_guid = \"" + set.hw_config_guid + "\";\n")
+        c("metric_set->counters = calloc({0}, sizeof(struct intel_perf_logical_counter));\n".format(str(len(counters))))
+        c("metric_set->n_counters = 0;\n")
+        c("metric_set->perf_oa_metrics_set = 0; // determined at runtime\n")
+
+        if gen.chipset.startswith("acm") or gen.chipset.startswith("mtl"):
+            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;
+
+                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 + 36;
+                metric_set->c_offset = metric_set->b_offset + 8;
+                metric_set->perfcnt_offset = metric_set->c_offset + 8;
+
+            """))
+
+        c("%s_%s_add_registers(perf, metric_set);" % (gen.chipset, set.underscore_name))
+
+        c("intel_perf_add_metric_set(perf, metric_set);");
+        c("\n")
+
+        c("{")
+        c.indent(4)
+        c("static const struct intel_perf_logical_counter _counters[] = {")
+        c.indent(4)
+
+        for counter in counters:
+            output_counter_report(set, counter)
+        c.outdent(4)
+        c("};")
+        c("int i;")
+
+        c("for (i = 0; i < sizeof(_counters) / sizeof(_counters[0]); i++) {")
+        c.indent(4)
+        c("if (_counters[i].availability && !_counters[i].availability(perf))")
+        c.indent(4)
+        c("continue;")
+        c.outdent(4)
+        c("counter = &metric_set->counters[metric_set->n_counters++];")
+        c("*counter = _counters[i];")
+        c("counter->metric_set = metric_set;")
+        c("intel_perf_add_logical_counter(perf, counter, counter->group);")
+        c.outdent(4)
+        c("}")
+        c.outdent(4)
+        c("}")
+        c("\nassert(metric_set->n_counters <= {0});\n".format(len(counters)));
+
+        c.outdent(4)
+        c("}\n")
+
+    c("\nvoid")
+    c("intel_perf_load_metrics_" + gen.chipset + "(struct intel_perf *perf)")
+    c("{")
+    c.indent(4)
+
+    for set in gen.sets:
+        c("{0}_add_{1}_metric_set(perf);".format(gen.chipset, set.underscore_name))
+
+    c.outdent(4)
+    c("}")
+
+
+
+def main():
+    global c
+    global h
+
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--header", help="Header file to write")
+    parser.add_argument("--code", help="C file to write")
+    parser.add_argument("--equations-include", help="Equations header file")
+    parser.add_argument("--registers-include", help="Registers header file")
+    parser.add_argument("--xml-file", help="Xml file to generate metric sets from")
+
+    args = parser.parse_args()
+
+    # Note: either arg may == None
+    h = codegen.Codegen(args.header)
+    c = codegen.Codegen(args.code)
+
+    gen = codegen.Gen(args.xml_file, c)
+
+    copyright = textwrap.dedent("""\
+        /* Autogenerated file, DO NOT EDIT manually! generated by {} */
+        // SPDX-License-Identifier: MIT
+        /*
+         * Copyright © 2024 Intel Corporation
+         */
+
+        """).format(os.path.basename(__file__))
+
+    header_file = os.path.basename(args.header)
+    header_define = header_file.replace('.', '_').upper()
+
+    h(copyright)
+    h(textwrap.dedent("""\
+        #ifndef %s
+        #define %s
+
+        #include <string.h>
+
+        #include "xe/xe_oa.h"
+
+        """ % (header_define, header_define)))
+
+    # Print out all set registration functions for each generation.
+    h("void intel_perf_load_metrics_" + gen.chipset + "(struct intel_perf *perf);\n\n")
+
+    h(textwrap.dedent("""\
+        #endif /* %s */
+        """ % header_define))
+
+    c(copyright)
+    generate_metric_sets(args, gen)
+
+
+if __name__ == '__main__':
+    main()
diff --git a/lib/xe/oa-configs/oa-registers-codegen.py b/lib/xe/oa-configs/oa-registers-codegen.py
new file mode 100644
index 0000000000..a4aa134097
--- /dev/null
+++ b/lib/xe/oa-configs/oa-registers-codegen.py
@@ -0,0 +1,118 @@
+#!/usr/bin/env python3
+#
+# SPDX-License-Identifier: MIT
+#
+# Copyright © 2024 Intel Corporation
+
+import argparse
+import os
+import sys
+import textwrap
+
+import codegen
+
+h = None
+c = None
+
+
+def generate_register_configs(set):
+    register_types = {
+        'FLEX': 'flex_regs',
+        'NOA': 'mux_regs',
+        'OA': 'b_counter_regs',
+    }
+
+    c("void %s_%s_add_registers(struct intel_perf *perf, struct intel_perf_metric_set *metric_set)" %
+      (set.gen.chipset, set.underscore_name))
+    c("{")
+    c.indent(4)
+
+    # fill in register/values
+    register_configs = set.findall('register_config')
+    for register_config in register_configs:
+        t = register_types[register_config.get('type')]
+
+        availability = register_config.get('availability')
+        if availability:
+            set.gen.output_availability(set, availability, register_config.get('type') + ' register config')
+            c.indent(4)
+
+        c("{")
+        c.indent(4)
+        c("static const struct intel_perf_register_prog _%s[] = {" % t)
+        c.indent(4)
+        for register in register_config.findall('register'):
+            c("{ .reg = %s, .val = %s }," %
+              (register.get('address'), register.get('value')))
+        c.outdent(4)
+        c("};")
+        c("metric_set->%s = _%s;" % (t, t))
+        c("metric_set->n_%s = sizeof(_%s) / sizeof(_%s[0]);" % (t, t, t))
+        c.outdent(4)
+        c("}")
+
+        if availability:
+            c.outdent(4)
+            c("}")
+        c("\n")
+
+    c.outdent(4)
+    c("}")
+
+
+def main():
+    global c
+    global h
+    global xml_equations
+
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--header", help="Header file to write")
+    parser.add_argument("--code", help="C file to write")
+    parser.add_argument("--xml-file", help="Xml file to generate register configurations from")
+
+    args = parser.parse_args()
+
+    # Note: either arg may == None
+    h = codegen.Codegen(args.header)
+    c = codegen.Codegen(args.code)
+
+    gen = codegen.Gen(args.xml_file, c)
+
+    copyright = textwrap.dedent("""\
+        /* Autogenerated file, DO NOT EDIT manually! generated by {} */
+        // SPDX-License-Identifier: MIT
+        /*
+         * Copyright © 2024 Intel Corporation
+         */
+
+        """).format(os.path.basename(__file__))
+
+
+    header_file = os.path.basename(args.header)
+    header_define = "__%s__" % header_file.replace('.', '_').upper()
+
+    h(copyright)
+    h("#ifndef %s" % header_define)
+    h("#define %s" % header_define)
+    h("\n")
+    h("struct intel_perf;")
+    h("struct intel_perf_metric_set;")
+    h("\n")
+    for set in gen.sets:
+        h("void %s_%s_add_registers(struct intel_perf *perf, struct intel_perf_metric_set *metric_set);" %
+          (gen.chipset, set.underscore_name))
+    h("\n")
+    h("#endif /* %s */" % header_define)
+
+    c(copyright)
+    c("\n")
+    c("#include \"%s\"" % header_file)
+    c("#include \"xe/xe_oa.h\"")
+
+    for set in gen.sets:
+        c("\n")
+        generate_register_configs(set)
+
+
+if __name__ == '__main__':
+    main()
diff --git a/lib/xe/oa-configs/oa_guid_registry.py b/lib/xe/oa-configs/oa_guid_registry.py
new file mode 100644
index 0000000000..ab14b398f3
--- /dev/null
+++ b/lib/xe/oa-configs/oa_guid_registry.py
@@ -0,0 +1,117 @@
+import copy
+import hashlib
+import re
+
+import xml.etree.ElementTree as et
+
+
+class Registry:
+
+    # Tries to avoid fragility from et.tostring() by normalizing into CSV string first
+    @staticmethod
+    def hw_config_hash(metric_set):
+        """Hashes the given metric set's HW register configs.
+
+        Args:
+            metric_set -- is an ElementTree element for a 'set'
+
+        Note this doesn't accept an MDAPI based metric set description
+        """
+
+        registers_str = ""
+        for config in metric_set.findall(".//register_config"):
+            if config.get('id') == None:
+                config_id = '0'
+            else:
+                config_id = config.get('id')
+            if config.get('priority') == None:
+                config_priority = '0'
+            else:
+                config_priority = config.get('priority')
+            if config.get('availability') == None:
+                config_availability = ""
+            else:
+                config_availability = config.get('availability')
+            for reg in config.findall("register"):
+                addr = int(reg.get('address'), 16)
+                value = int(reg.get('value'), 16)
+                registers_str = registers_str + config_id + ',' + config_priority + ',' + config_availability + ',' + str(addr) + ',' + str(value) + '\n'
+
+        return hashlib.md5(registers_str.encode('utf-8')).hexdigest()
+
+
+    @staticmethod
+    def mdapi_hw_config_hash(mdapi_metric_set):
+        """Hashes the HW register configuration of a metric set from VPG's MDAPI XML files.
+
+        Args:
+            mdapi_metric_set -- is an ElementTree element for a 'MetricSet'
+
+        Note: being a simplistic hash of all RegConfigStart element contents
+        this will change for minor comment changes in VPG's files. Without
+        any promisies of stability within these files then it can't help to
+        err on the side of caution here, so we know when to investigate
+        changes that might affect our useages.
+        """
+
+        def reorder_attributes(root):
+            for el in root.iter():
+                attrib = el.attrib
+                if len(attrib) > 1:
+                    # adjust attribute order, e.g. by sorting
+                    attribs = sorted(attrib.items())
+                    attrib.clear()
+                    attrib.update(attribs)
+
+        config = et.Element('config')
+        for registers in mdapi_metric_set.findall(".//RegConfigStart"):
+            config.append(copy.deepcopy(registers))
+        reorder_attributes(config)
+        registers_str = et.tostring(config)
+
+        return hashlib.md5(registers_str).hexdigest()
+
+    @staticmethod
+    def chipset_derive_hash(chipset, set_name, hash):
+        """Derive a HW config hash for a given chipset & set name.
+
+        This helps us avoiding collisions with identical config across
+        different Gen or GT.
+        """
+
+        return "%s-%s-%s" % (chipset, set_name, hash)
+
+
+    @staticmethod
+    def chipset_name(name):
+        known_chipsets = ( 'HSW',
+                           'BDW',
+                           'CHV',
+                           'SKL',
+                           'BXT',
+                           'KBL',
+                           'GLK',
+                           'CFL',
+                           'CNL',
+                           'ICL',
+                           'EHL',
+                           'TGL',
+                           'RKL',
+                           'DG1',
+                           'ACM',
+                           'PVC',
+                           'MTL', )
+        if name in known_chipsets:
+            return name
+
+        # Unknown HW
+        assert 0
+
+
+    @staticmethod
+    def gt_name(name):
+        return re.sub(' ', '', name)
+
+    @staticmethod
+    def sanitize_symbol_name(text):
+        return text.replace('#', "_")
diff --git a/lib/xe/oa-configs/update-guids.py b/lib/xe/oa-configs/update-guids.py
new file mode 100755
index 0000000000..0c7d129404
--- /dev/null
+++ b/lib/xe/oa-configs/update-guids.py
@@ -0,0 +1,222 @@
+#!/usr/bin/env python3
+# coding=utf-8
+
+# SPDX-License-Identifier: MIT
+#
+# Copyright © 2024 Intel Corporation
+#
+#
+# This script can:
+#
+# - Automatically add template entries for unregistered metric sets diescovered
+#   in new mdapi xml files.
+# - Once mdapi-convert-xml.py has been run to output register configs for new
+#   metric sets then re-running this script can add the config_hash attribute
+#   to corresponding registry entries.
+#
+# The script is designed to allow incremental updates/fixups of the guid
+# registry by working in terms of:
+#
+# 1) load all the existing state
+# 2) apply tweaks/modifications
+# 3) write everything back out
+#
+# The script should gracefully handle incomplete guid entries, which is
+# important when considering how the mdapi-xml-convert.py script depends on the
+# 'mdapi_config_hash' attribute while adding the 'config_hash' attribute
+# depends on the configs output by mdapi-xml-convert.py.
+
+
+
+import argparse
+import os.path
+import re
+import sys
+import time
+import uuid
+
+import xml.etree.ElementTree as et
+import xml.sax.saxutils as saxutils
+
+import oa_guid_registry as oa_registry
+
+
+def print_err(*args):
+    sys.stderr.write(' '.join(map(str,args)) + '\n')
+
+def guid_hashing_key(guid_obj):
+    ret = oa_registry.Registry.chipset_derive_hash(guid_obj['chipset'],
+                                                   guid_obj['name'],
+                                                   guid_obj['mdapi_config_hash'])
+    return ret
+
+parser = argparse.ArgumentParser()
+parser.add_argument("xml", nargs="+", help="XML description of metrics")
+parser.add_argument("--guids", required=True, help="Metric set GUID registry")
+
+args = parser.parse_args()
+
+
+guids = []
+guid_index = {} # guid objects indexed by id
+mdapi_config_hash_guid_table = {} # indexed by MDAPI XML register config hash
+named_guid_table = {} # indexed by name=<chipset>_<symbol_name>
+
+
+
+# 1) read everything we have currently
+#
+guids_xml = et.parse(args.guids)
+for guid in guids_xml.findall(".//guid"):
+    guid_obj = {}
+
+    if guid.get('id') != None:
+        guid_obj['id'] = guid.get('id')
+    else:
+        guid_obj['id'] = str(uuid.uuid4())
+
+    if guid.get('mdapi_config_hash') != None:
+        guid_obj['mdapi_config_hash'] = guid.get('mdapi_config_hash')
+    if guid.get('config_hash') != None:
+        guid_obj['config_hash'] = guid.get('config_hash')
+
+    if guid.get('chipset') != None:
+        guid_obj['chipset'] = guid.get('chipset')
+    if guid.get('name') != None:
+        guid_obj['name'] = guid.get('name')
+        named_guid_table[guid_obj['chipset'] + "_" + guid_obj['name']] = guid_obj
+
+    if 'mdapi_config_hash' in guid_obj:
+        hashing_key = oa_registry.Registry.chipset_derive_hash(guid_obj['chipset'],
+                                                               guid_obj['name'],
+                                                               guid_obj['mdapi_config_hash'])
+        mdapi_config_hash_guid_table[hashing_key] = guid_obj
+
+    guids.append(guid_obj)
+
+    if guid_obj['id'] in guid_index:
+        print_err("Duplicate GUID " + guid_obj['id'] + "!")
+        sys.exit(1)
+    guid_index[guid_obj['id']] = guid_obj
+
+
+#
+# 2) fixup/modify the guid entries...
+#
+
+
+for arg in args.xml:
+    internal = et.parse(arg)
+
+    concurrent_group = internal.find(".//ConcurrentGroup")
+    chipset = oa_registry.Registry.chipset_name(concurrent_group.get('SupportedHW')).lower()
+    if concurrent_group.get('SupportedGT') != None:
+        chipset = chipset + oa_registry.Registry.gt_name(concurrent_group.get('SupportedGT')).lower()
+
+
+    for mdapi_set in internal.findall(".//MetricSet"):
+
+        mdapi_config_hash = oa_registry.Registry.mdapi_hw_config_hash(mdapi_set)
+
+        set_name = oa_registry.Registry.sanitize_symbol_name(mdapi_set.get('SymbolName'))
+
+        name = chipset + "_" + set_name;
+
+        hashing_key = oa_registry.Registry.chipset_derive_hash(chipset, set_name, mdapi_config_hash)
+        if hashing_key in mdapi_config_hash_guid_table:
+            guid_obj = mdapi_config_hash_guid_table[hashing_key]
+
+            guid_obj['name'] = set_name
+            guid_obj['chipset'] = chipset
+            guid_obj['matched_mdapi'] = True
+        elif name in named_guid_table:
+            guid_obj = named_guid_table[name]
+
+            guid_obj['matched_mdapi'] = True
+            guid_obj['mdapi_config_hash'] = mdapi_config_hash
+            if 'config_hash' in guid_obj:
+                del guid_obj['config_hash']
+            guid_obj['comment'] = "WARNING: MDAPI XML config hash changed! If upstream, double check raw counter semantics unchanged"
+            print_err("WARNING: MDAPI XML config hash changed for \"" + set_name + "\" (" + chipset + ") If upstream, double check raw counter semantics unchanged")
+        else:
+            guid_obj = { 'mdapi_config_hash': mdapi_config_hash,
+                         'id': str(uuid.uuid4()),
+                         'name': set_name,
+                         'chipset': chipset,
+                         'unregistered': True,
+                         'matched_mdapi': True,
+                         'comment': "New"
+                       }
+            guid_index[guid_obj['id']] = guid_obj
+            mdapi_config_hash_guid_table[guid_hashing_key(guid_obj)] = guid_obj
+            guids.append(guid_obj)
+            print_err("New GUID \"" + guid_obj['id'] + "\" for metric set = " + set_name + " (" + chipset + ")")
+
+        named_guid_table[chipset + '_' + set_name] = guid_obj
+
+
+
+chipsets = [ 'hsw',
+             'bdw', 'chv',
+             'sklgt2', 'sklgt3', 'sklgt4', 'kblgt2', 'kblgt3', 'cflgt2', 'cflgt3',
+             'bxt', 'glk',
+             'cnl',
+             'icl', 'ehl',
+             'tglgt1', 'tglgt2', 'rkl', 'dg1', 'adl',
+             'acmgt1', 'acmgt2', 'acmgt3',
+             'mtlgt2', 'mtlgt3',
+]
+
+for chipset in chipsets:
+    filename = 'oa-' + chipset + '.xml'
+    if not os.path.isfile(filename):
+        continue
+
+    public = et.parse(filename)
+
+    for metricset in public.findall(".//set"):
+
+        set_name = metricset.get('symbol_name')
+
+        config_hash = oa_registry.Registry.hw_config_hash(metricset)
+
+        guid_key = chipset + "_" + set_name
+        if guid_key in named_guid_table:
+            guid_obj = named_guid_table[guid_key]
+            guid_obj['config_hash'] = config_hash
+
+
+#
+# 3) write all the guids back out...
+
+print("<guids>")
+for guid_obj in guids:
+    comment = None
+    line = "<guid"
+
+    if 'matched_mdapi' not in guid_obj:
+        comment = "Not found in MDAPI XML file[s]; Entry copied unmodified (maybe removed from MDAPI XML or not all files given on command line)"
+
+    if 'comment' in guid_obj:
+        comment = guid_obj['comment']
+
+    if 'config_hash' in guid_obj:
+        line = line + ' config_hash="' + guid_obj['config_hash'] + '"'
+    if 'mdapi_config_hash' in guid_obj:
+        line = line + ' mdapi_config_hash="' + guid_obj['mdapi_config_hash'] + '"'
+
+    line = line + ' id="' + guid_obj['id'] + '"'
+
+    if 'chipset' in guid_obj:
+        line = line + ' chipset="' + guid_obj['chipset'] + '"'
+
+    if 'name' in guid_obj:
+        line = line + ' name="' + guid_obj['name'] + '"'
+
+    line = line + ' />'
+
+    if comment != None:
+        print("    <!-- ↓" + comment + " -->")
+
+    print("    " + line)
+print("</guids>")
-- 
2.41.0


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

* [PATCH i-g-t 02/27] lib/xe/oa: Add LNL metric guids
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 01/27] lib/xe/oa: Import OA metric generation files from i915 Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 03/27] lib/xe/oa: Add OA LNL metrics (oa_lnl.xml) Ashutosh Dixit
                   ` (29 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

$ update-guids.py --guids=guids.xml MetricsXML_P31.xml > guids.xml2

And copying the new guids to guids.xml (as per the README).

Note: as mentioned in update-guids.py and README.md, in order to generate
config_hash in guids.xml, mdapi-convert-xml.py must first be run (as
outline in the next commit) and then update-guids.py command above should
be repeated.

Note: LNL media guids had issues after running mdapi-convert-xml.py so have
not been added, revisit this.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 lib/xe/oa-configs/guids.xml           | 14 ++++++++++++++
 lib/xe/oa-configs/oa_guid_registry.py | 16 +++++++++++++++-
 lib/xe/oa-configs/update-guids.py     |  1 +
 3 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/lib/xe/oa-configs/guids.xml b/lib/xe/oa-configs/guids.xml
index 510450f87a..27330edd3d 100644
--- a/lib/xe/oa-configs/guids.xml
+++ b/lib/xe/oa-configs/guids.xml
@@ -2746,4 +2746,18 @@
     <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" />
+    <guid config_hash="208c3c79f1b4db2f86277292566d3f10" mdapi_config_hash="1fbaf5ad061ccf96ff7d4e108cbcf3ae" id="12f20772-0044-44ff-bcc0-d2bc252d140e" chipset="lnl" name="RenderBasic" />
+    <guid config_hash="b781b616d31187e7f4982f3a238b0ecd" mdapi_config_hash="35c121ef361006ca639d1e3377b5c6d7" id="72539be3-67d9-4101-b067-766b7811d2bb" chipset="lnl" name="ComputeBasic" />
+    <guid config_hash="955739b43332e61729e0a7a032188c02" mdapi_config_hash="d9be0378dd2dd6a5f85f71d156d21b43" id="cae0b2ca-c52a-4111-b8bf-5af070677d57" chipset="lnl" name="DepthProfile" />
+    <guid config_hash="55ecb5067bca7d99769a30a14eaceba5" mdapi_config_hash="e444af605670c2230a5796b4ad65b2c0" id="70cc56cf-3a37-4f6c-8911-4455fe441b2a" chipset="lnl" name="DeviceCacheProfile" />
+    <guid config_hash="e4a38cb223b20b9c28c5941b2f4979cb" mdapi_config_hash="952b726980ff7e836089c7651070f44f" id="01ffd51d-a6d6-4ff4-93d0-619f04c3a547" chipset="lnl" name="MemoryProfile" />
+    <guid config_hash="5d38d137356ca80dca2ea337449675be" mdapi_config_hash="07f0aa1a93f77bc7b6771ba2b68c8325" id="6791470f-f1e6-4f77-9013-bcb0c4be6f57" chipset="lnl" name="RenderPipeProfile" />
+    <guid config_hash="72e3ab9e7d727f97c5ea29bef23be40e" mdapi_config_hash="e6b78fe68f406ee2a0cc25293c60bc62" id="d66ce633-4ae5-4de2-8678-9705adfd45bc" chipset="lnl" name="RTProfile" />
+    <guid config_hash="6dc1bd4e8d8b49cc9776701db836ffe9" mdapi_config_hash="cee63b3642783febd3bcbf45629c5e1c" id="e7338926-568c-4424-bc44-f90318a6b472" chipset="lnl" name="VectorEngineProfile" />
+    <guid config_hash="b87d3a3dfab7193309deb13aeb595589" mdapi_config_hash="1950d62ef4b729af4494d76ca3ec8101" id="4ccd6535-fb9a-440f-b0f5-882879dc4cb0" chipset="lnl" name="VectorEngineStalls" />
+    <guid config_hash="9df6fd1c4fd100b5e50cd97e16bd1cb8" mdapi_config_hash="47c19557fd9591c3fc3955e46db4565c" id="24c33f2c-f8d9-40d9-b2db-64e863b4d625" chipset="lnl" name="TestOa" />
+    <guid config_hash="9bfa717fd19e8d5b99062ca0101113dd" mdapi_config_hash="f390ce860d404c3f22f9d1a3159ec58e" id="0af24f48-05bc-467b-b561-33dec252e651" chipset="lnl" name="MetricSet1" />
+    <guid config_hash="d635631df97322be3d97b9c4e38152e9" mdapi_config_hash="68c19075e48e5128b456a91cd7b95286" id="914ad901-832a-4ccd-a21e-ddc7690ed213" chipset="lnl" name="MetricSet2" />
+    <guid config_hash="d63d186f5b83e91f8c0680847bbf4b24" mdapi_config_hash="d31ec4eaa11c8be0d8d72ecece53434f" id="3b3c9f55-e34b-423d-8c05-7b1af03b6685" chipset="lnl" name="MetricSet3" />
+    <guid config_hash="76b7587d047c30ecde26e3f6253b4165" mdapi_config_hash="e39d956ed7b8d0cbe7d354cff234af7d" id="e6f21065-a6f5-4ea4-a545-80d6aebaab56" chipset="lnl" name="MetricSet4" />
 </guids>
diff --git a/lib/xe/oa-configs/oa_guid_registry.py b/lib/xe/oa-configs/oa_guid_registry.py
index ab14b398f3..bc265cc689 100644
--- a/lib/xe/oa-configs/oa_guid_registry.py
+++ b/lib/xe/oa-configs/oa_guid_registry.py
@@ -100,10 +100,24 @@ class Registry:
                            'DG1',
                            'ACM',
                            'PVC',
-                           'MTL', )
+                           'MTL',
+                           'LNL',
+                          )
         if name in known_chipsets:
             return name
 
+        internal_chipsets = {
+            'P22': 'ATS',
+            'P24': 'DG2',
+            'P25': 'PVC',
+            'P26': 'ADL',
+            'P27': 'MTL',
+            'P31': 'LNL',
+        }
+
+        if name in internal_chipsets:
+            return internal_chipsets[name]
+
         # Unknown HW
         assert 0
 
diff --git a/lib/xe/oa-configs/update-guids.py b/lib/xe/oa-configs/update-guids.py
index 0c7d129404..18f3458e84 100755
--- a/lib/xe/oa-configs/update-guids.py
+++ b/lib/xe/oa-configs/update-guids.py
@@ -165,6 +165,7 @@ chipsets = [ 'hsw',
              'tglgt1', 'tglgt2', 'rkl', 'dg1', 'adl',
              'acmgt1', 'acmgt2', 'acmgt3',
              'mtlgt2', 'mtlgt3',
+             'lnl',
 ]
 
 for chipset in chipsets:
-- 
2.41.0


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

* [PATCH i-g-t 03/27] lib/xe/oa: Add OA LNL metrics (oa_lnl.xml)
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 01/27] lib/xe/oa: Import OA metric generation files from i915 Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 02/27] lib/xe/oa: Add LNL metric guids Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 04/27] lib/xe/oa: Add truncated legacy Xe1 metrics XML's Ashutosh Dixit
                   ` (28 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

$ mdapi-xml-convert.py --guids=guids.xml MetricsXML_P31.xml > oa-lnl.xml

Note: The metrics XML's consist of (a) the registers (in this case NOA or
mux registers) to be programmed (b) the metrics themselves which specify
how the counters in the reports should be combined to construct the
metrics.  The changes in mdapi-xml-convert.py in this patch completely
ignore (b) since they are not relevant for IGT. (a) is needed for IGT LNL
OAG uses "576B_PEC64LL" format which is not available on previous platforms
so we cannot use metrics for a previous platform such as MTL to generate
LNL OAG data.

Note: LNL media guids had issues after running mdapi-convert-xml.py so have
not been added, revisit this.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 lib/xe/oa-configs/mdapi-xml-convert.py |   25 +
 lib/xe/oa-configs/oa-lnl.xml           | 2799 ++++++++++++++++++++++++
 2 files changed, 2824 insertions(+)
 create mode 100644 lib/xe/oa-configs/oa-lnl.xml

diff --git a/lib/xe/oa-configs/mdapi-xml-convert.py b/lib/xe/oa-configs/mdapi-xml-convert.py
index 5903ef4d35..ab4747ddd1 100755
--- a/lib/xe/oa-configs/mdapi-xml-convert.py
+++ b/lib/xe/oa-configs/mdapi-xml-convert.py
@@ -149,6 +149,21 @@ mtl_chipset_oam_samedia_params = {
     }
 }
 
+# FIXME: everything except oa_report_size is incorrect here
+xe2_chipset_params = {
+    'a_offset': 16,
+    'b_offset': 192,
+    'c_offset': 224,
+    'oa_report_size': 576,
+    'config_reg_blacklist': {
+        0x2364, # OACTXID
+    },
+    'register_offsets': {
+        0x1b0: 'PERFCNT 0',
+        0x1b8: 'PERFCNT 1',
+    }
+}
+
 hsw_chipset_oa_formats = {
     '256B_GENERIC_NOA16': hsw_chipset_params,
 }
@@ -167,6 +182,10 @@ mtl_chipset_oa_formats = {
     '128B_MPEC8_NOA16': mtl_chipset_oam_samedia_params,
 }
 
+xe2_chipset_oa_formats = {
+    '256B_GENERIC_NOA16': xe2_chipset_params,
+}
+
 chipsets = {
     'HSW': hsw_chipset_oa_formats,
     'BDW': gen8_11_chipset_oa_formats,
@@ -185,10 +204,13 @@ chipsets = {
     'ADL': gen8_11_chipset_oa_formats,
     'ACM': xehpsdv_chipset_oa_formats,
     'MTL': mtl_chipset_oa_formats,
+    'LNL': xe2_chipset_oa_formats,
 }
 
 xehp_plus = ( 'ACM', 'MTL' )
 
+xe2_plus = ( 'LNL' )
+
 register_types = { 'OA', 'NOA', 'FLEX', 'PM' }
 
 default_set_blacklist = { "RenderDX1x", # TODO: rename to something non 'DX'
@@ -352,6 +374,9 @@ def read_token_to_rpn_read_oag(chipset, token, raw_offsets, oa_format):
                 return "C " + str(idx - 48) + " READ"
             else:
                 return "{0} READ".format(read_value(chipset, offset, oa_format))
+        elif chipset in xe2_plus:
+            # FIXME: skip all metrics to retain just the registers
+                return "GPU_TIME 0 READ"
         else:
             # For Gen8+ the array of accumulated counters is
             # assumed to start with a GPU_TIME then GPU_CLOCK,
diff --git a/lib/xe/oa-configs/oa-lnl.xml b/lib/xe/oa-configs/oa-lnl.xml
new file mode 100644
index 0000000000..3576ca2827
--- /dev/null
+++ b/lib/xe/oa-configs/oa-lnl.xml
@@ -0,0 +1,2799 @@
+<?xml version="1.0"?>
+<metrics version="1697079501" merge_md5="">
+  <set name="RenderBasic"
+       chipset="LNL"
+       symbol_name="RenderBasic"
+       underscore_name="render_basic"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="12f20772-0044-44ff-bcc0-d2bc252d140e"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             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 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00000402" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00000400" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00000A0D" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x00000002" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00000006" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x00000601" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x0000060F" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x0000060F" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x0000060F" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x00000603" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00000603" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x00013068" value="0x00000603" />
+        <register type="OA" address="0x0001306C" value="0x00000000" />
+        <register type="OA" address="0x00013070" value="0x00000604" />
+        <register type="OA" address="0x00013074" value="0x00000000" />
+        <register type="OA" address="0x00013078" value="0x0000060B" />
+        <register type="OA" address="0x0001307C" value="0x00000000" />
+        <register type="OA" address="0x00013080" value="0x00000A13" />
+        <register type="OA" address="0x00013084" value="0x00000000" />
+        <register type="OA" address="0x00013088" value="0x00000A14" />
+        <register type="OA" address="0x0001308C" value="0x00000000" />
+        <register type="OA" address="0x00013090" value="0x00000A15" />
+        <register type="OA" address="0x00013094" value="0x00000000" />
+        <register type="OA" address="0x00013098" value="0x00000A16" />
+        <register type="OA" address="0x0001309C" value="0x00000000" />
+        <register type="OA" address="0x000130A0" value="0x00000606" />
+        <register type="OA" address="0x000130A4" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x00000005" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x00000622" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x00000623" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x00000605" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x0000060F" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00000603" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00000600" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00000C10" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x00000C18" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x00000A0A" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x000130F8" value="0x00000A0B" />
+        <register type="OA" address="0x000130FC" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00004001" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00004001" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00004001" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00004000" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00004000" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00004000" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x0000600F" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x0000600F" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x0000600F" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x00006010" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x00006010" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x00006010" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x00005009" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x00005009" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x00005009" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x00005013" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x00005013" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x00005013" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x00005000" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x00005000" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x00005000" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00006603" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00006603" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00006603" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00006601" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00006601" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00006601" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00006606" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00006606" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00006606" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00006605" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00006605" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00006605" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00004404" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00004404" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00004404" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00004402" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00004402" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00004402" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x00006611" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x00006611" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x00006611" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x00006612" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x00006612" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x00006612" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00004400" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00004400" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00004400" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00004600" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00004600" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00004600" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x00004601" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x00004601" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x00004601" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x00005C00" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x00005C00" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x00005C00" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+        <register type="OA" address="0x000133B0" value="0x00005E04" />
+        <register type="OA" address="0x000133B4" value="0x00000000" />
+        <register type="OA" address="0x000135B0" value="0x00005E04" />
+        <register type="OA" address="0x000135B4" value="0x00000000" />
+        <register type="OA" address="0x000137B0" value="0x00005E04" />
+        <register type="OA" address="0x000137B4" value="0x00000000" />
+        <register type="OA" address="0x000133B8" value="0x00004A00" />
+        <register type="OA" address="0x000133BC" value="0x00000000" />
+        <register type="OA" address="0x000135B8" value="0x00004A00" />
+        <register type="OA" address="0x000135BC" value="0x00000000" />
+        <register type="OA" address="0x000137B8" value="0x00004A00" />
+        <register type="OA" address="0x000137BC" value="0x00000000" />
+        <register type="OA" address="0x000133C0" value="0x00004A01" />
+        <register type="OA" address="0x000133C4" value="0x00000000" />
+        <register type="OA" address="0x000135C0" value="0x00004A01" />
+        <register type="OA" address="0x000135C4" value="0x00000000" />
+        <register type="OA" address="0x000137C0" value="0x00004A01" />
+        <register type="OA" address="0x000137C4" value="0x00000000" />
+        <register type="OA" address="0x000133C8" value="0x00005E0A" />
+        <register type="OA" address="0x000133CC" value="0x00000000" />
+        <register type="OA" address="0x000135C8" value="0x00005E0A" />
+        <register type="OA" address="0x000135CC" value="0x00000000" />
+        <register type="OA" address="0x000137C8" value="0x00005E0A" />
+        <register type="OA" address="0x000137CC" value="0x00000000" />
+        <register type="OA" address="0x000133D0" value="0x00005E0B" />
+        <register type="OA" address="0x000133D4" value="0x00000000" />
+        <register type="OA" address="0x000135D0" value="0x00005E0B" />
+        <register type="OA" address="0x000135D4" value="0x00000000" />
+        <register type="OA" address="0x000137D0" value="0x00005E0B" />
+        <register type="OA" address="0x000137D4" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00060000" />
+        <register type="FLEX" address="0x0000E558" value="0x00010050" />
+        <register type="FLEX" address="0x0000E658" value="0x00050060" />
+        <register type="FLEX" address="0x0000E758" value="0x00000010" />
+        <register type="FLEX" address="0x0000E65C" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="ComputeBasic"
+       chipset="LNL"
+       symbol_name="ComputeBasic"
+       underscore_name="compute_basic"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="72539be3-67d9-4101-b067-766b7811d2bb"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             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 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00000622" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00000623" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00000605" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x0000060F" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00000603" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x00000601" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x00000604" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x00000A0B" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x00000A0A" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x00001804" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00001600" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x00013068" value="0x00000625" />
+        <register type="OA" address="0x0001306C" value="0x00000000" />
+        <register type="OA" address="0x00013070" value="0x00000626" />
+        <register type="OA" address="0x00013074" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x0000060B" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x00000600" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x00000606" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x00000614" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x00000624" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00000A0E" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00000A0D" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00000A15" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x00000A16" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x00000A13" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x000130F8" value="0x00000A14" />
+        <register type="OA" address="0x000130FC" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00006002" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00006002" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00006002" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00006012" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00006012" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00006012" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x00006011" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x00006011" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x00006011" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x0000600F" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x0000600F" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x0000600F" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x00006010" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x00006010" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x00006010" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x00006015" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x00006015" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x00006015" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x00004600" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x00004600" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x00004600" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00004601" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00004601" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00004601" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00005E0A" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00005E0A" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00005E0A" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00005E0B" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00005E0B" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00005E0B" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00005E00" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00005E00" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00005E00" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00005E01" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00005E01" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00005E01" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00005E04" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00005E04" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00005E04" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x00005C00" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x00005C00" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x00005C00" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x00005009" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x00005009" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x00005009" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00005008" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00005008" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00005008" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00005000" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00005000" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00005000" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x00005010" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x00005010" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x00005010" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x00005013" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x00005013" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x00005013" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+        <register type="OA" address="0x000133B0" value="0x00005012" />
+        <register type="OA" address="0x000133B4" value="0x00000000" />
+        <register type="OA" address="0x000135B0" value="0x00005012" />
+        <register type="OA" address="0x000135B4" value="0x00000000" />
+        <register type="OA" address="0x000137B0" value="0x00005012" />
+        <register type="OA" address="0x000137B4" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="DepthProfile"
+       chipset="LNL"
+       symbol_name="DepthProfile"
+       underscore_name="depth_profile"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="cae0b2ca-c52a-4111-b8bf-5af070677d57"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             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 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00004C23" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00004C23" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00004C23" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00004C22" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00004C22" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00004C22" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x00004C04" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x00004C04" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x00004C04" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x00004C02" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x00004C02" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x00004C02" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x00004C05" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x00004C05" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x00004C05" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x00004C03" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x00004C03" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x00004C03" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x00004C01" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x00004C01" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x00004C01" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00004C00" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00004C00" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00004C00" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00004C24" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00004C24" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00004C24" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00004C20" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00004C20" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00004C20" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00004C21" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00004C21" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00004C21" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00004003" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00004003" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00004003" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00004004" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00004004" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00004004" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x00004005" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x00004005" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x00004005" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x00004006" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x00004006" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x00004006" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00004A02" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00004A02" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00004A02" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00006801" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00006801" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00006801" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x00006802" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x00006802" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x00006802" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x00005E05" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x00005E05" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x00005E05" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="DeviceCacheProfile"
+       chipset="LNL"
+       symbol_name="DeviceCacheProfile"
+       underscore_name="device_cache_profile"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="70cc56cf-3a37-4f6c-8911-4455fe441b2a"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             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 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00006017" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00006017" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00006017" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00006019" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00006019" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00006019" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x00006016" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x00006016" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x00006016" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x00006018" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x00006018" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x00006018" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x0000600B" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x0000600B" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x0000600B" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x0000600C" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x0000600C" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x0000600C" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x00006008" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x00006008" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x00006008" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00006007" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00006007" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00006007" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x0000601C" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x0000601C" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x0000601C" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x0000601A" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x0000601A" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x0000601A" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x0000601B" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x0000601B" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x0000601B" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x0000600A" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x0000600A" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x0000600A" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00006009" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00006009" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00006009" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x0000600D" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x0000600D" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x0000600D" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x0000600E" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x0000600E" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x0000600E" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00006014" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00006014" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00006014" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00006000" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00006000" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00006000" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x00006001" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x00006001" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x00006001" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x00006013" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x00006013" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x00006013" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+        <register type="OA" address="0x000133B0" value="0x00006002" />
+        <register type="OA" address="0x000133B4" value="0x00000000" />
+        <register type="OA" address="0x000135B0" value="0x00006002" />
+        <register type="OA" address="0x000135B4" value="0x00000000" />
+        <register type="OA" address="0x000137B0" value="0x00006002" />
+        <register type="OA" address="0x000137B4" value="0x00000000" />
+        <register type="OA" address="0x000133B8" value="0x00006012" />
+        <register type="OA" address="0x000133BC" value="0x00000000" />
+        <register type="OA" address="0x000135B8" value="0x00006012" />
+        <register type="OA" address="0x000135BC" value="0x00000000" />
+        <register type="OA" address="0x000137B8" value="0x00006012" />
+        <register type="OA" address="0x000137BC" value="0x00000000" />
+        <register type="OA" address="0x000133C0" value="0x00006011" />
+        <register type="OA" address="0x000133C4" value="0x00000000" />
+        <register type="OA" address="0x000135C0" value="0x00006011" />
+        <register type="OA" address="0x000135C4" value="0x00000000" />
+        <register type="OA" address="0x000137C0" value="0x00006011" />
+        <register type="OA" address="0x000137C4" value="0x00000000" />
+        <register type="OA" address="0x000133C8" value="0x0000600F" />
+        <register type="OA" address="0x000133CC" value="0x00000000" />
+        <register type="OA" address="0x000135C8" value="0x0000600F" />
+        <register type="OA" address="0x000135CC" value="0x00000000" />
+        <register type="OA" address="0x000137C8" value="0x0000600F" />
+        <register type="OA" address="0x000137CC" value="0x00000000" />
+        <register type="OA" address="0x000133D0" value="0x00006015" />
+        <register type="OA" address="0x000133D4" value="0x00000000" />
+        <register type="OA" address="0x000135D0" value="0x00006015" />
+        <register type="OA" address="0x000135D4" value="0x00000000" />
+        <register type="OA" address="0x000137D0" value="0x00006015" />
+        <register type="OA" address="0x000137D4" value="0x00000000" />
+        <register type="OA" address="0x000133D8" value="0x00006010" />
+        <register type="OA" address="0x000133DC" value="0x00000000" />
+        <register type="OA" address="0x000135D8" value="0x00006010" />
+        <register type="OA" address="0x000135DC" value="0x00000000" />
+        <register type="OA" address="0x000137D8" value="0x00006010" />
+        <register type="OA" address="0x000137DC" value="0x00000000" />
+        <register type="OA" address="0x000133E0" value="0x00005E00" />
+        <register type="OA" address="0x000133E4" value="0x00000000" />
+        <register type="OA" address="0x000135E0" value="0x00005E00" />
+        <register type="OA" address="0x000135E4" value="0x00000000" />
+        <register type="OA" address="0x000137E0" value="0x00005E00" />
+        <register type="OA" address="0x000137E4" value="0x00000000" />
+        <register type="OA" address="0x000133E8" value="0x00005E01" />
+        <register type="OA" address="0x000133EC" value="0x00000000" />
+        <register type="OA" address="0x000135E8" value="0x00005E01" />
+        <register type="OA" address="0x000135EC" value="0x00000000" />
+        <register type="OA" address="0x000137E8" value="0x00005E01" />
+        <register type="OA" address="0x000137EC" value="0x00000000" />
+        <register type="OA" address="0x000133F0" value="0x00005E02" />
+        <register type="OA" address="0x000133F4" value="0x00000000" />
+        <register type="OA" address="0x000135F0" value="0x00005E02" />
+        <register type="OA" address="0x000135F4" value="0x00000000" />
+        <register type="OA" address="0x000137F0" value="0x00005E02" />
+        <register type="OA" address="0x000137F4" value="0x00000000" />
+        <register type="OA" address="0x000133F8" value="0x00005E03" />
+        <register type="OA" address="0x000133FC" value="0x00000000" />
+        <register type="OA" address="0x000135F8" value="0x00005E03" />
+        <register type="OA" address="0x000135FC" value="0x00000000" />
+        <register type="OA" address="0x000137F8" value="0x00005E03" />
+        <register type="OA" address="0x000137FC" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="MemoryProfile"
+       chipset="LNL"
+       symbol_name="MemoryProfile"
+       underscore_name="memory_profile"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="01ffd51d-a6d6-4ff4-93d0-619f04c3a547"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             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 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00000A0B" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00000A13" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00000A14" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x00000A0A" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00000A11" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x00000A10" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x00000A01" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x00000A06" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x00000A07" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x00000A04" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00000A05" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x00000A0C" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x00000A12" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x00000A0E" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x00000A17" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x00000A0D" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00000A15" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00000A16" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00000A02" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x00000A03" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x00000A00" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x000130F8" value="0x00000A0F" />
+        <register type="OA" address="0x000130FC" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00004600" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00004600" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00004600" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00004601" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00004601" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00004601" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x00005E08" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x00005E08" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x00005E08" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x00005E09" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x00005E09" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x00005E09" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x00005E06" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x00005E06" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x00005E06" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x00005E07" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x00005E07" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x00005E07" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x00005E0A" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x00005E0A" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x00005E0A" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00005E0B" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00005E0B" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00005E0B" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00005E00" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00005E00" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00005E00" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00005E01" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00005E01" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00005E01" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00005E04" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00005E04" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00005E04" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00005C00" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00005C00" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00005C00" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00006002" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00006002" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00006002" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x00006014" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x00006014" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x00006014" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x00006012" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x00006012" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x00006012" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00006000" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00006000" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00006000" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00006011" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00006011" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00006011" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x00006001" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x00006001" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x00006001" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x0000600F" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x0000600F" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x0000600F" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+        <register type="OA" address="0x000133B0" value="0x00006015" />
+        <register type="OA" address="0x000133B4" value="0x00000000" />
+        <register type="OA" address="0x000135B0" value="0x00006015" />
+        <register type="OA" address="0x000135B4" value="0x00000000" />
+        <register type="OA" address="0x000137B0" value="0x00006015" />
+        <register type="OA" address="0x000137B4" value="0x00000000" />
+        <register type="OA" address="0x000133B8" value="0x00006013" />
+        <register type="OA" address="0x000133BC" value="0x00000000" />
+        <register type="OA" address="0x000135B8" value="0x00006013" />
+        <register type="OA" address="0x000135BC" value="0x00000000" />
+        <register type="OA" address="0x000137B8" value="0x00006013" />
+        <register type="OA" address="0x000137BC" value="0x00000000" />
+        <register type="OA" address="0x000133C0" value="0x00006010" />
+        <register type="OA" address="0x000133C4" value="0x00000000" />
+        <register type="OA" address="0x000135C0" value="0x00006010" />
+        <register type="OA" address="0x000135C4" value="0x00000000" />
+        <register type="OA" address="0x000137C0" value="0x00006010" />
+        <register type="OA" address="0x000137C4" value="0x00000000" />
+        <register type="OA" address="0x000133C8" value="0x00006E00" />
+        <register type="OA" address="0x000133CC" value="0x00000000" />
+        <register type="OA" address="0x000135C8" value="0x00006E00" />
+        <register type="OA" address="0x000135CC" value="0x00000000" />
+        <register type="OA" address="0x000137C8" value="0x00006E00" />
+        <register type="OA" address="0x000137CC" value="0x00000000" />
+        <register type="OA" address="0x000133D0" value="0x00006E02" />
+        <register type="OA" address="0x000133D4" value="0x00000000" />
+        <register type="OA" address="0x000135D0" value="0x00006E02" />
+        <register type="OA" address="0x000135D4" value="0x00000000" />
+        <register type="OA" address="0x000137D0" value="0x00006E02" />
+        <register type="OA" address="0x000137D4" value="0x00000000" />
+        <register type="OA" address="0x000133D8" value="0x00006E01" />
+        <register type="OA" address="0x000133DC" value="0x00000000" />
+        <register type="OA" address="0x000135D8" value="0x00006E01" />
+        <register type="OA" address="0x000135DC" value="0x00000000" />
+        <register type="OA" address="0x000137D8" value="0x00006E01" />
+        <register type="OA" address="0x000137DC" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="RenderPipeProfile"
+       chipset="LNL"
+       symbol_name="RenderPipeProfile"
+       underscore_name="render_pipe_profile"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="6791470f-f1e6-4f77-9013-bcb0c4be6f57"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             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 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00000401" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00000007" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00000003" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x00000001" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00000004" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x00001803" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x00001800" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x00001605" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x00001603" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x00001601" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00001604" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00001602" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00001606" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x00001807" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x00001808" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00006600" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00006600" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00006600" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00006604" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00006604" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00006604" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x00006602" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x00006602" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x00006602" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x00004401" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x00004401" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x00004401" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x00006610" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x00006610" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x00006610" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x00004407" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x00004407" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x00004407" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x00004406" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x00004406" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x00004406" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00004403" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00004403" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00004403" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00004201" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00004201" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00004201" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00004002" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00004002" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00004002" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00004202" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00004202" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00004202" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00004200" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00004200" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00004200" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00004007" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00004007" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00004007" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x00004008" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x00004008" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x00004008" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x00004E04" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x00004E04" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x00004E04" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00004E03" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00004E03" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00004E03" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00006800" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00006800" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00006800" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x00006803" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x00006803" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x00006803" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x00006804" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x00006804" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x00006804" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+        <register type="OA" address="0x000133B0" value="0x00005011" />
+        <register type="OA" address="0x000133B4" value="0x00000000" />
+        <register type="OA" address="0x000135B0" value="0x00005011" />
+        <register type="OA" address="0x000135B4" value="0x00000000" />
+        <register type="OA" address="0x000137B0" value="0x00005011" />
+        <register type="OA" address="0x000137B4" value="0x00000000" />
+        <register type="OA" address="0x000133B8" value="0x00004E00" />
+        <register type="OA" address="0x000133BC" value="0x00000000" />
+        <register type="OA" address="0x000135B8" value="0x00004E00" />
+        <register type="OA" address="0x000135BC" value="0x00000000" />
+        <register type="OA" address="0x000137B8" value="0x00004E00" />
+        <register type="OA" address="0x000137BC" value="0x00000000" />
+        <register type="OA" address="0x000133C0" value="0x00004E01" />
+        <register type="OA" address="0x000133C4" value="0x00000000" />
+        <register type="OA" address="0x000135C0" value="0x00004E01" />
+        <register type="OA" address="0x000135C4" value="0x00000000" />
+        <register type="OA" address="0x000137C0" value="0x00004E01" />
+        <register type="OA" address="0x000137C4" value="0x00000000" />
+        <register type="OA" address="0x000133C8" value="0x00004E02" />
+        <register type="OA" address="0x000133CC" value="0x00000000" />
+        <register type="OA" address="0x000135C8" value="0x00004E02" />
+        <register type="OA" address="0x000135CC" value="0x00000000" />
+        <register type="OA" address="0x000137C8" value="0x00004E02" />
+        <register type="OA" address="0x000137CC" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="RTProfile"
+       chipset="LNL"
+       symbol_name="RTProfile"
+       underscore_name="rt_profile"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="d66ce633-4ae5-4de2-8678-9705adfd45bc"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             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 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00000C03" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00000C04" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00000C00" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x00000C1A" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00000C2F" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x00000C1D" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x00000C2A" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x0000060F" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x0000060F" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x0000060F" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00000603" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x00013068" value="0x00000603" />
+        <register type="OA" address="0x0001306C" value="0x00000000" />
+        <register type="OA" address="0x00013070" value="0x00000603" />
+        <register type="OA" address="0x00013074" value="0x00000000" />
+        <register type="OA" address="0x00013078" value="0x00000604" />
+        <register type="OA" address="0x0001307C" value="0x00000000" />
+        <register type="OA" address="0x00013080" value="0x00000C10" />
+        <register type="OA" address="0x00013084" value="0x00000000" />
+        <register type="OA" address="0x00013088" value="0x00000C18" />
+        <register type="OA" address="0x0001308C" value="0x00000000" />
+        <register type="OA" address="0x00013090" value="0x00000A08" />
+        <register type="OA" address="0x00013094" value="0x00000000" />
+        <register type="OA" address="0x00013098" value="0x00000A09" />
+        <register type="OA" address="0x0001309C" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x00000C2D" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x00000C02" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x00000C19" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x00000C01" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x00000C2E" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00000C30" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00000C2B" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00000C20" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x00000C2C" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x00000C28" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x000130F8" value="0x00000C29" />
+        <register type="OA" address="0x000130FC" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E558" value="0x000D00C0" />
+        <register type="FLEX" address="0x0000E658" value="0x000C00E0" />
+        <register type="FLEX" address="0x0000E758" value="0x000E00D0" />
+        <register type="FLEX" address="0x0000E45C" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="VectorEngineProfile"
+       chipset="LNL"
+       symbol_name="VectorEngineProfile"
+       underscore_name="vector_engine_profile"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="e7338926-568c-4424-bc44-f90318a6b472"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             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 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00000622" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00000623" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00000605" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x0000060F" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00000603" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x0000060E" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x0000060A" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x00000609" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x00000601" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x00000616" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00000615" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x00013068" value="0x00000619" />
+        <register type="OA" address="0x0001306C" value="0x00000000" />
+        <register type="OA" address="0x00013070" value="0x00000618" />
+        <register type="OA" address="0x00013074" value="0x00000000" />
+        <register type="OA" address="0x00013078" value="0x00000617" />
+        <register type="OA" address="0x0001307C" value="0x00000000" />
+        <register type="OA" address="0x00013080" value="0x0000060B" />
+        <register type="OA" address="0x00013084" value="0x00000000" />
+        <register type="OA" address="0x00013088" value="0x00000624" />
+        <register type="OA" address="0x0001308C" value="0x00000000" />
+        <register type="OA" address="0x00013090" value="0x00000625" />
+        <register type="OA" address="0x00013094" value="0x00000000" />
+        <register type="OA" address="0x00013098" value="0x00000626" />
+        <register type="OA" address="0x0001309C" value="0x00000000" />
+        <register type="OA" address="0x000130A0" value="0x00000604" />
+        <register type="OA" address="0x000130A4" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x00000614" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x00000608" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x00000607" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x00000602" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x00000611" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00000610" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00000612" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00000629" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x0000060C" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x0000060D" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x000130F8" value="0x00000613" />
+        <register type="OA" address="0x000130FC" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00006002" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00006002" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00006002" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00006014" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00006014" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00006014" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x00006012" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x00006012" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x00006012" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x00006000" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x00006000" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x00006000" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x00006011" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x00006011" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x00006011" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x00006001" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x00006001" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x00006001" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x0000600F" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x0000600F" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x0000600F" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00006015" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00006015" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00006015" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00006013" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00006013" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00006013" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00006010" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00006010" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00006010" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00005009" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00005009" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00005009" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00005008" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00005008" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00005008" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00005013" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00005013" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00005013" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x00005012" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x00005012" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x00005012" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x00004600" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x00004600" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x00004600" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00004601" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00004601" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00004601" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00005E0A" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00005E0A" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00005E0A" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x00005E0B" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x00005E0B" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x00005E0B" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x00005C00" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x00005C00" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x00005C00" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+        <register type="OA" address="0x000133B0" value="0x00005E04" />
+        <register type="OA" address="0x000133B4" value="0x00000000" />
+        <register type="OA" address="0x000135B0" value="0x00005E04" />
+        <register type="OA" address="0x000135B4" value="0x00000000" />
+        <register type="OA" address="0x000137B0" value="0x00005E04" />
+        <register type="OA" address="0x000137B4" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00000000" />
+        <register type="FLEX" address="0x0000E558" value="0x00000000" />
+        <register type="FLEX" address="0x0000E658" value="0x00000000" />
+        <register type="FLEX" address="0x0000E758" value="0x00000000" />
+        <register type="FLEX" address="0x0000E45C" value="0x00000000" />
+        <register type="FLEX" address="0x0000E65C" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="VectorEngineStalls"
+       chipset="LNL"
+       symbol_name="VectorEngineStalls"
+       underscore_name="vector_engine_stalls"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="4ccd6535-fb9a-440f-b0f5-882879dc4cb0"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             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 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x0000061D" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x0000061B" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00000620" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x0000061A" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00000621" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x00000600" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x00000606" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x00000604" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x00000624" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x00000625" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00000626" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x0000061F" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x00000628" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x0000061C" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x0000061E" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x00001601" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00001604" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00001602" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00001606" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x00001807" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x00001808" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x000130F8" value="0x00000605" />
+        <register type="OA" address="0x000130FC" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00000000" />
+        <register type="FLEX" address="0x0000E558" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="TestOa"
+       chipset="LNL"
+       symbol_name="TestOa"
+       underscore_name="test_oa"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="24c33f2c-f8d9-40d9-b2db-64e863b4d625"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             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 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00003E00" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00007E00" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00007E00" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00007E00" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="MetricSet1"
+       chipset="LNL"
+       symbol_name="MetricSet1"
+       underscore_name="metric_set1"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="0af24f48-05bc-467b-b561-33dec252e651"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             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 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00000001" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00000002" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00000003" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00000004" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00000005" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x00000006" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00000007" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x00000400" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x00000401" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x00000402" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x00000600" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x00000601" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00000602" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x00013068" value="0x00000603" />
+        <register type="OA" address="0x0001306C" value="0x00000000" />
+        <register type="OA" address="0x00013070" value="0x00000604" />
+        <register type="OA" address="0x00013074" value="0x00000000" />
+        <register type="OA" address="0x00013078" value="0x00000605" />
+        <register type="OA" address="0x0001307C" value="0x00000000" />
+        <register type="OA" address="0x00013080" value="0x00000606" />
+        <register type="OA" address="0x00013084" value="0x00000000" />
+        <register type="OA" address="0x00013088" value="0x00000607" />
+        <register type="OA" address="0x0001308C" value="0x00000000" />
+        <register type="OA" address="0x00013090" value="0x00000608" />
+        <register type="OA" address="0x00013094" value="0x00000000" />
+        <register type="OA" address="0x00013098" value="0x00000609" />
+        <register type="OA" address="0x0001309C" value="0x00000000" />
+        <register type="OA" address="0x000130A0" value="0x0000060A" />
+        <register type="OA" address="0x000130A4" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x0000060B" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x0000060C" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x0000060D" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x0000060E" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x0000060F" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00000610" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00000611" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00000612" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x00000613" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x00000614" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x000130F8" value="0x00000615" />
+        <register type="OA" address="0x000130FC" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00004000" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00004000" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00004000" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004001" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004001" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004001" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00004002" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00004002" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00004002" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00004003" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00004003" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00004003" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00004004" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00004004" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00004004" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x00004005" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x00004005" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x00004005" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x00004006" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x00004006" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x00004006" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x00004007" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x00004007" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x00004007" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x00004008" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x00004008" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x00004008" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x00004200" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x00004200" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x00004200" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00004201" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00004201" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00004201" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00004202" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00004202" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00004202" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00004400" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00004400" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00004400" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00004401" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00004401" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00004401" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00004402" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00004402" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00004402" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00004403" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00004403" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00004403" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x00004404" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x00004404" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x00004404" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x00004405" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x00004405" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x00004405" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00004406" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00004406" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00004406" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00004407" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00004407" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00004407" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x00004600" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x00004600" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x00004600" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x00004601" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x00004601" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x00004601" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+        <register type="OA" address="0x000133B0" value="0x00004A00" />
+        <register type="OA" address="0x000133B4" value="0x00000000" />
+        <register type="OA" address="0x000135B0" value="0x00004A00" />
+        <register type="OA" address="0x000135B4" value="0x00000000" />
+        <register type="OA" address="0x000137B0" value="0x00004A00" />
+        <register type="OA" address="0x000137B4" value="0x00000000" />
+        <register type="OA" address="0x000133B8" value="0x00004A01" />
+        <register type="OA" address="0x000133BC" value="0x00000000" />
+        <register type="OA" address="0x000135B8" value="0x00004A01" />
+        <register type="OA" address="0x000135BC" value="0x00000000" />
+        <register type="OA" address="0x000137B8" value="0x00004A01" />
+        <register type="OA" address="0x000137BC" value="0x00000000" />
+        <register type="OA" address="0x000133C0" value="0x00004A02" />
+        <register type="OA" address="0x000133C4" value="0x00000000" />
+        <register type="OA" address="0x000135C0" value="0x00004A02" />
+        <register type="OA" address="0x000135C4" value="0x00000000" />
+        <register type="OA" address="0x000137C0" value="0x00004A02" />
+        <register type="OA" address="0x000137C4" value="0x00000000" />
+        <register type="OA" address="0x000133C8" value="0x00004C00" />
+        <register type="OA" address="0x000133CC" value="0x00000000" />
+        <register type="OA" address="0x000135C8" value="0x00004C00" />
+        <register type="OA" address="0x000135CC" value="0x00000000" />
+        <register type="OA" address="0x000137C8" value="0x00004C00" />
+        <register type="OA" address="0x000137CC" value="0x00000000" />
+        <register type="OA" address="0x000133D0" value="0x00004C01" />
+        <register type="OA" address="0x000133D4" value="0x00000000" />
+        <register type="OA" address="0x000135D0" value="0x00004C01" />
+        <register type="OA" address="0x000135D4" value="0x00000000" />
+        <register type="OA" address="0x000137D0" value="0x00004C01" />
+        <register type="OA" address="0x000137D4" value="0x00000000" />
+        <register type="OA" address="0x000133D8" value="0x00004C02" />
+        <register type="OA" address="0x000133DC" value="0x00000000" />
+        <register type="OA" address="0x000135D8" value="0x00004C02" />
+        <register type="OA" address="0x000135DC" value="0x00000000" />
+        <register type="OA" address="0x000137D8" value="0x00004C02" />
+        <register type="OA" address="0x000137DC" value="0x00000000" />
+        <register type="OA" address="0x000133E0" value="0x00004C03" />
+        <register type="OA" address="0x000133E4" value="0x00000000" />
+        <register type="OA" address="0x000135E0" value="0x00004C03" />
+        <register type="OA" address="0x000135E4" value="0x00000000" />
+        <register type="OA" address="0x000137E0" value="0x00004C03" />
+        <register type="OA" address="0x000137E4" value="0x00000000" />
+        <register type="OA" address="0x000133E8" value="0x00004C04" />
+        <register type="OA" address="0x000133EC" value="0x00000000" />
+        <register type="OA" address="0x000135E8" value="0x00004C04" />
+        <register type="OA" address="0x000135EC" value="0x00000000" />
+        <register type="OA" address="0x000137E8" value="0x00004C04" />
+        <register type="OA" address="0x000137EC" value="0x00000000" />
+        <register type="OA" address="0x000133F0" value="0x00004C05" />
+        <register type="OA" address="0x000133F4" value="0x00000000" />
+        <register type="OA" address="0x000135F0" value="0x00004C05" />
+        <register type="OA" address="0x000135F4" value="0x00000000" />
+        <register type="OA" address="0x000137F0" value="0x00004C05" />
+        <register type="OA" address="0x000137F4" value="0x00000000" />
+        <register type="OA" address="0x000133F8" value="0x00004C20" />
+        <register type="OA" address="0x000133FC" value="0x00000000" />
+        <register type="OA" address="0x000135F8" value="0x00004C20" />
+        <register type="OA" address="0x000135FC" value="0x00000000" />
+        <register type="OA" address="0x000137F8" value="0x00004C20" />
+        <register type="OA" address="0x000137FC" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="MetricSet2"
+       chipset="LNL"
+       symbol_name="MetricSet2"
+       underscore_name="metric_set2"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="914ad901-832a-4ccd-a21e-ddc7690ed213"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             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 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00000616" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00000617" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00000618" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00000619" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x0000061A" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x0000061B" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x0000061C" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x0000061D" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x0000061E" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x0000061F" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x00000620" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x00000621" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00000622" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x00013068" value="0x00000623" />
+        <register type="OA" address="0x0001306C" value="0x00000000" />
+        <register type="OA" address="0x00013070" value="0x00000624" />
+        <register type="OA" address="0x00013074" value="0x00000000" />
+        <register type="OA" address="0x00013078" value="0x00000625" />
+        <register type="OA" address="0x0001307C" value="0x00000000" />
+        <register type="OA" address="0x00013080" value="0x00000626" />
+        <register type="OA" address="0x00013084" value="0x00000000" />
+        <register type="OA" address="0x00013088" value="0x00000628" />
+        <register type="OA" address="0x0001308C" value="0x00000000" />
+        <register type="OA" address="0x00013090" value="0x00000629" />
+        <register type="OA" address="0x00013094" value="0x00000000" />
+        <register type="OA" address="0x00013098" value="0x00000A00" />
+        <register type="OA" address="0x0001309C" value="0x00000000" />
+        <register type="OA" address="0x000130A0" value="0x00000A01" />
+        <register type="OA" address="0x000130A4" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x00000A02" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x00000A03" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x00000A04" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x00000A05" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x00000A06" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00000A07" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00000A08" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00000A09" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x00000A0A" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x00000A0B" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x000130F8" value="0x00000A0C" />
+        <register type="OA" address="0x000130FC" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00004C21" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00004C21" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00004C21" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004C22" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004C22" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004C22" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00004C23" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00004C23" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00004C23" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00004C24" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00004C24" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00004C24" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00004E00" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00004E00" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00004E00" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x00004E01" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x00004E01" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x00004E01" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x00004E02" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x00004E02" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x00004E02" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x00004E03" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x00004E03" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x00004E03" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x00004E04" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x00004E04" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x00004E04" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x00005000" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x00005000" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x00005000" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00005008" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00005008" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00005008" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00005009" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00005009" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00005009" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00005010" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00005010" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00005010" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00005011" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00005011" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00005011" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00005012" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00005012" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00005012" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00005013" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00005013" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00005013" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x00005A00" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x00005A00" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x00005A00" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x00005C00" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x00005C00" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x00005C00" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00005E00" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00005E00" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00005E00" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00005E01" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00005E01" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00005E01" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x00005E02" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x00005E02" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x00005E02" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x00005E03" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x00005E03" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x00005E03" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+        <register type="OA" address="0x000133B0" value="0x00005E04" />
+        <register type="OA" address="0x000133B4" value="0x00000000" />
+        <register type="OA" address="0x000135B0" value="0x00005E04" />
+        <register type="OA" address="0x000135B4" value="0x00000000" />
+        <register type="OA" address="0x000137B0" value="0x00005E04" />
+        <register type="OA" address="0x000137B4" value="0x00000000" />
+        <register type="OA" address="0x000133B8" value="0x00005E05" />
+        <register type="OA" address="0x000133BC" value="0x00000000" />
+        <register type="OA" address="0x000135B8" value="0x00005E05" />
+        <register type="OA" address="0x000135BC" value="0x00000000" />
+        <register type="OA" address="0x000137B8" value="0x00005E05" />
+        <register type="OA" address="0x000137BC" value="0x00000000" />
+        <register type="OA" address="0x000133C0" value="0x00005E06" />
+        <register type="OA" address="0x000133C4" value="0x00000000" />
+        <register type="OA" address="0x000135C0" value="0x00005E06" />
+        <register type="OA" address="0x000135C4" value="0x00000000" />
+        <register type="OA" address="0x000137C0" value="0x00005E06" />
+        <register type="OA" address="0x000137C4" value="0x00000000" />
+        <register type="OA" address="0x000133C8" value="0x00005E07" />
+        <register type="OA" address="0x000133CC" value="0x00000000" />
+        <register type="OA" address="0x000135C8" value="0x00005E07" />
+        <register type="OA" address="0x000135CC" value="0x00000000" />
+        <register type="OA" address="0x000137C8" value="0x00005E07" />
+        <register type="OA" address="0x000137CC" value="0x00000000" />
+        <register type="OA" address="0x000133D0" value="0x00005E08" />
+        <register type="OA" address="0x000133D4" value="0x00000000" />
+        <register type="OA" address="0x000135D0" value="0x00005E08" />
+        <register type="OA" address="0x000135D4" value="0x00000000" />
+        <register type="OA" address="0x000137D0" value="0x00005E08" />
+        <register type="OA" address="0x000137D4" value="0x00000000" />
+        <register type="OA" address="0x000133D8" value="0x00005E09" />
+        <register type="OA" address="0x000133DC" value="0x00000000" />
+        <register type="OA" address="0x000135D8" value="0x00005E09" />
+        <register type="OA" address="0x000135DC" value="0x00000000" />
+        <register type="OA" address="0x000137D8" value="0x00005E09" />
+        <register type="OA" address="0x000137DC" value="0x00000000" />
+        <register type="OA" address="0x000133E0" value="0x00005E0A" />
+        <register type="OA" address="0x000133E4" value="0x00000000" />
+        <register type="OA" address="0x000135E0" value="0x00005E0A" />
+        <register type="OA" address="0x000135E4" value="0x00000000" />
+        <register type="OA" address="0x000137E0" value="0x00005E0A" />
+        <register type="OA" address="0x000137E4" value="0x00000000" />
+        <register type="OA" address="0x000133E8" value="0x00005E0B" />
+        <register type="OA" address="0x000133EC" value="0x00000000" />
+        <register type="OA" address="0x000135E8" value="0x00005E0B" />
+        <register type="OA" address="0x000135EC" value="0x00000000" />
+        <register type="OA" address="0x000137E8" value="0x00005E0B" />
+        <register type="OA" address="0x000137EC" value="0x00000000" />
+        <register type="OA" address="0x000133F0" value="0x00006000" />
+        <register type="OA" address="0x000133F4" value="0x00000000" />
+        <register type="OA" address="0x000135F0" value="0x00006000" />
+        <register type="OA" address="0x000135F4" value="0x00000000" />
+        <register type="OA" address="0x000137F0" value="0x00006000" />
+        <register type="OA" address="0x000137F4" value="0x00000000" />
+        <register type="OA" address="0x000133F8" value="0x00006001" />
+        <register type="OA" address="0x000133FC" value="0x00000000" />
+        <register type="OA" address="0x000135F8" value="0x00006001" />
+        <register type="OA" address="0x000135FC" value="0x00000000" />
+        <register type="OA" address="0x000137F8" value="0x00006001" />
+        <register type="OA" address="0x000137FC" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="MetricSet3"
+       chipset="LNL"
+       symbol_name="MetricSet3"
+       underscore_name="metric_set3"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="3b3c9f55-e34b-423d-8c05-7b1af03b6685"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             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 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00000A0D" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00000A0E" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00000A0F" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00000A10" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00000A11" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x00000A12" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00000A13" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x00000A14" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x00000A15" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x00000A16" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x00000A17" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x00000C00" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00000C01" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x00013068" value="0x00000C02" />
+        <register type="OA" address="0x0001306C" value="0x00000000" />
+        <register type="OA" address="0x00013070" value="0x00000C03" />
+        <register type="OA" address="0x00013074" value="0x00000000" />
+        <register type="OA" address="0x00013078" value="0x00000C04" />
+        <register type="OA" address="0x0001307C" value="0x00000000" />
+        <register type="OA" address="0x00013080" value="0x00000C10" />
+        <register type="OA" address="0x00013084" value="0x00000000" />
+        <register type="OA" address="0x00013088" value="0x00000C18" />
+        <register type="OA" address="0x0001308C" value="0x00000000" />
+        <register type="OA" address="0x00013090" value="0x00000C19" />
+        <register type="OA" address="0x00013094" value="0x00000000" />
+        <register type="OA" address="0x00013098" value="0x00000C1A" />
+        <register type="OA" address="0x0001309C" value="0x00000000" />
+        <register type="OA" address="0x000130A0" value="0x00000C1D" />
+        <register type="OA" address="0x000130A4" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x00000C20" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x00000C28" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x00000C29" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x00000C2A" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x00000C2B" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00000C2C" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00000C2D" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00000C2E" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x00000C2F" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x00000C30" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x000130F8" value="0x00001600" />
+        <register type="OA" address="0x000130FC" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00006002" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00006002" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00006002" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00006007" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00006007" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00006007" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006008" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006008" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006008" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00006009" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00006009" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00006009" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x0000600A" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x0000600A" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x0000600A" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x0000600B" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x0000600B" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x0000600B" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x0000600C" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x0000600C" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x0000600C" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x0000600D" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x0000600D" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x0000600D" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x0000600E" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x0000600E" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x0000600E" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x0000600F" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x0000600F" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x0000600F" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00006010" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00006010" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00006010" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00006011" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00006011" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00006011" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00006012" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00006012" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00006012" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00006013" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00006013" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00006013" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00006014" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00006014" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00006014" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00006015" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00006015" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00006015" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x00006016" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x00006016" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x00006016" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x00006017" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x00006017" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x00006017" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00006018" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00006018" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00006018" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00006019" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00006019" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00006019" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x0000601A" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x0000601A" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x0000601A" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x0000601B" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x0000601B" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x0000601B" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+        <register type="OA" address="0x000133B0" value="0x0000601C" />
+        <register type="OA" address="0x000133B4" value="0x00000000" />
+        <register type="OA" address="0x000135B0" value="0x0000601C" />
+        <register type="OA" address="0x000135B4" value="0x00000000" />
+        <register type="OA" address="0x000137B0" value="0x0000601C" />
+        <register type="OA" address="0x000137B4" value="0x00000000" />
+        <register type="OA" address="0x000133B8" value="0x00006400" />
+        <register type="OA" address="0x000133BC" value="0x00000000" />
+        <register type="OA" address="0x000135B8" value="0x00006400" />
+        <register type="OA" address="0x000135BC" value="0x00000000" />
+        <register type="OA" address="0x000137B8" value="0x00006400" />
+        <register type="OA" address="0x000137BC" value="0x00000000" />
+        <register type="OA" address="0x000133C0" value="0x00006401" />
+        <register type="OA" address="0x000133C4" value="0x00000000" />
+        <register type="OA" address="0x000135C0" value="0x00006401" />
+        <register type="OA" address="0x000135C4" value="0x00000000" />
+        <register type="OA" address="0x000137C0" value="0x00006401" />
+        <register type="OA" address="0x000137C4" value="0x00000000" />
+        <register type="OA" address="0x000133C8" value="0x00006402" />
+        <register type="OA" address="0x000133CC" value="0x00000000" />
+        <register type="OA" address="0x000135C8" value="0x00006402" />
+        <register type="OA" address="0x000135CC" value="0x00000000" />
+        <register type="OA" address="0x000137C8" value="0x00006402" />
+        <register type="OA" address="0x000137CC" value="0x00000000" />
+        <register type="OA" address="0x000133D0" value="0x00006403" />
+        <register type="OA" address="0x000133D4" value="0x00000000" />
+        <register type="OA" address="0x000135D0" value="0x00006403" />
+        <register type="OA" address="0x000135D4" value="0x00000000" />
+        <register type="OA" address="0x000137D0" value="0x00006403" />
+        <register type="OA" address="0x000137D4" value="0x00000000" />
+        <register type="OA" address="0x000133D8" value="0x00006600" />
+        <register type="OA" address="0x000133DC" value="0x00000000" />
+        <register type="OA" address="0x000135D8" value="0x00006600" />
+        <register type="OA" address="0x000135DC" value="0x00000000" />
+        <register type="OA" address="0x000137D8" value="0x00006600" />
+        <register type="OA" address="0x000137DC" value="0x00000000" />
+        <register type="OA" address="0x000133E0" value="0x00006601" />
+        <register type="OA" address="0x000133E4" value="0x00000000" />
+        <register type="OA" address="0x000135E0" value="0x00006601" />
+        <register type="OA" address="0x000135E4" value="0x00000000" />
+        <register type="OA" address="0x000137E0" value="0x00006601" />
+        <register type="OA" address="0x000137E4" value="0x00000000" />
+        <register type="OA" address="0x000133E8" value="0x00006602" />
+        <register type="OA" address="0x000133EC" value="0x00000000" />
+        <register type="OA" address="0x000135E8" value="0x00006602" />
+        <register type="OA" address="0x000135EC" value="0x00000000" />
+        <register type="OA" address="0x000137E8" value="0x00006602" />
+        <register type="OA" address="0x000137EC" value="0x00000000" />
+        <register type="OA" address="0x000133F0" value="0x00006603" />
+        <register type="OA" address="0x000133F4" value="0x00000000" />
+        <register type="OA" address="0x000135F0" value="0x00006603" />
+        <register type="OA" address="0x000135F4" value="0x00000000" />
+        <register type="OA" address="0x000137F0" value="0x00006603" />
+        <register type="OA" address="0x000137F4" value="0x00000000" />
+        <register type="OA" address="0x000133F8" value="0x00006604" />
+        <register type="OA" address="0x000133FC" value="0x00000000" />
+        <register type="OA" address="0x000135F8" value="0x00006604" />
+        <register type="OA" address="0x000135FC" value="0x00000000" />
+        <register type="OA" address="0x000137F8" value="0x00006604" />
+        <register type="OA" address="0x000137FC" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="MetricSet4"
+       chipset="LNL"
+       symbol_name="MetricSet4"
+       underscore_name="metric_set4"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="e6f21065-a6f5-4ea4-a545-80d6aebaab56"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             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 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001601" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001602" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00001603" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00001604" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00001605" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x00001606" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00001800" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x00001801" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x00001802" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x00001803" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x00001804" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x00001807" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00001808" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x00013068" value="0x00003E00" />
+        <register type="OA" address="0x0001306C" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00006605" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00006605" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00006605" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00006606" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00006606" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00006606" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006610" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006610" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006610" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00006611" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00006611" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00006611" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00006612" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00006612" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00006612" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x00006800" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x00006800" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x00006800" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x00006801" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x00006801" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x00006801" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x00006802" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x00006802" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x00006802" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x00006803" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x00006803" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x00006803" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x00006804" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x00006804" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x00006804" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00006805" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00006805" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00006805" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00006E00" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00006E00" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00006E00" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00006E01" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00006E01" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00006E01" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00006E02" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00006E02" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00006E02" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00007E00" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00007E00" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00007E00" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+    </register_config>
+  </set>
+
+</metrics>
-- 
2.41.0


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

* [PATCH i-g-t 04/27] lib/xe/oa: Add truncated legacy Xe1 metrics XML's
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (2 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 03/27] lib/xe/oa: Add OA LNL metrics (oa_lnl.xml) Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 05/27] lib/xe/oa: Generate LNL metrics/registers files Ashutosh Dixit
                   ` (27 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

Legacy metrics XML's allow testing with Xe KMD on legacy Xe1
platforms. However because these XML's are huge and increase compile time,
only RenderBasic and TestOa metrics sets are included in these XML's. If
other metrics sets are needed they can be added by copying from
lib/i915/perf-configs.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 lib/xe/oa-configs/oa-acmgt1.xml | 710 +++++++++++++++++++++++++++
 lib/xe/oa-configs/oa-acmgt2.xml | 828 ++++++++++++++++++++++++++++++++
 lib/xe/oa-configs/oa-acmgt3.xml | 824 +++++++++++++++++++++++++++++++
 lib/xe/oa-configs/oa-adl.xml    | 816 +++++++++++++++++++++++++++++++
 lib/xe/oa-configs/oa-dg1.xml    | 823 +++++++++++++++++++++++++++++++
 lib/xe/oa-configs/oa-mtlgt2.xml | 789 ++++++++++++++++++++++++++++++
 lib/xe/oa-configs/oa-mtlgt3.xml | 803 +++++++++++++++++++++++++++++++
 lib/xe/oa-configs/oa-rkl.xml    | 824 +++++++++++++++++++++++++++++++
 lib/xe/oa-configs/oa-tglgt1.xml | 819 +++++++++++++++++++++++++++++++
 lib/xe/oa-configs/oa-tglgt2.xml | 818 +++++++++++++++++++++++++++++++
 10 files changed, 8054 insertions(+)
 create mode 100644 lib/xe/oa-configs/oa-acmgt1.xml
 create mode 100644 lib/xe/oa-configs/oa-acmgt2.xml
 create mode 100644 lib/xe/oa-configs/oa-acmgt3.xml
 create mode 100644 lib/xe/oa-configs/oa-adl.xml
 create mode 100644 lib/xe/oa-configs/oa-dg1.xml
 create mode 100644 lib/xe/oa-configs/oa-mtlgt2.xml
 create mode 100644 lib/xe/oa-configs/oa-mtlgt3.xml
 create mode 100644 lib/xe/oa-configs/oa-rkl.xml
 create mode 100644 lib/xe/oa-configs/oa-tglgt1.xml
 create mode 100644 lib/xe/oa-configs/oa-tglgt2.xml

diff --git a/lib/xe/oa-configs/oa-acmgt1.xml b/lib/xe/oa-configs/oa-acmgt1.xml
new file mode 100644
index 0000000000..c08b537123
--- /dev/null
+++ b/lib/xe/oa-configs/oa-acmgt1.xml
@@ -0,0 +1,710 @@
+<?xml version="1.0"?>
+<metrics version="1664349503" merge_md5="">
+  <set name="Render Metrics Basic - aggregation approximation"
+       chipset="ACMGT1"
+       symbol_name="RenderBasic"
+       underscore_name="render_basic"
+       mdapi_supported_apis="VK OGL OCL IO"
+       hw_config_guid="f5b8f05e-c84c-4f1c-bb05-68fbea73879b"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="CS Threads Dispatched"
+             symbol_name="CsThreads"
+             underscore_name="cs_threads"
+             description="The total number of compute shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 4 READ"
+             mdapi_group="ThreadDispatcher"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Busy"
+             symbol_name="GpuBusy"
+             underscore_name="gpu_busy"
+             description="The percentage of time in which the GPU has been processing GPU commands."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 0 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="FrontEnd"
+             mdapi_usage_flags="Tier1 Overview System Frame"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Active"
+             symbol_name="XveActive"
+             underscore_name="xve_active"
+             description="The percentage of time in which the Execution Units were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 7 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Stall"
+             symbol_name="XveStall"
+             underscore_name="xve_stall"
+             description="The percentage of time in which the Execution Units were stalled."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 8 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Thread Occupancy"
+             symbol_name="XveThreadOccupancy"
+             underscore_name="xve_thread_occupancy"
+             description="The percentage of time in which hardware threads occupied XVEs."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="8 A 9 READ FMUL $VectorEngineThreadsCount FDIV $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EM And FPU Pipes Active"
+             symbol_name="XveFpuEmActive"
+             underscore_name="xve_fpu_em_active"
+             description="The percentage of time in which XVE EM INT and FPU INT64 pipelines were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 10 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VS FPU Pipe Active"
+             symbol_name="VsFpuActive"
+             underscore_name="vs_fpu_active"
+             description="The percentage of time in which XVE FPU INT64 pipeline was actively processing a vertex shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 11 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VS EM Pipe Active"
+             symbol_name="VsEmActive"
+             underscore_name="vs_em_active"
+             description="The percentage of time in which XVE EM INT pipeline was actively processing a vertex shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 12 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VS Send Pipe Active"
+             symbol_name="VsSendActive"
+             underscore_name="vs_send_active"
+             description="The percentage of time in which XVE send pipeline was actively processing a vertex shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 13 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS FPU Pipe Active"
+             symbol_name="PsFpuActive"
+             underscore_name="ps_fpu_active"
+             description="The percentage of time in which XVE FPU INT64 pipeline was actively processing a fragment shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 14 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS EM Pipe Active"
+             symbol_name="PsEmActive"
+             underscore_name="ps_em_active"
+             description="The percentage of time in which XVE EM INT pipeline was actively processing a fragment shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 15 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS Send Pipe Active"
+             symbol_name="PsSendActive"
+             underscore_name="ps_send_active"
+             description="The percentage of time in which XVE send pipeline was actively processing a fragment shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 16 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Written"
+             symbol_name="SamplesWritten"
+             underscore_name="samples_written"
+             description="The total number of samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 26 READ 4 UMUL"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Blended"
+             symbol_name="SamplesBlended"
+             underscore_name="samples_blended"
+             description="The total number of blended samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 27 READ 4 UMUL"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels"
+             symbol_name="SamplerTexels"
+             underscore_name="sampler_texels"
+             description="The total number of texels seen on input (with 2x2 accuracy) in all sampler units."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 28 READ 4 UMUL"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels Misses"
+             symbol_name="SamplerTexelMisses"
+             underscore_name="sampler_texel_misses"
+             description="The total number of texels lookups (with 2x2 accuracy) that missed L1 sampler cache."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 29 READ 4 UMUL"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Batch Frame Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Bytes Read"
+             symbol_name="SlmReads"
+             underscore_name="slm_reads"
+             description="The total number of reads from shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks $XeCoreTotalCount UMUL"
+             units="messages"
+             semantic_type="event"
+             equation="A 30 READ"
+             mdapi_group="L1Cache"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Writes"
+             symbol_name="SlmWrites"
+             underscore_name="slm_writes"
+             description="The total number of writes into shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks $XeCoreTotalCount UMUL"
+             units="messages"
+             semantic_type="event"
+             equation="A 31 READ"
+             mdapi_group="L1Cache"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Memory Accesses"
+             symbol_name="ShaderMemoryAccesses"
+             underscore_name="shader_memory_accesses"
+             description="The total number of shader memory accesses to L3."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 32 READ"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Atomic Memory Accesses"
+             symbol_name="ShaderAtomics"
+             underscore_name="shader_atomics"
+             description="The total number of shader atomic memory accesses."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 34 READ"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Barrier Messages"
+             symbol_name="ShaderBarriers"
+             underscore_name="shader_barriers"
+             description="The total number of shader barrier messages."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 35 READ"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Read Throughput"
+             symbol_name="GtiReadThroughput"
+             underscore_name="gti_read_throughput"
+             description="The total number of GPU memory bytes read from GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 512 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="128  A 36 READ UMUL"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Write Throughput"
+             symbol_name="GtiWriteThroughput"
+             underscore_name="gti_write_throughput"
+             description="The total number of GPU memory bytes written to GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 512 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="C 6 READ C 7 READ UADD 128 UMUL"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Slice2 Xe Core0 is busy"
+             symbol_name="Sampler20Busy"
+             underscore_name="sampler20_busy"
+             description="The percentage of time when sampler slice2 Xe core0 is busy"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="C 5 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$GtSlice2XeCore0"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="dualsubslice"
+             />
+    <counter name="Samplers Busy"
+             symbol_name="SamplersBusy"
+             underscore_name="samplers_busy"
+             description="The percentage of time in which samplers or L1 cache are not idle."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="$Sampler20Busy"
+             availability="$GtSlice2XeCore0"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <counter name="Sampler20 Bottleneck"
+             symbol_name="Sampler20Bottleneck"
+             underscore_name="sampler20_bottleneck"
+             description="The percentage of time in which Slice2 Sampler0 has been slowing down the pipe when processing XVE requests."
+             low_watermark="5"
+             high_watermark="15"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="C 4 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$GtSlice2XeCore0"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Indicate Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="dualsubslice"
+             />
+    <counter name="Samplers Bottleneck"
+             symbol_name="SamplerBottleneck"
+             underscore_name="sampler_bottleneck"
+             description="The percentage of time in which samplers have been slowing down the pipe when processing XVE requests."
+             low_watermark="5"
+             high_watermark="15"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="$Sampler20Bottleneck"
+             availability="$GtSlice2XeCore0"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Overview Indicate System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009884" value="0x0000000D" />
+        <register type="NOA" address="0x00009888" value="0x1C840000" />
+        <register type="NOA" address="0x00009888" value="0x1E842800" />
+        <register type="NOA" address="0x00009888" value="0x02844000" />
+        <register type="NOA" address="0x00009888" value="0x04840010" />
+        <register type="NOA" address="0x00009888" value="0x10840800" />
+        <register type="NOA" address="0x00009888" value="0x12840037" />
+        <register type="NOA" address="0x00009888" value="0x00840000" />
+        <register type="NOA" address="0x00009888" value="0x02860500" />
+        <register type="NOA" address="0x00009888" value="0x02080A00" />
+        <register type="NOA" address="0x00009888" value="0x020A0500" />
+        <register type="NOA" address="0x00009884" value="0x00000001" />
+        <register type="NOA" address="0x00009888" value="0x18413800" />
+        <register type="NOA" address="0x00009888" value="0x18613800" />
+        <register type="NOA" address="0x00009888" value="0x02410006" />
+        <register type="NOA" address="0x00009888" value="0x14410100" />
+        <register type="NOA" address="0x00009888" value="0x00410000" />
+        <register type="NOA" address="0x00009888" value="0x02610006" />
+        <register type="NOA" address="0x00009888" value="0x16610004" />
+        <register type="NOA" address="0x00009888" value="0x00610000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x00043000" />
+        <register type="NOA" address="0x00009888" value="0x02020A00" />
+        <register type="NOA" address="0x00009888" value="0x0203F500" />
+        <register type="NOA" address="0x00009888" value="0x0209E000" />
+        <register type="NOA" address="0x00009888" value="0x04030000" />
+        <register type="NOA" address="0x00009888" value="0x20030000" />
+        <register type="NOA" address="0x00009888" value="0x44030000" />
+        <register type="NOA" address="0x00009888" value="0x22030000" />
+        <register type="NOA" address="0x00009888" value="0x46030C60" />
+        <register type="NOA" address="0x00009888" value="0x2403F000" />
+        <register type="NOA" address="0x00009888" value="0x2803F000" />
+        <register type="NOA" address="0x00009884" value="0x00000009" />
+        <register type="NOA" address="0x00009888" value="0x00013000" />
+        <register type="NOA" address="0x00009888" value="0x02020500" />
+        <register type="NOA" address="0x00009888" value="0x02040500" />
+        <register type="NOA" address="0x00009888" value="0x02050500" />
+        <register type="NOA" address="0x00009888" value="0x02080A00" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x64030002" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0x00800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0x00800000" />
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000DC40" value="0x00000000" />
+        <register type="OA" address="0x0000DD40" value="0x00000000" />
+        <register type="OA" address="0x00002B2C" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00005004" />
+        <register type="FLEX" address="0x0000E558" value="0x00003008" />
+        <register type="FLEX" address="0x0000E658" value="0x00011010" />
+        <register type="FLEX" address="0x0000E758" value="0x00050012" />
+        <register type="FLEX" address="0x0000E45C" value="0x00052051" />
+    </register_config>
+  </set>
+
+  <set name="Metric set TestOa"
+       chipset="ACMGT1"
+       symbol_name="TestOa"
+       underscore_name="test_oa"
+       mdapi_supported_apis="VK OGL OCL MEDIA IO"
+       hw_config_guid="57f210de-b537-464a-af7b-7dfe2f3780c1"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="TestCounter7"
+             symbol_name="Counter7"
+             underscore_name="counter7"
+             description="HW test counter 7. Factor: 0.6666"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 7 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="HW test counter 8. Should be equal to 1 in IOStream or in OAG query mode"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 0 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter9 - OAR enable"
+             symbol_name="Counter9"
+             underscore_name="counter9"
+             description="HW test counter 9. Should be equal to 1 in query."
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 1 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x3C030000" />
+        <register type="NOA" address="0x00009888" value="0x42030000" />
+        <register type="NOA" address="0x00009888" value="0x06034000" />
+        <register type="NOA" address="0x00009888" value="0x0803000C" />
+        <register type="NOA" address="0x00009888" value="0x10030FF3" />
+        <register type="NOA" address="0x00009888" value="0x04030000" />
+        <register type="NOA" address="0x00009888" value="0x02030000" />
+        <register type="NOA" address="0x00009888" value="0x50030000" />
+        <register type="NOA" address="0x00009888" value="0x52030000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x64030002" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0xF0800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0xF0800000" />
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000DC40" value="0x00000000" />
+        <register type="OA" address="0x0000DD40" value="0x00000000" />
+        <register type="OA" address="0x00002B2C" value="0x00000000" />
+        <register type="OA" address="0x0000D940" value="0x00000004" />
+        <register type="OA" address="0x0000D944" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D948" value="0x00000003" />
+        <register type="OA" address="0x0000D94C" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D950" value="0x00000007" />
+        <register type="OA" address="0x0000D954" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D958" value="0x00100002" />
+        <register type="OA" address="0x0000D95C" value="0x0000FFF7" />
+        <register type="OA" address="0x0000D960" value="0x00100002" />
+        <register type="OA" address="0x0000D964" value="0x0000FFCF" />
+        <register type="OA" address="0x0000D968" value="0x00100082" />
+        <register type="OA" address="0x0000D96C" value="0x0000FFEF" />
+        <register type="OA" address="0x0000D970" value="0x001000C2" />
+        <register type="OA" address="0x0000D974" value="0x0000FFE7" />
+        <register type="OA" address="0x0000D978" value="0x00100001" />
+        <register type="OA" address="0x0000D97C" value="0x0000FFE7" />
+    </register_config>
+  </set>
+
+</metrics>
diff --git a/lib/xe/oa-configs/oa-acmgt2.xml b/lib/xe/oa-configs/oa-acmgt2.xml
new file mode 100644
index 0000000000..0e205af656
--- /dev/null
+++ b/lib/xe/oa-configs/oa-acmgt2.xml
@@ -0,0 +1,828 @@
+<?xml version="1.0"?>
+<metrics version="1664349628" merge_md5="">
+  <set name="Render Metrics Basic - aggregation approximation"
+       chipset="ACMGT2"
+       symbol_name="RenderBasic"
+       underscore_name="render_basic"
+       mdapi_supported_apis="VK OGL OCL IO"
+       hw_config_guid="0692a728-614d-4d12-8c03-7b3ffe961ef8"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="VS Threads Dispatched"
+             symbol_name="VsThreads"
+             underscore_name="vs_threads"
+             description="The total number of vertex shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 1 READ"
+             mdapi_group="ThreadDispatcher"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="HS Threads Dispatched"
+             symbol_name="HsThreads"
+             underscore_name="hs_threads"
+             description="The total number of hull shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 2 READ"
+             mdapi_group="ThreadDispatcher"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="DS Threads Dispatched"
+             symbol_name="DsThreads"
+             underscore_name="ds_threads"
+             description="The total number of domain shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 3 READ"
+             mdapi_group="ThreadDispatcher"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GS Threads Dispatched"
+             symbol_name="GsThreads"
+             underscore_name="gs_threads"
+             description="The total number of geometry shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 5 READ"
+             mdapi_group="ThreadDispatcher"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS Threads Dispatched"
+             symbol_name="PsThreads"
+             underscore_name="ps_threads"
+             description="The total number of fragment shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 6 READ"
+             mdapi_group="ThreadDispatcher"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="CS Threads Dispatched"
+             symbol_name="CsThreads"
+             underscore_name="cs_threads"
+             description="The total number of compute shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 4 READ"
+             mdapi_group="ThreadDispatcher"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Busy"
+             symbol_name="GpuBusy"
+             underscore_name="gpu_busy"
+             description="The percentage of time in which the GPU has been processing GPU commands."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 0 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="FrontEnd"
+             mdapi_usage_flags="Tier1 Overview System Frame"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Active"
+             symbol_name="XveActive"
+             underscore_name="xve_active"
+             description="The percentage of time in which the Execution Units were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 7 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Stall"
+             symbol_name="XveStall"
+             underscore_name="xve_stall"
+             description="The percentage of time in which the Execution Units were stalled."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 8 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Thread Occupancy"
+             symbol_name="XveThreadOccupancy"
+             underscore_name="xve_thread_occupancy"
+             description="The percentage of time in which hardware threads occupied XVEs."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="8 A 9 READ FMUL $VectorEngineThreadsCount FDIV $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EM And FPU Pipes Active"
+             symbol_name="XveFpuEmActive"
+             underscore_name="xve_fpu_em_active"
+             description="The percentage of time in which XVE EM INT and FPU INT64 pipelines were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 10 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VS FPU Pipe Active"
+             symbol_name="VsFpuActive"
+             underscore_name="vs_fpu_active"
+             description="The percentage of time in which XVE FPU INT64 pipeline was actively processing a vertex shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 11 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VS EM Pipe Active"
+             symbol_name="VsEmActive"
+             underscore_name="vs_em_active"
+             description="The percentage of time in which XVE EM INT pipeline was actively processing a vertex shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 12 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VS Send Pipe Active"
+             symbol_name="VsSendActive"
+             underscore_name="vs_send_active"
+             description="The percentage of time in which XVE send pipeline was actively processing a vertex shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 13 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS FPU Pipe Active"
+             symbol_name="PsFpuActive"
+             underscore_name="ps_fpu_active"
+             description="The percentage of time in which XVE FPU INT64 pipeline was actively processing a fragment shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 14 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS EM Pipe Active"
+             symbol_name="PsEmActive"
+             underscore_name="ps_em_active"
+             description="The percentage of time in which XVE EM INT pipeline was actively processing a fragment shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 15 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS Send Pipe Active"
+             symbol_name="PsSendActive"
+             underscore_name="ps_send_active"
+             description="The percentage of time in which XVE send pipeline was actively processing a fragment shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 16 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Rasterized Pixels"
+             symbol_name="RasterizedPixels"
+             underscore_name="rasterized_pixels"
+             description="The total number of rasterized pixels."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 21 READ 4 UMUL"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Hi-Depth Test Fails"
+             symbol_name="HiDepthTestFails"
+             underscore_name="hi_depth_test_fails"
+             description="The total number of pixels dropped on early hierarchical depth test."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 22 READ 4 UMUL"
+             mdapi_group="DepthPipe"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Depth Test Fails"
+             symbol_name="EarlyDepthTestFails"
+             underscore_name="early_depth_test_fails"
+             description="The total number of pixels dropped on early depth test."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 23 READ 4 UMUL"
+             mdapi_group="DepthPipe"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Killed in FS"
+             symbol_name="SamplesKilledInPs"
+             underscore_name="samples_killed_in_ps"
+             description="The total number of samples or pixels dropped in fragment shaders."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 24 READ 4 UMUL"
+             mdapi_group="ColorPipe"
+             mdapi_usage_flags="Tier4 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Pixels Failing Tests"
+             symbol_name="PixelsFailingPostPsTests"
+             underscore_name="pixels_failing_post_ps_tests"
+             description="The total number of pixels dropped on post-FS alpha, stencil, or depth tests."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 25 READ 4 UMUL"
+             mdapi_group="ColorPipe"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Written"
+             symbol_name="SamplesWritten"
+             underscore_name="samples_written"
+             description="The total number of samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 26 READ 4 UMUL"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Blended"
+             symbol_name="SamplesBlended"
+             underscore_name="samples_blended"
+             description="The total number of blended samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 27 READ 4 UMUL"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels"
+             symbol_name="SamplerTexels"
+             underscore_name="sampler_texels"
+             description="The total number of texels seen on input (with 2x2 accuracy) in all sampler units."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 28 READ 4 UMUL"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels Misses"
+             symbol_name="SamplerTexelMisses"
+             underscore_name="sampler_texel_misses"
+             description="The total number of texels lookups (with 2x2 accuracy) that missed L1 sampler cache."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 29 READ 4 UMUL"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Batch Frame Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Bytes Read"
+             symbol_name="SlmReads"
+             underscore_name="slm_reads"
+             description="The total number of reads from shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks $XeCoreTotalCount UMUL"
+             units="messages"
+             semantic_type="event"
+             equation="A 30 READ"
+             mdapi_group="L1Cache"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Writes"
+             symbol_name="SlmWrites"
+             underscore_name="slm_writes"
+             description="The total number of writes into shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks $XeCoreTotalCount UMUL"
+             units="messages"
+             semantic_type="event"
+             equation="A 31 READ"
+             mdapi_group="L1Cache"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Memory Accesses"
+             symbol_name="ShaderMemoryAccesses"
+             underscore_name="shader_memory_accesses"
+             description="The total number of shader memory accesses to L3."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 32 READ"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Atomic Memory Accesses"
+             symbol_name="ShaderAtomics"
+             underscore_name="shader_atomics"
+             description="The total number of shader atomic memory accesses."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 34 READ"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Barrier Messages"
+             symbol_name="ShaderBarriers"
+             underscore_name="shader_barriers"
+             description="The total number of shader barrier messages."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 35 READ"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Read Throughput"
+             symbol_name="GtiReadThroughput"
+             underscore_name="gti_read_throughput"
+             description="The total number of GPU memory bytes read from GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 512 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="128  A 36 READ UMUL"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Write Throughput"
+             symbol_name="GtiWriteThroughput"
+             underscore_name="gti_write_throughput"
+             description="The total number of GPU memory bytes written to GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 512 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="128  A 37 READ UMUL"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Slice2 Xe Core0 is busy"
+             symbol_name="Sampler20Busy"
+             underscore_name="sampler20_busy"
+             description="The percentage of time when sampler slice2 Xe core0 is busy"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="C 7 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$GtSlice2XeCore0"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="dualsubslice"
+             />
+    <counter name="Samplers Busy"
+             symbol_name="SamplersBusy"
+             underscore_name="samplers_busy"
+             description="The percentage of time in which samplers or L1 cache are not idle."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="$Sampler20Busy"
+             availability="$GtSlice2XeCore0"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <counter name="Sampler20 Bottleneck"
+             symbol_name="Sampler20Bottleneck"
+             underscore_name="sampler20_bottleneck"
+             description="The percentage of time in which Slice2 Sampler0 has been slowing down the pipe when processing XVE requests."
+             low_watermark="5"
+             high_watermark="15"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="C 6 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$GtSlice2XeCore0"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Indicate Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="dualsubslice"
+             />
+    <counter name="Samplers Bottleneck"
+             symbol_name="SamplerBottleneck"
+             underscore_name="sampler_bottleneck"
+             description="The percentage of time in which samplers have been slowing down the pipe when processing XVE requests."
+             low_watermark="5"
+             high_watermark="15"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="$Sampler20Bottleneck"
+             availability="$GtSlice2XeCore0"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Overview Indicate System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009884" value="0x0000000D" />
+        <register type="NOA" address="0x00009888" value="0x1C840000" />
+        <register type="NOA" address="0x00009888" value="0x1E842800" />
+        <register type="NOA" address="0x00009888" value="0x02844000" />
+        <register type="NOA" address="0x00009888" value="0x04840010" />
+        <register type="NOA" address="0x00009888" value="0x12840800" />
+        <register type="NOA" address="0x00009888" value="0x14840037" />
+        <register type="NOA" address="0x00009888" value="0x00840000" />
+        <register type="NOA" address="0x00009888" value="0x02865000" />
+        <register type="NOA" address="0x00009888" value="0x0208A000" />
+        <register type="NOA" address="0x00009888" value="0x020A5000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x0208A000" />
+        <register type="NOA" address="0x00009888" value="0x04032000" />
+        <register type="NOA" address="0x00009888" value="0x06030002" />
+        <register type="NOA" address="0x00009888" value="0x02030000" />
+        <register type="NOA" address="0x00009888" value="0x1C030000" />
+        <register type="NOA" address="0x00009888" value="0x34030000" />
+        <register type="NOA" address="0x00009888" value="0x1E030000" />
+        <register type="NOA" address="0x00009888" value="0x36030000" />
+        <register type="NOA" address="0x00009884" value="0x00000009" />
+        <register type="NOA" address="0x00009888" value="0x0001C000" />
+        <register type="NOA" address="0x00009888" value="0x02025000" />
+        <register type="NOA" address="0x00009888" value="0x02045000" />
+        <register type="NOA" address="0x00009888" value="0x02055000" />
+        <register type="NOA" address="0x00009888" value="0x0208A000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x52030002" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0x00800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0x00800000" />
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000DC40" value="0x00000000" />
+        <register type="OA" address="0x0000DD40" value="0x00000000" />
+        <register type="OA" address="0x00002B2C" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00005004" />
+        <register type="FLEX" address="0x0000E558" value="0x00003008" />
+        <register type="FLEX" address="0x0000E658" value="0x00011010" />
+        <register type="FLEX" address="0x0000E758" value="0x00050012" />
+        <register type="FLEX" address="0x0000E45C" value="0x00052051" />
+    </register_config>
+  </set>
+
+  <set name="Metric set TestOa"
+       chipset="ACMGT2"
+       symbol_name="TestOa"
+       underscore_name="test_oa"
+       mdapi_supported_apis="VK OGL OCL MEDIA IO"
+       hw_config_guid="cfac9130-4f6a-4a2a-aafc-9e88751ce983"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="TestCounter7"
+             symbol_name="Counter7"
+             underscore_name="counter7"
+             description="HW test counter 7. Factor: 0.6666"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 7 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="HW test counter 8. Should be equal to 1 in IOStream or in OAG query mode"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 0 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter9 - OAR enable"
+             symbol_name="Counter9"
+             underscore_name="counter9"
+             description="HW test counter 9. Should be equal to 1 in query."
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 1 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x2E080000" />
+        <register type="NOA" address="0x00009888" value="0x34080000" />
+        <register type="NOA" address="0x00009888" value="0x06088000" />
+        <register type="NOA" address="0x00009888" value="0x10080FF3" />
+        <register type="NOA" address="0x00009888" value="0x08080000" />
+        <register type="NOA" address="0x00009888" value="0x02080000" />
+        <register type="NOA" address="0x00009888" value="0x02032400" />
+        <register type="NOA" address="0x00009888" value="0x3E030000" />
+        <register type="NOA" address="0x00009888" value="0x40030000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x52030002" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0xF0800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0xF0800000" />
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000DC40" value="0x00000000" />
+        <register type="OA" address="0x0000DD40" value="0x00000000" />
+        <register type="OA" address="0x00002B2C" value="0x00000000" />
+        <register type="OA" address="0x0000D940" value="0x00000004" />
+        <register type="OA" address="0x0000D944" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D948" value="0x00000003" />
+        <register type="OA" address="0x0000D94C" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D950" value="0x00000007" />
+        <register type="OA" address="0x0000D954" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D958" value="0x00100002" />
+        <register type="OA" address="0x0000D95C" value="0x0000FFF7" />
+        <register type="OA" address="0x0000D960" value="0x00100002" />
+        <register type="OA" address="0x0000D964" value="0x0000FFCF" />
+        <register type="OA" address="0x0000D968" value="0x00100082" />
+        <register type="OA" address="0x0000D96C" value="0x0000FFEF" />
+        <register type="OA" address="0x0000D970" value="0x001000C2" />
+        <register type="OA" address="0x0000D974" value="0x0000FFE7" />
+        <register type="OA" address="0x0000D978" value="0x00100001" />
+        <register type="OA" address="0x0000D97C" value="0x0000FFE7" />
+    </register_config>
+  </set>
+
+</metrics>
diff --git a/lib/xe/oa-configs/oa-acmgt3.xml b/lib/xe/oa-configs/oa-acmgt3.xml
new file mode 100644
index 0000000000..2e873428fd
--- /dev/null
+++ b/lib/xe/oa-configs/oa-acmgt3.xml
@@ -0,0 +1,824 @@
+<?xml version="1.0"?>
+<metrics version="1664349727" merge_md5="">
+  <set name="Render Metrics Basic"
+       chipset="ACMGT3"
+       symbol_name="RenderBasic"
+       underscore_name="render_basic"
+       mdapi_supported_apis="VK OGL OCL IO"
+       hw_config_guid="47b237c5-ed48-465b-b869-0d7ef59a6982"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="VS Threads Dispatched"
+             symbol_name="VsThreads"
+             underscore_name="vs_threads"
+             description="The total number of vertex shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 1 READ"
+             mdapi_group="ThreadDispatcher"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="HS Threads Dispatched"
+             symbol_name="HsThreads"
+             underscore_name="hs_threads"
+             description="The total number of hull shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 2 READ"
+             mdapi_group="ThreadDispatcher"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="DS Threads Dispatched"
+             symbol_name="DsThreads"
+             underscore_name="ds_threads"
+             description="The total number of domain shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 3 READ"
+             mdapi_group="ThreadDispatcher"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GS Threads Dispatched"
+             symbol_name="GsThreads"
+             underscore_name="gs_threads"
+             description="The total number of geometry shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 5 READ"
+             mdapi_group="ThreadDispatcher"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS Threads Dispatched"
+             symbol_name="PsThreads"
+             underscore_name="ps_threads"
+             description="The total number of fragment shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 6 READ"
+             mdapi_group="ThreadDispatcher"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="CS Threads Dispatched"
+             symbol_name="CsThreads"
+             underscore_name="cs_threads"
+             description="The total number of compute shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 4 READ"
+             mdapi_group="ThreadDispatcher"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Busy"
+             symbol_name="GpuBusy"
+             underscore_name="gpu_busy"
+             description="The percentage of time in which the GPU has been processing GPU commands."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 0 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="FrontEnd"
+             mdapi_usage_flags="Tier1 Overview System Frame"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Active"
+             symbol_name="XveActive"
+             underscore_name="xve_active"
+             description="The percentage of time in which the Execution Units were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 7 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Stall"
+             symbol_name="XveStall"
+             underscore_name="xve_stall"
+             description="The percentage of time in which the Execution Units were stalled."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 8 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Thread Occupancy"
+             symbol_name="XveThreadOccupancy"
+             underscore_name="xve_thread_occupancy"
+             description="The percentage of time in which hardware threads occupied XVEs."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="8 A 9 READ FMUL $VectorEngineThreadsCount FDIV $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EM And FPU Pipes Active"
+             symbol_name="XveFpuEmActive"
+             underscore_name="xve_fpu_em_active"
+             description="The percentage of time in which XVE EM INT and FPU INT64 pipelines were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 10 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VS FPU Pipe Active"
+             symbol_name="VsFpuActive"
+             underscore_name="vs_fpu_active"
+             description="The percentage of time in which XVE FPU INT64 pipeline was actively processing a vertex shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 11 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VS EM Pipe Active"
+             symbol_name="VsEmActive"
+             underscore_name="vs_em_active"
+             description="The percentage of time in which XVE EM INT pipeline was actively processing a vertex shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 12 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VS Send Pipe Active"
+             symbol_name="VsSendActive"
+             underscore_name="vs_send_active"
+             description="The percentage of time in which XVE send pipeline was actively processing a vertex shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 13 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS FPU Pipe Active"
+             symbol_name="PsFpuActive"
+             underscore_name="ps_fpu_active"
+             description="The percentage of time in which XVE FPU INT64 pipeline was actively processing a fragment shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 14 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS EM Pipe Active"
+             symbol_name="PsEmActive"
+             underscore_name="ps_em_active"
+             description="The percentage of time in which XVE EM INT pipeline was actively processing a fragment shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 15 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS Send Pipe Active"
+             symbol_name="PsSendActive"
+             underscore_name="ps_send_active"
+             description="The percentage of time in which XVE send pipeline was actively processing a fragment shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 16 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Rasterized Pixels"
+             symbol_name="RasterizedPixels"
+             underscore_name="rasterized_pixels"
+             description="The total number of rasterized pixels."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 21 READ 4 UMUL"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Hi-Depth Test Fails"
+             symbol_name="HiDepthTestFails"
+             underscore_name="hi_depth_test_fails"
+             description="The total number of pixels dropped on early hierarchical depth test."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 22 READ 4 UMUL"
+             mdapi_group="DepthPipe"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Depth Test Fails"
+             symbol_name="EarlyDepthTestFails"
+             underscore_name="early_depth_test_fails"
+             description="The total number of pixels dropped on early depth test."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 23 READ 4 UMUL"
+             mdapi_group="DepthPipe"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Killed in FS"
+             symbol_name="SamplesKilledInPs"
+             underscore_name="samples_killed_in_ps"
+             description="The total number of samples or pixels dropped in fragment shaders."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 24 READ 4 UMUL"
+             mdapi_group="ColorPipe"
+             mdapi_usage_flags="Tier4 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Pixels Failing Tests"
+             symbol_name="PixelsFailingPostPsTests"
+             underscore_name="pixels_failing_post_ps_tests"
+             description="The total number of pixels dropped on post-FS alpha, stencil, or depth tests."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 25 READ 4 UMUL"
+             mdapi_group="ColorPipe"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Written"
+             symbol_name="SamplesWritten"
+             underscore_name="samples_written"
+             description="The total number of samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 26 READ 4 UMUL"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Blended"
+             symbol_name="SamplesBlended"
+             underscore_name="samples_blended"
+             description="The total number of blended samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 27 READ 4 UMUL"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels"
+             symbol_name="SamplerTexels"
+             underscore_name="sampler_texels"
+             description="The total number of texels seen on input (with 2x2 accuracy) in all sampler units."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 28 READ 4 UMUL"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels Misses"
+             symbol_name="SamplerTexelMisses"
+             underscore_name="sampler_texel_misses"
+             description="The total number of texels lookups (with 2x2 accuracy) that missed L1 sampler cache."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 29 READ 4 UMUL"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Batch Frame Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Bytes Read"
+             symbol_name="SlmReads"
+             underscore_name="slm_reads"
+             description="The total number of reads from shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks $XeCoreTotalCount UMUL"
+             units="messages"
+             semantic_type="event"
+             equation="A 30 READ"
+             mdapi_group="L1Cache"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Writes"
+             symbol_name="SlmWrites"
+             underscore_name="slm_writes"
+             description="The total number of writes into shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks $XeCoreTotalCount UMUL"
+             units="messages"
+             semantic_type="event"
+             equation="A 31 READ"
+             mdapi_group="L1Cache"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Memory Accesses"
+             symbol_name="ShaderMemoryAccesses"
+             underscore_name="shader_memory_accesses"
+             description="The total number of shader memory accesses to L3."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 32 READ"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Atomic Memory Accesses"
+             symbol_name="ShaderAtomics"
+             underscore_name="shader_atomics"
+             description="The total number of shader atomic memory accesses."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 34 READ"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Barrier Messages"
+             symbol_name="ShaderBarriers"
+             underscore_name="shader_barriers"
+             description="The total number of shader barrier messages."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 35 READ"
+             mdapi_group="VectorEngine"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Read Throughput"
+             symbol_name="GtiReadThroughput"
+             underscore_name="gti_read_throughput"
+             description="The total number of GPU memory bytes read from GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 512 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="128  A 36 READ UMUL"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Write Throughput"
+             symbol_name="GtiWriteThroughput"
+             underscore_name="gti_write_throughput"
+             description="The total number of GPU memory bytes written to GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 512 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="128  A 37 READ UMUL"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Slice0 Xe Core0 is busy"
+             symbol_name="Sampler00Busy"
+             underscore_name="sampler00_busy"
+             description="The percentage of time when sampler slice0 Xe core0 is busy"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="B 7 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$GtSlice0XeCore0"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="dualsubslice"
+             />
+    <counter name="Samplers Busy"
+             symbol_name="SamplersBusy"
+             underscore_name="samplers_busy"
+             description="The percentage of time in which samplers or L1 cache are not idle."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="$Sampler00Busy"
+             availability="$XeCoreMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <counter name="Sampler00 Bottleneck"
+             symbol_name="Sampler00Bottleneck"
+             underscore_name="sampler00_bottleneck"
+             description="The percentage of time in which Slice0 Sampler0 has been slowing down the pipe when processing XVE requests."
+             low_watermark="5"
+             high_watermark="15"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="B 6 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$GtSlice0XeCore0"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Indicate Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="dualsubslice"
+             />
+    <counter name="Samplers Bottleneck"
+             symbol_name="SamplerBottleneck"
+             underscore_name="sampler_bottleneck"
+             description="The percentage of time in which samplers have been slowing down the pipe when processing XVE requests."
+             low_watermark="5"
+             high_watermark="15"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="$Sampler00Bottleneck"
+             availability="$XeCoreMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Overview Indicate System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009884" value="0x0000000C" />
+        <register type="NOA" address="0x00009888" value="0x1C840000" />
+        <register type="NOA" address="0x00009888" value="0x1E842800" />
+        <register type="NOA" address="0x00009888" value="0x02844000" />
+        <register type="NOA" address="0x00009888" value="0x04840010" />
+        <register type="NOA" address="0x00009888" value="0x0A840800" />
+        <register type="NOA" address="0x00009888" value="0x0C840037" />
+        <register type="NOA" address="0x00009888" value="0x00840000" />
+        <register type="NOA" address="0x00009888" value="0x00865000" />
+        <register type="NOA" address="0x00009888" value="0x0008A000" />
+        <register type="NOA" address="0x00009888" value="0x000A5000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x0008A000" />
+        <register type="NOA" address="0x00009888" value="0x02030090" />
+        <register type="NOA" address="0x00009888" value="0x46030000" />
+        <register type="NOA" address="0x00009888" value="0x48030000" />
+        <register type="NOA" address="0x00009884" value="0x00000008" />
+        <register type="NOA" address="0x00009888" value="0x000100C0" />
+        <register type="NOA" address="0x00009888" value="0x00025000" />
+        <register type="NOA" address="0x00009888" value="0x00045000" />
+        <register type="NOA" address="0x00009888" value="0x00055000" />
+        <register type="NOA" address="0x00009888" value="0x0008A000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x5C030002" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0x00800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0x00800000" />
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000DC40" value="0x00000000" />
+        <register type="OA" address="0x0000DD40" value="0x00000000" />
+        <register type="OA" address="0x00002B2C" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00005004" />
+        <register type="FLEX" address="0x0000E558" value="0x00003008" />
+        <register type="FLEX" address="0x0000E658" value="0x00011010" />
+        <register type="FLEX" address="0x0000E758" value="0x00050012" />
+        <register type="FLEX" address="0x0000E45C" value="0x00052051" />
+    </register_config>
+  </set>
+
+  <set name="Metric set TestOa"
+       chipset="ACMGT3"
+       symbol_name="TestOa"
+       underscore_name="test_oa"
+       mdapi_supported_apis="VK OGL OCL MEDIA IO"
+       hw_config_guid="7389b9c9-de73-468d-83a8-b27776215e6b"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="TestCounter7"
+             symbol_name="Counter7"
+             underscore_name="counter7"
+             description="HW test counter 7. Factor: 0.6666"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 7 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="HW test counter 8. Should be equal to 1 in IOStream or in OAG query mode"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 0 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter9 - OAR enable"
+             symbol_name="Counter9"
+             underscore_name="counter9"
+             description="HW test counter 9. Should be equal to 1 in query."
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 1 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x2E080000" />
+        <register type="NOA" address="0x00009888" value="0x34080000" />
+        <register type="NOA" address="0x00009888" value="0x06088000" />
+        <register type="NOA" address="0x00009888" value="0x10080FF3" />
+        <register type="NOA" address="0x00009888" value="0x08080000" />
+        <register type="NOA" address="0x00009888" value="0x02080000" />
+        <register type="NOA" address="0x00009888" value="0x02032400" />
+        <register type="NOA" address="0x00009888" value="0x48030000" />
+        <register type="NOA" address="0x00009888" value="0x4A030000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x5C030002" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0xF0800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0xF0800000" />
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000DC40" value="0x00000000" />
+        <register type="OA" address="0x0000DD40" value="0x00000000" />
+        <register type="OA" address="0x00002B2C" value="0x00000000" />
+        <register type="OA" address="0x0000D940" value="0x00000004" />
+        <register type="OA" address="0x0000D944" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D948" value="0x00000003" />
+        <register type="OA" address="0x0000D94C" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D950" value="0x00000007" />
+        <register type="OA" address="0x0000D954" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D958" value="0x00100002" />
+        <register type="OA" address="0x0000D95C" value="0x0000FFF7" />
+        <register type="OA" address="0x0000D960" value="0x00100002" />
+        <register type="OA" address="0x0000D964" value="0x0000FFCF" />
+        <register type="OA" address="0x0000D968" value="0x00100082" />
+        <register type="OA" address="0x0000D96C" value="0x0000FFEF" />
+        <register type="OA" address="0x0000D970" value="0x001000C2" />
+        <register type="OA" address="0x0000D974" value="0x0000FFE7" />
+        <register type="OA" address="0x0000D978" value="0x00100001" />
+        <register type="OA" address="0x0000D97C" value="0x0000FFE7" />
+    </register_config>
+  </set>
+
+</metrics>
diff --git a/lib/xe/oa-configs/oa-adl.xml b/lib/xe/oa-configs/oa-adl.xml
new file mode 100644
index 0000000000..f8091ad1b7
--- /dev/null
+++ b/lib/xe/oa-configs/oa-adl.xml
@@ -0,0 +1,816 @@
+<?xml version="1.0"?>
+<metrics version="1619078711" merge_md5="">
+  <set name="Render Metrics Basic set"
+       chipset="ADL"
+       symbol_name="RenderBasic"
+       underscore_name="render_basic"
+       mdapi_supported_apis="VK OGL OCL IO"
+       hw_config_guid="4b886bf3-61ff-4381-9994-ac9b91202fc7"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="VS Threads Dispatched"
+             symbol_name="VsThreads"
+             underscore_name="vs_threads"
+             description="The total number of vertex shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 1 READ"
+             mdapi_group="EU Array/Vertex Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="HS Threads Dispatched"
+             symbol_name="HsThreads"
+             underscore_name="hs_threads"
+             description="The total number of hull shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 2 READ"
+             mdapi_group="EU Array/Hull Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="DS Threads Dispatched"
+             symbol_name="DsThreads"
+             underscore_name="ds_threads"
+             description="The total number of domain shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 3 READ"
+             mdapi_group="EU Array/Domain Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GS Threads Dispatched"
+             symbol_name="GsThreads"
+             underscore_name="gs_threads"
+             description="The total number of geometry shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 5 READ"
+             mdapi_group="EU Array/Geometry Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS Threads Dispatched"
+             symbol_name="PsThreads"
+             underscore_name="ps_threads"
+             description="The total number of fragment shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 6 READ"
+             mdapi_group="EU Array/Fragment Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="CS Threads Dispatched"
+             symbol_name="CsThreads"
+             underscore_name="cs_threads"
+             description="The total number of compute shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 4 READ"
+             mdapi_group="EU Array/Compute Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO MEDIA"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Busy"
+             symbol_name="GpuBusy"
+             underscore_name="gpu_busy"
+             description="The percentage of time in which the GPU has been processing GPU commands."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 0 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Active"
+             symbol_name="EuActive"
+             underscore_name="eu_active"
+             description="The percentage of time in which the Execution Units were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 7 READ A 8 READ FADD A 9 READ FADD A 10 READ FADD $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Stall"
+             symbol_name="EuStall"
+             underscore_name="eu_stall"
+             description="The percentage of time in which the Execution Units were stalled."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 11 READ A 12 READ FADD A 13 READ FADD A 14 READ FADD $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Thread Occupancy"
+             symbol_name="EuThreadOccupancy"
+             underscore_name="eu_thread_occupancy"
+             description="The percentage of time in which hardware threads occupied EUs."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="8 A 15 READ A 16 READ FADD A 17 READ FADD A 18 READ FADD FMUL $EuThreadsCount FDIV $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler00 Busy"
+             symbol_name="Sampler00Busy"
+             underscore_name="sampler00_busy"
+             description="The percentage of time in which Slice0 Sampler0 has been processing EU requests."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="B 0 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Batch Frame Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="subslice"
+             />
+    <counter name="Sampler Slice0 Dualsubslice0 is bottleneck"
+             symbol_name="Sampler00Bottleneck"
+             underscore_name="sampler00_bottleneck"
+             description="The percentage of time when sampler slice0 dualsubslice0 is bottleneck"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="B 1 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="GPU/Sampler"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="subslice"
+             />
+    <counter name="Samplers Busy"
+             symbol_name="SamplersBusy"
+             underscore_name="samplers_busy"
+             description="The percentage of time in which samplers have been processing EU requests."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="$Sampler00Busy"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <counter name="Samplers Bottleneck"
+             symbol_name="SamplerBottleneck"
+             underscore_name="sampler_bottleneck"
+             description="The percentage of time in which samplers have been slowing down the pipe when processing EU requests."
+             low_watermark="5"
+             high_watermark="15"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="$Sampler00Bottleneck"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Overview Indicate System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <counter name="Rasterized Pixels"
+             symbol_name="RasterizedPixels"
+             underscore_name="rasterized_pixels"
+             description="The total number of rasterized pixels."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 21 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Hi-Depth Test Fails"
+             symbol_name="HiDepthTestFails"
+             underscore_name="hi_depth_test_fails"
+             description="The total number of pixels dropped on early hierarchical depth test."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 22 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer/Hi-Depth Test"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Depth Test Fails"
+             symbol_name="EarlyDepthTestFails"
+             underscore_name="early_depth_test_fails"
+             description="The total number of pixels dropped on early depth test."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 23 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer/Early Depth Test"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Killed in FS"
+             symbol_name="SamplesKilledInPs"
+             underscore_name="samples_killed_in_ps"
+             description="The total number of samples or pixels dropped in fragment shaders."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 24 READ 4 UMUL"
+             mdapi_group="3D Pipe/Fragment Shader"
+             mdapi_usage_flags="Tier4 Overview Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Pixels Failing Tests"
+             symbol_name="PixelsFailingPostPsTests"
+             underscore_name="pixels_failing_post_ps_tests"
+             description="The total number of pixels dropped on post-FS alpha, stencil, or depth tests."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 25 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Written"
+             symbol_name="SamplesWritten"
+             underscore_name="samples_written"
+             description="The total number of samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 26 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Blended"
+             symbol_name="SamplesBlended"
+             underscore_name="samples_blended"
+             description="The total number of blended samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 27 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels"
+             symbol_name="SamplerTexels"
+             underscore_name="sampler_texels"
+             description="The total number of texels seen on input (with 2x2 accuracy) in all sampler units."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 28 READ 4 UMUL"
+             mdapi_group="Sampler/Sampler Input"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels Misses"
+             symbol_name="SamplerTexelMisses"
+             underscore_name="sampler_texel_misses"
+             description="The total number of texels lookups (with 2x2 accuracy) that missed L1 sampler cache."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 29 READ 4 UMUL"
+             mdapi_group="Sampler/Sampler Cache"
+             mdapi_usage_flags="Tier3 Batch Frame Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Bytes Read"
+             symbol_name="SlmBytesRead"
+             underscore_name="slm_bytes_read"
+             description="The total number of GPU memory bytes read from shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 128 UMUL $EuSubslicesTotalCount UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="A 30 READ 64 UMUL"
+             mdapi_group="L3/Data Port/SLM"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Bytes Written"
+             symbol_name="SlmBytesWritten"
+             underscore_name="slm_bytes_written"
+             description="The total number of GPU memory bytes written into shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 128 UMUL $EuSubslicesTotalCount UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="A 31 READ 64 UMUL"
+             mdapi_group="L3/Data Port/SLM"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Memory Accesses"
+             symbol_name="ShaderMemoryAccesses"
+             underscore_name="shader_memory_accesses"
+             description="The total number of shader memory accesses to L3."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 32 READ"
+             mdapi_group="L3/Data Port"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Atomic Memory Accesses"
+             symbol_name="ShaderAtomics"
+             underscore_name="shader_atomics"
+             description="The total number of shader atomic memory accesses."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 34 READ"
+             mdapi_group="L3/Data Port/Atomics"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Shader Throughput"
+             symbol_name="L3ShaderThroughput"
+             underscore_name="l3_shader_throughput"
+             description="The total number of GPU memory bytes transferred between shaders and L3 caches w/o URB."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 64 UMUL $EuSubslicesTotalCount UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="$ShaderMemoryAccesses 64 UMUL"
+             mdapi_group="L3/Data Port"
+             mdapi_usage_flags="Tier2 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Barrier Messages"
+             symbol_name="ShaderBarriers"
+             underscore_name="shader_barriers"
+             description="The total number of shader barrier messages."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 35 READ"
+             mdapi_group="EU Array/Barrier"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Read Throughput"
+             symbol_name="GtiReadThroughput"
+             underscore_name="gti_read_throughput"
+             description="The total number of GPU memory bytes read from GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 64 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="64  C 5 READ C 4 READ UADD C 3 READ UADD C 2 READ UADD UMUL"
+             mdapi_group="GTI"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Write Throughput"
+             symbol_name="GtiWriteThroughput"
+             underscore_name="gti_write_throughput"
+             description="The total number of GPU memory bytes written to GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 64 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="64  C 1 READ C 0 READ UADD UMUL"
+             mdapi_group="GTI"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009840" value="0x00000000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x14150001" />
+        <register type="NOA" address="0x00009888" value="0x16150020" />
+        <register type="NOA" address="0x00009888" value="0x00124000" />
+        <register type="NOA" address="0x00009888" value="0x0E124000" />
+        <register type="NOA" address="0x00009888" value="0x10124000" />
+        <register type="NOA" address="0x00009888" value="0x12124000" />
+        <register type="NOA" address="0x00009888" value="0x10138000" />
+        <register type="NOA" address="0x00009888" value="0x1C130E00" />
+        <register type="NOA" address="0x00009888" value="0x00150050" />
+        <register type="NOA" address="0x00009888" value="0x06157000" />
+        <register type="NOA" address="0x00009888" value="0x08157151" />
+        <register type="NOA" address="0x00009888" value="0x10150000" />
+        <register type="NOA" address="0x00009888" value="0x18150000" />
+        <register type="NOA" address="0x00009888" value="0x1C150000" />
+        <register type="NOA" address="0x00009888" value="0x18004000" />
+        <register type="NOA" address="0x00009888" value="0x36000490" />
+        <register type="NOA" address="0x00009888" value="0x1C058000" />
+        <register type="NOA" address="0x00009888" value="0x2405002A" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x05151D47" />
+        <register type="NOA" address="0x00009888" value="0x09151536" />
+        <register type="NOA" address="0x00009888" value="0x05351C00" />
+        <register type="NOA" address="0x00009888" value="0x09351400" />
+        <register type="NOA" address="0x00009888" value="0x41104000" />
+        <register type="NOA" address="0x00009888" value="0x5B1050BB" />
+        <register type="NOA" address="0x00009888" value="0x5D102C01" />
+        <register type="NOA" address="0x00009888" value="0x17144000" />
+        <register type="NOA" address="0x00009888" value="0x1D1402A0" />
+        <register type="NOA" address="0x00009888" value="0x01124000" />
+        <register type="NOA" address="0x00009888" value="0x0F124000" />
+        <register type="NOA" address="0x00009888" value="0x11124000" />
+        <register type="NOA" address="0x00009888" value="0x13124000" />
+        <register type="NOA" address="0x00009888" value="0x1F150137" />
+        <register type="NOA" address="0x00009888" value="0x01150000" />
+        <register type="NOA" address="0x00009888" value="0x0F168000" />
+        <register type="NOA" address="0x00009888" value="0x03164000" />
+        <register type="NOA" address="0x00009888" value="0x05164000" />
+        <register type="NOA" address="0x00009888" value="0x1D350137" />
+        <register type="NOA" address="0x00009888" value="0x03350147" />
+        <register type="NOA" address="0x00009888" value="0x07350136" />
+        <register type="NOA" address="0x00009888" value="0x01350000" />
+        <register type="NOA" address="0x00009888" value="0x0F364000" />
+        <register type="NOA" address="0x00009888" value="0x01368000" />
+        <register type="NOA" address="0x00009888" value="0x03368000" />
+        <register type="NOA" address="0x00009888" value="0x47101000" />
+        <register type="NOA" address="0x00009888" value="0x4D100000" />
+        <register type="NOA" address="0x00009888" value="0x4F100000" />
+        <register type="NOA" address="0x00009888" value="0x51100000" />
+        <register type="NOA" address="0x00009888" value="0x17100000" />
+        <register type="NOA" address="0x00009888" value="0x31100000" />
+        <register type="NOA" address="0x00009888" value="0x55101210" />
+        <register type="NOA" address="0x00009888" value="0x57100002" />
+        <register type="NOA" address="0x00009888" value="0x49101212" />
+        <register type="NOA" address="0x00009888" value="0x4B100212" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x65100002" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x42000001" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0x30800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0x00800000" />
+        <register type="OA" address="0x0000DC40" value="0x00030000" />
+        <register type="OA" address="0x0000D940" value="0x00000018" />
+        <register type="OA" address="0x0000D944" value="0x0000FFFC" />
+        <register type="OA" address="0x0000DC00" value="0x00000018" />
+        <register type="OA" address="0x0000DC04" value="0x0000FFFC" />
+        <register type="OA" address="0x0000D948" value="0x00000060" />
+        <register type="OA" address="0x0000D94C" value="0x0000FFF3" />
+        <register type="OA" address="0x0000DC08" value="0x00000060" />
+        <register type="OA" address="0x0000DC0C" value="0x0000FFF3" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00804704" />
+        <register type="FLEX" address="0x0000E558" value="0x00A04904" />
+        <register type="FLEX" address="0x0000E658" value="0x00805705" />
+        <register type="FLEX" address="0x0000E758" value="0x00A05905" />
+        <register type="FLEX" address="0x0000E45C" value="0x00808708" />
+        <register type="FLEX" address="0x0000E55C" value="0x00A08908" />
+        <register type="FLEX" address="0x0000E65C" value="0xFFFFFFFF" />
+    </register_config>
+  </set>
+
+  <set name="Metric set TestOa"
+       chipset="ADL"
+       symbol_name="TestOa"
+       underscore_name="test_oa"
+       mdapi_supported_apis="VK OGL OCL IO"
+       hw_config_guid="89173c19-fcfe-48da-ac26-fb64425f141b"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter7"
+             symbol_name="Counter7"
+             underscore_name="counter7"
+             description="HW test counter 7. Factor: 0.6666"
+             data_type="uint64"
+             units="events"
+             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="TestCounter8"
+             symbol_name="Counter8"
+             underscore_name="counter8"
+             description="HW test counter 8. Should be equal to 1 in IOStream or in OAG query mode"
+             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="TestCounter9 - OAR enable"
+             symbol_name="Counter9"
+             underscore_name="counter9"
+             description="HW test counter 9. Should be equal to 1 in query."
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 1 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009840" value="0x00000000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x280E0000" />
+        <register type="NOA" address="0x00009888" value="0x1E0E0147" />
+        <register type="NOA" address="0x00009888" value="0x180E0000" />
+        <register type="NOA" address="0x00009888" value="0x160E0000" />
+        <register type="NOA" address="0x00009888" value="0x1E0F1000" />
+        <register type="NOA" address="0x00009888" value="0x1E104000" />
+        <register type="NOA" address="0x00009888" value="0x2E020100" />
+        <register type="NOA" address="0x00009888" value="0x2C030004" />
+        <register type="NOA" address="0x00009888" value="0x38003000" />
+        <register type="NOA" address="0x00009888" value="0x1E0A8000" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x49110000" />
+        <register type="NOA" address="0x00009888" value="0x5D101400" />
+        <register type="NOA" address="0x00009888" value="0x1F140020" />
+        <register type="NOA" address="0x00009888" value="0x1D1103B3" />
+        <register type="NOA" address="0x00009888" value="0x01110000" />
+        <register type="NOA" address="0x00009888" value="0x61110000" />
+        <register type="NOA" address="0x00009888" value="0x1D128000" />
+        <register type="NOA" address="0x00009888" value="0x1F124000" />
+        <register type="NOA" address="0x00009888" value="0x17100000" />
+        <register type="NOA" address="0x00009888" value="0x55100510" />
+        <register type="NOA" address="0x00009888" value="0x57100000" />
+        <register type="NOA" address="0x00009888" value="0x31100000" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x65100002" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x42000001" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0xF0800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0xF0800000" />
+        <register type="OA" address="0x0000DC40" value="0x00FF0000" />
+        <register type="OA" address="0x0000D940" value="0x00000004" />
+        <register type="OA" address="0x0000D944" value="0x0000FFFF" />
+        <register type="OA" address="0x0000DC00" value="0x00000004" />
+        <register type="OA" address="0x0000DC04" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D948" value="0x00000003" />
+        <register type="OA" address="0x0000D94C" value="0x0000FFFF" />
+        <register type="OA" address="0x0000DC08" value="0x00000003" />
+        <register type="OA" address="0x0000DC0C" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D950" value="0x00000007" />
+        <register type="OA" address="0x0000D954" value="0x0000FFFF" />
+        <register type="OA" address="0x0000DC10" value="0x00000007" />
+        <register type="OA" address="0x0000DC14" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D958" value="0x00100002" />
+        <register type="OA" address="0x0000D95C" value="0x0000FFF7" />
+        <register type="OA" address="0x0000DC18" value="0x00100002" />
+        <register type="OA" address="0x0000DC1C" value="0x0000FFF7" />
+        <register type="OA" address="0x0000D960" value="0x00100002" />
+        <register type="OA" address="0x0000D964" value="0x0000FFCF" />
+        <register type="OA" address="0x0000DC20" value="0x00100002" />
+        <register type="OA" address="0x0000DC24" value="0x0000FFCF" />
+        <register type="OA" address="0x0000D968" value="0x00100082" />
+        <register type="OA" address="0x0000D96C" value="0x0000FFEF" />
+        <register type="OA" address="0x0000DC28" value="0x00100082" />
+        <register type="OA" address="0x0000DC2C" value="0x0000FFEF" />
+        <register type="OA" address="0x0000D970" value="0x001000C2" />
+        <register type="OA" address="0x0000D974" value="0x0000FFE7" />
+        <register type="OA" address="0x0000DC30" value="0x001000C2" />
+        <register type="OA" address="0x0000DC34" value="0x0000FFE7" />
+        <register type="OA" address="0x0000D978" value="0x00100001" />
+        <register type="OA" address="0x0000D97C" value="0x0000FFE7" />
+        <register type="OA" address="0x0000DC38" value="0x00100001" />
+        <register type="OA" address="0x0000DC3C" value="0x0000FFE7" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E65C" value="0xFFFFFFFF" />
+    </register_config>
+  </set>
+
+</metrics>
diff --git a/lib/xe/oa-configs/oa-dg1.xml b/lib/xe/oa-configs/oa-dg1.xml
new file mode 100644
index 0000000000..52fedfa4d2
--- /dev/null
+++ b/lib/xe/oa-configs/oa-dg1.xml
@@ -0,0 +1,823 @@
+<?xml version="1.0"?>
+<metrics version="1619078711" merge_md5="">
+  <set name="Render Metrics Basic set"
+       chipset="DG1"
+       symbol_name="RenderBasic"
+       underscore_name="render_basic"
+       mdapi_supported_apis="VK OGL OCL IO"
+       hw_config_guid="1caf6b6d-a1ef-40d3-9033-311e482b826e"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="VS Threads Dispatched"
+             symbol_name="VsThreads"
+             underscore_name="vs_threads"
+             description="The total number of vertex shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 1 READ"
+             mdapi_group="EU Array/Vertex Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="HS Threads Dispatched"
+             symbol_name="HsThreads"
+             underscore_name="hs_threads"
+             description="The total number of hull shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 2 READ"
+             mdapi_group="EU Array/Hull Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="DS Threads Dispatched"
+             symbol_name="DsThreads"
+             underscore_name="ds_threads"
+             description="The total number of domain shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 3 READ"
+             mdapi_group="EU Array/Domain Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GS Threads Dispatched"
+             symbol_name="GsThreads"
+             underscore_name="gs_threads"
+             description="The total number of geometry shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 5 READ"
+             mdapi_group="EU Array/Geometry Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS Threads Dispatched"
+             symbol_name="PsThreads"
+             underscore_name="ps_threads"
+             description="The total number of fragment shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 6 READ"
+             mdapi_group="EU Array/Fragment Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="CS Threads Dispatched"
+             symbol_name="CsThreads"
+             underscore_name="cs_threads"
+             description="The total number of compute shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 4 READ"
+             mdapi_group="EU Array/Compute Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO MEDIA"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Busy"
+             symbol_name="GpuBusy"
+             underscore_name="gpu_busy"
+             description="The percentage of time in which the GPU has been processing GPU commands."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 0 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Active"
+             symbol_name="EuActive"
+             underscore_name="eu_active"
+             description="The percentage of time in which the Execution Units were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 7 READ A 8 READ FADD A 9 READ FADD A 10 READ FADD $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Stall"
+             symbol_name="EuStall"
+             underscore_name="eu_stall"
+             description="The percentage of time in which the Execution Units were stalled."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 11 READ A 12 READ FADD A 13 READ FADD A 14 READ FADD $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Thread Occupancy"
+             symbol_name="EuThreadOccupancy"
+             underscore_name="eu_thread_occupancy"
+             description="The percentage of time in which hardware threads occupied EUs."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="8 A 15 READ A 16 READ FADD A 17 READ FADD A 18 READ FADD FMUL $EuThreadsCount FDIV $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler00 Busy"
+             symbol_name="Sampler00Busy"
+             underscore_name="sampler00_busy"
+             description="The percentage of time in which Slice0 Sampler0 has been processing EU requests."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="B 0 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Batch Frame Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="subslice"
+             />
+    <counter name="Sampler Slice0 Dualsubslice0 is bottleneck"
+             symbol_name="Sampler00Bottleneck"
+             underscore_name="sampler00_bottleneck"
+             description="The percentage of time when sampler slice0 dualsubslice0 is bottleneck"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="B 1 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="GPU/Sampler"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="subslice"
+             />
+    <counter name="Samplers Busy"
+             symbol_name="SamplersBusy"
+             underscore_name="samplers_busy"
+             description="The percentage of time in which samplers have been processing EU requests."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="$Sampler00Busy"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <counter name="Samplers Bottleneck"
+             symbol_name="SamplerBottleneck"
+             underscore_name="sampler_bottleneck"
+             description="The percentage of time in which samplers have been slowing down the pipe when processing EU requests."
+             low_watermark="5"
+             high_watermark="15"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="$Sampler00Bottleneck"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Overview Indicate System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <counter name="Rasterized Pixels"
+             symbol_name="RasterizedPixels"
+             underscore_name="rasterized_pixels"
+             description="The total number of rasterized pixels."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 21 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Hi-Depth Test Fails"
+             symbol_name="HiDepthTestFails"
+             underscore_name="hi_depth_test_fails"
+             description="The total number of pixels dropped on early hierarchical depth test."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 22 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer/Hi-Depth Test"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Depth Test Fails"
+             symbol_name="EarlyDepthTestFails"
+             underscore_name="early_depth_test_fails"
+             description="The total number of pixels dropped on early depth test."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 23 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer/Early Depth Test"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Killed in FS"
+             symbol_name="SamplesKilledInPs"
+             underscore_name="samples_killed_in_ps"
+             description="The total number of samples or pixels dropped in fragment shaders."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 24 READ 4 UMUL"
+             mdapi_group="3D Pipe/Fragment Shader"
+             mdapi_usage_flags="Tier4 Overview Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Pixels Failing Tests"
+             symbol_name="PixelsFailingPostPsTests"
+             underscore_name="pixels_failing_post_ps_tests"
+             description="The total number of pixels dropped on post-FS alpha, stencil, or depth tests."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 25 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Written"
+             symbol_name="SamplesWritten"
+             underscore_name="samples_written"
+             description="The total number of samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 26 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Blended"
+             symbol_name="SamplesBlended"
+             underscore_name="samples_blended"
+             description="The total number of blended samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 27 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels"
+             symbol_name="SamplerTexels"
+             underscore_name="sampler_texels"
+             description="The total number of texels seen on input (with 2x2 accuracy) in all sampler units."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 28 READ 4 UMUL"
+             mdapi_group="Sampler/Sampler Input"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels Misses"
+             symbol_name="SamplerTexelMisses"
+             underscore_name="sampler_texel_misses"
+             description="The total number of texels lookups (with 2x2 accuracy) that missed L1 sampler cache."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 29 READ 4 UMUL"
+             mdapi_group="Sampler/Sampler Cache"
+             mdapi_usage_flags="Tier3 Batch Frame Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Bytes Read"
+             symbol_name="SlmBytesRead"
+             underscore_name="slm_bytes_read"
+             description="The total number of GPU memory bytes read from shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 128 UMUL $EuSubslicesTotalCount UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="A 30 READ 64 UMUL"
+             mdapi_group="L3/Data Port/SLM"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Bytes Written"
+             symbol_name="SlmBytesWritten"
+             underscore_name="slm_bytes_written"
+             description="The total number of GPU memory bytes written into shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 128 UMUL $EuSubslicesTotalCount UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="A 31 READ 64 UMUL"
+             mdapi_group="L3/Data Port/SLM"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Memory Accesses"
+             symbol_name="ShaderMemoryAccesses"
+             underscore_name="shader_memory_accesses"
+             description="The total number of shader memory accesses to L3."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 32 READ"
+             mdapi_group="L3/Data Port"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Atomic Memory Accesses"
+             symbol_name="ShaderAtomics"
+             underscore_name="shader_atomics"
+             description="The total number of shader atomic memory accesses."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 34 READ"
+             mdapi_group="L3/Data Port/Atomics"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Shader Throughput"
+             symbol_name="L3ShaderThroughput"
+             underscore_name="l3_shader_throughput"
+             description="The total number of GPU memory bytes transferred between shaders and L3 caches w/o URB."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 64 UMUL $EuSubslicesTotalCount UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="$ShaderMemoryAccesses 64 UMUL"
+             mdapi_group="L3/Data Port"
+             mdapi_usage_flags="Tier2 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Barrier Messages"
+             symbol_name="ShaderBarriers"
+             underscore_name="shader_barriers"
+             description="The total number of shader barrier messages."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 35 READ"
+             mdapi_group="EU Array/Barrier"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Read Throughput"
+             symbol_name="GtiReadThroughput"
+             underscore_name="gti_read_throughput"
+             description="The total number of GPU memory bytes read from GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 128 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="64  C 5 READ C 4 READ UADD C 3 READ UADD C 2 READ UADD UMUL"
+             mdapi_group="GTI"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Write Throughput"
+             symbol_name="GtiWriteThroughput"
+             underscore_name="gti_write_throughput"
+             description="The total number of GPU memory bytes written to GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 128 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="64  C 1 READ C 0 READ UADD UMUL"
+             mdapi_group="GTI"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009840" value="0x00000000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x14150001" />
+        <register type="NOA" address="0x00009888" value="0x16150020" />
+        <register type="NOA" address="0x00009888" value="0x00124000" />
+        <register type="NOA" address="0x00009888" value="0x0E124000" />
+        <register type="NOA" address="0x00009888" value="0x10124000" />
+        <register type="NOA" address="0x00009888" value="0x12124000" />
+        <register type="NOA" address="0x00009888" value="0x10138000" />
+        <register type="NOA" address="0x00009888" value="0x1C130E00" />
+        <register type="NOA" address="0x00009888" value="0x00150050" />
+        <register type="NOA" address="0x00009888" value="0x06157000" />
+        <register type="NOA" address="0x00009888" value="0x08157151" />
+        <register type="NOA" address="0x00009888" value="0x10150000" />
+        <register type="NOA" address="0x00009888" value="0x18150000" />
+        <register type="NOA" address="0x00009888" value="0x1C150000" />
+        <register type="NOA" address="0x00009888" value="0x00004000" />
+        <register type="NOA" address="0x00009888" value="0x0E004000" />
+        <register type="NOA" address="0x00009888" value="0x10004000" />
+        <register type="NOA" address="0x00009888" value="0x12004000" />
+        <register type="NOA" address="0x00009888" value="0x00014000" />
+        <register type="NOA" address="0x00009888" value="0x1A012000" />
+        <register type="NOA" address="0x00009888" value="0x1C012000" />
+        <register type="NOA" address="0x00009888" value="0x1E012000" />
+        <register type="NOA" address="0x00009888" value="0x1C054000" />
+        <register type="NOA" address="0x00009888" value="0x24050015" />
+        <register type="NOA" address="0x00009888" value="0x10088000" />
+        <register type="NOA" address="0x00009888" value="0x1C08000E" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x05151D47" />
+        <register type="NOA" address="0x00009888" value="0x09151536" />
+        <register type="NOA" address="0x00009888" value="0x05351C00" />
+        <register type="NOA" address="0x00009888" value="0x09351400" />
+        <register type="NOA" address="0x00009888" value="0x41104000" />
+        <register type="NOA" address="0x00009888" value="0x5B1050BB" />
+        <register type="NOA" address="0x00009888" value="0x5D102C01" />
+        <register type="NOA" address="0x00009888" value="0x11148000" />
+        <register type="NOA" address="0x00009888" value="0x1B14E000" />
+        <register type="NOA" address="0x00009888" value="0x4B114000" />
+        <register type="NOA" address="0x00009888" value="0x5F11A000" />
+        <register type="NOA" address="0x00009888" value="0x61110002" />
+        <register type="NOA" address="0x00009888" value="0x1F150137" />
+        <register type="NOA" address="0x00009888" value="0x01150000" />
+        <register type="NOA" address="0x00009888" value="0x0F168000" />
+        <register type="NOA" address="0x00009888" value="0x03164000" />
+        <register type="NOA" address="0x00009888" value="0x05164000" />
+        <register type="NOA" address="0x00009888" value="0x1D350137" />
+        <register type="NOA" address="0x00009888" value="0x03350147" />
+        <register type="NOA" address="0x00009888" value="0x07350136" />
+        <register type="NOA" address="0x00009888" value="0x01350000" />
+        <register type="NOA" address="0x00009888" value="0x0F364000" />
+        <register type="NOA" address="0x00009888" value="0x01368000" />
+        <register type="NOA" address="0x00009888" value="0x03368000" />
+        <register type="NOA" address="0x00009888" value="0x47101000" />
+        <register type="NOA" address="0x00009888" value="0x4D100000" />
+        <register type="NOA" address="0x00009888" value="0x4F100000" />
+        <register type="NOA" address="0x00009888" value="0x51100000" />
+        <register type="NOA" address="0x00009888" value="0x17100000" />
+        <register type="NOA" address="0x00009888" value="0x31100000" />
+        <register type="NOA" address="0x00009888" value="0x55101610" />
+        <register type="NOA" address="0x00009888" value="0x57100006" />
+        <register type="NOA" address="0x00009888" value="0x49101616" />
+        <register type="NOA" address="0x00009888" value="0x4B100616" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x65100002" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x42000001" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0x30800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0x00800000" />
+        <register type="OA" address="0x0000DC40" value="0x00030000" />
+        <register type="OA" address="0x0000D940" value="0x00000018" />
+        <register type="OA" address="0x0000D944" value="0x0000FFFC" />
+        <register type="OA" address="0x0000DC00" value="0x00000018" />
+        <register type="OA" address="0x0000DC04" value="0x0000FFFC" />
+        <register type="OA" address="0x0000D948" value="0x00000060" />
+        <register type="OA" address="0x0000D94C" value="0x0000FFF3" />
+        <register type="OA" address="0x0000DC08" value="0x00000060" />
+        <register type="OA" address="0x0000DC0C" value="0x0000FFF3" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00804704" />
+        <register type="FLEX" address="0x0000E558" value="0x00A04904" />
+        <register type="FLEX" address="0x0000E658" value="0x00805705" />
+        <register type="FLEX" address="0x0000E758" value="0x00A05905" />
+        <register type="FLEX" address="0x0000E45C" value="0x00808708" />
+        <register type="FLEX" address="0x0000E55C" value="0x00A08908" />
+        <register type="FLEX" address="0x0000E65C" value="0xFFFFFFFF" />
+    </register_config>
+  </set>
+
+  <set name="Metric set TestOa"
+       chipset="DG1"
+       symbol_name="TestOa"
+       underscore_name="test_oa"
+       mdapi_supported_apis="VK OGL OCL MEDIA IO"
+       hw_config_guid="23f51139-6973-4b45-a211-778834ce2c9a"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter7"
+             symbol_name="Counter7"
+             underscore_name="counter7"
+             description="HW test counter 7. Factor: 0.6666"
+             data_type="uint64"
+             units="events"
+             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="TestCounter8"
+             symbol_name="Counter8"
+             underscore_name="counter8"
+             description="HW test counter 8. Should be equal to 1 in IOStream or in OAG query mode"
+             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="TestCounter9 - OAR enable"
+             symbol_name="Counter9"
+             underscore_name="counter9"
+             description="HW test counter 9. Should be equal to 1 in query."
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 1 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis="OGL OCL MEDIA VK"
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009840" value="0x00000000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x04100000" />
+        <register type="NOA" address="0x00009888" value="0x36000001" />
+        <register type="NOA" address="0x00009888" value="0x2C010004" />
+        <register type="NOA" address="0x00009888" value="0x26050003" />
+        <register type="NOA" address="0x00009888" value="0x26060040" />
+        <register type="NOA" address="0x00009888" value="0x1C090200" />
+        <register type="NOA" address="0x00009888" value="0x0E0C8000" />
+        <register type="NOA" address="0x00009888" value="0x200D8000" />
+        <register type="NOA" address="0x00009888" value="0x1E0F8000" />
+        <register type="NOA" address="0x00009888" value="0x1E100017" />
+        <register type="NOA" address="0x00009888" value="0x00100000" />
+        <register type="NOA" address="0x00009888" value="0x1E0B4000" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x49110000" />
+        <register type="NOA" address="0x00009888" value="0x5D101400" />
+        <register type="NOA" address="0x00009888" value="0x1D140020" />
+        <register type="NOA" address="0x00009888" value="0x1D1103A3" />
+        <register type="NOA" address="0x00009888" value="0x01110000" />
+        <register type="NOA" address="0x00009888" value="0x61112000" />
+        <register type="NOA" address="0x00009888" value="0x17100000" />
+        <register type="NOA" address="0x00009888" value="0x55100230" />
+        <register type="NOA" address="0x00009888" value="0x57100000" />
+        <register type="NOA" address="0x00009888" value="0x31100000" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x65100002" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x42000001" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0xF0800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0xF0800000" />
+        <register type="OA" address="0x0000DC40" value="0x00FF0000" />
+        <register type="OA" address="0x0000D940" value="0x00000004" />
+        <register type="OA" address="0x0000D944" value="0x0000FFFF" />
+        <register type="OA" address="0x0000DC00" value="0x00000004" />
+        <register type="OA" address="0x0000DC04" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D948" value="0x00000003" />
+        <register type="OA" address="0x0000D94C" value="0x0000FFFF" />
+        <register type="OA" address="0x0000DC08" value="0x00000003" />
+        <register type="OA" address="0x0000DC0C" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D950" value="0x00000007" />
+        <register type="OA" address="0x0000D954" value="0x0000FFFF" />
+        <register type="OA" address="0x0000DC10" value="0x00000007" />
+        <register type="OA" address="0x0000DC14" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D958" value="0x00100002" />
+        <register type="OA" address="0x0000D95C" value="0x0000FFF7" />
+        <register type="OA" address="0x0000DC18" value="0x00100002" />
+        <register type="OA" address="0x0000DC1C" value="0x0000FFF7" />
+        <register type="OA" address="0x0000D960" value="0x00100002" />
+        <register type="OA" address="0x0000D964" value="0x0000FFCF" />
+        <register type="OA" address="0x0000DC20" value="0x00100002" />
+        <register type="OA" address="0x0000DC24" value="0x0000FFCF" />
+        <register type="OA" address="0x0000D968" value="0x00100082" />
+        <register type="OA" address="0x0000D96C" value="0x0000FFEF" />
+        <register type="OA" address="0x0000DC28" value="0x00100082" />
+        <register type="OA" address="0x0000DC2C" value="0x0000FFEF" />
+        <register type="OA" address="0x0000D970" value="0x001000C2" />
+        <register type="OA" address="0x0000D974" value="0x0000FFE7" />
+        <register type="OA" address="0x0000DC30" value="0x001000C2" />
+        <register type="OA" address="0x0000DC34" value="0x0000FFE7" />
+        <register type="OA" address="0x0000D978" value="0x00100001" />
+        <register type="OA" address="0x0000D97C" value="0x0000FFE7" />
+        <register type="OA" address="0x0000DC38" value="0x00100001" />
+        <register type="OA" address="0x0000DC3C" value="0x0000FFE7" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E65C" value="0xFFFFFFFF" />
+    </register_config>
+  </set>
+
+</metrics>
diff --git a/lib/xe/oa-configs/oa-mtlgt2.xml b/lib/xe/oa-configs/oa-mtlgt2.xml
new file mode 100644
index 0000000000..38ebc54274
--- /dev/null
+++ b/lib/xe/oa-configs/oa-mtlgt2.xml
@@ -0,0 +1,789 @@
+<?xml version="1.0"?>
+<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"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="VS Threads Dispatched"
+             symbol_name="VsThreads"
+             underscore_name="vs_threads"
+             description="The total number of vertex shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 1 READ"
+             mdapi_group="EU Array/Vertex Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="HS Threads Dispatched"
+             symbol_name="HsThreads"
+             underscore_name="hs_threads"
+             description="The total number of hull shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 2 READ"
+             mdapi_group="EU Array/Hull Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="DS Threads Dispatched"
+             symbol_name="DsThreads"
+             underscore_name="ds_threads"
+             description="The total number of domain shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 3 READ"
+             mdapi_group="EU Array/Domain Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GS Threads Dispatched"
+             symbol_name="GsThreads"
+             underscore_name="gs_threads"
+             description="The total number of geometry shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 5 READ"
+             mdapi_group="EU Array/Geometry Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS Threads Dispatched"
+             symbol_name="PsThreads"
+             underscore_name="ps_threads"
+             description="The total number of fragment shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 6 READ"
+             mdapi_group="EU Array/Fragment Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="CS Threads Dispatched"
+             symbol_name="CsThreads"
+             underscore_name="cs_threads"
+             description="The total number of compute shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 4 READ"
+             mdapi_group="EU Array/Compute Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Busy"
+             symbol_name="GpuBusy"
+             underscore_name="gpu_busy"
+             description="The percentage of time in which the GPU has been processing GPU commands."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 0 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Active"
+             symbol_name="XveActive"
+             underscore_name="xve_active"
+             description="The percentage of time in which the Execution Units were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 7 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Stall"
+             symbol_name="XveStall"
+             underscore_name="xve_stall"
+             description="The percentage of time in which the Execution Units were stalled."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 8 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Thread Occupancy"
+             symbol_name="XveThreadOccupancy"
+             underscore_name="xve_thread_occupancy"
+             description="The percentage of time in which hardware threads occupied XVEs."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="8 A 9 READ FMUL $VectorEngineThreadsCount FDIV $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EM And FPU Pipes Active"
+             symbol_name="XveFpuEmActive"
+             underscore_name="xve_fpu_em_active"
+             description="The percentage of time in which XVE EM INT and FPU INT64 pipelines were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 10 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Pipes"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VS FPU Pipe Active"
+             symbol_name="VsFpuActive"
+             underscore_name="vs_fpu_active"
+             description="The percentage of time in which XVE FPU INT64 pipeline was actively processing a vertex shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 11 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Vertex Shader"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VS EM Pipe Active"
+             symbol_name="VsEmActive"
+             underscore_name="vs_em_active"
+             description="The percentage of time in which XVE EM INT pipeline was actively processing a vertex shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 12 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Vertex Shader"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VS Send Pipe Active"
+             symbol_name="VsSendActive"
+             underscore_name="vs_send_active"
+             description="The percentage of time in which XVE send pipeline was actively processing a vertex shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 13 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Vertex Shader"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS FPU Pipe Active"
+             symbol_name="PsFpuActive"
+             underscore_name="ps_fpu_active"
+             description="The percentage of time in which XVE FPU INT64 pipeline was actively processing a fragment shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 14 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Fragment Shader"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS EM Pipe Active"
+             symbol_name="PsEmActive"
+             underscore_name="ps_em_active"
+             description="The percentage of time in which XVE EM INT pipeline was actively processing a fragment shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 15 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Fragment Shader"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS Send Pipe Active"
+             symbol_name="PsSendActive"
+             underscore_name="ps_send_active"
+             description="The percentage of time in which XVE send pipeline was actively processing a fragment shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 16 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Fragment Shader"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Rasterized Pixels"
+             symbol_name="RasterizedPixels"
+             underscore_name="rasterized_pixels"
+             description="The total number of rasterized pixels."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 21 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Hi-Depth Test Fails"
+             symbol_name="HiDepthTestFails"
+             underscore_name="hi_depth_test_fails"
+             description="The total number of pixels dropped on early hierarchical depth test."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 22 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer/Hi-Depth Test"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Depth Test Fails"
+             symbol_name="EarlyDepthTestFails"
+             underscore_name="early_depth_test_fails"
+             description="The total number of pixels dropped on early depth test."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 23 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer/Early Depth Test"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Killed in FS"
+             symbol_name="SamplesKilledInPs"
+             underscore_name="samples_killed_in_ps"
+             description="The total number of samples or pixels dropped in fragment shaders."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 24 READ 4 UMUL"
+             mdapi_group="3D Pipe/Fragment Shader"
+             mdapi_usage_flags="Tier4 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Pixels Failing Tests"
+             symbol_name="PixelsFailingPostPsTests"
+             underscore_name="pixels_failing_post_ps_tests"
+             description="The total number of pixels dropped on post-FS alpha, stencil, or depth tests."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 25 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Written"
+             symbol_name="SamplesWritten"
+             underscore_name="samples_written"
+             description="The total number of samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 26 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Blended"
+             symbol_name="SamplesBlended"
+             underscore_name="samples_blended"
+             description="The total number of blended samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 27 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels"
+             symbol_name="SamplerTexels"
+             underscore_name="sampler_texels"
+             description="The total number of texels seen on input (with 2x2 accuracy) in all sampler units."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 28 READ 4 UMUL"
+             mdapi_group="Sampler/Sampler Input"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels Misses"
+             symbol_name="SamplerTexelMisses"
+             underscore_name="sampler_texel_misses"
+             description="The total number of texels lookups (with 2x2 accuracy) that missed L1 sampler cache."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 29 READ 4 UMUL"
+             mdapi_group="Sampler/Sampler Cache"
+             mdapi_usage_flags="Tier3 Batch Frame Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Bytes Read"
+             symbol_name="SlmReads"
+             underscore_name="slm_reads"
+             description="The total number of reads from shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks $XeCoreTotalCount UMUL"
+             units="messages"
+             semantic_type="event"
+             equation="A 30 READ"
+             mdapi_group="L3/Data Port/SLM"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Writes"
+             symbol_name="SlmWrites"
+             underscore_name="slm_writes"
+             description="The total number of writes into shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks $XeCoreTotalCount UMUL"
+             units="messages"
+             semantic_type="event"
+             equation="A 31 READ"
+             mdapi_group="L3/Data Port/SLM"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Memory Accesses"
+             symbol_name="ShaderMemoryAccesses"
+             underscore_name="shader_memory_accesses"
+             description="The total number of shader memory accesses to L3."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 32 READ"
+             mdapi_group="L3/Data Port"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Atomic Memory Accesses"
+             symbol_name="ShaderAtomics"
+             underscore_name="shader_atomics"
+             description="The total number of shader atomic memory accesses."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 34 READ"
+             mdapi_group="L3/Data Port/Atomics"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Barrier Messages"
+             symbol_name="ShaderBarriers"
+             underscore_name="shader_barriers"
+             description="The total number of shader barrier messages."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 35 READ"
+             mdapi_group="EU Array/Barrier"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Read Throughput"
+             symbol_name="GtiReadThroughput"
+             underscore_name="gti_read_throughput"
+             description="The total number of GPU memory bytes read from GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 512 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="32  A 36 READ UMUL"
+             mdapi_group="GTI"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Write Throughput"
+             symbol_name="GtiWriteThroughput"
+             underscore_name="gti_write_throughput"
+             description="The total number of GPU memory bytes written to GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 512 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="32  A 37 READ UMUL"
+             mdapi_group="GTI"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samplers Busy"
+             symbol_name="SamplersBusy"
+             underscore_name="samplers_busy"
+             description="The percentage of time in which samplers or L1 cache are not idle."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="C 7 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$XeCoreMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <counter name="Samplers Bottleneck"
+             symbol_name="SamplerBottleneck"
+             underscore_name="sampler_bottleneck"
+             description="The percentage of time in which samplers have been slowing down the pipe when processing XVE requests."
+             low_watermark="5"
+             high_watermark="15"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="C 6 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$XeCoreMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Overview Indicate System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009884" value="0x00000008" />
+        <register type="NOA" address="0x00009888" value="0x1E040000" />
+        <register type="NOA" address="0x00009888" value="0x20042800" />
+        <register type="NOA" address="0x00009888" value="0x04042000" />
+        <register type="NOA" address="0x00009888" value="0x06040000" />
+        <register type="NOA" address="0x00009888" value="0x14040800" />
+        <register type="NOA" address="0x00009888" value="0x16040037" />
+        <register type="NOA" address="0x00009888" value="0x02040000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x0201F000" />
+        <register type="NOA" address="0x00009888" value="0x06010000" />
+        <register type="NOA" address="0x00009888" value="0x54010000" />
+        <register type="NOA" address="0x00009888" value="0x56010000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x74010002" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0x00800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0x00800000" />
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000DC40" value="0x00000000" />
+        <register type="OA" address="0x0000DD40" value="0x00000000" />
+        <register type="OA" address="0x00002B2C" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00005004" />
+        <register type="FLEX" address="0x0000E558" value="0x00003008" />
+        <register type="FLEX" address="0x0000E658" value="0x00011010" />
+        <register type="FLEX" address="0x0000E758" value="0x00050012" />
+        <register type="FLEX" address="0x0000E45C" value="0x00052051" />
+    </register_config>
+  </set>
+
+  <set name="Metric set TestOa"
+       chipset="MTLGT2"
+       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"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter7"
+             symbol_name="Counter7"
+             underscore_name="counter7"
+             description="HW test counter 7. Factor: 0.6666"
+             data_type="uint64"
+             units="events"
+             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="TestCounter8"
+             symbol_name="Counter8"
+             underscore_name="counter8"
+             description="HW test counter 8. Should be equal to 1 in IOStream or in OAG query mode"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 7 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter9 - OAR enable"
+             symbol_name="Counter9"
+             underscore_name="counter9"
+             description="HW test counter 9. Should be equal to 1 in query."
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 6 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x46020000" />
+        <register type="NOA" address="0x00009888" value="0x46010000" />
+        <register type="NOA" address="0x00009888" value="0x0802000E" />
+        <register type="NOA" address="0x00009888" value="0x18020033" />
+        <register type="NOA" address="0x00009888" value="0x04020000" />
+        <register type="NOA" address="0x00009888" value="0x02020000" />
+        <register type="NOA" address="0x00009888" value="0x0801000C" />
+        <register type="NOA" address="0x00009888" value="0x16010DC0" />
+        <register type="NOA" address="0x00009888" value="0x04010000" />
+        <register type="NOA" address="0x00009888" value="0x02014000" />
+        <register type="NOA" address="0x00009888" value="0x06010000" />
+        <register type="NOA" address="0x00009888" value="0x54010200" />
+        <register type="NOA" address="0x00009888" value="0x56010000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x74010002" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0xF0800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0xF0800000" />
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000DC40" value="0x00000000" />
+        <register type="OA" address="0x0000DD40" value="0x00000000" />
+        <register type="OA" address="0x00002B2C" value="0x00000000" />
+        <register type="OA" address="0x0000D940" value="0x00000004" />
+        <register type="OA" address="0x0000D944" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D948" value="0x00000003" />
+        <register type="OA" address="0x0000D94C" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D950" value="0x00000007" />
+        <register type="OA" address="0x0000D954" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D958" value="0x00100002" />
+        <register type="OA" address="0x0000D95C" value="0x0000FFF7" />
+        <register type="OA" address="0x0000D960" value="0x00100002" />
+        <register type="OA" address="0x0000D964" value="0x0000FFCF" />
+        <register type="OA" address="0x0000D968" value="0x00100082" />
+        <register type="OA" address="0x0000D96C" value="0x0000FFEF" />
+        <register type="OA" address="0x0000D970" value="0x001000C2" />
+        <register type="OA" address="0x0000D974" value="0x0000FFE7" />
+        <register type="OA" address="0x0000D978" value="0x00100001" />
+        <register type="OA" address="0x0000D97C" value="0x0000FFE7" />
+    </register_config>
+  </set>
+
+</metrics>
diff --git a/lib/xe/oa-configs/oa-mtlgt3.xml b/lib/xe/oa-configs/oa-mtlgt3.xml
new file mode 100644
index 0000000000..f5f99eaee5
--- /dev/null
+++ b/lib/xe/oa-configs/oa-mtlgt3.xml
@@ -0,0 +1,803 @@
+<?xml version="1.0"?>
+<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"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="VS Threads Dispatched"
+             symbol_name="VsThreads"
+             underscore_name="vs_threads"
+             description="The total number of vertex shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 1 READ"
+             mdapi_group="EU Array/Vertex Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="HS Threads Dispatched"
+             symbol_name="HsThreads"
+             underscore_name="hs_threads"
+             description="The total number of hull shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 2 READ"
+             mdapi_group="EU Array/Hull Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="DS Threads Dispatched"
+             symbol_name="DsThreads"
+             underscore_name="ds_threads"
+             description="The total number of domain shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 3 READ"
+             mdapi_group="EU Array/Domain Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GS Threads Dispatched"
+             symbol_name="GsThreads"
+             underscore_name="gs_threads"
+             description="The total number of geometry shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 5 READ"
+             mdapi_group="EU Array/Geometry Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS Threads Dispatched"
+             symbol_name="PsThreads"
+             underscore_name="ps_threads"
+             description="The total number of fragment shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 6 READ"
+             mdapi_group="EU Array/Fragment Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="CS Threads Dispatched"
+             symbol_name="CsThreads"
+             underscore_name="cs_threads"
+             description="The total number of compute shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 4 READ"
+             mdapi_group="EU Array/Compute Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Busy"
+             symbol_name="GpuBusy"
+             underscore_name="gpu_busy"
+             description="The percentage of time in which the GPU has been processing GPU commands."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 0 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Active"
+             symbol_name="XveActive"
+             underscore_name="xve_active"
+             description="The percentage of time in which the Execution Units were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 7 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Stall"
+             symbol_name="XveStall"
+             underscore_name="xve_stall"
+             description="The percentage of time in which the Execution Units were stalled."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 8 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Thread Occupancy"
+             symbol_name="XveThreadOccupancy"
+             underscore_name="xve_thread_occupancy"
+             description="The percentage of time in which hardware threads occupied XVEs."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="8 A 9 READ FMUL $VectorEngineThreadsCount FDIV $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EM And FPU Pipes Active"
+             symbol_name="XveFpuEmActive"
+             underscore_name="xve_fpu_em_active"
+             description="The percentage of time in which XVE EM INT and FPU INT64 pipelines were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 10 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Pipes"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VS FPU Pipe Active"
+             symbol_name="VsFpuActive"
+             underscore_name="vs_fpu_active"
+             description="The percentage of time in which XVE FPU INT64 pipeline was actively processing a vertex shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 11 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Vertex Shader"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VS EM Pipe Active"
+             symbol_name="VsEmActive"
+             underscore_name="vs_em_active"
+             description="The percentage of time in which XVE EM INT pipeline was actively processing a vertex shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 12 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Vertex Shader"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VS Send Pipe Active"
+             symbol_name="VsSendActive"
+             underscore_name="vs_send_active"
+             description="The percentage of time in which XVE send pipeline was actively processing a vertex shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 13 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Vertex Shader"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS FPU Pipe Active"
+             symbol_name="PsFpuActive"
+             underscore_name="ps_fpu_active"
+             description="The percentage of time in which XVE FPU INT64 pipeline was actively processing a fragment shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 14 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Fragment Shader"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS EM Pipe Active"
+             symbol_name="PsEmActive"
+             underscore_name="ps_em_active"
+             description="The percentage of time in which XVE EM INT pipeline was actively processing a fragment shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 15 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Fragment Shader"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS Send Pipe Active"
+             symbol_name="PsSendActive"
+             underscore_name="ps_send_active"
+             description="The percentage of time in which XVE send pipeline was actively processing a fragment shader instruction."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 16 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Fragment Shader"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Rasterized Pixels"
+             symbol_name="RasterizedPixels"
+             underscore_name="rasterized_pixels"
+             description="The total number of rasterized pixels."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 21 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Hi-Depth Test Fails"
+             symbol_name="HiDepthTestFails"
+             underscore_name="hi_depth_test_fails"
+             description="The total number of pixels dropped on early hierarchical depth test."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 22 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer/Hi-Depth Test"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Depth Test Fails"
+             symbol_name="EarlyDepthTestFails"
+             underscore_name="early_depth_test_fails"
+             description="The total number of pixels dropped on early depth test."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 23 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer/Early Depth Test"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Killed in FS"
+             symbol_name="SamplesKilledInPs"
+             underscore_name="samples_killed_in_ps"
+             description="The total number of samples or pixels dropped in fragment shaders."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 24 READ 4 UMUL"
+             mdapi_group="3D Pipe/Fragment Shader"
+             mdapi_usage_flags="Tier4 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Pixels Failing Tests"
+             symbol_name="PixelsFailingPostPsTests"
+             underscore_name="pixels_failing_post_ps_tests"
+             description="The total number of pixels dropped on post-FS alpha, stencil, or depth tests."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 25 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Written"
+             symbol_name="SamplesWritten"
+             underscore_name="samples_written"
+             description="The total number of samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 26 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Blended"
+             symbol_name="SamplesBlended"
+             underscore_name="samples_blended"
+             description="The total number of blended samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 27 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels"
+             symbol_name="SamplerTexels"
+             underscore_name="sampler_texels"
+             description="The total number of texels seen on input (with 2x2 accuracy) in all sampler units."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 28 READ 4 UMUL"
+             mdapi_group="Sampler/Sampler Input"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels Misses"
+             symbol_name="SamplerTexelMisses"
+             underscore_name="sampler_texel_misses"
+             description="The total number of texels lookups (with 2x2 accuracy) that missed L1 sampler cache."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 29 READ 4 UMUL"
+             mdapi_group="Sampler/Sampler Cache"
+             mdapi_usage_flags="Tier3 Batch Frame Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Bytes Read"
+             symbol_name="SlmReads"
+             underscore_name="slm_reads"
+             description="The total number of reads from shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks $XeCoreTotalCount UMUL"
+             units="messages"
+             semantic_type="event"
+             equation="A 30 READ"
+             mdapi_group="L3/Data Port/SLM"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Writes"
+             symbol_name="SlmWrites"
+             underscore_name="slm_writes"
+             description="The total number of writes into shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks $XeCoreTotalCount UMUL"
+             units="messages"
+             semantic_type="event"
+             equation="A 31 READ"
+             mdapi_group="L3/Data Port/SLM"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Memory Accesses"
+             symbol_name="ShaderMemoryAccesses"
+             underscore_name="shader_memory_accesses"
+             description="The total number of shader memory accesses to L3."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 32 READ"
+             mdapi_group="L3/Data Port"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Atomic Memory Accesses"
+             symbol_name="ShaderAtomics"
+             underscore_name="shader_atomics"
+             description="The total number of shader atomic memory accesses."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 34 READ"
+             mdapi_group="L3/Data Port/Atomics"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Barrier Messages"
+             symbol_name="ShaderBarriers"
+             underscore_name="shader_barriers"
+             description="The total number of shader barrier messages."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 35 READ"
+             mdapi_group="EU Array/Barrier"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Read Throughput"
+             symbol_name="GtiReadThroughput"
+             underscore_name="gti_read_throughput"
+             description="The total number of GPU memory bytes read from GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 512 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="32  A 36 READ UMUL"
+             mdapi_group="GTI"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Write Throughput"
+             symbol_name="GtiWriteThroughput"
+             underscore_name="gti_write_throughput"
+             description="The total number of GPU memory bytes written to GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 512 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="32  A 37 READ UMUL"
+             mdapi_group="GTI"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samplers Busy"
+             symbol_name="SamplersBusy"
+             underscore_name="samplers_busy"
+             description="The percentage of time in which samplers or L1 cache are not idle."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="C 7 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$XeCoreMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <counter name="Samplers Bottleneck"
+             symbol_name="SamplerBottleneck"
+             underscore_name="sampler_bottleneck"
+             description="The percentage of time in which samplers have been slowing down the pipe when processing XVE requests."
+             low_watermark="5"
+             high_watermark="15"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="C 6 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$XeCoreMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Overview Indicate System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009884" value="0x0000000C" />
+        <register type="NOA" address="0x00009888" value="0x1E040000" />
+        <register type="NOA" address="0x00009888" value="0x20042800" />
+        <register type="NOA" address="0x00009888" value="0x02015000" />
+        <register type="NOA" address="0x00009888" value="0x02025000" />
+        <register type="NOA" address="0x00009888" value="0x02035000" />
+        <register type="NOA" address="0x00009888" value="0x04042000" />
+        <register type="NOA" address="0x00009888" value="0x06040000" />
+        <register type="NOA" address="0x00009888" value="0x14040800" />
+        <register type="NOA" address="0x00009888" value="0x16040037" />
+        <register type="NOA" address="0x00009888" value="0x02040000" />
+        <register type="NOA" address="0x00009888" value="0x02085000" />
+        <register type="NOA" address="0x00009884" value="0x00000004" />
+        <register type="NOA" address="0x00009888" value="0x02015000" />
+        <register type="NOA" address="0x00009888" value="0x02045000" />
+        <register type="NOA" address="0x00009888" value="0x000BC000" />
+        <register type="NOA" address="0x00009888" value="0x0209A000" />
+        <register type="NOA" address="0x00009888" value="0x020AA000" />
+        <register type="NOA" address="0x00009884" value="0x00000008" />
+        <register type="NOA" address="0x00009888" value="0x0202A000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x0002C000" />
+        <register type="NOA" address="0x00009888" value="0x02015000" />
+        <register type="NOA" address="0x00009888" value="0x0203A000" />
+        <register type="NOA" address="0x00009888" value="0x06010000" />
+        <register type="NOA" address="0x00009888" value="0x52010000" />
+        <register type="NOA" address="0x00009888" value="0x54010000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x72010002" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0x00800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0x00800000" />
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000DC40" value="0x00000000" />
+        <register type="OA" address="0x0000DD40" value="0x00000000" />
+        <register type="OA" address="0x00002B2C" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00005004" />
+        <register type="FLEX" address="0x0000E558" value="0x00003008" />
+        <register type="FLEX" address="0x0000E658" value="0x00011010" />
+        <register type="FLEX" address="0x0000E758" value="0x00050012" />
+        <register type="FLEX" address="0x0000E45C" value="0x00052051" />
+    </register_config>
+  </set>
+
+  <set name="Metric set TestOa"
+       chipset="MTLGT3"
+       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"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter7"
+             symbol_name="Counter7"
+             underscore_name="counter7"
+             description="HW test counter 7. Factor: 0.6666"
+             data_type="uint64"
+             units="events"
+             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="TestCounter8"
+             symbol_name="Counter8"
+             underscore_name="counter8"
+             description="HW test counter 8. Should be equal to 1 in IOStream or in OAG query mode"
+             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="TestCounter9 - OAR enable"
+             symbol_name="Counter9"
+             underscore_name="counter9"
+             description="HW test counter 9. Should be equal to 1 in query."
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 1 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x42020000" />
+        <register type="NOA" address="0x00009888" value="0x46010000" />
+        <register type="NOA" address="0x00009888" value="0x0602000E" />
+        <register type="NOA" address="0x00009888" value="0x0E020CC0" />
+        <register type="NOA" address="0x00009888" value="0x02020000" />
+        <register type="NOA" address="0x00009888" value="0x00020000" />
+        <register type="NOA" address="0x00009888" value="0x0801000C" />
+        <register type="NOA" address="0x00009888" value="0x12010037" />
+        <register type="NOA" address="0x00009888" value="0x04010000" />
+        <register type="NOA" address="0x00009888" value="0x02010001" />
+        <register type="NOA" address="0x00009888" value="0x06010000" />
+        <register type="NOA" address="0x00009888" value="0x5E010000" />
+        <register type="NOA" address="0x00009888" value="0x60010200" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x72010002" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0xF0800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0xF0800000" />
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000DC40" value="0x00000000" />
+        <register type="OA" address="0x0000DD40" value="0x00000000" />
+        <register type="OA" address="0x00002B2C" value="0x00000000" />
+        <register type="OA" address="0x0000D940" value="0x00000004" />
+        <register type="OA" address="0x0000D944" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D948" value="0x00000003" />
+        <register type="OA" address="0x0000D94C" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D950" value="0x00000007" />
+        <register type="OA" address="0x0000D954" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D958" value="0x00100002" />
+        <register type="OA" address="0x0000D95C" value="0x0000FFF7" />
+        <register type="OA" address="0x0000D960" value="0x00100002" />
+        <register type="OA" address="0x0000D964" value="0x0000FFCF" />
+        <register type="OA" address="0x0000D968" value="0x00100082" />
+        <register type="OA" address="0x0000D96C" value="0x0000FFEF" />
+        <register type="OA" address="0x0000D970" value="0x001000C2" />
+        <register type="OA" address="0x0000D974" value="0x0000FFE7" />
+        <register type="OA" address="0x0000D978" value="0x00100001" />
+        <register type="OA" address="0x0000D97C" value="0x0000FFE7" />
+    </register_config>
+  </set>
+
+</metrics>
diff --git a/lib/xe/oa-configs/oa-rkl.xml b/lib/xe/oa-configs/oa-rkl.xml
new file mode 100644
index 0000000000..9cb56903f6
--- /dev/null
+++ b/lib/xe/oa-configs/oa-rkl.xml
@@ -0,0 +1,824 @@
+<?xml version="1.0"?>
+<metrics version="1619078711" merge_md5="">
+  <set name="Render Metrics Basic set"
+       chipset="RKL"
+       symbol_name="RenderBasic"
+       underscore_name="render_basic"
+       mdapi_supported_apis="VK OGL OCL IO"
+       hw_config_guid="5b492c36-73f7-4827-83b3-c6863697ec51"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="VS Threads Dispatched"
+             symbol_name="VsThreads"
+             underscore_name="vs_threads"
+             description="The total number of vertex shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 1 READ"
+             mdapi_group="EU Array/Vertex Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="HS Threads Dispatched"
+             symbol_name="HsThreads"
+             underscore_name="hs_threads"
+             description="The total number of hull shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 2 READ"
+             mdapi_group="EU Array/Hull Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="DS Threads Dispatched"
+             symbol_name="DsThreads"
+             underscore_name="ds_threads"
+             description="The total number of domain shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 3 READ"
+             mdapi_group="EU Array/Domain Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GS Threads Dispatched"
+             symbol_name="GsThreads"
+             underscore_name="gs_threads"
+             description="The total number of geometry shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 5 READ"
+             mdapi_group="EU Array/Geometry Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS Threads Dispatched"
+             symbol_name="PsThreads"
+             underscore_name="ps_threads"
+             description="The total number of fragment shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 6 READ"
+             mdapi_group="EU Array/Fragment Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="CS Threads Dispatched"
+             symbol_name="CsThreads"
+             underscore_name="cs_threads"
+             description="The total number of compute shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 4 READ"
+             mdapi_group="EU Array/Compute Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO MEDIA"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Busy"
+             symbol_name="GpuBusy"
+             underscore_name="gpu_busy"
+             description="The percentage of time in which the GPU has been processing GPU commands."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 0 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Active"
+             symbol_name="EuActive"
+             underscore_name="eu_active"
+             description="The percentage of time in which the Execution Units were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 7 READ A 8 READ FADD A 9 READ FADD A 10 READ FADD $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Stall"
+             symbol_name="EuStall"
+             underscore_name="eu_stall"
+             description="The percentage of time in which the Execution Units were stalled."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 11 READ A 12 READ FADD A 13 READ FADD A 14 READ FADD $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Thread Occupancy"
+             symbol_name="EuThreadOccupancy"
+             underscore_name="eu_thread_occupancy"
+             description="The percentage of time in which hardware threads occupied EUs."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="8 A 15 READ A 16 READ FADD A 17 READ FADD A 18 READ FADD FMUL $EuThreadsCount FDIV $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler00 Busy"
+             symbol_name="Sampler00Busy"
+             underscore_name="sampler00_busy"
+             description="The percentage of time in which Slice0 Sampler0 has been processing EU requests."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="B 0 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Batch Frame Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="subslice"
+             />
+    <counter name="Sampler Slice0 Dualsubslice0 is bottleneck"
+             symbol_name="Sampler00Bottleneck"
+             underscore_name="sampler00_bottleneck"
+             description="The percentage of time when sampler slice0 dualsubslice0 is bottleneck"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="B 1 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="GPU/Sampler"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="subslice"
+             />
+    <counter name="Samplers Busy"
+             symbol_name="SamplersBusy"
+             underscore_name="samplers_busy"
+             description="The percentage of time in which samplers have been processing EU requests."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="$Sampler00Busy"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <counter name="Samplers Bottleneck"
+             symbol_name="SamplerBottleneck"
+             underscore_name="sampler_bottleneck"
+             description="The percentage of time in which samplers have been slowing down the pipe when processing EU requests."
+             low_watermark="5"
+             high_watermark="15"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="$Sampler00Bottleneck"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Overview Indicate System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <counter name="Rasterized Pixels"
+             symbol_name="RasterizedPixels"
+             underscore_name="rasterized_pixels"
+             description="The total number of rasterized pixels."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 21 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Hi-Depth Test Fails"
+             symbol_name="HiDepthTestFails"
+             underscore_name="hi_depth_test_fails"
+             description="The total number of pixels dropped on early hierarchical depth test."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 22 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer/Hi-Depth Test"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Depth Test Fails"
+             symbol_name="EarlyDepthTestFails"
+             underscore_name="early_depth_test_fails"
+             description="The total number of pixels dropped on early depth test."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 23 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer/Early Depth Test"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Killed in FS"
+             symbol_name="SamplesKilledInPs"
+             underscore_name="samples_killed_in_ps"
+             description="The total number of samples or pixels dropped in fragment shaders."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 24 READ 4 UMUL"
+             mdapi_group="3D Pipe/Fragment Shader"
+             mdapi_usage_flags="Tier4 Overview Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Pixels Failing Tests"
+             symbol_name="PixelsFailingPostPsTests"
+             underscore_name="pixels_failing_post_ps_tests"
+             description="The total number of pixels dropped on post-FS alpha, stencil, or depth tests."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 25 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Written"
+             symbol_name="SamplesWritten"
+             underscore_name="samples_written"
+             description="The total number of samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 26 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Blended"
+             symbol_name="SamplesBlended"
+             underscore_name="samples_blended"
+             description="The total number of blended samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 27 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels"
+             symbol_name="SamplerTexels"
+             underscore_name="sampler_texels"
+             description="The total number of texels seen on input (with 2x2 accuracy) in all sampler units."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 28 READ 4 UMUL"
+             mdapi_group="Sampler/Sampler Input"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels Misses"
+             symbol_name="SamplerTexelMisses"
+             underscore_name="sampler_texel_misses"
+             description="The total number of texels lookups (with 2x2 accuracy) that missed L1 sampler cache."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 29 READ 4 UMUL"
+             mdapi_group="Sampler/Sampler Cache"
+             mdapi_usage_flags="Tier3 Batch Frame Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Bytes Read"
+             symbol_name="SlmBytesRead"
+             underscore_name="slm_bytes_read"
+             description="The total number of GPU memory bytes read from shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 128 UMUL $EuSubslicesTotalCount UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="A 30 READ 64 UMUL"
+             mdapi_group="L3/Data Port/SLM"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Bytes Written"
+             symbol_name="SlmBytesWritten"
+             underscore_name="slm_bytes_written"
+             description="The total number of GPU memory bytes written into shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 128 UMUL $EuSubslicesTotalCount UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="A 31 READ 64 UMUL"
+             mdapi_group="L3/Data Port/SLM"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Memory Accesses"
+             symbol_name="ShaderMemoryAccesses"
+             underscore_name="shader_memory_accesses"
+             description="The total number of shader memory accesses to L3."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 32 READ"
+             mdapi_group="L3/Data Port"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Atomic Memory Accesses"
+             symbol_name="ShaderAtomics"
+             underscore_name="shader_atomics"
+             description="The total number of shader atomic memory accesses."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 34 READ"
+             mdapi_group="L3/Data Port/Atomics"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Shader Throughput"
+             symbol_name="L3ShaderThroughput"
+             underscore_name="l3_shader_throughput"
+             description="The total number of GPU memory bytes transferred between shaders and L3 caches w/o URB."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 64 UMUL $EuSubslicesTotalCount UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="$ShaderMemoryAccesses 64 UMUL"
+             mdapi_group="L3/Data Port"
+             mdapi_usage_flags="Tier2 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Barrier Messages"
+             symbol_name="ShaderBarriers"
+             underscore_name="shader_barriers"
+             description="The total number of shader barrier messages."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 35 READ"
+             mdapi_group="EU Array/Barrier"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Read Throughput"
+             symbol_name="GtiReadThroughput"
+             underscore_name="gti_read_throughput"
+             description="The total number of GPU memory bytes read from GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 64 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="64  C 5 READ C 4 READ UADD C 3 READ UADD C 2 READ UADD UMUL"
+             mdapi_group="GTI"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Write Throughput"
+             symbol_name="GtiWriteThroughput"
+             underscore_name="gti_write_throughput"
+             description="The total number of GPU memory bytes written to GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 64 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="64  C 1 READ C 0 READ UADD UMUL"
+             mdapi_group="GTI"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009840" value="0x00000000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x14150001" />
+        <register type="NOA" address="0x00009888" value="0x16150020" />
+        <register type="NOA" address="0x00009888" value="0x00124000" />
+        <register type="NOA" address="0x00009888" value="0x0E124000" />
+        <register type="NOA" address="0x00009888" value="0x10124000" />
+        <register type="NOA" address="0x00009888" value="0x12124000" />
+        <register type="NOA" address="0x00009888" value="0x10138000" />
+        <register type="NOA" address="0x00009888" value="0x1C130E00" />
+        <register type="NOA" address="0x00009888" value="0x00150050" />
+        <register type="NOA" address="0x00009888" value="0x06157000" />
+        <register type="NOA" address="0x00009888" value="0x08157151" />
+        <register type="NOA" address="0x00009888" value="0x10150000" />
+        <register type="NOA" address="0x00009888" value="0x18150000" />
+        <register type="NOA" address="0x00009888" value="0x1C150000" />
+        <register type="NOA" address="0x00009888" value="0x000B4000" />
+        <register type="NOA" address="0x00009888" value="0x0E0B4000" />
+        <register type="NOA" address="0x00009888" value="0x100B4000" />
+        <register type="NOA" address="0x00009888" value="0x120B4000" />
+        <register type="NOA" address="0x00009888" value="0x100C8000" />
+        <register type="NOA" address="0x00009888" value="0x1E0C000E" />
+        <register type="NOA" address="0x00009888" value="0x040D4000" />
+        <register type="NOA" address="0x00009888" value="0x0A0D8000" />
+        <register type="NOA" address="0x00009888" value="0x0C0DC000" />
+        <register type="NOA" address="0x00009888" value="0x000E8000" />
+        <register type="NOA" address="0x00009888" value="0x0E0E8000" />
+        <register type="NOA" address="0x00009888" value="0x100E8000" />
+        <register type="NOA" address="0x00009888" value="0x120E8000" />
+        <register type="NOA" address="0x00009888" value="0x000F4000" />
+        <register type="NOA" address="0x00009888" value="0x060F8000" />
+        <register type="NOA" address="0x00009888" value="0x080FC000" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x05151D47" />
+        <register type="NOA" address="0x00009888" value="0x09151536" />
+        <register type="NOA" address="0x00009888" value="0x05351C00" />
+        <register type="NOA" address="0x00009888" value="0x09351400" />
+        <register type="NOA" address="0x00009888" value="0x41104000" />
+        <register type="NOA" address="0x00009888" value="0x5B1050BB" />
+        <register type="NOA" address="0x00009888" value="0x5D102C01" />
+        <register type="NOA" address="0x00009888" value="0x4B112000" />
+        <register type="NOA" address="0x00009888" value="0x5F115000" />
+        <register type="NOA" address="0x00009888" value="0x61110001" />
+        <register type="NOA" address="0x00009888" value="0x01128000" />
+        <register type="NOA" address="0x00009888" value="0x0F128000" />
+        <register type="NOA" address="0x00009888" value="0x11128000" />
+        <register type="NOA" address="0x00009888" value="0x13128000" />
+        <register type="NOA" address="0x00009888" value="0x1F150137" />
+        <register type="NOA" address="0x00009888" value="0x01150000" />
+        <register type="NOA" address="0x00009888" value="0x0F168000" />
+        <register type="NOA" address="0x00009888" value="0x03164000" />
+        <register type="NOA" address="0x00009888" value="0x05164000" />
+        <register type="NOA" address="0x00009888" value="0x1D350137" />
+        <register type="NOA" address="0x00009888" value="0x03350147" />
+        <register type="NOA" address="0x00009888" value="0x07350136" />
+        <register type="NOA" address="0x00009888" value="0x01350000" />
+        <register type="NOA" address="0x00009888" value="0x0F364000" />
+        <register type="NOA" address="0x00009888" value="0x01368000" />
+        <register type="NOA" address="0x00009888" value="0x03368000" />
+        <register type="NOA" address="0x00009888" value="0x47101000" />
+        <register type="NOA" address="0x00009888" value="0x4D100000" />
+        <register type="NOA" address="0x00009888" value="0x4F100000" />
+        <register type="NOA" address="0x00009888" value="0x51100000" />
+        <register type="NOA" address="0x00009888" value="0x17100000" />
+        <register type="NOA" address="0x00009888" value="0x31100000" />
+        <register type="NOA" address="0x00009888" value="0x55101810" />
+        <register type="NOA" address="0x00009888" value="0x57100008" />
+        <register type="NOA" address="0x00009888" value="0x49101818" />
+        <register type="NOA" address="0x00009888" value="0x4B100818" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x65100002" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x42000001" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0x30800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0x00800000" />
+        <register type="OA" address="0x0000DC40" value="0x00030000" />
+        <register type="OA" address="0x0000D940" value="0x00000018" />
+        <register type="OA" address="0x0000D944" value="0x0000FFFC" />
+        <register type="OA" address="0x0000DC00" value="0x00000018" />
+        <register type="OA" address="0x0000DC04" value="0x0000FFFC" />
+        <register type="OA" address="0x0000D948" value="0x00000060" />
+        <register type="OA" address="0x0000D94C" value="0x0000FFF3" />
+        <register type="OA" address="0x0000DC08" value="0x00000060" />
+        <register type="OA" address="0x0000DC0C" value="0x0000FFF3" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00804704" />
+        <register type="FLEX" address="0x0000E558" value="0x00A04904" />
+        <register type="FLEX" address="0x0000E658" value="0x00805705" />
+        <register type="FLEX" address="0x0000E758" value="0x00A05905" />
+        <register type="FLEX" address="0x0000E45C" value="0x00808708" />
+        <register type="FLEX" address="0x0000E55C" value="0x00A08908" />
+        <register type="FLEX" address="0x0000E65C" value="0xFFFFFFFF" />
+    </register_config>
+  </set>
+
+  <set name="Metric set TestOa"
+       chipset="RKL"
+       symbol_name="TestOa"
+       underscore_name="test_oa"
+       mdapi_supported_apis="VK OGL OCL IO"
+       hw_config_guid="74dbc739-d871-41b5-be7b-fb547ac5bec9"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter7"
+             symbol_name="Counter7"
+             underscore_name="counter7"
+             description="HW test counter 7. Factor: 0.6666"
+             data_type="uint64"
+             units="events"
+             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="TestCounter8"
+             symbol_name="Counter8"
+             underscore_name="counter8"
+             description="HW test counter 8. Should be equal to 1 in IOStream or in OAG query mode"
+             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="TestCounter9 - OAR enable"
+             symbol_name="Counter9"
+             underscore_name="counter9"
+             description="HW test counter 9. Should be equal to 1 in query."
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 1 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009840" value="0x00000000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x040F0000" />
+        <register type="NOA" address="0x00009888" value="0x1E0B4000" />
+        <register type="NOA" address="0x00009888" value="0x1E0C0200" />
+        <register type="NOA" address="0x00009888" value="0x120D8000" />
+        <register type="NOA" address="0x00009888" value="0x1E0F0017" />
+        <register type="NOA" address="0x00009888" value="0x100F0000" />
+        <register type="NOA" address="0x00009888" value="0x0E0F0000" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x49110000" />
+        <register type="NOA" address="0x00009888" value="0x5D101400" />
+        <register type="NOA" address="0x00009888" value="0x1D1103A3" />
+        <register type="NOA" address="0x00009888" value="0x01110000" />
+        <register type="NOA" address="0x00009888" value="0x61111000" />
+        <register type="NOA" address="0x00009888" value="0x1F128000" />
+        <register type="NOA" address="0x00009888" value="0x17100000" />
+        <register type="NOA" address="0x00009888" value="0x55100110" />
+        <register type="NOA" address="0x00009888" value="0x57100000" />
+        <register type="NOA" address="0x00009888" value="0x31100000" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x65100002" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x42000001" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0xF0800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0xF0800000" />
+        <register type="OA" address="0x0000DC40" value="0x00FF0000" />
+        <register type="OA" address="0x0000D940" value="0x00000004" />
+        <register type="OA" address="0x0000D944" value="0x0000FFFF" />
+        <register type="OA" address="0x0000DC00" value="0x00000004" />
+        <register type="OA" address="0x0000DC04" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D948" value="0x00000003" />
+        <register type="OA" address="0x0000D94C" value="0x0000FFFF" />
+        <register type="OA" address="0x0000DC08" value="0x00000003" />
+        <register type="OA" address="0x0000DC0C" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D950" value="0x00000007" />
+        <register type="OA" address="0x0000D954" value="0x0000FFFF" />
+        <register type="OA" address="0x0000DC10" value="0x00000007" />
+        <register type="OA" address="0x0000DC14" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D958" value="0x00100002" />
+        <register type="OA" address="0x0000D95C" value="0x0000FFF7" />
+        <register type="OA" address="0x0000DC18" value="0x00100002" />
+        <register type="OA" address="0x0000DC1C" value="0x0000FFF7" />
+        <register type="OA" address="0x0000D960" value="0x00100002" />
+        <register type="OA" address="0x0000D964" value="0x0000FFCF" />
+        <register type="OA" address="0x0000DC20" value="0x00100002" />
+        <register type="OA" address="0x0000DC24" value="0x0000FFCF" />
+        <register type="OA" address="0x0000D968" value="0x00100082" />
+        <register type="OA" address="0x0000D96C" value="0x0000FFEF" />
+        <register type="OA" address="0x0000DC28" value="0x00100082" />
+        <register type="OA" address="0x0000DC2C" value="0x0000FFEF" />
+        <register type="OA" address="0x0000D970" value="0x001000C2" />
+        <register type="OA" address="0x0000D974" value="0x0000FFE7" />
+        <register type="OA" address="0x0000DC30" value="0x001000C2" />
+        <register type="OA" address="0x0000DC34" value="0x0000FFE7" />
+        <register type="OA" address="0x0000D978" value="0x00100001" />
+        <register type="OA" address="0x0000D97C" value="0x0000FFE7" />
+        <register type="OA" address="0x0000DC38" value="0x00100001" />
+        <register type="OA" address="0x0000DC3C" value="0x0000FFE7" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E65C" value="0xFFFFFFFF" />
+    </register_config>
+  </set>
+
+</metrics>
diff --git a/lib/xe/oa-configs/oa-tglgt1.xml b/lib/xe/oa-configs/oa-tglgt1.xml
new file mode 100644
index 0000000000..8c28ba3329
--- /dev/null
+++ b/lib/xe/oa-configs/oa-tglgt1.xml
@@ -0,0 +1,819 @@
+<?xml version="1.0"?>
+<metrics version="1619078711" merge_md5="">
+  <set name="Render Metrics Basic set"
+       chipset="TGLGT1"
+       symbol_name="RenderBasic"
+       underscore_name="render_basic"
+       mdapi_supported_apis="VK OGL OCL IO"
+       hw_config_guid="c17af13d-3953-432b-9bd1-81346b4c2092"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="VS Threads Dispatched"
+             symbol_name="VsThreads"
+             underscore_name="vs_threads"
+             description="The total number of vertex shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 1 READ"
+             mdapi_group="EU Array/Vertex Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="HS Threads Dispatched"
+             symbol_name="HsThreads"
+             underscore_name="hs_threads"
+             description="The total number of hull shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 2 READ"
+             mdapi_group="EU Array/Hull Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="DS Threads Dispatched"
+             symbol_name="DsThreads"
+             underscore_name="ds_threads"
+             description="The total number of domain shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 3 READ"
+             mdapi_group="EU Array/Domain Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GS Threads Dispatched"
+             symbol_name="GsThreads"
+             underscore_name="gs_threads"
+             description="The total number of geometry shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 5 READ"
+             mdapi_group="EU Array/Geometry Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS Threads Dispatched"
+             symbol_name="PsThreads"
+             underscore_name="ps_threads"
+             description="The total number of fragment shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 6 READ"
+             mdapi_group="EU Array/Fragment Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="CS Threads Dispatched"
+             symbol_name="CsThreads"
+             underscore_name="cs_threads"
+             description="The total number of compute shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 4 READ"
+             mdapi_group="EU Array/Compute Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO MEDIA"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Busy"
+             symbol_name="GpuBusy"
+             underscore_name="gpu_busy"
+             description="The percentage of time in which the GPU has been processing GPU commands."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 0 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Active"
+             symbol_name="EuActive"
+             underscore_name="eu_active"
+             description="The percentage of time in which the Execution Units were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 7 READ A 8 READ FADD A 9 READ FADD A 10 READ FADD $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Stall"
+             symbol_name="EuStall"
+             underscore_name="eu_stall"
+             description="The percentage of time in which the Execution Units were stalled."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 11 READ A 12 READ FADD A 13 READ FADD A 14 READ FADD $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Thread Occupancy"
+             symbol_name="EuThreadOccupancy"
+             underscore_name="eu_thread_occupancy"
+             description="The percentage of time in which hardware threads occupied EUs."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="8 A 15 READ A 16 READ FADD A 17 READ FADD A 18 READ FADD FMUL $EuThreadsCount FDIV $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler00 Busy"
+             symbol_name="Sampler00Busy"
+             underscore_name="sampler00_busy"
+             description="The percentage of time in which Slice0 Sampler0 has been processing EU requests."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="B 0 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Batch Frame Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="subslice"
+             />
+    <counter name="Sampler Slice0 Dualsubslice0 is bottleneck"
+             symbol_name="Sampler00Bottleneck"
+             underscore_name="sampler00_bottleneck"
+             description="The percentage of time when sampler slice0 dualsubslice0 is bottleneck"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="B 1 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="GPU/Sampler"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="subslice"
+             />
+    <counter name="Samplers Busy"
+             symbol_name="SamplersBusy"
+             underscore_name="samplers_busy"
+             description="The percentage of time in which samplers have been processing EU requests."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="$Sampler00Busy"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <counter name="Samplers Bottleneck"
+             symbol_name="SamplerBottleneck"
+             underscore_name="sampler_bottleneck"
+             description="The percentage of time in which samplers have been slowing down the pipe when processing EU requests."
+             low_watermark="5"
+             high_watermark="15"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="$Sampler00Bottleneck"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Overview Indicate System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <counter name="Rasterized Pixels"
+             symbol_name="RasterizedPixels"
+             underscore_name="rasterized_pixels"
+             description="The total number of rasterized pixels."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 21 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Hi-Depth Test Fails"
+             symbol_name="HiDepthTestFails"
+             underscore_name="hi_depth_test_fails"
+             description="The total number of pixels dropped on early hierarchical depth test."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 22 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer/Hi-Depth Test"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Depth Test Fails"
+             symbol_name="EarlyDepthTestFails"
+             underscore_name="early_depth_test_fails"
+             description="The total number of pixels dropped on early depth test."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 23 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer/Early Depth Test"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Killed in FS"
+             symbol_name="SamplesKilledInPs"
+             underscore_name="samples_killed_in_ps"
+             description="The total number of samples or pixels dropped in fragment shaders."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 24 READ 4 UMUL"
+             mdapi_group="3D Pipe/Fragment Shader"
+             mdapi_usage_flags="Tier4 Overview Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Pixels Failing Tests"
+             symbol_name="PixelsFailingPostPsTests"
+             underscore_name="pixels_failing_post_ps_tests"
+             description="The total number of pixels dropped on post-FS alpha, stencil, or depth tests."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 25 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Written"
+             symbol_name="SamplesWritten"
+             underscore_name="samples_written"
+             description="The total number of samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 26 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Blended"
+             symbol_name="SamplesBlended"
+             underscore_name="samples_blended"
+             description="The total number of blended samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 27 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels"
+             symbol_name="SamplerTexels"
+             underscore_name="sampler_texels"
+             description="The total number of texels seen on input (with 2x2 accuracy) in all sampler units."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 28 READ 4 UMUL"
+             mdapi_group="Sampler/Sampler Input"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels Misses"
+             symbol_name="SamplerTexelMisses"
+             underscore_name="sampler_texel_misses"
+             description="The total number of texels lookups (with 2x2 accuracy) that missed L1 sampler cache."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 29 READ 4 UMUL"
+             mdapi_group="Sampler/Sampler Cache"
+             mdapi_usage_flags="Tier3 Batch Frame Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Bytes Read"
+             symbol_name="SlmBytesRead"
+             underscore_name="slm_bytes_read"
+             description="The total number of GPU memory bytes read from shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 128 UMUL $EuSubslicesTotalCount UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="A 30 READ 64 UMUL"
+             mdapi_group="L3/Data Port/SLM"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Bytes Written"
+             symbol_name="SlmBytesWritten"
+             underscore_name="slm_bytes_written"
+             description="The total number of GPU memory bytes written into shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 128 UMUL $EuSubslicesTotalCount UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="A 31 READ 64 UMUL"
+             mdapi_group="L3/Data Port/SLM"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Memory Accesses"
+             symbol_name="ShaderMemoryAccesses"
+             underscore_name="shader_memory_accesses"
+             description="The total number of shader memory accesses to L3."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 32 READ"
+             mdapi_group="L3/Data Port"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Atomic Memory Accesses"
+             symbol_name="ShaderAtomics"
+             underscore_name="shader_atomics"
+             description="The total number of shader atomic memory accesses."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 34 READ"
+             mdapi_group="L3/Data Port/Atomics"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Shader Throughput"
+             symbol_name="L3ShaderThroughput"
+             underscore_name="l3_shader_throughput"
+             description="The total number of GPU memory bytes transferred between shaders and L3 caches w/o URB."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 64 UMUL $EuSubslicesTotalCount UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="$ShaderMemoryAccesses 64 UMUL"
+             mdapi_group="L3/Data Port"
+             mdapi_usage_flags="Tier2 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Barrier Messages"
+             symbol_name="ShaderBarriers"
+             underscore_name="shader_barriers"
+             description="The total number of shader barrier messages."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 35 READ"
+             mdapi_group="EU Array/Barrier"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Read Throughput"
+             symbol_name="GtiReadThroughput"
+             underscore_name="gti_read_throughput"
+             description="The total number of GPU memory bytes read from GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 64 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="64  C 5 READ C 4 READ UADD C 3 READ UADD C 2 READ UADD UMUL"
+             mdapi_group="GTI"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Write Throughput"
+             symbol_name="GtiWriteThroughput"
+             underscore_name="gti_write_throughput"
+             description="The total number of GPU memory bytes written to GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 64 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="64  C 1 READ C 0 READ UADD UMUL"
+             mdapi_group="GTI"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009840" value="0x00000000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x14150001" />
+        <register type="NOA" address="0x00009888" value="0x16150020" />
+        <register type="NOA" address="0x00009888" value="0x00124000" />
+        <register type="NOA" address="0x00009888" value="0x0E124000" />
+        <register type="NOA" address="0x00009888" value="0x10124000" />
+        <register type="NOA" address="0x00009888" value="0x12124000" />
+        <register type="NOA" address="0x00009888" value="0x10138000" />
+        <register type="NOA" address="0x00009888" value="0x1C130E00" />
+        <register type="NOA" address="0x00009888" value="0x00150050" />
+        <register type="NOA" address="0x00009888" value="0x06157000" />
+        <register type="NOA" address="0x00009888" value="0x08157151" />
+        <register type="NOA" address="0x00009888" value="0x10150000" />
+        <register type="NOA" address="0x00009888" value="0x18150000" />
+        <register type="NOA" address="0x00009888" value="0x1C150000" />
+        <register type="NOA" address="0x00009888" value="0x0000C000" />
+        <register type="NOA" address="0x00009888" value="0x0E00C000" />
+        <register type="NOA" address="0x00009888" value="0x1000C000" />
+        <register type="NOA" address="0x00009888" value="0x1200C000" />
+        <register type="NOA" address="0x00009888" value="0x10058000" />
+        <register type="NOA" address="0x00009888" value="0x1C058000" />
+        <register type="NOA" address="0x00009888" value="0x22050030" />
+        <register type="NOA" address="0x00009888" value="0x040A4000" />
+        <register type="NOA" address="0x00009888" value="0x0A0A8000" />
+        <register type="NOA" address="0x00009888" value="0x0C0AC000" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x05151D47" />
+        <register type="NOA" address="0x00009888" value="0x09151536" />
+        <register type="NOA" address="0x00009888" value="0x05351C00" />
+        <register type="NOA" address="0x00009888" value="0x09351400" />
+        <register type="NOA" address="0x00009888" value="0x41104000" />
+        <register type="NOA" address="0x00009888" value="0x5B1050BB" />
+        <register type="NOA" address="0x00009888" value="0x5D102C01" />
+        <register type="NOA" address="0x00009888" value="0x11148000" />
+        <register type="NOA" address="0x00009888" value="0x1B14E000" />
+        <register type="NOA" address="0x00009888" value="0x4B112000" />
+        <register type="NOA" address="0x00009888" value="0x5F115000" />
+        <register type="NOA" address="0x00009888" value="0x61110001" />
+        <register type="NOA" address="0x00009888" value="0x01128000" />
+        <register type="NOA" address="0x00009888" value="0x0F128000" />
+        <register type="NOA" address="0x00009888" value="0x11128000" />
+        <register type="NOA" address="0x00009888" value="0x13128000" />
+        <register type="NOA" address="0x00009888" value="0x1F150137" />
+        <register type="NOA" address="0x00009888" value="0x01150000" />
+        <register type="NOA" address="0x00009888" value="0x0F168000" />
+        <register type="NOA" address="0x00009888" value="0x03164000" />
+        <register type="NOA" address="0x00009888" value="0x05164000" />
+        <register type="NOA" address="0x00009888" value="0x1D350137" />
+        <register type="NOA" address="0x00009888" value="0x03350147" />
+        <register type="NOA" address="0x00009888" value="0x07350136" />
+        <register type="NOA" address="0x00009888" value="0x01350000" />
+        <register type="NOA" address="0x00009888" value="0x0F364000" />
+        <register type="NOA" address="0x00009888" value="0x01368000" />
+        <register type="NOA" address="0x00009888" value="0x03368000" />
+        <register type="NOA" address="0x00009888" value="0x47101000" />
+        <register type="NOA" address="0x00009888" value="0x4D100000" />
+        <register type="NOA" address="0x00009888" value="0x4F100000" />
+        <register type="NOA" address="0x00009888" value="0x51100000" />
+        <register type="NOA" address="0x00009888" value="0x17100000" />
+        <register type="NOA" address="0x00009888" value="0x31100000" />
+        <register type="NOA" address="0x00009888" value="0x55101710" />
+        <register type="NOA" address="0x00009888" value="0x57100007" />
+        <register type="NOA" address="0x00009888" value="0x49101717" />
+        <register type="NOA" address="0x00009888" value="0x4B100717" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x65100002" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x42000001" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0x30800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0x00800000" />
+        <register type="OA" address="0x0000DC40" value="0x00030000" />
+        <register type="OA" address="0x0000D940" value="0x00000018" />
+        <register type="OA" address="0x0000D944" value="0x0000FFFC" />
+        <register type="OA" address="0x0000DC00" value="0x00000018" />
+        <register type="OA" address="0x0000DC04" value="0x0000FFFC" />
+        <register type="OA" address="0x0000D948" value="0x00000060" />
+        <register type="OA" address="0x0000D94C" value="0x0000FFF3" />
+        <register type="OA" address="0x0000DC08" value="0x00000060" />
+        <register type="OA" address="0x0000DC0C" value="0x0000FFF3" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00804704" />
+        <register type="FLEX" address="0x0000E558" value="0x00A04904" />
+        <register type="FLEX" address="0x0000E658" value="0x00805705" />
+        <register type="FLEX" address="0x0000E758" value="0x00A05905" />
+        <register type="FLEX" address="0x0000E45C" value="0x00808708" />
+        <register type="FLEX" address="0x0000E55C" value="0x00A08908" />
+        <register type="FLEX" address="0x0000E65C" value="0xFFFFFFFF" />
+    </register_config>
+  </set>
+
+  <set name="Metric set TestOa"
+       chipset="TGLGT1"
+       symbol_name="TestOa"
+       underscore_name="test_oa"
+       mdapi_supported_apis="VK OGL OCL IO"
+       hw_config_guid="6f27aaed-4f08-4e0f-95a9-231d9b4fa111"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter7"
+             symbol_name="Counter7"
+             underscore_name="counter7"
+             description="HW test counter 7. Factor: 0.6666"
+             data_type="uint64"
+             units="events"
+             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="TestCounter8"
+             symbol_name="Counter8"
+             underscore_name="counter8"
+             description="HW test counter 8. Should be equal to 1 in IOStream or in OAG query mode"
+             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="TestCounter9 - OAR enable"
+             symbol_name="Counter9"
+             underscore_name="counter9"
+             description="HW test counter 9. Should be equal to 1 in query."
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 1 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009840" value="0x00000000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x040F0000" />
+        <register type="NOA" address="0x00009888" value="0x1E0F0017" />
+        <register type="NOA" address="0x00009888" value="0x200F0000" />
+        <register type="NOA" address="0x00009888" value="0x36000001" />
+        <register type="NOA" address="0x00009888" value="0x1A012000" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x49110000" />
+        <register type="NOA" address="0x00009888" value="0x5D101400" />
+        <register type="NOA" address="0x00009888" value="0x1D140020" />
+        <register type="NOA" address="0x00009888" value="0x1D1103A3" />
+        <register type="NOA" address="0x00009888" value="0x01110000" />
+        <register type="NOA" address="0x00009888" value="0x61111000" />
+        <register type="NOA" address="0x00009888" value="0x1F128000" />
+        <register type="NOA" address="0x00009888" value="0x17100000" />
+        <register type="NOA" address="0x00009888" value="0x55100210" />
+        <register type="NOA" address="0x00009888" value="0x57100000" />
+        <register type="NOA" address="0x00009888" value="0x31100000" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x65100002" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x42000001" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0xF0800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0xF0800000" />
+        <register type="OA" address="0x0000DC40" value="0x00FF0000" />
+        <register type="OA" address="0x0000D940" value="0x00000004" />
+        <register type="OA" address="0x0000D944" value="0x0000FFFF" />
+        <register type="OA" address="0x0000DC00" value="0x00000004" />
+        <register type="OA" address="0x0000DC04" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D948" value="0x00000003" />
+        <register type="OA" address="0x0000D94C" value="0x0000FFFF" />
+        <register type="OA" address="0x0000DC08" value="0x00000003" />
+        <register type="OA" address="0x0000DC0C" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D950" value="0x00000007" />
+        <register type="OA" address="0x0000D954" value="0x0000FFFF" />
+        <register type="OA" address="0x0000DC10" value="0x00000007" />
+        <register type="OA" address="0x0000DC14" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D958" value="0x00100002" />
+        <register type="OA" address="0x0000D95C" value="0x0000FFF7" />
+        <register type="OA" address="0x0000DC18" value="0x00100002" />
+        <register type="OA" address="0x0000DC1C" value="0x0000FFF7" />
+        <register type="OA" address="0x0000D960" value="0x00100002" />
+        <register type="OA" address="0x0000D964" value="0x0000FFCF" />
+        <register type="OA" address="0x0000DC20" value="0x00100002" />
+        <register type="OA" address="0x0000DC24" value="0x0000FFCF" />
+        <register type="OA" address="0x0000D968" value="0x00100082" />
+        <register type="OA" address="0x0000D96C" value="0x0000FFEF" />
+        <register type="OA" address="0x0000DC28" value="0x00100082" />
+        <register type="OA" address="0x0000DC2C" value="0x0000FFEF" />
+        <register type="OA" address="0x0000D970" value="0x001000C2" />
+        <register type="OA" address="0x0000D974" value="0x0000FFE7" />
+        <register type="OA" address="0x0000DC30" value="0x001000C2" />
+        <register type="OA" address="0x0000DC34" value="0x0000FFE7" />
+        <register type="OA" address="0x0000D978" value="0x00100001" />
+        <register type="OA" address="0x0000D97C" value="0x0000FFE7" />
+        <register type="OA" address="0x0000DC38" value="0x00100001" />
+        <register type="OA" address="0x0000DC3C" value="0x0000FFE7" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E65C" value="0xFFFFFFFF" />
+    </register_config>
+  </set>
+
+</metrics>
diff --git a/lib/xe/oa-configs/oa-tglgt2.xml b/lib/xe/oa-configs/oa-tglgt2.xml
new file mode 100644
index 0000000000..7387dc2e39
--- /dev/null
+++ b/lib/xe/oa-configs/oa-tglgt2.xml
@@ -0,0 +1,818 @@
+<?xml version="1.0"?>
+<metrics version="1619078711" merge_md5="">
+  <set name="Render Metrics Basic set"
+       chipset="TGLGT2"
+       symbol_name="RenderBasic"
+       underscore_name="render_basic"
+       mdapi_supported_apis="VK OGL OCL IO"
+       hw_config_guid="0fc397c0-4833-492c-9ccd-4929d574d5b8"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="VS Threads Dispatched"
+             symbol_name="VsThreads"
+             underscore_name="vs_threads"
+             description="The total number of vertex shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 1 READ"
+             mdapi_group="EU Array/Vertex Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="HS Threads Dispatched"
+             symbol_name="HsThreads"
+             underscore_name="hs_threads"
+             description="The total number of hull shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 2 READ"
+             mdapi_group="EU Array/Hull Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="DS Threads Dispatched"
+             symbol_name="DsThreads"
+             underscore_name="ds_threads"
+             description="The total number of domain shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 3 READ"
+             mdapi_group="EU Array/Domain Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GS Threads Dispatched"
+             symbol_name="GsThreads"
+             underscore_name="gs_threads"
+             description="The total number of geometry shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 5 READ"
+             mdapi_group="EU Array/Geometry Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="FS Threads Dispatched"
+             symbol_name="PsThreads"
+             underscore_name="ps_threads"
+             description="The total number of fragment shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 6 READ"
+             mdapi_group="EU Array/Fragment Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="CS Threads Dispatched"
+             symbol_name="CsThreads"
+             underscore_name="cs_threads"
+             description="The total number of compute shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 4 READ"
+             mdapi_group="EU Array/Compute Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO MEDIA"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Busy"
+             symbol_name="GpuBusy"
+             underscore_name="gpu_busy"
+             description="The percentage of time in which the GPU has been processing GPU commands."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 0 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Active"
+             symbol_name="EuActive"
+             underscore_name="eu_active"
+             description="The percentage of time in which the Execution Units were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 7 READ A 8 READ FADD A 9 READ FADD A 10 READ FADD $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Stall"
+             symbol_name="EuStall"
+             underscore_name="eu_stall"
+             description="The percentage of time in which the Execution Units were stalled."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 11 READ A 12 READ FADD A 13 READ FADD A 14 READ FADD $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Thread Occupancy"
+             symbol_name="EuThreadOccupancy"
+             underscore_name="eu_thread_occupancy"
+             description="The percentage of time in which hardware threads occupied EUs."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="8 A 15 READ A 16 READ FADD A 17 READ FADD A 18 READ FADD FMUL $EuThreadsCount FDIV $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler00 Busy"
+             symbol_name="Sampler00Busy"
+             underscore_name="sampler00_busy"
+             description="The percentage of time in which Slice0 Sampler0 has been processing EU requests."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="B 0 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Batch Frame Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="subslice"
+             />
+    <counter name="Sampler Slice0 Dualsubslice0 is bottleneck"
+             symbol_name="Sampler00Bottleneck"
+             underscore_name="sampler00_bottleneck"
+             description="The percentage of time when sampler slice0 dualsubslice0 is bottleneck"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="B 1 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="GPU/Sampler"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="subslice"
+             />
+    <counter name="Samplers Busy"
+             symbol_name="SamplersBusy"
+             underscore_name="samplers_busy"
+             description="The percentage of time in which samplers have been processing EU requests."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="$Sampler00Busy"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <counter name="Samplers Bottleneck"
+             symbol_name="SamplerBottleneck"
+             underscore_name="sampler_bottleneck"
+             description="The percentage of time in which samplers have been slowing down the pipe when processing EU requests."
+             low_watermark="5"
+             high_watermark="15"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="$Sampler00Bottleneck"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Tier3 Overview Indicate System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="slice"
+             />
+    <counter name="Rasterized Pixels"
+             symbol_name="RasterizedPixels"
+             underscore_name="rasterized_pixels"
+             description="The total number of rasterized pixels."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 21 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Hi-Depth Test Fails"
+             symbol_name="HiDepthTestFails"
+             underscore_name="hi_depth_test_fails"
+             description="The total number of pixels dropped on early hierarchical depth test."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 22 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer/Hi-Depth Test"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Depth Test Fails"
+             symbol_name="EarlyDepthTestFails"
+             underscore_name="early_depth_test_fails"
+             description="The total number of pixels dropped on early depth test."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 23 READ 4 UMUL"
+             mdapi_group="3D Pipe/Rasterizer/Early Depth Test"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Killed in FS"
+             symbol_name="SamplesKilledInPs"
+             underscore_name="samples_killed_in_ps"
+             description="The total number of samples or pixels dropped in fragment shaders."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 24 READ 4 UMUL"
+             mdapi_group="3D Pipe/Fragment Shader"
+             mdapi_usage_flags="Tier4 Overview Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Pixels Failing Tests"
+             symbol_name="PixelsFailingPostPsTests"
+             underscore_name="pixels_failing_post_ps_tests"
+             description="The total number of pixels dropped on post-FS alpha, stencil, or depth tests."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 25 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Written"
+             symbol_name="SamplesWritten"
+             underscore_name="samples_written"
+             description="The total number of samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 26 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Samples Blended"
+             symbol_name="SamplesBlended"
+             underscore_name="samples_blended"
+             description="The total number of blended samples or pixels written to all render targets."
+             data_type="uint64"
+             units="pixels"
+             semantic_type="event"
+             equation="A 27 READ 4 UMUL"
+             mdapi_group="3D Pipe/Output Merger"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis="VK OGL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels"
+             symbol_name="SamplerTexels"
+             underscore_name="sampler_texels"
+             description="The total number of texels seen on input (with 2x2 accuracy) in all sampler units."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 28 READ 4 UMUL"
+             mdapi_group="Sampler/Sampler Input"
+             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texels Misses"
+             symbol_name="SamplerTexelMisses"
+             underscore_name="sampler_texel_misses"
+             description="The total number of texels lookups (with 2x2 accuracy) that missed L1 sampler cache."
+             data_type="uint64"
+             units="texels"
+             semantic_type="event"
+             equation="A 29 READ 4 UMUL"
+             mdapi_group="Sampler/Sampler Cache"
+             mdapi_usage_flags="Tier3 Batch Frame Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Bytes Read"
+             symbol_name="SlmBytesRead"
+             underscore_name="slm_bytes_read"
+             description="The total number of GPU memory bytes read from shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 128 UMUL $EuSubslicesTotalCount UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="A 30 READ 64 UMUL"
+             mdapi_group="L3/Data Port/SLM"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Bytes Written"
+             symbol_name="SlmBytesWritten"
+             underscore_name="slm_bytes_written"
+             description="The total number of GPU memory bytes written into shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 128 UMUL $EuSubslicesTotalCount UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="A 31 READ 64 UMUL"
+             mdapi_group="L3/Data Port/SLM"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Memory Accesses"
+             symbol_name="ShaderMemoryAccesses"
+             underscore_name="shader_memory_accesses"
+             description="The total number of shader memory accesses to L3."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 32 READ"
+             mdapi_group="L3/Data Port"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Atomic Memory Accesses"
+             symbol_name="ShaderAtomics"
+             underscore_name="shader_atomics"
+             description="The total number of shader atomic memory accesses."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 34 READ"
+             mdapi_group="L3/Data Port/Atomics"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Shader Throughput"
+             symbol_name="L3ShaderThroughput"
+             underscore_name="l3_shader_throughput"
+             description="The total number of GPU memory bytes transferred between shaders and L3 caches w/o URB."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 64 UMUL $EuSubslicesTotalCount UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="$ShaderMemoryAccesses 64 UMUL"
+             mdapi_group="L3/Data Port"
+             mdapi_usage_flags="Tier2 Frame Batch Draw"
+             mdapi_supported_apis="VK OGL OCL IO"
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Barrier Messages"
+             symbol_name="ShaderBarriers"
+             underscore_name="shader_barriers"
+             description="The total number of shader barrier messages."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 35 READ"
+             mdapi_group="EU Array/Barrier"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Read Throughput"
+             symbol_name="GtiReadThroughput"
+             underscore_name="gti_read_throughput"
+             description="The total number of GPU memory bytes read from GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 64 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="64  C 5 READ C 4 READ UADD C 3 READ UADD C 2 READ UADD UMUL"
+             mdapi_group="GTI"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Write Throughput"
+             symbol_name="GtiWriteThroughput"
+             underscore_name="gti_write_throughput"
+             description="The total number of GPU memory bytes written to GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 64 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="64  C 1 READ C 0 READ UADD UMUL"
+             mdapi_group="GTI"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009840" value="0x00000000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x14150001" />
+        <register type="NOA" address="0x00009888" value="0x16150020" />
+        <register type="NOA" address="0x00009888" value="0x00124000" />
+        <register type="NOA" address="0x00009888" value="0x0E124000" />
+        <register type="NOA" address="0x00009888" value="0x10124000" />
+        <register type="NOA" address="0x00009888" value="0x12124000" />
+        <register type="NOA" address="0x00009888" value="0x10138000" />
+        <register type="NOA" address="0x00009888" value="0x1C130E00" />
+        <register type="NOA" address="0x00009888" value="0x00150050" />
+        <register type="NOA" address="0x00009888" value="0x06157000" />
+        <register type="NOA" address="0x00009888" value="0x08157151" />
+        <register type="NOA" address="0x00009888" value="0x10150000" />
+        <register type="NOA" address="0x00009888" value="0x18150000" />
+        <register type="NOA" address="0x00009888" value="0x1C150000" />
+        <register type="NOA" address="0x00009888" value="0x18004000" />
+        <register type="NOA" address="0x00009888" value="0x36000490" />
+        <register type="NOA" address="0x00009888" value="0x1C058000" />
+        <register type="NOA" address="0x00009888" value="0x2405002A" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x05151D47" />
+        <register type="NOA" address="0x00009888" value="0x09151536" />
+        <register type="NOA" address="0x00009888" value="0x05351C00" />
+        <register type="NOA" address="0x00009888" value="0x09351400" />
+        <register type="NOA" address="0x00009888" value="0x41104000" />
+        <register type="NOA" address="0x00009888" value="0x5B1050BB" />
+        <register type="NOA" address="0x00009888" value="0x5D102C01" />
+        <register type="NOA" address="0x00009888" value="0x11148000" />
+        <register type="NOA" address="0x00009888" value="0x1B14E000" />
+        <register type="NOA" address="0x00009888" value="0x4B112000" />
+        <register type="NOA" address="0x00009888" value="0x5F115000" />
+        <register type="NOA" address="0x00009888" value="0x61110001" />
+        <register type="NOA" address="0x00009888" value="0x01128000" />
+        <register type="NOA" address="0x00009888" value="0x0F128000" />
+        <register type="NOA" address="0x00009888" value="0x11128000" />
+        <register type="NOA" address="0x00009888" value="0x13128000" />
+        <register type="NOA" address="0x00009888" value="0x1F150137" />
+        <register type="NOA" address="0x00009888" value="0x01150000" />
+        <register type="NOA" address="0x00009888" value="0x0F168000" />
+        <register type="NOA" address="0x00009888" value="0x03164000" />
+        <register type="NOA" address="0x00009888" value="0x05164000" />
+        <register type="NOA" address="0x00009888" value="0x1D350137" />
+        <register type="NOA" address="0x00009888" value="0x03350147" />
+        <register type="NOA" address="0x00009888" value="0x07350136" />
+        <register type="NOA" address="0x00009888" value="0x01350000" />
+        <register type="NOA" address="0x00009888" value="0x0F364000" />
+        <register type="NOA" address="0x00009888" value="0x01368000" />
+        <register type="NOA" address="0x00009888" value="0x03368000" />
+        <register type="NOA" address="0x00009888" value="0x47103000" />
+        <register type="NOA" address="0x00009888" value="0x4D100000" />
+        <register type="NOA" address="0x00009888" value="0x4F100000" />
+        <register type="NOA" address="0x00009888" value="0x51100000" />
+        <register type="NOA" address="0x00009888" value="0x17100000" />
+        <register type="NOA" address="0x00009888" value="0x31100000" />
+        <register type="NOA" address="0x00009888" value="0x55103130" />
+        <register type="NOA" address="0x00009888" value="0x57100001" />
+        <register type="NOA" address="0x00009888" value="0x49103131" />
+        <register type="NOA" address="0x00009888" value="0x4B100131" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x65100002" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x42000001" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0x30800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0x00800000" />
+        <register type="OA" address="0x0000DC40" value="0x00030000" />
+        <register type="OA" address="0x0000D940" value="0x00000018" />
+        <register type="OA" address="0x0000D944" value="0x0000FFFC" />
+        <register type="OA" address="0x0000DC00" value="0x00000018" />
+        <register type="OA" address="0x0000DC04" value="0x0000FFFC" />
+        <register type="OA" address="0x0000D948" value="0x00000060" />
+        <register type="OA" address="0x0000D94C" value="0x0000FFF3" />
+        <register type="OA" address="0x0000DC08" value="0x00000060" />
+        <register type="OA" address="0x0000DC0C" value="0x0000FFF3" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00804704" />
+        <register type="FLEX" address="0x0000E558" value="0x00A04904" />
+        <register type="FLEX" address="0x0000E658" value="0x00805705" />
+        <register type="FLEX" address="0x0000E758" value="0x00A05905" />
+        <register type="FLEX" address="0x0000E45C" value="0x00808708" />
+        <register type="FLEX" address="0x0000E55C" value="0x00A08908" />
+        <register type="FLEX" address="0x0000E65C" value="0xFFFFFFFF" />
+    </register_config>
+  </set>
+
+  <set name="Metric set TestOa"
+       chipset="TGLGT2"
+       symbol_name="TestOa"
+       underscore_name="test_oa"
+       mdapi_supported_apis="VK OGL OCL IO"
+       hw_config_guid="6607f034-d053-40d1-8215-67c07f3041bb"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             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="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter7"
+             symbol_name="Counter7"
+             underscore_name="counter7"
+             description="HW test counter 7. Factor: 0.6666"
+             data_type="uint64"
+             units="events"
+             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="TestCounter8"
+             symbol_name="Counter8"
+             underscore_name="counter8"
+             description="HW test counter 8. Should be equal to 1 in IOStream or in OAG query mode"
+             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="TestCounter9 - OAR enable"
+             symbol_name="Counter9"
+             underscore_name="counter9"
+             description="HW test counter 9. Should be equal to 1 in query."
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 1 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009840" value="0x00000000" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x280E0000" />
+        <register type="NOA" address="0x00009888" value="0x1E0E0147" />
+        <register type="NOA" address="0x00009888" value="0x180E0000" />
+        <register type="NOA" address="0x00009888" value="0x160E0000" />
+        <register type="NOA" address="0x00009888" value="0x1E0F1000" />
+        <register type="NOA" address="0x00009888" value="0x1E104000" />
+        <register type="NOA" address="0x00009888" value="0x2E020100" />
+        <register type="NOA" address="0x00009888" value="0x2C030004" />
+        <register type="NOA" address="0x00009888" value="0x38003000" />
+        <register type="NOA" address="0x00009888" value="0x1E0A8000" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x49110000" />
+        <register type="NOA" address="0x00009888" value="0x5D101400" />
+        <register type="NOA" address="0x00009888" value="0x1D140020" />
+        <register type="NOA" address="0x00009888" value="0x1D1103A3" />
+        <register type="NOA" address="0x00009888" value="0x01110000" />
+        <register type="NOA" address="0x00009888" value="0x61111000" />
+        <register type="NOA" address="0x00009888" value="0x1F128000" />
+        <register type="NOA" address="0x00009888" value="0x17100000" />
+        <register type="NOA" address="0x00009888" value="0x55100630" />
+        <register type="NOA" address="0x00009888" value="0x57100000" />
+        <register type="NOA" address="0x00009888" value="0x31100000" />
+        <register type="NOA" address="0x00009884" value="0x00000003" />
+        <register type="NOA" address="0x00009888" value="0x65100002" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x42000001" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0xF0800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0xF0800000" />
+        <register type="OA" address="0x0000DC40" value="0x00FF0000" />
+        <register type="OA" address="0x0000D940" value="0x00000004" />
+        <register type="OA" address="0x0000D944" value="0x0000FFFF" />
+        <register type="OA" address="0x0000DC00" value="0x00000004" />
+        <register type="OA" address="0x0000DC04" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D948" value="0x00000003" />
+        <register type="OA" address="0x0000D94C" value="0x0000FFFF" />
+        <register type="OA" address="0x0000DC08" value="0x00000003" />
+        <register type="OA" address="0x0000DC0C" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D950" value="0x00000007" />
+        <register type="OA" address="0x0000D954" value="0x0000FFFF" />
+        <register type="OA" address="0x0000DC10" value="0x00000007" />
+        <register type="OA" address="0x0000DC14" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D958" value="0x00100002" />
+        <register type="OA" address="0x0000D95C" value="0x0000FFF7" />
+        <register type="OA" address="0x0000DC18" value="0x00100002" />
+        <register type="OA" address="0x0000DC1C" value="0x0000FFF7" />
+        <register type="OA" address="0x0000D960" value="0x00100002" />
+        <register type="OA" address="0x0000D964" value="0x0000FFCF" />
+        <register type="OA" address="0x0000DC20" value="0x00100002" />
+        <register type="OA" address="0x0000DC24" value="0x0000FFCF" />
+        <register type="OA" address="0x0000D968" value="0x00100082" />
+        <register type="OA" address="0x0000D96C" value="0x0000FFEF" />
+        <register type="OA" address="0x0000DC28" value="0x00100082" />
+        <register type="OA" address="0x0000DC2C" value="0x0000FFEF" />
+        <register type="OA" address="0x0000D970" value="0x001000C2" />
+        <register type="OA" address="0x0000D974" value="0x0000FFE7" />
+        <register type="OA" address="0x0000DC30" value="0x001000C2" />
+        <register type="OA" address="0x0000DC34" value="0x0000FFE7" />
+        <register type="OA" address="0x0000D978" value="0x00100001" />
+        <register type="OA" address="0x0000D97C" value="0x0000FFE7" />
+        <register type="OA" address="0x0000DC38" value="0x00100001" />
+        <register type="OA" address="0x0000DC3C" value="0x0000FFE7" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E65C" value="0xFFFFFFFF" />
+    </register_config>
+  </set>
+
+</metrics>
-- 
2.41.0


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

* [PATCH i-g-t 05/27] lib/xe/oa: Generate LNL metrics/registers files
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (3 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 04/27] lib/xe/oa: Add truncated legacy Xe1 metrics XML's Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 06/27] lib/xe/oa: Switch generated files to Xe namespace Ashutosh Dixit
                   ` (26 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

Generate metrics/registers .c and .h files with the XE_OA_FORMAT_PEC64u64
format (called 576B_PEC64LL) used in MetricsXML_P31.xml.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 lib/xe/oa-configs/oa-metricset-codegen.py | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/lib/xe/oa-configs/oa-metricset-codegen.py b/lib/xe/oa-configs/oa-metricset-codegen.py
index be9483af02..ea0d13cc97 100644
--- a/lib/xe/oa-configs/oa-metricset-codegen.py
+++ b/lib/xe/oa-configs/oa-metricset-codegen.py
@@ -116,7 +116,7 @@ def generate_metric_sets(args, gen):
         if gen.chipset.startswith("acm") or gen.chipset.startswith("mtl"):
             if set.oa_format == "128B_MPEC8_NOA16":
                 c(textwrap.dedent("""\
-                    metric_set->perf_oa_format = I915_OAM_FORMAT_MPEC8u32_B8_C8;
+                    metric_set->perf_oa_format = XE_OAM_FORMAT_MPEC8u32_B8_C8;
 
                     metric_set->perf_raw_size = 128;
                     metric_set->gpu_time_offset = 0;
@@ -128,7 +128,7 @@ def generate_metric_sets(args, gen):
                 """))
             else:
                 c(textwrap.dedent("""\
-                    metric_set->perf_oa_format = I915_OA_FORMAT_A24u40_A14u32_B8_C8;
+                    metric_set->perf_oa_format = XE_OA_FORMAT_A24u40_A14u32_B8_C8;
 
                     metric_set->perf_raw_size = 256;
                     metric_set->gpu_time_offset = 0;
@@ -138,9 +138,22 @@ def generate_metric_sets(args, gen):
                     metric_set->c_offset = metric_set->b_offset + 8;
                     metric_set->perfcnt_offset = metric_set->c_offset + 8;
                 """))
+        elif gen.chipset == "lnl":
+            c(textwrap.dedent("""\
+                metric_set->perf_oa_format = XE_OA_FORMAT_PEC64u64;
+
+                metric_set->perf_raw_size = 576;
+                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->a_offset + 64;
+
+            """))
         else:
             c(textwrap.dedent("""\
-                metric_set->perf_oa_format = I915_OA_FORMAT_A32u40_A4u32_B8_C8;
+                metric_set->perf_oa_format = XE_OA_FORMAT_A32u40_A4u32_B8_C8;
 
                 metric_set->perf_raw_size = 256;
                 metric_set->gpu_time_offset = 0;
-- 
2.41.0


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

* [PATCH i-g-t 06/27] lib/xe/oa: Switch generated files to Xe namespace
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (4 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 05/27] lib/xe/oa: Generate LNL metrics/registers files Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 07/27] drm-uapi/xe: Sync with Perf/OA changes Ashutosh Dixit
                   ` (25 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

The Xe IGT library occupies a different namespace ('intel_xe') from the
i915 IGT library ('intel' or 'i915'). The generated files are also part of
the Xe IGT library. Therefore make sure the functions and data structs in
the generated files conform to Xe namespace.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 lib/xe/oa-configs/codegen.py              |  6 ++--
 lib/xe/oa-configs/oa-equations-codegen.py | 36 +++++++++++------------
 lib/xe/oa-configs/oa-metricset-codegen.py | 26 ++++++++--------
 lib/xe/oa-configs/oa-registers-codegen.py | 10 +++----
 4 files changed, 39 insertions(+), 39 deletions(-)

diff --git a/lib/xe/oa-configs/codegen.py b/lib/xe/oa-configs/codegen.py
index 020e76ef4b..9a7d57a33e 100644
--- a/lib/xe/oa-configs/codegen.py
+++ b/lib/xe/oa-configs/codegen.py
@@ -340,13 +340,13 @@ class Gen:
             return set.read_funcs[name] + "(perf, metric_set, accumulator)"
         m = re.search('\$GtSlice([0-9]+)$', name)
         if m:
-            return 'intel_perf_devinfo_slice_available(&perf->devinfo, {0})'.format(m.group(1))
+            return 'intel_xe_perf_devinfo_slice_available(&perf->devinfo, {0})'.format(m.group(1))
         m = re.search('\$GtSlice([0-9]+)DualSubslice([0-9]+)$', name)
         if m:
-            return 'intel_perf_devinfo_subslice_available(&perf->devinfo, {0}, {1})'.format(m.group(1), m.group(2))
+            return 'intel_xe_perf_devinfo_subslice_available(&perf->devinfo, {0}, {1})'.format(m.group(1), m.group(2))
         m = re.search('\$GtSlice([0-9]+)XeCore([0-9]+)$', name)
         if m:
-            return 'intel_perf_devinfo_subslice_available(&perf->devinfo, {0}, {1})'.format(m.group(1), m.group(2))
+            return 'intel_xe_perf_devinfo_subslice_available(&perf->devinfo, {0}, {1})'.format(m.group(1), m.group(2))
         return None
 
     def output_rpn_equation_code(self, set, counter, equation):
diff --git a/lib/xe/oa-configs/oa-equations-codegen.py b/lib/xe/oa-configs/oa-equations-codegen.py
index a4a00f46d9..de5a3337df 100644
--- a/lib/xe/oa-configs/oa-equations-codegen.py
+++ b/lib/xe/oa-configs/oa-equations-codegen.py
@@ -46,9 +46,9 @@ def output_counter_read(gen, set, counter):
     read_eq = counter.get('equation')
 
     c(ret_ctype)
-    c(counter.read_sym + "(const struct intel_perf *perf,\n")
+    c(counter.read_sym + "(const struct intel_xe_perf *perf,\n")
     c.indent(len(counter.read_sym) + 1)
-    c("const struct intel_perf_metric_set *metric_set,\n")
+    c("const struct intel_xe_perf_metric_set *metric_set,\n")
     c("uint64_t *accumulator)\n")
     c.outdent(len(counter.read_sym) + 1)
 
@@ -75,9 +75,9 @@ def output_counter_read_definition(gen, set, counter):
         read_eq = counter.get('equation')
 
         h(ret_ctype)
-        h(counter.read_sym + "(const struct intel_perf *perf,\n")
+        h(counter.read_sym + "(const struct intel_xe_perf *perf,\n")
         h.indent(len(counter.read_sym) + 1)
-        h("const struct intel_perf_metric_set *metric_set,\n")
+        h("const struct intel_xe_perf_metric_set *metric_set,\n")
         h("uint64_t *accumulator);\n")
         h.outdent(len(counter.read_sym) + 1)
 
@@ -100,9 +100,9 @@ def output_counter_max(gen, set, counter):
     ret_ctype = data_type_to_ctype(ret_type)
 
     c(ret_ctype)
-    c(counter.max_sym + "(const struct intel_perf *perf,\n")
+    c(counter.max_sym + "(const struct intel_xe_perf *perf,\n")
     c.indent(len(counter.max_sym) + 1)
-    c("const struct intel_perf_metric_set *metric_set,\n")
+    c("const struct intel_xe_perf_metric_set *metric_set,\n")
     c("uint64_t *accumulator)\n")
     c.outdent(len(counter.max_sym) + 1)
 
@@ -135,9 +135,9 @@ def output_counter_max_definition(gen, set, counter):
 
         h(ret_ctype)
 
-        h(counter.max_sym + "(const struct intel_perf *perf,")
+        h(counter.max_sym + "(const struct intel_xe_perf *perf,")
         h.indent(len(counter.max_sym) + 1)
-        h("const struct intel_perf_metric_set *metric_set,")
+        h("const struct intel_xe_perf_metric_set *metric_set,")
         h("uint64_t *accumulator);")
         h.outdent(len(counter.max_sym) + 1)
         h("\n")
@@ -163,16 +163,16 @@ def generate_equations(args, gens):
         #define MAX(a, b) (((a) > (b)) ? (a) : (b))
 
         double
-        percentage_max_callback_float(const struct intel_perf *perf,
-                                      const struct intel_perf_metric_set *metric_set,
+        percentage_max_callback_float(const struct intel_xe_perf *perf,
+                                      const struct intel_xe_perf_metric_set *metric_set,
                                       uint64_t *accumulator)
         {
            return 100;
         }
 
         uint64_t
-        percentage_max_callback_uint64(const struct intel_perf *perf,
-                                       const struct intel_perf_metric_set *metric_set,
+        percentage_max_callback_uint64(const struct intel_xe_perf *perf,
+                                       const struct intel_xe_perf_metric_set *metric_set,
                                        uint64_t *accumulator)
         {
            return 100;
@@ -196,16 +196,16 @@ def generate_equations(args, gens):
         #include <stdint.h>
         #include <stdbool.h>
 
-        struct intel_perf;
-        struct intel_perf_metric_set;
+        struct intel_xe_perf;
+        struct intel_xe_perf_metric_set;
 
         double
-        percentage_max_callback_float(const struct intel_perf *perf,
-                                      const struct intel_perf_metric_set *metric_set,
+        percentage_max_callback_float(const struct intel_xe_perf *perf,
+                                      const struct intel_xe_perf_metric_set *metric_set,
                                       uint64_t *accumulator);
         uint64_t
-        percentage_max_callback_uint64(const struct intel_perf *perf,
-                                       const struct intel_perf_metric_set *metric_set,
+        percentage_max_callback_uint64(const struct intel_xe_perf *perf,
+                                       const struct intel_xe_perf_metric_set *metric_set,
                                        uint64_t *accumulator);
 
         """ % (header_define, header_define)))
diff --git a/lib/xe/oa-configs/oa-metricset-codegen.py b/lib/xe/oa-configs/oa-metricset-codegen.py
index ea0d13cc97..f4a008d690 100644
--- a/lib/xe/oa-configs/oa-metricset-codegen.py
+++ b/lib/xe/oa-configs/oa-metricset-codegen.py
@@ -28,7 +28,7 @@ def availability_func_name(set, counter):
 def output_availability_funcs(set, counter):
     availability = counter.get('availability')
     if availability:
-        c("static bool " + availability_func_name(set, counter) + "(const struct intel_perf *perf) {")
+        c("static bool " + availability_func_name(set, counter) + "(const struct intel_xe_perf *perf) {")
         c.indent(4)
         set.gen.output_availability(set, availability, counter.get('name'))
         c.indent(4)
@@ -60,9 +60,9 @@ def output_counter_report(set, counter):
     c(".name = \"{0}\",\n".format(counter.get('name')))
     c(".symbol_name = \"{0}\",\n".format(counter.get('symbol_name')))
     c(".desc = \"{0}\",\n".format(counter.get('description')))
-    c(".type = INTEL_PERF_LOGICAL_COUNTER_TYPE_{0},\n".format(semantic_type_uc))
-    c(".storage = INTEL_PERF_LOGICAL_COUNTER_STORAGE_{0},\n".format(data_type_uc))
-    c(".unit = INTEL_PERF_LOGICAL_COUNTER_UNIT_{0},\n".format(output_units(counter.get('units'))))
+    c(".type = INTEL_XE_PERF_LOGICAL_COUNTER_TYPE_{0},\n".format(semantic_type_uc))
+    c(".storage = INTEL_XE_PERF_LOGICAL_COUNTER_STORAGE_{0},\n".format(data_type_uc))
+    c(".unit = INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_{0},\n".format(output_units(counter.get('units'))))
     c(".read_{0} = {1},\n".format(data_type, set.read_funcs["$" + counter.get('symbol_name')]))
     c(".max_{0} = {1},\n".format(data_type, set.max_funcs["$" + counter.get('symbol_name')]))
     c(".group = \"{0}\",\n".format(counter.get('mdapi_group')))
@@ -98,18 +98,18 @@ def generate_metric_sets(args, gen):
           output_availability_funcs(set, counter)
 
         c("\nstatic void\n")
-        c(gen.chipset + "_add_" + set.underscore_name + "_metric_set(struct intel_perf *perf)")
+        c(gen.chipset + "_add_" + set.underscore_name + "_metric_set(struct intel_xe_perf *perf)")
         c("{\n")
         c.indent(4)
 
-        c("struct intel_perf_metric_set *metric_set;\n")
-        c("struct intel_perf_logical_counter *counter;\n\n")
+        c("struct intel_xe_perf_metric_set *metric_set;\n")
+        c("struct intel_xe_perf_logical_counter *counter;\n\n")
 
         c("metric_set = calloc(1, sizeof(*metric_set));\n")
         c("metric_set->name = \"" + set.name + "\";\n")
         c("metric_set->symbol_name = \"" + set.symbol_name + "\";\n")
         c("metric_set->hw_config_guid = \"" + set.hw_config_guid + "\";\n")
-        c("metric_set->counters = calloc({0}, sizeof(struct intel_perf_logical_counter));\n".format(str(len(counters))))
+        c("metric_set->counters = calloc({0}, sizeof(struct intel_xe_perf_logical_counter));\n".format(str(len(counters))))
         c("metric_set->n_counters = 0;\n")
         c("metric_set->perf_oa_metrics_set = 0; // determined at runtime\n")
 
@@ -167,12 +167,12 @@ def generate_metric_sets(args, gen):
 
         c("%s_%s_add_registers(perf, metric_set);" % (gen.chipset, set.underscore_name))
 
-        c("intel_perf_add_metric_set(perf, metric_set);");
+        c("intel_xe_perf_add_metric_set(perf, metric_set);");
         c("\n")
 
         c("{")
         c.indent(4)
-        c("static const struct intel_perf_logical_counter _counters[] = {")
+        c("static const struct intel_xe_perf_logical_counter _counters[] = {")
         c.indent(4)
 
         for counter in counters:
@@ -190,7 +190,7 @@ def generate_metric_sets(args, gen):
         c("counter = &metric_set->counters[metric_set->n_counters++];")
         c("*counter = _counters[i];")
         c("counter->metric_set = metric_set;")
-        c("intel_perf_add_logical_counter(perf, counter, counter->group);")
+        c("intel_xe_perf_add_logical_counter(perf, counter, counter->group);")
         c.outdent(4)
         c("}")
         c.outdent(4)
@@ -201,7 +201,7 @@ def generate_metric_sets(args, gen):
         c("}\n")
 
     c("\nvoid")
-    c("intel_perf_load_metrics_" + gen.chipset + "(struct intel_perf *perf)")
+    c("intel_xe_perf_load_metrics_" + gen.chipset + "(struct intel_xe_perf *perf)")
     c("{")
     c.indent(4)
 
@@ -256,7 +256,7 @@ def main():
         """ % (header_define, header_define)))
 
     # Print out all set registration functions for each generation.
-    h("void intel_perf_load_metrics_" + gen.chipset + "(struct intel_perf *perf);\n\n")
+    h("void intel_xe_perf_load_metrics_" + gen.chipset + "(struct intel_xe_perf *perf);\n\n")
 
     h(textwrap.dedent("""\
         #endif /* %s */
diff --git a/lib/xe/oa-configs/oa-registers-codegen.py b/lib/xe/oa-configs/oa-registers-codegen.py
index a4aa134097..08fc38a50e 100644
--- a/lib/xe/oa-configs/oa-registers-codegen.py
+++ b/lib/xe/oa-configs/oa-registers-codegen.py
@@ -22,7 +22,7 @@ def generate_register_configs(set):
         'OA': 'b_counter_regs',
     }
 
-    c("void %s_%s_add_registers(struct intel_perf *perf, struct intel_perf_metric_set *metric_set)" %
+    c("void %s_%s_add_registers(struct intel_xe_perf *perf, struct intel_xe_perf_metric_set *metric_set)" %
       (set.gen.chipset, set.underscore_name))
     c("{")
     c.indent(4)
@@ -39,7 +39,7 @@ def generate_register_configs(set):
 
         c("{")
         c.indent(4)
-        c("static const struct intel_perf_register_prog _%s[] = {" % t)
+        c("static const struct intel_xe_perf_register_prog _%s[] = {" % t)
         c.indent(4)
         for register in register_config.findall('register'):
             c("{ .reg = %s, .val = %s }," %
@@ -95,11 +95,11 @@ def main():
     h("#ifndef %s" % header_define)
     h("#define %s" % header_define)
     h("\n")
-    h("struct intel_perf;")
-    h("struct intel_perf_metric_set;")
+    h("struct intel_xe_perf;")
+    h("struct intel_xe_perf_metric_set;")
     h("\n")
     for set in gen.sets:
-        h("void %s_%s_add_registers(struct intel_perf *perf, struct intel_perf_metric_set *metric_set);" %
+        h("void %s_%s_add_registers(struct intel_xe_perf *perf, struct intel_xe_perf_metric_set *metric_set);" %
           (gen.chipset, set.underscore_name))
     h("\n")
     h("#endif /* %s */" % header_define)
-- 
2.41.0


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

* [PATCH i-g-t 07/27] drm-uapi/xe: Sync with Perf/OA changes
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (5 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 06/27] lib/xe/oa: Switch generated files to Xe namespace Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 08/27] lib/xe: Complete xe_oa lib functionality Ashutosh Dixit
                   ` (24 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

Include Perf/OA changes from the kernel in include/drm-uapi/xe_drm.h

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 include/drm-uapi/xe_drm.h | 291 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 291 insertions(+)

diff --git a/include/drm-uapi/xe_drm.h b/include/drm-uapi/xe_drm.h
index 1100dfe1ff..d377572aa3 100644
--- a/include/drm-uapi/xe_drm.h
+++ b/include/drm-uapi/xe_drm.h
@@ -100,6 +100,8 @@ extern "C" {
 #define DRM_XE_EXEC_QUEUE_GET_PROPERTY	0x08
 #define DRM_XE_EXEC			0x09
 #define DRM_XE_WAIT_USER_FENCE		0x0a
+#define DRM_XE_PERF			0x0b
+
 /* Must be kept compact -- no holes */
 
 #define DRM_IOCTL_XE_DEVICE_QUERY		DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_DEVICE_QUERY, struct drm_xe_device_query)
@@ -113,6 +115,7 @@ extern "C" {
 #define DRM_IOCTL_XE_EXEC_QUEUE_GET_PROPERTY	DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_EXEC_QUEUE_GET_PROPERTY, struct drm_xe_exec_queue_get_property)
 #define DRM_IOCTL_XE_EXEC			DRM_IOW(DRM_COMMAND_BASE + DRM_XE_EXEC, struct drm_xe_exec)
 #define DRM_IOCTL_XE_WAIT_USER_FENCE		DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_WAIT_USER_FENCE, struct drm_xe_wait_user_fence)
+#define DRM_IOCTL_XE_PERF			DRM_IOW(DRM_COMMAND_BASE + DRM_XE_PERF, struct drm_xe_perf_param)
 
 /**
  * DOC: Xe IOCTL Extensions
@@ -685,6 +688,7 @@ struct drm_xe_device_query {
 #define DRM_XE_DEVICE_QUERY_GT_TOPOLOGY		5
 #define DRM_XE_DEVICE_QUERY_ENGINE_CYCLES	6
 #define DRM_XE_DEVICE_QUERY_UC_FW_VERSION	7
+#define DRM_XE_DEVICE_QUERY_OA_UNITS		8
 	/** @query: The type of data to query */
 	__u32 query;
 
@@ -1370,6 +1374,293 @@ struct drm_xe_wait_user_fence {
 	__u64 reserved[2];
 };
 
+/** enum drm_xe_perf_type - Perf stream types */
+enum drm_xe_perf_type {
+	DRM_XE_PERF_TYPE_OA,
+	DRM_XE_PERF_TYPE_MAX,
+};
+
+/**
+ * enum drm_xe_perf_op - Perf stream ops
+ */
+enum drm_xe_perf_op {
+	/** @DRM_XE_PERF_OP_STREAM_OPEN: Open a perf counter stream */
+	DRM_XE_PERF_OP_STREAM_OPEN,
+
+	/** @DRM_XE_PERF_OP_ADD_CONFIG: Add perf stream config */
+	DRM_XE_PERF_OP_ADD_CONFIG,
+
+	/** @DRM_XE_PERF_OP_REMOVE_CONFIG: Remove perf stream config */
+	DRM_XE_PERF_OP_REMOVE_CONFIG,
+};
+
+/**
+ * struct drm_xe_perf_param - Input of &DRM_XE_PERF
+ *
+ * The perf layer enables multiplexing perf counter streams of multiple
+ * types. The actual params for a particular stream operation are supplied
+ * via the @param pointer (use __copy_from_user to get these params).
+ */
+struct drm_xe_perf_param {
+	/** @extensions: Pointer to the first extension struct, if any */
+	__u64 extensions;
+	/** @perf_type: Perf stream type, of enum @drm_xe_perf_type */
+	__u64 perf_type;
+	/** @perf_op: Perf op, of enum @drm_xe_perf_op */
+	__u64 perf_op;
+	/** @param: Pointer to actual stream params */
+	__u64 param;
+};
+
+/**
+ * enum drm_xe_perf_ioctls - Perf fd ioctl's
+ *
+ * Information exchanged between userspace and kernel for perf fd ioctl's
+ * is stream type specific
+ */
+enum drm_xe_perf_ioctls {
+	/** @DRM_XE_PERF_IOCTL_ENABLE: Enable data capture for a stream */
+	DRM_XE_PERF_IOCTL_ENABLE = _IO('i', 0x0),
+
+	/** @DRM_XE_PERF_IOCTL_DISABLE: Disable data capture for a stream */
+	DRM_XE_PERF_IOCTL_DISABLE = _IO('i', 0x1),
+
+	/** @DRM_XE_PERF_IOCTL_CONFIG: Change stream configuration */
+	DRM_XE_PERF_IOCTL_CONFIG = _IO('i', 0x2),
+
+	/** @DRM_XE_PERF_IOCTL_STATUS: Return stream status */
+	DRM_XE_PERF_IOCTL_STATUS = _IO('i', 0x3),
+
+	/** @DRM_XE_PERF_IOCTL_INFO: Return stream info */
+	DRM_XE_PERF_IOCTL_INFO = _IO('i', 0x4),
+};
+
+/** enum drm_xe_oa_unit_type - OA unit types */
+enum drm_xe_oa_unit_type {
+	/**
+	 * @DRM_XE_OA_UNIT_TYPE_OAG: OAG OA unit. OAR/OAC are considered
+	 * sub-types of OAG. For OAR/OAC, use OAG.
+	 */
+	DRM_XE_OA_UNIT_TYPE_OAG,
+
+	/** @DRM_XE_OA_UNIT_TYPE_OAM: OAM OA unit */
+	DRM_XE_OA_UNIT_TYPE_OAM,
+};
+
+/**
+ * struct drm_xe_oa_unit - describe OA unit
+ */
+struct drm_xe_oa_unit {
+	/** @extensions: Pointer to the first extension struct, if any */
+	__u64 extensions;
+
+	/** @oa_unit_id: OA unit ID */
+	__u32 oa_unit_id;
+
+	/** @oa_unit_type: OA unit type of @drm_xe_oa_unit_type */
+	__u32 oa_unit_type;
+
+	/** @capabilities: OA capabilities bit-mask */
+	__u64 capabilities;
+#define DRM_XE_OA_CAPS_BASE		(1 << 0)
+
+	/** @oa_timestamp_freq: OA timestamp freq */
+	__u64 oa_timestamp_freq;
+
+	/** @reserved: MBZ */
+	__u64 reserved[4];
+
+	/** @num_engines: number of engines in @eci array */
+	__u64 num_engines;
+
+	/** @eci: engines attached to this OA unit */
+	struct drm_xe_engine_class_instance eci[];
+};
+
+/**
+ * struct drm_xe_query_oa_units - describe OA units
+ *
+ * If a query is made with a struct drm_xe_device_query where .query
+ * is equal to DRM_XE_DEVICE_QUERY_OA_UNITS, then the reply uses struct
+ * drm_xe_query_oa_units in .data.
+ *
+ * OA unit properties for all OA units can be accessed using a code block
+ * such as the one below:
+ *
+ * .. code-block:: C
+ *
+ *	struct drm_xe_query_oa_units *qoa;
+ *	struct drm_xe_oa_unit *oau;
+ *	u8 *poau;
+ *
+ *	// malloc qoa and issue DRM_XE_DEVICE_QUERY_OA_UNITS. Then:
+ *	poau = (u8 *)&qoa->oa_units[0];
+ *	for (int i = 0; i < qoa->num_oa_units; i++) {
+ *		oau = (struct drm_xe_oa_unit *)poau;
+ *		// Access 'struct drm_xe_oa_unit' fields here
+ *		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
+ *	}
+ */
+struct drm_xe_query_oa_units {
+	/** @extensions: Pointer to the first extension struct, if any */
+	__u64 extensions;
+	/** @num_oa_units: number of OA units returned in oau[] */
+	__u32 num_oa_units;
+	/** @pad: MBZ */
+	__u32 pad;
+	/**
+	 * @oa_units: struct @drm_xe_oa_unit array returned for this device.
+	 * Written below as a u64 array to avoid problems with nested flexible
+	 * arrays with some compilers
+	 */
+	__u64 oa_units[];
+};
+
+/** enum drm_xe_oa_format_type - OA format types */
+enum drm_xe_oa_format_type {
+	DRM_XE_OA_FMT_TYPE_OAG,
+	DRM_XE_OA_FMT_TYPE_OAR,
+	DRM_XE_OA_FMT_TYPE_OAM,
+	DRM_XE_OA_FMT_TYPE_OAC,
+	DRM_XE_OA_FMT_TYPE_OAM_MPEC,
+	DRM_XE_OA_FMT_TYPE_PEC,
+};
+
+/**
+ * enum drm_xe_oa_property_id - OA stream property id's
+ *
+ * Stream params are specified as a chain of @drm_xe_ext_set_property
+ * struct's, with @property values from enum @drm_xe_oa_property_id and
+ * @drm_xe_user_extension base.name set to @DRM_XE_OA_EXTENSION_SET_PROPERTY.
+ * @param field in struct @drm_xe_perf_param points to the first
+ * @drm_xe_ext_set_property struct.
+ *
+ * Exactly the same mechanism is also used for stream reconfiguration using
+ * the @DRM_XE_PERF_IOCTL_CONFIG perf fd ioctl, though only a subset of
+ * properties below can be specified for stream reconfiguration.
+ */
+enum drm_xe_oa_property_id {
+#define DRM_XE_OA_EXTENSION_SET_PROPERTY	0
+	/**
+	 * @DRM_XE_OA_PROPERTY_OA_UNIT_ID: ID of the OA unit on which to open
+	 * the OA stream, see @oa_unit_id in 'struct
+	 * drm_xe_query_oa_units'. Defaults to 0 if not provided.
+	 */
+	DRM_XE_OA_PROPERTY_OA_UNIT_ID = 1,
+
+	/**
+	 * @DRM_XE_OA_PROPERTY_SAMPLE_OA: A value of 1 requests inclusion of raw
+	 * OA unit reports or stream samples in a global buffer attached to an
+	 * OA unit.
+	 */
+	DRM_XE_OA_PROPERTY_SAMPLE_OA,
+
+	/**
+	 * @DRM_XE_OA_PROPERTY_OA_METRIC_SET: OA metrics defining contents of OA
+	 * reports, previously added via @DRM_XE_PERF_OP_ADD_CONFIG.
+	 */
+	DRM_XE_OA_PROPERTY_OA_METRIC_SET,
+
+	/** @DRM_XE_OA_PROPERTY_OA_FORMAT: Perf counter report format */
+	DRM_XE_OA_PROPERTY_OA_FORMAT,
+	/*
+	 * OA_FORMAT's are specified the same way as in PRM/Bspec 52198/60942,
+	 * in terms of the following quantities: a. enum @drm_xe_oa_format_type
+	 * b. Counter select c. Counter size and d. BC report. Also refer to the
+	 * oa_formats array in drivers/gpu/drm/xe/xe_oa.c.
+	 */
+#define DRM_XE_OA_FORMAT_MASK_FMT_TYPE		(0xff << 0)
+#define DRM_XE_OA_FORMAT_MASK_COUNTER_SEL	(0xff << 8)
+#define DRM_XE_OA_FORMAT_MASK_COUNTER_SIZE	(0xff << 16)
+#define DRM_XE_OA_FORMAT_MASK_BC_REPORT		(0xff << 24)
+
+	/**
+	 * @DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT: Requests periodic OA unit
+	 * sampling with sampling frequency proportional to 2^(period_exponent + 1)
+	 */
+	DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT,
+
+	/**
+	 * @DRM_XE_OA_PROPERTY_OA_DISABLED: A value of 1 will open the OA
+	 * stream in a DISABLED state (see @DRM_XE_PERF_IOCTL_ENABLE).
+	 */
+	DRM_XE_OA_PROPERTY_OA_DISABLED,
+
+	/**
+	 * @DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID: Open the stream for a specific
+	 * @exec_queue_id. Perf queries can be executed on this exec queue.
+	 */
+	DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID,
+
+	/**
+	 * @DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE: Optional engine instance to
+	 * pass along with @DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID or will default to 0.
+	 */
+	DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE,
+
+	/** @DRM_XE_OA_PROPERTY_MAX: non-ABI */
+	DRM_XE_OA_PROPERTY_MAX
+};
+
+/**
+ * struct drm_xe_oa_config - OA metric configuration
+ *
+ * Multiple OA configs can be added using @DRM_XE_PERF_OP_ADD_CONFIG. A
+ * particular config can be specified when opening an OA stream using
+ * @DRM_XE_OA_PROPERTY_OA_METRIC_SET property.
+ */
+struct drm_xe_oa_config {
+	/** @extensions: Pointer to the first extension struct, if any */
+	__u64 extensions;
+
+	/** @uuid: String formatted like "%\08x-%\04x-%\04x-%\04x-%\012x" */
+	char uuid[36];
+
+	/** @n_regs: Number of regs in @regs_ptr */
+	__u32 n_regs;
+
+	/**
+	 * @regs_ptr: Pointer to (register address, value) pairs for OA config
+	 * registers. Expected length of buffer is: (2 * sizeof(u32) * @n_regs).
+	 */
+	__u64 regs_ptr;
+};
+
+/**
+ * struct drm_xe_oa_stream_status - OA stream status returned from
+ * @DRM_XE_PERF_IOCTL_STATUS perf fd ioctl. Userspace can call the ioctl to
+ * query stream status in response to EIO errno from perf fd read().
+ */
+struct drm_xe_oa_stream_status {
+	/** @extensions: Pointer to the first extension struct, if any */
+	__u64 extensions;
+
+	/** @oa_status: OA stream status (see Bspec 46717/61226) */
+	__u64 oa_status;
+#define DRM_XE_OASTATUS_MMIO_TRG_Q_FULL		(1 << 3)
+#define DRM_XE_OASTATUS_COUNTER_OVERFLOW	(1 << 2)
+#define DRM_XE_OASTATUS_BUFFER_OVERFLOW		(1 << 1)
+#define DRM_XE_OASTATUS_REPORT_LOST		(1 << 0)
+
+	/** @reserved: reserved for future use */
+	__u64 reserved[3];
+};
+
+/**
+ * struct drm_xe_oa_stream_info - OA stream info returned from
+ * @DRM_XE_PERF_IOCTL_INFO perf fd ioctl
+ */
+struct drm_xe_oa_stream_info {
+	/** @extensions: Pointer to the first extension struct, if any */
+	__u64 extensions;
+
+	/** @oa_buf_size: OA buffer size */
+	__u64 oa_buf_size;
+
+	/** @reserved: reserved for future use */
+	__u64 reserved[3];
+};
+
 #if defined(__cplusplus)
 }
 #endif
-- 
2.41.0


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

* [PATCH i-g-t 08/27] lib/xe: Complete xe_oa lib functionality
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (6 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 07/27] drm-uapi/xe: Sync with Perf/OA changes Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 09/27] tests/intel/xe_query: Add OA units query test Ashutosh Dixit
                   ` (23 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

Add various functionality in lib/xe for OA. This includes:
* Support for OA metrics generation
* intel_xe_perf_for_devinfo and intel_xe_perf_for_fd support
* intel_xe_perf_load_perf_configs
* intel_xe_perf_ioctl
* drm_xe_query_oa_units

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 lib/intel_device_info.c |    1 +
 lib/meson.build         |   86 ++++
 lib/xe-oa.pc.in         |   11 +
 lib/xe/xe_oa.c          | 1072 +++++++++++++++++++++++++++++++++++++++
 lib/xe/xe_oa.h          |  407 +++++++++++++++
 lib/xe/xe_query.c       |   38 ++
 lib/xe/xe_query.h       |    5 +
 7 files changed, 1620 insertions(+)
 create mode 100644 lib/xe-oa.pc.in
 create mode 100644 lib/xe/xe_oa.c
 create mode 100644 lib/xe/xe_oa.h

diff --git a/lib/intel_device_info.c b/lib/intel_device_info.c
index e80ea54707..d1f9354731 100644
--- a/lib/intel_device_info.c
+++ b/lib/intel_device_info.c
@@ -510,6 +510,7 @@ static const struct intel_device_info intel_lunarlake_info = {
 	.display_ver = 20,
 	.has_4tile = true,
 	.has_flatccs = true,
+	.has_oam = true,
 	.is_lunarlake = true,
 	.codename = "lunarlake",
 	.cmds_info = &xe2_cmds_info,
diff --git a/lib/meson.build b/lib/meson.build
index e2f740c116..02b86a77ff 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -377,6 +377,85 @@ install_headers(
   subdir : 'i915-perf'
 )
 
+xe_oa_files = [
+  'igt_list.c',
+  'xe/xe_oa.c',
+]
+
+xe_oa_hardware = [
+  'tglgt1', 'tglgt2',
+  'dg1',
+  'rkl',
+  'adl',
+  'acmgt1', 'acmgt2', 'acmgt3',
+  'mtlgt2', 'mtlgt3',
+  'lnl',
+]
+
+xe_xml_files = []
+foreach hw : xe_oa_hardware
+  xe_xml_files += files('xe/oa-configs/oa-@0@.xml'.format(hw))
+endforeach
+
+xe_oa_files += custom_target(
+  'xe-oa-equations',
+  input : [ 'xe/oa-configs/oa-equations-codegen.py' ] + xe_xml_files,
+  output : [ 'xe_oa_equations.c', 'xe_oa_equations.h' ],
+  command : [
+    python3, '@INPUT0@',
+    '--code', '@OUTPUT0@',
+    '--header', '@OUTPUT1@',
+    xe_xml_files,
+  ])
+
+foreach hw : xe_oa_hardware
+  xe_oa_files += custom_target(
+    'xe-oa-registers-@0@'.format(hw),
+    input : [ 'xe/oa-configs/oa-registers-codegen.py',
+              'xe/oa-configs/oa-@0@.xml'.format(hw) ],
+    output : [ 'xe_oa_registers_@0@.c'.format(hw),
+               'xe_oa_registers_@0@.h'.format(hw), ],
+    command : [
+      python3, '@INPUT0@',
+      '--code', '@OUTPUT0@',
+      '--header', '@OUTPUT1@',
+      '--xml-file', '@INPUT1@'
+    ])
+  xe_oa_files += custom_target(
+    'xe-oa-metrics-@0@'.format(hw),
+    input : [ 'xe/oa-configs/oa-metricset-codegen.py',
+              'xe/oa-configs/oa-@0@.xml'.format(hw) ],
+    output : [ 'xe_oa_metrics_@0@.c'.format(hw),
+               'xe_oa_metrics_@0@.h'.format(hw), ],
+    command : [
+      python3, '@INPUT0@',
+      '--code', '@OUTPUT0@',
+      '--header', '@OUTPUT1@',
+      '--equations-include', 'xe_oa_equations.h',
+      '--registers-include', 'xe_oa_registers_@0@.h'.format(hw),
+      '--xml-file', '@INPUT1@',
+    ])
+endforeach
+
+lib_igt_xe_oa_build = shared_library(
+  'xe_oa',
+  xe_oa_files,
+  dependencies: [lib_igt_chipset,lib_igt,pciaccess],
+  include_directories : inc,
+  install: true,
+  soversion: '1.5')
+
+lib_igt_xe_oa = declare_dependency(
+  link_with : lib_igt_xe_oa_build,
+  include_directories : inc)
+
+install_headers(
+  'igt_list.h',
+  'intel_chipset.h',
+  'xe/xe_oa.h',
+  subdir : 'xe-oa'
+)
+
 pkgconf = configuration_data()
 
 pkgconf.set('prefix', get_option('prefix'))
@@ -384,6 +463,7 @@ pkgconf.set('exec_prefix', '${prefix}')
 pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir')))
 pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir')))
 pkgconf.set('i915_perf_version', '1.5.1')
+pkgconf.set('xe_oa_version', '1.0.0')
 
 configure_file(
   input : 'i915-perf.pc.in',
@@ -391,4 +471,10 @@ configure_file(
   configuration : pkgconf,
   install_dir : pkgconfigdir)
 
+configure_file(
+  input : 'xe-oa.pc.in',
+  output : 'xe-oa.pc',
+  configuration : pkgconf,
+  install_dir : pkgconfigdir)
+
 subdir('tests')
diff --git a/lib/xe-oa.pc.in b/lib/xe-oa.pc.in
new file mode 100644
index 0000000000..e08fa5220f
--- /dev/null
+++ b/lib/xe-oa.pc.in
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: xe-oa
+Description: Xe OA library
+Version: @xe_oa_version@
+Requires: libdrm >= 2.4.92
+Libs: -L${libdir} -lxe_oa
+Cflags: -I${includedir}/xe-oa
diff --git a/lib/xe/xe_oa.c b/lib/xe/xe_oa.c
new file mode 100644
index 0000000000..da3d874009
--- /dev/null
+++ b/lib/xe/xe_oa.c
@@ -0,0 +1,1072 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#include <assert.h>
+#include <dirent.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <sys/stat.h>
+#include <sys/sysmacros.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include "drmtest.h"
+#include "intel_chipset.h"
+#include "intel_hwconfig_types.h"
+#include "ioctl_wrappers.h"
+#include "linux_scaffold.h"
+#include "xe_ioctl.h"
+#include "xe_oa.h"
+#include "xe_pciids.h"
+#include "xe_query.h"
+
+#include "xe_oa_metrics_tglgt1.h"
+#include "xe_oa_metrics_tglgt2.h"
+#include "xe_oa_metrics_rkl.h"
+#include "xe_oa_metrics_dg1.h"
+#include "xe_oa_metrics_adl.h"
+#include "xe_oa_metrics_acmgt1.h"
+#include "xe_oa_metrics_acmgt2.h"
+#include "xe_oa_metrics_acmgt3.h"
+#include "xe_oa_metrics_mtlgt2.h"
+#include "xe_oa_metrics_mtlgt3.h"
+#include "xe_oa_metrics_lnl.h"
+
+static struct intel_xe_perf_logical_counter_group *
+intel_xe_perf_logical_counter_group_new(struct intel_xe_perf *perf,
+					struct intel_xe_perf_logical_counter_group *parent,
+					const char *name)
+{
+	struct intel_xe_perf_logical_counter_group *group = calloc(1, sizeof(*group));
+
+	group->name = strdup(name);
+
+	IGT_INIT_LIST_HEAD(&group->counters);
+	IGT_INIT_LIST_HEAD(&group->groups);
+
+	if (parent)
+		igt_list_add_tail(&group->link, &parent->groups);
+	else
+		IGT_INIT_LIST_HEAD(&group->link);
+
+	return group;
+}
+
+static void
+intel_xe_perf_logical_counter_group_free(struct intel_xe_perf_logical_counter_group *group)
+{
+	struct intel_xe_perf_logical_counter_group *child, *tmp;
+
+	igt_list_for_each_entry_safe(child, tmp, &group->groups, link) {
+		igt_list_del(&child->link);
+		intel_xe_perf_logical_counter_group_free(child);
+	}
+
+	free(group->name);
+	free(group);
+}
+
+static void
+intel_xe_perf_metric_set_free(struct intel_xe_perf_metric_set *metric_set)
+{
+	free(metric_set->counters);
+	free(metric_set);
+}
+
+static bool
+slice_available(const struct intel_xe_topology_info *topo,
+		int s)
+{
+	return (topo->data[s / 8] >> (s % 8)) & 1;
+}
+
+static bool
+subslice_available(const struct intel_xe_topology_info *topo,
+		   int s, int ss)
+{
+	return (topo->data[topo->subslice_offset +
+			   s * topo->subslice_stride +
+			   ss / 8] >> (ss % 8)) & 1;
+}
+
+static bool
+eu_available(const struct intel_xe_topology_info *topo,
+	     int s, int ss, int eu)
+{
+	return (topo->data[topo->eu_offset +
+			   (s * topo->max_subslices + ss) * topo->eu_stride +
+			   eu / 8] >> (eu % 8)) & 1;
+}
+
+static struct intel_xe_perf *
+unsupported_xe_oa_platform(struct intel_xe_perf *perf)
+{
+	intel_xe_perf_free(perf);
+	return NULL;
+}
+
+static bool
+is_acm_gt1(const struct intel_xe_perf_devinfo *devinfo)
+{
+#undef INTEL_VGA_DEVICE
+#define INTEL_VGA_DEVICE(_id, _info) _id
+	static const uint32_t devids[] = {
+		XE_DG2_G11_IDS(INTEL_VGA_DEVICE, NULL),
+		XE_ATS_M75_IDS(INTEL_VGA_DEVICE, NULL),
+	};
+#undef INTEL_VGA_DEVICE
+	for (uint32_t i = 0; i < ARRAY_SIZE(devids); i++) {
+		if (devids[i] == devinfo->devid)
+			return true;
+	}
+
+	return false;
+}
+
+static bool
+is_acm_gt2(const struct intel_xe_perf_devinfo *devinfo)
+{
+#undef INTEL_VGA_DEVICE
+#define INTEL_VGA_DEVICE(_id, _info) _id
+	static const uint32_t devids[] = {
+		XE_DG2_G12_IDS(INTEL_VGA_DEVICE, NULL),
+	};
+#undef INTEL_VGA_DEVICE
+	for (uint32_t i = 0; i < ARRAY_SIZE(devids); i++) {
+		if (devids[i] == devinfo->devid)
+			return true;
+	}
+
+	return false;
+}
+
+static bool
+is_acm_gt3(const struct intel_xe_perf_devinfo *devinfo)
+{
+#undef INTEL_VGA_DEVICE
+#define INTEL_VGA_DEVICE(_id, _info) _id
+	static const uint32_t devids[] = {
+		XE_DG2_G10_IDS(INTEL_VGA_DEVICE, NULL),
+		XE_ATS_M150_IDS(INTEL_VGA_DEVICE, NULL),
+	};
+#undef INTEL_VGA_DEVICE
+	for (uint32_t i = 0; i < ARRAY_SIZE(devids); i++) {
+		if (devids[i] == devinfo->devid)
+			return true;
+	}
+
+	return false;
+}
+
+struct intel_xe_perf *
+intel_xe_perf_for_devinfo(uint32_t device_id,
+			  uint32_t revision,
+			  uint64_t timestamp_frequency,
+			  uint64_t gt_min_freq,
+			  uint64_t gt_max_freq,
+			  const struct intel_xe_topology_info *topology)
+{
+	const struct intel_device_info *devinfo = intel_get_device_info(device_id);
+	struct intel_xe_perf *perf;
+	uint32_t subslice_mask_len;
+	uint32_t eu_mask_len;
+	uint32_t half_max_subslices;
+	uint64_t half_subslices_mask;
+	int bits_per_subslice;
+
+	if (!devinfo)
+		return NULL;
+
+	perf = calloc(1, sizeof(*perf));;
+	perf->root_group = intel_xe_perf_logical_counter_group_new(perf, NULL, "");
+
+	IGT_INIT_LIST_HEAD(&perf->metric_sets);
+
+	/* Initialize the device characterists first. Loading the
+	 * metrics uses that information to detect whether some
+	 * counters are available on a given device (for example BXT
+	 * 2x6 does not have 2 samplers).
+	 */
+	perf->devinfo.devid = device_id;
+	perf->devinfo.graphics_ver = devinfo->graphics_ver;
+	perf->devinfo.revision = revision;
+	perf->devinfo.timestamp_frequency = timestamp_frequency;
+	perf->devinfo.gt_min_freq = gt_min_freq;
+	perf->devinfo.gt_max_freq = gt_max_freq;
+
+	if (devinfo->codename) {
+		snprintf(perf->devinfo.devname, sizeof(perf->devinfo.devname),
+			 "%s", devinfo->codename);
+	}
+
+	/* Store topology. */
+	perf->devinfo.max_slices = topology->max_slices;
+	perf->devinfo.max_subslices_per_slice = topology->max_subslices;
+	perf->devinfo.max_eu_per_subslice = topology->max_eus_per_subslice;
+
+	subslice_mask_len =
+		topology->max_slices * topology->subslice_stride;
+	igt_assert(sizeof(perf->devinfo.subslice_masks) >= subslice_mask_len);
+	memcpy(perf->devinfo.subslice_masks,
+	       &topology->data[topology->subslice_offset],
+	       subslice_mask_len);
+
+	eu_mask_len = topology->eu_stride *
+		topology->max_subslices * topology->max_slices;
+	igt_assert(sizeof(perf->devinfo.eu_masks) >= eu_mask_len);
+	memcpy(perf->devinfo.eu_masks,
+	       &topology->data[topology->eu_offset],
+	       eu_mask_len);
+
+	bits_per_subslice = 8;
+	for (uint32_t s = 0; s < topology->max_slices; s++) {
+		if (!slice_available(topology, s))
+			continue;
+
+		perf->devinfo.slice_mask |= 1ULL << s;
+		for (uint32_t ss = 0; ss < topology->max_subslices; ss++) {
+			if (!subslice_available(topology, s, ss))
+				continue;
+
+			perf->devinfo.subslice_mask |= 1ULL << (s * bits_per_subslice + ss);
+
+			for (uint32_t eu = 0; eu < topology->max_eus_per_subslice; eu++) {
+				if (eu_available(topology, s, ss, eu))
+					perf->devinfo.n_eus++;
+			}
+		}
+	}
+
+	perf->devinfo.n_eu_slices = __builtin_popcount(perf->devinfo.slice_mask);
+	perf->devinfo.n_eu_sub_slices = __builtin_popcount(perf->devinfo.subslice_mask);
+
+	/* Compute number of subslices/dualsubslices in first half of
+	 * the GPU.
+	 */
+	half_max_subslices = topology->max_subslices / 2;
+	half_subslices_mask = perf->devinfo.subslice_mask &
+		((1 << half_max_subslices) - 1);
+	perf->devinfo.n_eu_sub_slices_half_slices = __builtin_popcount(half_subslices_mask);
+
+	/* Valid on most generations except Gen9LP. */
+	perf->devinfo.eu_threads_count = 7;
+
+	/* Most platforms have full 32bit timestamps. */
+	perf->devinfo.oa_timestamp_mask = 0xffffffff;
+	perf->devinfo.oa_timestamp_shift = 0;
+
+	if (devinfo->is_tigerlake) {
+		switch (devinfo->gt) {
+		case 1:
+			intel_xe_perf_load_metrics_tglgt1(perf);
+			break;
+		case 2:
+			intel_xe_perf_load_metrics_tglgt2(perf);
+			break;
+		default:
+			return unsupported_xe_oa_platform(perf);
+		}
+	} else if (devinfo->is_rocketlake) {
+		intel_xe_perf_load_metrics_rkl(perf);
+	} else if (devinfo->is_dg1) {
+		intel_xe_perf_load_metrics_dg1(perf);
+	} else if (devinfo->is_alderlake_s || devinfo->is_alderlake_p ||
+		   devinfo->is_raptorlake_s || devinfo->is_alderlake_n) {
+		intel_xe_perf_load_metrics_adl(perf);
+	} else if (devinfo->is_dg2) {
+		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_acm_gt1(&perf->devinfo))
+			intel_xe_perf_load_metrics_acmgt1(perf);
+		else if (is_acm_gt2(&perf->devinfo))
+			intel_xe_perf_load_metrics_acmgt2(perf);
+		else if (is_acm_gt3(&perf->devinfo))
+			intel_xe_perf_load_metrics_acmgt3(perf);
+		else
+			return unsupported_xe_oa_platform(perf);
+	} else if (intel_graphics_ver(device_id) >= IP_VER(20, 0)) {
+		intel_xe_perf_load_metrics_lnl(perf);
+	} else {
+		return unsupported_xe_oa_platform(perf);
+	}
+
+	return perf;
+}
+
+static bool
+read_fd_uint64(int fd, uint64_t *out_value)
+{
+	char buf[32];
+	int n;
+
+	n = read(fd, buf, sizeof (buf) - 1);
+	if (n < 0)
+		return false;
+
+	buf[n] = '\0';
+	*out_value = strtoull(buf, 0, 0);
+
+	return true;
+}
+
+static bool
+read_sysfs(int sysfs_dir_fd, const char *file_path, uint64_t *out_value)
+{
+	int fd = openat(sysfs_dir_fd, file_path, O_RDONLY);
+	bool res;
+
+	if (fd < 0)
+		return false;
+
+	res = read_fd_uint64(fd, out_value);
+	close(fd);
+
+	return res;
+}
+
+static int
+open_master_sysfs_dir(int drm_fd)
+{
+	char path[128];
+	struct stat st;
+	int sysfs;
+
+	if (fstat(drm_fd, &st) || !S_ISCHR(st.st_mode))
+                return -1;
+
+	snprintf(path, sizeof(path), "/sys/dev/char/%d:%d", major(st.st_rdev), minor(st.st_rdev));
+	sysfs = open(path, O_DIRECTORY);
+	if (sysfs < 0)
+		return sysfs;
+
+	if (minor(st.st_rdev) >= 128) {
+		/* If we were given a renderD* drm_fd, find it's associated cardX node. */
+		char device[100], cmp[100];
+		int device_len, cmp_len, i;
+
+		device_len = readlinkat(sysfs, "device", device, sizeof(device));
+		close(sysfs);
+		if (device_len < 0)
+			return device_len;
+
+		for (i = 0; i < 64; i++) {
+
+			snprintf(path, sizeof(path), "/sys/dev/char/%d:%d", major(st.st_rdev), i);
+			sysfs = open(path, O_DIRECTORY);
+			if (sysfs < 0)
+				continue;
+
+			cmp_len = readlinkat(sysfs, "device", cmp, sizeof(cmp));
+			if (cmp_len == device_len && !memcmp(cmp, device, cmp_len))
+				break;
+
+			close(sysfs);
+			sysfs = -1;
+		}
+	}
+
+	return sysfs;
+}
+
+static void process_hwconfig(void *data, uint32_t len,
+			     struct intel_xe_topology_info *topinfo)
+{
+
+	uint32_t *d = (uint32_t*)data;
+	uint32_t l = len / 4;
+	uint32_t pos = 0;
+
+	while (pos + 2 < l) {
+		if (d[pos + 1] == 1) {
+			switch (d[pos]) {
+			case INTEL_HWCONFIG_MAX_SLICES_SUPPORTED:
+				topinfo->max_slices = d[pos + 2];
+				igt_debug("hwconfig: max_slices %d\n", topinfo->max_slices);
+				break;
+			case INTEL_HWCONFIG_MAX_SUBSLICE:
+			case INTEL_HWCONFIG_MAX_DUAL_SUBSLICES_SUPPORTED:
+				topinfo->max_subslices = d[pos + 2];
+				igt_debug("hwconfig: max_subslices %d\n", topinfo->max_subslices);
+				break;
+			case INTEL_HWCONFIG_MAX_EU_PER_SUBSLICE:
+			case INTEL_HWCONFIG_MAX_NUM_EU_PER_DSS:
+				topinfo->max_eus_per_subslice = d[pos + 2];
+				igt_debug("hwconfig: max_eus_per_subslice %d\n",
+					  topinfo->max_eus_per_subslice);
+				break;
+			default:
+				break;
+			}
+		}
+		pos += 2 + d[pos + 1];
+	}
+}
+
+static void query_hwconfig(int fd, struct intel_xe_topology_info *topinfo)
+{
+	struct drm_xe_device_query query = {
+		.extensions = 0,
+		.query = DRM_XE_DEVICE_QUERY_HWCONFIG,
+		.size = 0,
+		.data = 0,
+	};
+	void *hwconfig;
+
+	igt_assert_eq(igt_ioctl(fd, DRM_IOCTL_XE_DEVICE_QUERY, &query), 0);
+	igt_assert(query.size);
+
+	hwconfig = malloc(query.size);
+	igt_assert(hwconfig);
+
+	query.data = to_user_pointer(hwconfig);
+	igt_assert_eq(igt_ioctl(fd, DRM_IOCTL_XE_DEVICE_QUERY, &query), 0);
+
+	process_hwconfig(hwconfig, query.size, topinfo);
+	free(hwconfig);
+}
+
+struct intel_xe_topology_info *
+xe_fill_topology_info(int drm_fd, uint32_t device_id, uint32_t *topology_size)
+{
+	const struct intel_device_info *devinfo = intel_get_device_info(device_id);
+	struct intel_xe_topology_info topinfo = {};
+	struct intel_xe_topology_info *ptopo;
+	struct drm_xe_query_topology_mask *xe_topo;
+	int pos = 0;
+	u8 *ptr;
+	struct drm_xe_device_query query = {
+		.extensions = 0,
+		.query = DRM_XE_DEVICE_QUERY_GT_TOPOLOGY,
+		.size = 0,
+		.data = 0,
+	};
+
+	/* Only ADL-P, DG2 and newer ip support hwconfig, use hardcoded values for previous */
+	if (intel_graphics_ver(device_id) >= IP_VER(12, 55) || devinfo->is_alderlake_p) {
+		query_hwconfig(drm_fd, &topinfo);
+	} else {
+		topinfo.max_slices = 1;
+		topinfo.max_subslices = 6;
+		topinfo.max_eus_per_subslice = 16;
+	}
+
+	topinfo.subslice_offset = 1;		/* always 1 */
+	topinfo.subslice_stride = DIV_ROUND_UP(topinfo.max_subslices, 8);
+	topinfo.eu_offset = topinfo.subslice_offset + topinfo.subslice_stride;
+	topinfo.eu_stride = DIV_ROUND_UP(topinfo.max_eus_per_subslice, 8);
+
+	/* Allocate and start filling the struct to return */
+	*topology_size = sizeof(topinfo) + topinfo.eu_offset +
+		topinfo.max_subslices * topinfo.eu_stride;
+	*topology_size = ALIGN(*topology_size, 8);
+	ptopo = malloc(*topology_size);
+	igt_assert(ptopo);
+
+	memcpy(ptopo, &topinfo, sizeof(topinfo));
+	ptr = (u8 *)ptopo + sizeof(topinfo);
+	*ptr++ = 0x1;					/* slice mask */
+
+	/* Get xe topology masks */
+	igt_assert_eq(igt_ioctl(drm_fd, DRM_IOCTL_XE_DEVICE_QUERY, &query), 0);
+	igt_assert_neq(query.size, 0);
+
+	xe_topo = malloc(query.size);
+	igt_assert(xe_topo);
+
+	query.data = to_user_pointer(xe_topo);
+	igt_assert_eq(igt_ioctl(drm_fd, DRM_IOCTL_XE_DEVICE_QUERY, &query), 0);
+	igt_debug("Topology size: %d\n", query.size);
+
+	while (query.size >= sizeof(struct drm_xe_query_topology_mask)) {
+		struct drm_xe_query_topology_mask *topo =
+			(struct drm_xe_query_topology_mask*)((unsigned char*)xe_topo + pos);
+		int i, sz = sizeof(struct drm_xe_query_topology_mask) + topo->num_bytes;
+		u64 geom_mask, compute_mask;
+
+		igt_debug(" gt_id: %d type: %d n:%d [%d] ", topo->gt_id, topo->type, topo->num_bytes, sz);
+		for (int j=0; j< topo->num_bytes; j++)
+			igt_debug(" %02x", topo->mask[j]);
+		igt_debug("\n");
+
+		/* i915 only returns topology for gt 0, do the same here */
+		if (topo->gt_id)
+			goto next;
+
+		/* Follow the same order as in xe query_gt_topology() */
+		switch (topo->type) {
+		case DRM_XE_TOPO_DSS_GEOMETRY:
+			igt_assert_lte(ptopo->subslice_stride, 8);	/* Fit in u64 mask */
+			memcpy(&geom_mask, topo->mask, ptopo->subslice_stride);
+			break;
+		case DRM_XE_TOPO_DSS_COMPUTE:
+			memcpy(&compute_mask, topo->mask, ptopo->subslice_stride);
+			geom_mask |= compute_mask;
+			memcpy(ptr, &geom_mask, ptopo->subslice_stride);
+			ptr += ptopo->subslice_stride;
+			break;
+		case DRM_XE_TOPO_EU_PER_DSS:
+			for (i = 0; i < ptopo->max_subslices; i++) {
+				memcpy(ptr, topo->mask, ptopo->eu_stride);
+				ptr += ptopo->eu_stride;
+			}
+			break;
+		case DRM_XE_TOPO_L3_BANK:
+			break;
+		default:
+			igt_assert(0);
+		}
+next:
+		query.size -= sz;
+		pos += sz;
+	}
+
+	free(xe_topo);
+
+	return ptopo;
+}
+
+static struct intel_xe_perf *
+xe_perf_for_fd(int drm_fd, int gt)
+{
+	uint32_t device_id;
+	uint32_t device_revision = 0;
+	uint32_t topology_size;
+	uint64_t gt_min_freq = 0;
+	uint64_t gt_max_freq = 0;
+	struct intel_xe_topology_info *topology;
+	struct intel_xe_perf *ret;
+	int sysfs_dir_fd = open_master_sysfs_dir(drm_fd);
+	char path_min[64], path_max[64];
+	struct drm_xe_query_oa_units *qoa = xe_oa_units(drm_fd);
+	struct drm_xe_oa_unit *oau = (struct drm_xe_oa_unit *)&qoa->oa_units[0];
+
+	if (sysfs_dir_fd < 0) {
+		igt_warn("open_master_sysfs_dir failed\n");
+		return NULL;
+	}
+
+	if (IS_PONTEVECCHIO(xe_dev_id(drm_fd))) {
+		sprintf(path_min, "device/tile%d/gt%d/freq%d/min_freq", gt, gt, gt);
+		sprintf(path_max, "device/tile%d/gt%d/freq%d/max_freq", gt, gt, gt);
+	} else {
+		sprintf(path_min, "device/tile0/gt%d/freq%d/min_freq", gt, gt);
+		sprintf(path_max, "device/tile0/gt%d/freq%d/max_freq", gt, gt);
+	}
+
+	if (!read_sysfs(sysfs_dir_fd, path_min, &gt_min_freq) ||
+	    !read_sysfs(sysfs_dir_fd, path_max, &gt_max_freq)) {
+		igt_warn("Unable to read freqs from sysfs\n");
+		close(sysfs_dir_fd);
+		return NULL;
+	}
+	close(sysfs_dir_fd);
+
+	device_id = intel_get_drm_devid(drm_fd);
+
+	topology = xe_fill_topology_info(drm_fd, device_id, &topology_size);
+	if (!topology) {
+		igt_warn("xe_fill_topology_info failed\n");
+		return NULL;
+	}
+
+	ret = intel_xe_perf_for_devinfo(device_id,
+				     device_revision,
+				     oau->oa_timestamp_freq,
+				     gt_min_freq * 1000000,
+				     gt_max_freq * 1000000,
+				     topology);
+	if (!ret)
+		igt_warn("intel_xe_perf_for_devinfo failed\n");
+
+	free(topology);
+
+	return ret;
+}
+
+struct intel_xe_perf *
+intel_xe_perf_for_fd(int drm_fd, int gt)
+{
+	if (!is_xe_device(drm_fd))
+		return NULL;
+
+	return xe_perf_for_fd(drm_fd, gt);
+}
+
+void
+intel_xe_perf_free(struct intel_xe_perf *perf)
+{
+	struct intel_xe_perf_metric_set *metric_set, *tmp;
+
+	intel_xe_perf_logical_counter_group_free(perf->root_group);
+
+	igt_list_for_each_entry_safe(metric_set, tmp, &perf->metric_sets, link) {
+		igt_list_del(&metric_set->link);
+		intel_xe_perf_metric_set_free(metric_set);
+	}
+
+	free(perf);
+}
+
+void
+intel_xe_perf_add_logical_counter(struct intel_xe_perf *perf,
+				  struct intel_xe_perf_logical_counter *counter,
+				  const char *group_path)
+{
+	const char *group_path_end = group_path + strlen(group_path);
+	struct intel_xe_perf_logical_counter_group *group = perf->root_group, *child_group = NULL;
+	const char *name = group_path;
+
+	while (name < group_path_end) {
+		const char *name_end = strstr(name, "/");
+		char group_name[128] = { 0, };
+		struct intel_xe_perf_logical_counter_group *iter_group;
+
+		if (!name_end)
+			name_end = group_path_end;
+
+		memcpy(group_name, name, name_end - name);
+
+		child_group = NULL;
+		igt_list_for_each_entry(iter_group, &group->groups, link) {
+			if (!strcmp(iter_group->name, group_name)) {
+				child_group = iter_group;
+				break;
+			}
+		}
+
+		if (!child_group)
+			child_group = intel_xe_perf_logical_counter_group_new(perf, group, group_name);
+
+		name = name_end + 1;
+		group = child_group;
+	}
+
+	igt_list_add_tail(&counter->link, &child_group->counters);
+}
+
+void
+intel_xe_perf_add_metric_set(struct intel_xe_perf *perf,
+			     struct intel_xe_perf_metric_set *metric_set)
+{
+	igt_list_add_tail(&metric_set->link, &perf->metric_sets);
+}
+
+static void
+load_metric_set_config(struct intel_xe_perf_metric_set *metric_set, int drm_fd)
+{
+	struct drm_xe_oa_config config;
+	u8 *regs;
+	int ret;
+
+	memset(&config, 0, sizeof(config));
+
+	memcpy(config.uuid, metric_set->hw_config_guid, sizeof(config.uuid));
+
+	config.n_regs = metric_set->n_mux_regs +
+		metric_set->n_b_counter_regs +
+		metric_set->n_flex_regs;
+	config.regs_ptr = to_user_pointer(malloc(2 * config.n_regs * sizeof(u32)));
+	igt_assert(config.regs_ptr);
+	regs = (u8 *)config.regs_ptr;
+
+	memcpy(regs, metric_set->mux_regs, 2 * metric_set->n_mux_regs * sizeof(u32));
+	regs += 2 * metric_set->n_mux_regs * sizeof(u32);
+	memcpy(regs, metric_set->b_counter_regs, 2 * metric_set->n_b_counter_regs * sizeof(u32));
+	regs += 2 * metric_set->n_b_counter_regs * sizeof(u32);
+	memcpy(regs, metric_set->flex_regs, 2 * metric_set->n_flex_regs * sizeof(u32));
+	regs += 2 * metric_set->n_flex_regs * sizeof(u32);
+
+	ret = intel_xe_perf_ioctl(drm_fd, DRM_XE_PERF_OP_ADD_CONFIG, &config);
+	if (ret >= 0)
+		metric_set->perf_oa_metrics_set = ret;
+
+	free((void *)config.regs_ptr);
+}
+
+void
+intel_xe_perf_load_perf_configs(struct intel_xe_perf *perf, int drm_fd)
+{
+	int sysfs_dir_fd = open_master_sysfs_dir(drm_fd);
+	struct dirent *entry;
+	int metrics_dir_fd;
+	DIR *metrics_dir;
+	struct intel_xe_perf_metric_set *metric_set;
+
+	if (sysfs_dir_fd < 0)
+		return;
+
+	metrics_dir_fd = openat(sysfs_dir_fd, "metrics", O_DIRECTORY);
+	close(sysfs_dir_fd);
+	if (metrics_dir_fd < -1)
+		return;
+
+	metrics_dir = fdopendir(metrics_dir_fd);
+	if (!metrics_dir) {
+		close(metrics_dir_fd);
+		return;
+	}
+
+	while ((entry = readdir(metrics_dir))) {
+		bool metric_id_read;
+		uint64_t metric_id;
+		char path[256 + 4];
+		int id_fd;
+
+		if (entry->d_type != DT_DIR)
+			continue;
+
+		snprintf(path, sizeof(path), "%s/id", entry->d_name);
+
+		id_fd = openat(metrics_dir_fd, path, O_RDONLY);
+		if (id_fd < 0)
+			continue;
+
+		metric_id_read = read_fd_uint64(id_fd, &metric_id);
+		close(id_fd);
+
+		if (!metric_id_read)
+			continue;
+
+		igt_list_for_each_entry(metric_set, &perf->metric_sets, link) {
+			if (!strcmp(metric_set->hw_config_guid, entry->d_name)) {
+				metric_set->perf_oa_metrics_set = metric_id;
+				break;
+			}
+		}
+	}
+
+	closedir(metrics_dir);
+
+	igt_list_for_each_entry(metric_set, &perf->metric_sets, link) {
+		if (metric_set->perf_oa_metrics_set)
+			continue;
+
+		load_metric_set_config(metric_set, drm_fd);
+	}
+}
+
+static void
+accumulate_uint32(const uint32_t *report0,
+                  const uint32_t *report1,
+                  uint64_t *deltas)
+{
+	*deltas += (uint32_t)(*report1 - *report0);
+}
+
+static void
+accumulate_uint40(int a_index,
+                  const uint32_t *report0,
+                  const uint32_t *report1,
+                  uint64_t *deltas)
+{
+	const uint8_t *high_bytes0 = (uint8_t *)(report0 + 40);
+	const uint8_t *high_bytes1 = (uint8_t *)(report1 + 40);
+	uint64_t high0 = (uint64_t)(high_bytes0[a_index]) << 32;
+	uint64_t high1 = (uint64_t)(high_bytes1[a_index]) << 32;
+	uint64_t value0 = report0[a_index + 4] | high0;
+	uint64_t value1 = report1[a_index + 4] | high1;
+	uint64_t delta;
+
+	if (value0 > value1)
+		delta = (1ULL << 40) + value1 - value0;
+	else
+		delta = value1 - value0;
+
+	*deltas += delta;
+}
+
+void intel_xe_perf_accumulate_reports(struct intel_xe_perf_accumulator *acc,
+				      const struct intel_xe_perf *perf,
+				      const struct intel_xe_perf_metric_set *metric_set,
+				      const struct intel_xe_perf_record_header *record0,
+				      const struct intel_xe_perf_record_header *record1)
+{
+	const uint32_t *start = (const uint32_t *)(record0 + 1);
+	const uint32_t *end = (const uint32_t *)(record1 + 1);
+	const uint64_t *start64 = (const uint64_t *)(record0 + 1);
+	const uint64_t *end64 = (const uint64_t *)(record1 + 1);
+	uint64_t *deltas = acc->deltas;
+	int idx = 0;
+	int i;
+
+	memset(acc, 0, sizeof(*acc));
+
+	switch (metric_set->perf_oa_format) {
+	case XE_OA_FORMAT_A24u40_A14u32_B8_C8:
+		/* timestamp */
+		if (perf->devinfo.oa_timestamp_shift >= 0)
+			deltas[idx++] += (end[1] - start[1]) << perf->devinfo.oa_timestamp_shift;
+		else
+			deltas[idx++] += (end[1] - start[1]) >> (-perf->devinfo.oa_timestamp_shift);
+		accumulate_uint32(start + 3, end + 3, deltas + idx++); /* clock */
+
+		/* 4x 32bit A0-3 counters... */
+		for (i = 0; i < 4; i++)
+			accumulate_uint32(start + 4 + i, end + 4 + i, deltas + idx++);
+
+		/* 20x 40bit A4-23 counters... */
+		for (i = 0; i < 20; i++)
+			accumulate_uint40(i + 4, start, end, deltas + idx++);
+
+		/* 4x 32bit A24-27 counters... */
+		for (i = 0; i < 4; i++)
+			accumulate_uint32(start + 28 + i, end + 28 + i, deltas + idx++);
+
+		/* 4x 40bit A28-31 counters... */
+		for (i = 0; i < 4; i++)
+			accumulate_uint40(i + 28, start, end, deltas + idx++);
+
+		/* 5x 32bit A32-36 counters... */
+		for (i = 0; i < 5; i++)
+			accumulate_uint32(start + 36 + i, end + 36 + i, deltas + idx++);
+
+		/* 1x 32bit A37 counter... */
+		accumulate_uint32(start + 46, end + 46, deltas + idx++);
+
+		/* 8x 32bit B counters + 8x 32bit C counters... */
+		for (i = 0; i < 16; i++)
+			accumulate_uint32(start + 48 + i, end + 48 + i, deltas + idx++);
+		break;
+
+	case XE_OAR_FORMAT_A32u40_A4u32_B8_C8:
+	case XE_OA_FORMAT_A32u40_A4u32_B8_C8:
+		if (perf->devinfo.oa_timestamp_shift >= 0)
+			deltas[idx++] += (end[1] - start[1]) << perf->devinfo.oa_timestamp_shift;
+		else
+			deltas[idx++] += (end[1] - start[1]) >> (-perf->devinfo.oa_timestamp_shift);
+		accumulate_uint32(start + 3, end + 3, deltas + idx++); /* clock */
+
+		/* 32x 40bit A counters... */
+		for (i = 0; i < 32; i++)
+			accumulate_uint40(i, start, end, deltas + idx++);
+
+		/* 4x 32bit A counters... */
+		for (i = 0; i < 4; i++)
+			accumulate_uint32(start + 36 + i, end + 36 + i, deltas + idx++);
+
+		/* 8x 32bit B counters + 8x 32bit C counters... */
+		for (i = 0; i < 16; i++)
+			accumulate_uint32(start + 48 + i, end + 48 + i, deltas + idx++);
+		break;
+
+	case XE_OAM_FORMAT_MPEC8u32_B8_C8:
+		/* 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;
+
+	case XE_OA_FORMAT_PEC64u64:
+		/* 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];
+
+		/* 64x 64bit PEC counters */
+		for (i = 0; i < 64; i++)
+			deltas[idx++] += end64[4 + i] - start64[4 + i];
+
+		break;
+
+	default:
+		assert(0);
+	}
+}
+
+uint64_t intel_xe_perf_read_record_timestamp(const struct intel_xe_perf *perf,
+					     const struct intel_xe_perf_metric_set *metric_set,
+					     const struct intel_xe_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) {
+       case XE_OA_FORMAT_A24u40_A14u32_B8_C8:
+       case XE_OA_FORMAT_A32u40_A4u32_B8_C8:
+               ts = report32[1];
+               break;
+
+       case XE_OA_FORMAT_PEC64u64:
+               ts = report64[1];
+               break;
+
+       default:
+               assert(0);
+       }
+
+       if (perf->devinfo.oa_timestamp_shift >= 0)
+	       ts <<= perf->devinfo.oa_timestamp_shift;
+       else
+	       ts >>= -perf->devinfo.oa_timestamp_shift;
+
+       return ts;
+}
+
+uint64_t intel_xe_perf_read_record_timestamp_raw(const struct intel_xe_perf *perf,
+						 const struct intel_xe_perf_metric_set *metric_set,
+						 const struct intel_xe_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) {
+       case XE_OA_FORMAT_A24u40_A14u32_B8_C8:
+       case XE_OA_FORMAT_A32u40_A4u32_B8_C8:
+               ts = report32[1];
+               break;
+
+       case XE_OAM_FORMAT_MPEC8u32_B8_C8:
+               ts = report64[1];
+               break;
+
+       default:
+               assert(0);
+       }
+
+       if (perf->devinfo.oa_timestamp_shift >= 0)
+	       ts <<= perf->devinfo.oa_timestamp_shift;
+       else
+	       ts >>= -perf->devinfo.oa_timestamp_shift;
+
+       return ts;
+}
+
+const char *intel_xe_perf_read_report_reason(const struct intel_xe_perf *perf,
+					     const struct intel_xe_perf_record_header *record)
+{
+	const uint32_t *report = (const uint32_t *) (record + 1);
+
+	/* Not really documented on Gfx7/7.5*/
+	if (perf->devinfo.graphics_ver < 8)
+		return "timer";
+
+	/* Gfx8-11 */
+	if (perf->devinfo.graphics_ver < 12) {
+		uint32_t reason = report[0] >> 19;
+		if (reason & (1u << 0))
+			return "timer";
+		if (reason & (1u << 1))
+			return "trigger1";
+		if (reason & (1u << 2))
+			return "trigger2";
+		if (reason & (1u << 3))
+			return "context-switch";
+		if (reason & (1u << 4))
+			return "go-transition";
+
+		if (perf->devinfo.graphics_ver >= 9 &&
+		    reason & (1u << 5))
+			return "clock-ratio-change";
+
+		return "unknown";
+	}
+
+	/* Gfx12 */
+	if (perf->devinfo.graphics_ver <= 12) {
+		uint32_t reason = report[0] >> 19;
+		if (reason & (1u << 0))
+			return "timer";
+		if (reason & (1u << 1))
+			return "trigger1";
+		if (reason & (1u << 2))
+			return "trigger2";
+		if (reason & (1u << 3))
+			return "context-switch";
+		if (reason & (1u << 4))
+			return "go-transition";
+		if (reason & (1u << 5))
+			return "clock-ratio-change";
+		if (reason & (1u << 6))
+			return "mmio-trigger";
+
+		return "unknown";
+	}
+
+	return "unknown";
+}
+
+static void xe_oa_prop_to_ext(struct intel_xe_oa_open_prop *properties,
+			      struct drm_xe_ext_set_property *extn)
+{
+	__u64 *prop = (__u64 *)properties->properties_ptr;
+	struct drm_xe_ext_set_property *ext = extn;
+	int i, j;
+
+	for (i = 0; i < properties->num_properties; i++) {
+		ext->base.name = DRM_XE_OA_EXTENSION_SET_PROPERTY;
+		ext->property = *prop++;
+		ext->value = *prop++;
+		ext++;
+	}
+
+	igt_assert_lte(1, i);
+	ext = extn;
+	for (j = 0; j < i - 1; j++)
+		ext[j].base.next_extension = (__u64)&ext[j + 1];
+}
+
+int intel_xe_perf_ioctl(int fd, enum drm_xe_perf_op op, void *arg)
+{
+#define XE_OA_MAX_SET_PROPERTIES 16
+
+	struct drm_xe_ext_set_property ext[XE_OA_MAX_SET_PROPERTIES] = {};
+
+	/* Chain the PERF layer struct */
+	struct drm_xe_perf_param p = {
+		.extensions = 0,
+		.perf_type = DRM_XE_PERF_TYPE_OA,
+		.perf_op = op,
+		.param = (__u64)((op == DRM_XE_PERF_OP_STREAM_OPEN) ? ext : arg),
+	};
+
+	if (op == DRM_XE_PERF_OP_STREAM_OPEN) {
+		struct intel_xe_oa_open_prop *oprop = (struct intel_xe_oa_open_prop *)arg;
+
+		igt_assert_lte(oprop->num_properties, XE_OA_MAX_SET_PROPERTIES);
+		xe_oa_prop_to_ext(oprop, ext);
+	}
+
+	return igt_ioctl(fd, DRM_IOCTL_XE_PERF, &p);
+}
+
+void intel_xe_perf_ioctl_err(int fd, enum drm_xe_perf_op op, void *arg, int err)
+{
+	igt_assert_eq(intel_xe_perf_ioctl(fd, op, arg), -1);
+	igt_assert_eq(errno, err);
+	errno = 0;
+}
diff --git a/lib/xe/xe_oa.h b/lib/xe/xe_oa.h
new file mode 100644
index 0000000000..c16177ec8e
--- /dev/null
+++ b/lib/xe/xe_oa.h
@@ -0,0 +1,407 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#ifndef XE_OA_H
+#define XE_OA_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdbool.h>
+#include <stdint.h>
+
+#include "igt_list.h"
+#include <xe_drm.h>
+
+#define _DIV_ROUND_UP(a, b)  (((a) + (b) - 1) / (b))
+
+#define INTEL_XE_DEVICE_MAX_SLICES           (8)
+#define INTEL_XE_DEVICE_MAX_SUBSLICES        (32)
+#define INTEL_XE_DEVICE_MAX_EUS_PER_SUBSLICE (16) /* Maximum on gfx12 */
+
+enum intel_xe_oa_format_name {
+	XE_OA_FORMAT_C4_B8 = 1,
+
+	/* Gen8+ */
+	XE_OA_FORMAT_A12,
+	XE_OA_FORMAT_A12_B8_C8,
+	XE_OA_FORMAT_A32u40_A4u32_B8_C8,
+
+	/* DG2 */
+	XE_OAR_FORMAT_A32u40_A4u32_B8_C8,
+	XE_OA_FORMAT_A24u40_A14u32_B8_C8,
+
+	/* DG2/MTL OAC */
+	XE_OAC_FORMAT_A24u64_B8_C8,
+	XE_OAC_FORMAT_A22u32_R2u32_B8_C8,
+
+	/* MTL OAM */
+	XE_OAM_FORMAT_MPEC8u64_B8_C8,
+	XE_OAM_FORMAT_MPEC8u32_B8_C8,
+
+	/* Xe2+ */
+	XE_OA_FORMAT_PEC64u64,
+	XE_OA_FORMAT_PEC64u64_B8_C8,
+	XE_OA_FORMAT_PEC64u32,
+	XE_OA_FORMAT_PEC32u64_G1,
+	XE_OA_FORMAT_PEC32u32_G1,
+	XE_OA_FORMAT_PEC32u64_G2,
+	XE_OA_FORMAT_PEC32u32_G2,
+	XE_OA_FORMAT_PEC36u64_G1_32_G2_4,
+	XE_OA_FORMAT_PEC36u64_G1_4_G2_32,
+
+	XE_OA_FORMAT_MAX,
+};
+
+struct intel_xe_perf_devinfo {
+	char devname[20];
+	char prettyname[100];
+
+	/*
+	 * Always false for gputop, we don't have the additional
+	 * snapshots of register values, only the OA reports.
+	 */
+	bool query_mode;
+
+	bool has_dynamic_configs;
+
+	/* The following fields are prepared for equations from the XML files.
+	 * Their values are build up from the topology fields.
+	 */
+	uint32_t devid;
+	uint32_t graphics_ver;
+	uint32_t revision;
+	/**
+	 * Bit shifting required to put OA report timestamps into
+	 * timestamp_frequency (some HW generations can shift
+	 * timestamp values to the right by a number of bits).
+	 */
+	int32_t  oa_timestamp_shift;
+	/**
+	 * On some platforms only part of the timestamp bits are valid
+	 * (on previous platforms we would get full 32bits, newer
+	 * platforms can have fewer). It's important to know when
+	 * correlating the full 36bits timestamps to the OA report
+	 * timestamps.
+	 */
+	uint64_t  oa_timestamp_mask;
+	/* Frequency of the timestamps in Hz */
+	uint64_t timestamp_frequency;
+	uint64_t gt_min_freq;
+	uint64_t gt_max_freq;
+
+	/* Total number of EUs */
+	uint64_t n_eus;
+	/* Total number of EUs in a slice */
+	uint64_t n_eu_slices;
+	/* Total number of subslices/dualsubslices */
+	uint64_t n_eu_sub_slices;
+	/* Number of subslices/dualsubslices in the first half of the
+	 * slices.
+	 */
+	uint64_t n_eu_sub_slices_half_slices;
+	/* Mask of available subslices/dualsubslices */
+	uint64_t subslice_mask;
+	/* Mask of available slices */
+	uint64_t slice_mask;
+	/* Number of threads in one EU */
+	uint64_t eu_threads_count;
+
+	/**
+	 * Maximu number of slices present on this device (can be more than
+	 * num_slices if some slices are fused).
+	 */
+	uint16_t max_slices;
+
+	/**
+	 * Maximu number of subslices per slice present on this device (can be more
+	 * than the maximum value in the num_subslices[] array if some subslices are
+	 * fused).
+	 */
+	uint16_t max_subslices_per_slice;
+
+	/**
+	 * Stride to access subslice_masks[].
+	 */
+	uint16_t subslice_slice_stride;
+
+	/**
+	 * Maximum number of EUs per subslice (can be more than
+	 * num_eu_per_subslice if some EUs are fused off).
+	 */
+	uint16_t max_eu_per_subslice;
+
+	/**
+	 * Strides to access eu_masks[].
+	 */
+	uint16_t eu_slice_stride;
+	uint16_t eu_subslice_stride;
+
+	/**
+	 * A bit mask of the slices available.
+	 */
+	uint8_t slice_masks[_DIV_ROUND_UP(INTEL_XE_DEVICE_MAX_SLICES, 8)];
+
+	/**
+	 * An array of bit mask of the subslices available, use subslice_slice_stride
+	 * to access this array.
+	 */
+	uint8_t subslice_masks[INTEL_XE_DEVICE_MAX_SLICES *
+			       _DIV_ROUND_UP(INTEL_XE_DEVICE_MAX_SUBSLICES, 8)];
+
+	/**
+	 * An array of bit mask of EUs available, use eu_slice_stride &
+	 * eu_subslice_stride to access this array.
+	 */
+	uint8_t eu_masks[INTEL_XE_DEVICE_MAX_SLICES *
+			 INTEL_XE_DEVICE_MAX_SUBSLICES *
+			 _DIV_ROUND_UP(INTEL_XE_DEVICE_MAX_EUS_PER_SUBSLICE, 8)];
+};
+
+typedef enum {
+	INTEL_XE_PERF_LOGICAL_COUNTER_STORAGE_UINT64,
+	INTEL_XE_PERF_LOGICAL_COUNTER_STORAGE_UINT32,
+	INTEL_XE_PERF_LOGICAL_COUNTER_STORAGE_DOUBLE,
+	INTEL_XE_PERF_LOGICAL_COUNTER_STORAGE_FLOAT,
+	INTEL_XE_PERF_LOGICAL_COUNTER_STORAGE_BOOL32,
+} intel_xe_perf_logical_counter_storage_t;
+
+typedef enum {
+	INTEL_XE_PERF_LOGICAL_COUNTER_TYPE_RAW,
+	INTEL_XE_PERF_LOGICAL_COUNTER_TYPE_DURATION_RAW,
+	INTEL_XE_PERF_LOGICAL_COUNTER_TYPE_DURATION_NORM,
+	INTEL_XE_PERF_LOGICAL_COUNTER_TYPE_EVENT,
+	INTEL_XE_PERF_LOGICAL_COUNTER_TYPE_THROUGHPUT,
+	INTEL_XE_PERF_LOGICAL_COUNTER_TYPE_TIMESTAMP,
+} intel_xe_perf_logical_counter_type_t;
+
+typedef enum {
+	/* size */
+	INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_BYTES,
+
+	/* frequency */
+	INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_HZ,
+
+	/* time */
+	INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_NS,
+	INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_US,
+
+	/**/
+	INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_PIXELS,
+	INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_TEXELS,
+	INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_THREADS,
+	INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_PERCENT,
+
+	/* events */
+	INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_MESSAGES,
+	INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_NUMBER,
+	INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_CYCLES,
+	INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_EVENTS,
+	INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_UTILIZATION,
+
+	/**/
+	INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_EU_SENDS_TO_L3_CACHE_LINES,
+	INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_EU_ATOMIC_REQUESTS_TO_L3_CACHE_LINES,
+	INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_EU_REQUESTS_TO_L3_CACHE_LINES,
+	INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_EU_BYTES_PER_L3_CACHE_LINE,
+	INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_GBPS,
+
+	INTEL_XE_PERF_LOGICAL_COUNTER_UNIT_MAX
+} intel_xe_perf_logical_counter_unit_t;
+
+/* Hold deltas of raw performance counters. */
+struct intel_xe_perf_accumulator {
+#define INTEL_XE_PERF_MAX_RAW_OA_COUNTERS 128
+	uint64_t deltas[INTEL_XE_PERF_MAX_RAW_OA_COUNTERS];
+};
+
+struct intel_xe_perf;
+struct intel_xe_perf_metric_set;
+struct intel_xe_perf_logical_counter {
+	const struct intel_xe_perf_metric_set *metric_set;
+	const char *name;
+	const char *symbol_name;
+	const char *desc;
+	const char *group;
+	bool (*availability)(const struct intel_xe_perf *perf);
+	intel_xe_perf_logical_counter_storage_t storage;
+	intel_xe_perf_logical_counter_type_t type;
+	intel_xe_perf_logical_counter_unit_t unit;
+	union {
+		uint64_t (*max_uint64)(const struct intel_xe_perf *perf,
+				       const struct intel_xe_perf_metric_set *metric_set,
+				       uint64_t *deltas);
+		double (*max_float)(const struct intel_xe_perf *perf,
+				    const struct intel_xe_perf_metric_set *metric_set,
+				    uint64_t *deltas);
+	};
+
+	union {
+		uint64_t (*read_uint64)(const struct intel_xe_perf *perf,
+					const struct intel_xe_perf_metric_set *metric_set,
+					uint64_t *deltas);
+		double (*read_float)(const struct intel_xe_perf *perf,
+				     const struct intel_xe_perf_metric_set *metric_set,
+				     uint64_t *deltas);
+	};
+
+	struct igt_list_head link; /* list from intel_xe_perf_logical_counter_group.counters */
+};
+
+struct intel_xe_perf_register_prog {
+	uint32_t reg;
+	uint32_t val;
+};
+
+struct intel_xe_perf_metric_set {
+	const char *name;
+	const char *symbol_name;
+	const char *hw_config_guid;
+
+	struct intel_xe_perf_logical_counter *counters;
+	int n_counters;
+
+	uint64_t perf_oa_metrics_set;
+	int perf_oa_format;
+	int perf_raw_size;
+
+	/* For indexing into accumulator->deltas[] ... */
+	int gpu_time_offset;
+	int gpu_clock_offset;
+	int a_offset;
+	int b_offset;
+	int c_offset;
+	int perfcnt_offset;
+
+	const struct intel_xe_perf_register_prog *b_counter_regs;
+	uint32_t n_b_counter_regs;
+
+	const struct intel_xe_perf_register_prog *mux_regs;
+	uint32_t n_mux_regs;
+
+	const struct intel_xe_perf_register_prog *flex_regs;
+	uint32_t n_flex_regs;
+
+	struct igt_list_head link;
+};
+
+/* A tree structure with group having subgroups and counters. */
+struct intel_xe_perf_logical_counter_group {
+	char *name;
+
+	struct igt_list_head counters;
+	struct igt_list_head groups;
+
+	struct igt_list_head link;  /* link for intel_xe_perf_logical_counter_group.groups */
+};
+
+struct intel_xe_perf {
+	const char *name;
+
+	struct intel_xe_perf_logical_counter_group *root_group;
+
+	struct igt_list_head metric_sets;
+
+	struct intel_xe_perf_devinfo devinfo;
+};
+
+/* This is identical to 'struct drm_i915_query_topology_info' at present */
+struct intel_xe_topology_info {
+	uint16_t flags;
+	uint16_t max_slices;
+	uint16_t max_subslices;
+	uint16_t max_eus_per_subslice;
+	uint16_t subslice_offset;
+	uint16_t subslice_stride;
+	uint16_t eu_offset;
+	uint16_t eu_stride;
+	uint8_t data[];
+};
+
+struct intel_xe_perf_record_header {
+	uint32_t type;
+	uint16_t pad;
+	uint16_t size;
+};
+
+static inline bool
+intel_xe_perf_devinfo_slice_available(const struct intel_xe_perf_devinfo *devinfo,
+				      int slice)
+{
+	return (devinfo->slice_masks[slice / 8] & (1U << (slice % 8))) != 0;
+}
+
+static inline bool
+intel_xe_perf_devinfo_subslice_available(const struct intel_xe_perf_devinfo *devinfo,
+					 int slice, int subslice)
+{
+	return (devinfo->subslice_masks[slice * devinfo->subslice_slice_stride +
+					subslice / 8] & (1U << (subslice % 8))) != 0;
+}
+
+static inline bool
+intel_xe_perf_devinfo_eu_available(const struct intel_xe_perf_devinfo *devinfo,
+				   int slice, int subslice, int eu)
+{
+	unsigned subslice_offset = slice * devinfo->eu_slice_stride +
+		subslice * devinfo->eu_subslice_stride;
+
+	return (devinfo->eu_masks[subslice_offset + eu / 8] & (1U << eu % 8)) != 0;
+}
+
+struct intel_xe_topology_info *
+xe_fill_topology_info(int drm_fd, uint32_t device_id, uint32_t *topology_size);
+
+struct intel_xe_perf *intel_xe_perf_for_fd(int drm_fd, int gt);
+struct intel_xe_perf *intel_xe_perf_for_devinfo(uint32_t device_id,
+						uint32_t revision,
+						uint64_t timestamp_frequency,
+						uint64_t gt_min_freq,
+						uint64_t gt_max_freq,
+						const struct intel_xe_topology_info *topology);
+void intel_xe_perf_free(struct intel_xe_perf *perf);
+
+void intel_xe_perf_add_logical_counter(struct intel_xe_perf *perf,
+				       struct intel_xe_perf_logical_counter *counter,
+				       const char *group);
+
+void intel_xe_perf_add_metric_set(struct intel_xe_perf *perf,
+				  struct intel_xe_perf_metric_set *metric_set);
+
+void intel_xe_perf_load_perf_configs(struct intel_xe_perf *perf, int drm_fd);
+
+
+struct intel_xe_oa_open_prop {
+	uint32_t num_properties;
+	uint32_t reserved;
+	uint64_t properties_ptr;
+};
+
+void intel_xe_perf_accumulate_reports(struct intel_xe_perf_accumulator *acc,
+				      const struct intel_xe_perf *perf,
+				      const struct intel_xe_perf_metric_set *metric_set,
+				      const struct intel_xe_perf_record_header *record0,
+				      const struct intel_xe_perf_record_header *record1);
+
+uint64_t intel_xe_perf_read_record_timestamp(const struct intel_xe_perf *perf,
+					     const struct intel_xe_perf_metric_set *metric_set,
+					     const struct intel_xe_perf_record_header *record);
+
+uint64_t intel_xe_perf_read_record_timestamp_raw(const struct intel_xe_perf *perf,
+						 const struct intel_xe_perf_metric_set *metric_set,
+						 const struct intel_xe_perf_record_header *record);
+
+const char *intel_xe_perf_read_report_reason(const struct intel_xe_perf *perf,
+					     const struct intel_xe_perf_record_header *record);
+
+int intel_xe_perf_ioctl(int fd, enum drm_xe_perf_op op, void *arg);
+void intel_xe_perf_ioctl_err(int fd, enum drm_xe_perf_op op, void *arg, int err);
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif /* XE_OA_H */
diff --git a/lib/xe/xe_query.c b/lib/xe/xe_query.c
index 145dee8142..84eaaac967 100644
--- a/lib/xe/xe_query.c
+++ b/lib/xe/xe_query.c
@@ -114,6 +114,27 @@ static struct drm_xe_query_mem_regions *xe_query_mem_regions_new(int fd)
 	return mem_regions;
 }
 
+static struct drm_xe_query_oa_units *xe_query_oa_units_new(int fd)
+{
+	struct drm_xe_query_oa_units *oa_units;
+	struct drm_xe_device_query query = {
+		.extensions = 0,
+		.query = DRM_XE_DEVICE_QUERY_OA_UNITS,
+		.size = 0,
+		.data = 0,
+	};
+
+	igt_assert_eq(igt_ioctl(fd, DRM_IOCTL_XE_DEVICE_QUERY, &query), 0);
+
+	oa_units = malloc(query.size);
+	igt_assert(oa_units);
+
+	query.data = to_user_pointer(oa_units);
+	igt_assert_eq(igt_ioctl(fd, DRM_IOCTL_XE_DEVICE_QUERY, &query), 0);
+
+	return oa_units;
+}
+
 static uint64_t native_region_for_gt(const struct drm_xe_query_gt_list *gt_list, int gt)
 {
 	uint64_t region;
@@ -251,6 +272,7 @@ struct xe_device *xe_device_get(int fd)
 	xe_dev->memory_regions = __memory_regions(xe_dev->gt_list);
 	xe_dev->engines = xe_query_engines(fd);
 	xe_dev->mem_regions = xe_query_mem_regions_new(fd);
+	xe_dev->oa_units = xe_query_oa_units_new(fd);
 	xe_dev->vram_size = calloc(xe_dev->gt_list->num_gt, sizeof(*xe_dev->vram_size));
 	xe_dev->visible_vram_size = calloc(xe_dev->gt_list->num_gt, sizeof(*xe_dev->visible_vram_size));
 	for (int gt = 0; gt < xe_dev->gt_list->num_gt; gt++) {
@@ -525,6 +547,22 @@ uint32_t xe_min_page_size(int fd, uint64_t region)
  */
 xe_dev_FN(xe_config, config, struct drm_xe_query_config *);
 
+/**
+ * xe_gt_list:
+ * @fd: xe device fd
+ *
+ * Returns query gts of xe device @fd.
+ */
+xe_dev_FN(xe_gt_list, gt_list, struct drm_xe_query_gt_list *);
+
+/**
+ * xe_oa_units:
+ * @fd: xe device fd
+ *
+ * Returns query gts of xe device @fd.
+ */
+xe_dev_FN(xe_oa_units, oa_units, struct drm_xe_query_oa_units *);
+
 /**
  * xe_number_engine:
  * @fd: xe device fd
diff --git a/lib/xe/xe_query.h b/lib/xe/xe_query.h
index 54115f8f7c..c33f91ca11 100644
--- a/lib/xe/xe_query.h
+++ b/lib/xe/xe_query.h
@@ -38,6 +38,9 @@ struct xe_device {
 	/** @mem_regions: regions memory information and usage */
 	struct drm_xe_query_mem_regions *mem_regions;
 
+	/** @oa_units: information about OA units */
+	struct drm_xe_query_oa_units *oa_units;
+
 	/** @vram_size: array of vram sizes for all gt_list */
 	uint64_t *vram_size;
 
@@ -85,6 +88,8 @@ const char *xe_region_name(uint64_t region);
 uint16_t xe_region_class(int fd, uint64_t region);
 uint32_t xe_min_page_size(int fd, uint64_t region);
 struct drm_xe_query_config *xe_config(int fd);
+struct drm_xe_query_gt_list *xe_gt_list(int fd);
+struct drm_xe_query_oa_units *xe_oa_units(int fd);
 unsigned int xe_number_engines(int fd);
 bool xe_has_vram(int fd);
 uint64_t xe_vram_size(int fd, int gt);
-- 
2.41.0


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

* [PATCH i-g-t 09/27] tests/intel/xe_query: Add OA units query test
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (7 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 08/27] lib/xe: Complete xe_oa lib functionality Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 10/27] tests/intel/xe_oa: Add first tests Ashutosh Dixit
                   ` (22 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

Add test to exercise OA units query.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_query.c | 53 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/tests/intel/xe_query.c b/tests/intel/xe_query.c
index 5b0db4d28b..92f82f6eef 100644
--- a/tests/intel/xe_query.c
+++ b/tests/intel/xe_query.c
@@ -995,6 +995,58 @@ test_query_uc_fw_version_huc(int fd)
 	test_query_uc_fw_version(fd, XE_QUERY_UC_TYPE_HUC);
 }
 
+/**
+ * SUBTEST: query-oa-units
+ * Description: Display fields for OA unit query
+ *
+ * SUBTEST: multigpu-query-oa-units
+ * Description: Display fields for OA unit query for all GPU devices
+ * Sub-category: MultiGPU
+ */
+static void test_query_oa_units(int fd)
+{
+	struct drm_xe_query_oa_units *qoa;
+	struct drm_xe_device_query query = {
+		.extensions = 0,
+		.query = DRM_XE_DEVICE_QUERY_OA_UNITS,
+		.size = 0,
+		.data = 0,
+	};
+	struct drm_xe_oa_unit *oau;
+	int i, j;
+	u8 *poau;
+
+	igt_assert_eq(igt_ioctl(fd, DRM_IOCTL_XE_DEVICE_QUERY, &query), 0);
+
+	qoa = malloc(query.size);
+	igt_assert(qoa);
+
+	query.data = to_user_pointer(qoa);
+	igt_assert_eq(igt_ioctl(fd, DRM_IOCTL_XE_DEVICE_QUERY, &query), 0);
+
+	igt_info("num_oa_units %d\n", qoa->num_oa_units);
+
+	poau = (u8 *)&qoa->oa_units[0];
+	for (i = 0; i < qoa->num_oa_units; i++) {
+		oau = (struct drm_xe_oa_unit *)poau;
+
+		igt_info("-------------------------------\n");
+		igt_info("oa_unit %d\n", i);
+		igt_info("-------------------------------\n");
+		igt_info("oa_unit_id %d\n", oau->oa_unit_id);
+		igt_info("oa_unit_type %d\n", oau->oa_unit_type);
+		igt_info("capabilities %#llx\n", oau->capabilities);
+		igt_info("oa_timestamp_freq %lld\n", oau->oa_timestamp_freq);
+		igt_info("num_engines %lld\n", oau->num_engines);
+		igt_info("Engines:");
+		for (j = 0; j < oau->num_engines; j++)
+			igt_info(" (%d, %d)", oau->eci[j].engine_class,
+				 oau->eci[j].engine_instance);
+		igt_info("\n");
+		poau += sizeof(*oau) + j * sizeof(oau->eci[0]);
+	}
+}
+
 igt_main
 {
 	const struct {
@@ -1011,6 +1063,7 @@ igt_main
 		{ "query-cs-cycles", test_query_engine_cycles },
 		{ "query-uc-fw-version-guc", test_query_uc_fw_version_guc },
 		{ "query-uc-fw-version-huc", test_query_uc_fw_version_huc },
+		{ "query-oa-units", test_query_oa_units },
 		{ "query-invalid-cs-cycles", test_engine_cycles_invalid },
 		{ "query-invalid-query", test_query_invalid_query },
 		{ "query-invalid-size", test_query_invalid_size },
-- 
2.41.0


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

* [PATCH i-g-t 10/27] tests/intel/xe_oa: Add first tests
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (8 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 09/27] tests/intel/xe_query: Add OA units query test Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 11/27] tests/intel/xe_oa: Add some negative tests Ashutosh Dixit
                   ` (21 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

Add "xe-ref-count" and "sysctl-defaults" subtests.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 803 ++++++++++++++++++++++++++++++++++++++++++++
 tests/meson.build   |   2 +
 2 files changed, 805 insertions(+)
 create mode 100644 tests/intel/xe_oa.c

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
new file mode 100644
index 0000000000..5c872b74b2
--- /dev/null
+++ b/tests/intel/xe_oa.c
@@ -0,0 +1,803 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <fcntl.h>
+#include <inttypes.h>
+#include <errno.h>
+#include <signal.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/times.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <time.h>
+#include <poll.h>
+#include <math.h>
+
+#include "drm.h"
+#include "igt.h"
+#include "igt_device.h"
+#include "igt_sysfs.h"
+#include "xe/xe_ioctl.h"
+#include "xe/xe_query.h"
+#include "xe/xe_oa.h"
+
+/**
+ * TEST: perf
+ * Description: Test the Xe OA metrics streaming interface
+ * Category: Core
+ * Mega feature: Performance interface
+ * Sub-category: Performance tests
+ * Functionality: oa
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ */
+
+#define OA_MI_REPORT_PERF_COUNT		((0x28 << 23) | (4 - 2))
+
+#define OAREPORT_REASON_MASK           0x3f
+#define OAREPORT_REASON_SHIFT          19
+#define OAREPORT_REASON_TIMER          (1<<0)
+#define OAREPORT_REASON_INTERNAL       (3<<1)
+#define OAREPORT_REASON_CTX_SWITCH     (1<<3)
+#define OAREPORT_REASON_GO             (1<<4)
+#define OAREPORT_REASON_CLK_RATIO      (1<<5)
+
+#define PIPE_CONTROL_GLOBAL_SNAPSHOT_COUNT_RESET	(1 << 19)
+#define PIPE_CONTROL_SYNC_GFDT	  (1 << 17)
+#define PIPE_CONTROL_NO_WRITE	   (0 << 14)
+#define PIPE_CONTROL_WRITE_IMMEDIATE    (1 << 14)
+#define PIPE_CONTROL_WRITE_DEPTH_COUNT  (2 << 14)
+#define PIPE_CONTROL_RENDER_TARGET_FLUSH (1 << 12)
+#define PIPE_CONTROL_INSTRUCTION_INVALIDATE (1 << 11)
+#define PIPE_CONTROL_ISP_DIS	    (1 << 9)
+#define PIPE_CONTROL_INTERRUPT_ENABLE   (1 << 8)
+/* GT */
+#define PIPE_CONTROL_DATA_CACHE_INVALIDATE      (1 << 5)
+#define PIPE_CONTROL_PPGTT_WRITE	(0 << 2)
+#define PIPE_CONTROL_GLOBAL_GTT_WRITE   (1 << 2)
+
+#define MAX_OA_BUF_SIZE (16 * 1024 * 1024)
+#define OA_BUFFER_SIZE MAX_OA_BUF_SIZE
+
+#define RING_FORCE_TO_NONPRIV_ADDRESS_MASK 0x03fffffc
+/*
+ * Engine specific registers defined as offsets from engine->mmio_base. For
+ * these registers, OR bit[0] with 1 so we can add the mmio_base when running
+ * engine specific test.
+ */
+#define MMIO_BASE_OFFSET 0x1
+
+#define OAG_OASTATUS (0xdafc)
+#define OAG_PERF_COUNTER_B(idx) (0xDA94 + 4 * (idx))
+#define OAG_OATAILPTR (0xdb04)
+#define OAG_OATAILPTR_MASK 0xffffffc0
+#define OAG_OABUFFER (0xdb08)
+
+#define ADD_PROPS(_head, _tail, _key, _value) \
+	do { \
+		igt_assert((_tail - _head) < (DRM_XE_OA_PROPERTY_MAX * 2)); \
+		*_tail++ = DRM_XE_OA_PROPERTY_##_key; \
+		*_tail++ = _value; \
+	} while (0)
+
+struct accumulator {
+#define MAX_RAW_OA_COUNTERS 62
+	enum intel_xe_oa_format_name format;
+
+	uint64_t deltas[MAX_RAW_OA_COUNTERS];
+};
+
+/* OA unit types */
+enum {
+	OAG,
+	OAR,
+	OAM,
+
+	MAX_OA_TYPE,
+};
+
+struct oa_format {
+	const char *name;
+	size_t size;
+	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;
+	int first_a40;
+	int b_off;
+	int n_b;
+	int c_off;
+	int n_c;
+	int oa_type; /* of enum intel_xe_oa_format_name */
+	bool report_hdr_64bit;
+	int counter_select;
+	int counter_size;
+	int bc_report;
+};
+
+static struct oa_format gen12_oa_formats[XE_OA_FORMAT_MAX] = {
+	[XE_OA_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 = DRM_XE_OA_FMT_TYPE_OAG,
+		.counter_select = 5,
+	},
+};
+
+static struct oa_format dg2_oa_formats[XE_OA_FORMAT_MAX] = {
+	[XE_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 = DRM_XE_OA_FMT_TYPE_OAR,
+		.counter_select = 5,
+	},
+	/* This format has A36 and A37 interleaved with high bytes of some A
+	 * counters, so we will accumulate only subset of counters.
+	 */
+	[XE_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 = DRM_XE_OA_FMT_TYPE_OAG,
+		.counter_select = 5,
+	},
+	/* This format has 24 u64 counters ranging from A0 - A35. Until we come
+	 * up with a better mechanism to define missing counters, we will use a
+	 * subset of counters that are indexed by one-increments - A28 - A35.
+	 */
+	[XE_OAC_FORMAT_A24u64_B8_C8] = {
+		"OAC_A24u64_B8_C8", .size = 320,
+		.a64_off = 160, .n_a64 = 8,
+		.b_off = 224, .n_b = 8,
+		.c_off = 256, .n_c = 8, .oa_type = DRM_XE_OA_FMT_TYPE_OAC,
+		.report_hdr_64bit = true,
+		.counter_select = 1, },
+};
+
+static struct oa_format mtl_oa_formats[XE_OA_FORMAT_MAX] = {
+	[XE_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 = DRM_XE_OA_FMT_TYPE_OAR,
+		.counter_select = 5,
+	},
+	/* This format has A36 and A37 interleaved with high bytes of some A
+	 * counters, so we will accumulate only subset of counters.
+	 */
+	[XE_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 = DRM_XE_OA_FMT_TYPE_OAG,
+		.counter_select = 5,
+	},
+
+	/* Treat MPEC countes as A counters for now */
+	[XE_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 = DRM_XE_OA_FMT_TYPE_OAM_MPEC,
+		.report_hdr_64bit = true,
+		.counter_select = 1,
+	},
+	[XE_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 = DRM_XE_OA_FMT_TYPE_OAM_MPEC,
+		.report_hdr_64bit = true,
+		.counter_select = 2,
+	},
+	/* This format has 24 u64 counters ranging from A0 - A35. Until we come
+	 * up with a better mechanism to define missing counters, we will use a
+	 * subset of counters that are indexed by one-increments - A28 - A35.
+	 */
+	[XE_OAC_FORMAT_A24u64_B8_C8] = {
+		"OAC_A24u64_B8_C8", .size = 320,
+		.a64_off = 160, .n_a64 = 8,
+		.b_off = 224, .n_b = 8,
+		.c_off = 256, .n_c = 8, .oa_type = DRM_XE_OA_FMT_TYPE_OAC,
+		.report_hdr_64bit = true,
+		.counter_select = 1, },
+};
+
+static struct oa_format lnl_oa_formats[XE_OA_FORMAT_MAX] = {
+	[XE_OA_FORMAT_PEC64u64] = {
+		"PEC64u64", .size = 576,
+		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
+		.report_hdr_64bit = true,
+		.counter_select = 1,
+		.counter_size = 1,
+		.bc_report = 0 },
+	[XE_OA_FORMAT_PEC64u64_B8_C8] = {
+		"PEC64u64_B8_C8", .size = 640,
+		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
+		.report_hdr_64bit = true,
+		.counter_select = 1,
+		.counter_size = 1,
+		.bc_report = 1 },
+	[XE_OA_FORMAT_PEC64u32] = {
+		"PEC64u32", .size = 320,
+		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
+		.report_hdr_64bit = true,
+		.counter_select = 1,
+		.counter_size = 0,
+		.bc_report = 0 },
+	[XE_OA_FORMAT_PEC32u64_G1] = {
+		"PEC32u64_G1", .size = 320,
+		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
+		.report_hdr_64bit = true,
+		.counter_select = 5,
+		.counter_size = 1,
+		.bc_report = 0 },
+	[XE_OA_FORMAT_PEC32u32_G1] = {
+		"PEC32u32_G1", .size = 192,
+		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
+		.report_hdr_64bit = true,
+		.counter_select = 5,
+		.counter_size = 0,
+		.bc_report = 0 },
+	[XE_OA_FORMAT_PEC32u64_G2] = {
+		"PEC32u64_G2", .size = 320,
+		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
+		.report_hdr_64bit = true,
+		.counter_select = 6,
+		.counter_size = 1,
+		.bc_report = 0 },
+	[XE_OA_FORMAT_PEC32u32_G2] = {
+		"PEC32u64_G2", .size = 192,
+		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
+		.report_hdr_64bit = true,
+		.counter_select = 6,
+		.counter_size = 0,
+		.bc_report = 0 },
+	[XE_OA_FORMAT_PEC36u64_G1_32_G2_4] = {
+		"PEC36u64_G1_32_G2_4", .size = 320,
+		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
+		.report_hdr_64bit = true,
+		.counter_select = 3,
+		.counter_size = 1,
+		.bc_report = 0 },
+	[XE_OA_FORMAT_PEC36u64_G1_4_G2_32] = {
+		"PEC36u64_G1_4_G2_32_G2", .size = 320,
+		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
+		.report_hdr_64bit = true,
+		.counter_select = 4,
+		.counter_size = 1,
+		.bc_report = 0 },
+};
+
+static int drm_fd = -1;
+static int sysfs = -1;
+static int pm_fd = -1;
+static int stream_fd = -1;
+static uint32_t devid;
+
+struct drm_xe_engine_class_instance default_hwe;
+
+static struct intel_xe_perf *intel_xe_perf;
+static uint64_t oa_exp_1_millisec;
+struct intel_mmio_data mmio_data;
+
+static struct intel_xe_perf_metric_set *metric_set(const struct drm_xe_engine_class_instance *hwe)
+{
+	const char *test_set_name = NULL;
+	struct intel_xe_perf_metric_set *metric_set_iter;
+	struct intel_xe_perf_metric_set *test_set = NULL;
+
+	if (hwe->engine_class == DRM_XE_ENGINE_CLASS_RENDER ||
+	    hwe->engine_class == DRM_XE_ENGINE_CLASS_COMPUTE)
+		test_set_name = "TestOa";
+	else if ((hwe->engine_class == DRM_XE_ENGINE_CLASS_VIDEO_DECODE ||
+		  hwe->engine_class == DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE) &&
+		 HAS_OAM(devid))
+		test_set_name = "MediaSet1";
+	else
+		igt_assert(!"reached");
+
+	igt_list_for_each_entry(metric_set_iter, &intel_xe_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_xe_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",
+		  hwe->engine_class,
+		  hwe->engine_instance,
+		  test_set->symbol_name,
+		  test_set->hw_config_guid);
+
+	return test_set;
+}
+#define default_test_set metric_set(&default_hwe)
+
+static void set_fd_flags(int fd, int flags)
+{
+	int old = fcntl(fd, F_GETFL, 0);
+
+	igt_assert_lte(0, old);
+	igt_assert_eq(0, fcntl(fd, F_SETFL, old | flags));
+}
+
+static u32 get_stream_status(int fd)
+{
+	struct drm_xe_oa_stream_status status;
+
+	do_ioctl(fd, DRM_XE_PERF_IOCTL_STATUS, &status);
+
+	return status.oa_status;
+}
+
+static void
+dump_report(const uint32_t *report, uint32_t size, const char *message) {
+	uint32_t i;
+	igt_debug("%s\n", message);
+	for (i = 0; i < size; i += 4) {
+		igt_debug("%08x %08x %08x %08x\n",
+				report[i],
+				report[i + 1],
+				report[i + 2],
+				report[i + 3]);
+	}
+}
+
+static struct oa_format
+get_oa_format(enum intel_xe_oa_format_name format)
+{
+	if (IS_DG2(devid))
+		return dg2_oa_formats[format];
+	else if (IS_METEORLAKE(devid))
+		return mtl_oa_formats[format];
+	else if (intel_graphics_ver(devid) >= IP_VER(20, 0))
+		return lnl_oa_formats[format];
+	else
+		return gen12_oa_formats[format];
+}
+
+static u64 oa_format_fields(u64 name)
+{
+#define FIELD_PREP_ULL(_mask, _val) \
+	(((_val) << (__builtin_ffsll(_mask) - 1)) & (_mask))
+
+	struct oa_format f = get_oa_format(name);
+
+	/* 0 format name is invalid */
+	if (!name)
+		memset(&f, 0xff, sizeof(f));
+
+	return FIELD_PREP_ULL(DRM_XE_OA_FORMAT_MASK_FMT_TYPE, (u64)f.oa_type) |
+		FIELD_PREP_ULL(DRM_XE_OA_FORMAT_MASK_COUNTER_SEL, (u64)f.counter_select) |
+		FIELD_PREP_ULL(DRM_XE_OA_FORMAT_MASK_COUNTER_SIZE, (u64)f.counter_size) |
+		FIELD_PREP_ULL(DRM_XE_OA_FORMAT_MASK_BC_REPORT, (u64)f.bc_report);
+}
+#define __ff oa_format_fields
+
+static void
+__perf_close(int fd)
+{
+	close(fd);
+	stream_fd = -1;
+
+	if (pm_fd >= 0) {
+		close(pm_fd);
+		pm_fd = -1;
+	}
+}
+
+static int
+__perf_open(int fd, struct intel_xe_oa_open_prop *param, bool prevent_pm)
+{
+	int ret;
+	int32_t pm_value = 0;
+
+	if (stream_fd >= 0)
+		__perf_close(stream_fd);
+	if (pm_fd >= 0) {
+		close(pm_fd);
+		pm_fd = -1;
+	}
+
+	ret = intel_xe_perf_ioctl(fd, DRM_XE_PERF_OP_STREAM_OPEN, param);
+
+	igt_assert(ret >= 0);
+	errno = 0;
+
+	if (prevent_pm) {
+		pm_fd = open("/dev/cpu_dma_latency", O_RDWR);
+		igt_assert(pm_fd >= 0);
+
+		igt_assert_eq(write(pm_fd, &pm_value, sizeof(pm_value)), sizeof(pm_value));
+	}
+
+	return ret;
+}
+
+static uint64_t
+read_u64_file(const char *path)
+{
+	FILE *f;
+	uint64_t val;
+
+	f = fopen(path, "r");
+	igt_assert(f);
+
+	igt_assert_eq(fscanf(f, "%"PRIu64, &val), 1);
+
+	fclose(f);
+
+	return val;
+}
+
+static void
+write_u64_file(const char *path, uint64_t val)
+{
+	FILE *f;
+
+	f = fopen(path, "w");
+	igt_assert(f);
+
+	igt_assert(fprintf(f, "%"PRIu64, val) > 0);
+
+	fclose(f);
+}
+
+static uint32_t
+report_reason(const uint32_t *report)
+{
+	return ((report[0] >> OAREPORT_REASON_SHIFT) &
+		OAREPORT_REASON_MASK);
+}
+
+static uint64_t
+oa_timestamp(const uint32_t *report, enum intel_xe_oa_format_name format)
+{
+	struct oa_format fmt = get_oa_format(format);
+
+	return fmt.report_hdr_64bit ? *(uint64_t *)&report[2] : report[1];
+}
+
+static uint64_t
+timebase_scale(uint64_t delta)
+{
+	return (delta * NSEC_PER_SEC) / intel_xe_perf->devinfo.timestamp_frequency;
+}
+
+/* Returns: the largest OA exponent that will still result in a sampling period
+ * less than or equal to the given @period.
+ */
+static int
+max_oa_exponent_for_period_lte(uint64_t period)
+{
+	/* 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.
+	 */
+	for (int i = 0; i < 30; i++) {
+		uint64_t oa_period = timebase_scale(2 << i);
+
+		if (oa_period > period)
+			return max(0, i - 1);
+	}
+
+	igt_assert(!"reached");
+	return -1;
+}
+
+static bool
+oa_report_is_periodic(uint32_t oa_exponent, const uint32_t *report)
+{
+	if (report_reason(report) & OAREPORT_REASON_TIMER)
+		return true;
+
+	return false;
+}
+
+static bool
+init_sys_info(void)
+{
+	igt_assert_neq(devid, 0);
+
+	intel_xe_perf = intel_xe_perf_for_fd(drm_fd, 0);
+	igt_require(intel_xe_perf);
+
+	igt_debug("n_eu_slices: %"PRIu64"\n", intel_xe_perf->devinfo.n_eu_slices);
+	igt_debug("n_eu_sub_slices: %"PRIu64"\n", intel_xe_perf->devinfo.n_eu_sub_slices);
+	igt_debug("n_eus: %"PRIu64"\n", intel_xe_perf->devinfo.n_eus);
+	igt_debug("timestamp_frequency = %"PRIu64"\n",
+		  intel_xe_perf->devinfo.timestamp_frequency);
+	igt_assert_neq(intel_xe_perf->devinfo.timestamp_frequency, 0);
+
+	intel_xe_perf_load_perf_configs(intel_xe_perf, drm_fd);
+
+	oa_exp_1_millisec = max_oa_exponent_for_period_lte(1000000);
+
+	return true;
+}
+
+static void
+read_2_oa_reports(int format_id,
+		  int exponent,
+		  uint32_t *oa_report0,
+		  uint32_t *oa_report1,
+		  bool timer_only)
+{
+	size_t format_size = get_oa_format(format_id).size;
+	uint32_t exponent_mask = (1 << (exponent + 1)) - 1;
+
+	/* Note: we allocate a large buffer so that each read() iteration
+	 * should scrape *all* pending records.
+	 *
+	 * The largest buffer the OA unit supports is 16MB.
+	 *
+	 * Being sure we are fetching all buffered reports allows us to
+	 * potentially throw away / skip all reports whenever we see
+	 * a _REPORT_LOST notification as a way of being sure are
+	 * measurements aren't skewed by a lost report.
+	 *
+	 * Note: that is is useful for some tests but also not something
+	 * applications would be expected to resort to. Lost reports are
+	 * somewhat unpredictable but typically don't pose a problem - except
+	 * to indicate that the OA unit may be over taxed if lots of reports
+	 * are being lost.
+	 */
+	int max_reports = MAX_OA_BUF_SIZE / format_size;
+	int buf_size = format_size * max_reports * 1.5;
+	uint8_t *buf = malloc(buf_size);
+	int n = 0;
+
+	for (int i = 0; i < 1000; i++) {
+		u32 oa_status = 0;
+		ssize_t len;
+
+		while ((len = read(stream_fd, buf, buf_size)) < 0 && errno == EINTR)
+			;
+		if (errno == EIO) {
+			oa_status = get_stream_status(stream_fd);
+			igt_debug("oa_status %#x\n", oa_status);
+			continue;
+		}
+
+		igt_assert(len > 0);
+		igt_debug("read %d bytes\n", (int)len);
+
+		/* Need at least 2 reports */
+		if (len < 2 * format_size)
+			continue;
+
+		for (size_t offset = 0; offset < len; offset += format_size) {
+			const uint32_t *report = (void *)(buf + offset);
+
+			/* Currently the only test that should ever expect to
+			 * see a _BUFFER_LOST error is the buffer_fill test,
+			 * otherwise something bad has probably happened...
+			 */
+			igt_assert(!(oa_status & DRM_XE_OASTATUS_BUFFER_OVERFLOW));
+
+			/* At high sampling frequencies the OA HW might not be
+			 * able to cope with all write requests and will notify
+			 * us that a report was lost. We restart our read of
+			 * two sequential reports due to the timeline blip this
+			 * implies
+			 */
+			if (oa_status & DRM_XE_OASTATUS_REPORT_LOST) {
+				igt_debug("read restart: OA trigger collision / report lost\n");
+				n = 0;
+
+				/* XXX: break, because we don't know where
+				 * within the series of already read reports
+				 * there could be a blip from the lost report.
+				 */
+				break;
+			}
+
+			dump_report(report, format_size / 4, "oa-formats");
+
+			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_u64(oa_timestamp(report, format_id), 0);
+
+			if (timer_only) {
+				if (!oa_report_is_periodic(exponent, report)) {
+					igt_debug("skipping non timer report\n");
+					continue;
+				}
+			}
+
+			if (n++ == 0)
+				memcpy(oa_report0, report, format_size);
+			else {
+				memcpy(oa_report1, report, format_size);
+				free(buf);
+				return;
+			}
+		}
+	}
+
+	free(buf);
+
+	igt_assert(!"reached");
+}
+
+static unsigned read_xe_module_ref(void)
+{
+	FILE *fp = fopen("/proc/modules", "r");
+	char *line = NULL;
+	size_t line_buf_size = 0;
+	int len = 0;
+	unsigned ref_count;
+	char mod[8];
+	int modn = 3;
+
+	igt_assert(fp);
+
+	strcpy(mod, "xe ");
+	while ((len = getline(&line, &line_buf_size, fp)) > 0) {
+		if (strncmp(line, mod, modn) == 0) {
+			unsigned long mem;
+			int ret = sscanf(line + 5, "%lu %u", &mem, &ref_count);
+			igt_assert(ret == 2);
+			goto done;
+		}
+	}
+
+	igt_assert(!"reached");
+
+done:
+	free(line);
+	fclose(fp);
+	return ref_count;
+}
+
+/**
+ * SUBTEST: xe-ref-count
+ * Description: Check that an open oa stream holds a reference on the xe module
+ */
+static void
+test_xe_ref_count(void)
+{
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, 0 /* updated below */,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(0), /* update below */
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, 0, /* update below */
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	unsigned baseline, ref_count0, ref_count1;
+	uint32_t oa_report0[64];
+	uint32_t oa_report1[64];
+
+	/* This should be the first test before the first fixture so no drm_fd
+	 * should have been opened so far...
+	 */
+	igt_assert_eq(drm_fd, -1);
+
+	baseline = read_xe_module_ref();
+	igt_debug("baseline ref count (drm fd closed) = %u\n", baseline);
+
+	drm_fd = __drm_open_driver(DRIVER_XE);
+	if (is_xe_device(drm_fd))
+		xe_device_get(drm_fd);
+	devid = intel_get_drm_devid(drm_fd);
+	sysfs = igt_sysfs_open(drm_fd);
+
+	/* Note: these global variables are only initialized after calling
+	 * init_sys_info()...
+	 */
+	igt_require(init_sys_info());
+	properties[5] = default_test_set->perf_oa_metrics_set;
+	properties[7] = __ff(default_test_set->perf_oa_format);
+	properties[9] = oa_exp_1_millisec;
+
+	ref_count0 = read_xe_module_ref();
+	igt_debug("initial ref count with drm_fd open = %u\n", ref_count0);
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+        set_fd_flags(stream_fd, O_CLOEXEC);
+	ref_count1 = read_xe_module_ref();
+	igt_debug("ref count after opening oa stream = %u\n", ref_count1);
+
+	drm_close_driver(drm_fd);
+	close(sysfs);
+	drm_fd = -1;
+	sysfs = -1;
+	ref_count0 = read_xe_module_ref();
+	igt_debug("ref count after closing drm fd = %u\n", ref_count0);
+
+	read_2_oa_reports(default_test_set->perf_oa_format,
+			  oa_exp_1_millisec,
+			  oa_report0,
+			  oa_report1,
+			  false); /* not just timer reports */
+
+	__perf_close(stream_fd);
+	ref_count0 = read_xe_module_ref();
+	igt_debug("ref count after closing oa stream fd = %u\n", ref_count0);
+}
+
+/**
+ * SUBTEST: sysctl-defaults
+ * Description: Test that perf_stream_paranoid sysctl exists
+ */
+static void
+test_sysctl_defaults(void)
+{
+	int paranoid = read_u64_file("/proc/sys/dev/xe/perf_stream_paranoid");
+
+	igt_assert_eq(paranoid, 1);
+}
+
+igt_main
+{
+	igt_fixture {
+		struct stat sb;
+
+		/*
+		 * Prior tests may have unloaded the module or failed while
+		 * loading/unloading the module. Load xe here before we
+		 * stat the files.
+		 */
+		drm_load_module(DRIVER_XE);
+		srandom(time(NULL));
+		igt_require(!stat("/proc/sys/dev/xe/perf_stream_paranoid", &sb));
+	}
+
+	igt_subtest("xe-ref-count")
+		test_xe_ref_count();
+
+	igt_subtest("sysctl-defaults")
+		test_sysctl_defaults();
+
+	igt_fixture {
+		/* leave sysctl options in their default state... */
+		write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
+
+		if (intel_xe_perf)
+			intel_xe_perf_free(intel_xe_perf);
+
+		drm_close_driver(drm_fd);
+	}
+}
diff --git a/tests/meson.build b/tests/meson.build
index 758ae090c9..288bb7fe79 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -304,6 +304,7 @@ intel_xe_progs = [
 	'xe_mmap',
 	'xe_module_load',
 	'xe_noexec_ping_pong',
+	'xe_oa',
 	'xe_pat',
 	'xe_peer2peer',
 	'xe_pm',
@@ -378,6 +379,7 @@ extra_dependencies = {
 	'perf': [ lib_igt_i915_perf ],
 	'perf_pmu':  [ lib_igt_perf ],
 	'sw_sync': [ libatomic ],
+	'xe_oa': [ lib_igt_xe_oa ],
 }
 
 test_executables = []
-- 
2.41.0


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

* [PATCH i-g-t 11/27] tests/intel/xe_oa: Add some negative tests
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (9 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 10/27] tests/intel/xe_oa: Add first tests Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 12/27] tests/intel/xe_oa: Add "oa-formats" subtest Ashutosh Dixit
                   ` (20 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

Add:
	"non-system-wide-paranoid"
	"invalid-oa-metric-set-id"
	"invalid-oa-format-id"
	"missing-sample-flags"

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 192 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 192 insertions(+)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index 5c872b74b2..97bbd13674 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -301,6 +301,7 @@ struct drm_xe_engine_class_instance default_hwe;
 static struct intel_xe_perf *intel_xe_perf;
 static uint64_t oa_exp_1_millisec;
 struct intel_mmio_data mmio_data;
+static igt_render_copyfunc_t render_copy;
 
 static struct intel_xe_perf_metric_set *metric_set(const struct drm_xe_engine_class_instance *hwe)
 {
@@ -548,6 +549,166 @@ init_sys_info(void)
 	return true;
 }
 
+/**
+ * SUBTEST: non-system-wide-paranoid
+ * Description: CAP_SYS_ADMIN is required to open system wide metrics, unless
+ *		sysctl parameter dev.xe.perf_stream_paranoid == 0
+ */
+static void test_system_wide_paranoid(void)
+{
+	igt_fork(child, 1) {
+		uint64_t properties[] = {
+			DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+			/* Include OA reports in samples */
+			DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+			/* OA unit configuration */
+			DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+			DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+			DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exp_1_millisec,
+		};
+		struct intel_xe_oa_open_prop param = {
+			.num_properties = ARRAY_SIZE(properties) / 2,
+			.properties_ptr = to_user_pointer(properties),
+		};
+
+		write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
+
+		igt_drop_root();
+
+		intel_xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EACCES);
+	}
+
+	igt_waitchildren();
+
+	igt_fork(child, 1) {
+		uint64_t properties[] = {
+			DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+			/* Include OA reports in samples */
+			DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+			/* OA unit configuration */
+			DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+			DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+			DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exp_1_millisec,
+		};
+		struct intel_xe_oa_open_prop param = {
+			.num_properties = ARRAY_SIZE(properties) / 2,
+			.properties_ptr = to_user_pointer(properties),
+		};
+		write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 0);
+
+		igt_drop_root();
+
+		stream_fd = __perf_open(drm_fd, &param, false);
+		__perf_close(stream_fd);
+	}
+
+	igt_waitchildren();
+
+	/* leave in paranoid state */
+	write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
+}
+
+/**
+ * SUBTEST: invalid-oa-metric-set-id
+ * Description: Test behavior for invalid metric set id's
+ */
+static void test_invalid_oa_metric_set_id(void)
+{
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exp_1_millisec,
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, UINT64_MAX,
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+
+	intel_xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EINVAL);
+
+	properties[ARRAY_SIZE(properties) - 1] = 0; /* ID 0 is also be reserved as invalid */
+	intel_xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EINVAL);
+
+	/* Check that we aren't just seeing false positives... */
+	properties[ARRAY_SIZE(properties) - 1] = default_test_set->perf_oa_metrics_set;
+	stream_fd = __perf_open(drm_fd, &param, false);
+	__perf_close(stream_fd);
+
+	/* There's no valid default OA metric set ID... */
+	param.num_properties--;
+	intel_xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EINVAL);
+}
+
+/**
+ * SUBTEST: invalid-oa-format-id
+ * Description: Test behavior for invalid OA format fields
+ */
+static void test_invalid_oa_format_id(void)
+{
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exp_1_millisec,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, UINT64_MAX, /* No __ff() here */
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+
+	intel_xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EINVAL);
+
+	properties[ARRAY_SIZE(properties) - 1] = __ff(0); /* ID 0 is also be reserved as invalid */
+	intel_xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EINVAL);
+
+	/* Check that we aren't just seeing false positives... */
+	properties[ARRAY_SIZE(properties) - 1] = __ff(default_test_set->perf_oa_format);
+	stream_fd = __perf_open(drm_fd, &param, false);
+	__perf_close(stream_fd);
+	/* There's no valid default OA format... */
+	param.num_properties--;
+	intel_xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EINVAL);
+}
+
+/**
+ * SUBTEST: missing-sample-flags
+ * Description: Test behavior for no SAMPLE_OA and no EXEC_QUEUE_ID
+ */
+static void test_missing_sample_flags(void)
+{
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* No _PROP_SAMPLE_xyz flags */
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exp_1_millisec,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+
+	intel_xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EINVAL);
+}
+
 static void
 read_2_oa_reports(int format_id,
 		  int exponent,
@@ -791,6 +952,37 @@ igt_main
 	igt_subtest("sysctl-defaults")
 		test_sysctl_defaults();
 
+	igt_fixture {
+		/* We expect that the ref count test before these fixtures
+		 * should have closed drm_fd...
+		 */
+		igt_assert_eq(drm_fd, -1);
+
+		drm_fd = drm_open_driver(DRIVER_XE);
+		xe_device_get(drm_fd);
+
+		devid = intel_get_drm_devid(drm_fd);
+		sysfs = igt_sysfs_open(drm_fd);
+
+		igt_require(init_sys_info());
+
+		write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
+
+		render_copy = igt_get_render_copyfunc(devid);
+	}
+
+	igt_subtest("non-system-wide-paranoid")
+		test_system_wide_paranoid();
+
+	igt_subtest("invalid-oa-metric-set-id")
+		test_invalid_oa_metric_set_id();
+
+	igt_subtest("invalid-oa-format-id")
+		test_invalid_oa_format_id();
+
+	igt_subtest("missing-sample-flags")
+		test_missing_sample_flags();
+
 	igt_fixture {
 		/* leave sysctl options in their default state... */
 		write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
-- 
2.41.0


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

* [PATCH i-g-t 12/27] tests/intel/xe_oa: Add "oa-formats" subtest
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (10 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 11/27] tests/intel/xe_oa: Add some negative tests Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 13/27] tests/intel/xe_oa: Add oa exponent tests Ashutosh Dixit
                   ` (19 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

Add "oa-formats" subtest.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 550 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 550 insertions(+)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index 97bbd13674..b7de6f7bd2 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -290,6 +290,9 @@ static struct oa_format lnl_oa_formats[XE_OA_FORMAT_MAX] = {
 		.bc_report = 0 },
 };
 
+/* No A counters currently reserved/undefined for gen8+ so far */
+static bool undefined_a_counters[45];
+
 static int drm_fd = -1;
 static int sysfs = -1;
 static int pm_fd = -1;
@@ -476,6 +479,57 @@ write_u64_file(const char *path, uint64_t val)
 	fclose(f);
 }
 
+static uint64_t
+read_report_ticks(const uint32_t *report, enum intel_xe_oa_format_name format)
+{
+
+	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 intel_xe_oa_format_name format)
+{
+	return elapsed_delta(read_report_ticks(report1, format),
+			     read_report_ticks(report0, format), 32);
+}
+
+static void
+read_report_clock_ratios(const uint32_t *report,
+			      uint32_t *slice_freq_mhz,
+			      uint32_t *unslice_freq_mhz)
+{
+	uint32_t unslice_freq = report[0] & 0x1ff;
+	uint32_t slice_freq_low = (report[0] >> 25) & 0x7f;
+	uint32_t slice_freq_high = (report[0] >> 9) & 0x3;
+	uint32_t slice_freq = slice_freq_low | (slice_freq_high << 7);
+
+	*slice_freq_mhz = (slice_freq * 16666) / 1000;
+	*unslice_freq_mhz = (unslice_freq * 16666) / 1000;
+}
+
 static uint32_t
 report_reason(const uint32_t *report)
 {
@@ -483,6 +537,27 @@ report_reason(const uint32_t *report)
 		OAREPORT_REASON_MASK);
 }
 
+static const char *
+read_report_reason(const uint32_t *report)
+{
+	uint32_t reason = report_reason(report);
+
+	if (reason & (1<<0))
+		return "timer";
+	else if (reason & (1<<1))
+	      return "internal trigger 1";
+	else if (reason & (1<<2))
+	      return "internal trigger 2";
+	else if (reason & (1<<3))
+	      return "context switch";
+	else if (reason & (1<<4))
+	      return "GO 1->0 transition (enter RC6)";
+	else if (reason & (1<<5))
+		return "[un]slice clock ratio change";
+	else
+		return "unknown";
+}
+
 static uint64_t
 oa_timestamp(const uint32_t *report, enum intel_xe_oa_format_name format)
 {
@@ -491,6 +566,17 @@ oa_timestamp(const uint32_t *report, enum intel_xe_oa_format_name 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 intel_xe_oa_format_name 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)
 {
@@ -527,6 +613,191 @@ oa_report_is_periodic(uint32_t oa_exponent, const uint32_t *report)
 	return false;
 }
 
+static uint64_t
+read_40bit_a_counter(const uint32_t *report,
+			  enum intel_xe_oa_format_name fmt, int a_id)
+{
+	struct oa_format format = get_oa_format(fmt);
+	uint8_t *a40_high = (((uint8_t *)report) + format.a40_high_off);
+	uint32_t *a40_low = (uint32_t *)(((uint8_t *)report) +
+					 format.a40_low_off);
+	uint64_t high = (uint64_t)(a40_high[a_id]) << 32;
+
+	return a40_low[a_id] | high;
+}
+
+static uint64_t
+xehpsdv_read_64bit_a_counter(const uint32_t *report, enum intel_xe_oa_format_name 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
+get_40bit_a_delta(uint64_t value0, uint64_t value1)
+{
+	if (value0 > value1)
+		return (1ULL << 40) + value1 - value0;
+	else
+		return value1 - value0;
+}
+
+static void
+accumulate_uint64(int a_index,
+		  const uint32_t *report0,
+		  const uint32_t *report1,
+		  enum intel_xe_oa_format_name 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);
+}
+
+/* The TestOa metric set is designed so */
+static void
+sanity_check_reports(const uint32_t *oa_report0, const uint32_t *oa_report1,
+		     enum intel_xe_oa_format_name fmt)
+{
+	struct oa_format format = get_oa_format(fmt);
+	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;
+	uint32_t *rpt0_b = (uint32_t *)(((uint8_t *)oa_report0) +
+					format.b_off);
+	uint32_t *rpt1_b = (uint32_t *)(((uint8_t *)oa_report1) +
+					format.b_off);
+	uint32_t b;
+	uint32_t ref;
+
+	igt_debug("report type: %s->%s\n",
+		  read_report_reason(oa_report0),
+		  read_report_reason(oa_report1));
+
+	freq = time_delta ? (clock_delta * 1000) / time_delta : 0;
+	igt_debug("freq = %"PRIu64"\n", freq);
+
+	igt_debug("clock delta = %"PRIu64"\n", clock_delta);
+
+	max_delta = clock_delta * intel_xe_perf->devinfo.n_eus;
+
+	/* Gen8+ has some 40bit A counters... */
+	for (int j = format.first_a40; j < format.n_a40 + format.first_a40; j++) {
+		uint64_t value0 = read_40bit_a_counter(oa_report0, fmt, j);
+		uint64_t value1 = read_40bit_a_counter(oa_report1, fmt, j);
+		uint64_t delta = get_40bit_a_delta(value0, value1);
+
+		if (undefined_a_counters[j])
+			continue;
+
+		igt_debug("A40_%d: delta = %"PRIu64"\n", j, 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++) {
+		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_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++) {
+		uint32_t *a0 = (uint32_t *)(((uint8_t *)oa_report0) +
+					    format.a_off);
+		uint32_t *a1 = (uint32_t *)(((uint8_t *)oa_report1) +
+					    format.a_off);
+		int a_id = format.first_a + j;
+		uint32_t delta = a1[j] - a0[j];
+
+		if (undefined_a_counters[a_id])
+			continue;
+
+		igt_debug("A%d: delta = %"PRIu32"\n", a_id, 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
+	 * multiple of the gpu clock
+	 */
+	if (format.n_b && (format.oa_type == DRM_XE_OA_FMT_TYPE_OAG || format.oa_type == DRM_XE_OA_FMT_TYPE_OAR)) {
+		if (clock_delta > 0) {
+			b = rpt1_b[0] - rpt0_b[0];
+			igt_debug("B0: delta = %"PRIu32"\n", b);
+			igt_assert_eq(b, 0);
+
+			b = rpt1_b[1] - rpt0_b[1];
+			igt_debug("B1: delta = %"PRIu32"\n", b);
+			igt_assert_eq(b, clock_delta);
+
+			b = rpt1_b[2] - rpt0_b[2];
+			igt_debug("B2: delta = %"PRIu32"\n", b);
+			igt_assert_eq(b, clock_delta);
+
+			b = rpt1_b[3] - rpt0_b[3];
+			ref = clock_delta / 2;
+			igt_debug("B3: delta = %"PRIu32"\n", b);
+			igt_assert(b >= ref - 1 && b <= ref + 1);
+
+			b = rpt1_b[4] - rpt0_b[4];
+			ref = clock_delta / 3;
+			igt_debug("B4: delta = %"PRIu32"\n", b);
+			igt_assert(b >= ref - 1 && b <= ref + 1);
+
+			b = rpt1_b[5] - rpt0_b[5];
+			ref = clock_delta / 3;
+			igt_debug("B5: delta = %"PRIu32"\n", b);
+			igt_assert(b >= ref - 1 && b <= ref + 1);
+
+			b = rpt1_b[6] - rpt0_b[6];
+			ref = clock_delta / 6;
+			igt_debug("B6: delta = %"PRIu32"\n", b);
+			igt_assert(b >= ref - 1 && b <= ref + 1);
+
+			b = rpt1_b[7] - rpt0_b[7];
+			ref = clock_delta * 2 / 3;
+			igt_debug("B7: delta = %"PRIu32"\n", b);
+			igt_assert(b >= ref - 1 && b <= ref + 1);
+		} else {
+			for (int j = 0; j < format.n_b; j++) {
+				b = rpt1_b[j] - rpt0_b[j];
+				igt_debug("B%i: delta = %"PRIu32"\n", j, b);
+				igt_assert_eq(b, 0);
+			}
+		}
+	}
+
+	for (int j = 0; j < format.n_c; j++) {
+		uint32_t *c0 = (uint32_t *)(((uint8_t *)oa_report0) +
+					    format.c_off);
+		uint32_t *c1 = (uint32_t *)(((uint8_t *)oa_report1) +
+					    format.c_off);
+		uint32_t delta = c1[j] - c0[j];
+
+		igt_debug("C%d: delta = %"PRIu32", max_delta=%"PRIu64"\n",
+			  j, delta, max_delta);
+		igt_assert_f(delta <= max_delta,
+			     "C%d: delta = %"PRIu32", max_delta = %"PRIu64"\n",
+			     j, delta, max_delta);
+	}
+}
+
 static bool
 init_sys_info(void)
 {
@@ -815,6 +1086,264 @@ read_2_oa_reports(int format_id,
 	igt_assert(!"reached");
 }
 
+static void
+open_and_read_2_oa_reports(int format_id,
+			   int exponent,
+			   uint32_t *oa_report0,
+			   uint32_t *oa_report1,
+			   bool timer_only,
+			   const struct drm_xe_engine_class_instance *hwe)
+{
+	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(format_id),
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, exponent,
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+	set_fd_flags(stream_fd, O_CLOEXEC);
+
+	read_2_oa_reports(format_id, exponent,
+			  oa_report0, oa_report1, timer_only);
+
+	__perf_close(stream_fd);
+}
+
+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 = %"PRIu64", 2nd = %"PRIu64", delta = %"PRIu64"\n",
+		  ts0, ts1, ts1 - ts0);
+
+	{
+		uint64_t clock0 = read_report_ticks(oa_report0, fmt);
+		uint64_t clock1 = read_report_ticks(oa_report1, fmt);
+
+		igt_debug("CLOCK: 1st = %"PRIu64", 2nd = %"PRIu64", delta = %"PRIu64"\n",
+			  clock0, clock1, clock1 - clock0);
+	}
+
+	{
+		uint32_t slice_freq0, slice_freq1, unslice_freq0, unslice_freq1;
+		const char *reason0 = read_report_reason(oa_report0);
+		const char *reason1 = read_report_reason(oa_report1);
+
+		igt_debug("CTX ID: 1st = %"PRIu32", 2nd = %"PRIu32"\n",
+			  oa_report0[2], oa_report1[2]);
+
+		read_report_clock_ratios(oa_report0,
+					 &slice_freq0, &unslice_freq0);
+		read_report_clock_ratios(oa_report1,
+					 &slice_freq1, &unslice_freq1);
+
+		igt_debug("SLICE CLK: 1st = %umhz, 2nd = %umhz, delta = %d\n",
+			  slice_freq0, slice_freq1,
+			  ((int)slice_freq1 - (int)slice_freq0));
+		igt_debug("UNSLICE CLK: 1st = %umhz, 2nd = %umhz, delta = %d\n",
+			  unslice_freq0, unslice_freq1,
+			  ((int)unslice_freq1 - (int)unslice_freq0));
+
+		igt_debug("REASONS: 1st = \"%s\", 2nd = \"%s\"\n", reason0, reason1);
+	}
+
+	/* Gen8+ has some 40bit A counters... */
+	for (int j = 0; j < format.n_a40; j++) {
+		uint64_t value0 = read_40bit_a_counter(oa_report0, fmt, j);
+		uint64_t value1 = read_40bit_a_counter(oa_report1, fmt, j);
+		uint64_t delta = get_40bit_a_delta(value0, value1);
+
+		if (undefined_a_counters[j])
+			continue;
+
+		igt_debug("A%d: 1st = %"PRIu64", 2nd = %"PRIu64", delta = %"PRIu64"\n",
+			  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);
+		uint32_t *a1 = (uint32_t *)(((uint8_t *)oa_report1) +
+					    format.a_off);
+		int a_id = format.first_a + j;
+		uint32_t delta = a1[j] - a0[j];
+
+		if (undefined_a_counters[a_id])
+			continue;
+
+		igt_debug("A%d: 1st = %"PRIu32", 2nd = %"PRIu32", delta = %"PRIu32"\n",
+			  a_id, a0[j], a1[j], delta);
+	}
+
+	for (int j = 0; j < format.n_b; j++) {
+		uint32_t *b0 = (uint32_t *)(((uint8_t *)oa_report0) +
+					    format.b_off);
+		uint32_t *b1 = (uint32_t *)(((uint8_t *)oa_report1) +
+					    format.b_off);
+		uint32_t delta = b1[j] - b0[j];
+
+		igt_debug("B%d: 1st = %"PRIu32", 2nd = %"PRIu32", delta = %"PRIu32"\n",
+			  j, b0[j], b1[j], delta);
+	}
+
+	for (int j = 0; j < format.n_c; j++) {
+		uint32_t *c0 = (uint32_t *)(((uint8_t *)oa_report0) +
+					    format.c_off);
+		uint32_t *c1 = (uint32_t *)(((uint8_t *)oa_report1) +
+					    format.c_off);
+		uint32_t delta = c1[j] - c0[j];
+
+		igt_debug("C%d: 1st = %"PRIu32", 2nd = %"PRIu32", delta = %"PRIu32"\n",
+			  j, c0[j], c1[j], delta);
+	}
+}
+
+/* Debug function, only useful when reports don't make sense. */
+#if 0
+static void
+print_report(uint32_t *report, int fmt)
+{
+	struct oa_format format = get_oa_format(fmt);
+
+	igt_debug("TIMESTAMP: %"PRIu64"\n", oa_timestamp(report, fmt));
+
+	{
+		uint64_t clock = read_report_ticks(report, fmt);
+
+		igt_debug("CLOCK: %"PRIu64"\n", clock);
+	}
+
+	{
+		uint32_t slice_freq, unslice_freq;
+		const char *reason = read_report_reason(report);
+
+		read_report_clock_ratios(report, &slice_freq, &unslice_freq);
+
+		igt_debug("SLICE CLK: %umhz\n", slice_freq);
+		igt_debug("UNSLICE CLK: %umhz\n", unslice_freq);
+		igt_debug("REASON: \"%s\"\n", reason);
+		igt_debug("CTX ID: %"PRIu32"/%"PRIx32"\n", report[2], report[2]);
+	}
+
+	/* Gen8+ has some 40bit A counters... */
+	for (int j = 0; j < format.n_a40; j++) {
+		uint64_t value = read_40bit_a_counter(report, fmt, j);
+
+		if (undefined_a_counters[j])
+			continue;
+
+		igt_debug("A%d: %"PRIu64"\n", j, value);
+	}
+
+	for (int j = 0; j < format.n_a; j++) {
+		uint32_t *a = (uint32_t *)(((uint8_t *)report) +
+					   format.a_off);
+		int a_id = format.first_a + j;
+
+		if (undefined_a_counters[a_id])
+			continue;
+
+		igt_debug("A%d: %"PRIu32"\n", a_id, a[j]);
+	}
+
+	for (int j = 0; j < format.n_b; j++) {
+		uint32_t *b = (uint32_t *)(((uint8_t *)report) +
+					   format.b_off);
+
+		igt_debug("B%d: %"PRIu32"\n", j, b[j]);
+	}
+
+	for (int j = 0; j < format.n_c; j++) {
+		uint32_t *c = (uint32_t *)(((uint8_t *)report) +
+					   format.c_off);
+
+		igt_debug("C%d: %"PRIu32"\n", j, c[j]);
+	}
+}
+#endif
+
+static bool
+hwe_supports_oa_type(int oa_type, const struct drm_xe_engine_class_instance *hwe)
+{
+	switch (oa_type) {
+	case DRM_XE_OA_FMT_TYPE_OAM:
+	case DRM_XE_OA_FMT_TYPE_OAM_MPEC:
+		return hwe->engine_class == DRM_XE_ENGINE_CLASS_VIDEO_DECODE ||
+		       hwe->engine_class == DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE;
+	case DRM_XE_OA_FMT_TYPE_OAG:
+	case DRM_XE_OA_FMT_TYPE_OAR:
+		return hwe->engine_class == DRM_XE_ENGINE_CLASS_RENDER;
+	case DRM_XE_OA_FMT_TYPE_OAC:
+		return hwe->engine_class == DRM_XE_ENGINE_CLASS_COMPUTE;
+	case DRM_XE_OA_FMT_TYPE_PEC:
+		return hwe->engine_class == DRM_XE_ENGINE_CLASS_RENDER ||
+		       hwe->engine_class == DRM_XE_ENGINE_CLASS_COMPUTE;
+	default:
+		return false;
+	}
+
+}
+
+/**
+ * SUBTEST: oa-formats
+ * Description: Test that supported OA formats work as expected
+ */
+static void test_oa_formats(const struct drm_xe_engine_class_instance *hwe)
+{
+	for (int i = 0; i < XE_OA_FORMAT_MAX; i++) {
+		struct oa_format format = get_oa_format(i);
+		uint32_t oa_report0[format.size / 4];
+		uint32_t oa_report1[format.size / 4];
+
+		if (!format.name) /* sparse, indexed by ID */
+			continue;
+
+		if (!hwe_supports_oa_type(format.oa_type, hwe))
+			continue;
+
+		igt_debug("Checking OA format %s\n", format.name);
+
+		open_and_read_2_oa_reports(i,
+					   oa_exp_1_millisec,
+					   oa_report0,
+					   oa_report1,
+					   false, /* timer reports only */
+					   hwe);
+
+		print_reports(oa_report0, oa_report1, i);
+		sanity_check_reports(oa_report0, oa_report1, i);
+	}
+}
+
+
 static unsigned read_xe_module_ref(void)
 {
 	FILE *fp = fopen("/proc/modules", "r");
@@ -931,8 +1460,25 @@ test_sysctl_defaults(void)
 	igt_assert_eq(paranoid, 1);
 }
 
+#define __for_one_render_engine_0(hwe) \
+	xe_for_each_engine(drm_fd, hwe) \
+		if (hwe->engine_class == DRM_XE_ENGINE_CLASS_RENDER) \
+			break; \
+	for_each_if(hwe->engine_class == DRM_XE_ENGINE_CLASS_RENDER) \
+		igt_dynamic_f("rcs-%d", hwe->engine_instance)
+
+#define __for_one_render_engine(hwe)	      \
+	for (int m = 0, done = 0; !done; m++) \
+		for_each_if(m < xe_number_engines(drm_fd) && \
+			    (hwe = &xe_engine(drm_fd, m)->instance) && \
+			    hwe->engine_class == DRM_XE_ENGINE_CLASS_RENDER && \
+			    (done = 1)) \
+			igt_dynamic_f("rcs-%d", hwe->engine_instance)
+
 igt_main
 {
+	struct drm_xe_engine_class_instance *hwe = NULL;
+
 	igt_fixture {
 		struct stat sb;
 
@@ -983,6 +1529,10 @@ igt_main
 	igt_subtest("missing-sample-flags")
 		test_missing_sample_flags();
 
+	igt_subtest_with_dynamic("oa-formats")
+		__for_one_render_engine(hwe)
+			test_oa_formats(hwe);
+
 	igt_fixture {
 		/* leave sysctl options in their default state... */
 		write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
-- 
2.41.0


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

* [PATCH i-g-t 13/27] tests/intel/xe_oa: Add oa exponent tests
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (11 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 12/27] tests/intel/xe_oa: Add "oa-formats" subtest Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 14/27] tests/intel/xe_oa: buffer-fill, non-zero-reason, enable-disable Ashutosh Dixit
                   ` (18 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

Add "invalid-oa-exponent" and "oa-exponents".

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 415 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 415 insertions(+)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index b7de6f7bd2..46bfd1d16e 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -410,6 +410,27 @@ static u64 oa_format_fields(u64 name)
 }
 #define __ff oa_format_fields
 
+static struct drm_xe_engine_class_instance *oa_unit_engine(int fd, int n)
+{
+	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
+	struct drm_xe_engine_class_instance *hwe = NULL;
+	struct drm_xe_oa_unit *oau;
+	u8 *poau;
+
+	poau = (u8 *)&qoa->oa_units[0];
+	for (int i = 0; i < qoa->num_oa_units; i++) {
+		oau = (struct drm_xe_oa_unit *)poau;
+
+		if (i == n) {
+			hwe = &oau->eci[random() % oau->num_engines];
+			break;
+		}
+		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
+	}
+
+	return hwe;
+}
+
 static void
 __perf_close(int fd)
 {
@@ -604,6 +625,64 @@ max_oa_exponent_for_period_lte(uint64_t period)
 	return -1;
 }
 
+static uint64_t
+oa_exponent_to_ns(int exponent)
+{
+       return 1000000000ULL * (2ULL << exponent) / intel_xe_perf->devinfo.timestamp_frequency;
+}
+
+static bool
+oa_report_ctx_is_valid(uint32_t *report)
+{
+	return report[0] & (1ul << 16);
+}
+
+static uint32_t
+oa_report_get_ctx_id(uint32_t *report)
+{
+	if (!oa_report_ctx_is_valid(report))
+		return 0xffffffff;
+	return report[2];
+}
+
+static void *buf_map(int fd, struct intel_buf *buf, bool write)
+{
+	void *p;
+
+	if (is_xe_device(fd)) {
+		buf->ptr = xe_bo_map(fd, buf->handle, buf->surface[0].size);
+		p = buf->ptr;
+	} else {
+		if (gem_has_llc(fd))
+			p = intel_buf_cpu_map(buf, write);
+		else
+			p = intel_buf_device_map(buf, write);
+	}
+	return p;
+}
+
+static void
+scratch_buf_memset(struct intel_buf *buf, int width, int height, uint32_t color)
+{
+	buf_map(buf_ops_get_fd(buf->bops), buf, true);
+
+	for (int i = 0; i < width * height; i++)
+		buf->ptr[i] = color;
+
+	intel_buf_unmap(buf);
+}
+
+static void
+scratch_buf_init(struct buf_ops *bops,
+		 struct intel_buf *buf,
+		 int width, int height,
+		 uint32_t color)
+{
+	intel_buf_init(bops, buf, width, height, 32, 0,
+		       I915_TILING_NONE, I915_COMPRESSION_NONE);
+	scratch_buf_memset(buf, width, height, color);
+}
+
 static bool
 oa_report_is_periodic(uint32_t oa_exponent, const uint32_t *report)
 {
@@ -1344,6 +1423,304 @@ static void test_oa_formats(const struct drm_xe_engine_class_instance *hwe)
 }
 
 
+enum load {
+	LOW,
+	HIGH
+};
+
+#define LOAD_HELPER_PAUSE_USEC 500
+
+static struct load_helper {
+	int devid;
+	struct buf_ops *bops;
+	uint32_t context_id;
+	uint32_t vm;
+	struct intel_bb *ibb;
+	enum load load;
+	bool exit;
+	struct igt_helper_process igt_proc;
+	struct intel_buf src, dst;
+} lh = { 0, };
+
+static void load_helper_signal_handler(int sig)
+{
+	if (sig == SIGUSR2)
+		lh.load = lh.load == LOW ? HIGH : LOW;
+	else
+		lh.exit = true;
+}
+
+static void load_helper_set_load(enum load load)
+{
+	igt_assert(lh.igt_proc.running);
+
+	if (lh.load == load)
+		return;
+
+	lh.load = load;
+	kill(lh.igt_proc.pid, SIGUSR2);
+}
+
+static void load_helper_run(enum load load)
+{
+	if (!render_copy)
+		return;
+
+	/*
+	 * FIXME fork helpers won't get cleaned up when started from within a
+	 * subtest, so handle the case where it sticks around a bit too long.
+	 */
+	if (lh.igt_proc.running) {
+		load_helper_set_load(load);
+		return;
+	}
+
+	lh.load = load;
+
+	igt_fork_helper(&lh.igt_proc) {
+		signal(SIGUSR1, load_helper_signal_handler);
+		signal(SIGUSR2, load_helper_signal_handler);
+
+		while (!lh.exit) {
+			render_copy(lh.ibb,
+				    &lh.src, 0, 0, 1920, 1080,
+				    &lh.dst, 0, 0);
+
+			intel_bb_sync(lh.ibb);
+
+			/* Lower the load by pausing after every submitted
+			 * write. */
+			if (lh.load == LOW)
+				usleep(LOAD_HELPER_PAUSE_USEC);
+		}
+	}
+}
+
+static void load_helper_stop(void)
+{
+	if (!render_copy)
+		return;
+
+	kill(lh.igt_proc.pid, SIGUSR1);
+	igt_assert(igt_wait_helper(&lh.igt_proc) == 0);
+}
+
+static void load_helper_init(void)
+{
+	if (!render_copy) {
+		igt_info("Running test without render_copy\n");
+		return;
+	}
+
+	lh.devid = intel_get_drm_devid(drm_fd);
+	lh.bops = buf_ops_create(drm_fd);
+	lh.vm = xe_vm_create(drm_fd, 0, 0);
+	lh.context_id = xe_exec_queue_create(drm_fd, lh.vm, &xe_engine(drm_fd, 0)->instance, 0);
+	igt_assert_neq(lh.context_id, 0xffffffff);
+
+	lh.ibb = intel_bb_create_with_context(drm_fd, lh.context_id, lh.vm, NULL, BATCH_SZ);
+
+	scratch_buf_init(lh.bops, &lh.dst, 1920, 1080, 0);
+	scratch_buf_init(lh.bops, &lh.src, 1920, 1080, 0);
+}
+
+static void load_helper_fini(void)
+{
+	if (!render_copy)
+		return;
+
+	if (lh.igt_proc.running)
+		load_helper_stop();
+
+	intel_buf_close(lh.bops, &lh.src);
+	intel_buf_close(lh.bops, &lh.dst);
+	intel_bb_destroy(lh.ibb);
+	xe_exec_queue_destroy(drm_fd, lh.context_id);
+	xe_vm_destroy(drm_fd, lh.vm);
+	buf_ops_destroy(lh.bops);
+}
+
+static bool expected_report_timing_delta(uint32_t delta, uint32_t expected_delta)
+{
+	/*
+	 * On ICL, the OA unit appears to be a bit more relaxed about
+	 * its timing for emitting OA reports (often missing the
+	 * deadline by 1 timestamp).
+	 */
+	if (IS_ICELAKE(devid))
+		return delta <= (expected_delta + 3);
+	else
+		return delta <= expected_delta;
+}
+
+/**
+ * SUBTEST: oa-exponents
+ * Description: Test that oa exponent values behave as expected
+ */
+static void test_oa_exponents(const struct drm_xe_engine_class_instance *hwe)
+{
+	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t fmt = test_set->perf_oa_format;
+
+	load_helper_init();
+	load_helper_run(HIGH);
+
+	/* It's asking a lot to sample with a 160 nanosecond period and the
+	 * test can fail due to buffer overflows if it wasn't possible to
+	 * keep up, so we don't start from an exponent of zero...
+	 */
+	for (int exponent = 5; exponent < 20; exponent++) {
+		uint64_t properties[] = {
+			DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+			/* Include OA reports in samples */
+			DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+			/* OA unit configuration */
+			DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+			DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
+			DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, exponent,
+			DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+		};
+		struct intel_xe_oa_open_prop param = {
+			.num_properties = ARRAY_SIZE(properties) / 2,
+			.properties_ptr = to_user_pointer(properties),
+		};
+		uint64_t expected_timestamp_delta = 2ULL << exponent;
+		size_t format_size = get_oa_format(fmt).size;
+		int max_reports = MAX_OA_BUF_SIZE / format_size;
+		int buf_size = format_size * max_reports * 1.5;
+		uint8_t *buf = calloc(1, buf_size);
+		int ret, n_timer_reports = 0;
+		uint32_t matches = 0;
+#define NUM_TIMER_REPORTS 30
+		uint32_t *reports = malloc(NUM_TIMER_REPORTS * format_size);
+		uint32_t *timer_reports = reports;
+
+		igt_debug("testing OA exponent %d,"
+			  " expected ts delta = %"PRIu64" (%"PRIu64"ns/%.2fus/%.2fms)\n",
+			  exponent, expected_timestamp_delta,
+			  oa_exponent_to_ns(exponent),
+			  oa_exponent_to_ns(exponent) / 1000.0,
+			  oa_exponent_to_ns(exponent) / (1000.0 * 1000.0));
+
+		stream_fd = __perf_open(drm_fd, &param, true /* prevent_pm */);
+
+		while (n_timer_reports < NUM_TIMER_REPORTS) {
+			u32 oa_status = 0;
+
+			while ((ret = read(stream_fd, buf, buf_size)) < 0 && errno == EINTR)
+				;
+			if (errno == EIO) {
+				oa_status = get_stream_status(stream_fd);
+				igt_debug("oa_status %#x\n", oa_status);
+				continue;
+			}
+
+			/* igt_debug(" > read %i bytes\n", ret); */
+			/* We should never have no data. */
+			igt_assert(ret > 0);
+
+			for (int offset = 0;
+			     offset < ret && n_timer_reports < NUM_TIMER_REPORTS;
+			     offset += format_size) {
+				uint32_t *report = (void *)(buf + offset);
+
+				if (oa_status & DRM_XE_OASTATUS_BUFFER_OVERFLOW) {
+					igt_assert(!"reached");
+					break;
+				}
+
+				if (oa_status & DRM_XE_OASTATUS_REPORT_LOST)
+					igt_debug("report loss\n");
+
+				if (!oa_report_is_periodic(exponent, report))
+					continue;
+
+				memcpy(timer_reports, report, format_size);
+				n_timer_reports++;
+				timer_reports += (format_size / 4);
+			}
+		}
+
+		__perf_close(stream_fd);
+
+		igt_debug("report%04i ts=%"PRIx64" hw_id=0x%08x\n", 0,
+			  oa_timestamp(&reports[0], fmt),
+			  oa_report_get_ctx_id(&reports[0]));
+		for (int i = 1; i < n_timer_reports; i++) {
+			uint64_t delta = oa_timestamp_delta(&reports[i],
+							    &reports[i - 1],
+							    fmt);
+
+			igt_debug("report%04i ts=%"PRIx64" hw_id=0x%08x delta=%"PRIu64" %s\n", i,
+				  oa_timestamp(&reports[i], fmt),
+				  oa_report_get_ctx_id(&reports[i]),
+				  delta, expected_report_timing_delta(delta,
+								      expected_timestamp_delta) ? "" : "******");
+
+			matches += expected_report_timing_delta(delta,expected_timestamp_delta);
+		}
+
+		igt_debug("matches=%u/%u\n", matches, n_timer_reports - 1);
+
+		/*
+		 * Expect half the reports to match the timing
+		 * expectation. The results are quite erratic because
+		 * the condition under which the HW reaches
+		 * expectations depends on memory controller pressure
+		 * etc...
+		 */
+		igt_assert_lte(n_timer_reports / 2, matches);
+
+		free(reports);
+	}
+
+	load_helper_stop();
+	load_helper_fini();
+}
+
+/**
+ * SUBTEST: invalid-oa-exponent
+ * Description: Test that invalid exponent values are rejected
+ */
+/* The OA exponent selects a timestamp counter bit to trigger reports on.
+ *
+ * With a 64bit timestamp and least significant bit approx == 80ns then the MSB
+ * equates to > 40 thousand years and isn't exposed via the xe oa interface.
+ *
+ * The max exponent exposed is expected to be 31, which is still a fairly
+ * ridiculous period (>5min) but is the maximum exponent where it's still
+ * possible to use periodic sampling as a means for tracking the overflow of
+ * 32bit OA report timestamps.
+ */
+static void test_invalid_oa_exponent(void)
+{
+	uint64_t properties[] = {
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, 31, /* maximum exponent expected
+						       to be accepted */
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+
+	__perf_close(stream_fd);
+
+	for (int i = 32; i < 65; i++) {
+		properties[7] = i;
+		intel_xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EINVAL);
+	}
+}
+
 static unsigned read_xe_module_ref(void)
 {
 	FILE *fp = fopen("/proc/modules", "r");
@@ -1460,6 +1837,37 @@ test_sysctl_defaults(void)
 	igt_assert_eq(paranoid, 1);
 }
 
+static const char *xe_engine_class_name(uint32_t engine_class)
+{
+	switch (engine_class) {
+		case DRM_XE_ENGINE_CLASS_RENDER:
+			return "rcs";
+		case DRM_XE_ENGINE_CLASS_COPY:
+			return "bcs";
+		case DRM_XE_ENGINE_CLASS_VIDEO_DECODE:
+			return "vcs";
+		case DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE:
+			return "vecs";
+		case DRM_XE_ENGINE_CLASS_COMPUTE:
+			return "ccs";
+		default:
+			igt_warn("Engine class 0x%x unknown\n", engine_class);
+			return "unknown";
+	}
+}
+
+#define __for_one_hwe_in_each_oa_unit(hwe) \
+	for (int m = 0; !m || hwe; m++) \
+		for_each_if(hwe = oa_unit_engine(drm_fd, m)) \
+			igt_dynamic_f("%s-%d", xe_engine_class_name(hwe->engine_class), \
+				      hwe->engine_instance)
+
+/* Only OAG (not OAM) is currently supported */
+#define __for_one_hwe_in_oag(hwe) \
+	if ((hwe = oa_unit_engine(drm_fd, 0))) \
+		igt_dynamic_f("%s-%d", xe_engine_class_name(hwe->engine_class), \
+			      hwe->engine_instance)
+
 #define __for_one_render_engine_0(hwe) \
 	xe_for_each_engine(drm_fd, hwe) \
 		if (hwe->engine_class == DRM_XE_ENGINE_CLASS_RENDER) \
@@ -1533,6 +1941,13 @@ igt_main
 		__for_one_render_engine(hwe)
 			test_oa_formats(hwe);
 
+	igt_subtest("invalid-oa-exponent")
+		test_invalid_oa_exponent();
+
+	igt_subtest_with_dynamic("oa-exponents")
+		__for_one_hwe_in_oag(hwe)
+			test_oa_exponents(hwe);
+
 	igt_fixture {
 		/* leave sysctl options in their default state... */
 		write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
-- 
2.41.0


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

* [PATCH i-g-t 14/27] tests/intel/xe_oa: buffer-fill, non-zero-reason, enable-disable
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (12 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 13/27] tests/intel/xe_oa: Add oa exponent tests Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 15/27] tests/intel/xe_oa: blocking and polling tests Ashutosh Dixit
                   ` (17 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

Add the following tests:
	"buffer-fill"
	"non-zero-reason"
	"disabled-read-error"
	"enable-disable"
	"short-reads"

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 606 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 606 insertions(+)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index 46bfd1d16e..50f6d14670 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -1721,6 +1721,591 @@ static void test_invalid_oa_exponent(void)
 	}
 }
 
+/**
+ * SUBTEST: buffer-fill
+ * Description: Test filling, wraparound and overflow of OA buffer
+ */
+static void
+test_buffer_fill(const struct drm_xe_engine_class_instance *hwe)
+{
+	/* ~5 micro second period */
+	int oa_exponent = max_oa_exponent_for_period_lte(5000);
+	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
+	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t fmt = test_set->perf_oa_format;
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent,
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	size_t report_size = get_oa_format(fmt).size;
+	int buf_size = 65536 * report_size;
+	uint8_t *buf = malloc(buf_size);
+	int len;
+	size_t oa_buf_size = MAX_OA_BUF_SIZE;
+	int n_full_oa_reports = oa_buf_size / report_size;
+	uint64_t fill_duration = n_full_oa_reports * oa_period;
+	uint32_t *last_periodic_report = malloc(report_size);
+	u32 oa_status;
+
+	igt_assert(fill_duration < 1000000000);
+
+	stream_fd = __perf_open(drm_fd, &param, true /* prevent_pm */);
+        set_fd_flags(stream_fd, O_CLOEXEC);
+
+	for (int i = 0; i < 5; i++) {
+		bool overflow_seen;
+		uint32_t n_periodic_reports;
+		uint32_t first_timestamp = 0, last_timestamp = 0;
+
+		do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_ENABLE, 0);
+
+		nanosleep(&(struct timespec){ .tv_sec = 0,
+					      .tv_nsec = fill_duration * 1.25 },
+			  NULL);
+again:
+		oa_status = 0;
+		while ((len = read(stream_fd, buf, buf_size)) == -1 && errno == EINTR)
+			;
+
+		if (errno == EIO) {
+			oa_status = get_stream_status(stream_fd);
+			igt_debug("oa_status %#x\n", oa_status);
+			overflow_seen = oa_status & DRM_XE_OASTATUS_BUFFER_OVERFLOW;
+			igt_assert_eq(overflow_seen, true);
+			goto again;
+		}
+		igt_assert_neq(len, -1);
+
+		do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_DISABLE, 0);
+
+		igt_debug("fill_duration = %"PRIu64"ns, oa_exponent = %u\n",
+			  fill_duration, oa_exponent);
+
+		do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_ENABLE, 0);
+
+		nanosleep(&(struct timespec){ .tv_sec = 0,
+					.tv_nsec = fill_duration / 2 },
+			NULL);
+
+		n_periodic_reports = 0;
+
+		/* Because of the race condition between notification of new
+		 * reports and reports landing in memory, we need to rely on
+		 * timestamps to figure whether we've read enough of them.
+		 */
+		while (((last_timestamp - first_timestamp) * oa_period) < (fill_duration / 2)) {
+
+			igt_debug("dts=%u elapsed=%"PRIu64" duration=%"PRIu64"\n",
+				  last_timestamp - first_timestamp,
+				  (last_timestamp - first_timestamp) * oa_period,
+				  fill_duration / 2);
+again_1:
+			oa_status = 0;
+			while ((len = read(stream_fd, buf, buf_size)) == -1 && errno == EINTR)
+				;
+			if (errno == EIO) {
+				oa_status = get_stream_status(stream_fd);
+				igt_debug("oa_status %#x\n", oa_status);
+				igt_assert(!(oa_status & DRM_XE_OASTATUS_BUFFER_OVERFLOW));
+				goto again_1;
+			}
+			igt_assert_neq(len, -1);
+
+			for (int offset = 0; offset < len; offset += report_size) {
+				uint32_t *report = (void *) (buf + offset);
+
+				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 = oa_timestamp(report, fmt);
+				last_timestamp = oa_timestamp(report, fmt);
+
+				if (oa_report_is_periodic(oa_exponent, report)) {
+					memcpy(last_periodic_report, report, report_size);
+					n_periodic_reports++;
+				}
+			}
+		}
+
+		do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_DISABLE, 0);
+
+		igt_debug("first ts = %u, last ts = %u\n", first_timestamp, last_timestamp);
+
+		igt_debug("%f < %zu < %f\n",
+			  report_size * n_full_oa_reports * 0.45,
+			  n_periodic_reports * report_size,
+			  report_size * n_full_oa_reports * 0.55);
+
+		igt_assert(n_periodic_reports * report_size >
+			   report_size * n_full_oa_reports * 0.45);
+		igt_assert(n_periodic_reports * report_size <
+			   report_size * n_full_oa_reports * 0.55);
+	}
+
+	free(last_periodic_report);
+	free(buf);
+
+	__perf_close(stream_fd);
+}
+
+/**
+ * SUBTEST: non-zero-reason
+ * Description: Test reason field is non-zero. Can also check OA buffer wraparound issues
+ */
+static void
+test_non_zero_reason(const struct drm_xe_engine_class_instance *hwe)
+{
+	/* ~20 micro second period */
+	int oa_exponent = max_oa_exponent_for_period_lte(20000);
+	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t fmt = test_set->perf_oa_format;
+	size_t report_size = get_oa_format(fmt).size;
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent,
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	uint32_t buf_size = 3 * 65536 * report_size;
+	uint8_t *buf = malloc(buf_size);
+	uint32_t total_len = 0;
+	const uint32_t *last_report;
+	int len;
+	u32 oa_status;
+
+	igt_assert(buf);
+
+	igt_debug("Ready to read about %u bytes\n", buf_size);
+
+	load_helper_init();
+	load_helper_run(HIGH);
+
+	stream_fd = __perf_open(drm_fd, &param, true /* prevent_pm */);
+        set_fd_flags(stream_fd, O_CLOEXEC);
+
+	while (total_len < buf_size &&
+	       ((len = read(stream_fd, &buf[total_len], buf_size - total_len)) > 0 ||
+		(len == -1 && (errno == EINTR || errno == EIO)))) {
+		if (errno == EIO) {
+			oa_status = get_stream_status(stream_fd);
+			igt_debug("oa_status %#x\n", oa_status);
+			igt_assert(!(oa_status & DRM_XE_OASTATUS_BUFFER_OVERFLOW));
+		}
+		if (len > 0)
+			total_len += len;
+	}
+
+	__perf_close(stream_fd);
+
+	load_helper_stop();
+	load_helper_fini();
+
+	igt_debug("Got %u bytes\n", total_len);
+
+	last_report = NULL;
+	for (uint32_t offset = 0; offset < total_len; offset += report_size) {
+		const uint32_t *report = (void *) (buf + offset);
+		uint32_t reason = (report[0] >> OAREPORT_REASON_SHIFT) & OAREPORT_REASON_MASK;
+
+		igt_assert_neq(reason, 0);
+
+		if (last_report)
+			sanity_check_reports(last_report, report, fmt);
+
+		last_report = report;
+	}
+
+	free(buf);
+}
+
+/**
+ * SUBTEST: enable-disable
+ * Description: Test that OA stream enable/disable works as expected
+ */
+static void
+test_enable_disable(const struct drm_xe_engine_class_instance *hwe)
+{
+	/* ~5 micro second period */
+	int oa_exponent = max_oa_exponent_for_period_lte(5000);
+	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
+	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t fmt = test_set->perf_oa_format;
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent,
+		DRM_XE_OA_PROPERTY_OA_DISABLED, true,
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	size_t report_size = get_oa_format(fmt).size;
+	int buf_size = 65536 * report_size;
+	uint8_t *buf = malloc(buf_size);
+	size_t oa_buf_size = MAX_OA_BUF_SIZE;
+	int n_full_oa_reports = oa_buf_size / report_size;
+	uint64_t fill_duration = n_full_oa_reports * oa_period;
+	uint32_t *last_periodic_report = malloc(report_size);
+
+	load_helper_init();
+	load_helper_run(HIGH);
+
+	stream_fd = __perf_open(drm_fd, &param, true /* prevent_pm */);
+        set_fd_flags(stream_fd, O_CLOEXEC);
+
+	for (int i = 0; i < 5; i++) {
+		int len;
+		uint32_t n_periodic_reports;
+		uint64_t first_timestamp = 0, last_timestamp = 0;
+		u32 oa_status;
+
+		/* Giving enough time for an overflow might help catch whether
+		 * the OA unit has been enabled even if the driver might at
+		 * least avoid copying reports while disabled.
+		 */
+		nanosleep(&(struct timespec){ .tv_sec = 0,
+					      .tv_nsec = fill_duration * 1.25 },
+			  NULL);
+
+		while ((len = read(stream_fd, buf, buf_size)) == -1 &&
+		       (errno == EINTR || errno == EIO))
+			;
+
+		igt_assert_eq(len, -1);
+		igt_assert_eq(errno, EINVAL);
+
+		do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_ENABLE, 0);
+
+		nanosleep(&(struct timespec){ .tv_sec = 0,
+					      .tv_nsec = fill_duration / 2 },
+			NULL);
+
+		n_periodic_reports = 0;
+
+		/* Because of the race condition between notification of new
+		 * reports and reports landing in memory, we need to rely on
+		 * timestamps to figure whether we've read enough of them.
+		 */
+		while (((last_timestamp - first_timestamp) * oa_period) < (fill_duration / 2)) {
+
+			while ((len = read(stream_fd, buf, buf_size)) == -1 && errno == EINTR)
+				;
+			if (errno == EIO) {
+				oa_status = get_stream_status(stream_fd);
+				igt_debug("oa_status %#x\n", oa_status);
+				igt_assert(!(oa_status & DRM_XE_OASTATUS_BUFFER_OVERFLOW));
+				continue;
+			}
+			igt_assert_neq(len, -1);
+
+			for (int offset = 0; offset < len; offset += report_size) {
+				uint32_t *report = (void *) (buf + offset);
+
+				if (first_timestamp == 0)
+					first_timestamp = oa_timestamp(report, fmt);
+				last_timestamp = oa_timestamp(report, fmt);
+
+				igt_debug(" > report ts=%"PRIx64""
+					  " ts_delta_last_periodic=%s%"PRIu64""
+					  " is_timer=%i ctx_id=0x%8x\n",
+					  oa_timestamp(report, fmt),
+					  oa_report_is_periodic(oa_exponent, report) ? " " : "*",
+					  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));
+
+				if (oa_report_is_periodic(oa_exponent, report)) {
+					memcpy(last_periodic_report, report, report_size);
+
+					/* We want to measure only the periodic reports,
+					 * ctx-switch might inflate the content of the
+					 * buffer and skew or measurement.
+					 */
+					n_periodic_reports++;
+				}
+			}
+		}
+
+		do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_DISABLE, 0);
+
+		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,
+			  n_periodic_reports * report_size,
+			  report_size * n_full_oa_reports * 0.55);
+
+		igt_assert((n_periodic_reports * report_size) >
+			   (report_size * n_full_oa_reports * 0.45));
+		igt_assert((n_periodic_reports * report_size) <
+			   report_size * n_full_oa_reports * 0.55);
+
+
+		/* It's considered an error to read a stream while it's disabled
+		 * since it would block indefinitely...
+		 */
+		len = read(stream_fd, buf, buf_size);
+
+		igt_assert_eq(len, -1);
+		igt_assert_eq(errno, EINVAL);
+	}
+
+	free(last_periodic_report);
+	free(buf);
+
+	__perf_close(stream_fd);
+
+	load_helper_stop();
+	load_helper_fini();
+}
+
+/**
+ * SUBTEST: short-reads
+ * Description: Test behavior for short reads
+ */
+static void
+test_short_reads(void)
+{
+	int oa_exponent = max_oa_exponent_for_period_lte(5000);
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent,
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	size_t record_size = get_oa_format(default_test_set->perf_oa_format).size;
+	size_t page_size = sysconf(_SC_PAGE_SIZE);
+	int zero_fd = open("/dev/zero", O_RDWR|O_CLOEXEC);
+	uint8_t *pages = mmap(NULL, page_size * 2,
+			      PROT_READ|PROT_WRITE, MAP_PRIVATE, zero_fd, 0);
+	u8 *header;
+	int ret, errnum;
+	u32 oa_status;
+
+	igt_assert_neq(zero_fd, -1);
+	close(zero_fd);
+	zero_fd = -1;
+
+	igt_assert(pages);
+
+	ret = mprotect(pages + page_size, page_size, PROT_NONE);
+	igt_assert_eq(ret, 0);
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+
+	nanosleep(&(struct timespec){ .tv_sec = 0, .tv_nsec = 5000000 }, NULL);
+
+	/* At this point there should be lots of pending reports to read */
+
+	/* A read that can return at least one record should result in a short
+	 * read not an EFAULT if the buffer is smaller than the requested read
+	 * size...
+	 *
+	 * Expect to see a sample record here, but at least skip over any
+	 * _RECORD_LOST notifications.
+	 */
+	do {
+		header = (void *)(pages + page_size - record_size);
+		oa_status = 0;
+		ret = read(stream_fd, header, page_size);
+		if (ret < 0 && errno == EIO)
+			oa_status = get_stream_status(stream_fd);
+
+	} while (oa_status & DRM_XE_OASTATUS_REPORT_LOST);
+
+	igt_assert_eq(ret, record_size);
+
+	/* A read that can't return a single record because it would result
+	 * in a fault on buffer overrun should result in an EFAULT error...
+	 *
+	 * Make sure to weed out all report lost errors before verifying EFAULT.
+	 */
+	header = (void *)(pages + page_size - 16);
+	do {
+		oa_status = 0;
+		ret = read(stream_fd, header, page_size);
+		errnum = errno;
+		if (ret < 0 && errno == EIO)
+			oa_status = get_stream_status(stream_fd);
+		errno = errnum;
+	} while (oa_status & DRM_XE_OASTATUS_REPORT_LOST);
+
+	igt_assert_eq(ret, -1);
+	igt_assert_eq(errno, EFAULT);
+
+	/* A read that can't return a single record because the buffer is too
+	 * small should result in an ENOSPC error..
+	 *
+	 * Again, skip over _RECORD_LOST records (smaller than record_size/2)
+	 */
+	do {
+		header = (void *)(pages + page_size - record_size / 2);
+		oa_status = 0;
+		ret = read(stream_fd, header, record_size / 2);
+		errnum = errno;
+		if (ret < 0 && errno == EIO)
+			oa_status = get_stream_status(stream_fd);
+		errno = errnum;
+	} while (oa_status & DRM_XE_OASTATUS_REPORT_LOST);
+
+	igt_assert_eq(ret, -1);
+	igt_assert_eq(errno, ENOSPC);
+
+	__perf_close(stream_fd);
+
+	munmap(pages, page_size * 2);
+}
+
+/**
+ * SUBTEST: non-sampling-read-error
+ * Description: Test that a stream without periodic sampling (no exponent) cannot be read
+ */
+static void
+test_non_sampling_read_error(void)
+{
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* XXX: even without periodic sampling we have to
+		 * specify at least one sample layout property...
+		 */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+
+		/* XXX: no sampling exponent */
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	int ret;
+	uint8_t buf[1024];
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+        set_fd_flags(stream_fd, O_CLOEXEC);
+
+	ret = read(stream_fd, buf, sizeof(buf));
+	igt_assert_eq(ret, -1);
+	igt_assert_eq(errno, EINVAL);
+
+	__perf_close(stream_fd);
+}
+
+/**
+ * SUBTEST: disabled-read-error
+ * Description: Test that attempts to read from a stream while it is disable
+ *		will return EINVAL instead of blocking indefinitely
+ */
+static void
+test_disabled_read_error(void)
+{
+	int oa_exponent = 5; /* 5 micro seconds */
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* XXX: even without periodic sampling we have to
+		 * specify at least one sample layout property...
+		 */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent,
+		DRM_XE_OA_PROPERTY_OA_DISABLED, true,
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	uint32_t oa_report0[64];
+	uint32_t oa_report1[64];
+	uint32_t buf[128] = { 0 };
+	int ret;
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+
+	ret = read(stream_fd, buf, sizeof(buf));
+	igt_assert_eq(ret, -1);
+	igt_assert_eq(errno, EINVAL);
+
+	__perf_close(stream_fd);
+
+	properties[ARRAY_SIZE(properties) - 1] = false; /* Set DISABLED to false */
+	stream_fd = __perf_open(drm_fd, &param, false);
+        set_fd_flags(stream_fd, O_CLOEXEC);
+
+	read_2_oa_reports(default_test_set->perf_oa_format,
+			  oa_exponent,
+			  oa_report0,
+			  oa_report1,
+			  false); /* not just timer reports */
+
+	do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_DISABLE, 0);
+
+	ret = read(stream_fd, buf, sizeof(buf));
+	igt_assert_eq(ret, -1);
+	igt_assert_eq(errno, EINVAL);
+
+	do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_ENABLE, 0);
+
+	read_2_oa_reports(default_test_set->perf_oa_format,
+			  oa_exponent,
+			  oa_report0,
+			  oa_report1,
+			  false); /* not just timer reports */
+
+	__perf_close(stream_fd);
+}
+
 static unsigned read_xe_module_ref(void)
 {
 	FILE *fp = fopen("/proc/modules", "r");
@@ -1948,6 +2533,27 @@ igt_main
 		__for_one_hwe_in_oag(hwe)
 			test_oa_exponents(hwe);
 
+	igt_subtest_with_dynamic("buffer-fill")
+		__for_one_hwe_in_oag(hwe)
+			test_buffer_fill(hwe);
+
+	igt_subtest_with_dynamic("non-zero-reason") {
+		__for_one_hwe_in_oag(hwe)
+			test_non_zero_reason(hwe);
+	}
+
+	igt_subtest("disabled-read-error")
+		test_disabled_read_error();
+	igt_subtest("non-sampling-read-error")
+		test_non_sampling_read_error();
+
+	igt_subtest_with_dynamic("enable-disable")
+		__for_one_hwe_in_oag(hwe)
+			test_enable_disable(hwe);
+
+	igt_subtest("short-reads")
+		test_short_reads();
+
 	igt_fixture {
 		/* leave sysctl options in their default state... */
 		write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
-- 
2.41.0


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

* [PATCH i-g-t 15/27] tests/intel/xe_oa: blocking and polling tests
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (13 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 14/27] tests/intel/xe_oa: buffer-fill, non-zero-reason, enable-disable Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 16/27] tests/intel/xe_oa: OAR/OAC tests Ashutosh Dixit
                   ` (16 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

"blocking", "polling" and "polling-small-buf".

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 463 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 463 insertions(+)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index 50f6d14670..d7f00e78b9 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -431,6 +431,24 @@ static struct drm_xe_engine_class_instance *oa_unit_engine(int fd, int n)
 	return hwe;
 }
 
+static char *
+pretty_print_oa_period(uint64_t oa_period_ns)
+{
+	static char result[100];
+	static const char *units[4] = { "ns", "us", "ms", "s" };
+	double val = oa_period_ns;
+	int iter = 0;
+
+	while (iter < (ARRAY_SIZE(units) - 1) &&
+	       val >= 1000.0f) {
+		val /= 1000.0f;
+		iter++;
+	}
+
+	snprintf(result, sizeof(result), "%.3f%s", val, units[iter]);
+	return result;
+}
+
 static void
 __perf_close(int fd)
 {
@@ -1721,6 +1739,432 @@ static void test_invalid_oa_exponent(void)
 	}
 }
 
+static int64_t
+get_time(void)
+{
+	struct timespec ts;
+
+	clock_gettime(CLOCK_MONOTONIC, &ts);
+
+	return ts.tv_sec * 1000000000 + ts.tv_nsec;
+}
+
+/**
+ * SUBTEST: blocking
+ * Description: Test blocking reads
+ */
+/* Note: The interface doesn't currently provide strict guarantees or control
+ * over the upper bound for how long it might take for a POLLIN event after
+ * some OA report is written by the OA unit.
+ *
+ * The plan is to add a property later that gives some control over the maximum
+ * latency, but for now we expect it is tuned for a fairly low latency
+ * suitable for applications wanting to provide live feedback for captured
+ * metrics.
+ *
+ * At the time of writing this test the driver was using a fixed 200Hz hrtimer
+ * regardless of the OA sampling exponent.
+ *
+ * There is no lower bound since a stream configured for periodic sampling may
+ * still contain other automatically triggered reports.
+ *
+ * What we try and check for here is that blocking reads don't return EAGAIN
+ * and that we aren't spending any significant time burning the cpu in
+ * kernelspace.
+ */
+static void test_blocking(uint64_t requested_oa_period,
+			  bool set_kernel_hrtimer,
+			  uint64_t kernel_hrtimer,
+			  const struct drm_xe_engine_class_instance *hwe)
+{
+	int oa_exponent = max_oa_exponent_for_period_lte(requested_oa_period);
+	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
+	uint64_t props[DRM_XE_OA_PROPERTY_MAX * 2];
+	uint64_t *idx = props;
+	struct intel_xe_oa_open_prop param;
+	uint8_t buf[1024 * 1024];
+	struct tms start_times;
+	struct tms end_times;
+	int64_t user_ns, kernel_ns;
+	int64_t tick_ns = 1000000000 / sysconf(_SC_CLK_TCK);
+	int64_t test_duration_ns = tick_ns * 100;
+	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
+	 * give any control over this in the api.
+	 *
+	 * We assume a maximum latency of 6 millisecond to deliver a POLLIN and
+	 * read() after a new sample is written (46ms per iteration) considering
+	 * the knowledge that that the driver uses a 200Hz hrtimer (5ms period)
+	 * to check for data and giving some time to read().
+	 */
+	int min_iterations = (test_duration_ns / (oa_period + kernel_hrtimer + kernel_hrtimer / 5));
+	int64_t start, end;
+	int n = 0;
+	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	size_t format_size = get_oa_format(test_set->perf_oa_format).size;
+
+	ADD_PROPS(props, idx, SAMPLE_OA, true);
+	ADD_PROPS(props, idx, OA_METRIC_SET, test_set->perf_oa_metrics_set);
+	ADD_PROPS(props, idx, OA_FORMAT, __ff(test_set->perf_oa_format));
+	ADD_PROPS(props, idx, OA_PERIOD_EXPONENT, oa_exponent);
+	ADD_PROPS(props, idx, OA_DISABLED, true);
+	ADD_PROPS(props, idx, OA_UNIT_ID, 0);
+	ADD_PROPS(props, idx, OA_ENGINE_INSTANCE, hwe->engine_instance);
+
+	param.num_properties = (idx - props) / 2;
+	param.properties_ptr = to_user_pointer(props);
+
+	perf_fd = __perf_open(drm_fd, &param, true /* prevent_pm */);
+        set_fd_flags(perf_fd, O_CLOEXEC);
+
+	times(&start_times);
+
+	igt_debug("tick length = %dns, test duration = %"PRIu64"ns, min iter. = %d,"
+		  " estimated max iter. = %d, oa_period = %s\n",
+		  (int)tick_ns, test_duration_ns,
+		  min_iterations, max_iterations,
+		  pretty_print_oa_period(oa_period));
+
+	/* In the loop we perform blocking polls while the HW is sampling at
+	 * ~25Hz, with the expectation that we spend most of our time blocked
+	 * in the kernel, and shouldn't be burning cpu cycles in the kernel in
+	 * association with this process (verified by looking at stime before
+	 * and after loop).
+	 *
+	 * We're looking to assert that less than 1% of the test duration is
+	 * spent in the kernel dealing with polling and read()ing.
+	 *
+	 * The test runs for a relatively long time considering the very low
+	 * resolution of stime in ticks of typically 10 milliseconds. Since we
+	 * don't know the fractional part of tick values we read from userspace
+	 * so our minimum threshold needs to be >= one tick since any
+	 * measurement might really be +- tick_ns (assuming we effectively get
+	 * floor(real_stime)).
+	 *
+	 * We Loop for 1000 x tick_ns so one tick corresponds to 0.1%
+	 *
+	 * Also enable the stream just before poll/read to minimize
+	 * the error delta.
+	 */
+	start = get_time();
+	do_ioctl(perf_fd, DRM_XE_PERF_IOCTL_ENABLE, 0);
+	for (/* nop */; ((end = get_time()) - start) < test_duration_ns; /* nop */) {
+		bool timer_report_read = false;
+		bool non_timer_report_read = false;
+		int ret;
+
+		while ((ret = read(perf_fd, buf, sizeof(buf))) < 0 &&
+		       (errno == EINTR || errno == EIO))
+			;
+		igt_assert(ret > 0);
+
+		for (int offset = 0; offset < ret; offset += format_size) {
+			uint32_t *report = (void *)(buf + offset);
+
+			if (oa_report_is_periodic(oa_exponent, report))
+				timer_report_read = true;
+			else
+				non_timer_report_read = true;
+		}
+
+		if (non_timer_report_read && !timer_report_read)
+			n_extra_iterations++;
+
+		n++;
+	}
+
+	times(&end_times);
+
+	/* Using nanosecond units is fairly silly here, given the tick in-
+	 * precision - ah well, it's consistent with the get_time() units.
+	 */
+	user_ns = (end_times.tms_utime - start_times.tms_utime) * tick_ns;
+	kernel_ns = (end_times.tms_stime - start_times.tms_stime) * tick_ns;
+
+	igt_debug("%d blocking reads during test with %"PRIu64" Hz OA sampling (expect no more than %d)\n",
+		  n, NSEC_PER_SEC / oa_period, max_iterations);
+	igt_debug("%d extra iterations seen, not related to periodic sampling (e.g. context switches)\n",
+		  n_extra_iterations);
+	igt_debug("time in userspace = %"PRIu64"ns (+-%dns) (start utime = %d, end = %d)\n",
+		  user_ns, (int)tick_ns,
+		  (int)start_times.tms_utime, (int)end_times.tms_utime);
+	igt_debug("time in kernelspace = %"PRIu64"ns (+-%dns) (start stime = %d, end = %d)\n",
+		  kernel_ns, (int)tick_ns,
+		  (int)start_times.tms_stime, (int)end_times.tms_stime);
+
+	/* With completely broken blocking (but also not returning an error) we
+	 * could end up with an open loop,
+	 */
+	igt_assert(n <= (max_iterations + n_extra_iterations));
+
+	/* Make sure the driver is reporting new samples with a reasonably
+	 * low latency...
+	 */
+	igt_assert(n > (min_iterations + n_extra_iterations));
+
+	if (!set_kernel_hrtimer)
+		igt_assert(kernel_ns <= (test_duration_ns / 100ull));
+
+	__perf_close(perf_fd);
+}
+
+/**
+ * SUBTEST: polling
+ * Description: Test polled reads
+ */
+static void test_polling(uint64_t requested_oa_period,
+			 bool set_kernel_hrtimer,
+			 uint64_t kernel_hrtimer,
+			 const struct drm_xe_engine_class_instance *hwe)
+{
+	int oa_exponent = max_oa_exponent_for_period_lte(requested_oa_period);
+	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
+	uint64_t props[DRM_XE_OA_PROPERTY_MAX * 2];
+	uint64_t *idx = props;
+	struct intel_xe_oa_open_prop param;
+	uint8_t buf[1024 * 1024];
+	struct tms start_times;
+	struct tms end_times;
+	int64_t user_ns, kernel_ns;
+	int64_t tick_ns = 1000000000 / sysconf(_SC_CLK_TCK);
+	int64_t test_duration_ns = tick_ns * 100;
+
+	int max_iterations = (test_duration_ns / oa_period) + 2;
+	int n_extra_iterations = 0;
+
+	/* It's a bit tricky to put a lower limit here, but we expect a
+	 * relatively low latency for seeing reports.
+	 *
+	 * We assume a maximum latency of kernel_hrtimer + some margin
+	 * to deliver a POLLIN and read() after a new sample is
+	 * written (40ms + hrtimer + margin per iteration) considering
+	 * the knowledge that that the driver uses a 200Hz hrtimer
+	 * (5ms period) to check for data and giving some time to
+	 * read().
+	 */
+	int min_iterations = (test_duration_ns / (oa_period + (kernel_hrtimer + kernel_hrtimer / 5)));
+	int64_t start, end;
+	int n = 0;
+	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	size_t format_size = get_oa_format(test_set->perf_oa_format).size;
+
+	ADD_PROPS(props, idx, SAMPLE_OA, true);
+	ADD_PROPS(props, idx, OA_METRIC_SET, test_set->perf_oa_metrics_set);
+	ADD_PROPS(props, idx, OA_FORMAT, __ff(test_set->perf_oa_format));
+	ADD_PROPS(props, idx, OA_PERIOD_EXPONENT, oa_exponent);
+	ADD_PROPS(props, idx, OA_DISABLED, true);
+	ADD_PROPS(props, idx, OA_UNIT_ID, 0);
+	ADD_PROPS(props, idx, OA_ENGINE_INSTANCE, hwe->engine_instance);
+
+	param.num_properties = (idx - props) / 2;
+	param.properties_ptr = to_user_pointer(props);
+
+	stream_fd = __perf_open(drm_fd, &param, true /* prevent_pm */);
+	set_fd_flags(stream_fd, O_CLOEXEC | O_NONBLOCK);
+
+	times(&start_times);
+
+	igt_debug("tick length = %dns, oa period = %s, "
+		  "test duration = %"PRIu64"ns, min iter. = %d, max iter. = %d\n",
+		  (int)tick_ns, pretty_print_oa_period(oa_period), test_duration_ns,
+		  min_iterations, max_iterations);
+
+	/* In the loop we perform blocking polls while the HW is sampling at
+	 * ~25Hz, with the expectation that we spend most of our time blocked
+	 * in the kernel, and shouldn't be burning cpu cycles in the kernel in
+	 * association with this process (verified by looking at stime before
+	 * and after loop).
+	 *
+	 * We're looking to assert that less than 1% of the test duration is
+	 * spent in the kernel dealing with polling and read()ing.
+	 *
+	 * The test runs for a relatively long time considering the very low
+	 * resolution of stime in ticks of typically 10 milliseconds. Since we
+	 * don't know the fractional part of tick values we read from userspace
+	 * so our minimum threshold needs to be >= one tick since any
+	 * measurement might really be +- tick_ns (assuming we effectively get
+	 * floor(real_stime)).
+	 *
+	 * We Loop for 1000 x tick_ns so one tick corresponds to 0.1%
+	 *
+	 * Also enable the stream just before poll/read to minimize
+	 * the error delta.
+	 */
+	start = get_time();
+	do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_ENABLE, 0);
+	for (/* nop */; ((end = get_time()) - start) < test_duration_ns; /* nop */) {
+		struct pollfd pollfd = { .fd = stream_fd, .events = POLLIN };
+		bool timer_report_read = false;
+		bool non_timer_report_read = false;
+		int ret;
+
+		while ((ret = poll(&pollfd, 1, -1)) < 0 && errno == EINTR)
+			;
+		igt_assert_eq(ret, 1);
+		igt_assert(pollfd.revents & POLLIN);
+
+		while ((ret = read(stream_fd, buf, sizeof(buf))) < 0 &&
+		       (errno == EINTR || errno == EIO))
+			;
+
+		/* Don't expect to see EAGAIN if we've had a POLLIN event
+		 *
+		 * XXX: actually this is technically overly strict since we do
+		 * knowingly allow false positive POLLIN events. At least in
+		 * the future when supporting context filtering of metrics for
+		 * Gen8+ handled in the kernel then POLLIN events may be
+		 * delivered when we know there are pending reports to process
+		 * but before we've done any filtering to know for certain that
+		 * any reports are destined to be copied to userspace.
+		 *
+		 * Still, for now it's a reasonable sanity check.
+		 */
+		if (ret < 0)
+			igt_debug("Unexpected error when reading after poll = %d\n", errno);
+		igt_assert_neq(ret, -1);
+
+		/* For Haswell reports don't contain a well defined reason
+		 * field we so assume all reports to be 'periodic'. For gen8+
+		 * we want to to consider that the HW automatically writes some
+		 * non periodic reports (e.g. on context switch) which might
+		 * lead to more successful read()s than expected due to
+		 * periodic sampling and we don't want these extra reads to
+		 * cause the test to fail...
+		 */
+		for (int offset = 0; offset < ret; offset += format_size) {
+			uint32_t *report = (void *)(buf + offset);
+
+			if (oa_report_is_periodic(oa_exponent, report))
+				timer_report_read = true;
+			else
+				non_timer_report_read = true;
+		}
+
+		if (non_timer_report_read && !timer_report_read)
+			n_extra_iterations++;
+
+		/* At this point, after consuming pending reports (and hoping
+		 * the scheduler hasn't stopped us for too long) we now expect
+		 * EAGAIN on read. While this works most of the times, there are
+		 * some rare failures when the OA period passed to this test is
+		 * very small (say 500 us) and that results in some valid
+		 * reports here. To weed out those rare occurences we assert
+		 * only if the OA period is >= 40 ms because 40 ms has withstood
+		 * the test of time on most platforms (ref: subtest: polling).
+		 */
+		while ((ret = read(stream_fd, buf, sizeof(buf))) < 0 &&
+		       (errno == EINTR || errno == EIO))
+			;
+
+		if (requested_oa_period >= 40000000) {
+			igt_assert_eq(ret, -1);
+			igt_assert_eq(errno, EAGAIN);
+		}
+
+		n++;
+	}
+
+	times(&end_times);
+
+	/* Using nanosecond units is fairly silly here, given the tick in-
+	 * precision - ah well, it's consistent with the get_time() units.
+	 */
+	user_ns = (end_times.tms_utime - start_times.tms_utime) * tick_ns;
+	kernel_ns = (end_times.tms_stime - start_times.tms_stime) * tick_ns;
+
+	igt_debug("%d non-blocking reads during test with %"PRIu64" Hz OA sampling (expect no more than %d)\n",
+		  n, NSEC_PER_SEC / oa_period, max_iterations);
+	igt_debug("%d extra iterations seen, not related to periodic sampling (e.g. context switches)\n",
+		  n_extra_iterations);
+	igt_debug("time in userspace = %"PRIu64"ns (+-%dns) (start utime = %d, end = %d)\n",
+		  user_ns, (int)tick_ns,
+		  (int)start_times.tms_utime, (int)end_times.tms_utime);
+	igt_debug("time in kernelspace = %"PRIu64"ns (+-%dns) (start stime = %d, end = %d)\n",
+		  kernel_ns, (int)tick_ns,
+		  (int)start_times.tms_stime, (int)end_times.tms_stime);
+
+	/* With completely broken blocking while polling (but still somehow
+	 * reporting a POLLIN event) we could end up with an open loop.
+	 */
+	igt_assert(n <= (max_iterations + n_extra_iterations));
+
+	/* Make sure the driver is reporting new samples with a reasonably
+	 * low latency...
+	 */
+	igt_assert(n > (min_iterations + n_extra_iterations));
+
+	if (!set_kernel_hrtimer)
+		igt_assert(kernel_ns <= (test_duration_ns / 100ull));
+
+	__perf_close(stream_fd);
+}
+
+/**
+ * SUBTEST: polling-small-buf
+ * Description: Test polled read with buffer size smaller than available data
+ */
+static void test_polling_small_buf(void)
+{
+	int oa_exponent = max_oa_exponent_for_period_lte(40 * 1000); /* 40us */
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent,
+		DRM_XE_OA_PROPERTY_OA_DISABLED, true,
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	uint32_t test_duration = 80 * 1000 * 1000;
+	int sample_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 = {};
+	int n_bytes_read = 0;
+	uint32_t n_polls = 0;
+
+	stream_fd = __perf_open(drm_fd, &param, true /* prevent_pm */);
+	set_fd_flags(stream_fd, O_CLOEXEC | O_NONBLOCK);
+	do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_ENABLE, 0);
+
+	while (igt_nsec_elapsed(&ts) < test_duration) {
+		struct pollfd pollfd = { .fd = stream_fd, .events = POLLIN };
+
+		ppoll(&pollfd, 1, NULL, NULL);
+		if (pollfd.revents & POLLIN) {
+			uint8_t buf[1024];
+			int ret;
+
+			ret = read(stream_fd, buf, sizeof(buf));
+			if (ret >= 0)
+				n_bytes_read += ret;
+		}
+
+		n_polls++;
+	}
+
+	igt_info("Read %d expected %d (%.2f%% of the expected number), polls=%u\n",
+		 n_bytes_read, n_expect_read_bytes,
+		 n_bytes_read * 100.0f / n_expect_read_bytes,
+		 n_polls);
+
+	__perf_close(stream_fd);
+
+	igt_assert(abs(n_expect_read_bytes - n_bytes_read) <
+		   0.20 * n_expect_read_bytes);
+}
+
 /**
  * SUBTEST: buffer-fill
  * Description: Test filling, wraparound and overflow of OA buffer
@@ -2551,6 +2995,25 @@ igt_main
 		__for_one_hwe_in_oag(hwe)
 			test_enable_disable(hwe);
 
+	igt_subtest_with_dynamic("blocking") {
+		__for_one_hwe_in_oag(hwe)
+			test_blocking(40 * 1000 * 1000 /* 40ms oa period */,
+				      false /* set_kernel_hrtimer */,
+				      5 * 1000 * 1000 /* default 5ms/200Hz hrtimer */,
+				      hwe);
+	}
+
+	igt_subtest_with_dynamic("polling") {
+		__for_one_hwe_in_oag(hwe)
+			test_polling(40 * 1000 * 1000 /* 40ms oa period */,
+				     false /* set_kernel_hrtimer */,
+				     5 * 1000 * 1000 /* default 5ms/200Hz hrtimer */,
+				     hwe);
+	}
+
+	igt_subtest("polling-small-buf")
+		test_polling_small_buf();
+
 	igt_subtest("short-reads")
 		test_short_reads();
 
-- 
2.41.0


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

* [PATCH i-g-t 16/27] tests/intel/xe_oa: OAR/OAC tests
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (14 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 15/27] tests/intel/xe_oa: blocking and polling tests Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 17/27] tests/intel/xe_oa: Exclusive/concurrent access, rc6 and stress open close Ashutosh Dixit
                   ` (15 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

"mi-rpc", "oa-tlb-invalidate" and "unprivileged-single-ctx-counters" tests.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 698 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 698 insertions(+)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index d7f00e78b9..c4a45568aa 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -597,6 +597,18 @@ read_report_reason(const uint32_t *report)
 		return "unknown";
 }
 
+static uint32_t
+cs_timestamp_frequency(int fd)
+{
+	return xe_gt_list(drm_fd)->gt_list[0].reference_clock;
+}
+
+static uint64_t
+cs_timebase_scale(uint32_t u32_delta)
+{
+	return ((uint64_t)u32_delta * NSEC_PER_SEC) / cs_timestamp_frequency(drm_fd);
+}
+
 static uint64_t
 oa_timestamp(const uint32_t *report, enum intel_xe_oa_format_name format)
 {
@@ -663,6 +675,15 @@ oa_report_get_ctx_id(uint32_t *report)
 	return report[2];
 }
 
+static int
+oar_unit_default_format(void)
+{
+	if (IS_DG2(devid) || IS_METEORLAKE(devid))
+		return XE_OAR_FORMAT_A32u40_A4u32_B8_C8;
+
+	return default_test_set->perf_oa_format;
+}
+
 static void *buf_map(int fd, struct intel_buf *buf, bool write)
 {
 	void *p;
@@ -701,6 +722,21 @@ scratch_buf_init(struct buf_ops *bops,
 	scratch_buf_memset(buf, width, height, color);
 }
 
+static void
+emit_report_perf_count(struct intel_bb *ibb,
+		       struct intel_buf *dst,
+		       int dst_offset,
+		       uint32_t report_id)
+{
+	intel_bb_add_intel_buf(ibb, dst, true);
+
+	intel_bb_out(ibb, OA_MI_REPORT_PERF_COUNT);
+	intel_bb_emit_reloc(ibb, dst->handle,
+			    I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
+			    dst_offset, dst->addr.offset);
+	intel_bb_out(ibb, report_id);
+}
+
 static bool
 oa_report_is_periodic(uint32_t oa_exponent, const uint32_t *report)
 {
@@ -741,6 +777,31 @@ get_40bit_a_delta(uint64_t value0, uint64_t value1)
 		return value1 - value0;
 }
 
+static void
+accumulate_uint32(size_t offset,
+		  uint32_t *report0,
+                  uint32_t *report1,
+                  uint64_t *delta)
+{
+	uint32_t value0 = *(uint32_t *)(((uint8_t *)report0) + offset);
+	uint32_t value1 = *(uint32_t *)(((uint8_t *)report1) + offset);
+
+	*delta += (uint32_t)(value1 - value0);
+}
+
+static void
+accumulate_uint40(int a_index,
+                  uint32_t *report0,
+                  uint32_t *report1,
+		  enum intel_xe_oa_format_name format,
+                  uint64_t *delta)
+{
+	uint64_t value0 = read_40bit_a_counter(report0, format, a_index),
+		 value1 = read_40bit_a_counter(report1, format, a_index);
+
+	*delta += get_40bit_a_delta(value0, value1);
+}
+
 static void
 accumulate_uint64(int a_index,
 		  const uint32_t *report0,
@@ -754,6 +815,78 @@ accumulate_uint64(int a_index,
 	*delta += (value1 - value0);
 }
 
+static void
+accumulate_reports(struct accumulator *accumulator,
+		   uint32_t *start,
+		   uint32_t *end)
+{
+	struct oa_format format = get_oa_format(accumulator->format);
+	uint64_t *deltas = accumulator->deltas;
+	int idx = 0;
+
+	/* timestamp */
+	deltas[idx] += oa_timestamp_delta(end, start, accumulator->format);
+	idx++;
+
+	/* clock cycles */
+	deltas[idx] += oa_tick_delta(end, start, accumulator->format);
+	idx++;
+
+	for (int i = 0; i < format.n_a40; i++) {
+		accumulate_uint40(i, start, end, accumulator->format,
+				  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++);
+	}
+
+	for (int i = 0; i < format.n_b; i++) {
+		accumulate_uint32(format.b_off + 4 * i,
+				  start, end, deltas + idx++);
+	}
+
+	for (int i = 0; i < format.n_c; i++) {
+		accumulate_uint32(format.c_off + 4 * i,
+				  start, end, deltas + idx++);
+	}
+}
+
+static void
+accumulator_print(struct accumulator *accumulator, const char *title)
+{
+	struct oa_format format = get_oa_format(accumulator->format);
+	uint64_t *deltas = accumulator->deltas;
+	int idx = 0;
+
+	igt_debug("%s:\n", title);
+	igt_debug("\ttime delta = %"PRIu64"\n", deltas[idx++]);
+	igt_debug("\tclock cycle delta = %"PRIu64"\n", deltas[idx++]);
+
+	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++]);
+
+	for (int i = 0; i < format.n_a; i++) {
+		int a_id = format.first_a + i;
+		igt_debug("\tA%u = %"PRIu64"\n", a_id, deltas[idx++]);
+	}
+
+	for (int i = 0; i < format.n_a; i++)
+		igt_debug("\tB%u = %"PRIu64"\n", i, deltas[idx++]);
+
+	for (int i = 0; i < format.n_c; i++)
+		igt_debug("\tC%u = %"PRIu64"\n", i, deltas[idx++]);
+}
+
 /* The TestOa metric set is designed so */
 static void
 sanity_check_reports(const uint32_t *oa_report0, const uint32_t *oa_report1,
@@ -2165,6 +2298,92 @@ static void test_polling_small_buf(void)
 		   0.20 * n_expect_read_bytes);
 }
 
+static int
+num_valid_reports_captured(struct intel_xe_oa_open_prop *param,
+			   int64_t *duration_ns, int fmt)
+{
+	uint8_t buf[1024 * 1024];
+	int64_t start, end;
+	int num_reports = 0;
+	size_t format_size = get_oa_format(fmt).size;
+
+	igt_debug("Expected duration = %"PRId64"\n", *duration_ns);
+
+	stream_fd = __perf_open(drm_fd, param, true);
+
+	start = get_time();
+	do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_ENABLE, 0);
+	for (/* nop */; ((end = get_time()) - start) < *duration_ns; /* nop */) {
+		int ret;
+
+		while ((ret = read(stream_fd, buf, sizeof(buf))) < 0 &&
+		       (errno == EINTR || errno == EIO))
+			;
+
+		igt_assert(ret > 0);
+
+		for (int offset = 0; offset < ret; offset += format_size) {
+			uint32_t *report = (void *)(buf + offset);
+
+			if (report_reason(report) & OAREPORT_REASON_TIMER)
+				num_reports++;
+		}
+	}
+	__perf_close(stream_fd);
+
+	*duration_ns = end - start;
+
+	igt_debug("Actual duration = %"PRIu64"\n", *duration_ns);
+
+	return num_reports;
+}
+
+/**
+ * SUBTEST: oa-tlb-invalidate
+ * Description: Open OA stream twice to verify OA TLB invalidation
+ */
+static void
+test_oa_tlb_invalidate(const struct drm_xe_engine_class_instance *hwe)
+{
+	int oa_exponent = max_oa_exponent_for_period_lte(30000000);
+	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent,
+		DRM_XE_OA_PROPERTY_OA_DISABLED, true,
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	int num_reports1, num_reports2, num_expected_reports;
+	int64_t duration;
+
+	/* Capture reports for 5 seconds twice and then make sure you get around
+	 * the same number of reports. In the case of failure, the number of
+	 * reports will vary largely since the beginning of the OA buffer
+	 * will have invalid entries.
+	 */
+	duration = 5LL * NSEC_PER_SEC;
+	num_reports1 = num_valid_reports_captured(&param, &duration, test_set->perf_oa_format);
+	num_expected_reports = duration / oa_exponent_to_ns(oa_exponent);
+	igt_debug("expected num reports = %d\n", num_expected_reports);
+	igt_debug("actual num reports = %d\n", num_reports1);
+	igt_assert(num_reports1 > 0.95 * num_expected_reports);
+
+	duration = 5LL * NSEC_PER_SEC;
+	num_reports2 = num_valid_reports_captured(&param, &duration, test_set->perf_oa_format);
+	num_expected_reports = duration / oa_exponent_to_ns(oa_exponent);
+	igt_debug("expected num reports = %d\n", num_expected_reports);
+	igt_debug("actual num reports = %d\n", num_reports2);
+	igt_assert(num_reports2 > 0.95 * num_expected_reports);
+}
+
 /**
  * SUBTEST: buffer-fill
  * Description: Test filling, wraparound and overflow of OA buffer
@@ -2750,6 +2969,468 @@ test_disabled_read_error(void)
 	__perf_close(stream_fd);
 }
 
+/**
+ * SUBTEST: mi-rpc
+ * Description: Test OAR/OAC using MI_REPORT_PERF_COUNT
+ */
+static void
+test_mi_rpc(struct drm_xe_engine_class_instance *hwe)
+
+{
+	uint64_t fmt = ((IS_DG2(devid) || IS_METEORLAKE(devid)) &&
+			hwe->engine_class == DRM_XE_ENGINE_CLASS_COMPUTE) ?
+		XE_OAC_FORMAT_A24u64_B8_C8 : oar_unit_default_format();
+	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* On Gen12, MI RPC uses OAR. OAR is configured only for the
+		 * render context that wants to measure the performance. Hence a
+		 * context must be specified in the gen12 MI RPC when compared
+		 * to previous gens.
+		 *
+		 * Have a random value here for the context id, but initialize
+		 * it once you figure out the context ID for the work to be
+		 * measured
+		 */
+		DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID, UINT64_MAX,
+
+		/* OA unit configuration:
+		 * DRM_XE_OA_PROPERTY_SAMPLE_OA is no longer required for Gen12
+		 * because the OAR unit increments counters only for the
+		 * relevant context. No other parameters are needed since we do
+		 * not rely on the OA buffer anymore to normalize the counter
+		 * values.
+		 */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	struct buf_ops *bops;
+	struct intel_bb *ibb;
+	struct intel_buf *buf;
+#define INVALID_CTX_ID 0xffffffff
+	uint32_t ctx_id = INVALID_CTX_ID;
+	uint32_t vm = 0;
+	uint32_t *report32;
+	size_t format_size_32;
+	struct oa_format format = get_oa_format(fmt);
+
+	/* Ensure perf_stream_paranoid is set to 1 by default */
+	write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
+
+	bops = buf_ops_create(drm_fd);
+	vm = xe_vm_create(drm_fd, 0, 0);
+	ctx_id = xe_exec_queue_create(drm_fd, vm, hwe, 0);
+	igt_assert_neq(ctx_id, INVALID_CTX_ID);
+	properties[3] = ctx_id;
+
+	ibb = intel_bb_create_with_context(drm_fd, ctx_id, vm, NULL, BATCH_SZ);
+	buf = intel_buf_create(bops, 4096, 1, 8, 64,
+			       I915_TILING_NONE, I915_COMPRESSION_NONE);
+
+	buf_map(drm_fd, buf, true);
+	memset(buf->ptr, 0x80, 4096);
+	intel_buf_unmap(buf);
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+        set_fd_flags(stream_fd, O_CLOEXEC);
+
+#define REPORT_ID 0xdeadbeef
+#define REPORT_OFFSET 0
+	emit_report_perf_count(ibb,
+			       buf,
+			       REPORT_OFFSET,
+			       REPORT_ID);
+	intel_bb_flush_render(ibb);
+	intel_bb_sync(ibb);
+
+	buf_map(drm_fd, buf, false);
+	report32 = buf->ptr;
+	format_size_32 = format.size >> 2;
+	dump_report(report32, format_size_32, "mi-rpc");
+
+	/* Sanity check reports
+	 * reportX_32[0]: report id passed with mi-rpc
+	 * reportX_32[1]: timestamp. NOTE: wraps around in ~6 minutes.
+	 *
+	 * reportX_32[format.b_off]: check if the entire report was filled.
+	 * B0 counter falls in the last 64 bytes of this report format.
+	 * Since reports are filled in 64 byte blocks, we should be able to
+	 * assure that the report was filled by checking the B0 counter. B0
+	 * counter is defined to be zero, so we can easily validate it.
+	 *
+	 * reportX_32[format_size_32]: outside report, make sure only the report
+	 * size amount of data was written.
+	 */
+	igt_assert_eq(report32[0], REPORT_ID);
+	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);
+
+	intel_buf_unmap(buf);
+	intel_buf_destroy(buf);
+	intel_bb_destroy(ibb);
+	xe_exec_queue_destroy(drm_fd, ctx_id);
+	xe_vm_destroy(drm_fd, vm);
+	buf_ops_destroy(bops);
+	__perf_close(stream_fd);
+}
+
+static void
+emit_stall_timestamp_and_rpc(struct intel_bb *ibb,
+			     struct intel_buf *dst,
+			     int timestamp_offset,
+			     int report_dst_offset,
+			     uint32_t report_id)
+{
+	uint32_t pipe_ctl_flags = (PIPE_CONTROL_CS_STALL |
+				   PIPE_CONTROL_RENDER_TARGET_FLUSH |
+				   PIPE_CONTROL_WRITE_TIMESTAMP);
+
+	intel_bb_add_intel_buf(ibb, dst, true);
+	intel_bb_out(ibb, GFX_OP_PIPE_CONTROL(6));
+	intel_bb_out(ibb, pipe_ctl_flags);
+	intel_bb_emit_reloc(ibb, dst->handle,
+			    I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
+			    timestamp_offset, dst->addr.offset);
+	intel_bb_out(ibb, 0); /* imm lower */
+	intel_bb_out(ibb, 0); /* imm upper */
+
+	emit_report_perf_count(ibb, dst, report_dst_offset, report_id);
+}
+
+static void single_ctx_helper(struct drm_xe_engine_class_instance *hwe)
+{
+	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t fmt = oar_unit_default_format();
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Have a random value here for the context id, but initialize
+		 * it once you figure out the context ID for the work to be
+		 * measured
+		 */
+		DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID, UINT64_MAX,
+
+		/* OA unit configuration:
+		 * DRM_XE_OA_PROPERTY_SAMPLE_OA is no longer required for Gen12
+		 * because the OAR unit increments counters only for the
+		 * relevant context. No other parameters are needed since we do
+		 * not rely on the OA buffer anymore to normalize the counter
+		 * values.
+		 */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	struct buf_ops *bops;
+	struct intel_bb *ibb0, *ibb1;
+	struct intel_buf src[3], dst[3], *dst_buf;
+	uint32_t context0_id, context1_id, vm = 0;
+	uint32_t *report0_32, *report1_32, *report2_32, *report3_32;
+	uint64_t timestamp0_64, timestamp1_64;
+	uint64_t delta_ts64, delta_oa32;
+	uint64_t delta_ts64_ns, delta_oa32_ns;
+	uint64_t delta_delta;
+	int width = 800;
+	int height = 600;
+#define INVALID_CTX_ID 0xffffffff
+	uint32_t ctx0_id = INVALID_CTX_ID;
+	uint32_t ctx1_id = INVALID_CTX_ID;
+	int ret;
+	struct accumulator accumulator = {
+		.format = fmt
+	};
+
+	bops = buf_ops_create(drm_fd);
+
+	for (int i = 0; i < ARRAY_SIZE(src); i++) {
+		scratch_buf_init(bops, &src[i], width, height, 0xff0000ff);
+		scratch_buf_init(bops, &dst[i], width, height, 0x00ff00ff);
+	}
+
+	vm = xe_vm_create(drm_fd, 0, 0);
+	context0_id = xe_exec_queue_create(drm_fd, vm, hwe, 0);
+	context1_id = xe_exec_queue_create(drm_fd, vm, hwe, 0);
+	ibb0 = intel_bb_create_with_context(drm_fd, context0_id, vm, NULL, BATCH_SZ);
+	ibb1 = intel_bb_create_with_context(drm_fd, context1_id, vm, NULL, BATCH_SZ);
+
+	igt_debug("submitting warm up render_copy\n");
+
+	/* Submit some early, unmeasured, work to the context we want */
+	render_copy(ibb0,
+		    &src[0], 0, 0, width, height,
+		    &dst[0], 0, 0);
+
+	/* Initialize the context parameter to the perf open ioctl here */
+	properties[3] = context0_id;
+
+	igt_debug("opening xe oa stream\n");
+	stream_fd = __perf_open(drm_fd, &param, false);
+        set_fd_flags(stream_fd, O_CLOEXEC);
+
+	dst_buf = intel_buf_create(bops, 4096, 1, 8, 64,
+				   I915_TILING_NONE,
+				   I915_COMPRESSION_NONE);
+
+	/* Set write domain to cpu briefly to fill the buffer with 80s */
+	buf_map(drm_fd, dst_buf, true /* write enable */);
+	memset(dst_buf->ptr, 0x80, 2048);
+	memset((uint8_t *) dst_buf->ptr + 2048, 0, 2048);
+	intel_buf_unmap(dst_buf);
+
+	/* Submit an mi-rpc to context0 before measurable work */
+#define BO_TIMESTAMP_OFFSET0 1024
+#define BO_REPORT_OFFSET0 0
+#define BO_REPORT_ID0 0xdeadbeef
+	emit_stall_timestamp_and_rpc(ibb0,
+				     dst_buf,
+				     BO_TIMESTAMP_OFFSET0,
+				     BO_REPORT_OFFSET0,
+				     BO_REPORT_ID0);
+	intel_bb_flush_render(ibb0);
+
+	/* Remove intel_buf from ibb0 added implicitly in rendercopy */
+	intel_bb_remove_intel_buf(ibb0, dst_buf);
+
+	/* This is the work/context that is measured for counter increments */
+	render_copy(ibb0,
+		    &src[0], 0, 0, width, height,
+		    &dst[0], 0, 0);
+	intel_bb_flush_render(ibb0);
+
+	/* Submit an mi-rpc to context1 before work
+	 *
+	 * On gen12, this measurement should just yield counters that are
+	 * all zeroes, since the counters will only increment for the
+	 * context passed to perf open ioctl
+	 */
+#define BO_TIMESTAMP_OFFSET2 1040
+#define BO_REPORT_OFFSET2 512
+#define BO_REPORT_ID2 0x00c0ffee
+	emit_stall_timestamp_and_rpc(ibb1,
+				     dst_buf,
+				     BO_TIMESTAMP_OFFSET2,
+				     BO_REPORT_OFFSET2,
+				     BO_REPORT_ID2);
+	intel_bb_flush_render(ibb1);
+
+	/* Submit two copies on the other context to avoid a false
+	 * positive in case the driver somehow ended up filtering for
+	 * context1
+	 */
+	render_copy(ibb1,
+		    &src[1], 0, 0, width, height,
+		    &dst[1], 0, 0);
+
+	render_copy(ibb1,
+		    &src[2], 0, 0, width, height,
+		    &dst[2], 0, 0);
+	intel_bb_flush_render(ibb1);
+
+	/* Submit an mi-rpc to context1 after all work */
+#define BO_TIMESTAMP_OFFSET3 1048
+#define BO_REPORT_OFFSET3 768
+#define BO_REPORT_ID3 0x01c0ffee
+	emit_stall_timestamp_and_rpc(ibb1,
+				     dst_buf,
+				     BO_TIMESTAMP_OFFSET3,
+				     BO_REPORT_OFFSET3,
+				     BO_REPORT_ID3);
+	intel_bb_flush_render(ibb1);
+
+	/* Remove intel_buf from ibb1 added implicitly in rendercopy */
+	intel_bb_remove_intel_buf(ibb1, dst_buf);
+
+	/* Submit an mi-rpc to context0 after all measurable work */
+#define BO_TIMESTAMP_OFFSET1 1032
+#define BO_REPORT_OFFSET1 256
+#define BO_REPORT_ID1 0xbeefbeef
+	emit_stall_timestamp_and_rpc(ibb0,
+				     dst_buf,
+				     BO_TIMESTAMP_OFFSET1,
+				     BO_REPORT_OFFSET1,
+				     BO_REPORT_ID1);
+	intel_bb_flush_render(ibb0);
+	intel_bb_sync(ibb0);
+	intel_bb_sync(ibb1);
+
+	buf_map(drm_fd, dst_buf, false);
+
+	/* Sanity check reports
+	 * reportX_32[0]: report id passed with mi-rpc
+	 * reportX_32[1]: timestamp
+	 * reportX_32[2]: context id
+	 *
+	 * report0_32: start of measurable work
+	 * report1_32: end of measurable work
+	 * report2_32: start of other work
+	 * report3_32: end of other work
+	 */
+	report0_32 = dst_buf->ptr;
+	igt_assert_eq(report0_32[0], 0xdeadbeef);
+	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(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");
+
+	/* Verify that counters in context1 are all zeroes */
+	report2_32 = report0_32 + 128;
+	igt_assert_eq(report2_32[0], 0x00c0ffee);
+	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,
+				240));
+
+	report3_32 = report0_32 + 192;
+	igt_assert_eq(report3_32[0], 0x01c0ffee);
+	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,
+				240));
+
+	/* Accumulate deltas for counters - A0, A21 and A26 */
+	memset(accumulator.deltas, 0, sizeof(accumulator.deltas));
+	accumulate_reports(&accumulator, report0_32, report1_32);
+	igt_debug("total: A0 = %"PRIu64", A21 = %"PRIu64", A26 = %"PRIu64"\n",
+			accumulator.deltas[2 + 0],
+			accumulator.deltas[2 + 21],
+			accumulator.deltas[2 + 26]);
+
+	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]);
+
+	/* The delta as calculated via the PIPE_CONTROL timestamp or
+	 * the OA report timestamps should be almost identical but
+	 * allow a 500 nanoseconds margin.
+	 */
+	timestamp0_64 = *(uint64_t *)(((uint8_t *)dst_buf->ptr) + BO_TIMESTAMP_OFFSET0);
+	timestamp1_64 = *(uint64_t *)(((uint8_t *)dst_buf->ptr) + BO_TIMESTAMP_OFFSET1);
+
+	igt_debug("ts_timestamp64 0 = %"PRIu64"\n", timestamp0_64);
+	igt_debug("ts_timestamp64 1 = %"PRIu64"\n", timestamp1_64);
+
+	delta_ts64 = timestamp1_64 - timestamp0_64;
+	delta_oa32 = oa_timestamp_delta(report1_32, report0_32, fmt);
+
+	/* Sanity check that we can pass the delta to timebase_scale */
+	delta_oa32_ns = timebase_scale(delta_oa32);
+	delta_ts64_ns = cs_timebase_scale(delta_ts64);
+
+	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 = %"PRIu64". exceeds margin, skipping..\n",
+			  delta_delta);
+		exit(EAGAIN);
+	}
+
+	igt_debug("n samples written = %"PRIu64"/%"PRIu64" (%ix%i)\n",
+		  accumulator.deltas[2 + 21],
+		  accumulator.deltas[2 + 26],
+		  width, height);
+	accumulator_print(&accumulator, "filtered");
+
+	/* Verify that the work actually happened by comparing the src
+	 * and dst buffers
+	 */
+	buf_map(drm_fd, &src[0], false);
+	buf_map(drm_fd, &dst[0], false);
+
+	ret = memcmp(src[0].ptr, dst[0].ptr, 4 * width * height);
+	intel_buf_unmap(&src[0]);
+	intel_buf_unmap(&dst[0]);
+
+	if (ret != 0) {
+		accumulator_print(&accumulator, "total");
+		exit(EAGAIN);
+	}
+
+	/* FIXME: can we deduce the presence of A26 from get_oa_format(fmt)? */
+	if (intel_graphics_ver(devid) >= IP_VER(20, 0))
+		goto skip_check;
+
+	/* Check that this test passed. The test measures the number of 2x2
+	 * samples written to the render target using the counter A26. For
+	 * OAR, this counter will only have increments relevant to this specific
+	 * context. The value equals the width * height of the rendered work.
+	 */
+	igt_assert_eq(accumulator.deltas[2 + 26], width * height);
+
+ skip_check:
+	/* Clean up */
+	for (int i = 0; i < ARRAY_SIZE(src); i++) {
+		intel_buf_close(bops, &src[i]);
+		intel_buf_close(bops, &dst[i]);
+	}
+
+	intel_buf_unmap(dst_buf);
+	intel_buf_destroy(dst_buf);
+	intel_bb_destroy(ibb0);
+	intel_bb_destroy(ibb1);
+	xe_exec_queue_destroy(drm_fd, context0_id);
+	xe_exec_queue_destroy(drm_fd, context1_id);
+	xe_vm_destroy(drm_fd, vm);
+	buf_ops_destroy(bops);
+	__perf_close(stream_fd);
+}
+
+/**
+ * SUBTEST: unprivileged-single-ctx-counters
+ * Description: A harder test for OAR/OAC using MI_REPORT_PERF_COUNT
+ */
+static void
+test_single_ctx_render_target_writes_a_counter(struct drm_xe_engine_class_instance *hwe)
+{
+	int child_ret;
+	struct igt_helper_process child = {};
+
+	/* Ensure perf_stream_paranoid is set to 1 by default */
+	write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
+
+	do {
+		igt_fork_helper(&child) {
+			/* A local device for local resources. */
+			drm_fd = drm_reopen_driver(drm_fd);
+
+			igt_drop_root();
+
+			single_ctx_helper(hwe);
+
+			drm_close_driver(drm_fd);
+		}
+		child_ret = igt_wait_helper(&child);
+		igt_assert(WEXITSTATUS(child_ret) == EAGAIN ||
+			   WEXITSTATUS(child_ret) == 0);
+	} while (WEXITSTATUS(child_ret) == EAGAIN);
+}
+
 static unsigned read_xe_module_ref(void)
 {
 	FILE *fp = fopen("/proc/modules", "r");
@@ -3017,6 +3698,23 @@ igt_main
 	igt_subtest("short-reads")
 		test_short_reads();
 
+	igt_subtest_group {
+		igt_subtest_with_dynamic("mi-rpc")
+			__for_one_hwe_in_oag(hwe)
+				test_mi_rpc(hwe);
+
+		igt_subtest_with_dynamic("oa-tlb-invalidate")
+			__for_one_hwe_in_oag(hwe)
+				test_oa_tlb_invalidate(hwe);
+
+		igt_subtest_with_dynamic("unprivileged-single-ctx-counters") {
+			igt_require_f(render_copy, "no render-copy function\n");
+			igt_require(intel_graphics_ver(devid) < IP_VER(20, 0));
+			__for_one_render_engine(hwe)
+				test_single_ctx_render_target_writes_a_counter(hwe);
+		}
+	}
+
 	igt_fixture {
 		/* leave sysctl options in their default state... */
 		write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
-- 
2.41.0


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

* [PATCH i-g-t 17/27] tests/intel/xe_oa: Exclusive/concurrent access, rc6 and stress open close
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (15 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 16/27] tests/intel/xe_oa: OAR/OAC tests Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 18/27] tests/intel/xe_oa: add remove OA config tests Ashutosh Dixit
                   ` (14 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

Add the following tests:
* "oa-unit-exclusive-stream-sample-oa"
* "oa-unit-exclusive-stream-exec-q"
* "oa-unit-concurrent-oa-buffer-read"
* "rc6-disable"
* "stress-open-close"

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 264 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 264 insertions(+)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index c4a45568aa..12a76ef4a8 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -431,6 +431,23 @@ static struct drm_xe_engine_class_instance *oa_unit_engine(int fd, int n)
 	return hwe;
 }
 
+static struct drm_xe_oa_unit *nth_oa_unit(int fd, int n)
+{
+	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
+	struct drm_xe_oa_unit *oau;
+	u8 *poau;
+
+	poau = (u8 *)&qoa->oa_units[0];
+	for (int i = 0; i < qoa->num_oa_units; i++) {
+		oau = (struct drm_xe_oa_unit *)poau;
+		if (i == n)
+			return oau;
+		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
+	}
+
+	return NULL;
+}
+
 static char *
 pretty_print_oa_period(uint64_t oa_period_ns)
 {
@@ -518,6 +535,14 @@ write_u64_file(const char *path, uint64_t val)
 	fclose(f);
 }
 
+static unsigned long rc6_residency_ms(void)
+{
+	unsigned long value;
+
+	igt_assert(igt_sysfs_scanf(sysfs, "device/tile0/gt0/gtidle/idle_residency_ms", "%lu", &value) == 1);
+	return value;
+}
+
 static uint64_t
 read_report_ticks(const uint32_t *report, enum intel_xe_oa_format_name format)
 {
@@ -3461,6 +3486,95 @@ done:
 	return ref_count;
 }
 
+/**
+ * SUBTEST: rc6-disable
+ * Description: Check that opening an OA stream disables RC6
+ */
+static void
+test_rc6_disable(void)
+{
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exp_1_millisec,
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	unsigned long rc6_start, rc6_end;
+
+	/* Verify rc6 is functional by measuring residency while idle */
+	rc6_start = rc6_residency_ms();
+	usleep(50000);
+	rc6_end = rc6_residency_ms();
+	igt_require(rc6_end != rc6_start);
+
+	/* While OA is active, we keep rc6 disabled so we don't lose metrics */
+	stream_fd = __perf_open(drm_fd, &param, false);
+
+	rc6_start = rc6_residency_ms();
+	usleep(50000);
+	rc6_end = rc6_residency_ms();
+	igt_assert_eq(rc6_end - rc6_start, 0);
+
+	__perf_close(stream_fd);
+
+	/* But once OA is closed, we expect the device to sleep again */
+	rc6_start = rc6_residency_ms();
+	usleep(50000);
+	rc6_end = rc6_residency_ms();
+	igt_assert_neq(rc6_end - rc6_start, 0);
+}
+
+/**
+ * SUBTEST: stress-open-close
+ * Description: Open/close OA streams in a tight loop
+ */
+static void
+test_stress_open_close(const struct drm_xe_engine_class_instance *hwe)
+{
+	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+
+	load_helper_init();
+	load_helper_run(HIGH);
+
+	igt_until_timeout(2) {
+		int oa_exponent = 5; /* 5 micro seconds */
+		uint64_t properties[] = {
+			DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+			/* XXX: even without periodic sampling we have to
+			 * specify at least one sample layout property...
+			 */
+			DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+			/* OA unit configuration */
+			DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+			DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
+			DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent,
+			DRM_XE_OA_PROPERTY_OA_DISABLED, true,
+			DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+		};
+		struct intel_xe_oa_open_prop param = {
+			.num_properties = ARRAY_SIZE(properties) / 2,
+			.properties_ptr = to_user_pointer(properties),
+		};
+
+		stream_fd = __perf_open(drm_fd, &param, false);
+		__perf_close(stream_fd);
+	}
+
+	load_helper_stop();
+	load_helper_fini();
+}
+
 /**
  * SUBTEST: xe-ref-count
  * Description: Check that an open oa stream holds a reference on the xe module
@@ -3547,6 +3661,137 @@ test_sysctl_defaults(void)
 	igt_assert_eq(paranoid, 1);
 }
 
+/**
+ * SUBTEST: oa-unit-exclusive-stream-sample-oa
+ * Description: Check that only a single stream can be opened on an OA unit (with sampling)
+ *
+ * SUBTEST: oa-unit-exclusive-stream-exec-q
+ * Description: Check that only a single stream can be opened on an OA unit (for OAR/OAC)
+*/
+/*
+ * Test if OA buffer streams can be independently opened on OA unit. Once a user
+ * opens a stream, that oa unit is exclusive to the user, other users get -EBUSY on
+ * trying to open a stream.
+ */
+static void
+test_oa_unit_exclusive_stream(bool exponent)
+{
+	struct drm_xe_query_oa_units *qoa = xe_oa_units(drm_fd);
+	struct drm_xe_oa_unit *oau;
+	u8 *poau = (u8 *)&qoa->oa_units[0];
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, 0,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(0),
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, 0,
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exp_1_millisec,
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	uint32_t *exec_q = calloc(qoa->num_oa_units, sizeof(u32));
+	uint32_t *perf_fd = calloc(qoa->num_oa_units, sizeof(u32));
+	u32 vm = xe_vm_create(drm_fd, 0, 0);
+	struct intel_xe_perf_metric_set *test_set;
+	uint32_t i;
+
+	/* for each oa unit, open one random perf stream with sample OA */
+	for (i = 0; i < qoa->num_oa_units; i++) {
+		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, i);
+
+		oau = (struct drm_xe_oa_unit *)poau;
+		if (oau->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
+			continue;
+		test_set = metric_set(hwe);
+
+		igt_debug("opening OA buffer with c:i %d:%d\n",
+			  hwe->engine_class, hwe->engine_instance);
+		exec_q[i] = xe_exec_queue_create(drm_fd, vm, hwe, 0);
+		if (!exponent) {
+			properties[10] = DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID;
+			properties[11] = exec_q[i];
+		}
+
+		properties[1] = oau->oa_unit_id;
+		properties[5] = test_set->perf_oa_metrics_set;
+		properties[7] = __ff(test_set->perf_oa_format);
+		properties[9] = hwe->engine_instance;
+		perf_fd[i] = intel_xe_perf_ioctl(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param);
+		igt_assert(perf_fd[i] >= 0);
+		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
+	}
+
+	/* Xe KMD holds reference to the exec_q's so they shouldn't be really destroyed */
+	for (i = 0; i < qoa->num_oa_units; i++)
+		if (exec_q[i])
+			xe_exec_queue_destroy(drm_fd, exec_q[i]);
+
+	/* for each oa unit make sure no other streams can be opened */
+	poau = (u8 *)&qoa->oa_units[0];
+	for (i = 0; i < qoa->num_oa_units; i++) {
+		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, i);
+		int err;
+
+		oau = (struct drm_xe_oa_unit *)poau;
+		if (oau->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
+			continue;
+		test_set = metric_set(hwe);
+
+		igt_debug("try with exp with c:i %d:%d\n",
+			  hwe->engine_class, hwe->engine_instance);
+		/* case 1: concurrent access to OAG should fail */
+		properties[1] = oau->oa_unit_id;
+		properties[5] = test_set->perf_oa_metrics_set;
+		properties[7] = __ff(test_set->perf_oa_format);
+		properties[9] = hwe->engine_instance;
+		properties[10] = DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT;
+		properties[11] = oa_exp_1_millisec;
+		intel_xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EBUSY);
+
+		/* case 2: concurrent access to non-OAG unit should fail */
+		igt_debug("try with exec_q with c:i %d:%d\n",
+			  hwe->engine_class, hwe->engine_instance);
+		exec_q[i] = xe_exec_queue_create(drm_fd, vm, hwe, 0);
+		properties[10] = DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID;
+		properties[11] = exec_q[i];
+		errno = 0;
+		err = intel_xe_perf_ioctl(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param);
+		igt_assert(err < 0);
+		igt_assert(errno == EBUSY || errno == ENODEV);
+		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
+	}
+
+	for (i = 0; i < qoa->num_oa_units; i++) {
+		if (perf_fd[i])
+			close(perf_fd[i]);
+		if (exec_q[i])
+			xe_exec_queue_destroy(drm_fd, exec_q[i]);
+	}
+}
+
+/**
+ * SUBTEST: oa-unit-concurrent-oa-buffer-read
+ * Description: Test that we can read streams concurrently on all OA units
+ */
+static void
+test_oa_unit_concurrent_oa_buffer_read(void)
+{
+	struct drm_xe_query_oa_units *qoa = xe_oa_units(drm_fd);
+
+	igt_fork(child, qoa->num_oa_units) {
+		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, child);
+
+		/* No OAM support yet */
+		if (nth_oa_unit(drm_fd, child)->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
+			exit(0);
+
+		test_blocking(40 * 1000 * 1000, false, 5 * 1000 * 1000, hwe);
+	}
+	igt_waitchildren();
+}
+
 static const char *xe_engine_class_name(uint32_t engine_class)
 {
 	switch (engine_class) {
@@ -3715,6 +3960,25 @@ igt_main
 		}
 	}
 
+	igt_subtest_group {
+		igt_subtest("oa-unit-exclusive-stream-sample-oa")
+			test_oa_unit_exclusive_stream(true);
+
+		igt_subtest("oa-unit-exclusive-stream-exec-q")
+			test_oa_unit_exclusive_stream(false);
+
+		igt_subtest("oa-unit-concurrent-oa-buffer-read")
+			test_oa_unit_concurrent_oa_buffer_read();
+	}
+
+	igt_subtest("rc6-disable")
+		test_rc6_disable();
+
+	igt_subtest_with_dynamic("stress-open-close") {
+		__for_one_hwe_in_oag(hwe)
+			test_stress_open_close(hwe);
+	}
+
 	igt_fixture {
 		/* leave sysctl options in their default state... */
 		write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
-- 
2.41.0


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

* [PATCH i-g-t 18/27] tests/intel/xe_oa: add remove OA config tests
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (16 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 17/27] tests/intel/xe_oa: Exclusive/concurrent access, rc6 and stress open close Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 19/27] tests/intel/xe_oa: OA buffer mmap tests Ashutosh Dixit
                   ` (13 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

Add the following tests:
	* "invalid-create-userspace-config"
	* "invalid-remove-userspace-config"
	* "create-destroy-userspace-config"
	* "whitelisted-registers-userspace-config"

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 333 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 333 insertions(+)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index 12a76ef4a8..8e6de2db11 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -535,6 +535,12 @@ write_u64_file(const char *path, uint64_t val)
 	fclose(f);
 }
 
+static bool
+try_sysfs_read_u64(const char *path, uint64_t *val)
+{
+	return igt_sysfs_scanf(sysfs, path, "%"PRIu64, val) == 1;
+}
+
 static unsigned long rc6_residency_ms(void)
 {
 	unsigned long value;
@@ -3575,6 +3581,321 @@ test_stress_open_close(const struct drm_xe_engine_class_instance *hwe)
 	load_helper_fini();
 }
 
+static int __xe_oa_add_config(int fd, struct drm_xe_oa_config *config)
+{
+	int ret = intel_xe_perf_ioctl(fd, DRM_XE_PERF_OP_ADD_CONFIG, config);
+	if (ret < 0)
+		ret = -errno;
+	return ret;
+}
+
+static int xe_oa_add_config(int fd, struct drm_xe_oa_config *config)
+{
+	int config_id = __xe_oa_add_config(fd, config);
+
+	igt_debug("config_id=%i\n", config_id);
+	igt_assert(config_id > 0);
+
+	return config_id;
+}
+
+static void xe_oa_remove_config(int fd, uint64_t config_id)
+{
+	igt_assert_eq(intel_xe_perf_ioctl(fd, DRM_XE_PERF_OP_REMOVE_CONFIG, &config_id), 0);
+}
+
+static bool has_xe_oa_userspace_config(int fd)
+{
+	uint64_t config = 0;
+	int ret = intel_xe_perf_ioctl(fd, DRM_XE_PERF_OP_REMOVE_CONFIG, &config);
+	igt_assert_eq(ret, -1);
+
+	igt_debug("errno=%i\n", errno);
+
+	return errno != EINVAL;
+}
+
+#define SAMPLE_MUX_REG (intel_graphics_ver(devid) >= IP_VER(20, 0) ?	\
+			0x13000 /* PES* */ : 0x9888 /* NOA_WRITE */)
+
+/**
+ * SUBTEST: invalid-create-userspace-config
+ * Description: Test invalid configs are rejected
+ */
+static void
+test_invalid_create_userspace_config(void)
+{
+	struct drm_xe_oa_config config;
+	const char *uuid = "01234567-0123-0123-0123-0123456789ab";
+	const char *invalid_uuid = "blablabla-wrong";
+	uint32_t mux_regs[] = { SAMPLE_MUX_REG, 0x0 };
+	uint32_t invalid_mux_regs[] = { 0x12345678 /* invalid register */, 0x0 };
+
+	igt_require(has_xe_oa_userspace_config(drm_fd));
+
+	memset(&config, 0, sizeof(config));
+
+	/* invalid uuid */
+	strncpy(config.uuid, invalid_uuid, sizeof(config.uuid));
+	config.n_regs = 1;
+	config.regs_ptr = to_user_pointer(mux_regs);
+
+	igt_assert_eq(__xe_oa_add_config(drm_fd, &config), -EINVAL);
+
+	/* invalid mux_regs */
+	memcpy(config.uuid, uuid, sizeof(config.uuid));
+	config.n_regs = 1;
+	config.regs_ptr = to_user_pointer(invalid_mux_regs);
+
+	igt_assert_eq(__xe_oa_add_config(drm_fd, &config), -EINVAL);
+
+	/* empty config */
+	memcpy(config.uuid, uuid, sizeof(config.uuid));
+	config.n_regs = 0;
+	config.regs_ptr = to_user_pointer(mux_regs);
+
+	igt_assert_eq(__xe_oa_add_config(drm_fd, &config), -EINVAL);
+
+	/* empty config with null pointer */
+	memcpy(config.uuid, uuid, sizeof(config.uuid));
+	config.n_regs = 1;
+	config.regs_ptr = to_user_pointer(NULL);
+
+	igt_assert_eq(__xe_oa_add_config(drm_fd, &config), -EINVAL);
+
+	/* invalid pointer */
+	memcpy(config.uuid, uuid, sizeof(config.uuid));
+	config.n_regs = 42;
+	config.regs_ptr = to_user_pointer((void *) 0xDEADBEEF);
+
+	igt_assert_eq(__xe_oa_add_config(drm_fd, &config), -EFAULT);
+}
+
+/**
+ * SUBTEST: invalid-remove-userspace-config
+ * Description: Test invalid remove configs are rejected
+ */
+static void
+test_invalid_remove_userspace_config(void)
+{
+	struct drm_xe_oa_config config;
+	const char *uuid = "01234567-0123-0123-0123-0123456789ab";
+	uint32_t mux_regs[] = { SAMPLE_MUX_REG, 0x0 };
+	uint64_t config_id, wrong_config_id = 999999999;
+	char path[512];
+
+	igt_require(has_xe_oa_userspace_config(drm_fd));
+
+	snprintf(path, sizeof(path), "metrics/%s/id", uuid);
+
+	/* Destroy previous configuration if present */
+	if (try_sysfs_read_u64(path, &config_id))
+		xe_oa_remove_config(drm_fd, config_id);
+
+	memset(&config, 0, sizeof(config));
+
+	memcpy(config.uuid, uuid, sizeof(config.uuid));
+
+	config.n_regs = 1;
+	config.regs_ptr = to_user_pointer(mux_regs);
+
+	config_id = xe_oa_add_config(drm_fd, &config);
+
+	/* Removing configs without permissions should fail. */
+	igt_fork(child, 1) {
+		igt_drop_root();
+
+		intel_xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_REMOVE_CONFIG, &config_id, EACCES);
+	}
+	igt_waitchildren();
+
+	/* Removing invalid config ID should fail. */
+	intel_xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_REMOVE_CONFIG, &wrong_config_id, ENOENT);
+
+	xe_oa_remove_config(drm_fd, config_id);
+}
+
+/**
+ * SUBTEST: create-destroy-userspace-config
+ * Description: Test add/remove OA configs
+ */
+static void
+test_create_destroy_userspace_config(void)
+{
+	struct drm_xe_oa_config config;
+	const char *uuid = "01234567-0123-0123-0123-0123456789ab";
+	uint32_t mux_regs[] = { SAMPLE_MUX_REG, 0x0 };
+	uint32_t regs[100];
+	int i;
+	uint64_t config_id;
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, 0, /* Filled later */
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exp_1_millisec,
+		DRM_XE_OA_PROPERTY_OA_DISABLED, true,
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	char path[512];
+
+	igt_require(has_xe_oa_userspace_config(drm_fd));
+
+	snprintf(path, sizeof(path), "metrics/%s/id", uuid);
+
+	/* Destroy previous configuration if present */
+	if (try_sysfs_read_u64(path, &config_id))
+		xe_oa_remove_config(drm_fd, config_id);
+
+	memset(&config, 0, sizeof(config));
+	memcpy(config.uuid, uuid, sizeof(config.uuid));
+
+	regs[0] = mux_regs[0];
+	regs[1] = mux_regs[1];
+	/* Flex EU counters */
+	for (i = 1; i < ARRAY_SIZE(regs) / 2; i++) {
+		regs[i * 2] = 0xe458; /* EU_PERF_CNTL0 */
+		regs[i * 2 + 1] = 0x0;
+	}
+	config.regs_ptr = to_user_pointer(regs);
+	config.n_regs = ARRAY_SIZE(regs) / 2;
+
+	/* Creating configs without permissions shouldn't work. */
+	igt_fork(child, 1) {
+		igt_drop_root();
+
+		igt_assert_eq(__xe_oa_add_config(drm_fd, &config), -EACCES);
+	}
+	igt_waitchildren();
+
+	/* Create a new config */
+	config_id = xe_oa_add_config(drm_fd, &config);
+
+	/* Verify that adding the another config with the same uuid fails. */
+	igt_assert_eq(__xe_oa_add_config(drm_fd, &config), -EADDRINUSE);
+
+	/* Try to use the new config */
+	properties[3] = config_id;
+	stream_fd = __perf_open(drm_fd, &param, false);
+
+	/* Verify that destroying the config doesn't yield any error. */
+	xe_oa_remove_config(drm_fd, config_id);
+
+	/* Read the config to verify shouldn't raise any issue. */
+	config_id = xe_oa_add_config(drm_fd, &config);
+
+	__perf_close(stream_fd);
+
+	xe_oa_remove_config(drm_fd, config_id);
+}
+
+/**
+ * SUBTEST: whitelisted-registers-userspace-config
+ * Description: Test that an OA config constructed using whitelisted register works
+ */
+/* Registers required by userspace. This list should be maintained by
+ * the OA configs developers and agreed upon with kernel developers as
+ * some of the registers have bits used by the kernel (for workarounds
+ * for instance) and other bits that need to be set by the OA configs.
+ */
+static void
+test_whitelisted_registers_userspace_config(void)
+{
+	struct drm_xe_oa_config config;
+	const char *uuid = "01234567-0123-0123-0123-0123456789ab";
+	uint32_t regs[600];
+	uint32_t i;
+	uint32_t oa_start_trig1, oa_start_trig8;
+	uint32_t oa_report_trig1, oa_report_trig8;
+	uint64_t config_id;
+	char path[512];
+	int ret;
+	const uint32_t flex[] = {
+		0xe458,
+		0xe558,
+		0xe658,
+		0xe758,
+		0xe45c,
+		0xe55c,
+		0xe65c
+	};
+
+	igt_require(has_xe_oa_userspace_config(drm_fd));
+
+	snprintf(path, sizeof(path), "metrics/%s/id", uuid);
+
+	if (try_sysfs_read_u64(path, &config_id))
+		xe_oa_remove_config(drm_fd, config_id);
+
+	memset(&config, 0, sizeof(config));
+	memcpy(config.uuid, uuid, sizeof(config.uuid));
+
+	oa_start_trig1 = 0xd900;
+	oa_start_trig8 = 0xd91c;
+	oa_report_trig1 = 0xd920;
+	oa_report_trig8 = 0xd93c;
+
+	/* b_counters_regs: OASTARTTRIG[1-8] */
+	for (i = oa_start_trig1; i <= oa_start_trig8; i += 4) {
+		regs[config.n_regs * 2] = i;
+		regs[config.n_regs * 2 + 1] = 0;
+		config.n_regs++;
+	}
+	/* b_counters_regs: OAREPORTTRIG[1-8] */
+	for (i = oa_report_trig1; i <= oa_report_trig8; i += 4) {
+		regs[config.n_regs * 2] = i;
+		regs[config.n_regs * 2 + 1] = 0;
+		config.n_regs++;
+	}
+
+	/* Flex EU registers, only from Gen8+. */
+	for (i = 0; i < ARRAY_SIZE(flex); i++) {
+		regs[config.n_regs * 2] = flex[i];
+		regs[config.n_regs * 2 + 1] = 0;
+		config.n_regs++;
+	}
+
+	/* Mux registers (too many of them, just checking bounds) */
+	/* NOA_WRITE */
+	regs[config.n_regs * 2] = SAMPLE_MUX_REG;
+	regs[config.n_regs * 2 + 1] = 0;
+	config.n_regs++;
+
+	/* NOA_CONFIG */
+	/* Prior to Xe2 */
+	if (intel_graphics_ver(devid) < IP_VER(20, 0)) {
+		regs[config.n_regs * 2] = 0xD04;
+		regs[config.n_regs * 2 + 1] = 0;
+		config.n_regs++;
+		regs[config.n_regs * 2] = 0xD2C;
+		regs[config.n_regs * 2 + 1] = 0;
+		config.n_regs++;
+	}
+	/* Prior to MTLx */
+	if (intel_graphics_ver(devid) < IP_VER(12, 70)) {
+		/* WAIT_FOR_RC6_EXIT */
+		regs[config.n_regs * 2] = 0x20CC;
+		regs[config.n_regs * 2 + 1] = 0;
+		config.n_regs++;
+	}
+
+	config.regs_ptr = (uintptr_t) regs;
+
+	/* Create a new config */
+	ret = intel_xe_perf_ioctl(drm_fd, DRM_XE_PERF_OP_ADD_CONFIG, &config);
+	igt_assert(ret > 0); /* Config 0 should be used by the kernel */
+	config_id = ret;
+
+	xe_oa_remove_config(drm_fd, config_id);
+}
+
 /**
  * SUBTEST: xe-ref-count
  * Description: Check that an open oa stream holds a reference on the xe module
@@ -3979,6 +4300,18 @@ igt_main
 			test_stress_open_close(hwe);
 	}
 
+	igt_subtest("invalid-create-userspace-config")
+		test_invalid_create_userspace_config();
+
+	igt_subtest("invalid-remove-userspace-config")
+		test_invalid_remove_userspace_config();
+
+	igt_subtest("create-destroy-userspace-config")
+		test_create_destroy_userspace_config();
+
+	igt_subtest("whitelisted-registers-userspace-config")
+		test_whitelisted_registers_userspace_config();
+
 	igt_fixture {
 		/* leave sysctl options in their default state... */
 		write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
-- 
2.41.0


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

* [PATCH i-g-t 19/27] tests/intel/xe_oa: OA buffer mmap tests
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (17 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 18/27] tests/intel/xe_oa: add remove OA config tests Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 20/27] tests/intel/xe_oa: Register whitelisting and MMIO trigger tests Ashutosh Dixit
                   ` (12 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

Add the following tests:
* "map-oa-buffer"
* "invalid-map-oa-buffer"
* "non-privileged-map-oa-buffer"
* "non-privileged-access-vaddr"
* "privileged-forked-access-vaddr"
* "closed-fd-and-unmapped-access"

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 251 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 251 insertions(+)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index 8e6de2db11..30d1ed329f 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -4113,6 +4113,231 @@ test_oa_unit_concurrent_oa_buffer_read(void)
 	igt_waitchildren();
 }
 
+static void *map_oa_buffer(u32 *size)
+{
+	void *vaddr = mmap(0, OA_BUFFER_SIZE, PROT_READ, MAP_PRIVATE, stream_fd, 0);
+
+	igt_assert(vaddr != NULL);
+	*size = OA_BUFFER_SIZE;
+	return vaddr;
+}
+
+static void invalid_param_map_oa_buffer(const struct drm_xe_engine_class_instance *hwe)
+{
+	void *oa_vaddr = NULL;
+
+	/* try a couple invalid mmaps */
+	/* bad prots */
+	oa_vaddr = mmap(0, OA_BUFFER_SIZE, PROT_WRITE, MAP_PRIVATE, stream_fd, 0);
+	igt_assert(oa_vaddr == MAP_FAILED);
+
+	oa_vaddr = mmap(0, OA_BUFFER_SIZE, PROT_EXEC, MAP_PRIVATE, stream_fd, 0);
+	igt_assert(oa_vaddr == MAP_FAILED);
+
+	/* bad MAPs */
+	oa_vaddr = mmap(0, OA_BUFFER_SIZE, PROT_READ, MAP_SHARED, stream_fd, 0);
+	igt_assert(oa_vaddr == MAP_FAILED);
+
+	/* bad size */
+	oa_vaddr = mmap(0, OA_BUFFER_SIZE + 1, PROT_READ, MAP_PRIVATE, stream_fd, 0);
+	igt_assert(oa_vaddr == MAP_FAILED);
+
+	/* do the right thing */
+	oa_vaddr = mmap(0, OA_BUFFER_SIZE, PROT_READ, MAP_PRIVATE, stream_fd, 0);
+	igt_assert(oa_vaddr != MAP_FAILED && oa_vaddr != NULL);
+
+	munmap(oa_vaddr, OA_BUFFER_SIZE);
+}
+
+static void unprivileged_try_to_map_oa_buffer(void)
+{
+	void *oa_vaddr;
+
+	oa_vaddr = mmap(0, OA_BUFFER_SIZE, PROT_READ, MAP_PRIVATE, stream_fd, 0);
+	igt_assert(oa_vaddr == MAP_FAILED);
+	igt_assert_eq(errno, EACCES);
+}
+
+static void unprivileged_map_oa_buffer(const struct drm_xe_engine_class_instance *hwe)
+{
+	igt_fork(child, 1) {
+		igt_drop_root();
+		unprivileged_try_to_map_oa_buffer();
+	}
+	igt_waitchildren();
+}
+
+static jmp_buf jmp;
+static void __attribute__((noreturn)) sigtrap(int sig)
+{
+	siglongjmp(jmp, sig);
+}
+
+static void try_invalid_access(void *vaddr)
+{
+	sighandler_t old_sigsegv;
+	uint32_t dummy;
+
+	old_sigsegv = signal(SIGSEGV, sigtrap);
+	switch (sigsetjmp(jmp, SIGSEGV)) {
+	case SIGSEGV:
+		break;
+	case 0:
+		dummy = READ_ONCE(*((uint32_t *)vaddr + 1));
+		(void) dummy;
+	default:
+		igt_assert(!"reached");
+		break;
+	}
+	signal(SIGSEGV, old_sigsegv);
+}
+
+static void map_oa_buffer_unprivilege_access(const struct drm_xe_engine_class_instance *hwe)
+{
+	void *vaddr;
+	uint32_t size;
+
+	vaddr = map_oa_buffer(&size);
+
+	igt_fork(child, 1) {
+		igt_drop_root();
+		try_invalid_access(vaddr);
+	}
+	igt_waitchildren();
+
+	munmap(vaddr, size);
+}
+
+static void map_oa_buffer_forked_access(const struct drm_xe_engine_class_instance *hwe)
+{
+	void *vaddr;
+	uint32_t size;
+
+	vaddr = map_oa_buffer(&size);
+
+	igt_fork(child, 1) {
+		try_invalid_access(vaddr);
+	}
+	igt_waitchildren();
+
+	munmap(vaddr, size);
+}
+
+static void check_reports(void *oa_vaddr, uint32_t oa_size,
+			  const struct drm_xe_engine_class_instance *hwe)
+{
+	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t fmt = test_set->perf_oa_format;
+	struct oa_format format = get_oa_format(fmt);
+	size_t report_words = format.size >> 2;
+	uint32_t *reports;
+	uint32_t timer_reports = 0;
+
+	for (reports = (uint32_t *)oa_vaddr;
+	     timer_reports < 20 && reports[0] && oa_timestamp(reports, fmt);
+	     reports += report_words) {
+		if (!oa_report_is_periodic(oa_exp_1_millisec, reports))
+			continue;
+
+		timer_reports++;
+		if (timer_reports >= 3)
+			sanity_check_reports(reports - 2 * report_words,
+					     reports - report_words, fmt);
+	}
+
+	igt_assert(timer_reports >= 3);
+}
+
+static void check_reports_from_mapped_buffer(const struct drm_xe_engine_class_instance *hwe)
+{
+	void *vaddr;
+	uint32_t size;
+	uint32_t period_us = oa_exponent_to_ns(oa_exp_1_millisec) / 1000;
+
+	vaddr = map_oa_buffer(&size);
+
+	/* wait for approx 100 reports */
+	usleep(100 * period_us);
+	check_reports(vaddr, size, hwe);
+
+	munmap(vaddr, size);
+}
+
+/**
+ * SUBTEST: closed-fd-and-unmapped-access
+ * Description: Unmap buffer, close fd and try to access
+ */
+static void closed_fd_and_unmapped_access(const struct drm_xe_engine_class_instance *hwe)
+{
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exp_1_millisec,
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	void *vaddr;
+	uint32_t size;
+	uint32_t period_us = oa_exponent_to_ns(oa_exp_1_millisec) / 1000;
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+	vaddr = map_oa_buffer(&size);
+
+	usleep(100 * period_us);
+	check_reports(vaddr, size, hwe);
+
+	munmap(vaddr, size);
+	__perf_close(stream_fd);
+
+	try_invalid_access(vaddr);
+}
+
+/**
+ * SUBTEST: map-oa-buffer
+ * Description: Verify mapping of oa buffer
+ *
+ * SUBTEST: invalid-map-oa-buffer
+ * Description: Verify invalid mappings of oa buffer
+ *
+ * SUBTEST: non-privileged-map-oa-buffer
+ * Description: Verify if non-privileged user can map oa buffer
+ *
+ * SUBTEST: non-privileged-access-vaddr
+ * Description: Verify if non-privileged user can map oa buffer
+ *
+ * SUBTEST: privileged-forked-access-vaddr
+ * Description: Verify that forked access to mapped buffer fails
+ */
+typedef void (*map_oa_buffer_test_t)(const struct drm_xe_engine_class_instance *hwe);
+static void test_mapped_oa_buffer(map_oa_buffer_test_t test_with_fd_open,
+				  const struct drm_xe_engine_class_instance *hwe)
+{
+	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exp_1_millisec,
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+
+	igt_assert(test_with_fd_open);
+	test_with_fd_open(hwe);
+
+	__perf_close(stream_fd);
+}
+
 static const char *xe_engine_class_name(uint32_t engine_class)
 {
 	switch (engine_class) {
@@ -4312,6 +4537,32 @@ igt_main
 	igt_subtest("whitelisted-registers-userspace-config")
 		test_whitelisted_registers_userspace_config();
 
+	igt_subtest_group {
+		igt_subtest_with_dynamic("map-oa-buffer")
+			__for_one_hwe_in_oag(hwe)
+				test_mapped_oa_buffer(check_reports_from_mapped_buffer, hwe);
+
+		igt_subtest_with_dynamic("invalid-map-oa-buffer")
+			__for_one_hwe_in_oag(hwe)
+				test_mapped_oa_buffer(invalid_param_map_oa_buffer, hwe);
+
+		igt_subtest_with_dynamic("non-privileged-map-oa-buffer")
+			__for_one_hwe_in_oag(hwe)
+				test_mapped_oa_buffer(unprivileged_map_oa_buffer, hwe);
+
+		igt_subtest_with_dynamic("non-privileged-access-vaddr")
+			__for_one_hwe_in_oag(hwe)
+				test_mapped_oa_buffer(map_oa_buffer_unprivilege_access, hwe);
+
+		igt_subtest_with_dynamic("privileged-forked-access-vaddr")
+			__for_one_hwe_in_oag(hwe)
+				test_mapped_oa_buffer(map_oa_buffer_forked_access, hwe);
+
+		igt_subtest_with_dynamic("closed-fd-and-unmapped-access")
+			__for_one_hwe_in_oag(hwe)
+				closed_fd_and_unmapped_access(hwe);
+	}
+
 	igt_fixture {
 		/* leave sysctl options in their default state... */
 		write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
-- 
2.41.0


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

* [PATCH i-g-t 20/27] tests/intel/xe_oa: Register whitelisting and MMIO trigger tests
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (18 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 19/27] tests/intel/xe_oa: OA buffer mmap tests Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 21/27] lib/xe/oa: Add xe_oa_data_reader to IGT lib Ashutosh Dixit
                   ` (11 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

Add the following tests:
	* "oa-regs-whitelisted"
	* "mmio-triggered-reports"

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/intel/xe_oa.c | 327 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 327 insertions(+)

diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
index 30d1ed329f..ec486c3a80 100644
--- a/tests/intel/xe_oa.c
+++ b/tests/intel/xe_oa.c
@@ -3896,6 +3896,317 @@ test_whitelisted_registers_userspace_config(void)
 	xe_oa_remove_config(drm_fd, config_id);
 }
 
+#define OAG_OASTATUS (0xdafc)
+#define OAG_MMIOTRIGGER (0xdb1c)
+
+static const uint32_t oa_wl[] = {
+	OAG_MMIOTRIGGER,
+	OAG_OASTATUS,
+};
+
+static const uint32_t nonpriv_slot_offsets[] = {
+	0x4d0, 0x4d4, 0x4d8, 0x4dc, 0x4e0, 0x4e4, 0x4e8, 0x4ec,
+	0x4f0, 0x4f4, 0x4f8, 0x4fc, 0x010, 0x014, 0x018, 0x01c,
+	0x1e0, 0x1e4, 0x1e8, 0x1ec,
+};
+
+struct test_perf {
+	const uint32_t *slots;
+	uint32_t num_slots;
+	const uint32_t *wl;
+	uint32_t num_wl;
+} perf;
+
+#define HAS_OA_MMIO_TRIGGER(__d) \
+	(IS_DG2(__d) || IS_PONTEVECCHIO(__d) || IS_METEORLAKE(__d) || \
+	 intel_graphics_ver(devid) >= IP_VER(20, 0))
+
+static void perf_init_whitelist(void)
+{
+	perf.slots = nonpriv_slot_offsets;
+	perf.num_slots = 20;
+	perf.wl = oa_wl;
+	perf.num_wl = ARRAY_SIZE(oa_wl);
+}
+
+static void
+emit_oa_reg_read(struct intel_bb *ibb, struct intel_buf *dst, uint32_t offset,
+		 uint32_t reg)
+{
+	intel_bb_add_intel_buf(ibb, dst, true);
+
+	intel_bb_out(ibb, MI_STORE_REGISTER_MEM | 2);
+	intel_bb_out(ibb, reg);
+	intel_bb_emit_reloc(ibb, dst->handle,
+			    I915_GEM_DOMAIN_INSTRUCTION,
+			    I915_GEM_DOMAIN_INSTRUCTION,
+			    offset, dst->addr.offset);
+	intel_bb_out(ibb, lower_32_bits(offset));
+	intel_bb_out(ibb, upper_32_bits(offset));
+}
+
+static void
+emit_mmio_triggered_report(struct intel_bb *ibb, uint32_t value)
+{
+	intel_bb_out(ibb, MI_LOAD_REGISTER_IMM(1));
+	intel_bb_out(ibb, OAG_MMIOTRIGGER);
+	intel_bb_out(ibb, value);
+}
+
+static void dump_whitelist(uint32_t mmio_base, const char *msg)
+{
+	int i;
+
+	igt_debug("%s\n", msg);
+
+	for (i = 0; i < perf.num_slots; i++)
+		igt_debug("FORCE_TO_NON_PRIV_%02d = %08x\n",
+			  i, intel_register_read(&mmio_data,
+						 mmio_base + perf.slots[i]));
+}
+
+static bool in_whitelist(uint32_t mmio_base, uint32_t reg)
+{
+	int i;
+
+	if (reg & MMIO_BASE_OFFSET)
+		reg = (reg & ~MMIO_BASE_OFFSET) + mmio_base;
+
+	for (i = 0; i < perf.num_slots; i++) {
+		uint32_t fpriv = intel_register_read(&mmio_data,
+						     mmio_base + perf.slots[i]);
+
+		if ((fpriv & RING_FORCE_TO_NONPRIV_ADDRESS_MASK) == reg)
+			return true;
+	}
+
+	return false;
+}
+
+static void oa_regs_in_whitelist(uint32_t mmio_base, bool are_present)
+{
+	int i;
+
+	if (are_present) {
+		for (i = 0; i < perf.num_wl; i++)
+			igt_assert(in_whitelist(mmio_base, perf.wl[i]));
+	} else {
+		for (i = 0; i < perf.num_wl; i++)
+			igt_assert(!in_whitelist(mmio_base, perf.wl[i]));
+	}
+}
+
+static u32 oa_get_mmio_base(const struct drm_xe_engine_class_instance *hwe)
+{
+	u32 mmio_base = 0x2000;
+
+	switch (hwe->engine_class) {
+	case DRM_XE_ENGINE_CLASS_RENDER:
+		mmio_base = 0x2000;
+		break;
+	case DRM_XE_ENGINE_CLASS_COMPUTE:
+		switch (hwe->engine_instance) {
+		case 0:
+			mmio_base = 0x1a000;
+			break;
+		case 1:
+			mmio_base = 0x1c000;
+			break;
+		case 2:
+			mmio_base = 0x1e000;
+			break;
+		case 3:
+			mmio_base = 0x26000;
+			break;
+		}
+	}
+
+	return mmio_base;
+}
+
+/**
+ * SUBTEST: oa-regs-whitelisted
+ * Description: Verify that OA registers are whitelisted
+ */
+static void test_oa_regs_whitelist(const struct drm_xe_engine_class_instance *hwe)
+{
+	struct intel_xe_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exp_1_millisec,
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = sizeof(properties) / 16,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	// uint32_t mmio_base = gem_engine_mmio_base(drm_fd, e->name);
+	u32 mmio_base;
+
+	/* FIXME: Add support for OAM whitelist testing */
+	if (hwe->engine_class != DRM_XE_ENGINE_CLASS_RENDER &&
+	    hwe->engine_class != DRM_XE_ENGINE_CLASS_COMPUTE)
+		return;
+
+	mmio_base = oa_get_mmio_base(hwe);
+
+	intel_register_access_init(&mmio_data,
+				   igt_device_get_pci_device(drm_fd),
+				   0, drm_fd);
+	stream_fd = __perf_open(drm_fd, &param, false);
+
+	dump_whitelist(mmio_base, "oa whitelisted");
+
+	oa_regs_in_whitelist(mmio_base, true);
+
+	__perf_close(stream_fd);
+
+	dump_whitelist(mmio_base, "oa remove whitelist");
+
+	/*
+	 * after perf close, check that registers are removed from the nonpriv
+	 * slots
+	 * FIXME if needed: currently regs remain added forever
+	 */
+	// oa_regs_in_whitelist(mmio_base, false);
+
+	intel_register_access_fini(&mmio_data);
+}
+
+static void
+__test_mmio_triggered_reports(struct drm_xe_engine_class_instance *hwe)
+{
+	struct intel_xe_perf_metric_set *test_set = default_test_set;
+	int oa_exponent = max_oa_exponent_for_period_lte(2 * NSEC_PER_SEC);
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, oa_exponent,
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = sizeof(properties) / 16,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	size_t format_size = get_oa_format(test_set->perf_oa_format).size;
+	uint32_t oa_buffer, offset_tail1, offset_tail2;
+	struct intel_buf src, dst, *dst_buf;
+	uint32_t mmio_triggered_reports = 0;
+	uint32_t *start, *end;
+	struct buf_ops *bops;
+	struct intel_bb *ibb;
+	uint32_t context, vm;
+	int height = 600;
+	int width = 800;
+	uint8_t *buf;
+
+	bops = buf_ops_create(drm_fd);
+
+	dst_buf = intel_buf_create(bops, 4096, 1, 8, 64,
+				   I915_TILING_NONE,
+				   I915_COMPRESSION_NONE);
+	buf_map(drm_fd, dst_buf, true);
+	memset(dst_buf->ptr, 0, 4096);
+	intel_buf_unmap(dst_buf);
+
+	scratch_buf_init(bops, &src, width, height, 0xff0000ff);
+	scratch_buf_init(bops, &dst, width, height, 0x00ff00ff);
+
+	vm = xe_vm_create(drm_fd, 0, 0);
+	context = xe_exec_queue_create(drm_fd, vm, hwe, 0);
+	igt_assert(context);
+	ibb = intel_bb_create_with_context(drm_fd, context, vm, NULL, BATCH_SZ);
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+        set_fd_flags(stream_fd, O_CLOEXEC);
+
+	buf = mmap(0, OA_BUFFER_SIZE, PROT_READ, MAP_PRIVATE, stream_fd, 0);
+	igt_assert(buf != NULL);
+
+	emit_oa_reg_read(ibb, dst_buf, 0, OAG_OABUFFER);
+	emit_oa_reg_read(ibb, dst_buf, 4, OAG_OATAILPTR);
+	emit_mmio_triggered_report(ibb, 0xc0ffee11);
+
+	if (render_copy)
+		render_copy(ibb,
+			    &src, 0, 0, width, height,
+			    &dst, 0, 0);
+
+	emit_mmio_triggered_report(ibb, 0xc0ffee22);
+
+	emit_oa_reg_read(ibb, dst_buf, 8, OAG_OATAILPTR);
+
+	intel_bb_flush_render(ibb);
+	intel_bb_sync(ibb);
+
+	buf_map(drm_fd, dst_buf, false);
+
+	oa_buffer = dst_buf->ptr[0] & OAG_OATAILPTR_MASK;
+	offset_tail1 = (dst_buf->ptr[1] & OAG_OATAILPTR_MASK) - oa_buffer;
+	offset_tail2 = (dst_buf->ptr[2] & OAG_OATAILPTR_MASK) - oa_buffer;
+
+	igt_debug("oa_buffer = %08x, tail1 = %08x, tail2 = %08x\n",
+		  oa_buffer, offset_tail1, offset_tail2);
+
+	start = (uint32_t *)(buf + offset_tail1);
+	end = (uint32_t *)(buf + offset_tail2);
+	while (start < end) {
+		if (!report_reason(start))
+			mmio_triggered_reports++;
+
+		if (get_oa_format(test_set->perf_oa_format).report_hdr_64bit) {
+			u64 *start64 = (u64 *)start;
+
+			igt_debug("hdr: %016lx %016lx %016lx %016lx\n",
+				  start64[0], start64[1], start64[2], start64[3]);
+		} else {
+			igt_debug("hdr: %08x %08x %08x %08x\n",
+				  start[0], start[1], start[2], start[3]);
+		}
+
+		start += format_size / 4;
+	}
+
+	igt_assert_eq(mmio_triggered_reports, 2);
+
+	munmap(buf, OA_BUFFER_SIZE);
+	intel_buf_close(bops, &src);
+	intel_buf_close(bops, &dst);
+	intel_buf_unmap(dst_buf);
+	intel_buf_destroy(dst_buf);
+	intel_bb_destroy(ibb);
+	xe_exec_queue_destroy(drm_fd, context);
+	xe_vm_destroy(drm_fd, vm);
+	buf_ops_destroy(bops);
+	__perf_close(stream_fd);
+}
+
+/**
+ * SUBTEST: mmio-triggered-reports
+ * Description: Test MMIO trigger functionality
+ */
+static void
+test_mmio_triggered_reports(struct drm_xe_engine_class_instance *hwe)
+{
+	struct igt_helper_process child = {};
+	int ret;
+
+	write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 0);
+	igt_fork_helper(&child) {
+		igt_drop_root();
+
+		__test_mmio_triggered_reports(hwe);
+	}
+	ret = igt_wait_helper(&child);
+	write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
+
+	igt_assert(WEXITSTATUS(ret) == EAGAIN ||
+		   WEXITSTATUS(ret) == 0);
+}
+
 /**
  * SUBTEST: xe-ref-count
  * Description: Check that an open oa stream holds a reference on the xe module
@@ -4563,6 +4874,22 @@ igt_main
 				closed_fd_and_unmapped_access(hwe);
 	}
 
+	igt_subtest_group {
+		igt_fixture {
+			perf_init_whitelist();
+		}
+
+		igt_subtest_with_dynamic("oa-regs-whitelisted")
+			__for_one_hwe_in_oag(hwe)
+				test_oa_regs_whitelist(hwe);
+
+		igt_subtest_with_dynamic("mmio-triggered-reports") {
+			igt_require(HAS_OA_MMIO_TRIGGER(devid));
+			__for_one_hwe_in_oag(hwe)
+				test_mmio_triggered_reports(hwe);
+		}
+	}
+
 	igt_fixture {
 		/* leave sysctl options in their default state... */
 		write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
-- 
2.41.0


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

* [PATCH i-g-t 21/27] lib/xe/oa: Add xe_oa_data_reader to IGT lib
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (19 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 20/27] tests/intel/xe_oa: Register whitelisting and MMIO trigger tests Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 22/27] tools/xe-perf: Add xe_perf_recorder Ashutosh Dixit
                   ` (10 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

xe_oa_data_reader is used to interpret data recorded by xe_perf_recorder
and contains common functionality used by xe_perf_reader and applications
like gpuvis.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 lib/meson.build            |   3 +
 lib/xe/xe_oa_data.h        | 101 ++++++++++
 lib/xe/xe_oa_data_reader.c | 369 +++++++++++++++++++++++++++++++++++++
 lib/xe/xe_oa_data_reader.h |  87 +++++++++
 4 files changed, 560 insertions(+)
 create mode 100644 lib/xe/xe_oa_data.h
 create mode 100644 lib/xe/xe_oa_data_reader.c
 create mode 100644 lib/xe/xe_oa_data_reader.h

diff --git a/lib/meson.build b/lib/meson.build
index 02b86a77ff..4d51402163 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -380,6 +380,7 @@ install_headers(
 xe_oa_files = [
   'igt_list.c',
   'xe/xe_oa.c',
+  'xe/xe_oa_data_reader.c',
 ]
 
 xe_oa_hardware = [
@@ -453,6 +454,8 @@ install_headers(
   'igt_list.h',
   'intel_chipset.h',
   'xe/xe_oa.h',
+  'xe/xe_oa_data.h',
+  'xe/xe_oa_data_reader.h',
   subdir : 'xe-oa'
 )
 
diff --git a/lib/xe/xe_oa_data.h b/lib/xe/xe_oa_data.h
new file mode 100644
index 0000000000..82d9019a9a
--- /dev/null
+++ b/lib/xe/xe_oa_data.h
@@ -0,0 +1,101 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#ifndef XE_OA_DATA_H
+#define XE_OA_DATA_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+
+/* For now this enum is the same as i915 intel_perf_record_type/drm_i915_perf_record_type */
+enum intel_xe_perf_record_type {
+	/* An packet/record of OA data */
+	INTEL_XE_PERF_RECORD_TYPE_SAMPLE = 1,
+
+	/* Indicates one or more OA reports were not written by HW */
+	INTEL_XE_PERF_RECORD_OA_TYPE_REPORT_LOST,
+
+	/* An error occurred that resulted in all pending OA reports being lost */
+	INTEL_XE_PERF_RECORD_OA_TYPE_BUFFER_LOST,
+
+	INTEL_XE_PERF_RECORD_TYPE_VERSION,
+
+	/* intel_xe_perf_record_device_info */
+	INTEL_XE_PERF_RECORD_TYPE_DEVICE_INFO,
+
+	/* intel_xe_perf_record_device_topology */
+	INTEL_XE_PERF_RECORD_TYPE_DEVICE_TOPOLOGY,
+
+	/* intel_xe_perf_record_timestamp_correlation */
+	INTEL_XE_PERF_RECORD_TYPE_TIMESTAMP_CORRELATION,
+
+	INTEL_XE_PERF_RECORD_MAX /* non-ABI */
+};
+
+/* This structure cannot ever change. */
+struct intel_xe_perf_record_version {
+	/* Version of the xe-perf file recording format (effectively
+	 * versioning this file).
+	 */
+	uint32_t version;
+
+#define INTEL_XE_PERF_RECORD_VERSION (1)
+
+	uint32_t pad;
+} __attribute__((packed));
+
+struct intel_xe_perf_record_device_info {
+	/* Frequency of the timestamps in the records. */
+	uint64_t timestamp_frequency;
+
+	/* PCI ID */
+	uint32_t device_id;
+
+	/* Stepping */
+	uint32_t device_revision;
+
+	/* GT min/max frequencies */
+	uint32_t gt_min_frequency;
+	uint32_t gt_max_frequency;
+
+	/* Engine */
+	uint32_t engine_class;
+	uint32_t engine_instance;
+
+	/* enum intel_xe_oa_format_name */
+	uint32_t oa_format;
+
+	/* Metric set name */
+	char metric_set_name[256];
+
+	/* Configuration identifier */
+	char metric_set_uuid[40];
+
+	uint32_t pad;
+ } __attribute__((packed));
+
+/* Topology as filled by xe_fill_topology_info (variable length, aligned by
+ * the recorder). */
+struct intel_xe_perf_record_device_topology {
+	struct intel_xe_topology_info topology;
+};
+
+/* Timestamp correlation between CPU/GPU. */
+struct intel_xe_perf_record_timestamp_correlation {
+	/* In CLOCK_MONOTONIC */
+	uint64_t cpu_timestamp;
+
+	/* Engine timestamp associated with the OA unit */
+	uint64_t gpu_timestamp;
+} __attribute__((packed));
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif /* XE_OA_DATA_H */
diff --git a/lib/xe/xe_oa_data_reader.c b/lib/xe/xe_oa_data_reader.c
new file mode 100644
index 0000000000..b463f63c45
--- /dev/null
+++ b/lib/xe/xe_oa_data_reader.c
@@ -0,0 +1,369 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#include <assert.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/mman.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include <xe_drm.h>
+
+#include "intel_chipset.h"
+#include "xe_oa.h"
+#include "xe_oa_data_reader.h"
+
+#define MAX(a,b) ((a) > (b) ? (a) : (b))
+#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
+
+static inline bool
+oa_report_ctx_is_valid(const struct intel_xe_perf_devinfo *devinfo,
+		       const uint8_t *_report)
+{
+	const uint32_t *report = (const uint32_t *) _report;
+
+	if (devinfo->graphics_ver < 8)
+		return false; /* TODO */
+	if (devinfo->graphics_ver >= 12)
+		return true; /* Always valid */
+	if (devinfo->graphics_ver == 8)
+		return report[0] & (1ul << 25);
+	if (devinfo->graphics_ver > 8)
+		return report[0] & (1ul << 16);
+
+	return false;
+}
+
+static uint32_t
+oa_report_ctx_id(struct intel_xe_perf_data_reader *reader, const uint8_t *report)
+{
+	if (!oa_report_ctx_is_valid(&reader->devinfo, report))
+		return 0xffffffff;
+
+	if (reader->metric_set->perf_oa_format == XE_OA_FORMAT_PEC64u64)
+		return ((const uint32_t *) report)[4];
+	else
+		return ((const uint32_t *) report)[2];
+}
+
+static void
+append_record(struct intel_xe_perf_data_reader *reader,
+	      const struct intel_xe_perf_record_header *header)
+{
+	if (reader->n_records >= reader->n_allocated_records) {
+		reader->n_allocated_records = MAX(100, 2 * reader->n_allocated_records);
+		reader->records =
+			(const struct intel_xe_perf_record_header **)
+			realloc((void *) reader->records,
+				reader->n_allocated_records *
+				sizeof(struct intel_xe_perf_record_header *));
+		assert(reader->records);
+	}
+
+	reader->records[reader->n_records++] = header;
+}
+
+static void
+append_timestamp_correlation(struct intel_xe_perf_data_reader *reader,
+			     const struct intel_xe_perf_record_timestamp_correlation *corr)
+{
+	if (reader->n_correlations >= reader->n_allocated_correlations) {
+		reader->n_allocated_correlations = MAX(100, 2 * reader->n_allocated_correlations);
+		reader->correlations =
+			(const struct intel_xe_perf_record_timestamp_correlation **)
+			realloc((void *) reader->correlations,
+				reader->n_allocated_correlations *
+				sizeof(*reader->correlations));
+		assert(reader->correlations);
+	}
+
+	reader->correlations[reader->n_correlations++] = corr;
+}
+
+static struct intel_xe_perf_metric_set *
+find_metric_set(struct intel_xe_perf *perf, const char *symbol_name)
+{
+	struct intel_xe_perf_metric_set *metric_set;
+
+	igt_list_for_each_entry(metric_set, &perf->metric_sets, link) {
+		if (!strcmp(symbol_name, metric_set->symbol_name))
+			return metric_set;
+	}
+
+	return NULL;
+}
+
+static bool
+parse_data(struct intel_xe_perf_data_reader *reader)
+{
+	const struct intel_xe_perf_record_device_info *record_info;
+	const struct intel_xe_perf_record_device_topology *record_topology;
+	const uint8_t *end = reader->mmap_data + reader->mmap_size;
+	const uint8_t *iter = reader->mmap_data;
+
+	while (iter < end) {
+		const struct intel_xe_perf_record_header *header =
+			(const struct intel_xe_perf_record_header *) iter;
+
+		switch (header->type) {
+		case INTEL_XE_PERF_RECORD_TYPE_SAMPLE:
+			append_record(reader, header);
+			break;
+
+		case INTEL_XE_PERF_RECORD_OA_TYPE_REPORT_LOST:
+		case INTEL_XE_PERF_RECORD_OA_TYPE_BUFFER_LOST:
+			assert(header->size == sizeof(*header));
+			break;
+
+		case INTEL_XE_PERF_RECORD_TYPE_VERSION: {
+			struct intel_xe_perf_record_version *version =
+				(struct intel_xe_perf_record_version*) (header + 1);
+			if (version->version != INTEL_XE_PERF_RECORD_VERSION) {
+				snprintf(reader->error_msg, sizeof(reader->error_msg),
+					 "Unsupported recording version (%u, expected %u)",
+					 version->version, INTEL_XE_PERF_RECORD_VERSION);
+				return false;
+			}
+			break;
+		}
+
+		case INTEL_XE_PERF_RECORD_TYPE_DEVICE_INFO: {
+			reader->record_info = header + 1;
+			assert(header->size == (sizeof(struct intel_xe_perf_record_device_info) +
+						sizeof(*header)));
+			break;
+		}
+
+		case INTEL_XE_PERF_RECORD_TYPE_DEVICE_TOPOLOGY: {
+			reader->record_topology = header + 1;
+			break;
+		}
+
+		case INTEL_XE_PERF_RECORD_TYPE_TIMESTAMP_CORRELATION: {
+			append_timestamp_correlation(reader,
+						     (const struct intel_xe_perf_record_timestamp_correlation *) (header + 1));
+			break;
+		}
+		}
+
+		iter += header->size;
+	}
+
+	if (!reader->record_info ||
+	    !reader->record_topology) {
+		snprintf(reader->error_msg, sizeof(reader->error_msg),
+			 "Invalid file, missing device or topology info");
+		return false;
+	}
+
+	record_info = reader->record_info;
+	record_topology = reader->record_topology;
+
+	reader->perf = intel_xe_perf_for_devinfo(record_info->device_id,
+						 record_info->device_revision,
+						 record_info->timestamp_frequency,
+						 record_info->gt_min_frequency,
+						 record_info->gt_max_frequency,
+						 &record_topology->topology);
+	if (!reader->perf) {
+		snprintf(reader->error_msg, sizeof(reader->error_msg),
+			 "Recording occured on unsupported device (0x%x)",
+			 record_info->device_id);
+		return false;
+	}
+
+	reader->devinfo = reader->perf->devinfo;
+
+	reader->metric_set_name = record_info->metric_set_name;
+	reader->metric_set_uuid = record_info->metric_set_uuid;
+	reader->metric_set = find_metric_set(reader->perf, record_info->metric_set_name);
+
+	return true;
+}
+
+static uint64_t
+correlate_gpu_timestamp(struct intel_xe_perf_data_reader *reader,
+			uint64_t gpu_ts)
+{
+	/* OA reports only have the lower 32bits of the timestamp
+	 * register, while our correlation data has the whole 36bits.
+	 * Try to figure what portion of the correlation data the
+	 * 32bit timestamp belongs to.
+	 */
+	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)) {
+			corr_idx = reader->correlation_chunks[i].idx;
+			break;
+		}
+	}
+
+	/* Not found? Assume prior to the first timestamp correlation.
+	 */
+	if (corr_idx < 0) {
+		return reader->correlations[0]->cpu_timestamp -
+			((reader->correlations[0]->gpu_timestamp & mask) - gpu_ts) *
+			(reader->correlations[1]->cpu_timestamp - reader->correlations[0]->cpu_timestamp) /
+			(reader->correlations[1]->gpu_timestamp - reader->correlations[0]->gpu_timestamp);
+	}
+
+	for (uint32_t i = corr_idx; i < (reader->n_correlations - 1); i++) {
+		if (gpu_ts >= (reader->correlations[i]->gpu_timestamp & mask) &&
+		    gpu_ts < (reader->correlations[i + 1]->gpu_timestamp & mask)) {
+			return reader->correlations[i]->cpu_timestamp +
+				(gpu_ts - (reader->correlations[i]->gpu_timestamp & mask)) *
+				(reader->correlations[i + 1]->cpu_timestamp - reader->correlations[i]->cpu_timestamp) /
+				(reader->correlations[i + 1]->gpu_timestamp - reader->correlations[i]->gpu_timestamp);
+		}
+	}
+
+	/* This is a bit harsh, but the recording tool should ensure we have
+	 * sampling points on either side of the bag of OA reports.
+	 */
+	assert(0);
+}
+
+static void
+append_timeline_event(struct intel_xe_perf_data_reader *reader,
+		      uint64_t ts_start, uint64_t ts_end,
+		      uint32_t record_start, uint32_t record_end,
+		      uint32_t hw_id)
+{
+	if (reader->n_timelines >= reader->n_allocated_timelines) {
+		reader->n_allocated_timelines = MAX(100, 2 * reader->n_allocated_timelines);
+		reader->timelines =
+			(struct intel_xe_perf_timeline_item *)
+			realloc((void *) reader->timelines,
+				reader->n_allocated_timelines *
+				sizeof(*reader->timelines));
+		assert(reader->timelines);
+	}
+
+	reader->timelines[reader->n_timelines].ts_start = ts_start;
+	reader->timelines[reader->n_timelines].ts_end = ts_end;
+	reader->timelines[reader->n_timelines].cpu_ts_start =
+		correlate_gpu_timestamp(reader, ts_start);
+	reader->timelines[reader->n_timelines].cpu_ts_end =
+		correlate_gpu_timestamp(reader, ts_end);
+	reader->timelines[reader->n_timelines].record_start = record_start;
+	reader->timelines[reader->n_timelines].record_end = record_end;
+	reader->timelines[reader->n_timelines].hw_id = hw_id;
+	reader->n_timelines++;
+}
+
+static void
+generate_cpu_events(struct intel_xe_perf_data_reader *reader)
+{
+	uint32_t last_header_idx = 0;
+	const struct intel_xe_perf_record_header *last_header = reader->records[0],
+		*current_header = reader->records[0];
+	const uint8_t *start_report, *end_report;
+	uint32_t last_ctx_id, current_ctx_id;
+	uint64_t gpu_ts_start, gpu_ts_end;
+
+	for (uint32_t i = 1; i < reader->n_records; i++) {
+		current_header = reader->records[i];
+
+		start_report = (const uint8_t *) (last_header + 1);
+		end_report = (const uint8_t *) (current_header + 1);
+
+		last_ctx_id = oa_report_ctx_id(reader, start_report);
+		current_ctx_id = oa_report_ctx_id(reader, end_report);
+
+		gpu_ts_start = intel_xe_perf_read_record_timestamp(reader->perf,
+								reader->metric_set,
+								last_header);
+		gpu_ts_end = intel_xe_perf_read_record_timestamp(reader->perf,
+							      reader->metric_set,
+							      current_header);
+
+		if (last_ctx_id == current_ctx_id)
+			continue;
+
+		append_timeline_event(reader, gpu_ts_start, gpu_ts_end, last_header_idx, i, last_ctx_id);
+
+		last_header = current_header;
+		last_header_idx = i;
+	}
+
+	if (last_header != current_header)
+		append_timeline_event(reader, gpu_ts_start, gpu_ts_end, last_header_idx, reader->n_records - 1, last_ctx_id);
+}
+
+static void
+compute_correlation_chunks(struct intel_xe_perf_data_reader *reader)
+{
+	uint64_t mask = ~(0xffffffff);
+	uint32_t last_idx = 0;
+	uint64_t last_ts = reader->correlations[last_idx]->gpu_timestamp;
+
+	for (uint32_t i = 0; i < reader->n_correlations; i++) {
+		if (!reader->n_correlation_chunks ||
+		    (last_ts & mask) != (reader->correlations[i]->gpu_timestamp & mask)) {
+			assert(reader->n_correlation_chunks < ARRAY_SIZE(reader->correlation_chunks));
+			reader->correlation_chunks[reader->n_correlation_chunks].gpu_ts_begin = last_ts;
+			reader->correlation_chunks[reader->n_correlation_chunks].gpu_ts_end = last_ts | ~mask;
+			reader->correlation_chunks[reader->n_correlation_chunks].idx = last_idx;
+			last_ts = reader->correlation_chunks[reader->n_correlation_chunks].gpu_ts_end + 1;
+			last_idx = i;
+			reader->n_correlation_chunks++;
+		}
+	}
+}
+
+bool
+intel_xe_perf_data_reader_init(struct intel_xe_perf_data_reader *reader,
+			       int perf_file_fd)
+{
+	struct stat st;
+	if (fstat(perf_file_fd, &st) != 0) {
+		snprintf(reader->error_msg, sizeof(reader->error_msg),
+			 "Unable to access file (%s)", strerror(errno));
+		return false;
+	}
+
+	memset(reader, 0, sizeof(*reader));
+
+	reader->mmap_size = st.st_size;
+	reader->mmap_data = (const uint8_t *) mmap(NULL, st.st_size,
+						   PROT_READ, MAP_PRIVATE,
+						   perf_file_fd, 0);
+	if (reader->mmap_data == MAP_FAILED) {
+		snprintf(reader->error_msg, sizeof(reader->error_msg),
+			 "Unable to access file (%s)", strerror(errno));
+		return false;
+	}
+
+	if (!parse_data(reader))
+		return false;
+
+	compute_correlation_chunks(reader);
+	generate_cpu_events(reader);
+
+	return true;
+}
+
+void
+intel_xe_perf_data_reader_fini(struct intel_xe_perf_data_reader *reader)
+{
+	intel_xe_perf_free(reader->perf);
+	free(reader->records);
+	free(reader->timelines);
+	free(reader->correlations);
+	munmap((void *)reader->mmap_data, reader->mmap_size);
+}
diff --git a/lib/xe/xe_oa_data_reader.h b/lib/xe/xe_oa_data_reader.h
new file mode 100644
index 0000000000..dcb734bab8
--- /dev/null
+++ b/lib/xe/xe_oa_data_reader.h
@@ -0,0 +1,87 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#ifndef XE_OA_DATA_READER_H
+#define XE_OA_DATA_READER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Helper to read a xe-perf recording. */
+
+#include <stdbool.h>
+#include <stdint.h>
+
+#include "xe_oa_data.h"
+
+struct intel_xe_perf_timeline_item {
+	uint64_t ts_start;
+	uint64_t ts_end;
+	uint64_t cpu_ts_start;
+	uint64_t cpu_ts_end;
+
+	/* Offsets into intel_xe_perf_data_reader.records */
+	uint32_t record_start;
+	uint32_t record_end;
+
+	uint32_t hw_id;
+
+	/* User associated data with a given item on the xe perf
+	 * timeline.
+	 */
+	void *user_data;
+};
+
+struct intel_xe_perf_data_reader {
+	/* Array of pointers into the mmapped xe perf file. */
+	const struct intel_xe_perf_record_header **records;
+	uint32_t n_records;
+	uint32_t n_allocated_records;
+
+	/**/
+	struct intel_xe_perf_timeline_item *timelines;
+	uint32_t n_timelines;
+	uint32_t n_allocated_timelines;
+
+	/**/
+	const struct intel_xe_perf_record_timestamp_correlation **correlations;
+	uint32_t n_correlations;
+	uint32_t n_allocated_correlations;
+
+	struct {
+		uint64_t gpu_ts_begin;
+		uint64_t gpu_ts_end;
+		uint32_t idx;
+	} correlation_chunks[4];
+	uint32_t n_correlation_chunks;
+
+	const char *metric_set_uuid;
+	const char *metric_set_name;
+
+	struct intel_xe_perf_devinfo devinfo;
+
+	struct intel_xe_perf *perf;
+	struct intel_xe_perf_metric_set *metric_set;
+
+	char error_msg[256];
+
+	/**/
+	const void *record_info;
+	const void *record_topology;
+
+	const uint8_t *mmap_data;
+	size_t mmap_size;
+};
+
+bool intel_xe_perf_data_reader_init(struct intel_xe_perf_data_reader *reader,
+				    int perf_file_fd);
+void intel_xe_perf_data_reader_fini(struct intel_xe_perf_data_reader *reader);
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif /* XE_OA_DATA_READER_H */
-- 
2.41.0


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

* [PATCH i-g-t 22/27] tools/xe-perf: Add xe_perf_recorder
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (20 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 21/27] lib/xe/oa: Add xe_oa_data_reader to IGT lib Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 23/27] tools/xe-perf: xe_perf_reader, xe_perf_control and xe_perf_configs Ashutosh Dixit
                   ` (9 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

Add xe_perf_recorder. The recorder exercises the Xe OA uapi to capture OAG
data in a specific format, similar to i915_perf_recorder.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tools/meson.build                         |    1 +
 tools/xe-perf/meson.build                 |    5 +
 tools/xe-perf/xe_perf_recorder.c          | 1227 +++++++++++++++++++++
 tools/xe-perf/xe_perf_recorder_commands.h |   31 +
 4 files changed, 1264 insertions(+)
 create mode 100644 tools/xe-perf/meson.build
 create mode 100644 tools/xe-perf/xe_perf_recorder.c
 create mode 100644 tools/xe-perf/xe_perf_recorder_commands.h

diff --git a/tools/meson.build b/tools/meson.build
index ac79d8b584..7ff40450b1 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -112,4 +112,5 @@ if libudev.found()
 endif
 
 subdir('i915-perf')
+subdir('xe-perf')
 subdir('null_state_gen')
diff --git a/tools/xe-perf/meson.build b/tools/xe-perf/meson.build
new file mode 100644
index 0000000000..a5f59a67fe
--- /dev/null
+++ b/tools/xe-perf/meson.build
@@ -0,0 +1,5 @@
+executable('xe-perf-recorder',
+           [ 'xe_perf_recorder.c' ],
+           include_directories: inc,
+           dependencies: [lib_igt, lib_igt_xe_oa],
+           install: true)
diff --git a/tools/xe-perf/xe_perf_recorder.c b/tools/xe-perf/xe_perf_recorder.c
new file mode 100644
index 0000000000..bd2d645fa1
--- /dev/null
+++ b/tools/xe-perf/xe_perf_recorder.c
@@ -0,0 +1,1227 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#include <assert.h>
+#include <dirent.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <getopt.h>
+#include <inttypes.h>
+#include <limits.h>
+#include <poll.h>
+#include <signal.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <sys/stat.h>
+#include <sys/sysmacros.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <time.h>
+#include <unistd.h>
+
+#include "igt_core.h"
+#include "intel_chipset.h"
+#include "ioctl_wrappers.h"
+#include "linux_scaffold.h"
+#include "xe/xe_oa.h"
+#include "xe/xe_oa_data.h"
+#include "xe/xe_query.h"
+
+#include "xe_perf_recorder_commands.h"
+
+#define ALIGN(v, a) (((v) + (a)-1) & ~((a)-1))
+#define ARRAY_SIZE(arr) (sizeof(arr)/sizeof((arr)[0]))
+#define MAX(a,b) ((a) > (b) ? (a) : (b))
+#define MIN(a,b) ((a) < (b) ? (a) : (b))
+
+struct circular_buffer {
+	char   *data;
+	size_t  allocated_size;
+	size_t  size;
+	size_t  beginpos;
+	size_t  endpos;
+};
+
+struct chunk {
+	char *data;
+	size_t len;
+};
+
+static size_t
+circular_available_size(const struct circular_buffer *buffer)
+{
+	assert(buffer->size <= buffer->allocated_size);
+	return buffer->allocated_size - buffer->size;
+}
+
+static void
+get_chunks(struct chunk *chunks, struct circular_buffer *buffer, bool write, size_t len)
+{
+	size_t offset = write ? buffer->endpos : buffer->beginpos;
+
+	if (write)
+		assert(circular_available_size(buffer) >= len);
+	else
+		assert(buffer->size >= len);
+
+	chunks[0].data = &buffer->data[offset];
+
+	if ((offset + len) > buffer->allocated_size) {
+		chunks[0].len = buffer->allocated_size - offset;
+		chunks[1].data = buffer->data;
+		chunks[1].len = len - (buffer->allocated_size - offset);
+	} else {
+		chunks[0].len = len;
+		chunks[1].data = NULL;
+		chunks[1].len = 0;
+	}
+}
+
+static ssize_t
+circular_buffer_read(void *c, char *buf, size_t size)
+{
+	struct circular_buffer *buffer = c;
+	struct chunk chunks[2];
+
+	if (buffer->size < size)
+		return -1;
+
+	get_chunks(chunks, buffer, false, size);
+
+	memcpy(buf, chunks[0].data, chunks[0].len);
+	memcpy(buf + chunks[0].len, chunks[1].data, chunks[1].len);
+	buffer->beginpos = (buffer->beginpos + size) % buffer->allocated_size;
+	buffer->size -= size;
+
+	return size;
+}
+
+static size_t
+peek_item_size(struct circular_buffer *buffer)
+{
+	struct intel_xe_perf_record_header header;
+	struct chunk chunks[2];
+
+	if (!buffer->size)
+		return 0;
+
+	assert(buffer->size >= sizeof(header));
+
+	get_chunks(chunks, buffer, false, sizeof(header));
+	memcpy(&header, chunks[0].data, chunks[0].len);
+	memcpy((char *) &header + chunks[0].len, chunks[1].data, chunks[1].len);
+
+	return header.size;
+}
+
+static void
+circular_shrink(struct circular_buffer *buffer, size_t size)
+{
+	size_t shrank = 0, item_size;
+
+	assert(size <= buffer->allocated_size);
+
+	while (shrank < size && buffer->size > (item_size = peek_item_size(buffer))) {
+		assert(item_size > 0 && item_size <= buffer->allocated_size);
+
+		buffer->beginpos = (buffer->beginpos + item_size) % buffer->allocated_size;
+		buffer->size -= item_size;
+
+		shrank += item_size;
+	}
+}
+
+static ssize_t
+circular_buffer_write(void *c, const char *buf, size_t _size)
+{
+	struct circular_buffer *buffer = c;
+	size_t size = _size;
+
+	while (size) {
+		size_t avail = circular_available_size(buffer), item_size;
+		struct chunk chunks[2];
+
+		/* Make space in the buffer if there is too much data. */
+		if (avail < size)
+			circular_shrink(buffer, size - avail);
+
+		item_size = MIN(circular_available_size(buffer), size);
+
+		get_chunks(chunks, buffer, true, item_size);
+
+		memcpy(chunks[0].data, buf, chunks[0].len);
+		memcpy(chunks[1].data, buf + chunks[0].len, chunks[1].len);
+
+		buf += item_size;
+		size -= item_size;
+
+		buffer->endpos = (buffer->endpos + item_size) % buffer->allocated_size;
+		buffer->size += item_size;
+	}
+
+	return _size;
+}
+
+static int
+circular_buffer_seek(void *c, off64_t *offset, int whence)
+{
+	return -1;
+}
+
+static int
+circular_buffer_close(void *c)
+{
+	return 0;
+}
+
+cookie_io_functions_t circular_buffer_functions = {
+	.read  = circular_buffer_read,
+	.write = circular_buffer_write,
+	.seek  = circular_buffer_seek,
+	.close = circular_buffer_close,
+};
+
+
+static bool
+read_file_uint64(const char *file, uint64_t *value)
+{
+	char buf[32];
+	int fd, n;
+
+	fd = open(file, 0);
+	if (fd < 0)
+		return false;
+	n = read(fd, buf, sizeof (buf) - 1);
+	close(fd);
+	if (n < 0)
+		return false;
+
+	buf[n] = '\0';
+	*value = strtoull(buf, 0, 0);
+
+	return true;
+}
+
+static uint32_t
+read_device_param(const char *stem, int id, const char *param)
+{
+	char *name;
+	int ret = asprintf(&name, "/sys/class/drm/%s%u/device/%s", stem, id, param);
+	uint64_t value;
+	bool success;
+
+	assert(ret != -1);
+
+	success = read_file_uint64(name, &value);
+	free(name);
+
+	return success ? value : 0;
+}
+
+static int
+find_intel_render_node(void)
+{
+	for (int i = 128; i < (128 + 16); i++) {
+		if (read_device_param("renderD", i, "vendor") == 0x8086)
+			return i;
+	}
+
+	return -1;
+}
+
+static void
+print_intel_devices(void)
+{
+	fprintf(stdout, "Available devices:\n");
+	for (int i = 0; i < 128; i++) {
+		if (read_device_param("card", i, "vendor") == 0x8086) {
+			uint32_t devid = read_device_param("card", i, "device");
+			const struct intel_device_info *devinfo =
+				intel_get_device_info(devid);
+			fprintf(stdout, "   %i: %s (0x%04hx)\n", i,
+				devinfo ? devinfo->codename : "unknwon",
+				devid);
+		}
+	}
+}
+
+static int
+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)
+			return -1;
+	} else {
+		render = 128 + card;
+	}
+
+	ret = asprintf(&name, "/dev/dri/renderD%u", render);
+	assert(ret != -1);
+
+	*devid = read_device_param("renderD", render, "device");
+
+	fd = open(name, O_RDWR);
+	free(name);
+
+	return fd;
+}
+
+static uint32_t
+oa_exponent_for_period(uint64_t device_timestamp_frequency, double period)
+{
+	uint64_t period_ns = 1000 * 1000 * 1000 * period;
+	uint64_t device_periods[32];
+
+	for (uint32_t i = 0; i < ARRAY_SIZE(device_periods); i++)
+		device_periods[i] = 1000000000ull * (1u << i) / device_timestamp_frequency;
+
+	for (uint32_t i = 1; i < ARRAY_SIZE(device_periods); i++) {
+		if (period_ns >= device_periods[i - 1] &&
+		    period_ns < device_periods[i]) {
+			if ((device_periods[i] - period_ns) >
+			    (period_ns - device_periods[i - 1]))
+				return i - 1;
+			return i;
+		}
+	}
+
+	return -1;
+}
+
+static int
+perf_ioctl(int fd, unsigned long request, void *arg)
+{
+	int ret;
+
+	do {
+		ret = ioctl(fd, request, arg);
+	} while (ret == -1 && (errno == EINTR || errno == EAGAIN));
+
+	return ret;
+}
+
+static uint64_t
+get_device_cs_timestamp_frequency(int drm_fd)
+{
+	return xe_gt_list(drm_fd)->gt_list[0].reference_clock;
+}
+
+static uint64_t
+get_device_oa_timestamp_frequency(int drm_fd)
+{
+	struct drm_xe_query_oa_units *qoa = xe_oa_units(drm_fd);
+	struct drm_xe_oa_unit *oau = (struct drm_xe_oa_unit *)&qoa->oa_units[0];
+
+	return oau->oa_timestamp_freq;
+}
+
+struct recording_context {
+	int drm_fd;
+	int perf_fd;
+
+	uint32_t devid;
+	uint64_t oa_timestamp_frequency;
+	uint64_t cs_timestamp_frequency;
+
+	const struct intel_device_info *devinfo;
+
+	struct intel_xe_topology_info *topology;
+	uint32_t topology_size;
+
+	struct intel_xe_perf *perf;
+	struct intel_xe_perf_metric_set *metric_set;
+
+	uint32_t oa_exponent;
+
+	struct circular_buffer circular_buffer;
+	FILE *output_stream;
+
+	const char *command_fifo;
+	int command_fifo_fd;
+
+	int gt;
+	struct drm_xe_engine_class_instance eci;
+	struct drm_xe_engine_class_instance *hwe;
+	struct drm_xe_oa_unit *oa_unit;
+};
+
+static void set_fd_flags(int fd, int flags)
+{
+	int old = fcntl(fd, F_GETFL, 0);
+
+	igt_assert_lte(0, old);
+	igt_assert_eq(0, fcntl(fd, F_SETFL, old | flags));
+}
+
+enum xe_oa_report_header {
+	HDR_32_BIT = 0,
+	HDR_64_BIT,
+};
+
+struct xe_oa_format {
+	uint32_t counter_select;
+	int size;
+	int oa_type;
+	enum xe_oa_report_header header;
+	uint16_t counter_size;
+	uint16_t bc_report;
+};
+
+#define DRM_FMT(x) DRM_XE_OA_FMT_TYPE_##x
+
+static const struct xe_oa_format oa_formats[] = {
+	[XE_OA_FORMAT_C4_B8]			= { 7, 64,  DRM_FMT(OAG) },
+	[XE_OA_FORMAT_A12]			= { 0, 64,  DRM_FMT(OAG) },
+	[XE_OA_FORMAT_A12_B8_C8]		= { 2, 128, DRM_FMT(OAG) },
+	[XE_OA_FORMAT_A32u40_A4u32_B8_C8]	= { 5, 256, DRM_FMT(OAG) },
+	[XE_OAR_FORMAT_A32u40_A4u32_B8_C8]	= { 5, 256, DRM_FMT(OAR) },
+	[XE_OA_FORMAT_A24u40_A14u32_B8_C8]	= { 5, 256, DRM_FMT(OAG) },
+	[XE_OAC_FORMAT_A24u64_B8_C8]		= { 1, 320, DRM_FMT(OAC), HDR_64_BIT },
+	[XE_OAC_FORMAT_A22u32_R2u32_B8_C8]	= { 2, 192, DRM_FMT(OAC), HDR_64_BIT },
+	[XE_OAM_FORMAT_MPEC8u64_B8_C8]		= { 1, 192, DRM_FMT(OAM_MPEC), HDR_64_BIT },
+	[XE_OAM_FORMAT_MPEC8u32_B8_C8]		= { 2, 128, DRM_FMT(OAM_MPEC), HDR_64_BIT },
+	[XE_OA_FORMAT_PEC64u64]			= { 1, 576, DRM_FMT(PEC), HDR_64_BIT, 1, 0 },
+	[XE_OA_FORMAT_PEC64u64_B8_C8]		= { 1, 640, DRM_FMT(PEC), HDR_64_BIT, 1, 1 },
+	[XE_OA_FORMAT_PEC64u32]			= { 1, 320, DRM_FMT(PEC), HDR_64_BIT },
+	[XE_OA_FORMAT_PEC32u64_G1]		= { 5, 320, DRM_FMT(PEC), HDR_64_BIT, 1, 0 },
+	[XE_OA_FORMAT_PEC32u32_G1]		= { 5, 192, DRM_FMT(PEC), HDR_64_BIT },
+	[XE_OA_FORMAT_PEC32u64_G2]		= { 6, 320, DRM_FMT(PEC), HDR_64_BIT, 1, 0 },
+	[XE_OA_FORMAT_PEC32u32_G2]		= { 6, 192, DRM_FMT(PEC), HDR_64_BIT },
+	[XE_OA_FORMAT_PEC36u64_G1_32_G2_4]	= { 3, 320, DRM_FMT(PEC), HDR_64_BIT, 1, 0 },
+	[XE_OA_FORMAT_PEC36u64_G1_4_G2_32]	= { 4, 320, DRM_FMT(PEC), HDR_64_BIT, 1, 0 },
+};
+
+static uint64_t oa_format_fields(uint64_t name)
+{
+#define FIELD_PREP_ULL(_mask, _val) \
+	(((_val) << (__builtin_ffsll(_mask) - 1)) & (_mask))
+
+	struct xe_oa_format f = oa_formats[name];
+
+	/* 0 format name is invalid */
+	if (!name)
+		memset(&f, 0xff, sizeof(f));
+
+	return FIELD_PREP_ULL(DRM_XE_OA_FORMAT_MASK_FMT_TYPE, (u64)f.oa_type) |
+		FIELD_PREP_ULL(DRM_XE_OA_FORMAT_MASK_COUNTER_SEL, (u64)f.counter_select) |
+		FIELD_PREP_ULL(DRM_XE_OA_FORMAT_MASK_COUNTER_SIZE, (u64)f.counter_size) |
+		FIELD_PREP_ULL(DRM_XE_OA_FORMAT_MASK_BC_REPORT, (u64)f.bc_report);
+#undef FIELD_PREP_ULL
+}
+#define __ff oa_format_fields
+
+static int
+perf_open(struct recording_context *ctx)
+{
+	int stream_fd;
+
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, ctx->oa_unit->oa_unit_id,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, ctx->metric_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(ctx->metric_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT, ctx->oa_exponent,
+	};
+	struct intel_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+
+	stream_fd = intel_xe_perf_ioctl(ctx->drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param);
+	if (stream_fd < 0) {
+		errno = 0;
+		goto exit;
+	}
+
+	set_fd_flags(stream_fd, O_CLOEXEC | O_NONBLOCK);
+exit:
+	return stream_fd;
+}
+
+static bool quit = false;
+
+static void
+sigint_handler(int val)
+{
+	quit = true;
+}
+
+static bool
+write_version(FILE *output, struct recording_context *ctx)
+{
+	struct intel_xe_perf_record_version version = {
+		.version = INTEL_XE_PERF_RECORD_VERSION,
+	};
+	struct intel_xe_perf_record_header header = {
+		.type = INTEL_XE_PERF_RECORD_TYPE_VERSION,
+		.size = sizeof(header) + sizeof(version),
+	};
+
+	if (fwrite(&header, sizeof(header), 1, output) != 1)
+		return false;
+
+	if (fwrite(&version, sizeof(version), 1, output) != 1)
+		return false;
+
+	return true;
+}
+
+static bool
+write_header(FILE *output, struct recording_context *ctx)
+{
+	struct intel_xe_perf_record_device_info info = {
+		.timestamp_frequency = ctx->oa_timestamp_frequency,
+		.device_id = ctx->perf->devinfo.devid,
+		.device_revision = ctx->perf->devinfo.revision,
+		.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 = ctx->hwe->engine_class,
+		.engine_instance = ctx->hwe->engine_instance,
+	};
+	struct intel_xe_perf_record_header header = {
+		.type = INTEL_XE_PERF_RECORD_TYPE_DEVICE_INFO,
+		.size = sizeof(header) + sizeof(info),
+	};
+
+	snprintf(info.metric_set_name, sizeof(info.metric_set_name),
+		 "%s", ctx->metric_set->symbol_name);
+	snprintf(info.metric_set_uuid, sizeof(info.metric_set_uuid),
+		 "%s", ctx->metric_set->hw_config_guid);
+
+	if (fwrite(&header, sizeof(header), 1, output) != 1)
+		return false;
+
+	if (fwrite(&info, sizeof(info), 1, output) != 1)
+		return false;
+
+	return true;
+}
+
+static struct intel_xe_topology_info *get_topology(struct recording_context *ctx)
+{
+	return xe_fill_topology_info(ctx->drm_fd, ctx->devid, &ctx->topology_size);
+}
+
+static bool
+write_topology(FILE *output, struct recording_context *ctx)
+{
+	struct intel_xe_perf_record_header header = {
+		.type = INTEL_XE_PERF_RECORD_TYPE_DEVICE_TOPOLOGY,
+	};
+
+	header.size = sizeof(header) + ctx->topology_size;
+	if (fwrite(&header, sizeof(header), 1, output) != 1)
+		return false;
+
+	if (fwrite(ctx->topology, ctx->topology_size, 1, output) != 1)
+		return false;
+
+	return true;
+}
+
+static int get_stream_status(int perf_fd, u32 *oa_status)
+{
+	struct drm_xe_oa_stream_status status;
+	int ret;
+
+	ret = perf_ioctl(perf_fd, DRM_XE_PERF_IOCTL_STATUS, &status);
+	if (ret)
+		return ret;
+
+	*oa_status = status.oa_status;
+	return 0;
+}
+
+static bool write_stream_status(struct recording_context *ctx, FILE *output)
+{
+	u32 oa_status;
+
+	if (!get_stream_status(ctx->perf_fd, &oa_status)) {
+		struct intel_xe_perf_record_header header = { .size = sizeof(header) };
+
+		if (oa_status & DRM_XE_OASTATUS_REPORT_LOST)
+			header.type = INTEL_XE_PERF_RECORD_OA_TYPE_REPORT_LOST;
+		else if (oa_status & DRM_XE_OASTATUS_BUFFER_OVERFLOW)
+			header.type = INTEL_XE_PERF_RECORD_OA_TYPE_BUFFER_LOST;
+		else
+			return true;
+
+		if (fwrite(&header, sizeof(header), 1, output) != 1)
+			return false;
+	}
+
+	return true;
+}
+
+static bool write_stream_data(struct recording_context *ctx,
+			      char *data, ssize_t size, FILE *output)
+{
+	ssize_t format_size = oa_formats[ctx->metric_set->perf_oa_format].size;
+
+	assert(!(size % format_size));
+
+	for (int i = 0; i < size / format_size; i++) {
+		struct intel_xe_perf_record_header header = {
+			.type = INTEL_XE_PERF_RECORD_TYPE_SAMPLE,
+			.size = sizeof(header) + format_size,
+		};
+
+		if (fwrite(&header, sizeof(header), 1, output) != 1)
+			return false;
+
+		if (fwrite(data, format_size, 1, output) != 1)
+			return false;
+	}
+
+	return true;
+}
+
+static bool write_perf_data(FILE *output, struct recording_context *ctx)
+{
+	char data[4096];
+	ssize_t len;
+	bool ret;
+
+	while (1) {
+		len = read(ctx->perf_fd, data, sizeof(data));
+
+		if (len < 0) {
+			switch (errno) {
+			case EIO:
+				ret = write_stream_status(ctx, output);
+				if (!ret)
+					return ret;
+				break;
+			case EAGAIN:
+			case EINTR:
+				return true;
+			default:
+				/* Not expecting -EFAULT, -ENOSPC, -EINVAL */
+				assert(0);
+			}
+		} else {
+			ret = write_stream_data(ctx, data, len, output);
+			if (!ret)
+				return ret;
+		}
+	}
+
+	/* Should not reach here */
+	return false;
+}
+
+static clock_t correlation_clock_id = CLOCK_MONOTONIC;
+
+static const char *
+get_correlation_clock_name(clock_t clock_id)
+{
+	switch (clock_id) {
+	case CLOCK_BOOTTIME:      return "bootime";
+	case CLOCK_MONOTONIC:     return "monotonic";
+	case CLOCK_MONOTONIC_RAW: return "monotonic_raw";
+	default:                  return "*unknown*";
+	}
+}
+
+static int query_engine_cycles(int fd, struct drm_xe_query_engine_cycles *ts)
+{
+	struct drm_xe_device_query query = {
+		.extensions = 0,
+		.query = DRM_XE_DEVICE_QUERY_ENGINE_CYCLES,
+		.size = sizeof(*ts),
+		.data = (uintptr_t)ts,
+	};
+
+	return perf_ioctl(fd, DRM_IOCTL_XE_DEVICE_QUERY, &query);
+}
+
+static bool get_correlation_timestamps(struct recording_context *ctx,
+				       struct intel_xe_perf_record_timestamp_correlation *corr)
+{
+	struct drm_xe_query_engine_cycles ts = {};
+
+	ts.eci = *ctx->hwe;
+	ts.clockid = correlation_clock_id;
+
+	if (query_engine_cycles(ctx->drm_fd, &ts))
+		return false;
+
+	corr->cpu_timestamp = ts.cpu_timestamp + ts.cpu_delta / 2;
+	corr->gpu_timestamp = ts.engine_cycles;
+
+	return true;
+}
+
+static bool
+write_saved_correlation_timestamps(FILE *output,
+				   const struct intel_xe_perf_record_timestamp_correlation *corr)
+{
+	struct intel_xe_perf_record_header header = {
+		.type = INTEL_XE_PERF_RECORD_TYPE_TIMESTAMP_CORRELATION,
+		.size = sizeof(header) + sizeof(*corr),
+	};
+
+	if (fwrite(&header, sizeof(header), 1, output) != 1)
+		return false;
+
+	if (fwrite(corr, sizeof(*corr), 1, output) != 1)
+		return false;
+
+	return true;
+}
+
+static bool
+write_correlation_timestamps(struct recording_context *ctx, FILE *output)
+{
+	struct intel_xe_perf_record_timestamp_correlation corr;
+
+	if (!get_correlation_timestamps(ctx, &corr))
+		return false;
+
+	return write_saved_correlation_timestamps(output, &corr);
+}
+
+static void
+read_command_file(struct recording_context *ctx)
+{
+	struct recorder_command_base header;
+	ssize_t ret = read(ctx->command_fifo_fd, &header, sizeof(header));
+
+	if (ret < 0)
+		return;
+
+	switch (header.command) {
+	case RECORDER_COMMAND_DUMP: {
+		uint32_t len = header.size - sizeof(header), offset = 0;
+		uint8_t *dump = malloc(len);
+		FILE *file;
+
+		while (offset < len &&
+		       ((ret = read(ctx->command_fifo_fd,
+				    (void *) dump + offset, len - offset)) > 0
+			|| errno == EAGAIN)) {
+			if (ret > 0)
+				offset += ret;
+		}
+
+		fprintf(stdout, "Writing circular buffer to %s\n", dump);
+
+		file = fopen((const char *) dump, "w+");
+		if (file) {
+			struct chunk chunks[2];
+
+			fflush(ctx->output_stream);
+			get_chunks(chunks, &ctx->circular_buffer,
+				   false, ctx->circular_buffer.size);
+
+			if (!write_version(file, ctx) ||
+			    !write_header(file, ctx) ||
+			    !write_topology(file, ctx) ||
+			    fwrite(chunks[0].data, chunks[0].len, 1, file) != 1 ||
+			    (chunks[1].len > 0 &&
+			     fwrite(chunks[1].data, chunks[1].len, 1, file) != 1) ||
+			    !write_correlation_timestamps(ctx, file)) {
+				fprintf(stderr, "Unable to write circular buffer data in file '%s'\n",
+					dump);
+			}
+			fclose(file);
+		} else
+			fprintf(stderr, "Unable to write dump file '%s'\n", dump);
+
+		free(dump);
+		break;
+	}
+	case RECORDER_COMMAND_QUIT:
+		quit = true;
+		break;
+	default:
+		fprintf(stderr, "Unknown command 0x%x\n", header.command);
+		break;
+	}
+}
+
+static void
+print_metric_sets(const struct intel_xe_perf *perf)
+{
+	struct intel_xe_perf_metric_set *metric_set;
+	uint32_t longest_name = 0;
+
+	igt_list_for_each_entry(metric_set, &perf->metric_sets, link) {
+		longest_name = MAX(longest_name, strlen(metric_set->symbol_name));
+	}
+
+	igt_list_for_each_entry(metric_set, &perf->metric_sets, link) {
+		fprintf(stdout, "%s:%*s%s\n",
+			metric_set->symbol_name,
+			(int) (longest_name - strlen(metric_set->symbol_name) + 1), " ",
+			metric_set->name);
+	}
+}
+
+static void
+print_metric_set_counters(const struct intel_xe_perf_metric_set *metric_set)
+{
+	uint32_t longest_name = 0;
+
+	for (uint32_t i = 0; i < metric_set->n_counters; i++) {
+		longest_name = MAX(longest_name, strlen(metric_set->counters[i].name));
+	}
+
+	fprintf(stdout, "%s (%s):\n", metric_set->symbol_name, metric_set->name);
+	for (uint32_t i = 0; i < metric_set->n_counters; i++) {
+		struct intel_xe_perf_logical_counter *counter = &metric_set->counters[i];
+
+		fprintf(stdout, "  %s:%*s%s\n",
+			counter->name,
+			(int)(longest_name - strlen(counter->name) + 1), " ",
+			counter->desc);
+	}
+}
+
+static void
+print_metric_sets_counters(struct intel_xe_perf *perf)
+{
+	struct intel_xe_perf_metric_set *metric_set;
+
+	igt_list_for_each_entry(metric_set, &perf->metric_sets, link)
+		print_metric_set_counters(metric_set);
+}
+
+static void
+usage(const char *name)
+{
+	fprintf(stdout,
+		"Usage: %s [options]\n"
+		"Recording tool for xe-oa\n"
+		"\n"
+		"     --help,               -h          Print this screen\n"
+		"     --device,             -d <value>  Device to use\n"
+		"                                       (value=list to list devices\n"
+		"                                        value=1 to use /dev/dri/card1)\n"
+		"     --correlation-period, -c <value>  Time period of timestamp correlation in seconds\n"
+		"                                       (default = 1.0)\n"
+		"     --perf-period,        -p <value>  Time period of xe-oa reports in seconds\n"
+		"                                       (default = 0.001)\n"
+		"     --metric,             -m <value>  xe-oa metric to sample with (use value=list to list all metrics)\n"
+		"     --counters,           -C          List counters for a given metric and exit\n"
+		"     --size,               -s <value>  Size of circular buffer to use in kilobytes\n"
+		"                                       If specified, a maximum amount of <value> data will\n"
+		"                                       be recorded.\n"
+		"     --command-fifo,       -f <path>   Path to a command fifo, implies circular buffer\n"
+		"                                       (To use with xe-perf-control)\n"
+		"     --output,             -o <path>   Output file (default = xe_perf.record)\n"
+		"     --cpu-clock,          -k <path>   Cpu clock to use for correlations\n"
+		"                                       Values: boot, mono, mono_raw (default = mono)\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);
+}
+
+static void
+teardown_recording_context(struct recording_context *ctx)
+{
+	if (ctx->topology)
+		free(ctx->topology);
+
+	if (ctx->perf)
+		intel_xe_perf_free(ctx->perf);
+
+	if (ctx->command_fifo)
+		unlink(ctx->command_fifo);
+	if (ctx->command_fifo_fd != -1)
+		close(ctx->command_fifo_fd);
+
+	if (ctx->output_stream)
+		fclose(ctx->output_stream);
+
+	free(ctx->circular_buffer.data);
+
+	if (ctx->perf_fd != -1)
+		close(ctx->perf_fd);
+	if (ctx->drm_fd != -1)
+		close(ctx->drm_fd);
+}
+
+static int assign_oa_unit(int fd, struct recording_context *ctx)
+{
+	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
+	struct drm_xe_oa_unit *oau;
+	uint8_t *poau;
+
+	poau = (uint8_t *)&qoa->oa_units[0];
+	for (int i = 0; i < qoa->num_oa_units; i++) {
+		oau = (struct drm_xe_oa_unit *)poau;
+
+		for (int j = 0; j < oau->num_engines; j++) {
+			if (oau->eci[j].engine_class == ctx->eci.engine_class &&
+			    oau->eci[j].engine_instance == ctx->eci.engine_instance) {
+				ctx->hwe = &oau->eci[j];
+				ctx->oa_unit = oau;
+				return 0;
+			}
+		}
+
+		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
+	}
+
+	return -1;
+}
+
+int
+main(int argc, char *argv[])
+{
+	const struct option long_options[] = {
+		{"help",		no_argument, 0, 'h'},
+		{"device",		required_argument, 0, 'd'},
+		{"correlation-period",	required_argument, 0, 'c'},
+		{"perf-period",		required_argument, 0, 'p'},
+		{"metric",		required_argument, 0, 'm'},
+		{"counters",		no_argument, 0, 'C'},
+		{"output",		required_argument, 0, 'o'},
+		{"size",		required_argument, 0, 's'},
+		{"command-fifo",	required_argument, 0, 'f'},
+		{"cpu-clock",		required_argument, 0, 'k'},
+		{"engine-class",	required_argument, 0, 'e'},
+		{"engine-instance",	required_argument, 0, 'i'},
+		{0, 0, 0, 0}
+	};
+	const struct {
+		clock_t id;
+		const char *name;
+	} clock_names[] = {
+		{ CLOCK_BOOTTIME,	"boot" },
+		{ CLOCK_MONOTONIC,	"mono" },
+		{ CLOCK_MONOTONIC_RAW,	"mono_raw" },
+	};
+	double corr_period = 1.0, perf_period = 0.001;
+	const char *metric_name = NULL, *output_file = "xe_perf.record";
+	struct intel_xe_perf_metric_set *metric_set;
+	struct intel_xe_perf_record_timestamp_correlation initial_correlation;
+	struct timespec now;
+	uint64_t corr_period_ns, poll_time_ns;
+	uint32_t circular_size = 0;
+	int opt, dev_node_id = -1;
+	bool list_counters = false;
+	FILE *output = NULL;
+	struct recording_context ctx = {
+		.drm_fd = -1,
+		.perf_fd = -1,
+
+		.command_fifo = XE_PERF_RECORD_FIFO_PATH,
+		.command_fifo_fd = -1,
+
+		.eci = { DRM_XE_ENGINE_CLASS_RENDER, 0 },
+	};
+
+	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]);
+			return EXIT_SUCCESS;
+		case 'c':
+			corr_period = atof(optarg);
+			break;
+		case 'd':
+			if (!strcmp(optarg, "list"))
+				dev_node_id = -2;
+			else
+				dev_node_id = atoi(optarg);
+			break;
+		case 'p':
+			perf_period = atof(optarg);
+			break;
+		case 'm':
+			metric_name = optarg;
+			break;
+		case 'C':
+			list_counters = true;
+			break;
+		case 'o':
+			output_file = optarg;
+			break;
+		case 's':
+			circular_size = MAX(8, atoi(optarg)) * 1024;
+			break;
+		case 'f':
+			ctx.command_fifo = optarg;
+			circular_size = 8 * 1024 * 1024;
+			break;
+		case 'k': {
+			bool found = false;
+			for (uint32_t i = 0; i < ARRAY_SIZE(clock_names); i++) {
+				if (!strcmp(clock_names[i].name, optarg)) {
+					correlation_clock_id = clock_names[i].id;
+					found = true;
+					break;
+				}
+			}
+			if (!found) {
+				fprintf(stderr, "Unknown clock name '%s'\n", optarg);
+				return EXIT_FAILURE;
+			}
+			break;
+		}
+		case 'e':
+			ctx.eci.engine_class = atoi(optarg);
+			break;
+		case 'i':
+			ctx.eci.engine_instance = atoi(optarg);
+			break;
+		default:
+			fprintf(stderr, "Internal error: "
+				"unexpected getopt value: %d\n", opt);
+			usage(argv[0]);
+			return EXIT_FAILURE;
+		}
+	}
+
+	if (dev_node_id == -2) {
+		print_intel_devices();
+		return EXIT_SUCCESS;
+	}
+
+	ctx.drm_fd = open_render_node(&ctx.devid, dev_node_id);
+	if (ctx.drm_fd < 0) {
+		fprintf(stderr, "Unable to open device.\n");
+		return EXIT_FAILURE;
+	}
+
+	xe_device_get(ctx.drm_fd);
+
+	ctx.devinfo = intel_get_device_info(ctx.devid);
+	if (!ctx.devinfo) {
+		fprintf(stderr, "No device info found.\n");
+		goto fail;
+	}
+
+	if (assign_oa_unit(ctx.drm_fd, &ctx) < 0) {
+		fprintf(stderr, "assign_oa_unit failed\n");
+		goto fail;
+	}
+
+	fprintf(stdout, "Device name=%s gen=%i id=0x%x oa_unit=%i gt=%i\n",
+		ctx.devinfo->codename, ctx.devinfo->graphics_ver, ctx.devid,
+		ctx.oa_unit->oa_unit_id, ctx.hwe->gt_id);
+
+	ctx.topology = get_topology(&ctx);
+	if (!ctx.topology) {
+		fprintf(stderr, "Unable to retrieve GPU topology\n");
+		goto fail;
+	}
+
+	ctx.perf = intel_xe_perf_for_fd(ctx.drm_fd, ctx.hwe->gt_id);
+	if (!ctx.perf) {
+		fprintf(stderr, "No perf data found.\n");
+		goto fail;
+	}
+
+	intel_xe_perf_load_perf_configs(ctx.perf, ctx.drm_fd);
+
+	if (metric_name) {
+		if (!strcmp(metric_name, "list")) {
+			print_metric_sets(ctx.perf);
+			return EXIT_SUCCESS;
+		}
+
+		igt_list_for_each_entry(metric_set, &ctx.perf->metric_sets, link) {
+			if (!strcasecmp(metric_set->symbol_name, metric_name)) {
+				ctx.metric_set = metric_set;
+				break;
+			}
+		}
+	}
+
+	if (list_counters) {
+		if (!ctx.metric_set)
+			print_metric_sets_counters(ctx.perf);
+		else
+			print_metric_set_counters(ctx.metric_set);
+		teardown_recording_context(&ctx);
+		return EXIT_SUCCESS;
+	}
+
+	if (!ctx.metric_set) {
+		if (!metric_name)
+			fprintf(stderr, "No metric set specified.\n");
+		else
+			fprintf(stderr, "Unknown metric set '%s'.\n", metric_name);
+		print_metric_sets(ctx.perf);
+		goto fail;
+	}
+
+	intel_xe_perf_load_perf_configs(ctx.perf, ctx.drm_fd);
+
+	ctx.oa_timestamp_frequency = get_device_oa_timestamp_frequency(ctx.drm_fd);
+	ctx.cs_timestamp_frequency = get_device_cs_timestamp_frequency(ctx.drm_fd);
+
+	signal(SIGINT, sigint_handler);
+
+	if (ctx.command_fifo) {
+		if (mkfifo(ctx.command_fifo,
+			   S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH) != 0) {
+			fprintf(stderr, "Unable to create command fifo '%s': %s\n",
+				ctx.command_fifo, strerror(errno));
+			goto fail;
+		}
+
+		ctx.command_fifo_fd = open(ctx.command_fifo, O_RDWR);
+		if (ctx.command_fifo_fd < 0) {
+			fprintf(stderr, "Unable to open command fifo '%s': %s\n",
+				ctx.command_fifo, strerror(errno));
+			goto fail;
+		}
+	}
+
+	if (circular_size) {
+		ctx.circular_buffer.allocated_size = circular_size;
+		ctx.circular_buffer.data = malloc(circular_size);
+		if (!ctx.circular_buffer.data) {
+			fprintf(stderr, "Unable to allocate circular buffer\n");
+			goto fail;
+		}
+
+		ctx.output_stream = fopencookie(&ctx.circular_buffer, "w+",
+						circular_buffer_functions);
+		if (!ctx.output_stream) {
+			fprintf(stderr, "Unable to create circular buffer\n");
+			goto fail;
+		}
+
+		if (!get_correlation_timestamps(&ctx, &initial_correlation)) {
+			fprintf(stderr, "Unable to correlation timestamps\n");
+			goto fail;
+		}
+
+		write_correlation_timestamps(&ctx, ctx.output_stream);
+		fprintf(stdout,
+			"Recoding in internal circular buffer.\n"
+			"Use xe-perf-control to snapshot into file.\n");
+	} else {
+		output = fopen(output_file, "w+");
+		if (!output) {
+			fprintf(stderr, "Unable to open output file '%s'\n",
+				output_file);
+			goto fail;
+		}
+
+		if (!write_version(output, &ctx) ||
+		    !write_header(output, &ctx) ||
+		    !write_topology(output, &ctx) ||
+		    !write_correlation_timestamps(&ctx, output)) {
+			fprintf(stderr, "Unable to write header in file '%s'\n",
+				output_file);
+			goto fail;
+		}
+
+		ctx.output_stream = output;
+		fprintf(stdout, "Writing recoding to %s\n", output_file);
+	}
+
+	if (ctx.metric_set->perf_oa_metrics_set == 0) {
+		fprintf(stderr,
+			"Unable to load performance configuration, consider running:\n"
+			"   sysctl dev.xe.perf_stream_paranoid=0\n");
+		goto fail;
+	}
+
+	fprintf(stdout, "Using correlation clock: %s\n",
+		get_correlation_clock_name(correlation_clock_id));
+
+	ctx.oa_exponent = oa_exponent_for_period(ctx.oa_timestamp_frequency, perf_period);
+	fprintf(stdout, "Opening perf stream with metric_id=%"PRIu64" oa_exponent=%u oa_format=%u\n",
+		ctx.metric_set->perf_oa_metrics_set, ctx.oa_exponent,
+		ctx.metric_set->perf_oa_format);
+
+	ctx.perf_fd = perf_open(&ctx);
+	if (ctx.perf_fd < 0) {
+		fprintf(stderr, "Unable to open xe oa stream: %s\n",
+			strerror(errno));
+		goto fail;
+	}
+
+	corr_period_ns = corr_period * 1000000000ul;
+	poll_time_ns = corr_period_ns;
+
+	while (!quit) {
+		struct pollfd pollfd[2] = {
+			{         ctx.perf_fd, POLLIN, 0 },
+			{ ctx.command_fifo_fd, POLLIN, 0 },
+		};
+		uint64_t elapsed_ns;
+		int ret;
+
+		igt_gettime(&now);
+		ret = poll(pollfd, ctx.command_fifo_fd != -1 ? 2 : 1, poll_time_ns / 1000000);
+		if (ret < 0 && errno != EINTR) {
+			fprintf(stderr, "Failed to poll xe-oa stream: %s\n",
+				strerror(errno));
+			break;
+		}
+
+		if (ret > 0) {
+			if (pollfd[0].revents & POLLIN) {
+				if (!write_perf_data(ctx.output_stream, &ctx)) {
+					fprintf(stderr, "Failed to write xe-oa data: %s\n",
+						strerror(errno));
+					break;
+				}
+			}
+
+			if (pollfd[1].revents & POLLIN) {
+				read_command_file(&ctx);
+			}
+		}
+
+		elapsed_ns = igt_nsec_elapsed(&now);
+		if (elapsed_ns > poll_time_ns) {
+			poll_time_ns = corr_period_ns;
+			if (!write_correlation_timestamps(&ctx, ctx.output_stream)) {
+				fprintf(stderr,
+					"Failed to write xe timestamp correlation data: %s\n",
+					strerror(errno));
+				break;
+			}
+		} else {
+			poll_time_ns -= elapsed_ns;
+		}
+	}
+
+	fprintf(stdout, "Exiting...\n");
+
+	if (!write_perf_data(ctx.output_stream, &ctx)) {
+		fprintf(stderr, "Failed to write xe-oa data: %s\n",
+			strerror(errno));
+	}
+
+	if (!write_correlation_timestamps(&ctx, ctx.output_stream)) {
+		fprintf(stderr,
+			"Failed to write final xe timestamp correlation data: %s\n",
+			strerror(errno));
+	}
+
+	teardown_recording_context(&ctx);
+
+	return EXIT_SUCCESS;
+
+ fail:
+	teardown_recording_context(&ctx);
+
+	return EXIT_FAILURE;
+}
diff --git a/tools/xe-perf/xe_perf_recorder_commands.h b/tools/xe-perf/xe_perf_recorder_commands.h
new file mode 100644
index 0000000000..528813d2dc
--- /dev/null
+++ b/tools/xe-perf/xe_perf_recorder_commands.h
@@ -0,0 +1,31 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2023 Intel Corporation
+ */
+
+#ifndef XE_PERF_RECORDER_COMMANDS_H
+#define XE_PERF_RECORDER_COMMANDS_H
+
+#include <stdint.h>
+
+#define XE_PERF_RECORD_FIFO_PATH "/tmp/.xe-perf-record"
+
+enum recorder_command {
+	RECORDER_COMMAND_DUMP = 1,
+	RECORDER_COMMAND_QUIT,
+};
+
+struct recorder_command_base {
+	uint32_t command;
+	uint32_t size; /* size of recorder_command_base + dump in bytes */
+};
+
+/*
+ The dump after the recorder_command_base header:
+
+struct recorder_command_dump {
+	uint8_t path[0];
+};
+*/
+
+#endif
-- 
2.41.0


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

* [PATCH i-g-t 23/27] tools/xe-perf: xe_perf_reader, xe_perf_control and xe_perf_configs
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (21 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 22/27] tools/xe-perf: Add xe_perf_recorder Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 24/27] xe/oa: Fix invalid escape warnings Ashutosh Dixit
                   ` (8 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

Add xe_perf_reader, xe_perf_control and xe_perf_configs tools, similar to
their i915 counterparts.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tools/xe-perf/meson.build       |  17 ++
 tools/xe-perf/xe_perf_configs.c | 247 ++++++++++++++++++++++++
 tools/xe-perf/xe_perf_control.c | 117 ++++++++++++
 tools/xe-perf/xe_perf_reader.c  | 325 ++++++++++++++++++++++++++++++++
 4 files changed, 706 insertions(+)
 create mode 100644 tools/xe-perf/xe_perf_configs.c
 create mode 100644 tools/xe-perf/xe_perf_control.c
 create mode 100644 tools/xe-perf/xe_perf_reader.c

diff --git a/tools/xe-perf/meson.build b/tools/xe-perf/meson.build
index a5f59a67fe..8506aa320f 100644
--- a/tools/xe-perf/meson.build
+++ b/tools/xe-perf/meson.build
@@ -1,5 +1,22 @@
+executable('xe-perf-configs',
+           [ 'xe_perf_configs.c' ],
+           include_directories: inc,
+           dependencies: [lib_igt_chipset, lib_igt_xe_oa],
+           install: true)
+
 executable('xe-perf-recorder',
            [ 'xe_perf_recorder.c' ],
            include_directories: inc,
            dependencies: [lib_igt, lib_igt_xe_oa],
            install: true)
+
+executable('xe-perf-control',
+           [ 'xe_perf_control.c' ],
+           include_directories: inc,
+           install: true)
+
+executable('xe-perf-reader',
+           [ 'xe_perf_reader.c' ],
+           include_directories: inc,
+           dependencies: [lib_igt, lib_igt_xe_oa],
+           install: true)
diff --git a/tools/xe-perf/xe_perf_configs.c b/tools/xe-perf/xe_perf_configs.c
new file mode 100644
index 0000000000..af33c0078c
--- /dev/null
+++ b/tools/xe-perf/xe_perf_configs.c
@@ -0,0 +1,247 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+
+#include <assert.h>
+#include <dirent.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <getopt.h>
+#include <inttypes.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <sys/sysmacros.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "intel_chipset.h"
+#include "xe/xe_oa.h"
+
+static bool
+read_file_uint64(const char *file, uint64_t *value)
+{
+	char buf[32];
+	int fd, n;
+
+	fd = open(file, 0);
+	if (fd < 0)
+		return false;
+	n = read(fd, buf, sizeof (buf) - 1);
+	close(fd);
+	if (n < 0)
+		return false;
+
+	buf[n] = '\0';
+	*value = strtoull(buf, 0, 0);
+
+	return true;
+}
+
+static uint32_t
+read_device_param(const char *stem, int id, const char *param)
+{
+	char *name;
+	int ret = asprintf(&name, "/sys/class/drm/%s%u/device/%s", stem, id, param);
+	uint64_t value;
+	bool success;
+
+	assert(ret != -1);
+
+	success = read_file_uint64(name, &value);
+	free(name);
+
+	return success ? value : 0;
+}
+
+static int
+find_intel_render_node(void)
+{
+	for (int i = 128; i < (128 + 16); i++) {
+		if (read_device_param("renderD", i, "vendor") == 0x8086)
+			return i;
+	}
+
+	return -1;
+}
+
+static int
+open_render_node(uint32_t *devid)
+{
+	char *name;
+	int ret;
+	int fd;
+
+	int render = find_intel_render_node();
+	if (render < 0)
+		return -1;
+
+	ret = asprintf(&name, "/dev/dri/renderD%u", render);
+	assert(ret != -1);
+
+	*devid = read_device_param("renderD", render, "device");
+
+	fd = open(name, O_RDWR);
+	free(name);
+
+	return fd;
+}
+
+static int
+get_card_for_fd(int fd)
+{
+	struct stat sb;
+	int mjr, mnr;
+	char buffer[128];
+	DIR *drm_dir;
+	struct dirent *entry;
+	int retval = -1;
+
+	if (fstat(fd, &sb)) {
+		fprintf(stderr, "Failed to stat DRM fd\n");
+		return -1;
+	}
+
+	mjr = major(sb.st_rdev);
+	mnr = minor(sb.st_rdev);
+
+	snprintf(buffer, sizeof(buffer), "/sys/dev/char/%d:%d/device/drm", mjr, mnr);
+
+	drm_dir = opendir(buffer);
+	assert(drm_dir != NULL);
+
+	while ((entry = readdir(drm_dir))) {
+		if (entry->d_type == DT_DIR && strncmp(entry->d_name, "card", 4) == 0) {
+			retval = strtoull(entry->d_name + 4, NULL, 10);
+			break;
+		}
+	}
+
+	closedir(drm_dir);
+
+	return retval;
+}
+
+static const char *
+metric_name(struct intel_xe_perf *perf, const char *hw_config_guid)
+{
+	struct intel_xe_perf_metric_set *metric_set;
+
+	igt_list_for_each_entry(metric_set, &perf->metric_sets, link) {
+		if (!strcmp(metric_set->hw_config_guid, hw_config_guid))
+			return metric_set->symbol_name;
+	}
+
+	return "Unknown";
+}
+
+static void
+usage(void)
+{
+	printf("Usage: xe-perf-configs [options]\n"
+	       "Manages xe-perf configurations stored in xe.\n"
+	       "     --purge, -p         Purge configurations from the kernel\n"
+	       "     --list,  -l         List configurations from the kernel\n");
+}
+
+int
+main(int argc, char *argv[])
+{
+	char metrics_path[128];
+	DIR *metrics_dir;
+	struct dirent *entry;
+	int drm_fd, drm_card;
+	int opt;
+	bool purge = false;
+	const struct option long_options[] = {
+		{"help",   no_argument, 0, 'h'},
+		{"list",   no_argument, 0, 'l'},
+		{"purge",  no_argument, 0, 'p'},
+		{0, 0, 0, 0}
+	};
+	const struct intel_device_info *devinfo;
+	struct intel_xe_perf *perf;
+	uint32_t devid = 0;
+
+	while ((opt = getopt_long(argc, argv, "hlp", long_options, NULL)) != -1) {
+		switch (opt) {
+		case 'h':
+			usage();
+			return EXIT_SUCCESS;
+		case 'l':
+			break;
+		case 'p':
+			purge = true;
+			break;
+		default:
+			fprintf(stderr, "Internal error: "
+				"unexpected getopt value: %d\n", opt);
+			usage();
+			return EXIT_FAILURE;
+		}
+	}
+
+	drm_fd = open_render_node(&devid);
+	drm_card = get_card_for_fd(drm_fd);
+
+	fprintf(stdout, "Found device id=0x%x\n", devid);
+
+	devinfo = intel_get_device_info(drm_fd);
+	if (!devinfo) {
+		fprintf(stderr, "No device info found.\n");
+		return EXIT_FAILURE;
+	}
+
+	fprintf(stdout, "Device graphics_ver=%i gt=%i\n", devinfo->graphics_ver, devinfo->gt);
+
+	perf = intel_xe_perf_for_fd(drm_fd, 0);
+	if (!perf) {
+		fprintf(stderr, "No perf data found.\n");
+		return EXIT_FAILURE;
+	}
+
+	snprintf(metrics_path, sizeof(metrics_path),
+		 "/sys/class/drm/card%d/metrics", drm_card);
+	metrics_dir = opendir(metrics_path);
+	if (!metrics_dir)
+		return EXIT_FAILURE;
+
+	fprintf(stdout, "Looking at metrics in %s\n", metrics_path);
+
+	while ((entry = readdir(metrics_dir))) {
+		char metric_id_path[400];
+		uint64_t metric_id;
+
+		if (entry->d_type != DT_DIR)
+			continue;
+
+		snprintf(metric_id_path, sizeof(metric_id_path),
+			 "%s/%s/id", metrics_path, entry->d_name);
+
+		if (!read_file_uint64(metric_id_path, &metric_id))
+			continue;
+
+		if (purge) {
+			if (intel_xe_perf_ioctl(drm_fd, DRM_XE_PERF_OP_REMOVE_CONFIG, &metric_id) == 0)
+				fprintf(stdout, "\tRemoved config %s id=%03" PRIu64 " name=%s\n",
+					entry->d_name, metric_id, metric_name(perf, entry->d_name));
+			else
+				fprintf(stdout, "\tFailed to remove config %s id=%03" PRIu64 " name=%s\n",
+					entry->d_name, metric_id, metric_name(perf, entry->d_name));
+		} else {
+			fprintf(stdout, "\tConfig %s id=%03" PRIu64 " name=%s\n",
+				entry->d_name, metric_id, metric_name(perf, entry->d_name));
+		}
+	}
+
+	closedir(metrics_dir);
+	close(drm_fd);
+
+	return EXIT_SUCCESS;
+}
diff --git a/tools/xe-perf/xe_perf_control.c b/tools/xe-perf/xe_perf_control.c
new file mode 100644
index 0000000000..da96232bc8
--- /dev/null
+++ b/tools/xe-perf/xe_perf_control.c
@@ -0,0 +1,117 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+
+#include <getopt.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "xe_perf_recorder_commands.h"
+
+static void
+usage(const char *name)
+{
+	fprintf(stdout,
+		"Usage: %s [options]\n"
+		"\n"
+		"     --help,               -h         Print this screen\n"
+		"     --command-fifo,       -f <path>  Path to a command fifo\n"
+		"     --dump,               -d <path>  Write a content of circular buffer to path\n",
+		name);
+}
+
+int
+main(int argc, char *argv[])
+{
+	const struct option long_options[] = {
+		{"help",                       no_argument, 0, 'h'},
+		{"dump",                 required_argument, 0, 'd'},
+		{"command-fifo",         required_argument, 0, 'f'},
+		{"quit",                       no_argument, 0, 'q'},
+		{0, 0, 0, 0}
+	};
+	const char *command_fifo = XE_PERF_RECORD_FIFO_PATH, *dump_file = NULL;
+	FILE *command_fifo_file;
+	int opt;
+	bool quit = false;
+
+	while ((opt = getopt_long(argc, argv, "hd:f:q", long_options, NULL)) != -1) {
+		switch (opt) {
+		case 'h':
+			usage(argv[0]);
+			return EXIT_SUCCESS;
+		case 'd':
+			dump_file = optarg;
+			break;
+		case 'f':
+			command_fifo = optarg;
+			break;
+		case 'q':
+			quit = true;
+			break;
+		default:
+			fprintf(stderr, "Internal error: "
+				"unexpected getopt value: %d\n", opt);
+			usage(argv[0]);
+			return EXIT_FAILURE;
+		}
+	}
+
+	if (!command_fifo)
+		return EXIT_FAILURE;
+
+	command_fifo_file = fopen(command_fifo, "r+");
+	if (!command_fifo_file) {
+		fprintf(stderr, "Unable to open command file\n");
+		return EXIT_FAILURE;
+	}
+
+	if (dump_file) {
+		if (dump_file[0] == '/') {
+			uint32_t total_len =
+				sizeof(struct recorder_command_base) + strlen(dump_file) + 1;
+			struct {
+				struct recorder_command_base base;
+				uint8_t dump[];
+			} *data = malloc(total_len);
+
+			data->base.command = RECORDER_COMMAND_DUMP;
+			data->base.size = total_len;
+			snprintf((char *) data->dump, strlen(dump_file) + 1, "%s", dump_file);
+
+			fwrite(data, total_len, 1, command_fifo_file);
+		} else {
+			char *cwd = getcwd(NULL, 0);
+			uint32_t path_len = strlen(cwd) + 1 + strlen(dump_file) + 1;
+			uint32_t total_len = sizeof(struct recorder_command_base) + path_len;
+			struct {
+				struct recorder_command_base base;
+				uint8_t dump[];
+			} *data = malloc(total_len);
+
+			data->base.command = RECORDER_COMMAND_DUMP;
+			data->base.size = total_len;
+			snprintf((char *) data->dump, path_len, "%s/%s", cwd, dump_file);
+
+			fwrite(data, total_len, 1, command_fifo_file);
+		}
+	}
+
+	if (quit) {
+		struct recorder_command_base base = {
+			.command = RECORDER_COMMAND_QUIT,
+			.size = sizeof(base),
+		};
+
+		fwrite(&base, sizeof(base), 1, command_fifo_file);
+	}
+
+	fclose(command_fifo_file);
+
+	return EXIT_SUCCESS;
+}
diff --git a/tools/xe-perf/xe_perf_reader.c b/tools/xe-perf/xe_perf_reader.c
new file mode 100644
index 0000000000..62a4237ee4
--- /dev/null
+++ b/tools/xe-perf/xe_perf_reader.c
@@ -0,0 +1,325 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#include <assert.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <getopt.h>
+#include <inttypes.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "igt_core.h"
+#include "intel_chipset.h"
+#include "xe/xe_oa.h"
+#include "xe/xe_oa_data_reader.h"
+
+#define MAX(a,b) ((a) > (b) ? (a) : (b))
+#define MIN(a,b) ((a) > (b) ? (b) : (a))
+
+static void
+usage(void)
+{
+	printf("Usage: xe-perf-reader [options] file\n"
+	       "Reads the content of an xe-perf recording.\n"
+	       "\n"
+	       "     --help,    -h             Print this screen\n"
+	       "     --counters, -c c1,c2,...  List of counters to display values for.\n"
+	       "                               Use 'all' to display all counters.\n"
+	       "                               Use 'list' to list available counters.\n"
+	       "     --reports, -r             Print out data per report.\n");
+}
+
+static struct intel_xe_perf_logical_counter *
+find_counter(struct intel_xe_perf_metric_set *metric_set,
+	     const char *name)
+{
+	for (uint32_t i = 0; i < metric_set->n_counters; i++) {
+		if (!strcmp(name, metric_set->counters[i].symbol_name)) {
+			return &metric_set->counters[i];
+		}
+	}
+
+	return NULL;
+}
+
+static void
+append_counter(struct intel_xe_perf_logical_counter ***counters,
+	       int32_t *n_counters,
+	       uint32_t *n_allocated_counters,
+	       struct intel_xe_perf_logical_counter *counter)
+{
+	if (*n_counters < *n_allocated_counters) {
+		(*counters)[(*n_counters)++] = counter;
+		return;
+	}
+
+	*n_allocated_counters = MAX(2, *n_allocated_counters * 2);
+	*counters = realloc(*counters,
+			    sizeof(struct intel_xe_perf_logical_counter *) *
+			    (*n_allocated_counters));
+	(*counters)[(*n_counters)++] = counter;
+}
+
+static struct intel_xe_perf_logical_counter **
+get_logical_counters(struct intel_xe_perf_metric_set *metric_set,
+		     const char *counter_list,
+		     int32_t *out_n_counters)
+{
+	struct intel_xe_perf_logical_counter **counters = NULL, *counter;
+	uint32_t n_allocated_counters = 0;
+	const char *current, *next;
+	char counter_name[100];
+
+	if (!counter_list) {
+		*out_n_counters = 0;
+		return NULL;
+	}
+
+	if (!strcmp(counter_list, "list")) {
+		uint32_t longest_name = 0;
+
+		*out_n_counters = -1;
+		for (uint32_t i = 0; i < metric_set->n_counters; i++) {
+			longest_name = MAX(longest_name,
+					   strlen(metric_set->counters[i].symbol_name));
+		}
+
+		fprintf(stdout, "Available counters:\n");
+		for (uint32_t i = 0; i < metric_set->n_counters; i++) {
+			fprintf(stdout, "%s:%*s%s\n",
+				metric_set->counters[i].symbol_name,
+				(int)(longest_name -
+				      strlen(metric_set->counters[i].symbol_name) + 1), " ",
+				metric_set->counters[i].name);
+		}
+		return NULL;
+	}
+
+	if (!strcmp(counter_list, "all")) {
+		counters = malloc(sizeof(*counters) * metric_set->n_counters);
+		*out_n_counters = metric_set->n_counters;
+		for (uint32_t i = 0; i < metric_set->n_counters; i++)
+			counters[i] = &metric_set->counters[i];
+		return counters;
+	}
+
+	*out_n_counters = 0;
+	current = counter_list;
+	while ((next = strstr(current, ","))) {
+		snprintf(counter_name,
+			 MIN((uint32_t)(next - current) + 1, sizeof(counter_name)),
+			 "%s", current);
+
+		counter = find_counter(metric_set, counter_name);
+		if (!counter) {
+			fprintf(stderr, "Unknown counter '%s'.\n", counter_name);
+			free(counters);
+			*out_n_counters = -1;
+			return NULL;
+		}
+
+		append_counter(&counters, out_n_counters, &n_allocated_counters, counter);
+
+		current = next + 1;
+	}
+
+	if (strlen(current) > 0) {
+		counter = find_counter(metric_set, current);
+		if (!counter) {
+			fprintf(stderr, "Unknown counter '%s'.\n", current);
+			free(counters);
+			*out_n_counters = -1;
+			return NULL;
+		}
+
+		append_counter(&counters, out_n_counters, &n_allocated_counters, counter);
+	}
+
+	return counters;
+}
+
+static void
+print_report_deltas(const struct intel_xe_perf_data_reader *reader,
+		    const struct intel_xe_perf_record_header *xe_report0,
+		    const struct intel_xe_perf_record_header *xe_report1,
+		    struct intel_xe_perf_logical_counter **counters,
+		    uint32_t n_counters)
+{
+	struct intel_xe_perf_accumulator accu;
+
+	intel_xe_perf_accumulate_reports(&accu,
+				      reader->perf, reader->metric_set,
+				      xe_report0, xe_report1);
+
+	for (uint32_t c = 0; c < n_counters; c++) {
+		struct intel_xe_perf_logical_counter *counter = counters[c];
+
+		switch (counter->storage) {
+		case INTEL_XE_PERF_LOGICAL_COUNTER_STORAGE_UINT64:
+		case INTEL_XE_PERF_LOGICAL_COUNTER_STORAGE_UINT32:
+		case INTEL_XE_PERF_LOGICAL_COUNTER_STORAGE_BOOL32:
+			fprintf(stdout, "   %s: %" PRIu64 "\n",
+				counter->symbol_name, counter->read_uint64(reader->perf,
+									   reader->metric_set,
+									   accu.deltas));
+			break;
+		case INTEL_XE_PERF_LOGICAL_COUNTER_STORAGE_DOUBLE:
+		case INTEL_XE_PERF_LOGICAL_COUNTER_STORAGE_FLOAT:
+			fprintf(stdout, "   %s: %f\n",
+				counter->symbol_name, counter->read_float(reader->perf,
+									  reader->metric_set,
+									  accu.deltas));
+			break;
+		}
+	}
+}
+
+int
+main(int argc, char *argv[])
+{
+	const struct option long_options[] = {
+		{"help",             no_argument, 0, 'h'},
+		{"counters",   required_argument, 0, 'c'},
+		{"reports",          no_argument, 0, 'r'},
+		{0, 0, 0, 0}
+	};
+	struct intel_xe_perf_data_reader reader;
+	struct intel_xe_perf_logical_counter **counters;
+	const struct intel_device_info *devinfo;
+	const char *counter_names = NULL;
+	int32_t n_counters;
+	int fd, opt;
+	bool print_reports = false;
+
+	while ((opt = getopt_long(argc, argv, "hc:r", long_options, NULL)) != -1) {
+		switch (opt) {
+		case 'h':
+			usage();
+			return EXIT_SUCCESS;
+		case 'c':
+			counter_names = optarg;
+			break;
+		case 'r':
+			print_reports = true;
+			break;
+		default:
+			fprintf(stderr, "Internal error: "
+				"unexpected getopt value: %d\n", opt);
+			usage();
+			return EXIT_FAILURE;
+		}
+	}
+
+	if (optind >= argc) {
+		fprintf(stderr, "No recording file specified.\n");
+		return EXIT_FAILURE;
+	}
+
+	fd = open(argv[optind], 0, O_RDONLY);
+	if (fd < 0) {
+		fprintf(stderr, "Cannot open '%s': %s.\n",
+			argv[optind], strerror(errno));
+		return EXIT_FAILURE;
+	}
+
+	if (!intel_xe_perf_data_reader_init(&reader, fd)) {
+		fprintf(stderr, "Unable to parse '%s': %s.\n",
+			argv[optind], reader.error_msg);
+		return EXIT_FAILURE;
+	}
+
+	counters = get_logical_counters(reader.metric_set, counter_names, &n_counters);
+	if (n_counters < 0)
+		goto exit;
+
+	devinfo = intel_get_device_info(reader.devinfo.devid);
+
+	fprintf(stdout, "Recorded on device=0x%x(%s) graphics_ver=%i\n",
+		reader.devinfo.devid, devinfo->codename,
+		reader.devinfo.graphics_ver);
+	fprintf(stdout, "Metric used : %s (%s) uuid=%s\n",
+		reader.metric_set->symbol_name, reader.metric_set->name,
+		reader.metric_set->hw_config_guid);
+	fprintf(stdout, "Reports: %u\n", reader.n_records);
+	fprintf(stdout, "Context switches: %u\n", reader.n_timelines);
+	fprintf(stdout, "Timestamp correlation points: %u\n", reader.n_correlations);
+
+	if (reader.n_correlations < 2) {
+		fprintf(stderr, "Less than 2 CPU/GPU timestamp correlation points.\n");
+		return EXIT_FAILURE;
+	}
+
+	fprintf(stdout, "Timestamp correlation CPU range:       0x%016"PRIx64"-0x%016"PRIx64"\n",
+		reader.correlations[0]->cpu_timestamp,
+		reader.correlations[reader.n_correlations - 1]->cpu_timestamp);
+	fprintf(stdout, "Timestamp correlation GPU range (64b): 0x%016"PRIx64"-0x%016"PRIx64"\n",
+		reader.correlations[0]->gpu_timestamp,
+		reader.correlations[reader.n_correlations - 1]->gpu_timestamp);
+	fprintf(stdout, "Timestamp correlation GPU range (32b): 0x%016"PRIx64"-0x%016"PRIx64"\n",
+		reader.correlations[0]->gpu_timestamp & 0xffffffff,
+		reader.correlations[reader.n_correlations - 1]->gpu_timestamp & 0xffffffff);
+
+	fprintf(stdout, "OA data timestamp range:               0x%016"PRIx64"-0x%016"PRIx64"\n",
+		intel_xe_perf_read_record_timestamp(reader.perf,
+						 reader.metric_set,
+						 reader.records[0]),
+		intel_xe_perf_read_record_timestamp(reader.perf,
+						 reader.metric_set,
+						 reader.records[reader.n_records - 1]));
+	fprintf(stdout, "OA raw data timestamp range:           0x%016"PRIx64"-0x%016"PRIx64"\n",
+		intel_xe_perf_read_record_timestamp_raw(reader.perf,
+						     reader.metric_set,
+						     reader.records[0]),
+		intel_xe_perf_read_record_timestamp_raw(reader.perf,
+						     reader.metric_set,
+						     reader.records[reader.n_records - 1]));
+
+	if (strcmp(reader.metric_set_uuid, reader.metric_set->hw_config_guid)) {
+		fprintf(stdout,
+			"WARNING: Recording used a different HW configuration.\n"
+			"WARNING: This could lead to inconsistent counter values.\n");
+	}
+
+	for (uint32_t i = 0; i < reader.n_timelines; i++) {
+		const struct intel_xe_perf_timeline_item *item = &reader.timelines[i];
+
+		fprintf(stdout, "Time: CPU=0x%016" PRIx64 "-0x%016" PRIx64
+			" GPU=0x%016" PRIx64 "-0x%016" PRIx64"\n",
+			item->cpu_ts_start, item->cpu_ts_end,
+			item->ts_start, item->ts_end);
+		fprintf(stdout, "hw_id=0x%x %s\n",
+			item->hw_id, item->hw_id == 0xffffffff ? "(idle)" : "");
+
+		print_report_deltas(&reader,
+				    reader.records[item->record_start],
+				    reader.records[item->record_end],
+				    counters, n_counters);
+
+		if (print_reports) {
+			for (uint32_t r = item->record_start; r < item->record_end; r++) {
+				fprintf(stdout, " report%i = %s\n",
+					r - item->record_start,
+					intel_xe_perf_read_report_reason(reader.perf, reader.records[r]));
+				print_report_deltas(&reader,
+						    reader.records[r],
+						    reader.records[r + 1],
+						    counters, n_counters);
+			}
+		}
+	}
+
+ exit:
+	intel_xe_perf_data_reader_fini(&reader);
+	close(fd);
+
+	return EXIT_SUCCESS;
+}
-- 
2.41.0


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

* [PATCH i-g-t 24/27] xe/oa: Fix invalid escape warnings
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (22 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 23/27] tools/xe-perf: xe_perf_reader, xe_perf_control and xe_perf_configs Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 25/27] xe/oa/mdapi-xml-convert: Add support for 576B_PEC64LL format Ashutosh Dixit
                   ` (7 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

From: José Roberto de Souza <jose.souza@intel.com>

Fix this warnings:
SyntaxWarning: invalid escape sequence '\

Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
---
 lib/xe/oa-configs/codegen.py           | 12 ++++++------
 lib/xe/oa-configs/mdapi-xml-convert.py |  2 +-
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/lib/xe/oa-configs/codegen.py b/lib/xe/oa-configs/codegen.py
index 9a7d57a33e..f078ef9498 100644
--- a/lib/xe/oa-configs/codegen.py
+++ b/lib/xe/oa-configs/codegen.py
@@ -162,13 +162,13 @@ hw_vars_mapping = {
 }
 
 def is_hw_var(name):
-    m = re.search('\$GtSlice([0-9]+)XeCore([0-9]+)$', name)
+    m = re.search(r'\$GtSlice([0-9]+)XeCore([0-9]+)$', name)
     if m:
         return True
-    m = re.search('\$GtSlice([0-9]+)$', name)
+    m = re.search(r'\$GtSlice([0-9]+)$', name)
     if m:
         return True
-    m = re.search('\$GtSlice([0-9]+)DualSubslice([0-9]+)$', name)
+    m = re.search(r'\$GtSlice([0-9]+)DualSubslice([0-9]+)$', name)
     if m:
         return True
     return name in hw_vars_mapping
@@ -338,13 +338,13 @@ class Gen:
             return self.hw_vars[name]['c']
         if name in set.counter_vars:
             return set.read_funcs[name] + "(perf, metric_set, accumulator)"
-        m = re.search('\$GtSlice([0-9]+)$', name)
+        m = re.search(r'\$GtSlice([0-9]+)$', name)
         if m:
             return 'intel_xe_perf_devinfo_slice_available(&perf->devinfo, {0})'.format(m.group(1))
-        m = re.search('\$GtSlice([0-9]+)DualSubslice([0-9]+)$', name)
+        m = re.search(r'\$GtSlice([0-9]+)DualSubslice([0-9]+)$', name)
         if m:
             return 'intel_xe_perf_devinfo_subslice_available(&perf->devinfo, {0}, {1})'.format(m.group(1), m.group(2))
-        m = re.search('\$GtSlice([0-9]+)XeCore([0-9]+)$', name)
+        m = re.search(r'\$GtSlice([0-9]+)XeCore([0-9]+)$', name)
         if m:
             return 'intel_xe_perf_devinfo_subslice_available(&perf->devinfo, {0}, {1})'.format(m.group(1), m.group(2))
         return None
diff --git a/lib/xe/oa-configs/mdapi-xml-convert.py b/lib/xe/oa-configs/mdapi-xml-convert.py
index ab4747ddd1..575b53e955 100755
--- a/lib/xe/oa-configs/mdapi-xml-convert.py
+++ b/lib/xe/oa-configs/mdapi-xml-convert.py
@@ -228,7 +228,7 @@ counter_blacklist = {
 
 def underscore(name):
     s = re.sub('MHz', 'Mhz', name)
-    s = re.sub('\.', '_', s)
+    s = re.sub(r'\.', '_', s)
     s = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', s)
     s = re.sub('#', '_', s)
     return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s).lower()
-- 
2.41.0


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

* [PATCH i-g-t 25/27] xe/oa/mdapi-xml-convert: Add support for 576B_PEC64LL format
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (23 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 24/27] xe/oa: Fix invalid escape warnings Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 26/27] xe/oa: Regenerate oa-lnl.xml now parsing all counters Ashutosh Dixit
                   ` (6 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

From: José Roberto de Souza <jose.souza@intel.com>

Xe2 don't use the 256bytes long format, instead it uses a 576bytes
long with 64 PEC fields that are 64 bits long.
This patch fixes the xe2 definition and add the parser for this format.

Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
---
 lib/xe/oa-configs/codegen.py           |  5 ++
 lib/xe/oa-configs/mdapi-xml-convert.py | 76 +++++++++++++++++++++-----
 lib/xe/xe_oa.h                         |  1 +
 3 files changed, 67 insertions(+), 15 deletions(-)

diff --git a/lib/xe/oa-configs/codegen.py b/lib/xe/oa-configs/codegen.py
index f078ef9498..51498f803d 100644
--- a/lib/xe/oa-configs/codegen.py
+++ b/lib/xe/oa-configs/codegen.py
@@ -128,6 +128,7 @@ class Set:
         return self.xml.find(path)
 
 
+#TODO add SqidiTotalCount, L3BankTotalCount, L3NodeTotalCount
 hw_vars_mapping = {
     "$EuCoresTotalCount": { 'c': "perf->devinfo.n_eus", 'desc': "The total number of execution units" },
     "$EuSlicesTotalCount": { 'c': "perf->devinfo.n_eu_slices" },
@@ -159,6 +160,10 @@ hw_vars_mapping = {
     "$GpuMaxFrequency": { 'c': "perf->devinfo.gt_max_freq" },
     "$SkuRevisionId": { 'c': "perf->devinfo.revision" },
     "$QueryMode": { 'c': "perf->devinfo.query_mode" },
+
+    "$ComputeEngineTotalCount": { 'c': "perf->devinfo.n_eus", 'desc': "The total number of execution units" },
+
+    "$CopyEngineTotalCount": { 'c': "perf->devinfo.n_eus", 'desc': "The total number of execution units" },
 }
 
 def is_hw_var(name):
diff --git a/lib/xe/oa-configs/mdapi-xml-convert.py b/lib/xe/oa-configs/mdapi-xml-convert.py
index 575b53e955..602a3965af 100755
--- a/lib/xe/oa-configs/mdapi-xml-convert.py
+++ b/lib/xe/oa-configs/mdapi-xml-convert.py
@@ -149,12 +149,10 @@ mtl_chipset_oam_samedia_params = {
     }
 }
 
-# FIXME: everything except oa_report_size is incorrect here
-xe2_chipset_params = {
-    'a_offset': 16,
-    'b_offset': 192,
-    'c_offset': 224,
+xe2_chipset_params_pec = {
+    'pec_offset': 32,
     'oa_report_size': 576,
+    # TODO: Not sure about the configs below
     'config_reg_blacklist': {
         0x2364, # OACTXID
     },
@@ -183,7 +181,11 @@ mtl_chipset_oa_formats = {
 }
 
 xe2_chipset_oa_formats = {
-    '256B_GENERIC_NOA16': xe2_chipset_params,
+    '576B_PEC64LL': xe2_chipset_params_pec,
+    # We only care about 576B_PEC64LL metrics in Xe2, entries below is just to
+    # surpress warnings
+    '256B_GENERIC_NOA16': xehpsdv_chipset_params,
+    '128B_MPEC8_NOA16': mtl_chipset_oam_samedia_params,
 }
 
 chipsets = {
@@ -209,8 +211,6 @@ chipsets = {
 
 xehp_plus = ( 'ACM', 'MTL' )
 
-xe2_plus = ( 'LNL' )
-
 register_types = { 'OA', 'NOA', 'FLEX', 'PM' }
 
 default_set_blacklist = { "RenderDX1x", # TODO: rename to something non 'DX'
@@ -298,6 +298,46 @@ def read_token_to_rpn_read_oam(chipset, token, raw_offsets, oa_format):
 
     assert 0
 
+def read_token_to_rpn_read_pec(chipset, token, raw_offsets, oa_format):
+    width, offset_str = token.split('@')
+    offset = int(offset_str, 16)
+
+    if width != 'qw':
+        assert 0
+
+    if raw_offsets:
+        pec_offset = chipsets[chipset][oa_format]['pec_offset']
+
+        if offset < pec_offset:
+            if offset == 8:
+                return "GPU_TIME 0 READ"
+            elif offset == 24:
+                return "GPU_CLOCK 0 READ"
+            else:
+                assert 0
+        else:
+            pec_cnt_offset = int((offset - pec_offset) / 8)
+
+            return "PEC " + str(pec_cnt_offset) + " READ"
+    else:
+        # Location in the accumulated deltas
+        idx = int(offset / 8)
+
+        if idx == 0:
+            return "GPU_TIME 0 READ"
+        elif idx == 1:
+            return "GPU_CLOCK 0 READ"
+        else:
+            idx = idx - 2;
+            pec_cnt_offset = str(idx)
+            pec_high_low_text = "low"
+            if (offset % 8) > 0:
+               pec_high_low_text = "high"
+
+            return "PEC " + pec_cnt_offset + " READ"
+
+    assert 0
+
 def read_token_to_rpn_read_oag(chipset, token, raw_offsets, oa_format):
     width, offset_str = token.split('@')
 
@@ -374,9 +414,6 @@ def read_token_to_rpn_read_oag(chipset, token, raw_offsets, oa_format):
                 return "C " + str(idx - 48) + " READ"
             else:
                 return "{0} READ".format(read_value(chipset, offset, oa_format))
-        elif chipset in xe2_plus:
-            # FIXME: skip all metrics to retain just the registers
-                return "GPU_TIME 0 READ"
         else:
             # For Gen8+ the array of accumulated counters is
             # assumed to start with a GPU_TIME then GPU_CLOCK,
@@ -405,6 +442,9 @@ def read_token_to_rpn_read(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)
 
+    if oa_format in ['576B_PEC64LL']:
+        return read_token_to_rpn_read_pec(chipset, token, raw_offsets, oa_format)
+
     assert 0
 
 def replace_read_tokens_with_rpn_read_ops(chipset, oa_format, equation, raw_offsets):
@@ -905,6 +945,8 @@ for arg in args.xml:
                 mdapi_counter.set('NormalizationEquation', '$GpuCoreClocks 1000000000 UMUL $GpuTime UDIV')
                 #mdapi_counter.set('DeltaReportReadEquation', '$GpuCoreClocks $GpuTime UDIV')
 
+            if mdapi_counter.get('SymbolName') == "ResultUncertainty":
+                continue
 
             symbol_name = oa_registry.Registry.sanitize_symbol_name(mdapi_counter.get('SymbolName'))
 
@@ -992,11 +1034,15 @@ 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('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")
+                if oa_format == '576B_PEC64LL':
+                   mdapi_counter.set('DeltaReportReadEquation', "qw@0x0 1000000000 UMUL $GpuTimestampFrequency UDIV")
+                   mdapi_counter.set('SnapshotReportReadEquation', "qw@0x08 1000000000 UMUL $GpuTimestampFrequency UDIV")
                 else:
-                    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 == "":
diff --git a/lib/xe/xe_oa.h b/lib/xe/xe_oa.h
index c16177ec8e..f6f2768b00 100644
--- a/lib/xe/xe_oa.h
+++ b/lib/xe/xe_oa.h
@@ -275,6 +275,7 @@ struct intel_xe_perf_metric_set {
 	int b_offset;
 	int c_offset;
 	int perfcnt_offset;
+	int pec_offset;
 
 	const struct intel_xe_perf_register_prog *b_counter_regs;
 	uint32_t n_b_counter_regs;
-- 
2.41.0


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

* [PATCH i-g-t 26/27] xe/oa: Regenerate oa-lnl.xml now parsing all counters
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (24 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 25/27] xe/oa/mdapi-xml-convert: Add support for 576B_PEC64LL format Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 20:08 ` [PATCH i-g-t 27/27] xe/oa/oa-metricset-codegen: Fix XE_OA_FORMAT_PEC64u64 offsets Ashutosh Dixit
                   ` (5 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

From: José Roberto de Souza <jose.souza@intel.com>

Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
---
 lib/xe/oa-configs/oa-lnl.xml | 6929 +++++++++++++++++++++++++++-------
 1 file changed, 5557 insertions(+), 1372 deletions(-)

diff --git a/lib/xe/oa-configs/oa-lnl.xml b/lib/xe/oa-configs/oa-lnl.xml
index 3576ca2827..8ddee11de2 100644
--- a/lib/xe/oa-configs/oa-lnl.xml
+++ b/lib/xe/oa-configs/oa-lnl.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0"?>
-<metrics version="1697079501" merge_md5="">
+<metrics version="1716582996" merge_md5="">
   <set name="RenderBasic"
        chipset="LNL"
        symbol_name="RenderBasic"
        underscore_name="render_basic"
        mdapi_supported_apis="VK OGL OCL IO"
-       oa_format="256B_GENERIC_NOA16"
+       oa_format="576B_PEC64LL"
        hw_config_guid="12f20772-0044-44ff-bcc0-d2bc252d140e"
        >
     <counter name="GPU Time Elapsed"
@@ -21,6 +21,839 @@
              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="GPU Busy"
+             symbol_name="GPU_BUSY"
+             underscore_name="gpu_busy"
+             description="Percentage of time in which GPU is not idle including all GPU engines"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 32 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="IA Vertex"
+             symbol_name="IA_VERTEX"
+             underscore_name="ia_vertex"
+             description="Number of vertices in a draw"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 33 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GpGpu Threadgroup Count"
+             symbol_name="GPGPU_THREADGROUP_COUNT"
+             underscore_name="gpgpu_threadgroup_count"
+             description="Number of GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 0 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Async GpGpu Threadgroup Count"
+             symbol_name="ASYNC_GPGPU_THREADGROUP_COUNT"
+             underscore_name="async_gpgpu_threadgroup_count"
+             description="Number of Async GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 1 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Rasterizer Sample Output"
+             symbol_name="RASTERIZER_SAMPLE_OUTPUT"
+             underscore_name="rasterizer_sample_output"
+             description="Number of lit samples emitted by Rasterizer"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 34 READ"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Pixel Blend"
+             symbol_name="PIXEL_BLEND"
+             underscore_name="pixel_blend"
+             description="Number of blended pixels written to all render targets"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 35 READ"
+             mdapi_group="Color Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Pixel Write"
+             symbol_name="PIXEL_WRITE"
+             underscore_name="pixel_write"
+             description="Number of pixels written to all render targets"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 36 READ"
+             mdapi_group="Color Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="PostPS Alpha Test Fail"
+             symbol_name="POSTPS_ALPHA_TEST_FAIL"
+             underscore_name="postps_alpha_test_fail"
+             description="Number of 2x2 that were lit from Rasterizer but failed the alpha test"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 2 READ"
+             mdapi_group="Color Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Pix Kill"
+             symbol_name="SHADER_PIX_KILL"
+             underscore_name="shader_pix_kill"
+             description="Number of pixels that were lit from Rasterizer but killed by the Pixel Shader"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 3 READ"
+             mdapi_group="Color Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Read"
+             symbol_name="L3_READ"
+             underscore_name="l3_read"
+             description="Number of Device Cache 64B read requests"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 37 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Write"
+             symbol_name="L3_WRITE"
+             underscore_name="l3_write"
+             description="Number of Device Cache 64B write requests"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 38 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Command Parser Compute Engine Busy"
+             symbol_name="COMMAND_PARSER_COMPUTE_ENGINE_BUSY"
+             underscore_name="command_parser_compute_engine_busy"
+             description="Percentage of time in which there is a context loaded and active on the compute queue"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 39 READ $ComputeEngineTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Command Parser Render Engine Busy"
+             symbol_name="COMMAND_PARSER_RENDER_ENGINE_BUSY"
+             underscore_name="command_parser_render_engine_busy"
+             description="Percentage of time in which there is a context loaded and active on the 3D queue"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 40 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Command Parser Copy Engine Busy"
+             symbol_name="COMMAND_PARSER_COPY_ENGINE_BUSY"
+             underscore_name="command_parser_copy_engine_busy"
+             description="Percentage of time in which there is a context loaded and active on the copy queue."
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 41 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Clipper Input Vertex"
+             symbol_name="CLIPPER_INPUT_VERTEX"
+             underscore_name="clipper_input_vertex"
+             description="Number of Clipper input vertices"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 42 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Clipper Primitive Cull"
+             symbol_name="CLIPPER_PRIMITIVE_CULL"
+             underscore_name="clipper_primitive_cull"
+             description="Number of Clipper early cull primitives"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 43 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Clipper Primitive Far Near Clip"
+             symbol_name="CLIPPER_PRIMITIVE_FAR_NEAR_CLIP"
+             underscore_name="clipper_primitive_far_near_clip"
+             description="Number of primitives clipped by Clipper due to near/far planes"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 44 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Clipper Primitive Output"
+             symbol_name="CLIPPER_PRIMITIVE_OUTPUT"
+             underscore_name="clipper_primitive_output"
+             description="Number of primitives going out of Clipper, must clip plus the trivial accept. Must clip primitives are counted one time only."
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 45 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="IA Primitive"
+             symbol_name="IA_PRIMITIVE"
+             underscore_name="ia_primitive"
+             description="Number of primitives in a draw"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 46 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Streamout Output Vertex Count"
+             symbol_name="STREAMOUT_OUTPUT_VERTEX_COUNT"
+             underscore_name="streamout_output_vertex_count"
+             description="Number of vertices written by SOL"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 47 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Stripsfan Object Count"
+             symbol_name="STRIPSFAN_OBJECT_COUNT"
+             underscore_name="stripsfan_object_count"
+             description="Number of objects exiting Stripsfan stage"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 48 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Stripsfan Object Cull"
+             symbol_name="STRIPSFAN_OBJECT_CULL"
+             underscore_name="stripsfan_object_cull"
+             description="Number of simple culled objects in Stripsfan stage"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 49 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Streamout Primitive Write Count"
+             symbol_name="STREAMOUT_PRIMITIVE_WRITE_COUNT"
+             underscore_name="streamout_primitive_write_count"
+             description="Number of objects data written to memory, read from pipe 0 only"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 50 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Bank Conflict Count"
+             symbol_name="SLM_BANK_CONFLICT_COUNT"
+             underscore_name="slm_bank_conflict_count"
+             description="Number of SLM accesses resulting in a bank conflict"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 4 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Compressor Input"
+             symbol_name="COMPRESSOR_INPUT"
+             underscore_name="compressor_input"
+             description="Number of 256B writes to compressible surfaces at the input of the compressor"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 51 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Compressor Output"
+             symbol_name="COMPRESSOR_OUTPUT"
+             underscore_name="compressor_output"
+             description="Number of 256B writes to compressible surfaces at the output of the compressor"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 52 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TLB Miss"
+             symbol_name="TLB_MISS"
+             underscore_name="tlb_miss"
+             description="Number of misses from all TLBs and all engines"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 53 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler 2x2 Read"
+             symbol_name="SAMPLER_2X2_READ"
+             underscore_name="sampler_2_x2_read"
+             description="Number of 2x2 texel block requested from Sampler"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 5 READ"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texture Cache Access"
+             symbol_name="SAMPLER_TEXTURE_CACHE_ACCESS"
+             underscore_name="sampler_texture_cache_access"
+             description="Number of Sampler L1 requests"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 6 READ"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Texture Cache Miss"
+             symbol_name="SAMPLER_TEXTURE_CACHE_MISS"
+             underscore_name="sampler_texture_cache_miss"
+             description="Number of Sampler L1 misses"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 21 READ"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="URB Read"
+             symbol_name="URB_READ"
+             underscore_name="urb_read"
+             description="Number of URB reads"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 55 READ"
+             mdapi_group="URB"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="URB Write"
+             symbol_name="URB_WRITE"
+             underscore_name="urb_write"
+             description="Number of URB writes"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 56 READ"
+             mdapi_group="URB"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="ICache Hit"
+             symbol_name="ICACHE_HIT"
+             underscore_name="icache_hit"
+             description="Number of Instruction Cache hits"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 22 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="ICache Miss"
+             symbol_name="ICACHE_MISS"
+             underscore_name="icache_miss"
+             description="Number of Instruction Cache misses"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 23 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Active"
+             symbol_name="XVE_ACTIVE"
+             underscore_name="xve_active"
+             description="Percentage of time in which at least one pipe is active in XVE"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 24 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU0 All"
+             symbol_name="XVE_INST_EXECUTED_ALU0_ALL"
+             underscore_name="xve_inst_executed_alu0_all"
+             description="Number of execution slots taken by instructions executed by ALL threads on ALU0 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 25 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU1 All"
+             symbol_name="XVE_INST_EXECUTED_ALU1_ALL"
+             underscore_name="xve_inst_executed_alu1_all"
+             description="Number of execution slots taken by instructions executed by ALL threads on ALU1 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 26 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed Send All"
+             symbol_name="XVE_INST_EXECUTED_SEND_ALL"
+             underscore_name="xve_inst_executed_send_all"
+             description="Number of instruction (GRF) dispatches executed by ALL threads on SEND Pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 7 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU0 CS"
+             symbol_name="XVE_INST_EXECUTED_ALU0_CS"
+             underscore_name="xve_inst_executed_alu0_cs"
+             description="Number of execution slots taken by instructions executed by CS threads on ALU0 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 8 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU0 PS"
+             symbol_name="XVE_INST_EXECUTED_ALU0_PS"
+             underscore_name="xve_inst_executed_alu0_ps"
+             description="Number of execution slots taken by instructions executed by PS threads on ALU0 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 9 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU0 VS"
+             symbol_name="XVE_INST_EXECUTED_ALU0_VS"
+             underscore_name="xve_inst_executed_alu0_vs"
+             description="Number of execution slots taken by instructions executed by VS threads on ALU0 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 10 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU1 CS"
+             symbol_name="XVE_INST_EXECUTED_ALU1_CS"
+             underscore_name="xve_inst_executed_alu1_cs"
+             description="Number of execution slots taken by instructions executed by CS threads on ALU1 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 11 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU1 PS"
+             symbol_name="XVE_INST_EXECUTED_ALU1_PS"
+             underscore_name="xve_inst_executed_alu1_ps"
+             description="Number of execution slots taken by instructions executed by PS threads on ALU1 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 12 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU1 VS"
+             symbol_name="XVE_INST_EXECUTED_ALU1_VS"
+             underscore_name="xve_inst_executed_alu1_vs"
+             description="Number of execution slots taken by instructions executed by VS threads on ALU1 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 13 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Shared Function Access Hold"
+             symbol_name="XVE_SHARED_FUNCTION_ACCESS_HOLD"
+             underscore_name="xve_shared_function_access_hold"
+             description="Percentage of time in which XVE requests stalled by Shared Function units"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 27 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT BVH Cache Miss"
+             symbol_name="RT_BVH_CACHE_MISS"
+             underscore_name="rt_bvh_cache_miss"
+             description="Number of BVH cache misses for RayQuery only"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 28 READ"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Input Message Ray Count"
+             symbol_name="RT_INPUT_MESSAGE_RAY_COUNT"
+             underscore_name="rt_input_message_ray_count"
+             description="Number of valid SIMD lanes in the TraceRay message"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 29 READ"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache Hit"
+             symbol_name="LOAD_STORE_CACHE_HIT"
+             underscore_name="load_store_cache_hit"
+             description="Number of Load Store Cache hits"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 30 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache Access"
+             symbol_name="LOAD_STORE_CACHE_ACCESS"
+             underscore_name="load_store_cache_access"
+             description="Number of Load Store Cache accesses"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 31 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Threads Occupancy All"
+             symbol_name="XVE_THREADS_OCCUPANCY_ALL"
+             underscore_name="xve_threads_occupancy_all"
+             description="Percentage of thread slots occupied by ALL threads"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 14 READ 8 UMUL $VectorEngineThreadsCount $VectorEngineTotalCount UMUL UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Issued All"
+             symbol_name="XVE_INST_ISSUED_ALL"
+             underscore_name="xve_inst_issued_all"
+             description="Number of instructions issued (decoded) to any pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 15 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory Byte Read"
+             symbol_name="GPU_MEMORY_BYTE_READ"
+             underscore_name="gpu_memory_byte_read"
+             description="Number of device local memory (HBM, GDDR, LPDDR, etc.) read bytes"
+             data_type="uint64"
+             units="bytes"
+             semantic_type="event"
+             equation="PEC 57 READ 2 UMUL"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory Byte Write"
+             symbol_name="GPU_MEMORY_BYTE_WRITE"
+             underscore_name="gpu_memory_byte_write"
+             description="Number of device local memory (HBM, GDDR, LPDDR, etc.) write bytes"
+             data_type="uint64"
+             units="bytes"
+             semantic_type="event"
+             equation="PEC 58 READ 2 UMUL"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache Byte Read"
+             symbol_name="LOAD_STORE_CACHE_BYTE_READ"
+             underscore_name="load_store_cache_byte_read"
+             description="Number of bytes read out of the Load Store Cache, excluding SLM accesses"
+             data_type="uint64"
+             units="bytes"
+             semantic_type="event"
+             equation="PEC 16 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache Byte Write"
+             symbol_name="LOAD_STORE_CACHE_BYTE_WRITE"
+             underscore_name="load_store_cache_byte_write"
+             description="Number of bytes written to the Load Store Cache, excluding SLM accesses"
+             data_type="uint64"
+             units="bytes"
+             semantic_type="event"
+             equation="PEC 17 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Byte Read"
+             symbol_name="SLM_BYTE_READ"
+             underscore_name="slm_byte_read"
+             description="Number of bytes read from SLM"
+             data_type="uint64"
+             units="bytes"
+             semantic_type="event"
+             equation="PEC 18 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Byte Write"
+             symbol_name="SLM_BYTE_WRITE"
+             underscore_name="slm_byte_write"
+             description="Number of bytes written to SLM"
+             data_type="uint64"
+             units="bytes"
+             semantic_type="event"
+             equation="PEC 19 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory Byte Read Rate"
+             symbol_name="GPU_MEMORY_BYTE_READ_RATE"
+             underscore_name="gpu_memory_byte_read_rate"
+             description="Device local memory (HBM, GDDR, LPDDR, etc.) read bandwidth"
+             data_type="float"
+             units="gbps"
+             semantic_type="throughput"
+             equation="PEC 57 READ 2 UMUL $GpuTime FDIV"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory Byte Write Rate"
+             symbol_name="GPU_MEMORY_BYTE_WRITE_RATE"
+             underscore_name="gpu_memory_byte_write_rate"
+             description="Device local memory (HBM, GDDR, LPDDR, etc.) write bandwidth"
+             data_type="float"
+             units="gbps"
+             semantic_type="throughput"
+             equation="PEC 58 READ 2 UMUL $GpuTime FDIV"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Stall"
+             symbol_name="XVE_STALL"
+             underscore_name="xve_stall"
+             description="Percentage of time in which any thread loaded but not even a single pipe is active in XVE"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 20 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU0 All Utilization"
+             symbol_name="XVE_INST_EXECUTED_ALU0_ALL_UTILIZATION"
+             underscore_name="xve_inst_executed_alu0_all_utilization"
+             description="Percentage of time taken by instructions executed by ALL threads on ALU0 pipe"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 25 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU1 All Utilization"
+             symbol_name="XVE_INST_EXECUTED_ALU1_ALL_UTILIZATION"
+             underscore_name="xve_inst_executed_alu1_all_utilization"
+             description="Percentage of time taken by instructions executed by ALL threads on ALU1 pipe"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 26 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
     <register_config type="OA">
         <register type="OA" address="0x00013000" value="0x00001801" />
         <register type="OA" address="0x00013004" value="0x00000000" />
@@ -263,7 +1096,7 @@
        symbol_name="ComputeBasic"
        underscore_name="compute_basic"
        mdapi_supported_apis="VK OGL OCL IO"
-       oa_format="256B_GENERIC_NOA16"
+       oa_format="576B_PEC64LL"
        hw_config_guid="72539be3-67d9-4101-b067-766b7811d2bb"
        >
     <counter name="GPU Time Elapsed"
@@ -279,6 +1112,709 @@
              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="GPU Busy"
+             symbol_name="GPU_BUSY"
+             underscore_name="gpu_busy"
+             description="Percentage of time in which GPU is not idle including all GPU engines"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 32 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="IA Vertex"
+             symbol_name="IA_VERTEX"
+             underscore_name="ia_vertex"
+             description="Number of vertices in a draw"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 33 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GpGpu Threadgroup Count"
+             symbol_name="GPGPU_THREADGROUP_COUNT"
+             underscore_name="gpgpu_threadgroup_count"
+             description="Number of GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 0 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Async GpGpu Threadgroup Count"
+             symbol_name="ASYNC_GPGPU_THREADGROUP_COUNT"
+             underscore_name="async_gpgpu_threadgroup_count"
+             description="Number of Async GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 1 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Rasterizer Sample Output"
+             symbol_name="RASTERIZER_SAMPLE_OUTPUT"
+             underscore_name="rasterizer_sample_output"
+             description="Number of lit samples emitted by Rasterizer"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 34 READ"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="ICache Hit"
+             symbol_name="ICACHE_HIT"
+             underscore_name="icache_hit"
+             description="Number of Instruction Cache hits"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 2 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="ICache Miss"
+             symbol_name="ICACHE_MISS"
+             underscore_name="icache_miss"
+             description="Number of Instruction Cache misses"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 3 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Active"
+             symbol_name="XVE_ACTIVE"
+             underscore_name="xve_active"
+             description="Percentage of time in which at least one pipe is active in XVE"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 4 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU0 All"
+             symbol_name="XVE_INST_EXECUTED_ALU0_ALL"
+             underscore_name="xve_inst_executed_alu0_all"
+             description="Number of execution slots taken by instructions executed by ALL threads on ALU0 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 5 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU1 All"
+             symbol_name="XVE_INST_EXECUTED_ALU1_ALL"
+             underscore_name="xve_inst_executed_alu1_all"
+             description="Number of execution slots taken by instructions executed by ALL threads on ALU1 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 6 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed Send All"
+             symbol_name="XVE_INST_EXECUTED_SEND_ALL"
+             underscore_name="xve_inst_executed_send_all"
+             description="Number of instruction (GRF) dispatches executed by ALL threads on SEND Pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 7 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Issued All"
+             symbol_name="XVE_INST_ISSUED_ALL"
+             underscore_name="xve_inst_issued_all"
+             description="Number of instructions issued (decoded) to any pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 21 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Shared Function Access Hold"
+             symbol_name="XVE_SHARED_FUNCTION_ACCESS_HOLD"
+             underscore_name="xve_shared_function_access_hold"
+             description="Percentage of time in which XVE requests stalled by Shared Function units"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 22 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Stall"
+             symbol_name="XVE_STALL"
+             underscore_name="xve_stall"
+             description="Percentage of time in which any thread loaded but not even a single pipe is active in XVE"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 23 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Threads Occupancy All"
+             symbol_name="XVE_THREADS_OCCUPANCY_ALL"
+             underscore_name="xve_threads_occupancy_all"
+             description="Percentage of thread slots occupied by ALL threads"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 8 READ 8 UMUL $VectorEngineThreadsCount $VectorEngineTotalCount UMUL UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU2 All"
+             symbol_name="XVE_INST_EXECUTED_ALU2_ALL"
+             underscore_name="xve_inst_executed_alu2_all"
+             description="Number of execution slots taken by instructions executed in ALU2 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 24 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Multiple Pipe Active"
+             symbol_name="XVE_MULTIPLE_PIPE_ACTIVE"
+             underscore_name="xve_multiple_pipe_active"
+             description="Percentage of time in which at least two pipes are actively executing a Gen ISA instruction among ALU0, ALU1 and ALU2 pipes"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 25 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache Partial Write Count"
+             symbol_name="LOAD_STORE_CACHE_PARTIAL_WRITE_COUNT"
+             underscore_name="load_store_cache_partial_write_count"
+             description="Number of writes to the Load Store Cache that don't fill a subsector"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 26 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Bank Conflict Count"
+             symbol_name="SLM_BANK_CONFLICT_COUNT"
+             underscore_name="slm_bank_conflict_count"
+             description="Number of SLM accesses resulting in a bank conflict"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 27 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Byte Read"
+             symbol_name="SLM_BYTE_READ"
+             underscore_name="slm_byte_read"
+             description="Number of bytes read from SLM"
+             data_type="uint64"
+             units="bytes"
+             semantic_type="event"
+             equation="PEC 28 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Byte Write"
+             symbol_name="SLM_BYTE_WRITE"
+             underscore_name="slm_byte_write"
+             description="Number of bytes written to SLM"
+             data_type="uint64"
+             units="bytes"
+             semantic_type="event"
+             equation="PEC 29 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache Byte Read"
+             symbol_name="LOAD_STORE_CACHE_BYTE_READ"
+             underscore_name="load_store_cache_byte_read"
+             description="Number of bytes read out of the Load Store Cache, excluding SLM accesses"
+             data_type="uint64"
+             units="bytes"
+             semantic_type="event"
+             equation="PEC 30 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache Byte Write"
+             symbol_name="LOAD_STORE_CACHE_BYTE_WRITE"
+             underscore_name="load_store_cache_byte_write"
+             description="Number of bytes written to the Load Store Cache, excluding SLM accesses"
+             data_type="uint64"
+             units="bytes"
+             semantic_type="event"
+             equation="PEC 31 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache Access"
+             symbol_name="LOAD_STORE_CACHE_ACCESS"
+             underscore_name="load_store_cache_access"
+             description="Number of Load Store Cache accesses"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 9 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache Hit"
+             symbol_name="LOAD_STORE_CACHE_HIT"
+             underscore_name="load_store_cache_hit"
+             description="Number of Load Store Cache hits"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 10 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Atomic Access"
+             symbol_name="L3_ATOMIC_ACCESS"
+             underscore_name="l3_atomic_access"
+             description="Number of atomic accesses to Device Cache bank"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 35 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Hit"
+             symbol_name="L3_HIT"
+             underscore_name="l3_hit"
+             description="Number of Device Cache accesses (except atomics) which hits in the Device Cache cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 36 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Miss"
+             symbol_name="L3_MISS"
+             underscore_name="l3_miss"
+             description="Number of Device Cache accesses (except atomics) which miss in the Device Cache cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 37 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Read"
+             symbol_name="L3_READ"
+             underscore_name="l3_read"
+             description="Number of Device Cache 64B read requests"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 38 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Write"
+             symbol_name="L3_WRITE"
+             underscore_name="l3_write"
+             description="Number of Device Cache 64B write requests"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 39 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Compressor Input"
+             symbol_name="COMPRESSOR_INPUT"
+             underscore_name="compressor_input"
+             description="Number of 256B writes to compressible surfaces at the input of the compressor"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 41 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Compressor Output"
+             symbol_name="COMPRESSOR_OUTPUT"
+             underscore_name="compressor_output"
+             description="Number of 256B writes to compressible surfaces at the output of the compressor"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 42 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory Byte Read"
+             symbol_name="GPU_MEMORY_BYTE_READ"
+             underscore_name="gpu_memory_byte_read"
+             description="Number of device local memory (HBM, GDDR, LPDDR, etc.) read bytes"
+             data_type="uint64"
+             units="bytes"
+             semantic_type="event"
+             equation="PEC 43 READ 2 UMUL"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory Byte Write"
+             symbol_name="GPU_MEMORY_BYTE_WRITE"
+             underscore_name="gpu_memory_byte_write"
+             description="Number of device local memory (HBM, GDDR, LPDDR, etc.) write bytes"
+             data_type="uint64"
+             units="bytes"
+             semantic_type="event"
+             equation="PEC 44 READ 2 UMUL"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory Byte Read Rate"
+             symbol_name="GPU_MEMORY_BYTE_READ_RATE"
+             underscore_name="gpu_memory_byte_read_rate"
+             description="Device local memory (HBM, GDDR, LPDDR, etc.) read bandwidth"
+             data_type="float"
+             units="gbps"
+             semantic_type="throughput"
+             equation="PEC 43 READ 2 UMUL $GpuTime FDIV"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory Byte Write Rate"
+             symbol_name="GPU_MEMORY_BYTE_WRITE_RATE"
+             underscore_name="gpu_memory_byte_write_rate"
+             description="Device local memory (HBM, GDDR, LPDDR, etc.) write bandwidth"
+             data_type="float"
+             units="gbps"
+             semantic_type="throughput"
+             equation="PEC 44 READ 2 UMUL $GpuTime FDIV"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory L3 Read"
+             symbol_name="GPU_MEMORY_L3_READ"
+             underscore_name="gpu_memory_l3_read"
+             description="Number of GTI memory reads from Device Cache caused by Device Cache misses"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 45 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory L3 Write"
+             symbol_name="GPU_MEMORY_L3_WRITE"
+             underscore_name="gpu_memory_l3_write"
+             description="Number of GTI memory writes from Device Cache caused by Device Cache invalidations"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 46 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TLB Miss"
+             symbol_name="TLB_MISS"
+             underscore_name="tlb_miss"
+             description="Number of misses from all TLBs and all engines"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 48 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Async GpGpu Thread Exit Count"
+             symbol_name="ASYNC_GPGPU_THREAD_EXIT_COUNT"
+             underscore_name="async_gpgpu_thread_exit_count"
+             description="Number of Async GPGPU EOT messages received"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="PEC 11 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GpGpu Dispatch"
+             symbol_name="GPGPU_DISPATCH"
+             underscore_name="gpgpu_dispatch"
+             description="Percentage of time in which spent dispatching GPGPU threads to XVEs"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 12 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Command Parser Compute Engine Busy"
+             symbol_name="COMMAND_PARSER_COMPUTE_ENGINE_BUSY"
+             underscore_name="command_parser_compute_engine_busy"
+             description="Percentage of time in which there is a context loaded and active on the compute queue"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 49 READ $ComputeEngineTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Command Parser Compute Engine Dispatch Kernel Count"
+             symbol_name="COMMAND_PARSER_COMPUTE_ENGINE_DISPATCH_KERNEL_COUNT"
+             underscore_name="command_parser_compute_engine_dispatch_kernel_count"
+             description="Number of compute walker commands parsed on the compute engine"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 50 READ"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Command Parser Copy Engine Busy"
+             symbol_name="COMMAND_PARSER_COPY_ENGINE_BUSY"
+             underscore_name="command_parser_copy_engine_busy"
+             description="Percentage of time in which there is a context loaded and active on the copy queue."
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 51 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Command Parser Flush Count"
+             symbol_name="COMMAND_PARSER_FLUSH_COUNT"
+             underscore_name="command_parser_flush_count"
+             description="Number of Stalling flushes at the top of the pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 52 READ"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Command Parser Render Engine Busy"
+             symbol_name="COMMAND_PARSER_RENDER_ENGINE_BUSY"
+             underscore_name="command_parser_render_engine_busy"
+             description="Percentage of time in which there is a context loaded and active on the 3D queue"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 53 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Command Parser Render Engine Dispatch Kernel Count"
+             symbol_name="COMMAND_PARSER_RENDER_ENGINE_DISPATCH_KERNEL_COUNT"
+             underscore_name="command_parser_render_engine_dispatch_kernel_count"
+             description="Number of compute walker commands parsed on the 3D engine"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 54 READ"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Pipe ALU0 And ALU1 Active"
+             symbol_name="XVE_PIPE_ALU0_AND_ALU1_ACTIVE"
+             underscore_name="xve_pipe_alu0_and_alu1_active"
+             description="Percentage of time in which ALU0 and ALU1 pipes are both actively executing a Gen ISA instruction"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 13 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Pipe ALU0 And ALU2 Active"
+             symbol_name="XVE_PIPE_ALU0_AND_ALU2_ACTIVE"
+             underscore_name="xve_pipe_alu0_and_alu2_active"
+             description="Percentage of time in which ALU0 and ALU2 pipes are both actively executing a Gen ISA instruction"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 14 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU0 All Utilization"
+             symbol_name="XVE_INST_EXECUTED_ALU0_ALL_UTILIZATION"
+             underscore_name="xve_inst_executed_alu0_all_utilization"
+             description="Percentage of time taken by instructions executed by ALL threads on ALU0 pipe"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 5 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU1 All Utilization"
+             symbol_name="XVE_INST_EXECUTED_ALU1_ALL_UTILIZATION"
+             underscore_name="xve_inst_executed_alu1_all_utilization"
+             description="Percentage of time taken by instructions executed by ALL threads on ALU1 pipe"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 6 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU2 All Utilization"
+             symbol_name="XVE_INST_EXECUTED_ALU2_ALL_UTILIZATION"
+             underscore_name="xve_inst_executed_alu2_all_utilization"
+             description="Percentage of time taken by instructions executed in ALU2 pipe"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 24 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
     <register_config type="OA">
         <register type="OA" address="0x00013000" value="0x00001801" />
         <register type="OA" address="0x00013004" value="0x00000000" />
@@ -481,7 +2017,7 @@
        symbol_name="DepthProfile"
        underscore_name="depth_profile"
        mdapi_supported_apis="VK OGL OCL IO"
-       oa_format="256B_GENERIC_NOA16"
+       oa_format="576B_PEC64LL"
        hw_config_guid="cae0b2ca-c52a-4111-b8bf-5af070677d57"
        >
     <counter name="GPU Time Elapsed"
@@ -497,6 +2033,332 @@
              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="GPU Busy"
+             symbol_name="GPU_BUSY"
+             underscore_name="gpu_busy"
+             description="Percentage of time in which GPU is not idle including all GPU engines"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 32 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="IA Vertex"
+             symbol_name="IA_VERTEX"
+             underscore_name="ia_vertex"
+             description="Number of vertices in a draw"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 33 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GpGpu Threadgroup Count"
+             symbol_name="GPGPU_THREADGROUP_COUNT"
+             underscore_name="gpgpu_threadgroup_count"
+             description="Number of GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 0 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Async GpGpu Threadgroup Count"
+             symbol_name="ASYNC_GPGPU_THREADGROUP_COUNT"
+             underscore_name="async_gpgpu_threadgroup_count"
+             description="Number of Async GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 1 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Rasterizer Sample Output"
+             symbol_name="RASTERIZER_SAMPLE_OUTPUT"
+             underscore_name="rasterizer_sample_output"
+             description="Number of lit samples emitted by Rasterizer"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 34 READ"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Depth Stencil Test Fail Np"
+             symbol_name="EARLY_DEPTH_STENCIL_TEST_FAIL_NP"
+             underscore_name="early_depth_stencil_test_fail_np"
+             description="Number of non-promoted 2x2 that failed Depth / Stencil before the Pixel Shader that were previously ambiguous at HiZ"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 35 READ"
+             mdapi_group="Depth Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Early Depth Stencil Test Fail P"
+             symbol_name="EARLY_DEPTH_STENCIL_TEST_FAIL_P"
+             underscore_name="early_depth_stencil_test_fail_p"
+             description="Number of promoted 2x2 that failed Depth / Stencil that were previously ambiguous at HiZ"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 36 READ"
+             mdapi_group="Depth Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="HiZ Depth Test Ambig Np"
+             symbol_name="HIZ_DEPTH_TEST_AMBIG_NP"
+             underscore_name="hiz_depth_test_ambig_np"
+             description="Number of non-promoted 2x2 that are ambiguous by hierarchical depth test"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 37 READ"
+             mdapi_group="Depth Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="HiZ Depth Test Ambig P"
+             symbol_name="HIZ_DEPTH_TEST_AMBIG_P"
+             underscore_name="hiz_depth_test_ambig_p"
+             description="Number of promoted 2x2 that are ambiguous by hierarchical depth test"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 38 READ"
+             mdapi_group="Depth Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="HiZ Depth Test Fail Np"
+             symbol_name="HIZ_DEPTH_TEST_FAIL_NP"
+             underscore_name="hiz_depth_test_fail_np"
+             description="Number of non-promoted 2x2 that failed the hierarchical depth test"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 39 READ"
+             mdapi_group="Depth Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="HiZ Depth Test Fail P"
+             symbol_name="HIZ_DEPTH_TEST_FAIL_P"
+             underscore_name="hiz_depth_test_fail_p"
+             description="Number of promoted 2x2 that failed the hierarchical depth test"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 40 READ"
+             mdapi_group="Depth Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="HiZ Depth Test Pass P"
+             symbol_name="HIZ_DEPTH_TEST_PASS_P"
+             underscore_name="hiz_depth_test_pass_p"
+             description="Number of promoted 2x2 passed by hierarchical depth test"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 41 READ"
+             mdapi_group="Depth Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="HiZ Subspan Latency Fifofull"
+             symbol_name="HIZ_SUBSPAN_LATENCY_FIFOFULL"
+             underscore_name="hiz_subspan_latency_fifofull"
+             description="Percentage of time in which for which HiZ latency hiding structure full"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 42 READ $SliceTotalCount 2 UMUL UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Depth Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="IZ Output Ready"
+             symbol_name="IZ_OUTPUT_READY"
+             underscore_name="iz_output_ready"
+             description="Percentage of time in which IZ has requests to different clients"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 43 READ $SliceTotalCount 2 UMUL UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Depth Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="IZ Subspan Latency Fifofull"
+             symbol_name="IZ_SUBSPAN_LATENCY_FIFOFULL"
+             underscore_name="iz_subspan_latency_fifofull"
+             description="Percentage of time in which for which IZ latency hiding structure full"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 44 READ $SliceTotalCount 2 UMUL UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Depth Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="PostPS Depth Stencil Test Fail"
+             symbol_name="POSTPS_DEPTH_STENCIL_TEST_FAIL"
+             underscore_name="postps_depth_stencil_test_fail"
+             description="Number of 2x2 that were lit from Rasterizer but failed the depth or stencil test post shader"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 45 READ"
+             mdapi_group="Depth Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Render Cache Alloc"
+             symbol_name="RENDER_CACHE_ALLOC"
+             underscore_name="render_cache_alloc"
+             description="Number of Render Cache allocations"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 46 READ"
+             mdapi_group="Color Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Render Cache Hit"
+             symbol_name="RENDER_CACHE_HIT"
+             underscore_name="render_cache_hit"
+             description="Number of Render Cache hits"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 47 READ"
+             mdapi_group="Color Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Render Cache Read"
+             symbol_name="RENDER_CACHE_READ"
+             underscore_name="render_cache_read"
+             description="Number of Render Cache reads"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 48 READ"
+             mdapi_group="Color Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Render Cache Write"
+             symbol_name="RENDER_CACHE_WRITE"
+             underscore_name="render_cache_write"
+             description="Number of Render Cache writes"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 49 READ"
+             mdapi_group="Color Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="URB Cross Slice Read"
+             symbol_name="URB_CROSS_SLICE_READ"
+             underscore_name="urb_cross_slice_read"
+             description="Number of URB reads occurred from cross slices"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 50 READ"
+             mdapi_group="URB"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Pixel 2x2 Lit Post Rasterizer Early Depth"
+             symbol_name="PIXEL_2X2_LIT_POST_RASTERIZER_EARLY_DEPTH"
+             underscore_name="pixel_2_x2_lit_post_rasterizer_early_depth"
+             description="Number of promoted 2x2 that are lit from Rasterizer"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 51 READ"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Pixel 2x2 Lit Post Rasterizer Late Depth"
+             symbol_name="PIXEL_2X2_LIT_POST_RASTERIZER_LATE_DEPTH"
+             underscore_name="pixel_2_x2_lit_post_rasterizer_late_depth"
+             description="Number of non-promoted 2x2 that are lit from Rasterizer"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 52 READ"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
     <register_config type="OA">
         <register type="OA" address="0x00013000" value="0x00001801" />
         <register type="OA" address="0x00013004" value="0x00000000" />
@@ -642,7 +2504,7 @@
        symbol_name="DeviceCacheProfile"
        underscore_name="device_cache_profile"
        mdapi_supported_apis="VK OGL OCL IO"
-       oa_format="256B_GENERIC_NOA16"
+       oa_format="576B_PEC64LL"
        hw_config_guid="70cc56cf-3a37-4f6c-8911-4455fe441b2a"
        >
     <counter name="GPU Time Elapsed"
@@ -650,11 +2512,415 @@
              underscore_name="gpu_time"
              description="Time elapsed on the GPU during the measurement."
              data_type="uint64"
-             units="ns"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="GPU Busy"
+             symbol_name="GPU_BUSY"
+             underscore_name="gpu_busy"
+             description="Percentage of time in which GPU is not idle including all GPU engines"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 32 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="IA Vertex"
+             symbol_name="IA_VERTEX"
+             underscore_name="ia_vertex"
+             description="Number of vertices in a draw"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 33 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GpGpu Threadgroup Count"
+             symbol_name="GPGPU_THREADGROUP_COUNT"
+             underscore_name="gpgpu_threadgroup_count"
+             description="Number of GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 0 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Async GpGpu Threadgroup Count"
+             symbol_name="ASYNC_GPGPU_THREADGROUP_COUNT"
+             underscore_name="async_gpgpu_threadgroup_count"
+             description="Number of Async GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 1 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Rasterizer Sample Output"
+             symbol_name="RASTERIZER_SAMPLE_OUTPUT"
+             underscore_name="rasterizer_sample_output"
+             description="Number of lit samples emitted by Rasterizer"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 34 READ"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="AMFS L3 Access"
+             symbol_name="AMFS_L3_ACCESS"
+             underscore_name="amfs_l3_access"
+             description="Number of AMFS access to Device Cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 35 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="AMFS L3 Atomic"
+             symbol_name="AMFS_L3_ATOMIC"
+             underscore_name="amfs_l3_atomic"
+             description="Number of AMFS atomics to Device Cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 36 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="AMFS L3 Hit"
+             symbol_name="AMFS_L3_HIT"
+             underscore_name="amfs_l3_hit"
+             description="Number of AMFS hits (except atomics) in Device Cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 37 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="AMFS L3 Write"
+             symbol_name="AMFS_L3_WRITE"
+             underscore_name="amfs_l3_write"
+             description="Number of AMFS writes to Device Cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 38 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Color L3 Access"
+             symbol_name="COLOR_L3_ACCESS"
+             underscore_name="color_l3_access"
+             description="Number of Device Cache requests resulting from color local cache misses"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 39 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Color L3 Hit"
+             symbol_name="COLOR_L3_HIT"
+             underscore_name="color_l3_hit"
+             description="Number of Device Cache requests resulting from color local cache miss which hits in Device Cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 40 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="ICache L3 Hit"
+             symbol_name="ICACHE_L3_HIT"
+             underscore_name="icache_l3_hit"
+             description="Number of XVE instruction cache requests that hit the Device Cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 41 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="ICache L3 Read"
+             symbol_name="ICACHE_L3_READ"
+             underscore_name="icache_l3_read"
+             description="Number of Device Cache read requests coming from XVE Instruction Cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 42 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache L3 Hit"
+             symbol_name="LOAD_STORE_CACHE_L3_HIT"
+             underscore_name="load_store_cache_l3_hit"
+             description="Number of Load Store Cache requests (except atomics) to Device Cache that are hit"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 43 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache L3 Read"
+             symbol_name="LOAD_STORE_CACHE_L3_READ"
+             underscore_name="load_store_cache_l3_read"
+             description="Number of cacheline read requests from the Load Store Cache to Device Cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 44 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache L3 Write"
+             symbol_name="LOAD_STORE_CACHE_L3_WRITE"
+             underscore_name="load_store_cache_l3_write"
+             description="Number of cacheline write requests from the Load Store Cache to Device Cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 45 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler L3 Hit"
+             symbol_name="SAMPLER_L3_HIT"
+             underscore_name="sampler_l3_hit"
+             description="Number of Device Cache hit requests resulting from sampler local cache miss which hits in Device Cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 46 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler L3 Read"
+             symbol_name="SAMPLER_L3_READ"
+             underscore_name="sampler_l3_read"
+             description="Number of Device Cache read requests resulting from sampler local cache miss"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 47 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Z L3 Access"
+             symbol_name="Z_L3_ACCESS"
+             underscore_name="z_l3_access"
+             description="Number of Device Cache requests resulting from Z local cache misses"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 48 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Z L3 Hit"
+             symbol_name="Z_L3_HIT"
+             underscore_name="z_l3_hit"
+             description="Number of Device Cache requests resulting from Z local cache miss which hits in Device Cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 49 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Atomic Access"
+             symbol_name="L3_ATOMIC_ACCESS"
+             underscore_name="l3_atomic_access"
+             description="Number of atomic accesses to Device Cache bank"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 54 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Hit"
+             symbol_name="L3_HIT"
+             underscore_name="l3_hit"
+             description="Number of Device Cache accesses (except atomics) which hits in the Device Cache cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 55 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Miss"
+             symbol_name="L3_MISS"
+             underscore_name="l3_miss"
+             description="Number of Device Cache accesses (except atomics) which miss in the Device Cache cache"
+             data_type="uint64"
+             units="events"
              semantic_type="event"
-             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
-             mdapi_group="GPU"
-             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             equation="PEC 56 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Read"
+             symbol_name="L3_READ"
+             underscore_name="l3_read"
+             description="Number of Device Cache 64B read requests"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 57 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Write"
+             symbol_name="L3_WRITE"
+             underscore_name="l3_write"
+             description="Number of Device Cache 64B write requests"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 59 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory L3 Read"
+             symbol_name="GPU_MEMORY_L3_READ"
+             underscore_name="gpu_memory_l3_read"
+             description="Number of GTI memory reads from Device Cache caused by Device Cache misses"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 60 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory L3 Write"
+             symbol_name="GPU_MEMORY_L3_WRITE"
+             underscore_name="gpu_memory_l3_write"
+             description="Number of GTI memory writes from Device Cache caused by Device Cache invalidations"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 61 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory Read"
+             symbol_name="GPU_MEMORY_READ"
+             underscore_name="gpu_memory_read"
+             description="Number of GTI memory reads"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 62 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory Write"
+             symbol_name="GPU_MEMORY_WRITE"
+             underscore_name="gpu_memory_write"
+             description="Number of GTI memory writes"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 63 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
              mdapi_supported_apis=""
              mdapi_hw_unit_type="gpu"
              />
@@ -863,7 +3129,7 @@
        symbol_name="MemoryProfile"
        underscore_name="memory_profile"
        mdapi_supported_apis="VK OGL OCL IO"
-       oa_format="256B_GENERIC_NOA16"
+       oa_format="576B_PEC64LL"
        hw_config_guid="01ffd51d-a6d6-4ff4-93d0-619f04c3a547"
        >
     <counter name="GPU Time Elapsed"
@@ -871,11 +3137,662 @@
              underscore_name="gpu_time"
              description="Time elapsed on the GPU during the measurement."
              data_type="uint64"
-             units="ns"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="GPU Busy"
+             symbol_name="GPU_BUSY"
+             underscore_name="gpu_busy"
+             description="Percentage of time in which GPU is not idle including all GPU engines"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 32 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="IA Vertex"
+             symbol_name="IA_VERTEX"
+             underscore_name="ia_vertex"
+             description="Number of vertices in a draw"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 33 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GpGpu Threadgroup Count"
+             symbol_name="GPGPU_THREADGROUP_COUNT"
+             underscore_name="gpgpu_threadgroup_count"
+             description="Number of GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 0 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Async GpGpu Threadgroup Count"
+             symbol_name="ASYNC_GPGPU_THREADGROUP_COUNT"
+             underscore_name="async_gpgpu_threadgroup_count"
+             description="Number of Async GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 1 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Rasterizer Sample Output"
+             symbol_name="RASTERIZER_SAMPLE_OUTPUT"
+             underscore_name="rasterizer_sample_output"
+             description="Number of lit samples emitted by Rasterizer"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 34 READ"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Compressor Input"
+             symbol_name="COMPRESSOR_INPUT"
+             underscore_name="compressor_input"
+             description="Number of 256B writes to compressible surfaces at the input of the compressor"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 35 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Compressor Output"
+             symbol_name="COMPRESSOR_OUTPUT"
+             underscore_name="compressor_output"
+             description="Number of 256B writes to compressible surfaces at the output of the compressor"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 36 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory 32b Transaction Read"
+             symbol_name="GPU_MEMORY_32B_TRANSACTION_READ"
+             underscore_name="gpu_memory_32_b_transaction_read"
+             description="Number of device local memory (HBM, GDDR, LPDDR, etc.) reads (32B)"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 37 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory 32b Transaction Write"
+             symbol_name="GPU_MEMORY_32B_TRANSACTION_WRITE"
+             underscore_name="gpu_memory_32_b_transaction_write"
+             description="Number of device local memory (HBM, GDDR, LPDDR, etc.) writes (32B)"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 38 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory 64b Transaction Read"
+             symbol_name="GPU_MEMORY_64B_TRANSACTION_READ"
+             underscore_name="gpu_memory_64_b_transaction_read"
+             description="Number of device local memory (HBM, GDDR, LPDDR, etc.) reads (64B)"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 39 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory 64b Transaction Write"
+             symbol_name="GPU_MEMORY_64B_TRANSACTION_WRITE"
+             underscore_name="gpu_memory_64_b_transaction_write"
+             description="Number of device local memory (HBM, GDDR, LPDDR, etc.) writes (64B)"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 40 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory Byte Read"
+             symbol_name="GPU_MEMORY_BYTE_READ"
+             underscore_name="gpu_memory_byte_read"
+             description="Number of device local memory (HBM, GDDR, LPDDR, etc.) read bytes"
+             data_type="uint64"
+             units="bytes"
+             semantic_type="event"
+             equation="PEC 41 READ 2 UMUL"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory Byte Write"
+             symbol_name="GPU_MEMORY_BYTE_WRITE"
+             underscore_name="gpu_memory_byte_write"
+             description="Number of device local memory (HBM, GDDR, LPDDR, etc.) write bytes"
+             data_type="uint64"
+             units="bytes"
+             semantic_type="event"
+             equation="PEC 42 READ 2 UMUL"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory Byte Read Rate"
+             symbol_name="GPU_MEMORY_BYTE_READ_RATE"
+             underscore_name="gpu_memory_byte_read_rate"
+             description="Device local memory (HBM, GDDR, LPDDR, etc.) read bandwidth"
+             data_type="float"
+             units="gbps"
+             semantic_type="throughput"
+             equation="PEC 41 READ 2 UMUL $GpuTime FDIV"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory Byte Write Rate"
+             symbol_name="GPU_MEMORY_BYTE_WRITE_RATE"
+             underscore_name="gpu_memory_byte_write_rate"
+             description="Device local memory (HBM, GDDR, LPDDR, etc.) write bandwidth"
+             data_type="float"
+             units="gbps"
+             semantic_type="throughput"
+             equation="PEC 42 READ 2 UMUL $GpuTime FDIV"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory L3 Read"
+             symbol_name="GPU_MEMORY_L3_READ"
+             underscore_name="gpu_memory_l3_read"
+             description="Number of GTI memory reads from Device Cache caused by Device Cache misses"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 43 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory L3 Write"
+             symbol_name="GPU_MEMORY_L3_WRITE"
+             underscore_name="gpu_memory_l3_write"
+             description="Number of GTI memory writes from Device Cache caused by Device Cache invalidations"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 44 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TLB Miss"
+             symbol_name="TLB_MISS"
+             underscore_name="tlb_miss"
+             description="Number of misses from all TLBs and all engines"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 46 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Atomic Access"
+             symbol_name="L3_ATOMIC_ACCESS"
+             underscore_name="l3_atomic_access"
+             description="Number of atomic accesses to Device Cache bank"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 47 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Hit"
+             symbol_name="L3_HIT"
+             underscore_name="l3_hit"
+             description="Number of Device Cache accesses (except atomics) which hits in the Device Cache cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 49 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Miss"
+             symbol_name="L3_MISS"
+             underscore_name="l3_miss"
+             description="Number of Device Cache accesses (except atomics) which miss in the Device Cache cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 51 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Read"
+             symbol_name="L3_READ"
+             underscore_name="l3_read"
+             description="Number of Device Cache 64B read requests"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 53 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Write"
+             symbol_name="L3_WRITE"
+             underscore_name="l3_write"
+             description="Number of Device Cache 64B write requests"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 56 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache Access"
+             symbol_name="LOAD_STORE_CACHE_ACCESS"
+             underscore_name="load_store_cache_access"
+             description="Number of Load Store Cache accesses"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 2 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache Byte Read"
+             symbol_name="LOAD_STORE_CACHE_BYTE_READ"
+             underscore_name="load_store_cache_byte_read"
+             description="Number of bytes read out of the Load Store Cache, excluding SLM accesses"
+             data_type="uint64"
+             units="bytes"
+             semantic_type="event"
+             equation="PEC 3 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache Byte Write"
+             symbol_name="LOAD_STORE_CACHE_BYTE_WRITE"
+             underscore_name="load_store_cache_byte_write"
+             description="Number of bytes written to the Load Store Cache, excluding SLM accesses"
+             data_type="uint64"
+             units="bytes"
+             semantic_type="event"
+             equation="PEC 4 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache Hit"
+             symbol_name="LOAD_STORE_CACHE_HIT"
+             underscore_name="load_store_cache_hit"
+             description="Number of Load Store Cache hits"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 5 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache Input Available"
+             symbol_name="LOAD_STORE_CACHE_INPUT_AVAILABLE"
+             underscore_name="load_store_cache_input_available"
+             description="Percentage of time in which the Load Store Cache has input available"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 6 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache Number Of Bank Access Count"
+             symbol_name="LOAD_STORE_CACHE_NUMBER_OF_BANK_ACCESS_COUNT"
+             underscore_name="load_store_cache_number_of_bank_access_count"
+             description="Number of Load Store Cache banks accessed in a clock"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 21 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache Output Ready"
+             symbol_name="LOAD_STORE_CACHE_OUTPUT_READY"
+             underscore_name="load_store_cache_output_ready"
+             description="Percentage of time in which the Load Store Cache has output ready"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 22 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Load Store Cache Partial Write Count"
+             symbol_name="LOAD_STORE_CACHE_PARTIAL_WRITE_COUNT"
+             underscore_name="load_store_cache_partial_write_count"
+             description="Number of writes to the Load Store Cache that don't fill a subsector"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 23 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Access Count"
+             symbol_name="SLM_ACCESS_COUNT"
+             underscore_name="slm_access_count"
+             description="Number of SLM accesses"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 24 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Bank Conflict Count"
+             symbol_name="SLM_BANK_CONFLICT_COUNT"
+             underscore_name="slm_bank_conflict_count"
+             description="Number of SLM accesses resulting in a bank conflict"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 25 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Byte Read"
+             symbol_name="SLM_BYTE_READ"
+             underscore_name="slm_byte_read"
+             description="Number of bytes read from SLM"
+             data_type="uint64"
+             units="bytes"
+             semantic_type="event"
+             equation="PEC 26 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Byte Write"
+             symbol_name="SLM_BYTE_WRITE"
+             underscore_name="slm_byte_write"
+             description="Number of bytes written to SLM"
+             data_type="uint64"
+             units="bytes"
+             semantic_type="event"
+             equation="PEC 27 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Load Store Cache Atomic Message Count"
+             symbol_name="XVE_LOAD_STORE_CACHE_ATOMIC_MESSAGE_COUNT"
+             underscore_name="xve_load_store_cache_atomic_message_count"
+             description="Number of atomic operations sent by XVEs to the Load Store Cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 28 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Load Store Cache Fence Message Count"
+             symbol_name="XVE_LOAD_STORE_CACHE_FENCE_MESSAGE_COUNT"
+             underscore_name="xve_load_store_cache_fence_message_count"
+             description="Number of fence messages sent by XVEs to the Load Store Cache"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="PEC 29 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Load Store Cache Read Message Count"
+             symbol_name="XVE_LOAD_STORE_CACHE_READ_MESSAGE_COUNT"
+             underscore_name="xve_load_store_cache_read_message_count"
+             description="Number of read messages sent by XVEs to the Load Store Cache"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="PEC 30 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Load Store Cache Register Request Count"
+             symbol_name="XVE_LOAD_STORE_CACHE_REGISTER_REQUEST_COUNT"
+             underscore_name="xve_load_store_cache_register_request_count"
+             description="Number of message payload transactions sent by XVEs to the Load Store Cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 31 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Load Store Cache Register Response Count"
+             symbol_name="XVE_LOAD_STORE_CACHE_REGISTER_RESPONSE_COUNT"
+             underscore_name="xve_load_store_cache_register_response_count"
+             description="Number of message payload transactions sent from the Load Store Cache back to XVEs"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 7 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Load Store Cache Write Message Count"
+             symbol_name="XVE_LOAD_STORE_CACHE_WRITE_MESSAGE_COUNT"
+             underscore_name="xve_load_store_cache_write_message_count"
+             description="Number of write messages sent by XVEs to the Load Store Cache"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="PEC 8 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE SLM Atomic Message Count"
+             symbol_name="XVE_SLM_ATOMIC_MESSAGE_COUNT"
+             underscore_name="xve_slm_atomic_message_count"
+             description="Number of SLM atomic operations sent by XVEs"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 9 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE SLM Fence Message Count"
+             symbol_name="XVE_SLM_FENCE_MESSAGE_COUNT"
+             underscore_name="xve_slm_fence_message_count"
+             description="Number of SLM fence operations sent by XVEs"
+             data_type="uint64"
+             units="events"
              semantic_type="event"
-             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
-             mdapi_group="GPU"
-             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             equation="PEC 10 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE SLM Read Message Count"
+             symbol_name="XVE_SLM_READ_MESSAGE_COUNT"
+             underscore_name="xve_slm_read_message_count"
+             description="Number of SLM read messages sent by XVEs"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="PEC 11 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE SLM Write Message Count"
+             symbol_name="XVE_SLM_WRITE_MESSAGE_COUNT"
+             underscore_name="xve_slm_write_message_count"
+             description="Number of SLM write messages sent by XVEs"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="PEC 12 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Copy Engine Read Request"
+             symbol_name="COPY_ENGINE_READ_REQUEST"
+             underscore_name="copy_engine_read_request"
+             description="Number of read requests sent by the Main Copy Engine"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 57 READ"
+             mdapi_group="Copy Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Copy Engine Request Stall"
+             symbol_name="COPY_ENGINE_REQUEST_STALL"
+             underscore_name="copy_engine_request_stall"
+             description="Percentage of time in which copy engine is stalled on the memory path due to stall on the read or write path when there are commands pending within copy engine"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 58 READ $CopyEngineTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Copy Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Copy Engine Write Request"
+             symbol_name="COPY_ENGINE_WRITE_REQUEST"
+             underscore_name="copy_engine_write_request"
+             description="Number of write requests sent by the Main Copy Engine"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 59 READ"
+             mdapi_group="Copy Engine"
+             mdapi_usage_flags="Frame Batch Draw"
              mdapi_supported_apis=""
              mdapi_hw_unit_type="gpu"
              />
@@ -992,457 +3909,691 @@
         <register type="OA" address="0x00013354" value="0x00000000" />
         <register type="OA" address="0x00013550" value="0x00005E0B" />
         <register type="OA" address="0x00013554" value="0x00000000" />
-        <register type="OA" address="0x00013750" value="0x00005E0B" />
-        <register type="OA" address="0x00013754" value="0x00000000" />
-        <register type="OA" address="0x00013358" value="0x00005E00" />
-        <register type="OA" address="0x0001335C" value="0x00000000" />
-        <register type="OA" address="0x00013558" value="0x00005E00" />
-        <register type="OA" address="0x0001355C" value="0x00000000" />
-        <register type="OA" address="0x00013758" value="0x00005E00" />
-        <register type="OA" address="0x0001375C" value="0x00000000" />
-        <register type="OA" address="0x00013360" value="0x00005E01" />
-        <register type="OA" address="0x00013364" value="0x00000000" />
-        <register type="OA" address="0x00013560" value="0x00005E01" />
-        <register type="OA" address="0x00013564" value="0x00000000" />
-        <register type="OA" address="0x00013760" value="0x00005E01" />
-        <register type="OA" address="0x00013764" value="0x00000000" />
-        <register type="OA" address="0x00013368" value="0x00005E04" />
-        <register type="OA" address="0x0001336C" value="0x00000000" />
-        <register type="OA" address="0x00013568" value="0x00005E04" />
-        <register type="OA" address="0x0001356C" value="0x00000000" />
-        <register type="OA" address="0x00013768" value="0x00005E04" />
-        <register type="OA" address="0x0001376C" value="0x00000000" />
-        <register type="OA" address="0x00013370" value="0x00005C00" />
-        <register type="OA" address="0x00013374" value="0x00000000" />
-        <register type="OA" address="0x00013570" value="0x00005C00" />
-        <register type="OA" address="0x00013574" value="0x00000000" />
-        <register type="OA" address="0x00013770" value="0x00005C00" />
-        <register type="OA" address="0x00013774" value="0x00000000" />
-        <register type="OA" address="0x00013378" value="0x00006002" />
-        <register type="OA" address="0x0001337C" value="0x00000000" />
-        <register type="OA" address="0x00013578" value="0x00006002" />
-        <register type="OA" address="0x0001357C" value="0x00000000" />
-        <register type="OA" address="0x00013778" value="0x00006002" />
-        <register type="OA" address="0x0001377C" value="0x00000000" />
-        <register type="OA" address="0x00013380" value="0x00006014" />
-        <register type="OA" address="0x00013384" value="0x00000000" />
-        <register type="OA" address="0x00013580" value="0x00006014" />
-        <register type="OA" address="0x00013584" value="0x00000000" />
-        <register type="OA" address="0x00013780" value="0x00006014" />
-        <register type="OA" address="0x00013784" value="0x00000000" />
-        <register type="OA" address="0x00013388" value="0x00006012" />
-        <register type="OA" address="0x0001338C" value="0x00000000" />
-        <register type="OA" address="0x00013588" value="0x00006012" />
-        <register type="OA" address="0x0001358C" value="0x00000000" />
-        <register type="OA" address="0x00013788" value="0x00006012" />
-        <register type="OA" address="0x0001378C" value="0x00000000" />
-        <register type="OA" address="0x00013390" value="0x00006000" />
-        <register type="OA" address="0x00013394" value="0x00000000" />
-        <register type="OA" address="0x00013590" value="0x00006000" />
-        <register type="OA" address="0x00013594" value="0x00000000" />
-        <register type="OA" address="0x00013790" value="0x00006000" />
-        <register type="OA" address="0x00013794" value="0x00000000" />
-        <register type="OA" address="0x00013398" value="0x00006011" />
-        <register type="OA" address="0x0001339C" value="0x00000000" />
-        <register type="OA" address="0x00013598" value="0x00006011" />
-        <register type="OA" address="0x0001359C" value="0x00000000" />
-        <register type="OA" address="0x00013798" value="0x00006011" />
-        <register type="OA" address="0x0001379C" value="0x00000000" />
-        <register type="OA" address="0x000133A0" value="0x00006001" />
-        <register type="OA" address="0x000133A4" value="0x00000000" />
-        <register type="OA" address="0x000135A0" value="0x00006001" />
-        <register type="OA" address="0x000135A4" value="0x00000000" />
-        <register type="OA" address="0x000137A0" value="0x00006001" />
-        <register type="OA" address="0x000137A4" value="0x00000000" />
-        <register type="OA" address="0x000133A8" value="0x0000600F" />
-        <register type="OA" address="0x000133AC" value="0x00000000" />
-        <register type="OA" address="0x000135A8" value="0x0000600F" />
-        <register type="OA" address="0x000135AC" value="0x00000000" />
-        <register type="OA" address="0x000137A8" value="0x0000600F" />
-        <register type="OA" address="0x000137AC" value="0x00000000" />
-        <register type="OA" address="0x000133B0" value="0x00006015" />
-        <register type="OA" address="0x000133B4" value="0x00000000" />
-        <register type="OA" address="0x000135B0" value="0x00006015" />
-        <register type="OA" address="0x000135B4" value="0x00000000" />
-        <register type="OA" address="0x000137B0" value="0x00006015" />
-        <register type="OA" address="0x000137B4" value="0x00000000" />
-        <register type="OA" address="0x000133B8" value="0x00006013" />
-        <register type="OA" address="0x000133BC" value="0x00000000" />
-        <register type="OA" address="0x000135B8" value="0x00006013" />
-        <register type="OA" address="0x000135BC" value="0x00000000" />
-        <register type="OA" address="0x000137B8" value="0x00006013" />
-        <register type="OA" address="0x000137BC" value="0x00000000" />
-        <register type="OA" address="0x000133C0" value="0x00006010" />
-        <register type="OA" address="0x000133C4" value="0x00000000" />
-        <register type="OA" address="0x000135C0" value="0x00006010" />
-        <register type="OA" address="0x000135C4" value="0x00000000" />
-        <register type="OA" address="0x000137C0" value="0x00006010" />
-        <register type="OA" address="0x000137C4" value="0x00000000" />
-        <register type="OA" address="0x000133C8" value="0x00006E00" />
-        <register type="OA" address="0x000133CC" value="0x00000000" />
-        <register type="OA" address="0x000135C8" value="0x00006E00" />
-        <register type="OA" address="0x000135CC" value="0x00000000" />
-        <register type="OA" address="0x000137C8" value="0x00006E00" />
-        <register type="OA" address="0x000137CC" value="0x00000000" />
-        <register type="OA" address="0x000133D0" value="0x00006E02" />
-        <register type="OA" address="0x000133D4" value="0x00000000" />
-        <register type="OA" address="0x000135D0" value="0x00006E02" />
-        <register type="OA" address="0x000135D4" value="0x00000000" />
-        <register type="OA" address="0x000137D0" value="0x00006E02" />
-        <register type="OA" address="0x000137D4" value="0x00000000" />
-        <register type="OA" address="0x000133D8" value="0x00006E01" />
-        <register type="OA" address="0x000133DC" value="0x00000000" />
-        <register type="OA" address="0x000135D8" value="0x00006E01" />
-        <register type="OA" address="0x000135DC" value="0x00000000" />
-        <register type="OA" address="0x000137D8" value="0x00006E01" />
-        <register type="OA" address="0x000137DC" value="0x00000000" />
-    </register_config>
-  </set>
-
-  <set name="RenderPipeProfile"
-       chipset="LNL"
-       symbol_name="RenderPipeProfile"
-       underscore_name="render_pipe_profile"
-       mdapi_supported_apis="VK OGL OCL IO"
-       oa_format="256B_GENERIC_NOA16"
-       hw_config_guid="6791470f-f1e6-4f77-9013-bcb0c4be6f57"
-       >
-    <counter name="GPU Time Elapsed"
-             symbol_name="GpuTime"
-             underscore_name="gpu_time"
-             description="Time elapsed on the GPU during the measurement."
-             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 Frame Batch Draw"
-             mdapi_supported_apis=""
-             mdapi_hw_unit_type="gpu"
-             />
-    <register_config type="OA">
-        <register type="OA" address="0x00013000" value="0x00001801" />
-        <register type="OA" address="0x00013004" value="0x00000000" />
-        <register type="OA" address="0x00013008" value="0x00001802" />
-        <register type="OA" address="0x0001300C" value="0x00000000" />
-        <register type="OA" address="0x00013010" value="0x00000401" />
-        <register type="OA" address="0x00013014" value="0x00000000" />
-        <register type="OA" address="0x00013018" value="0x00000007" />
-        <register type="OA" address="0x0001301C" value="0x00000000" />
-        <register type="OA" address="0x00013020" value="0x00000003" />
-        <register type="OA" address="0x00013024" value="0x00000000" />
-        <register type="OA" address="0x00013028" value="0x00000001" />
-        <register type="OA" address="0x0001302C" value="0x00000000" />
-        <register type="OA" address="0x00013030" value="0x00000004" />
-        <register type="OA" address="0x00013034" value="0x00000000" />
-        <register type="OA" address="0x000130A8" value="0x00001803" />
-        <register type="OA" address="0x000130AC" value="0x00000000" />
-        <register type="OA" address="0x000130B0" value="0x00001800" />
-        <register type="OA" address="0x000130B4" value="0x00000000" />
-        <register type="OA" address="0x000130B8" value="0x00001605" />
-        <register type="OA" address="0x000130BC" value="0x00000000" />
-        <register type="OA" address="0x000130C0" value="0x00001603" />
-        <register type="OA" address="0x000130C4" value="0x00000000" />
-        <register type="OA" address="0x000130C8" value="0x00001601" />
-        <register type="OA" address="0x000130CC" value="0x00000000" />
-        <register type="OA" address="0x000130D0" value="0x00001604" />
-        <register type="OA" address="0x000130D4" value="0x00000000" />
-        <register type="OA" address="0x000130D8" value="0x00001602" />
-        <register type="OA" address="0x000130DC" value="0x00000000" />
-        <register type="OA" address="0x000130E0" value="0x00001606" />
-        <register type="OA" address="0x000130E4" value="0x00000000" />
-        <register type="OA" address="0x000130E8" value="0x00001807" />
-        <register type="OA" address="0x000130EC" value="0x00000000" />
-        <register type="OA" address="0x000130F0" value="0x00001808" />
-        <register type="OA" address="0x000130F4" value="0x00000000" />
-        <register type="OA" address="0x00013300" value="0x00005A00" />
-        <register type="OA" address="0x00013304" value="0x00000000" />
-        <register type="OA" address="0x00013500" value="0x00005A00" />
-        <register type="OA" address="0x00013504" value="0x00000000" />
-        <register type="OA" address="0x00013700" value="0x00005A00" />
-        <register type="OA" address="0x00013704" value="0x00000000" />
-        <register type="OA" address="0x00013308" value="0x00004405" />
-        <register type="OA" address="0x0001330C" value="0x00000000" />
-        <register type="OA" address="0x00013508" value="0x00004405" />
-        <register type="OA" address="0x0001350C" value="0x00000000" />
-        <register type="OA" address="0x00013708" value="0x00004405" />
-        <register type="OA" address="0x0001370C" value="0x00000000" />
-        <register type="OA" address="0x00013310" value="0x00006805" />
-        <register type="OA" address="0x00013314" value="0x00000000" />
-        <register type="OA" address="0x00013510" value="0x00006805" />
-        <register type="OA" address="0x00013514" value="0x00000000" />
-        <register type="OA" address="0x00013710" value="0x00006805" />
-        <register type="OA" address="0x00013714" value="0x00000000" />
-        <register type="OA" address="0x00013318" value="0x00006600" />
-        <register type="OA" address="0x0001331C" value="0x00000000" />
-        <register type="OA" address="0x00013518" value="0x00006600" />
-        <register type="OA" address="0x0001351C" value="0x00000000" />
-        <register type="OA" address="0x00013718" value="0x00006600" />
-        <register type="OA" address="0x0001371C" value="0x00000000" />
-        <register type="OA" address="0x00013320" value="0x00006604" />
-        <register type="OA" address="0x00013324" value="0x00000000" />
-        <register type="OA" address="0x00013520" value="0x00006604" />
-        <register type="OA" address="0x00013524" value="0x00000000" />
-        <register type="OA" address="0x00013720" value="0x00006604" />
-        <register type="OA" address="0x00013724" value="0x00000000" />
-        <register type="OA" address="0x00013328" value="0x00006602" />
-        <register type="OA" address="0x0001332C" value="0x00000000" />
-        <register type="OA" address="0x00013528" value="0x00006602" />
-        <register type="OA" address="0x0001352C" value="0x00000000" />
-        <register type="OA" address="0x00013728" value="0x00006602" />
-        <register type="OA" address="0x0001372C" value="0x00000000" />
-        <register type="OA" address="0x00013330" value="0x00004401" />
-        <register type="OA" address="0x00013334" value="0x00000000" />
-        <register type="OA" address="0x00013530" value="0x00004401" />
-        <register type="OA" address="0x00013534" value="0x00000000" />
-        <register type="OA" address="0x00013730" value="0x00004401" />
-        <register type="OA" address="0x00013734" value="0x00000000" />
-        <register type="OA" address="0x00013338" value="0x00006610" />
-        <register type="OA" address="0x0001333C" value="0x00000000" />
-        <register type="OA" address="0x00013538" value="0x00006610" />
-        <register type="OA" address="0x0001353C" value="0x00000000" />
-        <register type="OA" address="0x00013738" value="0x00006610" />
-        <register type="OA" address="0x0001373C" value="0x00000000" />
-        <register type="OA" address="0x00013340" value="0x00004407" />
-        <register type="OA" address="0x00013344" value="0x00000000" />
-        <register type="OA" address="0x00013540" value="0x00004407" />
-        <register type="OA" address="0x00013544" value="0x00000000" />
-        <register type="OA" address="0x00013740" value="0x00004407" />
-        <register type="OA" address="0x00013744" value="0x00000000" />
-        <register type="OA" address="0x00013348" value="0x00004406" />
-        <register type="OA" address="0x0001334C" value="0x00000000" />
-        <register type="OA" address="0x00013548" value="0x00004406" />
-        <register type="OA" address="0x0001354C" value="0x00000000" />
-        <register type="OA" address="0x00013748" value="0x00004406" />
-        <register type="OA" address="0x0001374C" value="0x00000000" />
-        <register type="OA" address="0x00013350" value="0x00004403" />
-        <register type="OA" address="0x00013354" value="0x00000000" />
-        <register type="OA" address="0x00013550" value="0x00004403" />
-        <register type="OA" address="0x00013554" value="0x00000000" />
-        <register type="OA" address="0x00013750" value="0x00004403" />
+        <register type="OA" address="0x00013750" value="0x00005E0B" />
         <register type="OA" address="0x00013754" value="0x00000000" />
-        <register type="OA" address="0x00013358" value="0x00004201" />
+        <register type="OA" address="0x00013358" value="0x00005E00" />
         <register type="OA" address="0x0001335C" value="0x00000000" />
-        <register type="OA" address="0x00013558" value="0x00004201" />
+        <register type="OA" address="0x00013558" value="0x00005E00" />
         <register type="OA" address="0x0001355C" value="0x00000000" />
-        <register type="OA" address="0x00013758" value="0x00004201" />
+        <register type="OA" address="0x00013758" value="0x00005E00" />
         <register type="OA" address="0x0001375C" value="0x00000000" />
-        <register type="OA" address="0x00013360" value="0x00004002" />
+        <register type="OA" address="0x00013360" value="0x00005E01" />
         <register type="OA" address="0x00013364" value="0x00000000" />
-        <register type="OA" address="0x00013560" value="0x00004002" />
+        <register type="OA" address="0x00013560" value="0x00005E01" />
         <register type="OA" address="0x00013564" value="0x00000000" />
-        <register type="OA" address="0x00013760" value="0x00004002" />
+        <register type="OA" address="0x00013760" value="0x00005E01" />
         <register type="OA" address="0x00013764" value="0x00000000" />
-        <register type="OA" address="0x00013368" value="0x00004202" />
+        <register type="OA" address="0x00013368" value="0x00005E04" />
         <register type="OA" address="0x0001336C" value="0x00000000" />
-        <register type="OA" address="0x00013568" value="0x00004202" />
+        <register type="OA" address="0x00013568" value="0x00005E04" />
         <register type="OA" address="0x0001356C" value="0x00000000" />
-        <register type="OA" address="0x00013768" value="0x00004202" />
+        <register type="OA" address="0x00013768" value="0x00005E04" />
         <register type="OA" address="0x0001376C" value="0x00000000" />
-        <register type="OA" address="0x00013370" value="0x00004200" />
+        <register type="OA" address="0x00013370" value="0x00005C00" />
         <register type="OA" address="0x00013374" value="0x00000000" />
-        <register type="OA" address="0x00013570" value="0x00004200" />
+        <register type="OA" address="0x00013570" value="0x00005C00" />
         <register type="OA" address="0x00013574" value="0x00000000" />
-        <register type="OA" address="0x00013770" value="0x00004200" />
+        <register type="OA" address="0x00013770" value="0x00005C00" />
         <register type="OA" address="0x00013774" value="0x00000000" />
-        <register type="OA" address="0x00013378" value="0x00004007" />
+        <register type="OA" address="0x00013378" value="0x00006002" />
         <register type="OA" address="0x0001337C" value="0x00000000" />
-        <register type="OA" address="0x00013578" value="0x00004007" />
+        <register type="OA" address="0x00013578" value="0x00006002" />
         <register type="OA" address="0x0001357C" value="0x00000000" />
-        <register type="OA" address="0x00013778" value="0x00004007" />
+        <register type="OA" address="0x00013778" value="0x00006002" />
         <register type="OA" address="0x0001377C" value="0x00000000" />
-        <register type="OA" address="0x00013380" value="0x00004008" />
+        <register type="OA" address="0x00013380" value="0x00006014" />
         <register type="OA" address="0x00013384" value="0x00000000" />
-        <register type="OA" address="0x00013580" value="0x00004008" />
+        <register type="OA" address="0x00013580" value="0x00006014" />
         <register type="OA" address="0x00013584" value="0x00000000" />
-        <register type="OA" address="0x00013780" value="0x00004008" />
+        <register type="OA" address="0x00013780" value="0x00006014" />
         <register type="OA" address="0x00013784" value="0x00000000" />
-        <register type="OA" address="0x00013388" value="0x00004E04" />
+        <register type="OA" address="0x00013388" value="0x00006012" />
         <register type="OA" address="0x0001338C" value="0x00000000" />
-        <register type="OA" address="0x00013588" value="0x00004E04" />
+        <register type="OA" address="0x00013588" value="0x00006012" />
         <register type="OA" address="0x0001358C" value="0x00000000" />
-        <register type="OA" address="0x00013788" value="0x00004E04" />
+        <register type="OA" address="0x00013788" value="0x00006012" />
         <register type="OA" address="0x0001378C" value="0x00000000" />
-        <register type="OA" address="0x00013390" value="0x00004E03" />
+        <register type="OA" address="0x00013390" value="0x00006000" />
         <register type="OA" address="0x00013394" value="0x00000000" />
-        <register type="OA" address="0x00013590" value="0x00004E03" />
+        <register type="OA" address="0x00013590" value="0x00006000" />
         <register type="OA" address="0x00013594" value="0x00000000" />
-        <register type="OA" address="0x00013790" value="0x00004E03" />
+        <register type="OA" address="0x00013790" value="0x00006000" />
         <register type="OA" address="0x00013794" value="0x00000000" />
-        <register type="OA" address="0x00013398" value="0x00006800" />
+        <register type="OA" address="0x00013398" value="0x00006011" />
         <register type="OA" address="0x0001339C" value="0x00000000" />
-        <register type="OA" address="0x00013598" value="0x00006800" />
+        <register type="OA" address="0x00013598" value="0x00006011" />
         <register type="OA" address="0x0001359C" value="0x00000000" />
-        <register type="OA" address="0x00013798" value="0x00006800" />
+        <register type="OA" address="0x00013798" value="0x00006011" />
         <register type="OA" address="0x0001379C" value="0x00000000" />
-        <register type="OA" address="0x000133A0" value="0x00006803" />
+        <register type="OA" address="0x000133A0" value="0x00006001" />
         <register type="OA" address="0x000133A4" value="0x00000000" />
-        <register type="OA" address="0x000135A0" value="0x00006803" />
+        <register type="OA" address="0x000135A0" value="0x00006001" />
         <register type="OA" address="0x000135A4" value="0x00000000" />
-        <register type="OA" address="0x000137A0" value="0x00006803" />
+        <register type="OA" address="0x000137A0" value="0x00006001" />
         <register type="OA" address="0x000137A4" value="0x00000000" />
-        <register type="OA" address="0x000133A8" value="0x00006804" />
+        <register type="OA" address="0x000133A8" value="0x0000600F" />
         <register type="OA" address="0x000133AC" value="0x00000000" />
-        <register type="OA" address="0x000135A8" value="0x00006804" />
+        <register type="OA" address="0x000135A8" value="0x0000600F" />
         <register type="OA" address="0x000135AC" value="0x00000000" />
-        <register type="OA" address="0x000137A8" value="0x00006804" />
+        <register type="OA" address="0x000137A8" value="0x0000600F" />
         <register type="OA" address="0x000137AC" value="0x00000000" />
-        <register type="OA" address="0x000133B0" value="0x00005011" />
+        <register type="OA" address="0x000133B0" value="0x00006015" />
         <register type="OA" address="0x000133B4" value="0x00000000" />
-        <register type="OA" address="0x000135B0" value="0x00005011" />
+        <register type="OA" address="0x000135B0" value="0x00006015" />
         <register type="OA" address="0x000135B4" value="0x00000000" />
-        <register type="OA" address="0x000137B0" value="0x00005011" />
+        <register type="OA" address="0x000137B0" value="0x00006015" />
         <register type="OA" address="0x000137B4" value="0x00000000" />
-        <register type="OA" address="0x000133B8" value="0x00004E00" />
+        <register type="OA" address="0x000133B8" value="0x00006013" />
         <register type="OA" address="0x000133BC" value="0x00000000" />
-        <register type="OA" address="0x000135B8" value="0x00004E00" />
+        <register type="OA" address="0x000135B8" value="0x00006013" />
         <register type="OA" address="0x000135BC" value="0x00000000" />
-        <register type="OA" address="0x000137B8" value="0x00004E00" />
+        <register type="OA" address="0x000137B8" value="0x00006013" />
         <register type="OA" address="0x000137BC" value="0x00000000" />
-        <register type="OA" address="0x000133C0" value="0x00004E01" />
+        <register type="OA" address="0x000133C0" value="0x00006010" />
         <register type="OA" address="0x000133C4" value="0x00000000" />
-        <register type="OA" address="0x000135C0" value="0x00004E01" />
+        <register type="OA" address="0x000135C0" value="0x00006010" />
         <register type="OA" address="0x000135C4" value="0x00000000" />
-        <register type="OA" address="0x000137C0" value="0x00004E01" />
+        <register type="OA" address="0x000137C0" value="0x00006010" />
         <register type="OA" address="0x000137C4" value="0x00000000" />
-        <register type="OA" address="0x000133C8" value="0x00004E02" />
+        <register type="OA" address="0x000133C8" value="0x00006E00" />
         <register type="OA" address="0x000133CC" value="0x00000000" />
-        <register type="OA" address="0x000135C8" value="0x00004E02" />
+        <register type="OA" address="0x000135C8" value="0x00006E00" />
         <register type="OA" address="0x000135CC" value="0x00000000" />
-        <register type="OA" address="0x000137C8" value="0x00004E02" />
+        <register type="OA" address="0x000137C8" value="0x00006E00" />
         <register type="OA" address="0x000137CC" value="0x00000000" />
+        <register type="OA" address="0x000133D0" value="0x00006E02" />
+        <register type="OA" address="0x000133D4" value="0x00000000" />
+        <register type="OA" address="0x000135D0" value="0x00006E02" />
+        <register type="OA" address="0x000135D4" value="0x00000000" />
+        <register type="OA" address="0x000137D0" value="0x00006E02" />
+        <register type="OA" address="0x000137D4" value="0x00000000" />
+        <register type="OA" address="0x000133D8" value="0x00006E01" />
+        <register type="OA" address="0x000133DC" value="0x00000000" />
+        <register type="OA" address="0x000135D8" value="0x00006E01" />
+        <register type="OA" address="0x000135DC" value="0x00000000" />
+        <register type="OA" address="0x000137D8" value="0x00006E01" />
+        <register type="OA" address="0x000137DC" value="0x00000000" />
     </register_config>
   </set>
 
-  <set name="RTProfile"
+  <set name="RenderPipeProfile"
        chipset="LNL"
-       symbol_name="RTProfile"
-       underscore_name="rt_profile"
+       symbol_name="RenderPipeProfile"
+       underscore_name="render_pipe_profile"
        mdapi_supported_apis="VK OGL OCL IO"
-       oa_format="256B_GENERIC_NOA16"
-       hw_config_guid="d66ce633-4ae5-4de2-8678-9705adfd45bc"
+       oa_format="576B_PEC64LL"
+       hw_config_guid="6791470f-f1e6-4f77-9013-bcb0c4be6f57"
        >
     <counter name="GPU Time Elapsed"
              symbol_name="GpuTime"
              underscore_name="gpu_time"
              description="Time elapsed on the GPU during the measurement."
              data_type="uint64"
-             units="ns"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="GPU Busy"
+             symbol_name="GPU_BUSY"
+             underscore_name="gpu_busy"
+             description="Percentage of time in which GPU is not idle including all GPU engines"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 32 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="IA Vertex"
+             symbol_name="IA_VERTEX"
+             underscore_name="ia_vertex"
+             description="Number of vertices in a draw"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 33 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GpGpu Threadgroup Count"
+             symbol_name="GPGPU_THREADGROUP_COUNT"
+             underscore_name="gpgpu_threadgroup_count"
+             description="Number of GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 0 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Async GpGpu Threadgroup Count"
+             symbol_name="ASYNC_GPGPU_THREADGROUP_COUNT"
+             underscore_name="async_gpgpu_threadgroup_count"
+             description="Number of Async GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 1 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Rasterizer Sample Output"
+             symbol_name="RASTERIZER_SAMPLE_OUTPUT"
+             underscore_name="rasterizer_sample_output"
+             description="Number of lit samples emitted by Rasterizer"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 34 READ"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Clipper Input Available"
+             symbol_name="CLIPPER_INPUT_AVAILABLE"
+             underscore_name="clipper_input_available"
+             description="Percentage of time in which Clipper has input available (from Vertex Shader or SOL)"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 35 READ $SliceTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Clipper Output Ready"
+             symbol_name="CLIPPER_OUTPUT_READY"
+             underscore_name="clipper_output_ready"
+             description="Percentage of time in which Clipper output ready"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 36 READ $SliceTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Clipper Transaction Output"
+             symbol_name="CLIPPER_TRANSACTION_OUTPUT"
+             underscore_name="clipper_transaction_output"
+             description="Number of elements pushed by Clipper into Stripsfan stage"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 37 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Streamout Primitive Storage Need"
+             symbol_name="STREAMOUT_PRIMITIVE_STORAGE_NEED"
+             underscore_name="streamout_primitive_storage_need"
+             description="Number of objects data that needed beyond the current allocated space, read from pipe 0 only"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 38 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Stripsfan Output Ready"
+             symbol_name="STRIPSFAN_OUTPUT_READY"
+             underscore_name="stripsfan_output_ready"
+             description="Percentage of time in which in which geometry pipeline output is ready"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 39 READ $SliceTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Vertex Fetch Input Available"
+             symbol_name="VERTEX_FETCH_INPUT_AVAILABLE"
+             underscore_name="vertex_fetch_input_available"
+             description="Percentage of time in which Vertex Fetch input is available"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 40 READ $SliceTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Vertex Fetch Output Ready"
+             symbol_name="VERTEX_FETCH_OUTPUT_READY"
+             underscore_name="vertex_fetch_output_ready"
+             description="Percentage of time in which Vertex Fetch output is ready"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 41 READ $SliceTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="VS Output Ready"
+             symbol_name="VS_OUTPUT_READY"
+             underscore_name="vs_output_ready"
+             description="Percentage of time in which Vertex Shader output is ready"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 42 READ $SliceTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Color Pipe Cache Latency1 Stall"
+             symbol_name="COLOR_PIPE_CACHE_LATENCY1_STALL"
+             underscore_name="color_pipe_cache_latency1_stall"
+             description="Percentage of time in which Color Pipeline stalled due to MultiSampling Cache latency hiding structure full"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 43 READ $SliceTotalCount 2 UMUL UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Color Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Color Pipe Cache Latency2 Stall"
+             symbol_name="COLOR_PIPE_CACHE_LATENCY2_STALL"
+             underscore_name="color_pipe_cache_latency2_stall"
+             description="Percentage of time in which Color Pipeline stalled due to Render Cache latency hiding structure full"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 44 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Color Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Pixel Post Process Input Available"
+             symbol_name="PIXEL_POST_PROCESS_INPUT_AVAILABLE"
+             underscore_name="pixel_post_process_input_available"
+             description="Percentage of time in which Color Pipeline input ready"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 45 READ $SliceTotalCount 2 UMUL UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Color Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Pixel Post Process Output Ready"
+             symbol_name="PIXEL_POST_PROCESS_OUTPUT_READY"
+             underscore_name="pixel_post_process_output_ready"
+             description="Percentage of time in which Color Pipeline pixel output ready"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 46 READ $SliceTotalCount 2 UMUL UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Color Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="PS Output Available"
+             symbol_name="PS_OUTPUT_AVAILABLE"
+             underscore_name="ps_output_available"
+             description="Percentage of time in which Pixel Shader data is available"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 2 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Color Pipe"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="AMFS Stall All Input"
+             symbol_name="AMFS_STALL_ALL_INPUT"
+             underscore_name="amfs_stall_all_input"
+             description="Percentage of time in which AMFS stalls at both of the color pipe inputs"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 49 READ $SliceTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="AMFS"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="AMFS Stall Any Input"
+             symbol_name="AMFS_STALL_ANY_INPUT"
+             underscore_name="amfs_stall_any_input"
+             description="Percentage of time in which AMFS stalls at any of the color pipe inputs"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 50 READ $SliceTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="AMFS"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Active"
+             symbol_name="SAMPLER_ACTIVE"
+             underscore_name="sampler_active"
+             description="Percentage of time in which Sampler pipeline active"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 3 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Input Available"
+             symbol_name="SAMPLER_INPUT_AVAILABLE"
+             underscore_name="sampler_input_available"
+             description="Percentage of time in which Sampler input is available"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 4 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Memory Latency Stall"
+             symbol_name="SAMPLER_MEMORY_LATENCY_STALL"
+             underscore_name="sampler_memory_latency_stall"
+             description="Percentage of time in which Sampler stalled due to latency hiding structure full"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 5 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Sampler Output Ready"
+             symbol_name="SAMPLER_OUTPUT_READY"
+             underscore_name="sampler_output_ready"
+             description="Percentage of time in which Sampler output is ready"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 6 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Sampler"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Rasterizer Input Available"
+             symbol_name="RASTERIZER_INPUT_AVAILABLE"
+             underscore_name="rasterizer_input_available"
+             description="Percentage of time in which Rasterizer input is available"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 51 READ $SliceTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Rasterizer Output Ready"
+             symbol_name="RASTERIZER_OUTPUT_READY"
+             underscore_name="rasterizer_output_ready"
+             description="Percentage of time in which where rasterizer output is ready"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 52 READ $SliceTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Rasterizer Transaction Output"
+             symbol_name="RASTERIZER_TRANSACTION_OUTPUT"
+             underscore_name="rasterizer_transaction_output"
+             description="Number of transactions pushed from Rasterizer to the Z pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 53 READ"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Task Thread Exit Count"
+             symbol_name="TASK_THREAD_EXIT_COUNT"
+             underscore_name="task_thread_exit_count"
+             description="Number of Task Shader EOT messages received"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="PEC 21 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Task Threadgroup Count"
+             symbol_name="TASK_THREADGROUP_COUNT"
+             underscore_name="task_threadgroup_count"
+             description="Number of Task Shader threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 22 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Thread Dispatch Input Available"
+             symbol_name="THREAD_DISPATCH_INPUT_AVAILABLE"
+             underscore_name="thread_dispatch_input_available"
+             description="Percentage of time in which Thread Dispatch input is available"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 23 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Thread Dispatch PS Active"
+             symbol_name="THREAD_DISPATCH_PS_ACTIVE"
+             underscore_name="thread_dispatch_ps_active"
+             description="Percentage of time in which Pixel Shader threads are ready for dispatch"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 24 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Thread Dispatch Queue0 Active"
+             symbol_name="THREAD_DISPATCH_QUEUE0_ACTIVE"
+             underscore_name="thread_dispatch_queue0_active"
+             description="Percentage of time in which non-Pixel Shader threads are ready for dispatch in a particular Xe core"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 25 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Thread Dispatch Queue0 Stall"
+             symbol_name="THREAD_DISPATCH_QUEUE0_STALL"
+             underscore_name="thread_dispatch_queue0_stall"
+             description="Percentage of time in which queue 0 is stalled waiting for threads to be available"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 26 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Thread Dispatch Queue1 Active"
+             symbol_name="THREAD_DISPATCH_QUEUE1_ACTIVE"
+             underscore_name="thread_dispatch_queue1_active"
+             description="Percentage of time in which non-Pixel Shader threads are ready for dispatch in a particular Xe core"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 27 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Thread Dispatch Queue1 Stall"
+             symbol_name="THREAD_DISPATCH_QUEUE1_STALL"
+             underscore_name="thread_dispatch_queue1_stall"
+             description="Percentage of time in which queue 1 is stalled waiting for threads to be available"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 28 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Threadgroup Dispatch Queue0 Resource Stall"
+             symbol_name="THREADGROUP_DISPATCH_QUEUE0_RESOURCE_STALL"
+             underscore_name="threadgroup_dispatch_queue0_resource_stall"
+             description="Percentage of time in which Thread Spawner queue 0 is stalled waiting for resources to be available (SLM, Barrier, BTD stack)"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 29 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Threadgroup Dispatch Queue1 Resource Stall"
+             symbol_name="THREADGROUP_DISPATCH_QUEUE1_RESOURCE_STALL"
+             underscore_name="threadgroup_dispatch_queue1_resource_stall"
+             description="Percentage of time in which Thread Spawner queue 1 is stalled waiting for resources to be available (SLM, Barrier, BTD stack)"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 30 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Command Parser Render Engine Draw Count"
+             symbol_name="COMMAND_PARSER_RENDER_ENGINE_DRAW_COUNT"
+             underscore_name="command_parser_render_engine_draw_count"
+             description="Number of DRAW and MESH commands parsed on the 3D engine"
+             data_type="uint64"
+             units="events"
              semantic_type="event"
-             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
-             mdapi_group="GPU"
-             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             equation="PEC 54 READ"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
              mdapi_supported_apis=""
              mdapi_hw_unit_type="gpu"
              />
-    <register_config type="OA">
-        <register type="OA" address="0x00013000" value="0x00001801" />
-        <register type="OA" address="0x00013004" value="0x00000000" />
-        <register type="OA" address="0x00013008" value="0x00001802" />
-        <register type="OA" address="0x0001300C" value="0x00000000" />
-        <register type="OA" address="0x00013010" value="0x00000C03" />
-        <register type="OA" address="0x00013014" value="0x00000000" />
-        <register type="OA" address="0x00013018" value="0x00000C04" />
-        <register type="OA" address="0x0001301C" value="0x00000000" />
-        <register type="OA" address="0x00013020" value="0x00000C00" />
-        <register type="OA" address="0x00013024" value="0x00000000" />
-        <register type="OA" address="0x00013028" value="0x00000C1A" />
-        <register type="OA" address="0x0001302C" value="0x00000000" />
-        <register type="OA" address="0x00013030" value="0x00000C2F" />
-        <register type="OA" address="0x00013034" value="0x00000000" />
-        <register type="OA" address="0x00013038" value="0x00000C1D" />
-        <register type="OA" address="0x0001303C" value="0x00000000" />
-        <register type="OA" address="0x00013040" value="0x00000C2A" />
-        <register type="OA" address="0x00013044" value="0x00000000" />
-        <register type="OA" address="0x00013048" value="0x0000060F" />
-        <register type="OA" address="0x0001304C" value="0x00000000" />
-        <register type="OA" address="0x00013050" value="0x0000060F" />
-        <register type="OA" address="0x00013054" value="0x00000000" />
-        <register type="OA" address="0x00013058" value="0x0000060F" />
-        <register type="OA" address="0x0001305C" value="0x00000000" />
-        <register type="OA" address="0x00013060" value="0x00000603" />
-        <register type="OA" address="0x00013064" value="0x00000000" />
-        <register type="OA" address="0x00013068" value="0x00000603" />
-        <register type="OA" address="0x0001306C" value="0x00000000" />
-        <register type="OA" address="0x00013070" value="0x00000603" />
-        <register type="OA" address="0x00013074" value="0x00000000" />
-        <register type="OA" address="0x00013078" value="0x00000604" />
-        <register type="OA" address="0x0001307C" value="0x00000000" />
-        <register type="OA" address="0x00013080" value="0x00000C10" />
-        <register type="OA" address="0x00013084" value="0x00000000" />
-        <register type="OA" address="0x00013088" value="0x00000C18" />
-        <register type="OA" address="0x0001308C" value="0x00000000" />
-        <register type="OA" address="0x00013090" value="0x00000A08" />
-        <register type="OA" address="0x00013094" value="0x00000000" />
-        <register type="OA" address="0x00013098" value="0x00000A09" />
-        <register type="OA" address="0x0001309C" value="0x00000000" />
-        <register type="OA" address="0x000130A8" value="0x00000C2D" />
-        <register type="OA" address="0x000130AC" value="0x00000000" />
-        <register type="OA" address="0x000130B0" value="0x00000C02" />
-        <register type="OA" address="0x000130B4" value="0x00000000" />
-        <register type="OA" address="0x000130B8" value="0x00000C19" />
-        <register type="OA" address="0x000130BC" value="0x00000000" />
-        <register type="OA" address="0x000130C0" value="0x00000C01" />
-        <register type="OA" address="0x000130C4" value="0x00000000" />
-        <register type="OA" address="0x000130C8" value="0x00000C2E" />
-        <register type="OA" address="0x000130CC" value="0x00000000" />
-        <register type="OA" address="0x000130D0" value="0x00000C30" />
-        <register type="OA" address="0x000130D4" value="0x00000000" />
-        <register type="OA" address="0x000130D8" value="0x00000C2B" />
-        <register type="OA" address="0x000130DC" value="0x00000000" />
-        <register type="OA" address="0x000130E0" value="0x00000C20" />
-        <register type="OA" address="0x000130E4" value="0x00000000" />
-        <register type="OA" address="0x000130E8" value="0x00000C2C" />
-        <register type="OA" address="0x000130EC" value="0x00000000" />
-        <register type="OA" address="0x000130F0" value="0x00000C28" />
-        <register type="OA" address="0x000130F4" value="0x00000000" />
-        <register type="OA" address="0x000130F8" value="0x00000C29" />
-        <register type="OA" address="0x000130FC" value="0x00000000" />
-        <register type="OA" address="0x00013300" value="0x00005A00" />
-        <register type="OA" address="0x00013304" value="0x00000000" />
-        <register type="OA" address="0x00013500" value="0x00005A00" />
-        <register type="OA" address="0x00013504" value="0x00000000" />
-        <register type="OA" address="0x00013700" value="0x00005A00" />
-        <register type="OA" address="0x00013704" value="0x00000000" />
-        <register type="OA" address="0x00013308" value="0x00004405" />
-        <register type="OA" address="0x0001330C" value="0x00000000" />
-        <register type="OA" address="0x00013508" value="0x00004405" />
-        <register type="OA" address="0x0001350C" value="0x00000000" />
-        <register type="OA" address="0x00013708" value="0x00004405" />
-        <register type="OA" address="0x0001370C" value="0x00000000" />
-        <register type="OA" address="0x00013310" value="0x00006805" />
-        <register type="OA" address="0x00013314" value="0x00000000" />
-        <register type="OA" address="0x00013510" value="0x00006805" />
-        <register type="OA" address="0x00013514" value="0x00000000" />
-        <register type="OA" address="0x00013710" value="0x00006805" />
-        <register type="OA" address="0x00013714" value="0x00000000" />
-    </register_config>
-    <register_config type="FLEX">
-        <register type="FLEX" address="0x0000E558" value="0x000D00C0" />
-        <register type="FLEX" address="0x0000E658" value="0x000C00E0" />
-        <register type="FLEX" address="0x0000E758" value="0x000E00D0" />
-        <register type="FLEX" address="0x0000E45C" value="0x00000000" />
-    </register_config>
-  </set>
-
-  <set name="VectorEngineProfile"
-       chipset="LNL"
-       symbol_name="VectorEngineProfile"
-       underscore_name="vector_engine_profile"
-       mdapi_supported_apis="VK OGL OCL IO"
-       oa_format="256B_GENERIC_NOA16"
-       hw_config_guid="e7338926-568c-4424-bc44-f90318a6b472"
-       >
-    <counter name="GPU Time Elapsed"
-             symbol_name="GpuTime"
-             underscore_name="gpu_time"
-             description="Time elapsed on the GPU during the measurement."
+    <counter name="AMFS 4x4 Shading Request"
+             symbol_name="AMFS_4X4_SHADING_REQUEST"
+             underscore_name="amfs_4_x4_shading_request"
+             description="Number of Shading Request (evaluate) messages processed by AMFS"
              data_type="uint64"
-             units="ns"
+             units="messages"
              semantic_type="event"
-             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
-             mdapi_group="GPU"
-             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             equation="PEC 55 READ"
+             mdapi_group="AMFS"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="AMFS Cache Hit"
+             symbol_name="AMFS_CACHE_HIT"
+             underscore_name="amfs_cache_hit"
+             description="Number of hits in the AMFS cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 56 READ"
+             mdapi_group="AMFS"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="AMFS Cache Miss"
+             symbol_name="AMFS_CACHE_MISS"
+             underscore_name="amfs_cache_miss"
+             description="Number of cache misses in AMFS"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 57 READ"
+             mdapi_group="AMFS"
+             mdapi_usage_flags="Frame Batch Draw"
              mdapi_supported_apis=""
              mdapi_hw_unit_type="gpu"
              />
@@ -1451,66 +4602,36 @@
         <register type="OA" address="0x00013004" value="0x00000000" />
         <register type="OA" address="0x00013008" value="0x00001802" />
         <register type="OA" address="0x0001300C" value="0x00000000" />
-        <register type="OA" address="0x00013010" value="0x00000622" />
+        <register type="OA" address="0x00013010" value="0x00000401" />
         <register type="OA" address="0x00013014" value="0x00000000" />
-        <register type="OA" address="0x00013018" value="0x00000623" />
+        <register type="OA" address="0x00013018" value="0x00000007" />
         <register type="OA" address="0x0001301C" value="0x00000000" />
-        <register type="OA" address="0x00013020" value="0x00000605" />
+        <register type="OA" address="0x00013020" value="0x00000003" />
         <register type="OA" address="0x00013024" value="0x00000000" />
-        <register type="OA" address="0x00013028" value="0x0000060F" />
+        <register type="OA" address="0x00013028" value="0x00000001" />
         <register type="OA" address="0x0001302C" value="0x00000000" />
-        <register type="OA" address="0x00013030" value="0x00000603" />
+        <register type="OA" address="0x00013030" value="0x00000004" />
         <register type="OA" address="0x00013034" value="0x00000000" />
-        <register type="OA" address="0x00013038" value="0x0000060E" />
-        <register type="OA" address="0x0001303C" value="0x00000000" />
-        <register type="OA" address="0x00013040" value="0x0000060A" />
-        <register type="OA" address="0x00013044" value="0x00000000" />
-        <register type="OA" address="0x00013048" value="0x00000609" />
-        <register type="OA" address="0x0001304C" value="0x00000000" />
-        <register type="OA" address="0x00013050" value="0x00000601" />
-        <register type="OA" address="0x00013054" value="0x00000000" />
-        <register type="OA" address="0x00013058" value="0x00000616" />
-        <register type="OA" address="0x0001305C" value="0x00000000" />
-        <register type="OA" address="0x00013060" value="0x00000615" />
-        <register type="OA" address="0x00013064" value="0x00000000" />
-        <register type="OA" address="0x00013068" value="0x00000619" />
-        <register type="OA" address="0x0001306C" value="0x00000000" />
-        <register type="OA" address="0x00013070" value="0x00000618" />
-        <register type="OA" address="0x00013074" value="0x00000000" />
-        <register type="OA" address="0x00013078" value="0x00000617" />
-        <register type="OA" address="0x0001307C" value="0x00000000" />
-        <register type="OA" address="0x00013080" value="0x0000060B" />
-        <register type="OA" address="0x00013084" value="0x00000000" />
-        <register type="OA" address="0x00013088" value="0x00000624" />
-        <register type="OA" address="0x0001308C" value="0x00000000" />
-        <register type="OA" address="0x00013090" value="0x00000625" />
-        <register type="OA" address="0x00013094" value="0x00000000" />
-        <register type="OA" address="0x00013098" value="0x00000626" />
-        <register type="OA" address="0x0001309C" value="0x00000000" />
-        <register type="OA" address="0x000130A0" value="0x00000604" />
-        <register type="OA" address="0x000130A4" value="0x00000000" />
-        <register type="OA" address="0x000130A8" value="0x00000614" />
+        <register type="OA" address="0x000130A8" value="0x00001803" />
         <register type="OA" address="0x000130AC" value="0x00000000" />
-        <register type="OA" address="0x000130B0" value="0x00000608" />
+        <register type="OA" address="0x000130B0" value="0x00001800" />
         <register type="OA" address="0x000130B4" value="0x00000000" />
-        <register type="OA" address="0x000130B8" value="0x00000607" />
+        <register type="OA" address="0x000130B8" value="0x00001605" />
         <register type="OA" address="0x000130BC" value="0x00000000" />
-        <register type="OA" address="0x000130C0" value="0x00000602" />
+        <register type="OA" address="0x000130C0" value="0x00001603" />
         <register type="OA" address="0x000130C4" value="0x00000000" />
-        <register type="OA" address="0x000130C8" value="0x00000611" />
+        <register type="OA" address="0x000130C8" value="0x00001601" />
         <register type="OA" address="0x000130CC" value="0x00000000" />
-        <register type="OA" address="0x000130D0" value="0x00000610" />
+        <register type="OA" address="0x000130D0" value="0x00001604" />
         <register type="OA" address="0x000130D4" value="0x00000000" />
-        <register type="OA" address="0x000130D8" value="0x00000612" />
+        <register type="OA" address="0x000130D8" value="0x00001602" />
         <register type="OA" address="0x000130DC" value="0x00000000" />
-        <register type="OA" address="0x000130E0" value="0x00000629" />
+        <register type="OA" address="0x000130E0" value="0x00001606" />
         <register type="OA" address="0x000130E4" value="0x00000000" />
-        <register type="OA" address="0x000130E8" value="0x0000060C" />
+        <register type="OA" address="0x000130E8" value="0x00001807" />
         <register type="OA" address="0x000130EC" value="0x00000000" />
-        <register type="OA" address="0x000130F0" value="0x0000060D" />
+        <register type="OA" address="0x000130F0" value="0x00001808" />
         <register type="OA" address="0x000130F4" value="0x00000000" />
-        <register type="OA" address="0x000130F8" value="0x00000613" />
-        <register type="OA" address="0x000130FC" value="0x00000000" />
         <register type="OA" address="0x00013300" value="0x00005A00" />
         <register type="OA" address="0x00013304" value="0x00000000" />
         <register type="OA" address="0x00013500" value="0x00005A00" />
@@ -1529,144 +4650,154 @@
         <register type="OA" address="0x00013514" value="0x00000000" />
         <register type="OA" address="0x00013710" value="0x00006805" />
         <register type="OA" address="0x00013714" value="0x00000000" />
-        <register type="OA" address="0x00013318" value="0x00006002" />
+        <register type="OA" address="0x00013318" value="0x00006600" />
         <register type="OA" address="0x0001331C" value="0x00000000" />
-        <register type="OA" address="0x00013518" value="0x00006002" />
+        <register type="OA" address="0x00013518" value="0x00006600" />
         <register type="OA" address="0x0001351C" value="0x00000000" />
-        <register type="OA" address="0x00013718" value="0x00006002" />
+        <register type="OA" address="0x00013718" value="0x00006600" />
         <register type="OA" address="0x0001371C" value="0x00000000" />
-        <register type="OA" address="0x00013320" value="0x00006014" />
+        <register type="OA" address="0x00013320" value="0x00006604" />
         <register type="OA" address="0x00013324" value="0x00000000" />
-        <register type="OA" address="0x00013520" value="0x00006014" />
+        <register type="OA" address="0x00013520" value="0x00006604" />
         <register type="OA" address="0x00013524" value="0x00000000" />
-        <register type="OA" address="0x00013720" value="0x00006014" />
+        <register type="OA" address="0x00013720" value="0x00006604" />
         <register type="OA" address="0x00013724" value="0x00000000" />
-        <register type="OA" address="0x00013328" value="0x00006012" />
+        <register type="OA" address="0x00013328" value="0x00006602" />
         <register type="OA" address="0x0001332C" value="0x00000000" />
-        <register type="OA" address="0x00013528" value="0x00006012" />
+        <register type="OA" address="0x00013528" value="0x00006602" />
         <register type="OA" address="0x0001352C" value="0x00000000" />
-        <register type="OA" address="0x00013728" value="0x00006012" />
+        <register type="OA" address="0x00013728" value="0x00006602" />
         <register type="OA" address="0x0001372C" value="0x00000000" />
-        <register type="OA" address="0x00013330" value="0x00006000" />
+        <register type="OA" address="0x00013330" value="0x00004401" />
         <register type="OA" address="0x00013334" value="0x00000000" />
-        <register type="OA" address="0x00013530" value="0x00006000" />
+        <register type="OA" address="0x00013530" value="0x00004401" />
         <register type="OA" address="0x00013534" value="0x00000000" />
-        <register type="OA" address="0x00013730" value="0x00006000" />
+        <register type="OA" address="0x00013730" value="0x00004401" />
         <register type="OA" address="0x00013734" value="0x00000000" />
-        <register type="OA" address="0x00013338" value="0x00006011" />
+        <register type="OA" address="0x00013338" value="0x00006610" />
         <register type="OA" address="0x0001333C" value="0x00000000" />
-        <register type="OA" address="0x00013538" value="0x00006011" />
+        <register type="OA" address="0x00013538" value="0x00006610" />
         <register type="OA" address="0x0001353C" value="0x00000000" />
-        <register type="OA" address="0x00013738" value="0x00006011" />
+        <register type="OA" address="0x00013738" value="0x00006610" />
         <register type="OA" address="0x0001373C" value="0x00000000" />
-        <register type="OA" address="0x00013340" value="0x00006001" />
+        <register type="OA" address="0x00013340" value="0x00004407" />
         <register type="OA" address="0x00013344" value="0x00000000" />
-        <register type="OA" address="0x00013540" value="0x00006001" />
+        <register type="OA" address="0x00013540" value="0x00004407" />
         <register type="OA" address="0x00013544" value="0x00000000" />
-        <register type="OA" address="0x00013740" value="0x00006001" />
+        <register type="OA" address="0x00013740" value="0x00004407" />
         <register type="OA" address="0x00013744" value="0x00000000" />
-        <register type="OA" address="0x00013348" value="0x0000600F" />
+        <register type="OA" address="0x00013348" value="0x00004406" />
         <register type="OA" address="0x0001334C" value="0x00000000" />
-        <register type="OA" address="0x00013548" value="0x0000600F" />
+        <register type="OA" address="0x00013548" value="0x00004406" />
         <register type="OA" address="0x0001354C" value="0x00000000" />
-        <register type="OA" address="0x00013748" value="0x0000600F" />
+        <register type="OA" address="0x00013748" value="0x00004406" />
         <register type="OA" address="0x0001374C" value="0x00000000" />
-        <register type="OA" address="0x00013350" value="0x00006015" />
+        <register type="OA" address="0x00013350" value="0x00004403" />
         <register type="OA" address="0x00013354" value="0x00000000" />
-        <register type="OA" address="0x00013550" value="0x00006015" />
+        <register type="OA" address="0x00013550" value="0x00004403" />
         <register type="OA" address="0x00013554" value="0x00000000" />
-        <register type="OA" address="0x00013750" value="0x00006015" />
+        <register type="OA" address="0x00013750" value="0x00004403" />
         <register type="OA" address="0x00013754" value="0x00000000" />
-        <register type="OA" address="0x00013358" value="0x00006013" />
+        <register type="OA" address="0x00013358" value="0x00004201" />
         <register type="OA" address="0x0001335C" value="0x00000000" />
-        <register type="OA" address="0x00013558" value="0x00006013" />
+        <register type="OA" address="0x00013558" value="0x00004201" />
         <register type="OA" address="0x0001355C" value="0x00000000" />
-        <register type="OA" address="0x00013758" value="0x00006013" />
+        <register type="OA" address="0x00013758" value="0x00004201" />
         <register type="OA" address="0x0001375C" value="0x00000000" />
-        <register type="OA" address="0x00013360" value="0x00006010" />
+        <register type="OA" address="0x00013360" value="0x00004002" />
         <register type="OA" address="0x00013364" value="0x00000000" />
-        <register type="OA" address="0x00013560" value="0x00006010" />
+        <register type="OA" address="0x00013560" value="0x00004002" />
         <register type="OA" address="0x00013564" value="0x00000000" />
-        <register type="OA" address="0x00013760" value="0x00006010" />
+        <register type="OA" address="0x00013760" value="0x00004002" />
         <register type="OA" address="0x00013764" value="0x00000000" />
-        <register type="OA" address="0x00013368" value="0x00005009" />
+        <register type="OA" address="0x00013368" value="0x00004202" />
         <register type="OA" address="0x0001336C" value="0x00000000" />
-        <register type="OA" address="0x00013568" value="0x00005009" />
+        <register type="OA" address="0x00013568" value="0x00004202" />
         <register type="OA" address="0x0001356C" value="0x00000000" />
-        <register type="OA" address="0x00013768" value="0x00005009" />
+        <register type="OA" address="0x00013768" value="0x00004202" />
         <register type="OA" address="0x0001376C" value="0x00000000" />
-        <register type="OA" address="0x00013370" value="0x00005008" />
+        <register type="OA" address="0x00013370" value="0x00004200" />
         <register type="OA" address="0x00013374" value="0x00000000" />
-        <register type="OA" address="0x00013570" value="0x00005008" />
+        <register type="OA" address="0x00013570" value="0x00004200" />
         <register type="OA" address="0x00013574" value="0x00000000" />
-        <register type="OA" address="0x00013770" value="0x00005008" />
+        <register type="OA" address="0x00013770" value="0x00004200" />
         <register type="OA" address="0x00013774" value="0x00000000" />
-        <register type="OA" address="0x00013378" value="0x00005013" />
+        <register type="OA" address="0x00013378" value="0x00004007" />
         <register type="OA" address="0x0001337C" value="0x00000000" />
-        <register type="OA" address="0x00013578" value="0x00005013" />
+        <register type="OA" address="0x00013578" value="0x00004007" />
         <register type="OA" address="0x0001357C" value="0x00000000" />
-        <register type="OA" address="0x00013778" value="0x00005013" />
+        <register type="OA" address="0x00013778" value="0x00004007" />
         <register type="OA" address="0x0001377C" value="0x00000000" />
-        <register type="OA" address="0x00013380" value="0x00005012" />
+        <register type="OA" address="0x00013380" value="0x00004008" />
         <register type="OA" address="0x00013384" value="0x00000000" />
-        <register type="OA" address="0x00013580" value="0x00005012" />
+        <register type="OA" address="0x00013580" value="0x00004008" />
         <register type="OA" address="0x00013584" value="0x00000000" />
-        <register type="OA" address="0x00013780" value="0x00005012" />
+        <register type="OA" address="0x00013780" value="0x00004008" />
         <register type="OA" address="0x00013784" value="0x00000000" />
-        <register type="OA" address="0x00013388" value="0x00004600" />
+        <register type="OA" address="0x00013388" value="0x00004E04" />
         <register type="OA" address="0x0001338C" value="0x00000000" />
-        <register type="OA" address="0x00013588" value="0x00004600" />
+        <register type="OA" address="0x00013588" value="0x00004E04" />
         <register type="OA" address="0x0001358C" value="0x00000000" />
-        <register type="OA" address="0x00013788" value="0x00004600" />
+        <register type="OA" address="0x00013788" value="0x00004E04" />
         <register type="OA" address="0x0001378C" value="0x00000000" />
-        <register type="OA" address="0x00013390" value="0x00004601" />
+        <register type="OA" address="0x00013390" value="0x00004E03" />
         <register type="OA" address="0x00013394" value="0x00000000" />
-        <register type="OA" address="0x00013590" value="0x00004601" />
+        <register type="OA" address="0x00013590" value="0x00004E03" />
         <register type="OA" address="0x00013594" value="0x00000000" />
-        <register type="OA" address="0x00013790" value="0x00004601" />
+        <register type="OA" address="0x00013790" value="0x00004E03" />
         <register type="OA" address="0x00013794" value="0x00000000" />
-        <register type="OA" address="0x00013398" value="0x00005E0A" />
+        <register type="OA" address="0x00013398" value="0x00006800" />
         <register type="OA" address="0x0001339C" value="0x00000000" />
-        <register type="OA" address="0x00013598" value="0x00005E0A" />
+        <register type="OA" address="0x00013598" value="0x00006800" />
         <register type="OA" address="0x0001359C" value="0x00000000" />
-        <register type="OA" address="0x00013798" value="0x00005E0A" />
+        <register type="OA" address="0x00013798" value="0x00006800" />
         <register type="OA" address="0x0001379C" value="0x00000000" />
-        <register type="OA" address="0x000133A0" value="0x00005E0B" />
+        <register type="OA" address="0x000133A0" value="0x00006803" />
         <register type="OA" address="0x000133A4" value="0x00000000" />
-        <register type="OA" address="0x000135A0" value="0x00005E0B" />
+        <register type="OA" address="0x000135A0" value="0x00006803" />
         <register type="OA" address="0x000135A4" value="0x00000000" />
-        <register type="OA" address="0x000137A0" value="0x00005E0B" />
+        <register type="OA" address="0x000137A0" value="0x00006803" />
         <register type="OA" address="0x000137A4" value="0x00000000" />
-        <register type="OA" address="0x000133A8" value="0x00005C00" />
+        <register type="OA" address="0x000133A8" value="0x00006804" />
         <register type="OA" address="0x000133AC" value="0x00000000" />
-        <register type="OA" address="0x000135A8" value="0x00005C00" />
+        <register type="OA" address="0x000135A8" value="0x00006804" />
         <register type="OA" address="0x000135AC" value="0x00000000" />
-        <register type="OA" address="0x000137A8" value="0x00005C00" />
+        <register type="OA" address="0x000137A8" value="0x00006804" />
         <register type="OA" address="0x000137AC" value="0x00000000" />
-        <register type="OA" address="0x000133B0" value="0x00005E04" />
+        <register type="OA" address="0x000133B0" value="0x00005011" />
         <register type="OA" address="0x000133B4" value="0x00000000" />
-        <register type="OA" address="0x000135B0" value="0x00005E04" />
+        <register type="OA" address="0x000135B0" value="0x00005011" />
         <register type="OA" address="0x000135B4" value="0x00000000" />
-        <register type="OA" address="0x000137B0" value="0x00005E04" />
+        <register type="OA" address="0x000137B0" value="0x00005011" />
         <register type="OA" address="0x000137B4" value="0x00000000" />
-    </register_config>
-    <register_config type="FLEX">
-        <register type="FLEX" address="0x0000E458" value="0x00000000" />
-        <register type="FLEX" address="0x0000E558" value="0x00000000" />
-        <register type="FLEX" address="0x0000E658" value="0x00000000" />
-        <register type="FLEX" address="0x0000E758" value="0x00000000" />
-        <register type="FLEX" address="0x0000E45C" value="0x00000000" />
-        <register type="FLEX" address="0x0000E65C" value="0x00000000" />
+        <register type="OA" address="0x000133B8" value="0x00004E00" />
+        <register type="OA" address="0x000133BC" value="0x00000000" />
+        <register type="OA" address="0x000135B8" value="0x00004E00" />
+        <register type="OA" address="0x000135BC" value="0x00000000" />
+        <register type="OA" address="0x000137B8" value="0x00004E00" />
+        <register type="OA" address="0x000137BC" value="0x00000000" />
+        <register type="OA" address="0x000133C0" value="0x00004E01" />
+        <register type="OA" address="0x000133C4" value="0x00000000" />
+        <register type="OA" address="0x000135C0" value="0x00004E01" />
+        <register type="OA" address="0x000135C4" value="0x00000000" />
+        <register type="OA" address="0x000137C0" value="0x00004E01" />
+        <register type="OA" address="0x000137C4" value="0x00000000" />
+        <register type="OA" address="0x000133C8" value="0x00004E02" />
+        <register type="OA" address="0x000133CC" value="0x00000000" />
+        <register type="OA" address="0x000135C8" value="0x00004E02" />
+        <register type="OA" address="0x000135CC" value="0x00000000" />
+        <register type="OA" address="0x000137C8" value="0x00004E02" />
+        <register type="OA" address="0x000137CC" value="0x00000000" />
     </register_config>
   </set>
 
-  <set name="VectorEngineStalls"
+  <set name="RTProfile"
        chipset="LNL"
-       symbol_name="VectorEngineStalls"
-       underscore_name="vector_engine_stalls"
+       symbol_name="RTProfile"
+       underscore_name="rt_profile"
        mdapi_supported_apis="VK OGL OCL IO"
-       oa_format="256B_GENERIC_NOA16"
-       hw_config_guid="4ccd6535-fb9a-440f-b0f5-882879dc4cb0"
+       oa_format="576B_PEC64LL"
+       hw_config_guid="d66ce633-4ae5-4de2-8678-9705adfd45bc"
        >
     <counter name="GPU Time Elapsed"
              symbol_name="GpuTime"
@@ -1681,591 +4812,1430 @@
              mdapi_supported_apis=""
              mdapi_hw_unit_type="gpu"
              />
-    <register_config type="OA">
-        <register type="OA" address="0x00013000" value="0x00001801" />
-        <register type="OA" address="0x00013004" value="0x00000000" />
-        <register type="OA" address="0x00013008" value="0x00001802" />
-        <register type="OA" address="0x0001300C" value="0x00000000" />
-        <register type="OA" address="0x00013010" value="0x0000061D" />
-        <register type="OA" address="0x00013014" value="0x00000000" />
-        <register type="OA" address="0x00013018" value="0x0000061B" />
-        <register type="OA" address="0x0001301C" value="0x00000000" />
-        <register type="OA" address="0x00013020" value="0x00000620" />
-        <register type="OA" address="0x00013024" value="0x00000000" />
-        <register type="OA" address="0x00013028" value="0x0000061A" />
-        <register type="OA" address="0x0001302C" value="0x00000000" />
-        <register type="OA" address="0x00013030" value="0x00000621" />
-        <register type="OA" address="0x00013034" value="0x00000000" />
-        <register type="OA" address="0x00013038" value="0x00000600" />
-        <register type="OA" address="0x0001303C" value="0x00000000" />
-        <register type="OA" address="0x00013040" value="0x00000606" />
-        <register type="OA" address="0x00013044" value="0x00000000" />
-        <register type="OA" address="0x00013048" value="0x00000604" />
-        <register type="OA" address="0x0001304C" value="0x00000000" />
-        <register type="OA" address="0x00013050" value="0x00000624" />
-        <register type="OA" address="0x00013054" value="0x00000000" />
-        <register type="OA" address="0x00013058" value="0x00000625" />
-        <register type="OA" address="0x0001305C" value="0x00000000" />
-        <register type="OA" address="0x00013060" value="0x00000626" />
-        <register type="OA" address="0x00013064" value="0x00000000" />
-        <register type="OA" address="0x000130A8" value="0x0000061F" />
-        <register type="OA" address="0x000130AC" value="0x00000000" />
-        <register type="OA" address="0x000130B0" value="0x00000628" />
-        <register type="OA" address="0x000130B4" value="0x00000000" />
-        <register type="OA" address="0x000130B8" value="0x0000061C" />
-        <register type="OA" address="0x000130BC" value="0x00000000" />
-        <register type="OA" address="0x000130C0" value="0x0000061E" />
-        <register type="OA" address="0x000130C4" value="0x00000000" />
-        <register type="OA" address="0x000130C8" value="0x00001601" />
-        <register type="OA" address="0x000130CC" value="0x00000000" />
-        <register type="OA" address="0x000130D0" value="0x00001604" />
-        <register type="OA" address="0x000130D4" value="0x00000000" />
-        <register type="OA" address="0x000130D8" value="0x00001602" />
-        <register type="OA" address="0x000130DC" value="0x00000000" />
-        <register type="OA" address="0x000130E0" value="0x00001606" />
-        <register type="OA" address="0x000130E4" value="0x00000000" />
-        <register type="OA" address="0x000130E8" value="0x00001807" />
-        <register type="OA" address="0x000130EC" value="0x00000000" />
-        <register type="OA" address="0x000130F0" value="0x00001808" />
-        <register type="OA" address="0x000130F4" value="0x00000000" />
-        <register type="OA" address="0x000130F8" value="0x00000605" />
-        <register type="OA" address="0x000130FC" value="0x00000000" />
-        <register type="OA" address="0x00013300" value="0x00005A00" />
-        <register type="OA" address="0x00013304" value="0x00000000" />
-        <register type="OA" address="0x00013500" value="0x00005A00" />
-        <register type="OA" address="0x00013504" value="0x00000000" />
-        <register type="OA" address="0x00013700" value="0x00005A00" />
-        <register type="OA" address="0x00013704" value="0x00000000" />
-        <register type="OA" address="0x00013308" value="0x00004405" />
-        <register type="OA" address="0x0001330C" value="0x00000000" />
-        <register type="OA" address="0x00013508" value="0x00004405" />
-        <register type="OA" address="0x0001350C" value="0x00000000" />
-        <register type="OA" address="0x00013708" value="0x00004405" />
-        <register type="OA" address="0x0001370C" value="0x00000000" />
-        <register type="OA" address="0x00013310" value="0x00006805" />
-        <register type="OA" address="0x00013314" value="0x00000000" />
-        <register type="OA" address="0x00013510" value="0x00006805" />
-        <register type="OA" address="0x00013514" value="0x00000000" />
-        <register type="OA" address="0x00013710" value="0x00006805" />
-        <register type="OA" address="0x00013714" value="0x00000000" />
-    </register_config>
-    <register_config type="FLEX">
-        <register type="FLEX" address="0x0000E458" value="0x00000000" />
-        <register type="FLEX" address="0x0000E558" value="0x00000000" />
-    </register_config>
-  </set>
-
-  <set name="TestOa"
-       chipset="LNL"
-       symbol_name="TestOa"
-       underscore_name="test_oa"
-       mdapi_supported_apis="VK OGL OCL IO"
-       oa_format="256B_GENERIC_NOA16"
-       hw_config_guid="24c33f2c-f8d9-40d9-b2db-64e863b4d625"
-       >
-    <counter name="GPU Time Elapsed"
-             symbol_name="GpuTime"
-             underscore_name="gpu_time"
-             description="Time elapsed on the GPU during the measurement."
+    <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="GPU Busy"
+             symbol_name="GPU_BUSY"
+             underscore_name="gpu_busy"
+             description="Percentage of time in which GPU is not idle including all GPU engines"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 32 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="IA Vertex"
+             symbol_name="IA_VERTEX"
+             underscore_name="ia_vertex"
+             description="Number of vertices in a draw"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 33 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GpGpu Threadgroup Count"
+             symbol_name="GPGPU_THREADGROUP_COUNT"
+             underscore_name="gpgpu_threadgroup_count"
+             description="Number of GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 0 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Async GpGpu Threadgroup Count"
+             symbol_name="ASYNC_GPGPU_THREADGROUP_COUNT"
+             underscore_name="async_gpgpu_threadgroup_count"
+             description="Number of Async GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 1 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Rasterizer Sample Output"
+             symbol_name="RASTERIZER_SAMPLE_OUTPUT"
+             underscore_name="rasterizer_sample_output"
+             description="Number of lit samples emitted by Rasterizer"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 34 READ"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Any Hit Thread Ray Dispatch"
+             symbol_name="RT_ANY_HIT_THREAD_RAY_DISPATCH"
+             underscore_name="rt_any_hit_thread_ray_dispatch"
+             description="Number of any hit threads dispatched for RayQuery only"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 2 READ"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Callable Thread Ray Dispatch"
+             symbol_name="RT_CALLABLE_THREAD_RAY_DISPATCH"
+             underscore_name="rt_callable_thread_ray_dispatch"
+             description="Number of callable threads dispatched for RayQuery only"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 3 READ"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Closest Hit Thread Ray Dispatch"
+             symbol_name="RT_CLOSEST_HIT_THREAD_RAY_DISPATCH"
+             underscore_name="rt_closest_hit_thread_ray_dispatch"
+             description="Number of closest hit threads dispatched for RayQuery only"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 4 READ"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Input Message Spawn Count"
+             symbol_name="RT_INPUT_MESSAGE_SPAWN_COUNT"
+             underscore_name="rt_input_message_spawn_count"
+             description="Number of valid SIMD lanes in the Spawn message"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 5 READ"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Instance Node Ray Count"
+             symbol_name="RT_INSTANCE_NODE_RAY_COUNT"
+             underscore_name="rt_instance_node_ray_count"
+             description="Number of instance BVH nodes processed by the traversal function"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 6 READ"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Internal Node Ray Count"
+             symbol_name="RT_INTERNAL_NODE_RAY_COUNT"
+             underscore_name="rt_internal_node_ray_count"
+             description="Number of internal BVH nodes processed by the traversal function"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 21 READ"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Intersection Thread Ray Dispatch"
+             symbol_name="RT_INTERSECTION_THREAD_RAY_DISPATCH"
+             underscore_name="rt_intersection_thread_ray_dispatch"
+             description="Number of intersection threads dispatched for RayQuery only"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 22 READ"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Message Stall"
+             symbol_name="RT_MESSAGE_STALL"
+             underscore_name="rt_message_stall"
+             description="Percentage of time in which Ray Tracing message input is stalled while accepting input"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 23 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Miss Thread Ray Dispatch"
+             symbol_name="RT_MISS_THREAD_RAY_DISPATCH"
+             underscore_name="rt_miss_thread_ray_dispatch"
+             description="Number of miss threads dispatched for RayQuery only"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 24 READ"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Procedural Node Ray Count"
+             symbol_name="RT_PROCEDURAL_NODE_RAY_COUNT"
+             underscore_name="rt_procedural_node_ray_count"
+             description="Number of procedural BVH nodes processed by the traversal function"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 25 READ"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Quad Leaf Ray Count"
+             symbol_name="RT_QUAD_LEAF_RAY_COUNT"
+             underscore_name="rt_quad_leaf_ray_count"
+             description="Number of triangle BVH nodes processed by the traversal function"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 26 READ"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Quad Test Ray Count"
+             symbol_name="RT_QUAD_TEST_RAY_COUNT"
+             underscore_name="rt_quad_test_ray_count"
+             description="Number of nodes processed that use ray-quad intersection pipeline"
              data_type="uint64"
-             units="ns"
+             units="events"
              semantic_type="event"
-             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
-             mdapi_group="GPU"
-             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             equation="PEC 27 READ"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
              mdapi_supported_apis=""
              mdapi_hw_unit_type="gpu"
              />
-    <register_config type="OA">
-        <register type="OA" address="0x00013000" value="0x00001801" />
-        <register type="OA" address="0x00013004" value="0x00000000" />
-        <register type="OA" address="0x00013008" value="0x00001802" />
-        <register type="OA" address="0x0001300C" value="0x00000000" />
-        <register type="OA" address="0x00013010" value="0x00003E00" />
-        <register type="OA" address="0x00013014" value="0x00000000" />
-        <register type="OA" address="0x00013300" value="0x00005A00" />
-        <register type="OA" address="0x00013304" value="0x00000000" />
-        <register type="OA" address="0x00013500" value="0x00005A00" />
-        <register type="OA" address="0x00013504" value="0x00000000" />
-        <register type="OA" address="0x00013700" value="0x00005A00" />
-        <register type="OA" address="0x00013704" value="0x00000000" />
-        <register type="OA" address="0x00013308" value="0x00004405" />
-        <register type="OA" address="0x0001330C" value="0x00000000" />
-        <register type="OA" address="0x00013508" value="0x00004405" />
-        <register type="OA" address="0x0001350C" value="0x00000000" />
-        <register type="OA" address="0x00013708" value="0x00004405" />
-        <register type="OA" address="0x0001370C" value="0x00000000" />
-        <register type="OA" address="0x00013310" value="0x00006805" />
-        <register type="OA" address="0x00013314" value="0x00000000" />
-        <register type="OA" address="0x00013510" value="0x00006805" />
-        <register type="OA" address="0x00013514" value="0x00000000" />
-        <register type="OA" address="0x00013710" value="0x00006805" />
-        <register type="OA" address="0x00013714" value="0x00000000" />
-        <register type="OA" address="0x00013318" value="0x00007E00" />
-        <register type="OA" address="0x0001331C" value="0x00000000" />
-        <register type="OA" address="0x00013518" value="0x00007E00" />
-        <register type="OA" address="0x0001351C" value="0x00000000" />
-        <register type="OA" address="0x00013718" value="0x00007E00" />
-        <register type="OA" address="0x0001371C" value="0x00000000" />
-    </register_config>
-  </set>
-
-  <set name="MetricSet1"
-       chipset="LNL"
-       symbol_name="MetricSet1"
-       underscore_name="metric_set1"
-       mdapi_supported_apis="VK OGL OCL IO"
-       oa_format="256B_GENERIC_NOA16"
-       hw_config_guid="0af24f48-05bc-467b-b561-33dec252e651"
-       >
-    <counter name="GPU Time Elapsed"
-             symbol_name="GpuTime"
-             underscore_name="gpu_time"
-             description="Time elapsed on the GPU during the measurement."
+    <counter name="RT Request Collision"
+             symbol_name="RT_REQUEST_COLLISION"
+             underscore_name="rt_request_collision"
+             description="Percentage of time in which Ray Tracing Leaf has two Traversal inputs valid"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 28 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Transform Ray Count"
+             symbol_name="RT_TRANSFORM_RAY_COUNT"
+             underscore_name="rt_transform_ray_count"
+             description="Number of only HW transform accesses"
              data_type="uint64"
-             units="ns"
+             units="events"
              semantic_type="event"
-             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
-             mdapi_group="GPU"
-             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             equation="PEC 29 READ"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Traversal Input Ray Count"
+             symbol_name="RT_TRAVERSAL_INPUT_RAY_COUNT"
+             underscore_name="rt_traversal_input_ray_count"
+             description="Number of Ray Tracing Traversal input rays"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 30 READ"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Traversal Output Ray Count"
+             symbol_name="RT_TRAVERSAL_OUTPUT_RAY_COUNT"
+             underscore_name="rt_traversal_output_ray_count"
+             description="Number of Ray Tracing Traversal output rays"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 31 READ"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Traversal Stall"
+             symbol_name="RT_TRAVERSAL_STALL"
+             underscore_name="rt_traversal_stall"
+             description="Percentage of time in which Ray Tracing Frontend is stalled by Traversal"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 7 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Traversal Step Ray Count"
+             symbol_name="RT_TRAVERSAL_STEP_RAY_COUNT"
+             underscore_name="rt_traversal_step_ray_count"
+             description="Number of BVH nodes processed"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 8 READ"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU0 RT AHS"
+             symbol_name="XVE_INST_EXECUTED_ALU0_RT_AHS"
+             underscore_name="xve_inst_executed_alu0_rt_ahs"
+             description="Number of execution slots taken by instructions executed by RT_AHS threads on ALU0 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 9 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU0 RT CHS"
+             symbol_name="XVE_INST_EXECUTED_ALU0_RT_CHS"
+             underscore_name="xve_inst_executed_alu0_rt_chs"
+             description="Number of execution slots taken by instructions executed by RT_CHS threads on ALU0 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 10 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU0 RT MS"
+             symbol_name="XVE_INST_EXECUTED_ALU0_RT_MS"
+             underscore_name="xve_inst_executed_alu0_rt_ms"
+             description="Number of execution slots taken by instructions executed by RT_MS threads on ALU0 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 11 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU1 RT AHS"
+             symbol_name="XVE_INST_EXECUTED_ALU1_RT_AHS"
+             underscore_name="xve_inst_executed_alu1_rt_ahs"
+             description="Number of execution slots taken by instructions executed by RT_AHS threads on ALU1 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 12 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU1 RT CHS"
+             symbol_name="XVE_INST_EXECUTED_ALU1_RT_CHS"
+             underscore_name="xve_inst_executed_alu1_rt_chs"
+             description="Number of execution slots taken by instructions executed by RT_CHS threads on ALU1 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 13 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU1 RT MS"
+             symbol_name="XVE_INST_EXECUTED_ALU1_RT_MS"
+             underscore_name="xve_inst_executed_alu1_rt_ms"
+             description="Number of execution slots taken by instructions executed by RT_MS threads on ALU1 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 14 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Threads Occupancy All"
+             symbol_name="XVE_THREADS_OCCUPANCY_ALL"
+             underscore_name="xve_threads_occupancy_all"
+             description="Percentage of thread slots occupied by ALL threads"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 15 READ 8 UMUL $VectorEngineThreadsCount $VectorEngineTotalCount UMUL UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT BVH Cache Miss"
+             symbol_name="RT_BVH_CACHE_MISS"
+             underscore_name="rt_bvh_cache_miss"
+             description="Number of BVH cache misses for RayQuery only"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 16 READ"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Input Message Ray Count"
+             symbol_name="RT_INPUT_MESSAGE_RAY_COUNT"
+             underscore_name="rt_input_message_ray_count"
+             description="Number of valid SIMD lanes in the TraceRay message"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 17 READ"
+             mdapi_group="Ray Tracing"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Load Store Cache Read Message Count"
+             symbol_name="RT_LOAD_STORE_CACHE_READ_MESSAGE_COUNT"
+             underscore_name="rt_load_store_cache_read_message_count"
+             description="Number of read messages sent from Ray Tracing unit to the Load Store Cache"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="PEC 18 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="RT Load Store Cache Write From Message Count"
+             symbol_name="RT_LOAD_STORE_CACHE_WRITE_FROM_MESSAGE_COUNT"
+             underscore_name="rt_load_store_cache_write_from_message_count"
+             description="Number of write messages sent from Ray Tracing unit to the Load Store Cache"
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="PEC 19 READ"
+             mdapi_group="L1 Cache"
+             mdapi_usage_flags="Frame Batch Draw"
              mdapi_supported_apis=""
              mdapi_hw_unit_type="gpu"
              />
     <register_config type="OA">
-        <register type="OA" address="0x00013000" value="0x00000001" />
+        <register type="OA" address="0x00013000" value="0x00001801" />
         <register type="OA" address="0x00013004" value="0x00000000" />
-        <register type="OA" address="0x00013008" value="0x00000002" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
         <register type="OA" address="0x0001300C" value="0x00000000" />
-        <register type="OA" address="0x00013010" value="0x00000003" />
+        <register type="OA" address="0x00013010" value="0x00000C03" />
         <register type="OA" address="0x00013014" value="0x00000000" />
-        <register type="OA" address="0x00013018" value="0x00000004" />
+        <register type="OA" address="0x00013018" value="0x00000C04" />
         <register type="OA" address="0x0001301C" value="0x00000000" />
-        <register type="OA" address="0x00013020" value="0x00000005" />
+        <register type="OA" address="0x00013020" value="0x00000C00" />
         <register type="OA" address="0x00013024" value="0x00000000" />
-        <register type="OA" address="0x00013028" value="0x00000006" />
+        <register type="OA" address="0x00013028" value="0x00000C1A" />
         <register type="OA" address="0x0001302C" value="0x00000000" />
-        <register type="OA" address="0x00013030" value="0x00000007" />
+        <register type="OA" address="0x00013030" value="0x00000C2F" />
         <register type="OA" address="0x00013034" value="0x00000000" />
-        <register type="OA" address="0x00013038" value="0x00000400" />
+        <register type="OA" address="0x00013038" value="0x00000C1D" />
         <register type="OA" address="0x0001303C" value="0x00000000" />
-        <register type="OA" address="0x00013040" value="0x00000401" />
+        <register type="OA" address="0x00013040" value="0x00000C2A" />
         <register type="OA" address="0x00013044" value="0x00000000" />
-        <register type="OA" address="0x00013048" value="0x00000402" />
+        <register type="OA" address="0x00013048" value="0x0000060F" />
         <register type="OA" address="0x0001304C" value="0x00000000" />
-        <register type="OA" address="0x00013050" value="0x00000600" />
+        <register type="OA" address="0x00013050" value="0x0000060F" />
         <register type="OA" address="0x00013054" value="0x00000000" />
-        <register type="OA" address="0x00013058" value="0x00000601" />
+        <register type="OA" address="0x00013058" value="0x0000060F" />
         <register type="OA" address="0x0001305C" value="0x00000000" />
-        <register type="OA" address="0x00013060" value="0x00000602" />
+        <register type="OA" address="0x00013060" value="0x00000603" />
         <register type="OA" address="0x00013064" value="0x00000000" />
         <register type="OA" address="0x00013068" value="0x00000603" />
         <register type="OA" address="0x0001306C" value="0x00000000" />
-        <register type="OA" address="0x00013070" value="0x00000604" />
+        <register type="OA" address="0x00013070" value="0x00000603" />
         <register type="OA" address="0x00013074" value="0x00000000" />
-        <register type="OA" address="0x00013078" value="0x00000605" />
+        <register type="OA" address="0x00013078" value="0x00000604" />
         <register type="OA" address="0x0001307C" value="0x00000000" />
-        <register type="OA" address="0x00013080" value="0x00000606" />
+        <register type="OA" address="0x00013080" value="0x00000C10" />
         <register type="OA" address="0x00013084" value="0x00000000" />
-        <register type="OA" address="0x00013088" value="0x00000607" />
+        <register type="OA" address="0x00013088" value="0x00000C18" />
         <register type="OA" address="0x0001308C" value="0x00000000" />
-        <register type="OA" address="0x00013090" value="0x00000608" />
+        <register type="OA" address="0x00013090" value="0x00000A08" />
         <register type="OA" address="0x00013094" value="0x00000000" />
-        <register type="OA" address="0x00013098" value="0x00000609" />
+        <register type="OA" address="0x00013098" value="0x00000A09" />
         <register type="OA" address="0x0001309C" value="0x00000000" />
-        <register type="OA" address="0x000130A0" value="0x0000060A" />
-        <register type="OA" address="0x000130A4" value="0x00000000" />
-        <register type="OA" address="0x000130A8" value="0x0000060B" />
+        <register type="OA" address="0x000130A8" value="0x00000C2D" />
         <register type="OA" address="0x000130AC" value="0x00000000" />
-        <register type="OA" address="0x000130B0" value="0x0000060C" />
+        <register type="OA" address="0x000130B0" value="0x00000C02" />
         <register type="OA" address="0x000130B4" value="0x00000000" />
-        <register type="OA" address="0x000130B8" value="0x0000060D" />
+        <register type="OA" address="0x000130B8" value="0x00000C19" />
         <register type="OA" address="0x000130BC" value="0x00000000" />
-        <register type="OA" address="0x000130C0" value="0x0000060E" />
+        <register type="OA" address="0x000130C0" value="0x00000C01" />
         <register type="OA" address="0x000130C4" value="0x00000000" />
-        <register type="OA" address="0x000130C8" value="0x0000060F" />
+        <register type="OA" address="0x000130C8" value="0x00000C2E" />
         <register type="OA" address="0x000130CC" value="0x00000000" />
-        <register type="OA" address="0x000130D0" value="0x00000610" />
+        <register type="OA" address="0x000130D0" value="0x00000C30" />
         <register type="OA" address="0x000130D4" value="0x00000000" />
-        <register type="OA" address="0x000130D8" value="0x00000611" />
+        <register type="OA" address="0x000130D8" value="0x00000C2B" />
         <register type="OA" address="0x000130DC" value="0x00000000" />
-        <register type="OA" address="0x000130E0" value="0x00000612" />
+        <register type="OA" address="0x000130E0" value="0x00000C20" />
         <register type="OA" address="0x000130E4" value="0x00000000" />
-        <register type="OA" address="0x000130E8" value="0x00000613" />
+        <register type="OA" address="0x000130E8" value="0x00000C2C" />
         <register type="OA" address="0x000130EC" value="0x00000000" />
-        <register type="OA" address="0x000130F0" value="0x00000614" />
+        <register type="OA" address="0x000130F0" value="0x00000C28" />
         <register type="OA" address="0x000130F4" value="0x00000000" />
-        <register type="OA" address="0x000130F8" value="0x00000615" />
+        <register type="OA" address="0x000130F8" value="0x00000C29" />
         <register type="OA" address="0x000130FC" value="0x00000000" />
-        <register type="OA" address="0x00013300" value="0x00004000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
         <register type="OA" address="0x00013304" value="0x00000000" />
-        <register type="OA" address="0x00013500" value="0x00004000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
         <register type="OA" address="0x00013504" value="0x00000000" />
-        <register type="OA" address="0x00013700" value="0x00004000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
         <register type="OA" address="0x00013704" value="0x00000000" />
-        <register type="OA" address="0x00013308" value="0x00004001" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
         <register type="OA" address="0x0001330C" value="0x00000000" />
-        <register type="OA" address="0x00013508" value="0x00004001" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
         <register type="OA" address="0x0001350C" value="0x00000000" />
-        <register type="OA" address="0x00013708" value="0x00004001" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
         <register type="OA" address="0x0001370C" value="0x00000000" />
-        <register type="OA" address="0x00013310" value="0x00004002" />
-        <register type="OA" address="0x00013314" value="0x00000000" />
-        <register type="OA" address="0x00013510" value="0x00004002" />
-        <register type="OA" address="0x00013514" value="0x00000000" />
-        <register type="OA" address="0x00013710" value="0x00004002" />
-        <register type="OA" address="0x00013714" value="0x00000000" />
-        <register type="OA" address="0x00013318" value="0x00004003" />
-        <register type="OA" address="0x0001331C" value="0x00000000" />
-        <register type="OA" address="0x00013518" value="0x00004003" />
-        <register type="OA" address="0x0001351C" value="0x00000000" />
-        <register type="OA" address="0x00013718" value="0x00004003" />
-        <register type="OA" address="0x0001371C" value="0x00000000" />
-        <register type="OA" address="0x00013320" value="0x00004004" />
-        <register type="OA" address="0x00013324" value="0x00000000" />
-        <register type="OA" address="0x00013520" value="0x00004004" />
-        <register type="OA" address="0x00013524" value="0x00000000" />
-        <register type="OA" address="0x00013720" value="0x00004004" />
-        <register type="OA" address="0x00013724" value="0x00000000" />
-        <register type="OA" address="0x00013328" value="0x00004005" />
-        <register type="OA" address="0x0001332C" value="0x00000000" />
-        <register type="OA" address="0x00013528" value="0x00004005" />
-        <register type="OA" address="0x0001352C" value="0x00000000" />
-        <register type="OA" address="0x00013728" value="0x00004005" />
-        <register type="OA" address="0x0001372C" value="0x00000000" />
-        <register type="OA" address="0x00013330" value="0x00004006" />
-        <register type="OA" address="0x00013334" value="0x00000000" />
-        <register type="OA" address="0x00013530" value="0x00004006" />
-        <register type="OA" address="0x00013534" value="0x00000000" />
-        <register type="OA" address="0x00013730" value="0x00004006" />
-        <register type="OA" address="0x00013734" value="0x00000000" />
-        <register type="OA" address="0x00013338" value="0x00004007" />
-        <register type="OA" address="0x0001333C" value="0x00000000" />
-        <register type="OA" address="0x00013538" value="0x00004007" />
-        <register type="OA" address="0x0001353C" value="0x00000000" />
-        <register type="OA" address="0x00013738" value="0x00004007" />
-        <register type="OA" address="0x0001373C" value="0x00000000" />
-        <register type="OA" address="0x00013340" value="0x00004008" />
-        <register type="OA" address="0x00013344" value="0x00000000" />
-        <register type="OA" address="0x00013540" value="0x00004008" />
-        <register type="OA" address="0x00013544" value="0x00000000" />
-        <register type="OA" address="0x00013740" value="0x00004008" />
-        <register type="OA" address="0x00013744" value="0x00000000" />
-        <register type="OA" address="0x00013348" value="0x00004200" />
-        <register type="OA" address="0x0001334C" value="0x00000000" />
-        <register type="OA" address="0x00013548" value="0x00004200" />
-        <register type="OA" address="0x0001354C" value="0x00000000" />
-        <register type="OA" address="0x00013748" value="0x00004200" />
-        <register type="OA" address="0x0001374C" value="0x00000000" />
-        <register type="OA" address="0x00013350" value="0x00004201" />
-        <register type="OA" address="0x00013354" value="0x00000000" />
-        <register type="OA" address="0x00013550" value="0x00004201" />
-        <register type="OA" address="0x00013554" value="0x00000000" />
-        <register type="OA" address="0x00013750" value="0x00004201" />
-        <register type="OA" address="0x00013754" value="0x00000000" />
-        <register type="OA" address="0x00013358" value="0x00004202" />
-        <register type="OA" address="0x0001335C" value="0x00000000" />
-        <register type="OA" address="0x00013558" value="0x00004202" />
-        <register type="OA" address="0x0001355C" value="0x00000000" />
-        <register type="OA" address="0x00013758" value="0x00004202" />
-        <register type="OA" address="0x0001375C" value="0x00000000" />
-        <register type="OA" address="0x00013360" value="0x00004400" />
-        <register type="OA" address="0x00013364" value="0x00000000" />
-        <register type="OA" address="0x00013560" value="0x00004400" />
-        <register type="OA" address="0x00013564" value="0x00000000" />
-        <register type="OA" address="0x00013760" value="0x00004400" />
-        <register type="OA" address="0x00013764" value="0x00000000" />
-        <register type="OA" address="0x00013368" value="0x00004401" />
-        <register type="OA" address="0x0001336C" value="0x00000000" />
-        <register type="OA" address="0x00013568" value="0x00004401" />
-        <register type="OA" address="0x0001356C" value="0x00000000" />
-        <register type="OA" address="0x00013768" value="0x00004401" />
-        <register type="OA" address="0x0001376C" value="0x00000000" />
-        <register type="OA" address="0x00013370" value="0x00004402" />
-        <register type="OA" address="0x00013374" value="0x00000000" />
-        <register type="OA" address="0x00013570" value="0x00004402" />
-        <register type="OA" address="0x00013574" value="0x00000000" />
-        <register type="OA" address="0x00013770" value="0x00004402" />
-        <register type="OA" address="0x00013774" value="0x00000000" />
-        <register type="OA" address="0x00013378" value="0x00004403" />
-        <register type="OA" address="0x0001337C" value="0x00000000" />
-        <register type="OA" address="0x00013578" value="0x00004403" />
-        <register type="OA" address="0x0001357C" value="0x00000000" />
-        <register type="OA" address="0x00013778" value="0x00004403" />
-        <register type="OA" address="0x0001377C" value="0x00000000" />
-        <register type="OA" address="0x00013380" value="0x00004404" />
-        <register type="OA" address="0x00013384" value="0x00000000" />
-        <register type="OA" address="0x00013580" value="0x00004404" />
-        <register type="OA" address="0x00013584" value="0x00000000" />
-        <register type="OA" address="0x00013780" value="0x00004404" />
-        <register type="OA" address="0x00013784" value="0x00000000" />
-        <register type="OA" address="0x00013388" value="0x00004405" />
-        <register type="OA" address="0x0001338C" value="0x00000000" />
-        <register type="OA" address="0x00013588" value="0x00004405" />
-        <register type="OA" address="0x0001358C" value="0x00000000" />
-        <register type="OA" address="0x00013788" value="0x00004405" />
-        <register type="OA" address="0x0001378C" value="0x00000000" />
-        <register type="OA" address="0x00013390" value="0x00004406" />
-        <register type="OA" address="0x00013394" value="0x00000000" />
-        <register type="OA" address="0x00013590" value="0x00004406" />
-        <register type="OA" address="0x00013594" value="0x00000000" />
-        <register type="OA" address="0x00013790" value="0x00004406" />
-        <register type="OA" address="0x00013794" value="0x00000000" />
-        <register type="OA" address="0x00013398" value="0x00004407" />
-        <register type="OA" address="0x0001339C" value="0x00000000" />
-        <register type="OA" address="0x00013598" value="0x00004407" />
-        <register type="OA" address="0x0001359C" value="0x00000000" />
-        <register type="OA" address="0x00013798" value="0x00004407" />
-        <register type="OA" address="0x0001379C" value="0x00000000" />
-        <register type="OA" address="0x000133A0" value="0x00004600" />
-        <register type="OA" address="0x000133A4" value="0x00000000" />
-        <register type="OA" address="0x000135A0" value="0x00004600" />
-        <register type="OA" address="0x000135A4" value="0x00000000" />
-        <register type="OA" address="0x000137A0" value="0x00004600" />
-        <register type="OA" address="0x000137A4" value="0x00000000" />
-        <register type="OA" address="0x000133A8" value="0x00004601" />
-        <register type="OA" address="0x000133AC" value="0x00000000" />
-        <register type="OA" address="0x000135A8" value="0x00004601" />
-        <register type="OA" address="0x000135AC" value="0x00000000" />
-        <register type="OA" address="0x000137A8" value="0x00004601" />
-        <register type="OA" address="0x000137AC" value="0x00000000" />
-        <register type="OA" address="0x000133B0" value="0x00004A00" />
-        <register type="OA" address="0x000133B4" value="0x00000000" />
-        <register type="OA" address="0x000135B0" value="0x00004A00" />
-        <register type="OA" address="0x000135B4" value="0x00000000" />
-        <register type="OA" address="0x000137B0" value="0x00004A00" />
-        <register type="OA" address="0x000137B4" value="0x00000000" />
-        <register type="OA" address="0x000133B8" value="0x00004A01" />
-        <register type="OA" address="0x000133BC" value="0x00000000" />
-        <register type="OA" address="0x000135B8" value="0x00004A01" />
-        <register type="OA" address="0x000135BC" value="0x00000000" />
-        <register type="OA" address="0x000137B8" value="0x00004A01" />
-        <register type="OA" address="0x000137BC" value="0x00000000" />
-        <register type="OA" address="0x000133C0" value="0x00004A02" />
-        <register type="OA" address="0x000133C4" value="0x00000000" />
-        <register type="OA" address="0x000135C0" value="0x00004A02" />
-        <register type="OA" address="0x000135C4" value="0x00000000" />
-        <register type="OA" address="0x000137C0" value="0x00004A02" />
-        <register type="OA" address="0x000137C4" value="0x00000000" />
-        <register type="OA" address="0x000133C8" value="0x00004C00" />
-        <register type="OA" address="0x000133CC" value="0x00000000" />
-        <register type="OA" address="0x000135C8" value="0x00004C00" />
-        <register type="OA" address="0x000135CC" value="0x00000000" />
-        <register type="OA" address="0x000137C8" value="0x00004C00" />
-        <register type="OA" address="0x000137CC" value="0x00000000" />
-        <register type="OA" address="0x000133D0" value="0x00004C01" />
-        <register type="OA" address="0x000133D4" value="0x00000000" />
-        <register type="OA" address="0x000135D0" value="0x00004C01" />
-        <register type="OA" address="0x000135D4" value="0x00000000" />
-        <register type="OA" address="0x000137D0" value="0x00004C01" />
-        <register type="OA" address="0x000137D4" value="0x00000000" />
-        <register type="OA" address="0x000133D8" value="0x00004C02" />
-        <register type="OA" address="0x000133DC" value="0x00000000" />
-        <register type="OA" address="0x000135D8" value="0x00004C02" />
-        <register type="OA" address="0x000135DC" value="0x00000000" />
-        <register type="OA" address="0x000137D8" value="0x00004C02" />
-        <register type="OA" address="0x000137DC" value="0x00000000" />
-        <register type="OA" address="0x000133E0" value="0x00004C03" />
-        <register type="OA" address="0x000133E4" value="0x00000000" />
-        <register type="OA" address="0x000135E0" value="0x00004C03" />
-        <register type="OA" address="0x000135E4" value="0x00000000" />
-        <register type="OA" address="0x000137E0" value="0x00004C03" />
-        <register type="OA" address="0x000137E4" value="0x00000000" />
-        <register type="OA" address="0x000133E8" value="0x00004C04" />
-        <register type="OA" address="0x000133EC" value="0x00000000" />
-        <register type="OA" address="0x000135E8" value="0x00004C04" />
-        <register type="OA" address="0x000135EC" value="0x00000000" />
-        <register type="OA" address="0x000137E8" value="0x00004C04" />
-        <register type="OA" address="0x000137EC" value="0x00000000" />
-        <register type="OA" address="0x000133F0" value="0x00004C05" />
-        <register type="OA" address="0x000133F4" value="0x00000000" />
-        <register type="OA" address="0x000135F0" value="0x00004C05" />
-        <register type="OA" address="0x000135F4" value="0x00000000" />
-        <register type="OA" address="0x000137F0" value="0x00004C05" />
-        <register type="OA" address="0x000137F4" value="0x00000000" />
-        <register type="OA" address="0x000133F8" value="0x00004C20" />
-        <register type="OA" address="0x000133FC" value="0x00000000" />
-        <register type="OA" address="0x000135F8" value="0x00004C20" />
-        <register type="OA" address="0x000135FC" value="0x00000000" />
-        <register type="OA" address="0x000137F8" value="0x00004C20" />
-        <register type="OA" address="0x000137FC" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E558" value="0x000D00C0" />
+        <register type="FLEX" address="0x0000E658" value="0x000C00E0" />
+        <register type="FLEX" address="0x0000E758" value="0x000E00D0" />
+        <register type="FLEX" address="0x0000E45C" value="0x00000000" />
     </register_config>
   </set>
 
-  <set name="MetricSet2"
+  <set name="VectorEngineProfile"
        chipset="LNL"
-       symbol_name="MetricSet2"
-       underscore_name="metric_set2"
+       symbol_name="VectorEngineProfile"
+       underscore_name="vector_engine_profile"
        mdapi_supported_apis="VK OGL OCL IO"
-       oa_format="256B_GENERIC_NOA16"
-       hw_config_guid="914ad901-832a-4ccd-a21e-ddc7690ed213"
+       oa_format="576B_PEC64LL"
+       hw_config_guid="e7338926-568c-4424-bc44-f90318a6b472"
        >
     <counter name="GPU Time Elapsed"
              symbol_name="GpuTime"
              underscore_name="gpu_time"
              description="Time elapsed on the GPU during the measurement."
              data_type="uint64"
-             units="ns"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             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="GPU Busy"
+             symbol_name="GPU_BUSY"
+             underscore_name="gpu_busy"
+             description="Percentage of time in which GPU is not idle including all GPU engines"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 32 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="IA Vertex"
+             symbol_name="IA_VERTEX"
+             underscore_name="ia_vertex"
+             description="Number of vertices in a draw"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 33 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GpGpu Threadgroup Count"
+             symbol_name="GPGPU_THREADGROUP_COUNT"
+             underscore_name="gpgpu_threadgroup_count"
+             description="Number of GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 0 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Async GpGpu Threadgroup Count"
+             symbol_name="ASYNC_GPGPU_THREADGROUP_COUNT"
+             underscore_name="async_gpgpu_threadgroup_count"
+             description="Number of Async GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 1 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Rasterizer Sample Output"
+             symbol_name="RASTERIZER_SAMPLE_OUTPUT"
+             underscore_name="rasterizer_sample_output"
+             description="Number of lit samples emitted by Rasterizer"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 34 READ"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="ICache Hit"
+             symbol_name="ICACHE_HIT"
+             underscore_name="icache_hit"
+             description="Number of Instruction Cache hits"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 2 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="ICache Miss"
+             symbol_name="ICACHE_MISS"
+             underscore_name="icache_miss"
+             description="Number of Instruction Cache misses"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 3 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Active"
+             symbol_name="XVE_ACTIVE"
+             underscore_name="xve_active"
+             description="Percentage of time in which at least one pipe is active in XVE"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 4 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU0 All"
+             symbol_name="XVE_INST_EXECUTED_ALU0_ALL"
+             underscore_name="xve_inst_executed_alu0_all"
+             description="Number of execution slots taken by instructions executed by ALL threads on ALU0 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 5 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU1 All"
+             symbol_name="XVE_INST_EXECUTED_ALU1_ALL"
+             underscore_name="xve_inst_executed_alu1_all"
+             description="Number of execution slots taken by instructions executed by ALL threads on ALU1 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 6 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed ALU2 All"
+             symbol_name="XVE_INST_EXECUTED_ALU2_ALL"
+             underscore_name="xve_inst_executed_alu2_all"
+             description="Number of execution slots taken by instructions executed in ALU2 pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 21 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed Barrier"
+             symbol_name="XVE_INST_EXECUTED_BARRIER"
+             underscore_name="xve_inst_executed_barrier"
+             description="Number of sync.bar and sync.host instructions executed"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 22 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed Bitconv"
+             symbol_name="XVE_INST_EXECUTED_BITCONV"
+             underscore_name="xve_inst_executed_bitconv"
+             description="Number of execution slots taken by bit manipulation instructions"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 23 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed Control All"
+             symbol_name="XVE_INST_EXECUTED_CONTROL_ALL"
+             underscore_name="xve_inst_executed_control_all"
+             description="Number of instructions executed on JEU Pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 24 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed Fp16"
+             symbol_name="XVE_INST_EXECUTED_FP16"
+             underscore_name="xve_inst_executed_fp16"
+             description="Number of execution slots taken by FP16 ALU instructions"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 25 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed Fp32"
+             symbol_name="XVE_INST_EXECUTED_FP32"
+             underscore_name="xve_inst_executed_fp32"
+             description="Number of execution slots taken by FP32 ALU instructions"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 26 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed Fp64"
+             symbol_name="XVE_INST_EXECUTED_FP64"
+             underscore_name="xve_inst_executed_fp64"
+             description="Number of execution slots taken by FP64 ALU instructions"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 27 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed Fp64 2nd"
+             symbol_name="XVE_INST_EXECUTED_FP64_2ND"
+             underscore_name="xve_inst_executed_fp64_2_nd"
+             description="Number of execution slots taken by FP64 ALU instructions executed in the second pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 28 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed Int16"
+             symbol_name="XVE_INST_EXECUTED_INT16"
+             underscore_name="xve_inst_executed_int16"
+             description="Number of execution slots taken by INT16 ALU instructions"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 29 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed Int32"
+             symbol_name="XVE_INST_EXECUTED_INT32"
+             underscore_name="xve_inst_executed_int32"
+             description="Number of execution slots taken by INT32 ALU instructions"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 30 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed Int64"
+             symbol_name="XVE_INST_EXECUTED_INT64"
+             underscore_name="xve_inst_executed_int64"
+             description="Number of execution slots taken by INT64 instructions"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 31 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed Math"
+             symbol_name="XVE_INST_EXECUTED_MATH"
+             underscore_name="xve_inst_executed_math"
+             description="Number of execution slots taken by extended math instructions"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 7 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed Nondivergent"
+             symbol_name="XVE_INST_EXECUTED_NONDIVERGENT"
+             underscore_name="xve_inst_executed_nondivergent"
+             description="Number of execution slots taken by non-divergent instructions"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 8 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed Predication"
+             symbol_name="XVE_INST_EXECUTED_PREDICATION"
+             underscore_name="xve_inst_executed_predication"
+             description="Number of execution slots taken by instructions with predication mask enabled"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 9 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed Send All"
+             symbol_name="XVE_INST_EXECUTED_SEND_ALL"
+             underscore_name="xve_inst_executed_send_all"
+             description="Number of instruction (GRF) dispatches executed by ALL threads on SEND Pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 10 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed XMX Bf16"
+             symbol_name="XVE_INST_EXECUTED_XMX_BF16"
+             underscore_name="xve_inst_executed_xmx_bf16"
+             description="Number of execution slots taken by BF16 XMX instructions"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 11 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed XMX Fp16"
+             symbol_name="XVE_INST_EXECUTED_XMX_FP16"
+             underscore_name="xve_inst_executed_xmx_fp16"
+             description="Number of execution slots taken by FP16 XMX instructions"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 12 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed XMX Int2"
+             symbol_name="XVE_INST_EXECUTED_XMX_INT2"
+             underscore_name="xve_inst_executed_xmx_int2"
+             description="Number of execution slots taken by INT2 XMX instructions"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 13 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed XMX Int4"
+             symbol_name="XVE_INST_EXECUTED_XMX_INT4"
+             underscore_name="xve_inst_executed_xmx_int4"
+             description="Number of execution slots taken by INT4 XMX instructions"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 14 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Executed XMX Int8"
+             symbol_name="XVE_INST_EXECUTED_XMX_INT8"
+             underscore_name="xve_inst_executed_xmx_int8"
+             description="Number of execution slots taken by INT8 XMX instructions"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 15 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Inst Issued All"
+             symbol_name="XVE_INST_ISSUED_ALL"
+             underscore_name="xve_inst_issued_all"
+             description="Number of instructions issued (decoded) to any pipe"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 16 READ"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Multiple Pipe Active"
+             symbol_name="XVE_MULTIPLE_PIPE_ACTIVE"
+             underscore_name="xve_multiple_pipe_active"
+             description="Percentage of time in which at least two pipes are actively executing a Gen ISA instruction among ALU0, ALU1 and ALU2 pipes"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 17 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Pipe ALU0 And ALU1 Active"
+             symbol_name="XVE_PIPE_ALU0_AND_ALU1_ACTIVE"
+             underscore_name="xve_pipe_alu0_and_alu1_active"
+             description="Percentage of time in which ALU0 and ALU1 pipes are both actively executing a Gen ISA instruction"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 18 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Pipe ALU0 And ALU2 Active"
+             symbol_name="XVE_PIPE_ALU0_AND_ALU2_ACTIVE"
+             underscore_name="xve_pipe_alu0_and_alu2_active"
+             description="Percentage of time in which ALU0 and ALU2 pipes are both actively executing a Gen ISA instruction"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 19 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Threads Occupancy All"
+             symbol_name="XVE_THREADS_OCCUPANCY_ALL"
+             underscore_name="xve_threads_occupancy_all"
+             description="Percentage of thread slots occupied by ALL threads"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 20 READ 8 UMUL $VectorEngineThreadsCount $VectorEngineTotalCount UMUL UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Atomic Access"
+             symbol_name="L3_ATOMIC_ACCESS"
+             underscore_name="l3_atomic_access"
+             description="Number of atomic accesses to Device Cache bank"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 35 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Hit"
+             symbol_name="L3_HIT"
+             underscore_name="l3_hit"
+             description="Number of Device Cache accesses (except atomics) which hits in the Device Cache cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 37 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Miss"
+             symbol_name="L3_MISS"
+             underscore_name="l3_miss"
+             description="Number of Device Cache accesses (except atomics) which miss in the Device Cache cache"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 39 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Read"
+             symbol_name="L3_READ"
+             underscore_name="l3_read"
+             description="Number of Device Cache 64B read requests"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 41 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3 Write"
+             symbol_name="L3_WRITE"
+             underscore_name="l3_write"
+             description="Number of Device Cache 64B write requests"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 44 READ"
+             mdapi_group="Device Cache"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Command Parser Compute Engine Busy"
+             symbol_name="COMMAND_PARSER_COMPUTE_ENGINE_BUSY"
+             underscore_name="command_parser_compute_engine_busy"
+             description="Percentage of time in which there is a context loaded and active on the compute queue"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 45 READ $ComputeEngineTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Command Parser Compute Engine Dispatch Kernel Count"
+             symbol_name="COMMAND_PARSER_COMPUTE_ENGINE_DISPATCH_KERNEL_COUNT"
+             underscore_name="command_parser_compute_engine_dispatch_kernel_count"
+             description="Number of compute walker commands parsed on the compute engine"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 46 READ"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Command Parser Render Engine Busy"
+             symbol_name="COMMAND_PARSER_RENDER_ENGINE_BUSY"
+             underscore_name="command_parser_render_engine_busy"
+             description="Percentage of time in which there is a context loaded and active on the 3D queue"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 47 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Command Parser Render Engine Dispatch Kernel Count"
+             symbol_name="COMMAND_PARSER_RENDER_ENGINE_DISPATCH_KERNEL_COUNT"
+             underscore_name="command_parser_render_engine_dispatch_kernel_count"
+             description="Number of compute walker commands parsed on the 3D engine"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 48 READ"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Compressor Input"
+             symbol_name="COMPRESSOR_INPUT"
+             underscore_name="compressor_input"
+             description="Number of 256B writes to compressible surfaces at the input of the compressor"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 49 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Compressor Output"
+             symbol_name="COMPRESSOR_OUTPUT"
+             underscore_name="compressor_output"
+             description="Number of 256B writes to compressible surfaces at the output of the compressor"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 50 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory Byte Read"
+             symbol_name="GPU_MEMORY_BYTE_READ"
+             underscore_name="gpu_memory_byte_read"
+             description="Number of device local memory (HBM, GDDR, LPDDR, etc.) read bytes"
+             data_type="uint64"
+             units="bytes"
+             semantic_type="event"
+             equation="PEC 51 READ 2 UMUL"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory Byte Write"
+             symbol_name="GPU_MEMORY_BYTE_WRITE"
+             underscore_name="gpu_memory_byte_write"
+             description="Number of device local memory (HBM, GDDR, LPDDR, etc.) write bytes"
+             data_type="uint64"
+             units="bytes"
              semantic_type="event"
-             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
-             mdapi_group="GPU"
-             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             equation="PEC 52 READ 2 UMUL"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory Byte Read Rate"
+             symbol_name="GPU_MEMORY_BYTE_READ_RATE"
+             underscore_name="gpu_memory_byte_read_rate"
+             description="Device local memory (HBM, GDDR, LPDDR, etc.) read bandwidth"
+             data_type="float"
+             units="gbps"
+             semantic_type="throughput"
+             equation="PEC 51 READ 2 UMUL $GpuTime FDIV"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Memory Byte Write Rate"
+             symbol_name="GPU_MEMORY_BYTE_WRITE_RATE"
+             underscore_name="gpu_memory_byte_write_rate"
+             description="Device local memory (HBM, GDDR, LPDDR, etc.) write bandwidth"
+             data_type="float"
+             units="gbps"
+             semantic_type="throughput"
+             equation="PEC 52 READ 2 UMUL $GpuTime FDIV"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TLB Miss"
+             symbol_name="TLB_MISS"
+             underscore_name="tlb_miss"
+             description="Number of misses from all TLBs and all engines"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 53 READ"
+             mdapi_group="Memory"
+             mdapi_usage_flags="Frame Batch Draw"
              mdapi_supported_apis=""
              mdapi_hw_unit_type="gpu"
              />
     <register_config type="OA">
-        <register type="OA" address="0x00013000" value="0x00000616" />
+        <register type="OA" address="0x00013000" value="0x00001801" />
         <register type="OA" address="0x00013004" value="0x00000000" />
-        <register type="OA" address="0x00013008" value="0x00000617" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
         <register type="OA" address="0x0001300C" value="0x00000000" />
-        <register type="OA" address="0x00013010" value="0x00000618" />
+        <register type="OA" address="0x00013010" value="0x00000622" />
         <register type="OA" address="0x00013014" value="0x00000000" />
-        <register type="OA" address="0x00013018" value="0x00000619" />
+        <register type="OA" address="0x00013018" value="0x00000623" />
         <register type="OA" address="0x0001301C" value="0x00000000" />
-        <register type="OA" address="0x00013020" value="0x0000061A" />
+        <register type="OA" address="0x00013020" value="0x00000605" />
         <register type="OA" address="0x00013024" value="0x00000000" />
-        <register type="OA" address="0x00013028" value="0x0000061B" />
+        <register type="OA" address="0x00013028" value="0x0000060F" />
         <register type="OA" address="0x0001302C" value="0x00000000" />
-        <register type="OA" address="0x00013030" value="0x0000061C" />
+        <register type="OA" address="0x00013030" value="0x00000603" />
         <register type="OA" address="0x00013034" value="0x00000000" />
-        <register type="OA" address="0x00013038" value="0x0000061D" />
+        <register type="OA" address="0x00013038" value="0x0000060E" />
         <register type="OA" address="0x0001303C" value="0x00000000" />
-        <register type="OA" address="0x00013040" value="0x0000061E" />
+        <register type="OA" address="0x00013040" value="0x0000060A" />
         <register type="OA" address="0x00013044" value="0x00000000" />
-        <register type="OA" address="0x00013048" value="0x0000061F" />
+        <register type="OA" address="0x00013048" value="0x00000609" />
         <register type="OA" address="0x0001304C" value="0x00000000" />
-        <register type="OA" address="0x00013050" value="0x00000620" />
+        <register type="OA" address="0x00013050" value="0x00000601" />
         <register type="OA" address="0x00013054" value="0x00000000" />
-        <register type="OA" address="0x00013058" value="0x00000621" />
+        <register type="OA" address="0x00013058" value="0x00000616" />
         <register type="OA" address="0x0001305C" value="0x00000000" />
-        <register type="OA" address="0x00013060" value="0x00000622" />
+        <register type="OA" address="0x00013060" value="0x00000615" />
         <register type="OA" address="0x00013064" value="0x00000000" />
-        <register type="OA" address="0x00013068" value="0x00000623" />
+        <register type="OA" address="0x00013068" value="0x00000619" />
         <register type="OA" address="0x0001306C" value="0x00000000" />
-        <register type="OA" address="0x00013070" value="0x00000624" />
+        <register type="OA" address="0x00013070" value="0x00000618" />
         <register type="OA" address="0x00013074" value="0x00000000" />
-        <register type="OA" address="0x00013078" value="0x00000625" />
+        <register type="OA" address="0x00013078" value="0x00000617" />
         <register type="OA" address="0x0001307C" value="0x00000000" />
-        <register type="OA" address="0x00013080" value="0x00000626" />
+        <register type="OA" address="0x00013080" value="0x0000060B" />
         <register type="OA" address="0x00013084" value="0x00000000" />
-        <register type="OA" address="0x00013088" value="0x00000628" />
+        <register type="OA" address="0x00013088" value="0x00000624" />
         <register type="OA" address="0x0001308C" value="0x00000000" />
-        <register type="OA" address="0x00013090" value="0x00000629" />
+        <register type="OA" address="0x00013090" value="0x00000625" />
         <register type="OA" address="0x00013094" value="0x00000000" />
-        <register type="OA" address="0x00013098" value="0x00000A00" />
+        <register type="OA" address="0x00013098" value="0x00000626" />
         <register type="OA" address="0x0001309C" value="0x00000000" />
-        <register type="OA" address="0x000130A0" value="0x00000A01" />
+        <register type="OA" address="0x000130A0" value="0x00000604" />
         <register type="OA" address="0x000130A4" value="0x00000000" />
-        <register type="OA" address="0x000130A8" value="0x00000A02" />
+        <register type="OA" address="0x000130A8" value="0x00000614" />
         <register type="OA" address="0x000130AC" value="0x00000000" />
-        <register type="OA" address="0x000130B0" value="0x00000A03" />
+        <register type="OA" address="0x000130B0" value="0x00000608" />
         <register type="OA" address="0x000130B4" value="0x00000000" />
-        <register type="OA" address="0x000130B8" value="0x00000A04" />
+        <register type="OA" address="0x000130B8" value="0x00000607" />
         <register type="OA" address="0x000130BC" value="0x00000000" />
-        <register type="OA" address="0x000130C0" value="0x00000A05" />
+        <register type="OA" address="0x000130C0" value="0x00000602" />
         <register type="OA" address="0x000130C4" value="0x00000000" />
-        <register type="OA" address="0x000130C8" value="0x00000A06" />
+        <register type="OA" address="0x000130C8" value="0x00000611" />
         <register type="OA" address="0x000130CC" value="0x00000000" />
-        <register type="OA" address="0x000130D0" value="0x00000A07" />
+        <register type="OA" address="0x000130D0" value="0x00000610" />
         <register type="OA" address="0x000130D4" value="0x00000000" />
-        <register type="OA" address="0x000130D8" value="0x00000A08" />
+        <register type="OA" address="0x000130D8" value="0x00000612" />
         <register type="OA" address="0x000130DC" value="0x00000000" />
-        <register type="OA" address="0x000130E0" value="0x00000A09" />
+        <register type="OA" address="0x000130E0" value="0x00000629" />
         <register type="OA" address="0x000130E4" value="0x00000000" />
-        <register type="OA" address="0x000130E8" value="0x00000A0A" />
+        <register type="OA" address="0x000130E8" value="0x0000060C" />
         <register type="OA" address="0x000130EC" value="0x00000000" />
-        <register type="OA" address="0x000130F0" value="0x00000A0B" />
+        <register type="OA" address="0x000130F0" value="0x0000060D" />
         <register type="OA" address="0x000130F4" value="0x00000000" />
-        <register type="OA" address="0x000130F8" value="0x00000A0C" />
+        <register type="OA" address="0x000130F8" value="0x00000613" />
         <register type="OA" address="0x000130FC" value="0x00000000" />
-        <register type="OA" address="0x00013300" value="0x00004C21" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
         <register type="OA" address="0x00013304" value="0x00000000" />
-        <register type="OA" address="0x00013500" value="0x00004C21" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
         <register type="OA" address="0x00013504" value="0x00000000" />
-        <register type="OA" address="0x00013700" value="0x00004C21" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
         <register type="OA" address="0x00013704" value="0x00000000" />
-        <register type="OA" address="0x00013308" value="0x00004C22" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
         <register type="OA" address="0x0001330C" value="0x00000000" />
-        <register type="OA" address="0x00013508" value="0x00004C22" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
         <register type="OA" address="0x0001350C" value="0x00000000" />
-        <register type="OA" address="0x00013708" value="0x00004C22" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
         <register type="OA" address="0x0001370C" value="0x00000000" />
-        <register type="OA" address="0x00013310" value="0x00004C23" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
         <register type="OA" address="0x00013314" value="0x00000000" />
-        <register type="OA" address="0x00013510" value="0x00004C23" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
         <register type="OA" address="0x00013514" value="0x00000000" />
-        <register type="OA" address="0x00013710" value="0x00004C23" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
         <register type="OA" address="0x00013714" value="0x00000000" />
-        <register type="OA" address="0x00013318" value="0x00004C24" />
+        <register type="OA" address="0x00013318" value="0x00006002" />
         <register type="OA" address="0x0001331C" value="0x00000000" />
-        <register type="OA" address="0x00013518" value="0x00004C24" />
+        <register type="OA" address="0x00013518" value="0x00006002" />
         <register type="OA" address="0x0001351C" value="0x00000000" />
-        <register type="OA" address="0x00013718" value="0x00004C24" />
+        <register type="OA" address="0x00013718" value="0x00006002" />
         <register type="OA" address="0x0001371C" value="0x00000000" />
-        <register type="OA" address="0x00013320" value="0x00004E00" />
+        <register type="OA" address="0x00013320" value="0x00006014" />
         <register type="OA" address="0x00013324" value="0x00000000" />
-        <register type="OA" address="0x00013520" value="0x00004E00" />
+        <register type="OA" address="0x00013520" value="0x00006014" />
         <register type="OA" address="0x00013524" value="0x00000000" />
-        <register type="OA" address="0x00013720" value="0x00004E00" />
+        <register type="OA" address="0x00013720" value="0x00006014" />
         <register type="OA" address="0x00013724" value="0x00000000" />
-        <register type="OA" address="0x00013328" value="0x00004E01" />
+        <register type="OA" address="0x00013328" value="0x00006012" />
         <register type="OA" address="0x0001332C" value="0x00000000" />
-        <register type="OA" address="0x00013528" value="0x00004E01" />
+        <register type="OA" address="0x00013528" value="0x00006012" />
         <register type="OA" address="0x0001352C" value="0x00000000" />
-        <register type="OA" address="0x00013728" value="0x00004E01" />
+        <register type="OA" address="0x00013728" value="0x00006012" />
         <register type="OA" address="0x0001372C" value="0x00000000" />
-        <register type="OA" address="0x00013330" value="0x00004E02" />
+        <register type="OA" address="0x00013330" value="0x00006000" />
         <register type="OA" address="0x00013334" value="0x00000000" />
-        <register type="OA" address="0x00013530" value="0x00004E02" />
+        <register type="OA" address="0x00013530" value="0x00006000" />
         <register type="OA" address="0x00013534" value="0x00000000" />
-        <register type="OA" address="0x00013730" value="0x00004E02" />
+        <register type="OA" address="0x00013730" value="0x00006000" />
         <register type="OA" address="0x00013734" value="0x00000000" />
-        <register type="OA" address="0x00013338" value="0x00004E03" />
+        <register type="OA" address="0x00013338" value="0x00006011" />
         <register type="OA" address="0x0001333C" value="0x00000000" />
-        <register type="OA" address="0x00013538" value="0x00004E03" />
+        <register type="OA" address="0x00013538" value="0x00006011" />
         <register type="OA" address="0x0001353C" value="0x00000000" />
-        <register type="OA" address="0x00013738" value="0x00004E03" />
+        <register type="OA" address="0x00013738" value="0x00006011" />
         <register type="OA" address="0x0001373C" value="0x00000000" />
-        <register type="OA" address="0x00013340" value="0x00004E04" />
+        <register type="OA" address="0x00013340" value="0x00006001" />
         <register type="OA" address="0x00013344" value="0x00000000" />
-        <register type="OA" address="0x00013540" value="0x00004E04" />
+        <register type="OA" address="0x00013540" value="0x00006001" />
         <register type="OA" address="0x00013544" value="0x00000000" />
-        <register type="OA" address="0x00013740" value="0x00004E04" />
+        <register type="OA" address="0x00013740" value="0x00006001" />
         <register type="OA" address="0x00013744" value="0x00000000" />
-        <register type="OA" address="0x00013348" value="0x00005000" />
+        <register type="OA" address="0x00013348" value="0x0000600F" />
         <register type="OA" address="0x0001334C" value="0x00000000" />
-        <register type="OA" address="0x00013548" value="0x00005000" />
+        <register type="OA" address="0x00013548" value="0x0000600F" />
         <register type="OA" address="0x0001354C" value="0x00000000" />
-        <register type="OA" address="0x00013748" value="0x00005000" />
+        <register type="OA" address="0x00013748" value="0x0000600F" />
         <register type="OA" address="0x0001374C" value="0x00000000" />
-        <register type="OA" address="0x00013350" value="0x00005008" />
+        <register type="OA" address="0x00013350" value="0x00006015" />
         <register type="OA" address="0x00013354" value="0x00000000" />
-        <register type="OA" address="0x00013550" value="0x00005008" />
+        <register type="OA" address="0x00013550" value="0x00006015" />
         <register type="OA" address="0x00013554" value="0x00000000" />
-        <register type="OA" address="0x00013750" value="0x00005008" />
+        <register type="OA" address="0x00013750" value="0x00006015" />
         <register type="OA" address="0x00013754" value="0x00000000" />
-        <register type="OA" address="0x00013358" value="0x00005009" />
+        <register type="OA" address="0x00013358" value="0x00006013" />
         <register type="OA" address="0x0001335C" value="0x00000000" />
-        <register type="OA" address="0x00013558" value="0x00005009" />
+        <register type="OA" address="0x00013558" value="0x00006013" />
         <register type="OA" address="0x0001355C" value="0x00000000" />
-        <register type="OA" address="0x00013758" value="0x00005009" />
+        <register type="OA" address="0x00013758" value="0x00006013" />
         <register type="OA" address="0x0001375C" value="0x00000000" />
-        <register type="OA" address="0x00013360" value="0x00005010" />
+        <register type="OA" address="0x00013360" value="0x00006010" />
         <register type="OA" address="0x00013364" value="0x00000000" />
-        <register type="OA" address="0x00013560" value="0x00005010" />
+        <register type="OA" address="0x00013560" value="0x00006010" />
         <register type="OA" address="0x00013564" value="0x00000000" />
-        <register type="OA" address="0x00013760" value="0x00005010" />
+        <register type="OA" address="0x00013760" value="0x00006010" />
         <register type="OA" address="0x00013764" value="0x00000000" />
-        <register type="OA" address="0x00013368" value="0x00005011" />
+        <register type="OA" address="0x00013368" value="0x00005009" />
         <register type="OA" address="0x0001336C" value="0x00000000" />
-        <register type="OA" address="0x00013568" value="0x00005011" />
+        <register type="OA" address="0x00013568" value="0x00005009" />
         <register type="OA" address="0x0001356C" value="0x00000000" />
-        <register type="OA" address="0x00013768" value="0x00005011" />
+        <register type="OA" address="0x00013768" value="0x00005009" />
         <register type="OA" address="0x0001376C" value="0x00000000" />
-        <register type="OA" address="0x00013370" value="0x00005012" />
+        <register type="OA" address="0x00013370" value="0x00005008" />
         <register type="OA" address="0x00013374" value="0x00000000" />
-        <register type="OA" address="0x00013570" value="0x00005012" />
+        <register type="OA" address="0x00013570" value="0x00005008" />
         <register type="OA" address="0x00013574" value="0x00000000" />
-        <register type="OA" address="0x00013770" value="0x00005012" />
+        <register type="OA" address="0x00013770" value="0x00005008" />
         <register type="OA" address="0x00013774" value="0x00000000" />
         <register type="OA" address="0x00013378" value="0x00005013" />
         <register type="OA" address="0x0001337C" value="0x00000000" />
@@ -2273,41 +6243,41 @@
         <register type="OA" address="0x0001357C" value="0x00000000" />
         <register type="OA" address="0x00013778" value="0x00005013" />
         <register type="OA" address="0x0001377C" value="0x00000000" />
-        <register type="OA" address="0x00013380" value="0x00005A00" />
+        <register type="OA" address="0x00013380" value="0x00005012" />
         <register type="OA" address="0x00013384" value="0x00000000" />
-        <register type="OA" address="0x00013580" value="0x00005A00" />
+        <register type="OA" address="0x00013580" value="0x00005012" />
         <register type="OA" address="0x00013584" value="0x00000000" />
-        <register type="OA" address="0x00013780" value="0x00005A00" />
+        <register type="OA" address="0x00013780" value="0x00005012" />
         <register type="OA" address="0x00013784" value="0x00000000" />
-        <register type="OA" address="0x00013388" value="0x00005C00" />
+        <register type="OA" address="0x00013388" value="0x00004600" />
         <register type="OA" address="0x0001338C" value="0x00000000" />
-        <register type="OA" address="0x00013588" value="0x00005C00" />
+        <register type="OA" address="0x00013588" value="0x00004600" />
         <register type="OA" address="0x0001358C" value="0x00000000" />
-        <register type="OA" address="0x00013788" value="0x00005C00" />
+        <register type="OA" address="0x00013788" value="0x00004600" />
         <register type="OA" address="0x0001378C" value="0x00000000" />
-        <register type="OA" address="0x00013390" value="0x00005E00" />
+        <register type="OA" address="0x00013390" value="0x00004601" />
         <register type="OA" address="0x00013394" value="0x00000000" />
-        <register type="OA" address="0x00013590" value="0x00005E00" />
+        <register type="OA" address="0x00013590" value="0x00004601" />
         <register type="OA" address="0x00013594" value="0x00000000" />
-        <register type="OA" address="0x00013790" value="0x00005E00" />
+        <register type="OA" address="0x00013790" value="0x00004601" />
         <register type="OA" address="0x00013794" value="0x00000000" />
-        <register type="OA" address="0x00013398" value="0x00005E01" />
+        <register type="OA" address="0x00013398" value="0x00005E0A" />
         <register type="OA" address="0x0001339C" value="0x00000000" />
-        <register type="OA" address="0x00013598" value="0x00005E01" />
+        <register type="OA" address="0x00013598" value="0x00005E0A" />
         <register type="OA" address="0x0001359C" value="0x00000000" />
-        <register type="OA" address="0x00013798" value="0x00005E01" />
+        <register type="OA" address="0x00013798" value="0x00005E0A" />
         <register type="OA" address="0x0001379C" value="0x00000000" />
-        <register type="OA" address="0x000133A0" value="0x00005E02" />
+        <register type="OA" address="0x000133A0" value="0x00005E0B" />
         <register type="OA" address="0x000133A4" value="0x00000000" />
-        <register type="OA" address="0x000135A0" value="0x00005E02" />
+        <register type="OA" address="0x000135A0" value="0x00005E0B" />
         <register type="OA" address="0x000135A4" value="0x00000000" />
-        <register type="OA" address="0x000137A0" value="0x00005E02" />
+        <register type="OA" address="0x000137A0" value="0x00005E0B" />
         <register type="OA" address="0x000137A4" value="0x00000000" />
-        <register type="OA" address="0x000133A8" value="0x00005E03" />
+        <register type="OA" address="0x000133A8" value="0x00005C00" />
         <register type="OA" address="0x000133AC" value="0x00000000" />
-        <register type="OA" address="0x000135A8" value="0x00005E03" />
+        <register type="OA" address="0x000135A8" value="0x00005C00" />
         <register type="OA" address="0x000135AC" value="0x00000000" />
-        <register type="OA" address="0x000137A8" value="0x00005E03" />
+        <register type="OA" address="0x000137A8" value="0x00005C00" />
         <register type="OA" address="0x000137AC" value="0x00000000" />
         <register type="OA" address="0x000133B0" value="0x00005E04" />
         <register type="OA" address="0x000133B4" value="0x00000000" />
@@ -2315,70 +6285,24 @@
         <register type="OA" address="0x000135B4" value="0x00000000" />
         <register type="OA" address="0x000137B0" value="0x00005E04" />
         <register type="OA" address="0x000137B4" value="0x00000000" />
-        <register type="OA" address="0x000133B8" value="0x00005E05" />
-        <register type="OA" address="0x000133BC" value="0x00000000" />
-        <register type="OA" address="0x000135B8" value="0x00005E05" />
-        <register type="OA" address="0x000135BC" value="0x00000000" />
-        <register type="OA" address="0x000137B8" value="0x00005E05" />
-        <register type="OA" address="0x000137BC" value="0x00000000" />
-        <register type="OA" address="0x000133C0" value="0x00005E06" />
-        <register type="OA" address="0x000133C4" value="0x00000000" />
-        <register type="OA" address="0x000135C0" value="0x00005E06" />
-        <register type="OA" address="0x000135C4" value="0x00000000" />
-        <register type="OA" address="0x000137C0" value="0x00005E06" />
-        <register type="OA" address="0x000137C4" value="0x00000000" />
-        <register type="OA" address="0x000133C8" value="0x00005E07" />
-        <register type="OA" address="0x000133CC" value="0x00000000" />
-        <register type="OA" address="0x000135C8" value="0x00005E07" />
-        <register type="OA" address="0x000135CC" value="0x00000000" />
-        <register type="OA" address="0x000137C8" value="0x00005E07" />
-        <register type="OA" address="0x000137CC" value="0x00000000" />
-        <register type="OA" address="0x000133D0" value="0x00005E08" />
-        <register type="OA" address="0x000133D4" value="0x00000000" />
-        <register type="OA" address="0x000135D0" value="0x00005E08" />
-        <register type="OA" address="0x000135D4" value="0x00000000" />
-        <register type="OA" address="0x000137D0" value="0x00005E08" />
-        <register type="OA" address="0x000137D4" value="0x00000000" />
-        <register type="OA" address="0x000133D8" value="0x00005E09" />
-        <register type="OA" address="0x000133DC" value="0x00000000" />
-        <register type="OA" address="0x000135D8" value="0x00005E09" />
-        <register type="OA" address="0x000135DC" value="0x00000000" />
-        <register type="OA" address="0x000137D8" value="0x00005E09" />
-        <register type="OA" address="0x000137DC" value="0x00000000" />
-        <register type="OA" address="0x000133E0" value="0x00005E0A" />
-        <register type="OA" address="0x000133E4" value="0x00000000" />
-        <register type="OA" address="0x000135E0" value="0x00005E0A" />
-        <register type="OA" address="0x000135E4" value="0x00000000" />
-        <register type="OA" address="0x000137E0" value="0x00005E0A" />
-        <register type="OA" address="0x000137E4" value="0x00000000" />
-        <register type="OA" address="0x000133E8" value="0x00005E0B" />
-        <register type="OA" address="0x000133EC" value="0x00000000" />
-        <register type="OA" address="0x000135E8" value="0x00005E0B" />
-        <register type="OA" address="0x000135EC" value="0x00000000" />
-        <register type="OA" address="0x000137E8" value="0x00005E0B" />
-        <register type="OA" address="0x000137EC" value="0x00000000" />
-        <register type="OA" address="0x000133F0" value="0x00006000" />
-        <register type="OA" address="0x000133F4" value="0x00000000" />
-        <register type="OA" address="0x000135F0" value="0x00006000" />
-        <register type="OA" address="0x000135F4" value="0x00000000" />
-        <register type="OA" address="0x000137F0" value="0x00006000" />
-        <register type="OA" address="0x000137F4" value="0x00000000" />
-        <register type="OA" address="0x000133F8" value="0x00006001" />
-        <register type="OA" address="0x000133FC" value="0x00000000" />
-        <register type="OA" address="0x000135F8" value="0x00006001" />
-        <register type="OA" address="0x000135FC" value="0x00000000" />
-        <register type="OA" address="0x000137F8" value="0x00006001" />
-        <register type="OA" address="0x000137FC" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00000000" />
+        <register type="FLEX" address="0x0000E558" value="0x00000000" />
+        <register type="FLEX" address="0x0000E658" value="0x00000000" />
+        <register type="FLEX" address="0x0000E758" value="0x00000000" />
+        <register type="FLEX" address="0x0000E45C" value="0x00000000" />
+        <register type="FLEX" address="0x0000E65C" value="0x00000000" />
     </register_config>
   </set>
 
-  <set name="MetricSet3"
+  <set name="VectorEngineStalls"
        chipset="LNL"
-       symbol_name="MetricSet3"
-       underscore_name="metric_set3"
+       symbol_name="VectorEngineStalls"
+       underscore_name="vector_engine_stalls"
        mdapi_supported_apis="VK OGL OCL IO"
-       oa_format="256B_GENERIC_NOA16"
-       hw_config_guid="3b3c9f55-e34b-423d-8c05-7b1af03b6685"
+       oa_format="576B_PEC64LL"
+       hw_config_guid="4ccd6535-fb9a-440f-b0f5-882879dc4cb0"
        >
     <counter name="GPU Time Elapsed"
              symbol_name="GpuTime"
@@ -2393,273 +6317,465 @@
              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="GPU Busy"
+             symbol_name="GPU_BUSY"
+             underscore_name="gpu_busy"
+             description="Percentage of time in which GPU is not idle including all GPU engines"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 32 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="IA Vertex"
+             symbol_name="IA_VERTEX"
+             underscore_name="ia_vertex"
+             description="Number of vertices in a draw"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 33 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GpGpu Threadgroup Count"
+             symbol_name="GPGPU_THREADGROUP_COUNT"
+             underscore_name="gpgpu_threadgroup_count"
+             description="Number of GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 0 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Async GpGpu Threadgroup Count"
+             symbol_name="ASYNC_GPGPU_THREADGROUP_COUNT"
+             underscore_name="async_gpgpu_threadgroup_count"
+             description="Number of Async GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 1 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Rasterizer Sample Output"
+             symbol_name="RASTERIZER_SAMPLE_OUTPUT"
+             underscore_name="rasterizer_sample_output"
+             description="Number of lit samples emitted by Rasterizer"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 34 READ"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Stall Aluwr"
+             symbol_name="XVE_STALL_ALUWR"
+             underscore_name="xve_stall_aluwr"
+             description="Percentage of time in which XVE stalled, with at least one thread waiting for ALU to write GRF/ACC register. Multiple stall reasons can qualify during the same cycle"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 2 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Stall Barrier"
+             symbol_name="XVE_STALL_BARRIER"
+             underscore_name="xve_stall_barrier"
+             description="Percentage of time in which XVE stalled, with at least one thread waiting for Gateway to write Notify register. Multiple stall reasons can qualify during the same cycle"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 3 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Stall Control"
+             symbol_name="XVE_STALL_CONTROL"
+             underscore_name="xve_stall_control"
+             description="Percentage of time in which XVE stalled, with at least one thread waiting for JEU to complete branch instruction. Multiple stall reasons can qualify during the same cycle"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 4 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Stall Instfetch"
+             symbol_name="XVE_STALL_INSTFETCH"
+             underscore_name="xve_stall_instfetch"
+             description="Percentage of time in which XVE stalled, with at least one thread waiting for Instruction Fetch. Multiple stall reasons can qualify during the same cycle"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 5 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Stall Other"
+             symbol_name="XVE_STALL_OTHER"
+             underscore_name="xve_stall_other"
+             description="Percentage of time in which XVE stalled, with at least one thread waiting on any other dependency (Flag/EoT etc). Multiple stall reasons can qualify during the same cycle"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 6 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Stall Pipestall"
+             symbol_name="XVE_STALL_PIPESTALL"
+             underscore_name="xve_stall_pipestall"
+             description="Percentage of time in which XVE stalled, with at least one thread ready to be scheduled (Grf conf/send holds etc). Multiple stall reasons can qualify during the same cycle"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 21 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Stall PS Dependency"
+             symbol_name="XVE_STALL_PS_DEPENDENCY"
+             underscore_name="xve_stall_ps_dependency"
+             description="Percentage of time in which XVE stalled, with at least one thread waiting on Pixel Shader dependency"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 22 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Stall Sbid"
+             symbol_name="XVE_STALL_SBID"
+             underscore_name="xve_stall_sbid"
+             description="Percentage of time in which XVE stalled, with at least one thread waiting for Scoreboard token to be available. Multiple stall reasons can qualify during the same cycle"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 23 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Stall Sendwr"
+             symbol_name="XVE_STALL_SENDWR"
+             underscore_name="xve_stall_sendwr"
+             description="Percentage of time in which XVE stalled, with at least one thread waiting for SEND message to be dispatched from XVE. Multiple stall reasons can qualify during the same cycle"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 24 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Thread Dispatch Queue0 Active"
+             symbol_name="THREAD_DISPATCH_QUEUE0_ACTIVE"
+             underscore_name="thread_dispatch_queue0_active"
+             description="Percentage of time in which non-Pixel Shader threads are ready for dispatch in a particular Xe core"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 25 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Thread Dispatch Queue0 Stall"
+             symbol_name="THREAD_DISPATCH_QUEUE0_STALL"
+             underscore_name="thread_dispatch_queue0_stall"
+             description="Percentage of time in which queue 0 is stalled waiting for threads to be available"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 26 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Thread Dispatch Queue1 Active"
+             symbol_name="THREAD_DISPATCH_QUEUE1_ACTIVE"
+             underscore_name="thread_dispatch_queue1_active"
+             description="Percentage of time in which non-Pixel Shader threads are ready for dispatch in a particular Xe core"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 27 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Thread Dispatch Queue1 Stall"
+             symbol_name="THREAD_DISPATCH_QUEUE1_STALL"
+             underscore_name="thread_dispatch_queue1_stall"
+             description="Percentage of time in which queue 1 is stalled waiting for threads to be available"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 28 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Threadgroup Dispatch Queue0 Resource Stall"
+             symbol_name="THREADGROUP_DISPATCH_QUEUE0_RESOURCE_STALL"
+             underscore_name="threadgroup_dispatch_queue0_resource_stall"
+             description="Percentage of time in which Thread Spawner queue 0 is stalled waiting for resources to be available (SLM, Barrier, BTD stack)"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 29 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Threadgroup Dispatch Queue1 Resource Stall"
+             symbol_name="THREADGROUP_DISPATCH_QUEUE1_RESOURCE_STALL"
+             underscore_name="threadgroup_dispatch_queue1_resource_stall"
+             description="Percentage of time in which Thread Spawner queue 1 is stalled waiting for resources to be available (SLM, Barrier, BTD stack)"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 30 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Active"
+             symbol_name="XVE_ACTIVE"
+             underscore_name="xve_active"
+             description="Percentage of time in which at least one pipe is active in XVE"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 31 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Shared Function Access Hold"
+             symbol_name="XVE_SHARED_FUNCTION_ACCESS_HOLD"
+             underscore_name="xve_shared_function_access_hold"
+             description="Percentage of time in which XVE requests stalled by Shared Function units"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 7 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Stall"
+             symbol_name="XVE_STALL"
+             underscore_name="xve_stall"
+             description="Percentage of time in which any thread loaded but not even a single pipe is active in XVE"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 8 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Threads Occupancy All"
+             symbol_name="XVE_THREADS_OCCUPANCY_ALL"
+             underscore_name="xve_threads_occupancy_all"
+             description="Percentage of thread slots occupied by ALL threads"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 9 READ 8 UMUL $VectorEngineThreadsCount $VectorEngineTotalCount UMUL UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Multiple Pipe Active"
+             symbol_name="XVE_MULTIPLE_PIPE_ACTIVE"
+             underscore_name="xve_multiple_pipe_active"
+             description="Percentage of time in which at least two pipes are actively executing a Gen ISA instruction among ALU0, ALU1 and ALU2 pipes"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 10 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Pipe ALU0 And ALU1 Active"
+             symbol_name="XVE_PIPE_ALU0_AND_ALU1_ACTIVE"
+             underscore_name="xve_pipe_alu0_and_alu1_active"
+             description="Percentage of time in which ALU0 and ALU1 pipes are both actively executing a Gen ISA instruction"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 11 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="XVE Pipe ALU0 And ALU2 Active"
+             symbol_name="XVE_PIPE_ALU0_AND_ALU2_ACTIVE"
+             underscore_name="xve_pipe_alu0_and_alu2_active"
+             description="Percentage of time in which ALU0 and ALU2 pipes are both actively executing a Gen ISA instruction"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 12 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Vector Engine"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
     <register_config type="OA">
-        <register type="OA" address="0x00013000" value="0x00000A0D" />
+        <register type="OA" address="0x00013000" value="0x00001801" />
         <register type="OA" address="0x00013004" value="0x00000000" />
-        <register type="OA" address="0x00013008" value="0x00000A0E" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
         <register type="OA" address="0x0001300C" value="0x00000000" />
-        <register type="OA" address="0x00013010" value="0x00000A0F" />
+        <register type="OA" address="0x00013010" value="0x0000061D" />
         <register type="OA" address="0x00013014" value="0x00000000" />
-        <register type="OA" address="0x00013018" value="0x00000A10" />
+        <register type="OA" address="0x00013018" value="0x0000061B" />
         <register type="OA" address="0x0001301C" value="0x00000000" />
-        <register type="OA" address="0x00013020" value="0x00000A11" />
+        <register type="OA" address="0x00013020" value="0x00000620" />
         <register type="OA" address="0x00013024" value="0x00000000" />
-        <register type="OA" address="0x00013028" value="0x00000A12" />
+        <register type="OA" address="0x00013028" value="0x0000061A" />
         <register type="OA" address="0x0001302C" value="0x00000000" />
-        <register type="OA" address="0x00013030" value="0x00000A13" />
+        <register type="OA" address="0x00013030" value="0x00000621" />
         <register type="OA" address="0x00013034" value="0x00000000" />
-        <register type="OA" address="0x00013038" value="0x00000A14" />
+        <register type="OA" address="0x00013038" value="0x00000600" />
         <register type="OA" address="0x0001303C" value="0x00000000" />
-        <register type="OA" address="0x00013040" value="0x00000A15" />
+        <register type="OA" address="0x00013040" value="0x00000606" />
         <register type="OA" address="0x00013044" value="0x00000000" />
-        <register type="OA" address="0x00013048" value="0x00000A16" />
+        <register type="OA" address="0x00013048" value="0x00000604" />
         <register type="OA" address="0x0001304C" value="0x00000000" />
-        <register type="OA" address="0x00013050" value="0x00000A17" />
+        <register type="OA" address="0x00013050" value="0x00000624" />
         <register type="OA" address="0x00013054" value="0x00000000" />
-        <register type="OA" address="0x00013058" value="0x00000C00" />
+        <register type="OA" address="0x00013058" value="0x00000625" />
         <register type="OA" address="0x0001305C" value="0x00000000" />
-        <register type="OA" address="0x00013060" value="0x00000C01" />
+        <register type="OA" address="0x00013060" value="0x00000626" />
         <register type="OA" address="0x00013064" value="0x00000000" />
-        <register type="OA" address="0x00013068" value="0x00000C02" />
-        <register type="OA" address="0x0001306C" value="0x00000000" />
-        <register type="OA" address="0x00013070" value="0x00000C03" />
-        <register type="OA" address="0x00013074" value="0x00000000" />
-        <register type="OA" address="0x00013078" value="0x00000C04" />
-        <register type="OA" address="0x0001307C" value="0x00000000" />
-        <register type="OA" address="0x00013080" value="0x00000C10" />
-        <register type="OA" address="0x00013084" value="0x00000000" />
-        <register type="OA" address="0x00013088" value="0x00000C18" />
-        <register type="OA" address="0x0001308C" value="0x00000000" />
-        <register type="OA" address="0x00013090" value="0x00000C19" />
-        <register type="OA" address="0x00013094" value="0x00000000" />
-        <register type="OA" address="0x00013098" value="0x00000C1A" />
-        <register type="OA" address="0x0001309C" value="0x00000000" />
-        <register type="OA" address="0x000130A0" value="0x00000C1D" />
-        <register type="OA" address="0x000130A4" value="0x00000000" />
-        <register type="OA" address="0x000130A8" value="0x00000C20" />
+        <register type="OA" address="0x000130A8" value="0x0000061F" />
         <register type="OA" address="0x000130AC" value="0x00000000" />
-        <register type="OA" address="0x000130B0" value="0x00000C28" />
+        <register type="OA" address="0x000130B0" value="0x00000628" />
         <register type="OA" address="0x000130B4" value="0x00000000" />
-        <register type="OA" address="0x000130B8" value="0x00000C29" />
+        <register type="OA" address="0x000130B8" value="0x0000061C" />
         <register type="OA" address="0x000130BC" value="0x00000000" />
-        <register type="OA" address="0x000130C0" value="0x00000C2A" />
+        <register type="OA" address="0x000130C0" value="0x0000061E" />
         <register type="OA" address="0x000130C4" value="0x00000000" />
-        <register type="OA" address="0x000130C8" value="0x00000C2B" />
+        <register type="OA" address="0x000130C8" value="0x00001601" />
         <register type="OA" address="0x000130CC" value="0x00000000" />
-        <register type="OA" address="0x000130D0" value="0x00000C2C" />
+        <register type="OA" address="0x000130D0" value="0x00001604" />
         <register type="OA" address="0x000130D4" value="0x00000000" />
-        <register type="OA" address="0x000130D8" value="0x00000C2D" />
+        <register type="OA" address="0x000130D8" value="0x00001602" />
         <register type="OA" address="0x000130DC" value="0x00000000" />
-        <register type="OA" address="0x000130E0" value="0x00000C2E" />
+        <register type="OA" address="0x000130E0" value="0x00001606" />
         <register type="OA" address="0x000130E4" value="0x00000000" />
-        <register type="OA" address="0x000130E8" value="0x00000C2F" />
+        <register type="OA" address="0x000130E8" value="0x00001807" />
         <register type="OA" address="0x000130EC" value="0x00000000" />
-        <register type="OA" address="0x000130F0" value="0x00000C30" />
+        <register type="OA" address="0x000130F0" value="0x00001808" />
         <register type="OA" address="0x000130F4" value="0x00000000" />
-        <register type="OA" address="0x000130F8" value="0x00001600" />
+        <register type="OA" address="0x000130F8" value="0x00000605" />
         <register type="OA" address="0x000130FC" value="0x00000000" />
-        <register type="OA" address="0x00013300" value="0x00006002" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
         <register type="OA" address="0x00013304" value="0x00000000" />
-        <register type="OA" address="0x00013500" value="0x00006002" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
         <register type="OA" address="0x00013504" value="0x00000000" />
-        <register type="OA" address="0x00013700" value="0x00006002" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
         <register type="OA" address="0x00013704" value="0x00000000" />
-        <register type="OA" address="0x00013308" value="0x00006007" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
         <register type="OA" address="0x0001330C" value="0x00000000" />
-        <register type="OA" address="0x00013508" value="0x00006007" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
         <register type="OA" address="0x0001350C" value="0x00000000" />
-        <register type="OA" address="0x00013708" value="0x00006007" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
         <register type="OA" address="0x0001370C" value="0x00000000" />
-        <register type="OA" address="0x00013310" value="0x00006008" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
         <register type="OA" address="0x00013314" value="0x00000000" />
-        <register type="OA" address="0x00013510" value="0x00006008" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
         <register type="OA" address="0x00013514" value="0x00000000" />
-        <register type="OA" address="0x00013710" value="0x00006008" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
         <register type="OA" address="0x00013714" value="0x00000000" />
-        <register type="OA" address="0x00013318" value="0x00006009" />
-        <register type="OA" address="0x0001331C" value="0x00000000" />
-        <register type="OA" address="0x00013518" value="0x00006009" />
-        <register type="OA" address="0x0001351C" value="0x00000000" />
-        <register type="OA" address="0x00013718" value="0x00006009" />
-        <register type="OA" address="0x0001371C" value="0x00000000" />
-        <register type="OA" address="0x00013320" value="0x0000600A" />
-        <register type="OA" address="0x00013324" value="0x00000000" />
-        <register type="OA" address="0x00013520" value="0x0000600A" />
-        <register type="OA" address="0x00013524" value="0x00000000" />
-        <register type="OA" address="0x00013720" value="0x0000600A" />
-        <register type="OA" address="0x00013724" value="0x00000000" />
-        <register type="OA" address="0x00013328" value="0x0000600B" />
-        <register type="OA" address="0x0001332C" value="0x00000000" />
-        <register type="OA" address="0x00013528" value="0x0000600B" />
-        <register type="OA" address="0x0001352C" value="0x00000000" />
-        <register type="OA" address="0x00013728" value="0x0000600B" />
-        <register type="OA" address="0x0001372C" value="0x00000000" />
-        <register type="OA" address="0x00013330" value="0x0000600C" />
-        <register type="OA" address="0x00013334" value="0x00000000" />
-        <register type="OA" address="0x00013530" value="0x0000600C" />
-        <register type="OA" address="0x00013534" value="0x00000000" />
-        <register type="OA" address="0x00013730" value="0x0000600C" />
-        <register type="OA" address="0x00013734" value="0x00000000" />
-        <register type="OA" address="0x00013338" value="0x0000600D" />
-        <register type="OA" address="0x0001333C" value="0x00000000" />
-        <register type="OA" address="0x00013538" value="0x0000600D" />
-        <register type="OA" address="0x0001353C" value="0x00000000" />
-        <register type="OA" address="0x00013738" value="0x0000600D" />
-        <register type="OA" address="0x0001373C" value="0x00000000" />
-        <register type="OA" address="0x00013340" value="0x0000600E" />
-        <register type="OA" address="0x00013344" value="0x00000000" />
-        <register type="OA" address="0x00013540" value="0x0000600E" />
-        <register type="OA" address="0x00013544" value="0x00000000" />
-        <register type="OA" address="0x00013740" value="0x0000600E" />
-        <register type="OA" address="0x00013744" value="0x00000000" />
-        <register type="OA" address="0x00013348" value="0x0000600F" />
-        <register type="OA" address="0x0001334C" value="0x00000000" />
-        <register type="OA" address="0x00013548" value="0x0000600F" />
-        <register type="OA" address="0x0001354C" value="0x00000000" />
-        <register type="OA" address="0x00013748" value="0x0000600F" />
-        <register type="OA" address="0x0001374C" value="0x00000000" />
-        <register type="OA" address="0x00013350" value="0x00006010" />
-        <register type="OA" address="0x00013354" value="0x00000000" />
-        <register type="OA" address="0x00013550" value="0x00006010" />
-        <register type="OA" address="0x00013554" value="0x00000000" />
-        <register type="OA" address="0x00013750" value="0x00006010" />
-        <register type="OA" address="0x00013754" value="0x00000000" />
-        <register type="OA" address="0x00013358" value="0x00006011" />
-        <register type="OA" address="0x0001335C" value="0x00000000" />
-        <register type="OA" address="0x00013558" value="0x00006011" />
-        <register type="OA" address="0x0001355C" value="0x00000000" />
-        <register type="OA" address="0x00013758" value="0x00006011" />
-        <register type="OA" address="0x0001375C" value="0x00000000" />
-        <register type="OA" address="0x00013360" value="0x00006012" />
-        <register type="OA" address="0x00013364" value="0x00000000" />
-        <register type="OA" address="0x00013560" value="0x00006012" />
-        <register type="OA" address="0x00013564" value="0x00000000" />
-        <register type="OA" address="0x00013760" value="0x00006012" />
-        <register type="OA" address="0x00013764" value="0x00000000" />
-        <register type="OA" address="0x00013368" value="0x00006013" />
-        <register type="OA" address="0x0001336C" value="0x00000000" />
-        <register type="OA" address="0x00013568" value="0x00006013" />
-        <register type="OA" address="0x0001356C" value="0x00000000" />
-        <register type="OA" address="0x00013768" value="0x00006013" />
-        <register type="OA" address="0x0001376C" value="0x00000000" />
-        <register type="OA" address="0x00013370" value="0x00006014" />
-        <register type="OA" address="0x00013374" value="0x00000000" />
-        <register type="OA" address="0x00013570" value="0x00006014" />
-        <register type="OA" address="0x00013574" value="0x00000000" />
-        <register type="OA" address="0x00013770" value="0x00006014" />
-        <register type="OA" address="0x00013774" value="0x00000000" />
-        <register type="OA" address="0x00013378" value="0x00006015" />
-        <register type="OA" address="0x0001337C" value="0x00000000" />
-        <register type="OA" address="0x00013578" value="0x00006015" />
-        <register type="OA" address="0x0001357C" value="0x00000000" />
-        <register type="OA" address="0x00013778" value="0x00006015" />
-        <register type="OA" address="0x0001377C" value="0x00000000" />
-        <register type="OA" address="0x00013380" value="0x00006016" />
-        <register type="OA" address="0x00013384" value="0x00000000" />
-        <register type="OA" address="0x00013580" value="0x00006016" />
-        <register type="OA" address="0x00013584" value="0x00000000" />
-        <register type="OA" address="0x00013780" value="0x00006016" />
-        <register type="OA" address="0x00013784" value="0x00000000" />
-        <register type="OA" address="0x00013388" value="0x00006017" />
-        <register type="OA" address="0x0001338C" value="0x00000000" />
-        <register type="OA" address="0x00013588" value="0x00006017" />
-        <register type="OA" address="0x0001358C" value="0x00000000" />
-        <register type="OA" address="0x00013788" value="0x00006017" />
-        <register type="OA" address="0x0001378C" value="0x00000000" />
-        <register type="OA" address="0x00013390" value="0x00006018" />
-        <register type="OA" address="0x00013394" value="0x00000000" />
-        <register type="OA" address="0x00013590" value="0x00006018" />
-        <register type="OA" address="0x00013594" value="0x00000000" />
-        <register type="OA" address="0x00013790" value="0x00006018" />
-        <register type="OA" address="0x00013794" value="0x00000000" />
-        <register type="OA" address="0x00013398" value="0x00006019" />
-        <register type="OA" address="0x0001339C" value="0x00000000" />
-        <register type="OA" address="0x00013598" value="0x00006019" />
-        <register type="OA" address="0x0001359C" value="0x00000000" />
-        <register type="OA" address="0x00013798" value="0x00006019" />
-        <register type="OA" address="0x0001379C" value="0x00000000" />
-        <register type="OA" address="0x000133A0" value="0x0000601A" />
-        <register type="OA" address="0x000133A4" value="0x00000000" />
-        <register type="OA" address="0x000135A0" value="0x0000601A" />
-        <register type="OA" address="0x000135A4" value="0x00000000" />
-        <register type="OA" address="0x000137A0" value="0x0000601A" />
-        <register type="OA" address="0x000137A4" value="0x00000000" />
-        <register type="OA" address="0x000133A8" value="0x0000601B" />
-        <register type="OA" address="0x000133AC" value="0x00000000" />
-        <register type="OA" address="0x000135A8" value="0x0000601B" />
-        <register type="OA" address="0x000135AC" value="0x00000000" />
-        <register type="OA" address="0x000137A8" value="0x0000601B" />
-        <register type="OA" address="0x000137AC" value="0x00000000" />
-        <register type="OA" address="0x000133B0" value="0x0000601C" />
-        <register type="OA" address="0x000133B4" value="0x00000000" />
-        <register type="OA" address="0x000135B0" value="0x0000601C" />
-        <register type="OA" address="0x000135B4" value="0x00000000" />
-        <register type="OA" address="0x000137B0" value="0x0000601C" />
-        <register type="OA" address="0x000137B4" value="0x00000000" />
-        <register type="OA" address="0x000133B8" value="0x00006400" />
-        <register type="OA" address="0x000133BC" value="0x00000000" />
-        <register type="OA" address="0x000135B8" value="0x00006400" />
-        <register type="OA" address="0x000135BC" value="0x00000000" />
-        <register type="OA" address="0x000137B8" value="0x00006400" />
-        <register type="OA" address="0x000137BC" value="0x00000000" />
-        <register type="OA" address="0x000133C0" value="0x00006401" />
-        <register type="OA" address="0x000133C4" value="0x00000000" />
-        <register type="OA" address="0x000135C0" value="0x00006401" />
-        <register type="OA" address="0x000135C4" value="0x00000000" />
-        <register type="OA" address="0x000137C0" value="0x00006401" />
-        <register type="OA" address="0x000137C4" value="0x00000000" />
-        <register type="OA" address="0x000133C8" value="0x00006402" />
-        <register type="OA" address="0x000133CC" value="0x00000000" />
-        <register type="OA" address="0x000135C8" value="0x00006402" />
-        <register type="OA" address="0x000135CC" value="0x00000000" />
-        <register type="OA" address="0x000137C8" value="0x00006402" />
-        <register type="OA" address="0x000137CC" value="0x00000000" />
-        <register type="OA" address="0x000133D0" value="0x00006403" />
-        <register type="OA" address="0x000133D4" value="0x00000000" />
-        <register type="OA" address="0x000135D0" value="0x00006403" />
-        <register type="OA" address="0x000135D4" value="0x00000000" />
-        <register type="OA" address="0x000137D0" value="0x00006403" />
-        <register type="OA" address="0x000137D4" value="0x00000000" />
-        <register type="OA" address="0x000133D8" value="0x00006600" />
-        <register type="OA" address="0x000133DC" value="0x00000000" />
-        <register type="OA" address="0x000135D8" value="0x00006600" />
-        <register type="OA" address="0x000135DC" value="0x00000000" />
-        <register type="OA" address="0x000137D8" value="0x00006600" />
-        <register type="OA" address="0x000137DC" value="0x00000000" />
-        <register type="OA" address="0x000133E0" value="0x00006601" />
-        <register type="OA" address="0x000133E4" value="0x00000000" />
-        <register type="OA" address="0x000135E0" value="0x00006601" />
-        <register type="OA" address="0x000135E4" value="0x00000000" />
-        <register type="OA" address="0x000137E0" value="0x00006601" />
-        <register type="OA" address="0x000137E4" value="0x00000000" />
-        <register type="OA" address="0x000133E8" value="0x00006602" />
-        <register type="OA" address="0x000133EC" value="0x00000000" />
-        <register type="OA" address="0x000135E8" value="0x00006602" />
-        <register type="OA" address="0x000135EC" value="0x00000000" />
-        <register type="OA" address="0x000137E8" value="0x00006602" />
-        <register type="OA" address="0x000137EC" value="0x00000000" />
-        <register type="OA" address="0x000133F0" value="0x00006603" />
-        <register type="OA" address="0x000133F4" value="0x00000000" />
-        <register type="OA" address="0x000135F0" value="0x00006603" />
-        <register type="OA" address="0x000135F4" value="0x00000000" />
-        <register type="OA" address="0x000137F0" value="0x00006603" />
-        <register type="OA" address="0x000137F4" value="0x00000000" />
-        <register type="OA" address="0x000133F8" value="0x00006604" />
-        <register type="OA" address="0x000133FC" value="0x00000000" />
-        <register type="OA" address="0x000135F8" value="0x00006604" />
-        <register type="OA" address="0x000135FC" value="0x00000000" />
-        <register type="OA" address="0x000137F8" value="0x00006604" />
-        <register type="OA" address="0x000137FC" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00000000" />
+        <register type="FLEX" address="0x0000E558" value="0x00000000" />
     </register_config>
   </set>
 
-  <set name="MetricSet4"
+  <set name="TestOa"
        chipset="LNL"
-       symbol_name="MetricSet4"
-       underscore_name="metric_set4"
+       symbol_name="TestOa"
+       underscore_name="test_oa"
        mdapi_supported_apis="VK OGL OCL IO"
-       oa_format="256B_GENERIC_NOA16"
-       hw_config_guid="e6f21065-a6f5-4ea4-a545-80d6aebaab56"
+       oa_format="576B_PEC64LL"
+       hw_config_guid="24c33f2c-f8d9-40d9-b2db-64e863b4d625"
        >
     <counter name="GPU Time Elapsed"
              symbol_name="GpuTime"
@@ -2674,125 +6790,194 @@
              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="GPU Busy"
+             symbol_name="GPU_BUSY"
+             underscore_name="gpu_busy"
+             description="Percentage of time in which GPU is not idle including all GPU engines"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 32 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Front End"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="IA Vertex"
+             symbol_name="IA_VERTEX"
+             underscore_name="ia_vertex"
+             description="Number of vertices in a draw"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 33 READ"
+             mdapi_group="Geometry"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GpGpu Threadgroup Count"
+             symbol_name="GPGPU_THREADGROUP_COUNT"
+             underscore_name="gpgpu_threadgroup_count"
+             description="Number of GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 0 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Async GpGpu Threadgroup Count"
+             symbol_name="ASYNC_GPGPU_THREADGROUP_COUNT"
+             underscore_name="async_gpgpu_threadgroup_count"
+             description="Number of Async GPGPU threadgroups dispatched"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 1 READ"
+             mdapi_group="Thread Dispatcher"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Rasterizer Sample Output"
+             symbol_name="RASTERIZER_SAMPLE_OUTPUT"
+             underscore_name="rasterizer_sample_output"
+             description="Number of lit samples emitted by Rasterizer"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="PEC 34 READ"
+             mdapi_group="Rasterizer"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Test Event1"
+             symbol_name="TEST_EVENT1"
+             underscore_name="test_event1"
+             description="Number of GPU (gt) clock cycles at every clock period"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 2 READ $XeCoreTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Test Event1 Cycles"
+             symbol_name="TEST_EVENT1_CYCLES"
+             underscore_name="test_event1_cycles"
+             description="Number of GPU (gt) clock cycles at every clock period"
+             data_type="uint64"
+             units="cycles"
+             semantic_type="event"
+             equation="PEC 2 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Test Event1 Cycles Average"
+             symbol_name="TEST_EVENT1_CYCLES_AVERAGE"
+             underscore_name="test_event1_cycles_average"
+             description="Average number of GPU (gt) clock cycles at every clock period"
+             data_type="uint64"
+             units="cycles"
+             semantic_type="event"
+             equation="PEC 2 READ $XeCoreTotalCount UDIV"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Test Event2"
+             symbol_name="TEST_EVENT2"
+             underscore_name="test_event2"
+             description="Number of GPU (gt) clock cycles at every other clock period"
+             data_type="float"
+             units="percent"
+             semantic_type="duration"
+             equation="PEC 35 READ $SliceTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Test Event2 Cycles"
+             symbol_name="TEST_EVENT2_CYCLES"
+             underscore_name="test_event2_cycles"
+             description="Number of GPU (gt) clock cycles at every other clock period"
+             data_type="uint64"
+             units="cycles"
+             semantic_type="event"
+             equation="PEC 35 READ"
+             mdapi_group="Test"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
     <register_config type="OA">
-        <register type="OA" address="0x00013000" value="0x00001601" />
+        <register type="OA" address="0x00013000" value="0x00001801" />
         <register type="OA" address="0x00013004" value="0x00000000" />
-        <register type="OA" address="0x00013008" value="0x00001602" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
         <register type="OA" address="0x0001300C" value="0x00000000" />
-        <register type="OA" address="0x00013010" value="0x00001603" />
+        <register type="OA" address="0x00013010" value="0x00003E00" />
         <register type="OA" address="0x00013014" value="0x00000000" />
-        <register type="OA" address="0x00013018" value="0x00001604" />
-        <register type="OA" address="0x0001301C" value="0x00000000" />
-        <register type="OA" address="0x00013020" value="0x00001605" />
-        <register type="OA" address="0x00013024" value="0x00000000" />
-        <register type="OA" address="0x00013028" value="0x00001606" />
-        <register type="OA" address="0x0001302C" value="0x00000000" />
-        <register type="OA" address="0x00013030" value="0x00001800" />
-        <register type="OA" address="0x00013034" value="0x00000000" />
-        <register type="OA" address="0x00013038" value="0x00001801" />
-        <register type="OA" address="0x0001303C" value="0x00000000" />
-        <register type="OA" address="0x00013040" value="0x00001802" />
-        <register type="OA" address="0x00013044" value="0x00000000" />
-        <register type="OA" address="0x00013048" value="0x00001803" />
-        <register type="OA" address="0x0001304C" value="0x00000000" />
-        <register type="OA" address="0x00013050" value="0x00001804" />
-        <register type="OA" address="0x00013054" value="0x00000000" />
-        <register type="OA" address="0x00013058" value="0x00001807" />
-        <register type="OA" address="0x0001305C" value="0x00000000" />
-        <register type="OA" address="0x00013060" value="0x00001808" />
-        <register type="OA" address="0x00013064" value="0x00000000" />
-        <register type="OA" address="0x00013068" value="0x00003E00" />
-        <register type="OA" address="0x0001306C" value="0x00000000" />
-        <register type="OA" address="0x00013300" value="0x00006605" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
         <register type="OA" address="0x00013304" value="0x00000000" />
-        <register type="OA" address="0x00013500" value="0x00006605" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
         <register type="OA" address="0x00013504" value="0x00000000" />
-        <register type="OA" address="0x00013700" value="0x00006605" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
         <register type="OA" address="0x00013704" value="0x00000000" />
-        <register type="OA" address="0x00013308" value="0x00006606" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
         <register type="OA" address="0x0001330C" value="0x00000000" />
-        <register type="OA" address="0x00013508" value="0x00006606" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
         <register type="OA" address="0x0001350C" value="0x00000000" />
-        <register type="OA" address="0x00013708" value="0x00006606" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
         <register type="OA" address="0x0001370C" value="0x00000000" />
-        <register type="OA" address="0x00013310" value="0x00006610" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
         <register type="OA" address="0x00013314" value="0x00000000" />
-        <register type="OA" address="0x00013510" value="0x00006610" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
         <register type="OA" address="0x00013514" value="0x00000000" />
-        <register type="OA" address="0x00013710" value="0x00006610" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
         <register type="OA" address="0x00013714" value="0x00000000" />
-        <register type="OA" address="0x00013318" value="0x00006611" />
+        <register type="OA" address="0x00013318" value="0x00007E00" />
         <register type="OA" address="0x0001331C" value="0x00000000" />
-        <register type="OA" address="0x00013518" value="0x00006611" />
+        <register type="OA" address="0x00013518" value="0x00007E00" />
         <register type="OA" address="0x0001351C" value="0x00000000" />
-        <register type="OA" address="0x00013718" value="0x00006611" />
+        <register type="OA" address="0x00013718" value="0x00007E00" />
         <register type="OA" address="0x0001371C" value="0x00000000" />
-        <register type="OA" address="0x00013320" value="0x00006612" />
-        <register type="OA" address="0x00013324" value="0x00000000" />
-        <register type="OA" address="0x00013520" value="0x00006612" />
-        <register type="OA" address="0x00013524" value="0x00000000" />
-        <register type="OA" address="0x00013720" value="0x00006612" />
-        <register type="OA" address="0x00013724" value="0x00000000" />
-        <register type="OA" address="0x00013328" value="0x00006800" />
-        <register type="OA" address="0x0001332C" value="0x00000000" />
-        <register type="OA" address="0x00013528" value="0x00006800" />
-        <register type="OA" address="0x0001352C" value="0x00000000" />
-        <register type="OA" address="0x00013728" value="0x00006800" />
-        <register type="OA" address="0x0001372C" value="0x00000000" />
-        <register type="OA" address="0x00013330" value="0x00006801" />
-        <register type="OA" address="0x00013334" value="0x00000000" />
-        <register type="OA" address="0x00013530" value="0x00006801" />
-        <register type="OA" address="0x00013534" value="0x00000000" />
-        <register type="OA" address="0x00013730" value="0x00006801" />
-        <register type="OA" address="0x00013734" value="0x00000000" />
-        <register type="OA" address="0x00013338" value="0x00006802" />
-        <register type="OA" address="0x0001333C" value="0x00000000" />
-        <register type="OA" address="0x00013538" value="0x00006802" />
-        <register type="OA" address="0x0001353C" value="0x00000000" />
-        <register type="OA" address="0x00013738" value="0x00006802" />
-        <register type="OA" address="0x0001373C" value="0x00000000" />
-        <register type="OA" address="0x00013340" value="0x00006803" />
-        <register type="OA" address="0x00013344" value="0x00000000" />
-        <register type="OA" address="0x00013540" value="0x00006803" />
-        <register type="OA" address="0x00013544" value="0x00000000" />
-        <register type="OA" address="0x00013740" value="0x00006803" />
-        <register type="OA" address="0x00013744" value="0x00000000" />
-        <register type="OA" address="0x00013348" value="0x00006804" />
-        <register type="OA" address="0x0001334C" value="0x00000000" />
-        <register type="OA" address="0x00013548" value="0x00006804" />
-        <register type="OA" address="0x0001354C" value="0x00000000" />
-        <register type="OA" address="0x00013748" value="0x00006804" />
-        <register type="OA" address="0x0001374C" value="0x00000000" />
-        <register type="OA" address="0x00013350" value="0x00006805" />
-        <register type="OA" address="0x00013354" value="0x00000000" />
-        <register type="OA" address="0x00013550" value="0x00006805" />
-        <register type="OA" address="0x00013554" value="0x00000000" />
-        <register type="OA" address="0x00013750" value="0x00006805" />
-        <register type="OA" address="0x00013754" value="0x00000000" />
-        <register type="OA" address="0x00013358" value="0x00006E00" />
-        <register type="OA" address="0x0001335C" value="0x00000000" />
-        <register type="OA" address="0x00013558" value="0x00006E00" />
-        <register type="OA" address="0x0001355C" value="0x00000000" />
-        <register type="OA" address="0x00013758" value="0x00006E00" />
-        <register type="OA" address="0x0001375C" value="0x00000000" />
-        <register type="OA" address="0x00013360" value="0x00006E01" />
-        <register type="OA" address="0x00013364" value="0x00000000" />
-        <register type="OA" address="0x00013560" value="0x00006E01" />
-        <register type="OA" address="0x00013564" value="0x00000000" />
-        <register type="OA" address="0x00013760" value="0x00006E01" />
-        <register type="OA" address="0x00013764" value="0x00000000" />
-        <register type="OA" address="0x00013368" value="0x00006E02" />
-        <register type="OA" address="0x0001336C" value="0x00000000" />
-        <register type="OA" address="0x00013568" value="0x00006E02" />
-        <register type="OA" address="0x0001356C" value="0x00000000" />
-        <register type="OA" address="0x00013768" value="0x00006E02" />
-        <register type="OA" address="0x0001376C" value="0x00000000" />
-        <register type="OA" address="0x00013370" value="0x00007E00" />
-        <register type="OA" address="0x00013374" value="0x00000000" />
-        <register type="OA" address="0x00013570" value="0x00007E00" />
-        <register type="OA" address="0x00013574" value="0x00000000" />
-        <register type="OA" address="0x00013770" value="0x00007E00" />
-        <register type="OA" address="0x00013774" value="0x00000000" />
     </register_config>
   </set>
 
-- 
2.41.0


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

* [PATCH i-g-t 27/27] xe/oa/oa-metricset-codegen: Fix XE_OA_FORMAT_PEC64u64 offsets
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (25 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 26/27] xe/oa: Regenerate oa-lnl.xml now parsing all counters Ashutosh Dixit
@ 2024-06-07 20:08 ` Ashutosh Dixit
  2024-06-07 22:48 ` ✗ GitLab.Pipeline: warning for Intel Xe OA IGT's (rev3) Patchwork
                   ` (4 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Ashutosh Dixit @ 2024-06-07 20:08 UTC (permalink / raw)
  To: igt-dev

From: José Roberto de Souza <jose.souza@intel.com>

XE_OA_FORMAT_PEC64u64 only has pec_offset.

Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
---
 lib/xe/oa-configs/oa-metricset-codegen.py | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/lib/xe/oa-configs/oa-metricset-codegen.py b/lib/xe/oa-configs/oa-metricset-codegen.py
index f4a008d690..5fa12f9caf 100644
--- a/lib/xe/oa-configs/oa-metricset-codegen.py
+++ b/lib/xe/oa-configs/oa-metricset-codegen.py
@@ -145,11 +145,7 @@ def generate_metric_sets(args, gen):
                 metric_set->perf_raw_size = 576;
                 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->a_offset + 64;
-
+                metric_set->pec_offset = 2;
             """))
         else:
             c(textwrap.dedent("""\
-- 
2.41.0


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

* ✗ GitLab.Pipeline: warning for Intel Xe OA IGT's (rev3)
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (26 preceding siblings ...)
  2024-06-07 20:08 ` [PATCH i-g-t 27/27] xe/oa/oa-metricset-codegen: Fix XE_OA_FORMAT_PEC64u64 offsets Ashutosh Dixit
@ 2024-06-07 22:48 ` Patchwork
  2024-06-07 23:22 ` ✓ Fi.CI.BAT: success " Patchwork
                   ` (3 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Patchwork @ 2024-06-07 22:48 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

== Series Details ==

Series: Intel Xe OA IGT's (rev3)
URL   : https://patchwork.freedesktop.org/series/130033/
State : warning

== Summary ==

Pipeline status: FAILED.

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

build:tests-debian-meson-armhf has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/59646626):
         ^
  ../lib/xe/xe_oa.c: In function ‘xe_oa_prop_to_ext’:
  ../lib/xe/xe_oa.c:1026:16: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
    __u64 *prop = (__u64 *)properties->properties_ptr;
                  ^
  ../lib/xe/xe_oa.c:1040:32: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
     ext[j].base.next_extension = (__u64)&ext[j + 1];
                                  ^
  ../lib/xe/xe_oa.c: In function ‘intel_xe_perf_ioctl’:
  ../lib/xe/xe_oa.c:1054:12: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
     .param = (__u64)((op == DRM_XE_PERF_OP_STREAM_OPEN) ? ext : arg),
              ^
  cc1: some warnings being treated as errors
  ninja: build stopped: subcommand failed.
  section_end:1717800108:step_script
  section_start:1717800108:cleanup_file_variables
  Cleaning up project directory and file based variables
  section_end:1717800108:cleanup_file_variables
  ERROR: Job failed: exit code 1
  

build:tests-debian-meson-mips has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/59646628):
         ^
  ../lib/xe/xe_oa.c: In function ‘xe_oa_prop_to_ext’:
  ../lib/xe/xe_oa.c:1026:16: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
    __u64 *prop = (__u64 *)properties->properties_ptr;
                  ^
  ../lib/xe/xe_oa.c:1040:32: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
     ext[j].base.next_extension = (__u64)&ext[j + 1];
                                  ^
  ../lib/xe/xe_oa.c: In function ‘intel_xe_perf_ioctl’:
  ../lib/xe/xe_oa.c:1054:12: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
     .param = (__u64)((op == DRM_XE_PERF_OP_STREAM_OPEN) ? ext : arg),
              ^
  cc1: some warnings being treated as errors
  ninja: build stopped: subcommand failed.
  section_end:1717800138:step_script
  section_start:1717800138:cleanup_file_variables
  Cleaning up project directory and file based variables
  section_end:1717800138:cleanup_file_variables
  ERROR: Job failed: exit code 1

== Logs ==

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

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

* ✓ Fi.CI.BAT: success for Intel Xe OA IGT's (rev3)
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (27 preceding siblings ...)
  2024-06-07 22:48 ` ✗ GitLab.Pipeline: warning for Intel Xe OA IGT's (rev3) Patchwork
@ 2024-06-07 23:22 ` Patchwork
  2024-06-07 23:23 ` ✗ CI.xeBAT: failure " Patchwork
                   ` (2 subsequent siblings)
  31 siblings, 0 replies; 33+ messages in thread
From: Patchwork @ 2024-06-07 23:22 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

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

== Series Details ==

Series: Intel Xe OA IGT's (rev3)
URL   : https://patchwork.freedesktop.org/series/130033/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_14904 -> IGTPW_11239
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (44 -> 43)
------------------------------

  Additional (2): bat-kbl-2 bat-jsl-3 
  Missing    (3): fi-cfl-8109u fi-snb-2520m fi-kbl-8809g 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@debugfs_test@basic-hwmon:
    - bat-jsl-3:          NOTRUN -> [SKIP][1] ([i915#9318])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/bat-jsl-3/igt@debugfs_test@basic-hwmon.html

  * igt@fbdev@info:
    - bat-kbl-2:          NOTRUN -> [SKIP][2] ([i915#1849])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/bat-kbl-2/igt@fbdev@info.html

  * igt@gem_huc_copy@huc-copy:
    - bat-jsl-3:          NOTRUN -> [SKIP][3] ([i915#2190])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/bat-jsl-3/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@basic:
    - bat-jsl-3:          NOTRUN -> [SKIP][4] ([i915#4613]) +3 other tests skip
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/bat-jsl-3/igt@gem_lmem_swapping@basic.html

  * igt@gem_lmem_swapping@parallel-random-engines:
    - bat-kbl-2:          NOTRUN -> [SKIP][5] +39 other tests skip
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/bat-kbl-2/igt@gem_lmem_swapping@parallel-random-engines.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - bat-jsl-3:          NOTRUN -> [SKIP][6] ([i915#4103]) +1 other test skip
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/bat-jsl-3/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_dsc@dsc-basic:
    - bat-jsl-3:          NOTRUN -> [SKIP][7] ([i915#3555] / [i915#9886])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/bat-jsl-3/igt@kms_dsc@dsc-basic.html

  * igt@kms_force_connector_basic@force-load-detect:
    - bat-jsl-3:          NOTRUN -> [SKIP][8]
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/bat-jsl-3/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - bat-jsl-3:          NOTRUN -> [SKIP][9] ([i915#3555])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/bat-jsl-3/igt@kms_setmode@basic-clone-single-crtc.html

  
#### Possible fixes ####

  * igt@gem_lmem_swapping@basic@lmem0:
    - bat-dg2-11:         [FAIL][10] ([i915#10378]) -> [PASS][11]
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/bat-dg2-11/igt@gem_lmem_swapping@basic@lmem0.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/bat-dg2-11/igt@gem_lmem_swapping@basic@lmem0.html

  * igt@i915_selftest@live@gt_lrc:
    - bat-adln-1:         [INCOMPLETE][12] ([i915#9413]) -> [PASS][13]
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/bat-adln-1/igt@i915_selftest@live@gt_lrc.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/bat-adln-1/igt@i915_selftest@live@gt_lrc.html

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

  [i915#10378]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10378
  [i915#10580]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10580
  [i915#11009]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11009
  [i915#1849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1849
  [i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#6121]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6121
  [i915#9318]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9318
  [i915#9413]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9413
  [i915#9886]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9886


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7880 -> IGTPW_11239

  CI-20190529: 20190529
  CI_DRM_14904: 2bea08bd31298d60d416b2a6ed346bb53dd28037 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_11239: e1c92a280ba09388fabf5484d0f6f276fa136f44 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_7880: 73618605b4370cf902267aaf1d25666ff5e26112 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* ✗ CI.xeBAT: failure for Intel Xe OA IGT's (rev3)
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (28 preceding siblings ...)
  2024-06-07 23:22 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2024-06-07 23:23 ` Patchwork
  2024-06-08 14:10 ` ✗ CI.xeFULL: " Patchwork
  2024-06-08 15:04 ` ✗ Fi.CI.IGT: " Patchwork
  31 siblings, 0 replies; 33+ messages in thread
From: Patchwork @ 2024-06-07 23:23 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

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

== Series Details ==

Series: Intel Xe OA IGT's (rev3)
URL   : https://patchwork.freedesktop.org/series/130033/
State : failure

== Summary ==

CI Bug Log - changes from XEIGT_7880_BAT -> XEIGTPW_11239_BAT
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with XEIGTPW_11239_BAT absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in XEIGTPW_11239_BAT, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (4 -> 3)
------------------------------

  Missing    (1): bat-adlp-7 

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@xe_compute@compute-square:
    - bat-atsm-2:         [PASS][1] -> [FAIL][2] +157 other tests fail
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-atsm-2/igt@xe_compute@compute-square.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-atsm-2/igt@xe_compute@compute-square.html

  * igt@xe_intel_bb@create-in-region:
    - bat-dg2-oem2:       [PASS][3] -> [FAIL][4] +209 other tests fail
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-dg2-oem2/igt@xe_intel_bb@create-in-region.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-dg2-oem2/igt@xe_intel_bb@create-in-region.html

  
#### Warnings ####

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-dg2-oem2:       [SKIP][5] ([Intel XE#623]) -> [FAIL][6]
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-dg2-oem2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-dg2-oem2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@invalid-set-prop-any:
    - bat-atsm-2:         [SKIP][7] ([i915#6077]) -> [FAIL][8] +30 other tests fail
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-atsm-2/igt@kms_addfb_basic@invalid-set-prop-any.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-atsm-2/igt@kms_addfb_basic@invalid-set-prop-any.html

  * igt@kms_cursor_legacy@basic-flip-before-cursor-legacy:
    - bat-atsm-2:         [SKIP][9] ([Intel XE#1024] / [Intel XE#782]) -> [FAIL][10] +5 other tests fail
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-atsm-2/igt@kms_cursor_legacy@basic-flip-before-cursor-legacy.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-atsm-2/igt@kms_cursor_legacy@basic-flip-before-cursor-legacy.html

  * igt@kms_dsc@dsc-basic:
    - bat-atsm-2:         [SKIP][11] ([Intel XE#1024] / [Intel XE#784]) -> [FAIL][12]
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-atsm-2/igt@kms_dsc@dsc-basic.html
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-atsm-2/igt@kms_dsc@dsc-basic.html
    - bat-dg2-oem2:       [SKIP][13] ([Intel XE#455]) -> [FAIL][14]
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-dg2-oem2/igt@kms_dsc@dsc-basic.html
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-dg2-oem2/igt@kms_dsc@dsc-basic.html

  * igt@kms_flip@basic-flip-vs-modeset:
    - bat-atsm-2:         [SKIP][15] ([Intel XE#1024] / [Intel XE#947]) -> [FAIL][16] +3 other tests fail
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-atsm-2/igt@kms_flip@basic-flip-vs-modeset.html
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-atsm-2/igt@kms_flip@basic-flip-vs-modeset.html

  * igt@kms_force_connector_basic@force-connector-state:
    - bat-atsm-2:         [SKIP][17] ([Intel XE#540]) -> [FAIL][18] +3 other tests fail
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-atsm-2/igt@kms_force_connector_basic@force-connector-state.html
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-atsm-2/igt@kms_force_connector_basic@force-connector-state.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - bat-dg2-oem2:       [SKIP][19] ([i915#5274]) -> [FAIL][20]
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-dg2-oem2/igt@kms_force_connector_basic@prune-stale-modes.html
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-dg2-oem2/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_frontbuffer_tracking@basic:
    - bat-atsm-2:         [SKIP][21] ([Intel XE#1024] / [Intel XE#783]) -> [FAIL][22]
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-atsm-2/igt@kms_frontbuffer_tracking@basic.html
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-atsm-2/igt@kms_frontbuffer_tracking@basic.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24:
    - bat-atsm-2:         [SKIP][23] ([i915#1836]) -> [FAIL][24] +6 other tests fail
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-atsm-2/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24.html
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-atsm-2/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24.html

  * igt@kms_prop_blob@basic:
    - bat-atsm-2:         [SKIP][25] ([Intel XE#780]) -> [FAIL][26]
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-atsm-2/igt@kms_prop_blob@basic.html
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-atsm-2/igt@kms_prop_blob@basic.html

  * igt@kms_psr@psr-cursor-plane-move:
    - bat-dg2-oem2:       [SKIP][27] ([Intel XE#929]) -> [FAIL][28] +2 other tests fail
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-dg2-oem2/igt@kms_psr@psr-cursor-plane-move.html
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-dg2-oem2/igt@kms_psr@psr-cursor-plane-move.html

  * igt@kms_psr@psr-primary-page-flip:
    - bat-atsm-2:         [SKIP][29] ([Intel XE#1024]) -> [FAIL][30] +2 other tests fail
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-atsm-2/igt@kms_psr@psr-primary-page-flip.html
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-atsm-2/igt@kms_psr@psr-primary-page-flip.html

  * igt@xe_exec_fault_mode@many-basic:
    - bat-dg2-oem2:       [SKIP][31] ([Intel XE#288]) -> [FAIL][32] +32 other tests fail
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-dg2-oem2/igt@xe_exec_fault_mode@many-basic.html
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-dg2-oem2/igt@xe_exec_fault_mode@many-basic.html

  * igt@xe_exec_fault_mode@twice-userptr-invalidate-imm:
    - bat-atsm-2:         [SKIP][33] ([Intel XE#288]) -> [FAIL][34] +32 other tests fail
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-atsm-2/igt@xe_exec_fault_mode@twice-userptr-invalidate-imm.html
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-atsm-2/igt@xe_exec_fault_mode@twice-userptr-invalidate-imm.html

  * igt@xe_huc_copy@huc_copy:
    - bat-dg2-oem2:       [SKIP][35] ([Intel XE#255]) -> [FAIL][36]
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-dg2-oem2/igt@xe_huc_copy@huc_copy.html
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-dg2-oem2/igt@xe_huc_copy@huc_copy.html
    - bat-atsm-2:         [SKIP][37] ([Intel XE#255]) -> [FAIL][38]
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-atsm-2/igt@xe_huc_copy@huc_copy.html
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-atsm-2/igt@xe_huc_copy@huc_copy.html

  * igt@xe_pat@pat-index-xe2:
    - bat-atsm-2:         [SKIP][39] ([Intel XE#977]) -> [FAIL][40]
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-atsm-2/igt@xe_pat@pat-index-xe2.html
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-atsm-2/igt@xe_pat@pat-index-xe2.html
    - bat-dg2-oem2:       [SKIP][41] ([Intel XE#977]) -> [FAIL][42]
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-dg2-oem2/igt@xe_pat@pat-index-xe2.html
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-dg2-oem2/igt@xe_pat@pat-index-xe2.html

  * igt@xe_pat@pat-index-xehpc:
    - bat-dg2-oem2:       [SKIP][43] ([Intel XE#979]) -> [FAIL][44] +1 other test fail
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-dg2-oem2/igt@xe_pat@pat-index-xehpc.html
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-dg2-oem2/igt@xe_pat@pat-index-xehpc.html

  * igt@xe_pat@pat-index-xelpg:
    - bat-atsm-2:         [SKIP][45] ([Intel XE#979]) -> [FAIL][46] +1 other test fail
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-atsm-2/igt@xe_pat@pat-index-xelpg.html
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-atsm-2/igt@xe_pat@pat-index-xelpg.html

  
#### Suppressed ####

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

  * igt@core_hotunplug@unbind-rebind:
    - {bat-lnl-1}:        [DMESG-WARN][47] ([Intel XE#2016]) -> [FAIL][48]
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-lnl-1/igt@core_hotunplug@unbind-rebind.html
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-lnl-1/igt@core_hotunplug@unbind-rebind.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - {bat-lnl-1}:        [SKIP][49] ([Intel XE#1466]) -> [FAIL][50]
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-lnl-1/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-lnl-1/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_dsc@dsc-basic:
    - {bat-lnl-1}:        [SKIP][51] ([Intel XE#1446]) -> [FAIL][52]
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-lnl-1/igt@kms_dsc@dsc-basic.html
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-lnl-1/igt@kms_dsc@dsc-basic.html

  * igt@kms_force_connector_basic@force-connector-state:
    - {bat-lnl-1}:        [SKIP][53] ([Intel XE#352]) -> [FAIL][54] +2 other tests fail
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-lnl-1/igt@kms_force_connector_basic@force-connector-state.html
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-lnl-1/igt@kms_force_connector_basic@force-connector-state.html

  * igt@kms_hdmi_inject@inject-audio:
    - {bat-lnl-1}:        [SKIP][55] ([Intel XE#1470]) -> [FAIL][56]
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-lnl-1/igt@kms_hdmi_inject@inject-audio.html
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-lnl-1/igt@kms_hdmi_inject@inject-audio.html

  * igt@xe_evict@evict-mixed-threads-small-multi-vm:
    - {bat-lnl-1}:        [SKIP][57] ([Intel XE#688]) -> [FAIL][58] +17 other tests fail
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-lnl-1/igt@xe_evict@evict-mixed-threads-small-multi-vm.html
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-lnl-1/igt@xe_evict@evict-mixed-threads-small-multi-vm.html

  * igt@xe_gt_freq@freq_range_idle:
    - {bat-lnl-1}:        [SKIP][59] ([Intel XE#1462]) -> [FAIL][60] +1 other test fail
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-lnl-1/igt@xe_gt_freq@freq_range_idle.html
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-lnl-1/igt@xe_gt_freq@freq_range_idle.html

  * igt@xe_huc_copy@huc_copy:
    - {bat-lnl-1}:        [PASS][61] -> [FAIL][62] +219 other tests fail
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-lnl-1/igt@xe_huc_copy@huc_copy.html
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-lnl-1/igt@xe_huc_copy@huc_copy.html

  * igt@xe_mmap@vram:
    - {bat-lnl-1}:        [SKIP][63] ([Intel XE#1416]) -> [FAIL][64]
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-lnl-1/igt@xe_mmap@vram.html
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-lnl-1/igt@xe_mmap@vram.html

  * igt@xe_module_load@load:
    - {bat-lnl-1}:        [DMESG-WARN][65] ([Intel XE#2016]) -> [DMESG-FAIL][66]
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-lnl-1/igt@xe_module_load@load.html
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-lnl-1/igt@xe_module_load@load.html

  * igt@xe_pat@pat-index-xehpc:
    - {bat-lnl-1}:        [SKIP][67] ([Intel XE#1420]) -> [FAIL][68]
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-lnl-1/igt@xe_pat@pat-index-xehpc.html
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-lnl-1/igt@xe_pat@pat-index-xehpc.html

  * igt@xe_pat@pat-index-xelp:
    - {bat-lnl-1}:        [SKIP][69] ([Intel XE#977]) -> [FAIL][70]
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-lnl-1/igt@xe_pat@pat-index-xelp.html
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-lnl-1/igt@xe_pat@pat-index-xelp.html

  * igt@xe_pat@pat-index-xelpg:
    - {bat-lnl-1}:        [SKIP][71] ([Intel XE#979]) -> [FAIL][72]
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-lnl-1/igt@xe_pat@pat-index-xelpg.html
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-lnl-1/igt@xe_pat@pat-index-xelpg.html

  * igt@xe_pm_residency@gt-c6-on-idle:
    - {bat-lnl-1}:        [FAIL][73] ([Intel XE#1442]) -> [FAIL][74]
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/bat-lnl-1/igt@xe_pm_residency@gt-c6-on-idle.html
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/bat-lnl-1/igt@xe_pm_residency@gt-c6-on-idle.html

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

  [Intel XE#1024]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1024
  [Intel XE#1416]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1416
  [Intel XE#1420]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1420
  [Intel XE#1442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1442
  [Intel XE#1446]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1446
  [Intel XE#1462]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1462
  [Intel XE#1466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1466
  [Intel XE#1470]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1470
  [Intel XE#2016]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2016
  [Intel XE#255]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/255
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#352]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/352
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/540
  [Intel XE#623]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/623
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#780]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/780
  [Intel XE#782]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/782
  [Intel XE#783]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/783
  [Intel XE#784]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/784
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#947]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/947
  [Intel XE#977]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/977
  [Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979
  [i915#1836]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1836
  [i915#5274]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5274
  [i915#6077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6077


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

  * IGT: IGT_7880 -> IGTPW_11239
  * Linux: xe-1413-cb97aa28be4f4b914c751ed27bae7782e027826c -> xe-1428-2bea08bd31298d60d416b2a6ed346bb53dd28037

  IGTPW_11239: e1c92a280ba09388fabf5484d0f6f276fa136f44 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_7880: 73618605b4370cf902267aaf1d25666ff5e26112 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1413-cb97aa28be4f4b914c751ed27bae7782e027826c: cb97aa28be4f4b914c751ed27bae7782e027826c
  xe-1428-2bea08bd31298d60d416b2a6ed346bb53dd28037: 2bea08bd31298d60d416b2a6ed346bb53dd28037

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/index.html

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

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

* ✗ CI.xeFULL: failure for Intel Xe OA IGT's (rev3)
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (29 preceding siblings ...)
  2024-06-07 23:23 ` ✗ CI.xeBAT: failure " Patchwork
@ 2024-06-08 14:10 ` Patchwork
  2024-06-08 15:04 ` ✗ Fi.CI.IGT: " Patchwork
  31 siblings, 0 replies; 33+ messages in thread
From: Patchwork @ 2024-06-08 14:10 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

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

== Series Details ==

Series: Intel Xe OA IGT's (rev3)
URL   : https://patchwork.freedesktop.org/series/130033/
State : failure

== Summary ==

CI Bug Log - changes from XEIGT_7880_full -> XEIGTPW_11239_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with XEIGTPW_11239_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in XEIGTPW_11239_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (3 -> 2)
------------------------------

  Missing    (1): shard-adlp 

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling:
    - shard-dg2-set2:     [PASS][1] -> [FAIL][2] +1396 other tests fail
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-463/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-434/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling.html

  * {igt@xe_oa@map-oa-buffer} (NEW):
    - shard-dg2-set2:     NOTRUN -> [SKIP][3] +3 other tests skip
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-432/igt@xe_oa@map-oa-buffer.html

  * {igt@xe_oa@stress-open-close} (NEW):
    - {shard-lnl}:        NOTRUN -> [SKIP][4] +37 other tests skip
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-6/igt@xe_oa@stress-open-close.html

  * {igt@xe_query@multigpu-query-oa-units} (NEW):
    - {shard-lnl}:        NOTRUN -> [FAIL][5] +1 other test fail
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@xe_query@multigpu-query-oa-units.html

  * igt@xe_query@query-uc-fw-version-huc:
    - shard-dg2-set2:     NOTRUN -> [FAIL][6] +320 other tests fail
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-433/igt@xe_query@query-uc-fw-version-huc.html

  
#### Warnings ####

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - shard-dg2-set2:     [SKIP][7] ([Intel XE#1201] / [Intel XE#623]) -> [FAIL][8]
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-433/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_async_flips@alternate-sync-async-flip:
    - shard-dg2-set2:     [FAIL][9] ([Intel XE#827]) -> [FAIL][10]
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-463/igt@kms_async_flips@alternate-sync-async-flip.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-434/igt@kms_async_flips@alternate-sync-async-flip.html

  * igt@kms_async_flips@invalid-async-flip:
    - shard-dg2-set2:     [SKIP][11] ([Intel XE#1201] / [Intel XE#873]) -> [FAIL][12]
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-434/igt@kms_async_flips@invalid-async-flip.html
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@kms_async_flips@invalid-async-flip.html

  * igt@kms_big_fb@4-tiled-64bpp-rotate-270:
    - shard-dg2-set2:     [SKIP][13] ([Intel XE#316]) -> [FAIL][14] +3 other tests fail
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@kms_big_fb@4-tiled-64bpp-rotate-270.html
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-435/igt@kms_big_fb@4-tiled-64bpp-rotate-270.html

  * igt@kms_big_fb@4-tiled-8bpp-rotate-90:
    - shard-dg2-set2:     [SKIP][15] ([Intel XE#1201] / [Intel XE#316]) -> [FAIL][16] +16 other tests fail
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@kms_big_fb@4-tiled-8bpp-rotate-90.html
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-433/igt@kms_big_fb@4-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-addfb-size-offset-overflow:
    - shard-dg2-set2:     [SKIP][17] ([Intel XE#1201] / [Intel XE#607]) -> [FAIL][18] +1 other test fail
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-463/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-432/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html

  * igt@kms_big_fb@y-tiled-addfb-size-overflow:
    - shard-dg2-set2:     [SKIP][19] ([Intel XE#1201] / [Intel XE#610]) -> [FAIL][20] +1 other test fail
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-433/igt@kms_big_fb@y-tiled-addfb-size-overflow.html
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@kms_big_fb@y-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
    - shard-dg2-set2:     [SKIP][21] ([Intel XE#1124]) -> [FAIL][22] +6 other tests fail
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-464/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html

  * igt@kms_big_fb@yf-tiled-32bpp-rotate-180:
    - shard-dg2-set2:     [SKIP][23] ([Intel XE#1124] / [Intel XE#1201]) -> [FAIL][24] +50 other tests fail
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@kms_big_fb@yf-tiled-32bpp-rotate-180.html
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-434/igt@kms_big_fb@yf-tiled-32bpp-rotate-180.html

  * igt@kms_big_joiner@basic:
    - shard-dg2-set2:     [SKIP][25] ([Intel XE#1201] / [Intel XE#346]) -> [FAIL][26]
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-434/igt@kms_big_joiner@basic.html
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-435/igt@kms_big_joiner@basic.html

  * igt@kms_bw@linear-tiling-4-displays-2160x1440p:
    - shard-dg2-set2:     [SKIP][27] ([Intel XE#1201] / [Intel XE#367]) -> [FAIL][28] +12 other tests fail
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@kms_bw@linear-tiling-4-displays-2160x1440p.html
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@kms_bw@linear-tiling-4-displays-2160x1440p.html

  * igt@kms_bw@linear-tiling-4-displays-2560x1440p:
    - shard-dg2-set2:     [SKIP][29] ([Intel XE#367]) -> [FAIL][30] +1 other test fail
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@kms_bw@linear-tiling-4-displays-2560x1440p.html
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-463/igt@kms_bw@linear-tiling-4-displays-2560x1440p.html

  * igt@kms_ccs@bad-pixel-format-yf-tiled-ccs:
    - shard-dg2-set2:     [SKIP][31] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) -> [FAIL][32] +56 other tests fail
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@kms_ccs@bad-pixel-format-yf-tiled-ccs.html
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@kms_ccs@bad-pixel-format-yf-tiled-ccs.html

  * igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs:
    - shard-dg2-set2:     [SKIP][33] ([Intel XE#455] / [Intel XE#787]) -> [FAIL][34] +4 other tests fail
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs.html
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-xe2-ccs:
    - shard-dg2-set2:     [SKIP][35] ([Intel XE#1201] / [Intel XE#1252]) -> [FAIL][36] +3 other tests fail
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-463/igt@kms_ccs@crc-primary-basic-4-tiled-xe2-ccs.html
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-436/igt@kms_ccs@crc-primary-basic-4-tiled-xe2-ccs.html

  * igt@kms_cdclk@mode-transition-all-outputs:
    - shard-dg2-set2:     [SKIP][37] ([Intel XE#1201] / [Intel XE#314]) -> [FAIL][38]
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-436/igt@kms_cdclk@mode-transition-all-outputs.html
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-432/igt@kms_cdclk@mode-transition-all-outputs.html

  * igt@kms_chamelium_color@ctm-limited-range:
    - shard-dg2-set2:     [SKIP][39] ([Intel XE#306]) -> [FAIL][40]
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@kms_chamelium_color@ctm-limited-range.html
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@kms_chamelium_color@ctm-limited-range.html

  * igt@kms_chamelium_color@degamma:
    - shard-dg2-set2:     [SKIP][41] ([Intel XE#1201] / [Intel XE#306]) -> [FAIL][42] +7 other tests fail
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@kms_chamelium_color@degamma.html
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-433/igt@kms_chamelium_color@degamma.html

  * igt@kms_chamelium_frames@hdmi-cmp-planes-random:
    - shard-dg2-set2:     [SKIP][43] ([Intel XE#373]) -> [FAIL][44] +4 other tests fail
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@kms_chamelium_frames@hdmi-cmp-planes-random.html
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-435/igt@kms_chamelium_frames@hdmi-cmp-planes-random.html

  * igt@kms_chamelium_hpd@vga-hpd:
    - shard-dg2-set2:     [SKIP][45] ([Intel XE#1201] / [Intel XE#373]) -> [FAIL][46] +44 other tests fail
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-433/igt@kms_chamelium_hpd@vga-hpd.html
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-433/igt@kms_chamelium_hpd@vga-hpd.html

  * igt@kms_content_protection@dp-mst-lic-type-1:
    - shard-dg2-set2:     [SKIP][47] ([Intel XE#307]) -> [FAIL][48]
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@kms_content_protection@dp-mst-lic-type-1.html
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-432/igt@kms_content_protection@dp-mst-lic-type-1.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-dg2-set2:     [SKIP][49] ([Intel XE#1201] / [Intel XE#307]) -> [FAIL][50] +3 other tests fail
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-436/igt@kms_content_protection@dp-mst-type-0.html
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-463/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_content_protection@srm:
    - shard-dg2-set2:     [FAIL][51] ([Intel XE#1178]) -> [FAIL][52] +3 other tests fail
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-464/igt@kms_content_protection@srm.html
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-436/igt@kms_content_protection@srm.html

  * igt@kms_cursor_crc@cursor-onscreen-512x170:
    - shard-dg2-set2:     [SKIP][53] ([Intel XE#1201] / [Intel XE#308]) -> [FAIL][54] +5 other tests fail
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@kms_cursor_crc@cursor-onscreen-512x170.html
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-436/igt@kms_cursor_crc@cursor-onscreen-512x170.html

  * igt@kms_cursor_crc@cursor-rapid-movement-256x256:
    - shard-dg2-set2:     [DMESG-WARN][55] ([Intel XE#282]) -> [FAIL][56] +2 other tests fail
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@kms_cursor_crc@cursor-rapid-movement-256x256.html
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@kms_cursor_crc@cursor-rapid-movement-256x256.html

  * igt@kms_cursor_crc@cursor-sliding-32x32:
    - shard-dg2-set2:     [SKIP][57] ([Intel XE#455]) -> [FAIL][58] +3 other tests fail
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@kms_cursor_crc@cursor-sliding-32x32.html
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@kms_cursor_crc@cursor-sliding-32x32.html

  * igt@kms_cursor_crc@cursor-sliding-512x512:
    - shard-dg2-set2:     [SKIP][59] ([Intel XE#308]) -> [FAIL][60]
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@kms_cursor_crc@cursor-sliding-512x512.html
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-436/igt@kms_cursor_crc@cursor-sliding-512x512.html

  * igt@kms_cursor_crc@cursor-suspend:
    - shard-dg2-set2:     [DMESG-FAIL][61] ([Intel XE#1551]) -> [FAIL][62]
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-464/igt@kms_cursor_crc@cursor-suspend.html
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-434/igt@kms_cursor_crc@cursor-suspend.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy:
    - shard-dg2-set2:     [DMESG-WARN][63] ([Intel XE#1214] / [Intel XE#282] / [Intel XE#910]) -> [FAIL][64] +1 other test fail
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy.html
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
    - shard-dg2-set2:     [SKIP][65] ([Intel XE#1201] / [Intel XE#323]) -> [FAIL][66] +2 other tests fail
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-433/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-434/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html

  * igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions:
    - shard-dg2-set2:     [DMESG-WARN][67] ([Intel XE#1214] / [Intel XE#282]) -> [FAIL][68] +25 other tests fail
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-434/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions.html
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-463/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions.html

  * igt@kms_cursor_legacy@single-move:
    - shard-dg2-set2:     [DMESG-WARN][69] ([Intel XE#1214] / [Intel XE#282] / [Intel XE#877]) -> [FAIL][70]
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-433/igt@kms_cursor_legacy@single-move.html
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-464/igt@kms_cursor_legacy@single-move.html

  * igt@kms_fbcon_fbt@psr:
    - shard-dg2-set2:     [SKIP][71] ([Intel XE#1201] / [Intel XE#776]) -> [FAIL][72] +1 other test fail
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-433/igt@kms_fbcon_fbt@psr.html
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-463/igt@kms_fbcon_fbt@psr.html

  * igt@kms_feature_discovery@chamelium:
    - shard-dg2-set2:     [SKIP][73] ([Intel XE#1201] / [Intel XE#701]) -> [FAIL][74]
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@kms_feature_discovery@chamelium.html
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-435/igt@kms_feature_discovery@chamelium.html

  * igt@kms_feature_discovery@display-3x:
    - shard-dg2-set2:     [SKIP][75] ([Intel XE#1201] / [Intel XE#703]) -> [FAIL][76]
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-436/igt@kms_feature_discovery@display-3x.html
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-464/igt@kms_feature_discovery@display-3x.html

  * igt@kms_feature_discovery@display-4x:
    - shard-dg2-set2:     [SKIP][77] ([Intel XE#1138] / [Intel XE#1201]) -> [FAIL][78]
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@kms_feature_discovery@display-4x.html
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-435/igt@kms_feature_discovery@display-4x.html

  * igt@kms_feature_discovery@psr1:
    - shard-dg2-set2:     [SKIP][79] ([Intel XE#1135] / [Intel XE#1201]) -> [FAIL][80] +1 other test fail
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-463/igt@kms_feature_discovery@psr1.html
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@kms_feature_discovery@psr1.html

  * igt@kms_flip@absolute-wf_vblank:
    - shard-dg2-set2:     [INCOMPLETE][81] ([Intel XE#1195]) -> [FAIL][82] +2 other tests fail
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-434/igt@kms_flip@absolute-wf_vblank.html
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-436/igt@kms_flip@absolute-wf_vblank.html

  * igt@kms_flip@flip-vs-suspend:
    - shard-dg2-set2:     [INCOMPLETE][83] ([Intel XE#1551]) -> [FAIL][84]
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@kms_flip@flip-vs-suspend.html
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-432/igt@kms_flip@flip-vs-suspend.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - shard-dg2-set2:     [SKIP][85] ([Intel XE#1201] / [i915#5274]) -> [FAIL][86]
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-463/igt@kms_force_connector_basic@prune-stale-modes.html
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_frontbuffer_tracking@drrs-suspend:
    - shard-dg2-set2:     [SKIP][87] ([Intel XE#1201] / [Intel XE#651]) -> [FAIL][88] +144 other tests fail
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-463/igt@kms_frontbuffer_tracking@drrs-suspend.html
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-433/igt@kms_frontbuffer_tracking@drrs-suspend.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
    - shard-dg2-set2:     [FAIL][89] ([Intel XE#616]) -> [FAIL][90] +3 other tests fail
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-434/igt@kms_frontbuffer_tracking@fbc-suspend.html
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-436/igt@kms_frontbuffer_tracking@fbc-suspend.html

  * igt@kms_frontbuffer_tracking@fbc-tiling-y:
    - shard-dg2-set2:     [SKIP][91] ([Intel XE#658]) -> [FAIL][92] +1 other test fail
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@kms_frontbuffer_tracking@fbc-tiling-y.html
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-464/igt@kms_frontbuffer_tracking@fbc-tiling-y.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render:
    - shard-dg2-set2:     [SKIP][93] ([Intel XE#651]) -> [FAIL][94] +13 other tests fail
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render.html
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-433/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y:
    - shard-dg2-set2:     [SKIP][95] ([Intel XE#1201] / [Intel XE#658]) -> [FAIL][96]
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-434/igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y.html
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt:
    - shard-dg2-set2:     [SKIP][97] ([Intel XE#1201] / [Intel XE#653]) -> [FAIL][98] +147 other tests fail
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-463/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt.html
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-436/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@plane-fbc-rte:
    - shard-dg2-set2:     [SKIP][99] ([Intel XE#1158] / [Intel XE#1201]) -> [FAIL][100]
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@kms_frontbuffer_tracking@plane-fbc-rte.html
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@kms_frontbuffer_tracking@plane-fbc-rte.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-msflip-blt:
    - shard-dg2-set2:     [SKIP][101] ([Intel XE#653]) -> [FAIL][102] +15 other tests fail
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-msflip-blt.html
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-msflip-blt.html

  * igt@kms_getfb@getfb-reject-ccs:
    - shard-dg2-set2:     [SKIP][103] ([Intel XE#1201] / [Intel XE#605]) -> [FAIL][104]
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-436/igt@kms_getfb@getfb-reject-ccs.html
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-435/igt@kms_getfb@getfb-reject-ccs.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-dg2-set2:     [SKIP][105] ([Intel XE#1201] / [Intel XE#356]) -> [FAIL][106]
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-436/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_plane_scaling@intel-max-src-size:
    - shard-dg2-set2:     [FAIL][107] ([Intel XE#361]) -> [FAIL][108]
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-463/igt@kms_plane_scaling@intel-max-src-size.html
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-436/igt@kms_plane_scaling@intel-max-src-size.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation:
    - shard-dg2-set2:     [SKIP][109] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#498]) -> [FAIL][110] +1 other test fail
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation.html
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25:
    - shard-dg2-set2:     [SKIP][111] ([Intel XE#1201] / [Intel XE#305] / [Intel XE#455]) -> [FAIL][112] +5 other tests fail
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-433/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25.html
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-436/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25.html

  * igt@kms_pm_backlight@fade-with-dpms:
    - shard-dg2-set2:     [SKIP][113] ([Intel XE#870]) -> [FAIL][114]
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@kms_pm_backlight@fade-with-dpms.html
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-432/igt@kms_pm_backlight@fade-with-dpms.html

  * igt@kms_pm_backlight@fade-with-suspend:
    - shard-dg2-set2:     [SKIP][115] ([Intel XE#1201] / [Intel XE#870]) -> [FAIL][116] +3 other tests fail
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-463/igt@kms_pm_backlight@fade-with-suspend.html
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@kms_pm_backlight@fade-with-suspend.html

  * igt@kms_pm_dc@dc5-psr:
    - shard-dg2-set2:     [SKIP][117] ([Intel XE#1129] / [Intel XE#1201]) -> [FAIL][118] +1 other test fail
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@kms_pm_dc@dc5-psr.html
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-434/igt@kms_pm_dc@dc5-psr.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-dg2-set2:     [SKIP][119] ([Intel XE#1201] / [Intel XE#908]) -> [FAIL][120] +1 other test fail
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-436/igt@kms_pm_dc@dc6-dpms.html
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-432/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_psr2_su@page_flip-nv12:
    - shard-dg2-set2:     [SKIP][121] ([Intel XE#1122] / [Intel XE#1201]) -> [FAIL][122] +4 other tests fail
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-433/igt@kms_psr2_su@page_flip-nv12.html
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-463/igt@kms_psr2_su@page_flip-nv12.html

  * igt@kms_psr@fbc-psr-sprite-render:
    - shard-dg2-set2:     [SKIP][123] ([Intel XE#929]) -> [FAIL][124] +7 other tests fail
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@kms_psr@fbc-psr-sprite-render.html
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-433/igt@kms_psr@fbc-psr-sprite-render.html

  * igt@kms_psr@psr-dpms:
    - shard-dg2-set2:     [SKIP][125] ([Intel XE#1201] / [Intel XE#929]) -> [FAIL][126] +91 other tests fail
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-463/igt@kms_psr@psr-dpms.html
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-463/igt@kms_psr@psr-dpms.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-dg2-set2:     [SKIP][127] ([Intel XE#1149] / [Intel XE#1201]) -> [FAIL][128] +1 other test fail
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-434/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_rmfb@close-fd:
    - shard-dg2-set2:     [FAIL][129] ([Intel XE#294]) -> [FAIL][130]
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-433/igt@kms_rmfb@close-fd.html
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-463/igt@kms_rmfb@close-fd.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-270:
    - shard-dg2-set2:     [SKIP][131] ([Intel XE#327]) -> [FAIL][132]
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@kms_rotation_crc@primary-y-tiled-reflect-x-270.html
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-463/igt@kms_rotation_crc@primary-y-tiled-reflect-x-270.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
    - shard-dg2-set2:     [SKIP][133] ([Intel XE#1201] / [Intel XE#327]) -> [FAIL][134] +8 other tests fail
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-436/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-464/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
    - shard-dg2-set2:     [SKIP][135] ([Intel XE#1127] / [Intel XE#1201]) -> [FAIL][136] +3 other tests fail
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-433/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-432/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-dg2-set2:     [SKIP][137] ([Intel XE#1201] / [Intel XE#362]) -> [FAIL][138]
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-463/igt@kms_tiled_display@basic-test-pattern.html
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-433/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-dg2-set2:     [SKIP][139] ([Intel XE#1201] / [Intel XE#1500]) -> [FAIL][140]
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-436/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-464/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_tv_load_detect@load-detect:
    - shard-dg2-set2:     [SKIP][141] ([Intel XE#1201] / [Intel XE#330]) -> [FAIL][142]
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-466/igt@kms_tv_load_detect@load-detect.html
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-435/igt@kms_tv_load_detect@load-detect.html

  * igt@kms_vrr@flipline:
    - shard-dg2-set2:     [SKIP][143] ([Intel XE#1201] / [Intel XE#455]) -> [FAIL][144] +63 other tests fail
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-463/igt@kms_vrr@flipline.html
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-434/igt@kms_vrr@flipline.html

  * igt@kms_writeback@writeback-fb-id-xrgb2101010:
    - shard-dg2-set2:     [SKIP][145] ([Intel XE#1201] / [Intel XE#756]) -> [FAIL][146] +4 other tests fail
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-436/igt@kms_writeback@writeback-fb-id-xrgb2101010.html
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-432/igt@kms_writeback@writeback-fb-id-xrgb2101010.html

  * igt@kms_writeback@writeback-pixel-formats:
    - shard-dg2-set2:     [SKIP][147] ([Intel XE#756]) -> [FAIL][148]
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@kms_writeback@writeback-pixel-formats.html
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@kms_writeback@writeback-pixel-formats.html

  * igt@sriov_basic@enable-vfs-autoprobe-on:
    - shard-dg2-set2:     [SKIP][149] ([Intel XE#1091] / [Intel XE#1201]) -> [FAIL][150] +2 other tests fail
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@sriov_basic@enable-vfs-autoprobe-on.html
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-436/igt@sriov_basic@enable-vfs-autoprobe-on.html

  * igt@xe_compute@ccs-mode-compute-kernel:
    - shard-dg2-set2:     [FAIL][151] ([Intel XE#1050]) -> [FAIL][152] +1 other test fail
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@xe_compute@ccs-mode-compute-kernel.html
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@xe_compute@ccs-mode-compute-kernel.html

  * igt@xe_compute_preempt@compute-preempt:
    - shard-dg2-set2:     [SKIP][153] ([Intel XE#1201] / [Intel XE#1280] / [Intel XE#455]) -> [FAIL][154] +1 other test fail
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@xe_compute_preempt@compute-preempt.html
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-436/igt@xe_compute_preempt@compute-preempt.html

  * igt@xe_copy_basic@mem-copy-linear-0x369:
    - shard-dg2-set2:     [SKIP][155] ([Intel XE#1123]) -> [FAIL][156]
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@xe_copy_basic@mem-copy-linear-0x369.html
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-433/igt@xe_copy_basic@mem-copy-linear-0x369.html

  * igt@xe_copy_basic@mem-copy-linear-0xfffe:
    - shard-dg2-set2:     [SKIP][157] ([Intel XE#1123] / [Intel XE#1201]) -> [FAIL][158] +2 other tests fail
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-436/igt@xe_copy_basic@mem-copy-linear-0xfffe.html
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-463/igt@xe_copy_basic@mem-copy-linear-0xfffe.html

  * igt@xe_copy_basic@mem-set-linear-0xfffe:
    - shard-dg2-set2:     [SKIP][159] ([Intel XE#1126] / [Intel XE#1201]) -> [FAIL][160] +2 other tests fail
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-464/igt@xe_copy_basic@mem-set-linear-0xfffe.html
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-435/igt@xe_copy_basic@mem-set-linear-0xfffe.html

  * igt@xe_evict@evict-beng-cm-threads-large:
    - shard-dg2-set2:     [TIMEOUT][161] ([Intel XE#1473] / [Intel XE#392]) -> [FAIL][162]
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@xe_evict@evict-beng-cm-threads-large.html
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-433/igt@xe_evict@evict-beng-cm-threads-large.html

  * igt@xe_evict@evict-beng-mixed-many-threads-large:
    - shard-dg2-set2:     [TIMEOUT][163] ([Intel XE#1041] / [Intel XE#1473] / [Intel XE#392]) -> [FAIL][164] +1 other test fail
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-464/igt@xe_evict@evict-beng-mixed-many-threads-large.html
   [164]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-463/igt@xe_evict@evict-beng-mixed-many-threads-large.html

  * igt@xe_evict@evict-beng-threads-large:
    - shard-dg2-set2:     [TIMEOUT][165] ([Intel XE#1473]) -> [FAIL][166]
   [165]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-436/igt@xe_evict@evict-beng-threads-large.html
   [166]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-464/igt@xe_evict@evict-beng-threads-large.html

  * igt@xe_evict@evict-large-multi-vm-cm:
    - shard-dg2-set2:     [FAIL][167] ([Intel XE#1600]) -> [FAIL][168]
   [167]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-434/igt@xe_evict@evict-large-multi-vm-cm.html
   [168]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-435/igt@xe_evict@evict-large-multi-vm-cm.html

  * igt@xe_exec_fault_mode@once-basic-imm:
    - shard-dg2-set2:     [SKIP][169] ([Intel XE#288]) -> [FAIL][170] +13 other tests fail
   [169]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@xe_exec_fault_mode@once-basic-imm.html
   [170]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-433/igt@xe_exec_fault_mode@once-basic-imm.html

  * igt@xe_exec_fault_mode@twice-userptr-rebind-imm:
    - shard-dg2-set2:     [SKIP][171] ([Intel XE#1201] / [Intel XE#288]) -> [FAIL][172] +120 other tests fail
   [171]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-436/igt@xe_exec_fault_mode@twice-userptr-rebind-imm.html
   [172]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-432/igt@xe_exec_fault_mode@twice-userptr-rebind-imm.html

  * igt@xe_exec_reset@gt-reset-stress:
    - shard-dg2-set2:     [DMESG-WARN][173] ([Intel XE#1214] / [Intel XE#1638]) -> [FAIL][174]
   [173]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-436/igt@xe_exec_reset@gt-reset-stress.html
   [174]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-463/igt@xe_exec_reset@gt-reset-stress.html

  * igt@xe_huc_copy@huc_copy:
    - shard-dg2-set2:     [SKIP][175] ([Intel XE#1201] / [Intel XE#255]) -> [FAIL][176]
   [175]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-463/igt@xe_huc_copy@huc_copy.html
   [176]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-433/igt@xe_huc_copy@huc_copy.html

  * igt@xe_media_fill@media-fill:
    - shard-dg2-set2:     [SKIP][177] ([Intel XE#1201] / [Intel XE#560]) -> [FAIL][178]
   [177]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-464/igt@xe_media_fill@media-fill.html
   [178]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-432/igt@xe_media_fill@media-fill.html

  * igt@xe_mmap@small-bar:
    - shard-dg2-set2:     [SKIP][179] ([Intel XE#1201] / [Intel XE#512]) -> [FAIL][180]
   [179]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-433/igt@xe_mmap@small-bar.html
   [180]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-432/igt@xe_mmap@small-bar.html

  * igt@xe_module_load@reload:
    - shard-dg2-set2:     [DMESG-WARN][181] ([Intel XE#1214]) -> [FAIL][182] +7 other tests fail
   [181]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-463/igt@xe_module_load@reload.html
   [182]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-436/igt@xe_module_load@reload.html

  * igt@xe_pat@display-vs-wb-transient:
    - shard-dg2-set2:     [SKIP][183] ([Intel XE#1201] / [Intel XE#1337]) -> [FAIL][184]
   [183]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-434/igt@xe_pat@display-vs-wb-transient.html
   [184]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-435/igt@xe_pat@display-vs-wb-transient.html

  * igt@xe_pat@pat-index-xe2:
    - shard-dg2-set2:     [SKIP][185] ([Intel XE#1201] / [Intel XE#977]) -> [FAIL][186]
   [185]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-433/igt@xe_pat@pat-index-xe2.html
   [186]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-436/igt@xe_pat@pat-index-xe2.html

  * igt@xe_pat@pat-index-xehpc:
    - shard-dg2-set2:     [SKIP][187] ([Intel XE#1201] / [Intel XE#979]) -> [FAIL][188]
   [187]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-433/igt@xe_pat@pat-index-xehpc.html
   [188]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-464/igt@xe_pat@pat-index-xehpc.html

  * igt@xe_pat@pat-index-xelpg:
    - shard-dg2-set2:     [SKIP][189] ([Intel XE#979]) -> [FAIL][190]
   [189]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@xe_pat@pat-index-xelpg.html
   [190]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-464/igt@xe_pat@pat-index-xelpg.html

  * igt@xe_peer2peer@read:
    - shard-dg2-set2:     [FAIL][191] ([Intel XE#1173]) -> [FAIL][192] +1 other test fail
   [191]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-463/igt@xe_peer2peer@read.html
   [192]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-436/igt@xe_peer2peer@read.html

  * igt@xe_pm@d3cold-mmap-system:
    - shard-dg2-set2:     [SKIP][193] ([Intel XE#366]) -> [FAIL][194] +1 other test fail
   [193]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@xe_pm@d3cold-mmap-system.html
   [194]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-433/igt@xe_pm@d3cold-mmap-system.html

  * igt@xe_pm@d3cold-mmap-vram:
    - shard-dg2-set2:     [SKIP][195] ([Intel XE#1201] / [Intel XE#366]) -> [FAIL][196] +4 other tests fail
   [195]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-466/igt@xe_pm@d3cold-mmap-vram.html
   [196]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@xe_pm@d3cold-mmap-vram.html

  * igt@xe_pm@s3-vm-bind-prefetch:
    - shard-dg2-set2:     [DMESG-WARN][197] ([Intel XE#1214] / [Intel XE#1551]) -> [FAIL][198]
   [197]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-434/igt@xe_pm@s3-vm-bind-prefetch.html
   [198]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-435/igt@xe_pm@s3-vm-bind-prefetch.html

  * igt@xe_pm@s3-vm-bind-unbind-all:
    - shard-dg2-set2:     [DMESG-WARN][199] ([Intel XE#1162] / [Intel XE#1214] / [Intel XE#1941]) -> [FAIL][200]
   [199]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@xe_pm@s3-vm-bind-unbind-all.html
   [200]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-433/igt@xe_pm@s3-vm-bind-unbind-all.html

  * igt@xe_pm@vram-d3cold-threshold:
    - shard-dg2-set2:     [SKIP][201] ([Intel XE#1201] / [Intel XE#579]) -> [FAIL][202]
   [201]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-436/igt@xe_pm@vram-d3cold-threshold.html
   [202]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@xe_pm@vram-d3cold-threshold.html

  * igt@xe_query@multigpu-query-engines:
    - shard-dg2-set2:     [SKIP][203] ([Intel XE#1201] / [Intel XE#944]) -> [FAIL][204] +12 other tests fail
   [203]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-434/igt@xe_query@multigpu-query-engines.html
   [204]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-436/igt@xe_query@multigpu-query-engines.html

  * igt@xe_query@multigpu-query-uc-fw-version-guc:
    - shard-dg2-set2:     [SKIP][205] ([Intel XE#944]) -> [FAIL][206]
   [205]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@xe_query@multigpu-query-uc-fw-version-guc.html
   [206]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-432/igt@xe_query@multigpu-query-uc-fw-version-guc.html

  * igt@xe_wedged@basic-wedged:
    - shard-dg2-set2:     [DMESG-WARN][207] ([Intel XE#1214] / [Intel XE#1760]) -> [FAIL][208]
   [207]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@xe_wedged@basic-wedged.html
   [208]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@xe_wedged@basic-wedged.html

  * igt@xe_wedged@wedged-at-any-timeout:
    - shard-dg2-set2:     [DMESG-FAIL][209] ([Intel XE#1760]) -> [FAIL][210]
   [209]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@xe_wedged@wedged-at-any-timeout.html
   [210]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-436/igt@xe_wedged@wedged-at-any-timeout.html

  
#### Suppressed ####

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

  * {igt@core_getversion@all-cards}:
    - shard-dg2-set2:     [PASS][211] -> [FAIL][212]
   [211]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@core_getversion@all-cards.html
   [212]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@core_getversion@all-cards.html

  * igt@core_hotunplug@hotrebind:
    - {shard-lnl}:        [DMESG-WARN][213] ([Intel XE#2016]) -> [FAIL][214] +8 other tests fail
   [213]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-4/igt@core_hotunplug@hotrebind.html
   [214]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-8/igt@core_hotunplug@hotrebind.html

  * igt@intel_hwmon@hwmon-read:
    - {shard-lnl}:        [SKIP][215] ([Intel XE#1125]) -> [FAIL][216] +1 other test fail
   [215]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-3/igt@intel_hwmon@hwmon-read.html
   [216]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-8/igt@intel_hwmon@hwmon-read.html

  * igt@kms_3d:
    - {shard-lnl}:        [SKIP][217] ([Intel XE#1465]) -> [FAIL][218]
   [217]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-3/igt@kms_3d.html
   [218]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@kms_3d.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - {shard-lnl}:        [SKIP][219] ([Intel XE#1466]) -> [FAIL][220]
   [219]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-3/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [220]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-4/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@invalid-smem-bo-on-discrete:
    - {shard-lnl}:        [SKIP][221] ([Intel XE#660]) -> [FAIL][222]
   [221]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-4/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html
   [222]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-2/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html

  * igt@kms_addfb_basic@no-handle:
    - {shard-lnl}:        NOTRUN -> [FAIL][223] +693 other tests fail
   [223]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-5/igt@kms_addfb_basic@no-handle.html

  * igt@kms_async_flips@invalid-async-flip:
    - {shard-lnl}:        [SKIP][224] ([Intel XE#873]) -> [FAIL][225]
   [224]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-5/igt@kms_async_flips@invalid-async-flip.html
   [225]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-6/igt@kms_async_flips@invalid-async-flip.html

  * igt@kms_async_flips@test-cursor:
    - {shard-lnl}:        [SKIP][226] ([Intel XE#664]) -> [FAIL][227]
   [226]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-7/igt@kms_async_flips@test-cursor.html
   [227]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-8/igt@kms_async_flips@test-cursor.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - {shard-lnl}:        [FAIL][228] ([Intel XE#1659]) -> [FAIL][229] +1 other test fail
   [228]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-4/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
   [229]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-4/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_big_fb@linear-32bpp-rotate-90:
    - {shard-lnl}:        [SKIP][230] ([Intel XE#1407]) -> [FAIL][231] +18 other tests fail
   [230]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-4/igt@kms_big_fb@linear-32bpp-rotate-90.html
   [231]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-4/igt@kms_big_fb@linear-32bpp-rotate-90.html

  * igt@kms_big_fb@linear-64bpp-rotate-180:
    - {shard-lnl}:        [DMESG-WARN][232] ([Intel XE#1725]) -> [FAIL][233] +1 other test fail
   [232]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-1/igt@kms_big_fb@linear-64bpp-rotate-180.html
   [233]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-6/igt@kms_big_fb@linear-64bpp-rotate-180.html

  * igt@kms_big_fb@y-tiled-32bpp-rotate-0:
    - {shard-lnl}:        [SKIP][234] ([Intel XE#1124]) -> [FAIL][235] +48 other tests fail
   [234]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-7/igt@kms_big_fb@y-tiled-32bpp-rotate-0.html
   [235]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-4/igt@kms_big_fb@y-tiled-32bpp-rotate-0.html

  * igt@kms_big_fb@y-tiled-addfb-size-overflow:
    - {shard-lnl}:        [SKIP][236] ([Intel XE#1428]) -> [FAIL][237] +1 other test fail
   [236]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-2/igt@kms_big_fb@y-tiled-addfb-size-overflow.html
   [237]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-4/igt@kms_big_fb@y-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@yf-tiled-addfb:
    - {shard-lnl}:        [SKIP][238] ([Intel XE#1467]) -> [FAIL][239] +1 other test fail
   [238]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-1/igt@kms_big_fb@yf-tiled-addfb.html
   [239]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-5/igt@kms_big_fb@yf-tiled-addfb.html

  * igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow:
    - {shard-lnl}:        [SKIP][240] ([Intel XE#1477]) -> [FAIL][241]
   [240]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-2/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html
   [241]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html

  * igt@kms_big_joiner@basic:
    - {shard-lnl}:        [SKIP][242] ([Intel XE#346]) -> [FAIL][243] +1 other test fail
   [242]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-5/igt@kms_big_joiner@basic.html
   [243]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-6/igt@kms_big_joiner@basic.html

  * igt@kms_bw@linear-tiling-2-displays-2160x1440p:
    - {shard-lnl}:        [SKIP][244] ([Intel XE#367]) -> [FAIL][245] +6 other tests fail
   [244]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-3/igt@kms_bw@linear-tiling-2-displays-2160x1440p.html
   [245]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-4/igt@kms_bw@linear-tiling-2-displays-2160x1440p.html

  * igt@kms_bw@linear-tiling-4-displays-2160x1440p:
    - {shard-lnl}:        [SKIP][246] ([Intel XE#1512]) -> [FAIL][247] +1 other test fail
   [246]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-1/igt@kms_bw@linear-tiling-4-displays-2160x1440p.html
   [247]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-6/igt@kms_bw@linear-tiling-4-displays-2160x1440p.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc:
    - {shard-lnl}:        [SKIP][248] ([Intel XE#1399]) -> [FAIL][249] +65 other tests fail
   [248]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-3/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc.html
   [249]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_cdclk@mode-transition:
    - {shard-lnl}:        [SKIP][250] ([Intel XE#1446] / [Intel XE#314]) -> [FAIL][251]
   [250]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-1/igt@kms_cdclk@mode-transition.html
   [251]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@kms_cdclk@mode-transition.html

  * igt@kms_chamelium_color@ctm-blue-to-red:
    - {shard-lnl}:        [SKIP][252] ([Intel XE#306]) -> [FAIL][253] +8 other tests fail
   [252]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-8/igt@kms_chamelium_color@ctm-blue-to-red.html
   [253]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-6/igt@kms_chamelium_color@ctm-blue-to-red.html

  * igt@kms_chamelium_edid@hdmi-edid-change-during-suspend:
    - {shard-lnl}:        [SKIP][254] ([Intel XE#373]) -> [FAIL][255] +45 other tests fail
   [254]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-3/igt@kms_chamelium_edid@hdmi-edid-change-during-suspend.html
   [255]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-3/igt@kms_chamelium_edid@hdmi-edid-change-during-suspend.html

  * igt@kms_content_protection@dp-mst-type-1:
    - {shard-lnl}:        [SKIP][256] ([Intel XE#307]) -> [FAIL][257] +2 other tests fail
   [256]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-4/igt@kms_content_protection@dp-mst-type-1.html
   [257]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-5/igt@kms_content_protection@dp-mst-type-1.html

  * igt@kms_content_protection@mei-interface:
    - {shard-lnl}:        [SKIP][258] ([Intel XE#1468]) -> [FAIL][259]
   [258]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-3/igt@kms_content_protection@mei-interface.html
   [259]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-6/igt@kms_content_protection@mei-interface.html

  * igt@kms_cursor_crc@cursor-onscreen-512x170:
    - {shard-lnl}:        [SKIP][260] ([Intel XE#1413]) -> [FAIL][261] +4 other tests fail
   [260]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-7/igt@kms_cursor_crc@cursor-onscreen-512x170.html
   [261]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-6/igt@kms_cursor_crc@cursor-onscreen-512x170.html

  * igt@kms_cursor_crc@cursor-sliding-64x21:
    - {shard-lnl}:        [SKIP][262] ([Intel XE#1424]) -> [FAIL][263] +25 other tests fail
   [262]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-2/igt@kms_cursor_crc@cursor-sliding-64x21.html
   [263]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-2/igt@kms_cursor_crc@cursor-sliding-64x21.html

  * igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
    - {shard-lnl}:        [SKIP][264] ([Intel XE#309]) -> [FAIL][265] +24 other tests fail
   [264]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-1/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html
   [265]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-8/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - {shard-lnl}:        [SKIP][266] ([Intel XE#323]) -> [FAIL][267] +3 other tests fail
   [266]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
   [267]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-4/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_fbcon_fbt@psr-suspend:
    - {shard-lnl}:        [FAIL][268] ([Intel XE#2028]) -> [FAIL][269] +7 other tests fail
   [268]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-1/igt@kms_fbcon_fbt@psr-suspend.html
   [269]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@kms_fbcon_fbt@psr-suspend.html

  * igt@kms_feature_discovery@chamelium:
    - {shard-lnl}:        [SKIP][270] ([Intel XE#701]) -> [FAIL][271]
   [270]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-6/igt@kms_feature_discovery@chamelium.html
   [271]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-6/igt@kms_feature_discovery@chamelium.html

  * igt@kms_feature_discovery@display-3x:
    - {shard-lnl}:        [SKIP][272] ([Intel XE#703]) -> [FAIL][273]
   [272]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-8/igt@kms_feature_discovery@display-3x.html
   [273]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-2/igt@kms_feature_discovery@display-3x.html

  * igt@kms_feature_discovery@display-4x:
    - {shard-lnl}:        [SKIP][274] ([Intel XE#1138]) -> [FAIL][275]
   [274]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-7/igt@kms_feature_discovery@display-4x.html
   [275]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@kms_feature_discovery@display-4x.html

  * igt@kms_flip@2x-flip-vs-rmfb-interruptible:
    - {shard-lnl}:        [SKIP][276] ([Intel XE#1421]) -> [FAIL][277] +35 other tests fail
   [276]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-3/igt@kms_flip@2x-flip-vs-rmfb-interruptible.html
   [277]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-2/igt@kms_flip@2x-flip-vs-rmfb-interruptible.html

  * igt@kms_flip@flip-vs-suspend:
    - {shard-lnl}:        [FAIL][278] ([Intel XE#1901]) -> [FAIL][279]
   [278]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-3/igt@kms_flip@flip-vs-suspend.html
   [279]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@kms_flip@flip-vs-suspend.html

  * igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling:
    - {shard-lnl}:        [SKIP][280] ([Intel XE#1397] / [Intel XE#1745]) -> [FAIL][281] +6 other tests fail
   [280]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-3/igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling.html
   [281]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-3/igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling:
    - {shard-lnl}:        [SKIP][282] ([Intel XE#1401] / [Intel XE#1745]) -> [FAIL][283] +21 other tests fail
   [282]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-4/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html
   [283]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-3/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - {shard-lnl}:        [SKIP][284] ([Intel XE#352]) -> [FAIL][285] +2 other tests fail
   [284]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-2/igt@kms_force_connector_basic@prune-stale-modes.html
   [285]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-6/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-blt:
    - {shard-lnl}:        [SKIP][286] ([Intel XE#651]) -> [FAIL][287] +63 other tests fail
   [286]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-6/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-blt.html
   [287]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-6/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y:
    - {shard-lnl}:        [SKIP][288] ([Intel XE#1469]) -> [FAIL][289]
   [288]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-4/igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y.html
   [289]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render:
    - {shard-lnl}:        [SKIP][290] ([Intel XE#656]) -> [FAIL][291] +169 other tests fail
   [290]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-4/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render.html
   [291]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-8/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render.html

  * igt@kms_hdmi_inject@inject-4k:
    - {shard-lnl}:        [SKIP][292] ([Intel XE#1470]) -> [FAIL][293] +1 other test fail
   [292]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-3/igt@kms_hdmi_inject@inject-4k.html
   [293]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@kms_hdmi_inject@inject-4k.html

  * igt@kms_invalid_mode@zero-clock:
    - {shard-lnl}:        [INCOMPLETE][294] ([Intel XE#1960]) -> [FAIL][295]
   [294]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-2/igt@kms_invalid_mode@zero-clock.html
   [295]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-4/igt@kms_invalid_mode@zero-clock.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - {shard-lnl}:        [SKIP][296] ([Intel XE#356]) -> [FAIL][297]
   [296]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-8/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
   [297]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-6/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_plane_multiple@tiling-yf:
    - {shard-lnl}:        [SKIP][298] ([Intel XE#1446]) -> [FAIL][299] +24 other tests fail
   [298]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-7/igt@kms_plane_multiple@tiling-yf.html
   [299]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@kms_plane_multiple@tiling-yf.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-modifiers:
    - {shard-lnl}:        [SKIP][300] ([Intel XE#498]) -> [FAIL][301] +4 other tests fail
   [300]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-1/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-modifiers.html
   [301]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-6/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-modifiers.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75:
    - {shard-lnl}:        [SKIP][302] ([Intel XE#305]) -> [FAIL][303] +9 other tests fail
   [302]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-1/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75.html
   [303]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75.html

  * igt@kms_pm_backlight@fade-with-suspend:
    - {shard-lnl}:        [INCOMPLETE][304] ([Intel XE#1608]) -> [FAIL][305]
   [304]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-1/igt@kms_pm_backlight@fade-with-suspend.html
   [305]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-3/igt@kms_pm_backlight@fade-with-suspend.html

  * igt@kms_pm_dc@dc5-dpms-negative:
    - {shard-lnl}:        [SKIP][306] ([Intel XE#1131]) -> [FAIL][307]
   [306]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-1/igt@kms_pm_dc@dc5-dpms-negative.html
   [307]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-4/igt@kms_pm_dc@dc5-dpms-negative.html

  * igt@kms_pm_dc@dc6-psr:
    - {shard-lnl}:        [FAIL][308] ([Intel XE#1430]) -> [FAIL][309] +1 other test fail
   [308]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-6/igt@kms_pm_dc@dc6-psr.html
   [309]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@kms_pm_dc@dc6-psr.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - {shard-lnl}:        [SKIP][310] ([Intel XE#1439]) -> [FAIL][311] +3 other tests fail
   [310]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-2/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
   [311]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-5/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html

  * igt@kms_pm_rpm@modeset-stress-extra-wait:
    - {shard-lnl}:        [SKIP][312] ([Intel XE#1211]) -> [FAIL][313] +1 other test fail
   [312]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-5/igt@kms_pm_rpm@modeset-stress-extra-wait.html
   [313]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-3/igt@kms_pm_rpm@modeset-stress-extra-wait.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - {shard-lnl}:        [SKIP][314] ([Intel XE#1128]) -> [FAIL][315] +2 other tests fail
   [314]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-1/igt@kms_psr2_su@frontbuffer-xrgb8888.html
   [315]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-2/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr@fbc-psr2-suspend:
    - {shard-lnl}:        [FAIL][316] ([Intel XE#2024]) -> [FAIL][317] +1 other test fail
   [316]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-1/igt@kms_psr@fbc-psr2-suspend.html
   [317]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-6/igt@kms_psr@fbc-psr2-suspend.html

  * igt@kms_psr@pr-no-drrs:
    - {shard-lnl}:        [SKIP][318] ([Intel XE#1406]) -> [FAIL][319] +20 other tests fail
   [318]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-1/igt@kms_psr@pr-no-drrs.html
   [319]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-6/igt@kms_psr@pr-no-drrs.html

  * igt@kms_psr@psr2-suspend:
    - {shard-lnl}:        [DMESG-FAIL][320] ([Intel XE#2034]) -> [FAIL][321]
   [320]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-5/igt@kms_psr@psr2-suspend.html
   [321]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@kms_psr@psr2-suspend.html

  * igt@kms_rotation_crc@primary-rotation-90:
    - {shard-lnl}:        [SKIP][322] ([Intel XE#1437]) -> [FAIL][323] +8 other tests fail
   [322]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-2/igt@kms_rotation_crc@primary-rotation-90.html
   [323]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-4/igt@kms_rotation_crc@primary-rotation-90.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
    - {shard-lnl}:        [SKIP][324] ([Intel XE#1127]) -> [FAIL][325] +1 other test fail
   [324]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-3/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
   [325]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html

  * igt@kms_scaling_modes@scaling-mode-none:
    - {shard-lnl}:        [SKIP][326] ([Intel XE#1446] / [Intel XE#374]) -> [FAIL][327]
   [326]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-3/igt@kms_scaling_modes@scaling-mode-none.html
   [327]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@kms_scaling_modes@scaling-mode-none.html

  * igt@kms_setmode@invalid-clone-single-crtc:
    - {shard-lnl}:        [SKIP][328] ([Intel XE#1435]) -> [FAIL][329] +4 other tests fail
   [328]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-6/igt@kms_setmode@invalid-clone-single-crtc.html
   [329]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@kms_setmode@invalid-clone-single-crtc.html

  * igt@kms_tv_load_detect@load-detect:
    - {shard-lnl}:        [SKIP][330] ([Intel XE#330]) -> [FAIL][331]
   [330]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-1/igt@kms_tv_load_detect@load-detect.html
   [331]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-4/igt@kms_tv_load_detect@load-detect.html

  * igt@kms_vblank@ts-continuation-dpms-suspend:
    - {shard-lnl}:        [DMESG-FAIL][332] ([Intel XE#1608]) -> [FAIL][333] +2 other tests fail
   [332]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-3/igt@kms_vblank@ts-continuation-dpms-suspend.html
   [333]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-5/igt@kms_vblank@ts-continuation-dpms-suspend.html

  * igt@kms_vrr@flip-suspend:
    - {shard-lnl}:        [DMESG-FAIL][334] ([Intel XE#1608] / [Intel XE#2034]) -> [FAIL][335] +1 other test fail
   [334]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-4/igt@kms_vrr@flip-suspend.html
   [335]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-4/igt@kms_vrr@flip-suspend.html

  * igt@kms_vrr@seamless-rr-switch-virtual:
    - {shard-lnl}:        [SKIP][336] ([Intel XE#1899]) -> [FAIL][337]
   [336]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-3/igt@kms_vrr@seamless-rr-switch-virtual.html
   [337]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-5/igt@kms_vrr@seamless-rr-switch-virtual.html

  * igt@kms_writeback@writeback-fb-id-xrgb2101010:
    - {shard-lnl}:        [SKIP][338] ([Intel XE#756]) -> [FAIL][339] +2 other tests fail
   [338]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-8/igt@kms_writeback@writeback-fb-id-xrgb2101010.html
   [339]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@kms_writeback@writeback-fb-id-xrgb2101010.html

  * igt@sriov_basic@enable-vfs-autoprobe-on:
    - {shard-lnl}:        [SKIP][340] ([Intel XE#1091]) -> [FAIL][341] +3 other tests fail
   [340]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-6/igt@sriov_basic@enable-vfs-autoprobe-on.html
   [341]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-6/igt@sriov_basic@enable-vfs-autoprobe-on.html

  * igt@xe_compute@ccs-mode-basic:
    - {shard-lnl}:        [SKIP][342] ([Intel XE#1447]) -> [FAIL][343]
   [342]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-5/igt@xe_compute@ccs-mode-basic.html
   [343]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-5/igt@xe_compute@ccs-mode-basic.html

  * igt@xe_create@create-big-vram:
    - {shard-lnl}:        [SKIP][344] ([Intel XE#1062]) -> [FAIL][345]
   [344]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-8/igt@xe_create@create-big-vram.html
   [345]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-2/igt@xe_create@create-big-vram.html

  * igt@xe_evict@evict-beng-large-external-cm:
    - {shard-lnl}:        [SKIP][346] ([Intel XE#688]) -> [FAIL][347] +46 other tests fail
   [346]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-1/igt@xe_evict@evict-beng-large-external-cm.html
   [347]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-2/igt@xe_evict@evict-beng-large-external-cm.html

  * igt@xe_exec_basic@multigpu-no-exec-userptr:
    - {shard-lnl}:        [SKIP][348] ([Intel XE#1392]) -> [FAIL][349] +37 other tests fail
   [348]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-1/igt@xe_exec_basic@multigpu-no-exec-userptr.html
   [349]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-8/igt@xe_exec_basic@multigpu-no-exec-userptr.html

  * igt@xe_exec_fault_mode@many-invalid-fault:
    - {shard-lnl}:        [PASS][350] -> [FAIL][351] +1218 other tests fail
   [350]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-6/igt@xe_exec_fault_mode@many-invalid-fault.html
   [351]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@xe_exec_fault_mode@many-invalid-fault.html

  * igt@xe_exec_reset@gt-reset-stress:
    - {shard-lnl}:        [DMESG-WARN][352] ([Intel XE#1638]) -> [FAIL][353]
   [352]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-5/igt@xe_exec_reset@gt-reset-stress.html
   [353]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-8/igt@xe_exec_reset@gt-reset-stress.html

  * igt@xe_exec_threads@threads-mixed-userptr-invalidate-race:
    - {shard-lnl}:        [FAIL][354] ([Intel XE#1069]) -> [FAIL][355]
   [354]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-5/igt@xe_exec_threads@threads-mixed-userptr-invalidate-race.html
   [355]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-8/igt@xe_exec_threads@threads-mixed-userptr-invalidate-race.html

  * igt@xe_gt_freq@freq_range_idle:
    - {shard-lnl}:        [SKIP][356] ([Intel XE#1462]) -> [FAIL][357]
   [356]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-8/igt@xe_gt_freq@freq_range_idle.html
   [357]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-8/igt@xe_gt_freq@freq_range_idle.html

  * igt@xe_gt_freq@freq_reset_multiple:
    - {shard-lnl}:        [DMESG-WARN][358] ([Intel XE#1620]) -> [FAIL][359]
   [358]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-1/igt@xe_gt_freq@freq_reset_multiple.html
   [359]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-3/igt@xe_gt_freq@freq_reset_multiple.html

  * igt@xe_gt_freq@freq_suspend:
    - {shard-lnl}:        [SKIP][360] ([Intel XE#584]) -> [FAIL][361] +6 other tests fail
   [360]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-2/igt@xe_gt_freq@freq_suspend.html
   [361]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-2/igt@xe_gt_freq@freq_suspend.html

  * igt@xe_media_fill@media-fill:
    - {shard-lnl}:        [SKIP][362] ([Intel XE#560]) -> [FAIL][363]
   [362]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-3/igt@xe_media_fill@media-fill.html
   [363]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@xe_media_fill@media-fill.html

  * igt@xe_mmap@small-bar:
    - {shard-lnl}:        [SKIP][364] ([Intel XE#512]) -> [FAIL][365]
   [364]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-7/igt@xe_mmap@small-bar.html
   [365]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@xe_mmap@small-bar.html

  * igt@xe_mmap@vram:
    - {shard-lnl}:        [SKIP][366] ([Intel XE#1416]) -> [FAIL][367]
   [366]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-7/igt@xe_mmap@vram.html
   [367]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-6/igt@xe_mmap@vram.html

  * igt@xe_module_load@reload:
    - {shard-lnl}:        [DMESG-WARN][368] ([Intel XE#2016]) -> [DMESG-FAIL][369] +2 other tests dmesg-fail
   [368]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-5/igt@xe_module_load@reload.html
   [369]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-6/igt@xe_module_load@reload.html

  * igt@xe_noexec_ping_pong:
    - {shard-lnl}:        [SKIP][370] ([Intel XE#379]) -> [FAIL][371]
   [370]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-4/igt@xe_noexec_ping_pong.html
   [371]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@xe_noexec_ping_pong.html

  * igt@xe_pat@pat-index-xehpc:
    - {shard-lnl}:        [SKIP][372] ([Intel XE#1420]) -> [FAIL][373]
   [372]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-2/igt@xe_pat@pat-index-xehpc.html
   [373]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-3/igt@xe_pat@pat-index-xehpc.html

  * igt@xe_pat@pat-index-xelp:
    - {shard-lnl}:        [SKIP][374] ([Intel XE#977]) -> [FAIL][375]
   [374]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-4/igt@xe_pat@pat-index-xelp.html
   [375]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-4/igt@xe_pat@pat-index-xelp.html

  * igt@xe_pat@pat-index-xelpg:
    - {shard-lnl}:        [SKIP][376] ([Intel XE#979]) -> [FAIL][377]
   [376]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-4/igt@xe_pat@pat-index-xelpg.html
   [377]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-2/igt@xe_pat@pat-index-xelpg.html

  * igt@xe_peer2peer@read:
    - {shard-lnl}:        [SKIP][378] ([Intel XE#1061]) -> [FAIL][379] +1 other test fail
   [378]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-1/igt@xe_peer2peer@read.html
   [379]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-5/igt@xe_peer2peer@read.html

  * igt@xe_pm@d3cold-basic:
    - {shard-lnl}:        [SKIP][380] ([Intel XE#366]) -> [FAIL][381] +5 other tests fail
   [380]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-5/igt@xe_pm@d3cold-basic.html
   [381]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-3/igt@xe_pm@d3cold-basic.html

  * igt@xe_pm@d3hot-mmap-vram:
    - {shard-lnl}:        [SKIP][382] ([Intel XE#1948]) -> [FAIL][383]
   [382]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-7/igt@xe_pm@d3hot-mmap-vram.html
   [383]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@xe_pm@d3hot-mmap-vram.html

  * igt@xe_pm@mocs-rpm:
    - {shard-lnl}:        [FAIL][384] ([Intel XE#2043]) -> [FAIL][385]
   [384]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-5/igt@xe_pm@mocs-rpm.html
   [385]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-5/igt@xe_pm@mocs-rpm.html

  * igt@xe_pm@s2idle-basic:
    - {shard-lnl}:        [FAIL][386] ([Intel XE#1924]) -> [FAIL][387] +2 other tests fail
   [386]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-8/igt@xe_pm@s2idle-basic.html
   [387]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-2/igt@xe_pm@s2idle-basic.html

  * igt@xe_pm@s2idle-mocs:
    - {shard-lnl}:        [DMESG-FAIL][388] ([Intel XE#1595]) -> [FAIL][389] +1 other test fail
   [388]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-6/igt@xe_pm@s2idle-mocs.html
   [389]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@xe_pm@s2idle-mocs.html

  * igt@xe_pm@vram-d3cold-threshold:
    - {shard-lnl}:        [SKIP][390] ([Intel XE#579]) -> [FAIL][391]
   [390]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-8/igt@xe_pm@vram-d3cold-threshold.html
   [391]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-4/igt@xe_pm@vram-d3cold-threshold.html

  * igt@xe_pm_residency@gt-c6-freeze:
    - {shard-lnl}:        [FAIL][392] ([Intel XE#2009]) -> [FAIL][393]
   [392]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-3/igt@xe_pm_residency@gt-c6-freeze.html
   [393]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-2/igt@xe_pm_residency@gt-c6-freeze.html

  * igt@xe_pm_residency@toggle-gt-c6:
    - {shard-lnl}:        [FAIL][394] ([Intel XE#958]) -> [FAIL][395]
   [394]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-3/igt@xe_pm_residency@toggle-gt-c6.html
   [395]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-6/igt@xe_pm_residency@toggle-gt-c6.html

  * igt@xe_query@multigpu-query-invalid-size:
    - {shard-lnl}:        [SKIP][396] ([Intel XE#944]) -> [FAIL][397] +10 other tests fail
   [396]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-3/igt@xe_query@multigpu-query-invalid-size.html
   [397]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-8/igt@xe_query@multigpu-query-invalid-size.html

  * igt@xe_wedged@basic-wedged:
    - {shard-lnl}:        [DMESG-WARN][398] ([Intel XE#1760]) -> [FAIL][399]
   [398]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-6/igt@xe_wedged@basic-wedged.html
   [399]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-3/igt@xe_wedged@basic-wedged.html

  
New tests
---------

  New tests have been introduced between XEIGT_7880_full and XEIGTPW_11239_full:

### New IGT tests (40) ###

  * igt@xe_oa@blocking:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@buffer-fill:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@closed-fd-and-unmapped-access:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@create-destroy-userspace-config:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@disabled-read-error:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@enable-disable:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@invalid-create-userspace-config:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@invalid-map-oa-buffer:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@invalid-oa-exponent:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@invalid-oa-format-id:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@invalid-oa-metric-set-id:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@invalid-remove-userspace-config:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@map-oa-buffer:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@mi-rpc:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@missing-sample-flags:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@mmio-triggered-reports:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@non-privileged-access-vaddr:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@non-privileged-map-oa-buffer:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@non-sampling-read-error:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@non-system-wide-paranoid:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@non-zero-reason:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@oa-exponents:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@oa-formats:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@oa-regs-whitelisted:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@oa-tlb-invalidate:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@oa-unit-concurrent-oa-buffer-read:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@oa-unit-exclusive-stream-exec-q:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@oa-unit-exclusive-stream-sample-oa:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@polling:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@polling-small-buf:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@privileged-forked-access-vaddr:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@rc6-disable:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@short-reads:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@stress-open-close:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@sysctl-defaults:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@unprivileged-single-ctx-counters:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@whitelisted-registers-userspace-config:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_oa@xe-ref-count:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@xe_query@multigpu-query-oa-units:
    - Statuses : 2 fail(s)
    - Exec time: [0.0] s

  * igt@xe_query@query-oa-units:
    - Statuses : 2 fail(s)
    - Exec time: [0.0] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
    - shard-dg2-set2:     NOTRUN -> [FAIL][400] ([Intel XE#1204])
   [400]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-436/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html

  * igt@xe_exec_reset@cm-gt-reset:
    - shard-dg2-set2:     [PASS][401] -> [FAIL][402] ([Intel XE#1068])
   [401]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-463/igt@xe_exec_reset@cm-gt-reset.html
   [402]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-464/igt@xe_exec_reset@cm-gt-reset.html

  * igt@xe_exec_threads@threads-bal-mixed-fd-userptr-invalidate:
    - shard-dg2-set2:     [PASS][403] -> [FAIL][404] ([Intel XE#1204]) +6 other tests fail
   [403]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-433/igt@xe_exec_threads@threads-bal-mixed-fd-userptr-invalidate.html
   [404]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-466/igt@xe_exec_threads@threads-bal-mixed-fd-userptr-invalidate.html

  * {igt@xe_oa@non-system-wide-paranoid} (NEW):
    - shard-dg2-set2:     NOTRUN -> [SKIP][405] ([Intel XE#1201]) +33 other tests skip
   [405]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-433/igt@xe_oa@non-system-wide-paranoid.html

  
#### Possible fixes ####

  * igt@xe_live_ktest@xe_migrate:
    - {shard-lnl}:        [SKIP][406] ([Intel XE#1192]) -> [PASS][407] +1 other test pass
   [406]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-lnl-8/igt@xe_live_ktest@xe_migrate.html
   [407]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-lnl-1/igt@xe_live_ktest@xe_migrate.html

  
#### Warnings ####

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - shard-dg2-set2:     [SKIP][408] ([Intel XE#1124] / [Intel XE#1201]) -> [FAIL][409] ([Intel XE#1204])
   [408]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-435/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
   [409]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-435/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html

  * igt@xe_gt_freq@freq_low_max:
    - shard-dg2-set2:     [FAIL][410] ([Intel XE#1045] / [Intel XE#1204]) -> [FAIL][411] ([Intel XE#1204])
   [410]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-432/igt@xe_gt_freq@freq_low_max.html
   [411]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-435/igt@xe_gt_freq@freq_low_max.html

  * igt@xe_module_load@load:
    - shard-dg2-set2:     [SKIP][412] ([Intel XE#1201] / [Intel XE#378]) -> [SKIP][413] ([Intel XE#378])
   [412]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7880/shard-dg2-434/igt@xe_module_load@load.html
   [413]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/shard-dg2-432/igt@xe_module_load@load.html

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

  [Intel XE#1041]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1041
  [Intel XE#1045]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1045
  [Intel XE#1050]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1050
  [Intel XE#1061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1061
  [Intel XE#1062]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1062
  [Intel XE#1068]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1068
  [Intel XE#1069]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1069
  [Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091
  [Intel XE#1122]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1122
  [Intel XE#1123]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1123
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1125]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1125
  [Intel XE#1126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1126
  [Intel XE#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127
  [Intel XE#1128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1128
  [Intel XE#1129]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1129
  [Intel XE#1131]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1131
  [Intel XE#1135]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1135
  [Intel XE#1138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1138
  [Intel XE#1149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1149
  [Intel XE#1158]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1158
  [Intel XE#1162]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1162
  [Intel XE#1173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1173
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1192
  [Intel XE#1195]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1195
  [Intel XE#1201]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1201
  [Intel XE#1204]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1204
  [Intel XE#1211]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1211
  [Intel XE#1214]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1214
  [Intel XE#1252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1252
  [Intel XE#1280]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1280
  [Intel XE#1337]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1337
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
  [Intel XE#1399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1399
  [Intel XE#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
  [Intel XE#1413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1413
  [Intel XE#1416]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1416
  [Intel XE#1420]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1420
  [Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
  [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
  [Intel XE#1428]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1428
  [Intel XE#1430]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1430
  [Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
  [Intel XE#1437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1437
  [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
  [Intel XE#1446]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1446
  [Intel XE#1447]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1447
  [Intel XE#1462]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1462
  [Intel XE#1465]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1465
  [Intel XE#1466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1466
  [Intel XE#1467]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1467
  [Intel XE#1468]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1468
  [Intel XE#1469]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1469
  [Intel XE#1470]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1470
  [Intel XE#1473]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1473
  [Intel XE#1477]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1477
  [Intel XE#1500]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1500
  [Intel XE#1512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1512
  [Intel XE#1551]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1551
  [Intel XE#1595]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1595
  [Intel XE#1600]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1600
  [Intel XE#1608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1608
  [Intel XE#1620]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1620
  [Intel XE#1638]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1638
  [Intel XE#1659]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1659
  [Intel XE#1725]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1725
  [Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
  [Intel XE#1760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1760
  [Intel XE#1899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1899
  [Intel XE#1901]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1901
  [Intel XE#1924]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1924
  [Intel XE#1941]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1941
  [Intel XE#1948]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1948
  [Intel XE#1960]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1960
  [Intel XE#2009]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2009
  [Intel XE#2016]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2016
  [Intel XE#2024]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2024
  [Intel XE#2028]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2028
  [Intel XE#2034]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2034
  [Intel XE#2043]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2043
  [Intel XE#255]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/255
  [Intel XE#282]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/282
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#294]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/294
  [Intel XE#305]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/305
  [Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
  [Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
  [Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
  [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/314
  [Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
  [Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
  [Intel XE#327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/327
  [Intel XE#330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/330
  [Intel XE#346]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/346
  [Intel XE#352]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/352
  [Intel XE#356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/356
  [Intel XE#361]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/361
  [Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
  [Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/374
  [Intel XE#378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/378
  [Intel XE#379]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/379
  [Intel XE#392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/392
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#498]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/498
  [Intel XE#512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/512
  [Intel XE#560]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/560
  [Intel XE#579]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/579
  [Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
  [Intel XE#605]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/605
  [Intel XE#607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/607
  [Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
  [Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
  [Intel XE#623]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/623
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/658
  [Intel XE#660]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/660
  [Intel XE#664]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/664
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#701]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/701
  [Intel XE#703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/703
  [Intel XE#756]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/756
  [Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
  [Intel XE#827]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/827
  [Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
  [Intel XE#873]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/873
  [Intel XE#877]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/877
  [Intel XE#908]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/908
  [Intel XE#910]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/910
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
  [Intel XE#958]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/958
  [Intel XE#977]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/977
  [Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979
  [i915#5274]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5274


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

  * IGT: IGT_7880 -> IGTPW_11239
  * Linux: xe-1413-cb97aa28be4f4b914c751ed27bae7782e027826c -> xe-1428-2bea08bd31298d60d416b2a6ed346bb53dd28037

  IGTPW_11239: e1c92a280ba09388fabf5484d0f6f276fa136f44 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_7880: 73618605b4370cf902267aaf1d25666ff5e26112 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1413-cb97aa28be4f4b914c751ed27bae7782e027826c: cb97aa28be4f4b914c751ed27bae7782e027826c
  xe-1428-2bea08bd31298d60d416b2a6ed346bb53dd28037: 2bea08bd31298d60d416b2a6ed346bb53dd28037

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_11239/index.html

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

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

* ✗ Fi.CI.IGT: failure for Intel Xe OA IGT's (rev3)
  2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
                   ` (30 preceding siblings ...)
  2024-06-08 14:10 ` ✗ CI.xeFULL: " Patchwork
@ 2024-06-08 15:04 ` Patchwork
  31 siblings, 0 replies; 33+ messages in thread
From: Patchwork @ 2024-06-08 15:04 UTC (permalink / raw)
  To: Ashutosh Dixit; +Cc: igt-dev

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

== Series Details ==

Series: Intel Xe OA IGT's (rev3)
URL   : https://patchwork.freedesktop.org/series/130033/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_14904_full -> IGTPW_11239_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_11239_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_11239_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) 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_11239/index.html

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

  No changes in participating hosts

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-glk:          NOTRUN -> [ABORT][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-glk1/igt@i915_module_load@reload-with-fault-injection.html

  * igt@kms_big_fb@linear-8bpp-rotate-180:
    - shard-mtlp:         [PASS][2] -> [ABORT][3]
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-mtlp-3/igt@kms_big_fb@linear-8bpp-rotate-180.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-5/igt@kms_big_fb@linear-8bpp-rotate-180.html

  * igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b:
    - shard-dg1:          NOTRUN -> [FAIL][4]
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-18/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@api_intel_bb@crc32:
    - shard-rkl:          NOTRUN -> [SKIP][5] ([i915#6230])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-4/igt@api_intel_bb@crc32.html

  * igt@debugfs_test@basic-hwmon:
    - shard-rkl:          NOTRUN -> [SKIP][6] ([i915#9318])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-5/igt@debugfs_test@basic-hwmon.html
    - shard-tglu:         NOTRUN -> [SKIP][7] ([i915#9318])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-8/igt@debugfs_test@basic-hwmon.html

  * igt@device_reset@unbind-cold-reset-rebind:
    - shard-rkl:          NOTRUN -> [SKIP][8] ([i915#11078])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-4/igt@device_reset@unbind-cold-reset-rebind.html

  * igt@drm_fdinfo@isolation@vcs1:
    - shard-dg2:          NOTRUN -> [SKIP][9] ([i915#8414]) +6 other tests skip
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-8/igt@drm_fdinfo@isolation@vcs1.html

  * igt@drm_fdinfo@most-busy-idle-check-all@rcs0:
    - shard-rkl:          [PASS][10] -> [FAIL][11] ([i915#7742])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-rkl-2/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-4/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html

  * igt@drm_fdinfo@virtual-busy-idle-all:
    - shard-dg1:          NOTRUN -> [SKIP][12] ([i915#8414])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-18/igt@drm_fdinfo@virtual-busy-idle-all.html

  * igt@gem_basic@multigpu-create-close:
    - shard-rkl:          NOTRUN -> [SKIP][13] ([i915#7697])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-6/igt@gem_basic@multigpu-create-close.html
    - shard-dg1:          NOTRUN -> [SKIP][14] ([i915#7697])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@gem_basic@multigpu-create-close.html

  * igt@gem_ccs@block-copy-compressed:
    - shard-dg1:          NOTRUN -> [SKIP][15] ([i915#3555] / [i915#9323])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-15/igt@gem_ccs@block-copy-compressed.html

  * igt@gem_ccs@ctrl-surf-copy:
    - shard-rkl:          NOTRUN -> [SKIP][16] ([i915#3555] / [i915#9323])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-4/igt@gem_ccs@ctrl-surf-copy.html

  * igt@gem_ccs@suspend-resume:
    - shard-rkl:          NOTRUN -> [SKIP][17] ([i915#9323])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-4/igt@gem_ccs@suspend-resume.html

  * igt@gem_close_race@multigpu-basic-process:
    - shard-dg2:          NOTRUN -> [SKIP][18] ([i915#7697])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-2/igt@gem_close_race@multigpu-basic-process.html

  * igt@gem_create@create-ext-cpu-access-big:
    - shard-mtlp:         NOTRUN -> [SKIP][19] ([i915#6335])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-3/igt@gem_create@create-ext-cpu-access-big.html

  * igt@gem_create@create-ext-cpu-access-sanity-check:
    - shard-rkl:          NOTRUN -> [SKIP][20] ([i915#6335])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-3/igt@gem_create@create-ext-cpu-access-sanity-check.html

  * igt@gem_create@create-ext-set-pat:
    - shard-dg1:          NOTRUN -> [SKIP][21] ([i915#8562])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@gem_create@create-ext-set-pat.html

  * igt@gem_ctx_isolation@preservation-s3@bcs0:
    - shard-dg1:          NOTRUN -> [FAIL][22] ([i915#10086] / [i915#11279]) +3 other tests fail
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-15/igt@gem_ctx_isolation@preservation-s3@bcs0.html

  * igt@gem_ctx_isolation@preservation-s3@vcs1:
    - shard-dg1:          NOTRUN -> [FAIL][23] ([i915#10086])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-15/igt@gem_ctx_isolation@preservation-s3@vcs1.html

  * igt@gem_ctx_persistence@hang:
    - shard-mtlp:         NOTRUN -> [SKIP][24] ([i915#8555])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-2/igt@gem_ctx_persistence@hang.html

  * igt@gem_ctx_persistence@heartbeat-close:
    - shard-dg1:          NOTRUN -> [SKIP][25] ([i915#8555]) +2 other tests skip
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-18/igt@gem_ctx_persistence@heartbeat-close.html

  * igt@gem_ctx_persistence@heartbeat-stop:
    - shard-dg2:          NOTRUN -> [SKIP][26] ([i915#8555])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-4/igt@gem_ctx_persistence@heartbeat-stop.html

  * igt@gem_ctx_sseu@engines:
    - shard-rkl:          NOTRUN -> [SKIP][27] ([i915#280])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-4/igt@gem_ctx_sseu@engines.html

  * igt@gem_eio@in-flight-suspend:
    - shard-dg2:          NOTRUN -> [FAIL][28] ([i915#11269])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-1/igt@gem_eio@in-flight-suspend.html

  * igt@gem_eio@kms:
    - shard-dg1:          NOTRUN -> [FAIL][29] ([i915#5784])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-18/igt@gem_eio@kms.html

  * igt@gem_exec_balancer@bonded-semaphore:
    - shard-dg1:          NOTRUN -> [SKIP][30] ([i915#4812]) +3 other tests skip
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-14/igt@gem_exec_balancer@bonded-semaphore.html
    - shard-mtlp:         NOTRUN -> [SKIP][31] ([i915#4812])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-1/igt@gem_exec_balancer@bonded-semaphore.html

  * igt@gem_exec_balancer@bonded-sync:
    - shard-dg2:          NOTRUN -> [SKIP][32] ([i915#4771])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-2/igt@gem_exec_balancer@bonded-sync.html

  * igt@gem_exec_balancer@parallel-balancer:
    - shard-rkl:          NOTRUN -> [SKIP][33] ([i915#4525]) +2 other tests skip
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-3/igt@gem_exec_balancer@parallel-balancer.html

  * igt@gem_exec_capture@capture-invisible@smem0:
    - shard-rkl:          NOTRUN -> [SKIP][34] ([i915#6334])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-2/igt@gem_exec_capture@capture-invisible@smem0.html

  * igt@gem_exec_capture@many-4k-incremental:
    - shard-glk:          NOTRUN -> [FAIL][35] ([i915#9606])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-glk9/igt@gem_exec_capture@many-4k-incremental.html

  * igt@gem_exec_fair@basic-none:
    - shard-dg1:          NOTRUN -> [SKIP][36] ([i915#3539] / [i915#4852]) +4 other tests skip
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@gem_exec_fair@basic-none.html

  * igt@gem_exec_fair@basic-none-rrul@rcs0:
    - shard-glk:          NOTRUN -> [FAIL][37] ([i915#2842]) +3 other tests fail
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-glk9/igt@gem_exec_fair@basic-none-rrul@rcs0.html

  * igt@gem_exec_fair@basic-none-share:
    - shard-dg2:          NOTRUN -> [SKIP][38] ([i915#3539] / [i915#4852]) +1 other test skip
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-4/igt@gem_exec_fair@basic-none-share.html

  * igt@gem_exec_fair@basic-none-solo@rcs0:
    - shard-tglu:         NOTRUN -> [FAIL][39] ([i915#2842]) +1 other test fail
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-9/igt@gem_exec_fair@basic-none-solo@rcs0.html

  * igt@gem_exec_fair@basic-pace-solo@rcs0:
    - shard-rkl:          [PASS][40] -> [FAIL][41] ([i915#2842])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-rkl-6/igt@gem_exec_fair@basic-pace-solo@rcs0.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-3/igt@gem_exec_fair@basic-pace-solo@rcs0.html

  * igt@gem_exec_fair@basic-pace@vecs0:
    - shard-rkl:          NOTRUN -> [FAIL][42] ([i915#2842]) +3 other tests fail
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-1/igt@gem_exec_fair@basic-pace@vecs0.html

  * igt@gem_exec_fair@basic-sync:
    - shard-mtlp:         NOTRUN -> [SKIP][43] ([i915#4473] / [i915#4771])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-5/igt@gem_exec_fair@basic-sync.html

  * igt@gem_exec_fence@submit3:
    - shard-dg2:          NOTRUN -> [SKIP][44] ([i915#4812])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-4/igt@gem_exec_fence@submit3.html

  * igt@gem_exec_flush@basic-uc-prw-default:
    - shard-dg1:          NOTRUN -> [SKIP][45] ([i915#3539]) +1 other test skip
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-15/igt@gem_exec_flush@basic-uc-prw-default.html

  * igt@gem_exec_params@rsvd2-dirt:
    - shard-dg2:          NOTRUN -> [SKIP][46] ([i915#5107])
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-11/igt@gem_exec_params@rsvd2-dirt.html

  * igt@gem_exec_reloc@basic-cpu-wc-noreloc:
    - shard-mtlp:         NOTRUN -> [SKIP][47] ([i915#3281]) +4 other tests skip
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-7/igt@gem_exec_reloc@basic-cpu-wc-noreloc.html

  * igt@gem_exec_reloc@basic-wc-read-noreloc:
    - shard-rkl:          NOTRUN -> [SKIP][48] ([i915#3281]) +6 other tests skip
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-4/igt@gem_exec_reloc@basic-wc-read-noreloc.html

  * igt@gem_exec_reloc@basic-write-gtt-active:
    - shard-dg1:          NOTRUN -> [SKIP][49] ([i915#3281]) +12 other tests skip
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-14/igt@gem_exec_reloc@basic-write-gtt-active.html

  * igt@gem_exec_reloc@basic-write-wc-noreloc:
    - shard-dg2:          NOTRUN -> [SKIP][50] ([i915#3281]) +4 other tests skip
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-1/igt@gem_exec_reloc@basic-write-wc-noreloc.html

  * igt@gem_exec_schedule@preempt-queue-contexts:
    - shard-dg2:          NOTRUN -> [SKIP][51] ([i915#4537] / [i915#4812])
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-8/igt@gem_exec_schedule@preempt-queue-contexts.html

  * igt@gem_exec_schedule@reorder-wide:
    - shard-mtlp:         NOTRUN -> [SKIP][52] ([i915#4537] / [i915#4812])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-1/igt@gem_exec_schedule@reorder-wide.html

  * igt@gem_exec_suspend@basic-s0@smem:
    - shard-dg2:          NOTRUN -> [FAIL][53] ([i915#11279]) +1 other test fail
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-4/igt@gem_exec_suspend@basic-s0@smem.html

  * igt@gem_exec_suspend@basic-s4-devices@smem:
    - shard-rkl:          NOTRUN -> [ABORT][54] ([i915#7975] / [i915#8213])
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-1/igt@gem_exec_suspend@basic-s4-devices@smem.html

  * igt@gem_fence_thrash@bo-write-verify-threaded-none:
    - shard-dg1:          NOTRUN -> [SKIP][55] ([i915#4860]) +2 other tests skip
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-14/igt@gem_fence_thrash@bo-write-verify-threaded-none.html

  * igt@gem_huc_copy@huc-copy:
    - shard-rkl:          NOTRUN -> [SKIP][56] ([i915#2190])
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-6/igt@gem_huc_copy@huc-copy.html
    - shard-glk:          NOTRUN -> [SKIP][57] ([i915#2190])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-glk7/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@heavy-verify-multi@lmem0:
    - shard-dg1:          NOTRUN -> [FAIL][58] ([i915#10378])
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-18/igt@gem_lmem_swapping@heavy-verify-multi@lmem0.html

  * igt@gem_lmem_swapping@heavy-verify-random-ccs@lmem0:
    - shard-dg1:          NOTRUN -> [SKIP][59] ([i915#4565])
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@gem_lmem_swapping@heavy-verify-random-ccs@lmem0.html
    - shard-dg2:          [PASS][60] -> [FAIL][61] ([i915#10378])
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg2-10/igt@gem_lmem_swapping@heavy-verify-random-ccs@lmem0.html
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-1/igt@gem_lmem_swapping@heavy-verify-random-ccs@lmem0.html

  * igt@gem_lmem_swapping@random-engines:
    - shard-mtlp:         NOTRUN -> [SKIP][62] ([i915#4613])
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-1/igt@gem_lmem_swapping@random-engines.html

  * igt@gem_lmem_swapping@smem-oom@lmem0:
    - shard-dg2:          NOTRUN -> [DMESG-WARN][63] ([i915#4936] / [i915#5493])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-8/igt@gem_lmem_swapping@smem-oom@lmem0.html

  * igt@gem_lmem_swapping@verify:
    - shard-rkl:          NOTRUN -> [SKIP][64] ([i915#4613]) +3 other tests skip
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-6/igt@gem_lmem_swapping@verify.html

  * igt@gem_lmem_swapping@verify-ccs:
    - shard-tglu:         NOTRUN -> [SKIP][65] ([i915#4613]) +1 other test skip
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-9/igt@gem_lmem_swapping@verify-ccs.html

  * igt@gem_lmem_swapping@verify-ccs@lmem0:
    - shard-dg2:          NOTRUN -> [FAIL][66] ([i915#10378]) +1 other test fail
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-6/igt@gem_lmem_swapping@verify-ccs@lmem0.html

  * igt@gem_lmem_swapping@verify-random-ccs:
    - shard-glk:          NOTRUN -> [SKIP][67] ([i915#4613]) +2 other tests skip
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-glk7/igt@gem_lmem_swapping@verify-random-ccs.html

  * igt@gem_mmap@bad-object:
    - shard-dg2:          NOTRUN -> [SKIP][68] ([i915#4083])
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-1/igt@gem_mmap@bad-object.html

  * igt@gem_mmap_gtt@basic-write-cpu-read-gtt:
    - shard-mtlp:         NOTRUN -> [SKIP][69] ([i915#4077]) +4 other tests skip
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-5/igt@gem_mmap_gtt@basic-write-cpu-read-gtt.html

  * igt@gem_mmap_gtt@cpuset-basic-small-copy-odd:
    - shard-dg1:          NOTRUN -> [SKIP][70] ([i915#4077]) +11 other tests skip
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@gem_mmap_gtt@cpuset-basic-small-copy-odd.html

  * igt@gem_mmap_wc@invalid-flags:
    - shard-dg1:          NOTRUN -> [SKIP][71] ([i915#4083]) +5 other tests skip
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@gem_mmap_wc@invalid-flags.html

  * igt@gem_mmap_wc@read-write:
    - shard-mtlp:         NOTRUN -> [SKIP][72] ([i915#4083]) +1 other test skip
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-7/igt@gem_mmap_wc@read-write.html

  * igt@gem_partial_pwrite_pread@write:
    - shard-dg2:          NOTRUN -> [SKIP][73] ([i915#3282]) +2 other tests skip
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-2/igt@gem_partial_pwrite_pread@write.html

  * igt@gem_pread@exhaustion:
    - shard-dg1:          NOTRUN -> [SKIP][74] ([i915#3282]) +4 other tests skip
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@gem_pread@exhaustion.html

  * igt@gem_pwrite_snooped:
    - shard-rkl:          NOTRUN -> [SKIP][75] ([i915#3282]) +4 other tests skip
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-4/igt@gem_pwrite_snooped.html

  * igt@gem_pxp@verify-pxp-execution-after-suspend-resume:
    - shard-dg2:          NOTRUN -> [SKIP][76] ([i915#4270]) +1 other test skip
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-1/igt@gem_pxp@verify-pxp-execution-after-suspend-resume.html
    - shard-rkl:          NOTRUN -> [SKIP][77] ([i915#4270]) +3 other tests skip
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-3/igt@gem_pxp@verify-pxp-execution-after-suspend-resume.html
    - shard-tglu:         NOTRUN -> [SKIP][78] ([i915#4270]) +1 other test skip
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-6/igt@gem_pxp@verify-pxp-execution-after-suspend-resume.html

  * igt@gem_pxp@verify-pxp-stale-buf-optout-execution:
    - shard-mtlp:         NOTRUN -> [SKIP][79] ([i915#4270]) +1 other test skip
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-3/igt@gem_pxp@verify-pxp-stale-buf-optout-execution.html
    - shard-dg1:          NOTRUN -> [SKIP][80] ([i915#4270]) +2 other tests skip
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@gem_pxp@verify-pxp-stale-buf-optout-execution.html

  * igt@gem_readwrite@read-write:
    - shard-mtlp:         NOTRUN -> [SKIP][81] ([i915#3282]) +2 other tests skip
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-1/igt@gem_readwrite@read-write.html

  * igt@gem_render_copy@y-tiled-ccs-to-yf-tiled-mc-ccs:
    - shard-mtlp:         NOTRUN -> [SKIP][82] ([i915#8428])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-7/igt@gem_render_copy@y-tiled-ccs-to-yf-tiled-mc-ccs.html

  * igt@gem_render_copy@yf-tiled-mc-ccs-to-vebox-y-tiled:
    - shard-dg2:          NOTRUN -> [SKIP][83] ([i915#5190] / [i915#8428]) +3 other tests skip
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-6/igt@gem_render_copy@yf-tiled-mc-ccs-to-vebox-y-tiled.html

  * igt@gem_softpin@evict-snoop:
    - shard-dg1:          NOTRUN -> [SKIP][84] ([i915#4885])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@gem_softpin@evict-snoop.html
    - shard-mtlp:         NOTRUN -> [SKIP][85] ([i915#4885])
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-1/igt@gem_softpin@evict-snoop.html

  * igt@gem_tiled_pread_pwrite:
    - shard-dg1:          NOTRUN -> [SKIP][86] ([i915#4079])
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@gem_tiled_pread_pwrite.html

  * igt@gem_userptr_blits@coherency-sync:
    - shard-rkl:          NOTRUN -> [SKIP][87] ([i915#3297])
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-3/igt@gem_userptr_blits@coherency-sync.html

  * igt@gem_userptr_blits@sd-probe:
    - shard-dg1:          NOTRUN -> [SKIP][88] ([i915#3297] / [i915#4958])
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-15/igt@gem_userptr_blits@sd-probe.html

  * igt@gem_userptr_blits@unsync-unmap:
    - shard-dg1:          NOTRUN -> [SKIP][89] ([i915#3297])
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-15/igt@gem_userptr_blits@unsync-unmap.html
    - shard-mtlp:         NOTRUN -> [SKIP][90] ([i915#3297])
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-4/igt@gem_userptr_blits@unsync-unmap.html

  * igt@gem_workarounds@suspend-resume-fd:
    - shard-dg1:          NOTRUN -> [FAIL][91] ([i915#10177] / [i915#11279]) +1 other test fail
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-14/igt@gem_workarounds@suspend-resume-fd.html

  * igt@gen9_exec_parse@batch-invalid-length:
    - shard-dg2:          NOTRUN -> [SKIP][92] ([i915#2856])
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-1/igt@gen9_exec_parse@batch-invalid-length.html

  * igt@gen9_exec_parse@bb-chained:
    - shard-rkl:          NOTRUN -> [SKIP][93] ([i915#2527]) +3 other tests skip
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-4/igt@gen9_exec_parse@bb-chained.html

  * igt@gen9_exec_parse@bb-secure:
    - shard-dg1:          NOTRUN -> [SKIP][94] ([i915#2527]) +2 other tests skip
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@gen9_exec_parse@bb-secure.html
    - shard-tglu:         NOTRUN -> [SKIP][95] ([i915#2527] / [i915#2856]) +1 other test skip
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-6/igt@gen9_exec_parse@bb-secure.html
    - shard-mtlp:         NOTRUN -> [SKIP][96] ([i915#2856])
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-7/igt@gen9_exec_parse@bb-secure.html

  * igt@i915_fb_tiling:
    - shard-dg2:          NOTRUN -> [SKIP][97] ([i915#4881])
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-2/igt@i915_fb_tiling.html

  * igt@i915_module_load@load:
    - shard-glk:          NOTRUN -> [SKIP][98] ([i915#6227])
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-glk1/igt@i915_module_load@load.html

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-dg2:          [PASS][99] -> [INCOMPLETE][100] ([i915#1982] / [i915#9820] / [i915#9849])
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg2-11/igt@i915_module_load@reload-with-fault-injection.html
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-2/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_pm_freq_api@freq-basic-api:
    - shard-rkl:          NOTRUN -> [SKIP][101] ([i915#8399])
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-3/igt@i915_pm_freq_api@freq-basic-api.html

  * igt@i915_pm_rpm@gem-execbuf-stress-pc8:
    - shard-mtlp:         NOTRUN -> [SKIP][102] +5 other tests skip
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-1/igt@i915_pm_rpm@gem-execbuf-stress-pc8.html

  * igt@i915_pm_rps@thresholds-idle-park@gt0:
    - shard-dg2:          NOTRUN -> [SKIP][103] ([i915#8925])
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-8/igt@i915_pm_rps@thresholds-idle-park@gt0.html

  * igt@i915_pm_rps@thresholds-idle@gt0:
    - shard-dg1:          NOTRUN -> [SKIP][104] ([i915#8925])
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-15/igt@i915_pm_rps@thresholds-idle@gt0.html

  * igt@i915_power@sanity:
    - shard-rkl:          NOTRUN -> [SKIP][105] ([i915#7984])
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-3/igt@i915_power@sanity.html

  * igt@i915_selftest@mock@memory_region:
    - shard-dg1:          NOTRUN -> [DMESG-WARN][106] ([i915#9311])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-18/igt@i915_selftest@mock@memory_region.html

  * igt@i915_suspend@debugfs-reader:
    - shard-dg1:          NOTRUN -> [FAIL][107] ([i915#10031] / [i915#11279]) +2 other tests fail
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-14/igt@i915_suspend@debugfs-reader.html

  * igt@intel_hwmon@hwmon-read:
    - shard-mtlp:         NOTRUN -> [SKIP][108] ([i915#7707])
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-4/igt@intel_hwmon@hwmon-read.html

  * igt@kms_addfb_basic@framebuffer-vs-set-tiling:
    - shard-dg2:          NOTRUN -> [SKIP][109] ([i915#4212]) +1 other test skip
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-8/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html

  * igt@kms_addfb_basic@invalid-smem-bo-on-discrete:
    - shard-tglu:         NOTRUN -> [SKIP][110] ([i915#3826])
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-3/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html
    - shard-rkl:          NOTRUN -> [SKIP][111] ([i915#3826])
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-3/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
    - shard-glk:          NOTRUN -> [SKIP][112] ([i915#1769])
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-glk1/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
    - shard-dg1:          NOTRUN -> [SKIP][113] ([i915#1769] / [i915#3555])
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html

  * igt@kms_big_fb@4-tiled-8bpp-rotate-180:
    - shard-tglu:         NOTRUN -> [SKIP][114] ([i915#5286]) +2 other tests skip
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-3/igt@kms_big_fb@4-tiled-8bpp-rotate-180.html

  * igt@kms_big_fb@4-tiled-8bpp-rotate-90:
    - shard-dg1:          NOTRUN -> [SKIP][115] ([i915#4538] / [i915#5286]) +5 other tests skip
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-18/igt@kms_big_fb@4-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@4-tiled-addfb-size-offset-overflow:
    - shard-dg1:          NOTRUN -> [SKIP][116] ([i915#5286])
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@kms_big_fb@4-tiled-addfb-size-offset-overflow.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip:
    - shard-rkl:          NOTRUN -> [SKIP][117] ([i915#5286]) +4 other tests skip
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-3/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip.html

  * igt@kms_big_fb@x-tiled-32bpp-rotate-270:
    - shard-dg2:          NOTRUN -> [SKIP][118] +9 other tests skip
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-2/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html

  * igt@kms_big_fb@y-tiled-64bpp-rotate-90:
    - shard-rkl:          NOTRUN -> [SKIP][119] ([i915#3638])
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-6/igt@kms_big_fb@y-tiled-64bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-8bpp-rotate-0:
    - shard-rkl:          [PASS][120] -> [ABORT][121] ([i915#10354])
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-rkl-5/igt@kms_big_fb@y-tiled-8bpp-rotate-0.html
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-3/igt@kms_big_fb@y-tiled-8bpp-rotate-0.html

  * igt@kms_big_fb@y-tiled-8bpp-rotate-90:
    - shard-dg1:          NOTRUN -> [SKIP][122] ([i915#3638]) +4 other tests skip
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-15/igt@kms_big_fb@y-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180:
    - shard-dg1:          NOTRUN -> [SKIP][123] ([i915#4538]) +6 other tests skip
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-18/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0:
    - shard-dg2:          NOTRUN -> [SKIP][124] ([i915#4538] / [i915#5190]) +5 other tests skip
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-4/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0.html

  * igt@kms_big_joiner@basic:
    - shard-dg2:          NOTRUN -> [SKIP][125] ([i915#10656])
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-4/igt@kms_big_joiner@basic.html
    - shard-rkl:          NOTRUN -> [SKIP][126] ([i915#10656]) +1 other test skip
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-3/igt@kms_big_joiner@basic.html

  * igt@kms_big_joiner@basic-force-joiner:
    - shard-tglu:         NOTRUN -> [SKIP][127] ([i915#10656]) +2 other tests skip
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-8/igt@kms_big_joiner@basic-force-joiner.html
    - shard-dg1:          NOTRUN -> [SKIP][128] ([i915#10656])
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-14/igt@kms_big_joiner@basic-force-joiner.html

  * igt@kms_ccs@bad-pixel-format-4-tiled-dg2-rc-ccs-cc@pipe-d-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [SKIP][129] ([i915#6095]) +83 other tests skip
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-14/igt@kms_ccs@bad-pixel-format-4-tiled-dg2-rc-ccs-cc@pipe-d-hdmi-a-4.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][130] ([i915#6095]) +77 other tests skip
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-1/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][131] ([i915#10307] / [i915#6095]) +140 other tests skip
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-1/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-3.html

  * igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][132] ([i915#6095]) +27 other tests skip
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-9/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-1.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-xe2-ccs:
    - shard-mtlp:         NOTRUN -> [SKIP][133] ([i915#10278])
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-8/igt@kms_ccs@crc-primary-basic-4-tiled-xe2-ccs.html
    - shard-dg1:          NOTRUN -> [SKIP][134] ([i915#10278])
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-18/igt@kms_ccs@crc-primary-basic-4-tiled-xe2-ccs.html

  * igt@kms_ccs@crc-primary-basic-y-tiled-gen12-mc-ccs@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][135] ([i915#10307] / [i915#10434] / [i915#6095]) +2 other tests skip
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-4/igt@kms_ccs@crc-primary-basic-y-tiled-gen12-mc-ccs@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs-cc@pipe-d-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][136] ([i915#6095]) +15 other tests skip
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-2/igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs-cc@pipe-d-edp-1.html

  * igt@kms_ccs@random-ccs-data-y-tiled-ccs:
    - shard-snb:          NOTRUN -> [SKIP][137] +26 other tests skip
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-snb5/igt@kms_ccs@random-ccs-data-y-tiled-ccs.html

  * igt@kms_chamelium_audio@dp-audio:
    - shard-tglu:         NOTRUN -> [SKIP][138] ([i915#7828]) +5 other tests skip
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-9/igt@kms_chamelium_audio@dp-audio.html

  * igt@kms_chamelium_frames@dp-crc-fast:
    - shard-dg2:          NOTRUN -> [SKIP][139] ([i915#7828]) +6 other tests skip
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-4/igt@kms_chamelium_frames@dp-crc-fast.html

  * igt@kms_chamelium_hpd@dp-hpd:
    - shard-rkl:          NOTRUN -> [SKIP][140] ([i915#7828]) +10 other tests skip
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-4/igt@kms_chamelium_hpd@dp-hpd.html

  * igt@kms_chamelium_hpd@dp-hpd-storm-disable:
    - shard-dg1:          NOTRUN -> [SKIP][141] ([i915#7828]) +7 other tests skip
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-18/igt@kms_chamelium_hpd@dp-hpd-storm-disable.html

  * igt@kms_chamelium_hpd@hdmi-hpd-fast:
    - shard-mtlp:         NOTRUN -> [SKIP][142] ([i915#7828]) +2 other tests skip
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-4/igt@kms_chamelium_hpd@hdmi-hpd-fast.html

  * igt@kms_content_protection@dp-mst-lic-type-1:
    - shard-dg2:          NOTRUN -> [SKIP][143] ([i915#3299])
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-1/igt@kms_content_protection@dp-mst-lic-type-1.html

  * igt@kms_content_protection@dp-mst-type-1:
    - shard-rkl:          NOTRUN -> [SKIP][144] ([i915#3116]) +1 other test skip
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-6/igt@kms_content_protection@dp-mst-type-1.html

  * igt@kms_content_protection@legacy:
    - shard-dg2:          NOTRUN -> [SKIP][145] ([i915#7118] / [i915#9424])
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-8/igt@kms_content_protection@legacy.html

  * igt@kms_content_protection@lic-type-0:
    - shard-dg1:          NOTRUN -> [SKIP][146] ([i915#9424])
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@kms_content_protection@lic-type-0.html

  * igt@kms_content_protection@mei-interface:
    - shard-dg2:          NOTRUN -> [SKIP][147] ([i915#9424])
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-3/igt@kms_content_protection@mei-interface.html
    - shard-rkl:          NOTRUN -> [SKIP][148] ([i915#9424])
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-6/igt@kms_content_protection@mei-interface.html
    - shard-tglu:         NOTRUN -> [SKIP][149] ([i915#6944] / [i915#9424])
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-4/igt@kms_content_protection@mei-interface.html

  * igt@kms_cursor_crc@cursor-offscreen-32x10:
    - shard-mtlp:         NOTRUN -> [SKIP][150] ([i915#3555] / [i915#8814])
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-1/igt@kms_cursor_crc@cursor-offscreen-32x10.html

  * igt@kms_cursor_crc@cursor-offscreen-64x21:
    - shard-mtlp:         NOTRUN -> [SKIP][151] ([i915#8814])
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-6/igt@kms_cursor_crc@cursor-offscreen-64x21.html

  * igt@kms_cursor_crc@cursor-onscreen-32x10:
    - shard-dg2:          NOTRUN -> [SKIP][152] ([i915#3555]) +4 other tests skip
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-8/igt@kms_cursor_crc@cursor-onscreen-32x10.html

  * igt@kms_cursor_crc@cursor-random-512x170:
    - shard-mtlp:         NOTRUN -> [SKIP][153] ([i915#3359])
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-2/igt@kms_cursor_crc@cursor-random-512x170.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x170:
    - shard-dg1:          NOTRUN -> [SKIP][154] ([i915#3359])
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x512:
    - shard-tglu:         NOTRUN -> [SKIP][155] ([i915#3359])
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-8/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html
    - shard-dg2:          NOTRUN -> [SKIP][156] ([i915#3359])
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-4/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html

  * igt@kms_cursor_crc@cursor-sliding-32x32:
    - shard-tglu:         NOTRUN -> [SKIP][157] ([i915#3555]) +4 other tests skip
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-4/igt@kms_cursor_crc@cursor-sliding-32x32.html

  * igt@kms_cursor_crc@cursor-suspend@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [FAIL][158] ([i915#11279] / [i915#11298]) +1 other test fail
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-8/igt@kms_cursor_crc@cursor-suspend@pipe-d-hdmi-a-1.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - shard-dg1:          NOTRUN -> [SKIP][159] ([i915#4103] / [i915#4213])
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size:
    - shard-mtlp:         NOTRUN -> [SKIP][160] ([i915#9809])
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-5/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-tglu:         NOTRUN -> [SKIP][161] ([i915#4103])
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-9/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html
    - shard-dg2:          NOTRUN -> [SKIP][162] ([i915#4103] / [i915#4213]) +1 other test skip
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-6/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html
    - shard-rkl:          NOTRUN -> [SKIP][163] ([i915#4103])
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-6/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

  * igt@kms_dirtyfb@fbc-dirtyfb-ioctl@a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][164] ([i915#9723])
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-6/igt@kms_dirtyfb@fbc-dirtyfb-ioctl@a-hdmi-a-2.html

  * igt@kms_dirtyfb@fbc-dirtyfb-ioctl@a-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][165] ([i915#9227])
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-6/igt@kms_dirtyfb@fbc-dirtyfb-ioctl@a-hdmi-a-3.html

  * igt@kms_display_modes@mst-extended-mode-negative:
    - shard-rkl:          NOTRUN -> [SKIP][166] ([i915#8588])
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-3/igt@kms_display_modes@mst-extended-mode-negative.html

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [SKIP][167] ([i915#3804])
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-5/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1.html

  * igt@kms_dsc@dsc-with-bpc:
    - shard-dg1:          NOTRUN -> [SKIP][168] ([i915#3555] / [i915#3840])
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@kms_dsc@dsc-with-bpc.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-dg2:          NOTRUN -> [FAIL][169] ([i915#11139] / [i915#11279])
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-3/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_feature_discovery@chamelium:
    - shard-tglu:         NOTRUN -> [SKIP][170] ([i915#2065] / [i915#4854])
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-6/igt@kms_feature_discovery@chamelium.html

  * igt@kms_feature_discovery@display-4x:
    - shard-rkl:          NOTRUN -> [SKIP][171] ([i915#1839]) +1 other test skip
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-3/igt@kms_feature_discovery@display-4x.html
    - shard-dg1:          NOTRUN -> [SKIP][172] ([i915#1839])
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@kms_feature_discovery@display-4x.html
    - shard-tglu:         NOTRUN -> [SKIP][173] ([i915#1839])
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-9/igt@kms_feature_discovery@display-4x.html
    - shard-mtlp:         NOTRUN -> [SKIP][174] ([i915#1839])
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-1/igt@kms_feature_discovery@display-4x.html

  * igt@kms_feature_discovery@dp-mst:
    - shard-mtlp:         NOTRUN -> [SKIP][175] ([i915#9337])
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-5/igt@kms_feature_discovery@dp-mst.html

  * igt@kms_feature_discovery@psr1:
    - shard-dg1:          NOTRUN -> [SKIP][176] ([i915#658])
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@kms_feature_discovery@psr1.html

  * igt@kms_feature_discovery@psr2:
    - shard-dg2:          NOTRUN -> [SKIP][177] ([i915#658])
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-2/igt@kms_feature_discovery@psr2.html

  * igt@kms_flip@2x-flip-vs-fences:
    - shard-mtlp:         NOTRUN -> [SKIP][178] ([i915#8381])
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-3/igt@kms_flip@2x-flip-vs-fences.html

  * igt@kms_flip@2x-nonexisting-fb-interruptible:
    - shard-tglu:         NOTRUN -> [SKIP][179] ([i915#3637]) +4 other tests skip
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-6/igt@kms_flip@2x-nonexisting-fb-interruptible.html

  * igt@kms_flip@2x-plain-flip:
    - shard-dg1:          NOTRUN -> [SKIP][180] ([i915#9934]) +4 other tests skip
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@kms_flip@2x-plain-flip.html

  * igt@kms_flip@2x-plain-flip-ts-check-interruptible:
    - shard-mtlp:         NOTRUN -> [SKIP][181] ([i915#3637])
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-8/igt@kms_flip@2x-plain-flip-ts-check-interruptible.html

  * igt@kms_flip@2x-wf_vblank-ts-check-interruptible@ab-vga1-hdmi-a1:
    - shard-snb:          [PASS][182] -> [FAIL][183] ([i915#2122])
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-snb6/igt@kms_flip@2x-wf_vblank-ts-check-interruptible@ab-vga1-hdmi-a1.html
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-snb7/igt@kms_flip@2x-wf_vblank-ts-check-interruptible@ab-vga1-hdmi-a1.html

  * igt@kms_flip@flip-vs-fences:
    - shard-dg1:          NOTRUN -> [SKIP][184] ([i915#8381])
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-14/igt@kms_flip@flip-vs-fences.html

  * igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a4:
    - shard-dg1:          NOTRUN -> [FAIL][185] ([i915#11275] / [i915#11279]) +1 other test fail
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-14/igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a4.html

  * igt@kms_flip@flip-vs-suspend-interruptible@c-hdmi-a4:
    - shard-dg1:          NOTRUN -> [FAIL][186] ([i915#10545] / [i915#11279]) +1 other test fail
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-14/igt@kms_flip@flip-vs-suspend-interruptible@c-hdmi-a4.html

  * igt@kms_flip@flip-vs-suspend@a-hdmi-a2:
    - shard-dg2:          NOTRUN -> [FAIL][187] ([i915#11275] / [i915#11279]) +3 other tests fail
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-3/igt@kms_flip@flip-vs-suspend@a-hdmi-a2.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode:
    - shard-tglu:         NOTRUN -> [SKIP][188] ([i915#2587] / [i915#2672])
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-7/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][189] ([i915#2672])
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-7/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode:
    - shard-dg1:          NOTRUN -> [SKIP][190] ([i915#2587] / [i915#2672]) +3 other tests skip
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-15/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling@pipe-a-valid-mode:
    - shard-rkl:          NOTRUN -> [SKIP][191] ([i915#2672]) +3 other tests skip
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-5/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling@pipe-a-valid-mode.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff:
    - shard-dg2:          [PASS][192] -> [FAIL][193] ([i915#6880])
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg2-7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff.html
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-3/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-onoff:
    - shard-mtlp:         NOTRUN -> [SKIP][194] ([i915#1825]) +8 other tests skip
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-4/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render:
    - shard-dg1:          NOTRUN -> [SKIP][195] +44 other tests skip
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
    - shard-dg1:          NOTRUN -> [FAIL][196] ([i915#11279] / [i915#11280])
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@kms_frontbuffer_tracking@fbc-suspend.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-render:
    - shard-dg1:          NOTRUN -> [SKIP][197] ([i915#3458]) +15 other tests skip
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-15/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-indfb-fliptrack-mmap-gtt:
    - shard-rkl:          NOTRUN -> [SKIP][198] +42 other tests skip
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-indfb-fliptrack-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-move:
    - shard-dg2:          NOTRUN -> [SKIP][199] ([i915#5354]) +18 other tests skip
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt:
    - shard-rkl:          NOTRUN -> [SKIP][200] ([i915#1825]) +40 other tests skip
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-fullscreen:
    - shard-tglu:         NOTRUN -> [SKIP][201] +50 other tests skip
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc:
    - shard-rkl:          NOTRUN -> [SKIP][202] ([i915#3023]) +26 other tests skip
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-tiling-4:
    - shard-rkl:          NOTRUN -> [SKIP][203] ([i915#5439])
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsr-tiling-4.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-wc:
    - shard-dg2:          NOTRUN -> [SKIP][204] ([i915#8708]) +8 other tests skip
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-rgb101010-draw-render:
    - shard-dg2:          NOTRUN -> [SKIP][205] ([i915#3458]) +9 other tests skip
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-2/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-gtt:
    - shard-mtlp:         NOTRUN -> [SKIP][206] ([i915#8708]) +6 other tests skip
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-4/igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-wc:
    - shard-dg1:          NOTRUN -> [SKIP][207] ([i915#8708]) +20 other tests skip
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-wc.html

  * igt@kms_getfb@getfb-reject-ccs:
    - shard-dg2:          NOTRUN -> [SKIP][208] ([i915#6118])
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-1/igt@kms_getfb@getfb-reject-ccs.html

  * igt@kms_hdr@invalid-metadata-sizes:
    - shard-rkl:          NOTRUN -> [SKIP][209] ([i915#3555] / [i915#8228])
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-5/igt@kms_hdr@invalid-metadata-sizes.html

  * igt@kms_hdr@static-swap:
    - shard-dg1:          NOTRUN -> [SKIP][210] ([i915#3555] / [i915#8228])
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-18/igt@kms_hdr@static-swap.html
    - shard-tglu:         NOTRUN -> [SKIP][211] ([i915#3555] / [i915#8228])
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-4/igt@kms_hdr@static-swap.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-dg2:          NOTRUN -> [SKIP][212] ([i915#4816])
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-6/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_panel_fitting@legacy:
    - shard-tglu:         NOTRUN -> [SKIP][213] ([i915#6301])
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-7/igt@kms_panel_fitting@legacy.html
    - shard-rkl:          NOTRUN -> [SKIP][214] ([i915#6301])
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-1/igt@kms_panel_fitting@legacy.html
    - shard-dg1:          NOTRUN -> [SKIP][215] ([i915#6301])
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@kms_panel_fitting@legacy.html

  * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-hdmi-a-2:
    - shard-dg2:          NOTRUN -> [FAIL][216] ([i915#11274])
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-3/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-hdmi-a-2.html

  * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-d-hdmi-a-2:
    - shard-dg2:          NOTRUN -> [FAIL][217] ([i915#11274] / [i915#11279]) +2 other tests fail
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-3/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-d-hdmi-a-2.html

  * igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a:
    - shard-dg1:          NOTRUN -> [FAIL][218] ([i915#11279] / [i915#11284])
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-18/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a.html

  * igt@kms_plane_alpha_blend@alpha-basic@pipe-c-hdmi-a-1:
    - shard-glk:          NOTRUN -> [FAIL][219] ([i915#7862]) +1 other test fail
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-glk9/igt@kms_plane_alpha_blend@alpha-basic@pipe-c-hdmi-a-1.html

  * igt@kms_plane_multiple@tiling-yf:
    - shard-rkl:          NOTRUN -> [SKIP][220] ([i915#3555]) +7 other tests skip
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-5/igt@kms_plane_multiple@tiling-yf.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-c-hdmi-a-2:
    - shard-dg2:          NOTRUN -> [SKIP][221] ([i915#9423]) +7 other tests skip
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-3/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-c-hdmi-a-2.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-a-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [SKIP][222] ([i915#9423]) +7 other tests skip
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-5/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-a-hdmi-a-1.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][223] ([i915#9423]) +3 other tests skip
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-3/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b-hdmi-a-1.html

  * igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-d-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [SKIP][224] ([i915#9423]) +15 other tests skip
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-d-hdmi-a-4.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-a-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [SKIP][225] ([i915#5176] / [i915#9423]) +1 other test skip
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-4/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-a-hdmi-a-1.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-b-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][226] ([i915#5235]) +5 other tests skip
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-6/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-b-hdmi-a-2.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-c-hdmi-a-2:
    - shard-dg2:          NOTRUN -> [SKIP][227] ([i915#5235] / [i915#9423]) +15 other tests skip
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-3/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-c-hdmi-a-2.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-c-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [SKIP][228] ([i915#5235]) +7 other tests skip
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-c-hdmi-a-4.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-a-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][229] ([i915#5235]) +3 other tests skip
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-9/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-a-hdmi-a-1.html

  * igt@kms_pm_backlight@bad-brightness:
    - shard-rkl:          NOTRUN -> [SKIP][230] ([i915#5354])
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-4/igt@kms_pm_backlight@bad-brightness.html

  * igt@kms_pm_backlight@basic-brightness:
    - shard-tglu:         NOTRUN -> [SKIP][231] ([i915#9812])
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-4/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_pm_backlight@fade-with-dpms:
    - shard-dg1:          NOTRUN -> [SKIP][232] ([i915#5354]) +1 other test skip
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-15/igt@kms_pm_backlight@fade-with-dpms.html

  * igt@kms_pm_dc@dc3co-vpb-simulation:
    - shard-rkl:          NOTRUN -> [SKIP][233] ([i915#9685])
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-3/igt@kms_pm_dc@dc3co-vpb-simulation.html

  * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
    - shard-rkl:          NOTRUN -> [SKIP][234] ([i915#9519]) +2 other tests skip
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-5/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
    - shard-tglu:         NOTRUN -> [SKIP][235] ([i915#9519])
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-4/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp:
    - shard-dg1:          NOTRUN -> [SKIP][236] ([i915#9519])
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-15/igt@kms_pm_rpm@modeset-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp-stress-no-wait:
    - shard-rkl:          [PASS][237] -> [SKIP][238] ([i915#9519])
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-rkl-2/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-1/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - shard-dg2:          [PASS][239] -> [SKIP][240] ([i915#9519])
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg2-7/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-4/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html

  * igt@kms_prime@basic-crc-hybrid:
    - shard-mtlp:         NOTRUN -> [SKIP][241] ([i915#6524])
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-3/igt@kms_prime@basic-crc-hybrid.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-dg1:          NOTRUN -> [SKIP][242] ([i915#9683])
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-18/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-rkl:          NOTRUN -> [SKIP][243] ([i915#9683])
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-6/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@fbc-pr-dpms:
    - shard-mtlp:         NOTRUN -> [SKIP][244] ([i915#9688]) +3 other tests skip
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-7/igt@kms_psr@fbc-pr-dpms.html

  * igt@kms_psr@fbc-psr-cursor-render:
    - shard-tglu:         NOTRUN -> [SKIP][245] ([i915#9732]) +8 other tests skip
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-8/igt@kms_psr@fbc-psr-cursor-render.html

  * igt@kms_psr@fbc-psr-sprite-plane-onoff:
    - shard-dg2:          NOTRUN -> [SKIP][246] ([i915#1072] / [i915#9673] / [i915#9732]) +1 other test skip
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-11/igt@kms_psr@fbc-psr-sprite-plane-onoff.html

  * igt@kms_psr@fbc-psr2-sprite-mmap-gtt:
    - shard-dg1:          NOTRUN -> [SKIP][247] ([i915#1072] / [i915#9732]) +22 other tests skip
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@kms_psr@fbc-psr2-sprite-mmap-gtt.html

  * igt@kms_psr@psr-no-drrs:
    - shard-glk:          NOTRUN -> [SKIP][248] +220 other tests skip
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-glk8/igt@kms_psr@psr-no-drrs.html

  * igt@kms_psr@psr2-cursor-plane-move:
    - shard-dg2:          NOTRUN -> [SKIP][249] ([i915#1072] / [i915#9732]) +8 other tests skip
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-6/igt@kms_psr@psr2-cursor-plane-move.html

  * igt@kms_psr@psr2-suspend:
    - shard-rkl:          NOTRUN -> [SKIP][250] ([i915#1072] / [i915#9732]) +18 other tests skip
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-5/igt@kms_psr@psr2-suspend.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
    - shard-tglu:         NOTRUN -> [SKIP][251] ([i915#5289])
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-3/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
    - shard-dg1:          NOTRUN -> [SKIP][252] ([i915#5289])
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@sprite-rotation-270:
    - shard-mtlp:         NOTRUN -> [SKIP][253] ([i915#4235])
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-3/igt@kms_rotation_crc@sprite-rotation-270.html

  * igt@kms_scaling_modes@scaling-mode-center:
    - shard-dg1:          NOTRUN -> [SKIP][254] ([i915#3555]) +8 other tests skip
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@kms_scaling_modes@scaling-mode-center.html

  * igt@kms_scaling_modes@scaling-mode-none@pipe-a-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][255] ([i915#5030]) +2 other tests skip
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-1/igt@kms_scaling_modes@scaling-mode-none@pipe-a-edp-1.html

  * igt@kms_scaling_modes@scaling-mode-none@pipe-d-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][256] ([i915#5030] / [i915#9041])
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-1/igt@kms_scaling_modes@scaling-mode-none@pipe-d-edp-1.html

  * igt@kms_setmode@basic@pipe-a-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [FAIL][257] ([i915#5465]) +1 other test fail
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@kms_setmode@basic@pipe-a-hdmi-a-4.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1:
    - shard-tglu:         [PASS][258] -> [FAIL][259] ([i915#9196])
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-tglu-6/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1.html
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-9/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1.html

  * igt@kms_vblank@ts-continuation-suspend@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [FAIL][260] ([i915#10305] / [i915#11279]) +1 other test fail
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-8/igt@kms_vblank@ts-continuation-suspend@pipe-d-hdmi-a-1.html

  * igt@kms_vblank@ts-continuation-suspend@pipe-d-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [FAIL][261] ([i915#10305] / [i915#11279]) +1 other test fail
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@kms_vblank@ts-continuation-suspend@pipe-d-hdmi-a-4.html

  * igt@kms_writeback@writeback-check-output:
    - shard-dg1:          NOTRUN -> [SKIP][262] ([i915#2437])
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@kms_writeback@writeback-check-output.html
    - shard-tglu:         NOTRUN -> [SKIP][263] ([i915#2437])
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-6/igt@kms_writeback@writeback-check-output.html

  * igt@kms_writeback@writeback-fb-id-xrgb2101010:
    - shard-dg1:          NOTRUN -> [SKIP][264] ([i915#2437] / [i915#9412])
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@kms_writeback@writeback-fb-id-xrgb2101010.html

  * igt@kms_writeback@writeback-pixel-formats:
    - shard-glk:          NOTRUN -> [SKIP][265] ([i915#2437]) +1 other test skip
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-glk6/igt@kms_writeback@writeback-pixel-formats.html

  * igt@perf@global-sseu-config:
    - shard-mtlp:         NOTRUN -> [SKIP][266] ([i915#7387])
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-5/igt@perf@global-sseu-config.html

  * igt@perf@mi-rpc:
    - shard-rkl:          NOTRUN -> [SKIP][267] ([i915#2434])
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-1/igt@perf@mi-rpc.html
    - shard-dg1:          NOTRUN -> [SKIP][268] ([i915#2434])
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-18/igt@perf@mi-rpc.html

  * igt@perf@unprivileged-single-ctx-counters:
    - shard-rkl:          NOTRUN -> [SKIP][269] ([i915#2433])
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-6/igt@perf@unprivileged-single-ctx-counters.html

  * igt@perf_pmu@rc6@other-idle-gt0:
    - shard-dg2:          NOTRUN -> [SKIP][270] ([i915#8516])
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-4/igt@perf_pmu@rc6@other-idle-gt0.html
    - shard-rkl:          NOTRUN -> [SKIP][271] ([i915#8516])
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-3/igt@perf_pmu@rc6@other-idle-gt0.html

  * igt@prime_vgem@basic-read:
    - shard-dg2:          NOTRUN -> [SKIP][272] ([i915#3291] / [i915#3708])
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-2/igt@prime_vgem@basic-read.html
    - shard-rkl:          NOTRUN -> [SKIP][273] ([i915#3291] / [i915#3708])
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-5/igt@prime_vgem@basic-read.html

  * igt@prime_vgem@fence-flip-hang:
    - shard-dg1:          NOTRUN -> [SKIP][274] ([i915#3708])
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-18/igt@prime_vgem@fence-flip-hang.html

  * igt@prime_vgem@fence-read-hang:
    - shard-dg2:          NOTRUN -> [SKIP][275] ([i915#3708])
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-6/igt@prime_vgem@fence-read-hang.html

  * igt@sriov_basic@enable-vfs-autoprobe-on:
    - shard-dg2:          NOTRUN -> [SKIP][276] ([i915#9917])
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-3/igt@sriov_basic@enable-vfs-autoprobe-on.html

  * igt@syncobj_wait@invalid-wait-zero-handles:
    - shard-dg1:          NOTRUN -> [FAIL][277] ([i915#9779])
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-14/igt@syncobj_wait@invalid-wait-zero-handles.html
    - shard-glk:          NOTRUN -> [FAIL][278] ([i915#9779])
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-glk9/igt@syncobj_wait@invalid-wait-zero-handles.html

  * igt@v3d/v3d_job_submission@array-job-submission:
    - shard-dg2:          NOTRUN -> [SKIP][279] ([i915#2575]) +4 other tests skip
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-8/igt@v3d/v3d_job_submission@array-job-submission.html

  * igt@v3d/v3d_perfmon@get-values-invalid-perfmon:
    - shard-dg1:          NOTRUN -> [SKIP][280] ([i915#2575]) +13 other tests skip
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-18/igt@v3d/v3d_perfmon@get-values-invalid-perfmon.html

  * igt@v3d/v3d_submit_csd@multi-and-single-sync:
    - shard-mtlp:         NOTRUN -> [SKIP][281] ([i915#2575]) +4 other tests skip
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-3/igt@v3d/v3d_submit_csd@multi-and-single-sync.html

  * igt@vc4/vc4_mmap@mmap-bo:
    - shard-dg1:          NOTRUN -> [SKIP][282] ([i915#7711]) +6 other tests skip
   [282]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@vc4/vc4_mmap@mmap-bo.html

  * igt@vc4/vc4_perfmon@get-values-invalid-pointer:
    - shard-tglu:         NOTRUN -> [SKIP][283] ([i915#2575]) +11 other tests skip
   [283]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-9/igt@vc4/vc4_perfmon@get-values-invalid-pointer.html
    - shard-mtlp:         NOTRUN -> [SKIP][284] ([i915#7711]) +1 other test skip
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-1/igt@vc4/vc4_perfmon@get-values-invalid-pointer.html

  * igt@vc4/vc4_purgeable_bo@mark-unpurgeable-check-retained:
    - shard-dg2:          NOTRUN -> [SKIP][285] ([i915#7711]) +3 other tests skip
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-3/igt@vc4/vc4_purgeable_bo@mark-unpurgeable-check-retained.html

  * igt@vc4/vc4_wait_seqno@bad-seqno-1ns:
    - shard-rkl:          NOTRUN -> [SKIP][286] ([i915#7711]) +10 other tests skip
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-5/igt@vc4/vc4_wait_seqno@bad-seqno-1ns.html

  
#### Possible fixes ####

  * igt@drm_read@short-buffer-block:
    - shard-dg1:          [DMESG-WARN][287] ([i915#4423]) -> [PASS][288]
   [287]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg1-13/igt@drm_read@short-buffer-block.html
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@drm_read@short-buffer-block.html

  * igt@gem_eio@unwedge-stress:
    - shard-dg1:          [FAIL][289] ([i915#5784]) -> [PASS][290]
   [289]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg1-17/igt@gem_eio@unwedge-stress.html
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@gem_eio@unwedge-stress.html

  * igt@gem_exec_fair@basic-deadline:
    - shard-rkl:          [FAIL][291] ([i915#2846]) -> [PASS][292]
   [291]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-rkl-4/igt@gem_exec_fair@basic-deadline.html
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-1/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_lmem_swapping@heavy-verify-random@lmem0:
    - shard-dg2:          [FAIL][293] ([i915#10378]) -> [PASS][294]
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg2-2/igt@gem_lmem_swapping@heavy-verify-random@lmem0.html
   [294]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-11/igt@gem_lmem_swapping@heavy-verify-random@lmem0.html

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-tglu:         [INCOMPLETE][295] ([i915#10047] / [i915#9820]) -> [PASS][296]
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-tglu-7/igt@i915_module_load@reload-with-fault-injection.html
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-4/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_pm_rpm@system-suspend:
    - shard-rkl:          [FAIL][297] ([i915#11279]) -> [PASS][298]
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-rkl-6/igt@i915_pm_rpm@system-suspend.html
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-4/igt@i915_pm_rpm@system-suspend.html

  * igt@i915_pm_rps@waitboost:
    - shard-dg2:          [FAIL][299] ([i915#11295]) -> [PASS][300]
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg2-2/igt@i915_pm_rps@waitboost.html
   [300]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-6/igt@i915_pm_rps@waitboost.html
    - shard-dg1:          [FAIL][301] ([i915#11295]) -> [PASS][302]
   [301]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg1-16/igt@i915_pm_rps@waitboost.html
   [302]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@i915_pm_rps@waitboost.html

  * igt@i915_suspend@forcewake:
    - shard-rkl:          [FAIL][303] ([i915#10031] / [i915#11279]) -> [PASS][304]
   [303]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-rkl-6/igt@i915_suspend@forcewake.html
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-6/igt@i915_suspend@forcewake.html

  * igt@kms_cursor_legacy@torture-bo@pipe-a:
    - shard-snb:          [DMESG-WARN][305] ([i915#10166]) -> [PASS][306]
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-snb2/igt@kms_cursor_legacy@torture-bo@pipe-a.html
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-snb5/igt@kms_cursor_legacy@torture-bo@pipe-a.html

  * igt@kms_flip@wf_vblank-ts-check@a-edp1:
    - shard-mtlp:         [INCOMPLETE][307] -> [PASS][308]
   [307]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-mtlp-2/igt@kms_flip@wf_vblank-ts-check@a-edp1.html
   [308]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-6/igt@kms_flip@wf_vblank-ts-check@a-edp1.html

  * igt@kms_pm_rpm@modeset-lpsp-stress:
    - shard-rkl:          [SKIP][309] ([i915#9519]) -> [PASS][310]
   [309]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-rkl-1/igt@kms_pm_rpm@modeset-lpsp-stress.html
   [310]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-4/igt@kms_pm_rpm@modeset-lpsp-stress.html

  * igt@kms_pm_rpm@modeset-lpsp-stress-no-wait:
    - shard-dg2:          [SKIP][311] ([i915#9519]) -> [PASS][312]
   [311]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg2-2/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
   [312]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-8/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1:
    - shard-snb:          [FAIL][313] ([i915#9196]) -> [PASS][314] +1 other test pass
   [313]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-snb7/igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1.html
   [314]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-snb2/igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-c-edp-1:
    - shard-mtlp:         [FAIL][315] ([i915#9196]) -> [PASS][316]
   [315]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-mtlp-4/igt@kms_universal_plane@cursor-fb-leak@pipe-c-edp-1.html
   [316]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-mtlp-3/igt@kms_universal_plane@cursor-fb-leak@pipe-c-edp-1.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-1:
    - shard-tglu:         [FAIL][317] ([i915#9196]) -> [PASS][318]
   [317]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-tglu-6/igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-1.html
   [318]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-tglu-9/igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-1.html

  * igt@perf_pmu@busy-double-start@vecs1:
    - shard-dg2:          [FAIL][319] ([i915#4349]) -> [PASS][320] +3 other tests pass
   [319]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg2-5/igt@perf_pmu@busy-double-start@vecs1.html
   [320]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-6/igt@perf_pmu@busy-double-start@vecs1.html

  
#### Warnings ####

  * igt@device_reset@unbind-reset-rebind:
    - shard-dg1:          [INCOMPLETE][321] ([i915#1982] / [i915#9408]) -> [INCOMPLETE][322] ([i915#9408])
   [321]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg1-16/igt@device_reset@unbind-reset-rebind.html
   [322]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-15/igt@device_reset@unbind-reset-rebind.html

  * igt@gem_ctx_isolation@preservation-s3@rcs0:
    - shard-dg2:          [FAIL][323] ([i915#10086] / [i915#11279]) -> [FAIL][324] ([i915#10086])
   [323]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg2-5/igt@gem_ctx_isolation@preservation-s3@rcs0.html
   [324]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-2/igt@gem_ctx_isolation@preservation-s3@rcs0.html

  * igt@gem_ctx_isolation@preservation-s3@vecs1:
    - shard-dg2:          [FAIL][325] ([i915#10086]) -> [FAIL][326] ([i915#10086] / [i915#11279])
   [325]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg2-5/igt@gem_ctx_isolation@preservation-s3@vecs1.html
   [326]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-2/igt@gem_ctx_isolation@preservation-s3@vecs1.html

  * igt@gem_workarounds@suspend-resume:
    - shard-dg2:          [FAIL][327] ([i915#10177] / [i915#11279]) -> [FAIL][328] ([i915#10177])
   [327]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg2-10/igt@gem_workarounds@suspend-resume.html
   [328]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-1/igt@gem_workarounds@suspend-resume.html

  * igt@i915_suspend@basic-s3-without-i915:
    - shard-dg2:          [FAIL][329] ([i915#10031]) -> [FAIL][330] ([i915#10031] / [i915#11279])
   [329]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg2-5/igt@i915_suspend@basic-s3-without-i915.html
   [330]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-1/igt@i915_suspend@basic-s3-without-i915.html

  * igt@kms_big_fb@yf-tiled-64bpp-rotate-90:
    - shard-dg1:          [SKIP][331] ([i915#4423] / [i915#4538]) -> [SKIP][332] ([i915#4538])
   [331]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg1-13/igt@kms_big_fb@yf-tiled-64bpp-rotate-90.html
   [332]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-17/igt@kms_big_fb@yf-tiled-64bpp-rotate-90.html

  * igt@kms_content_protection@mei-interface:
    - shard-dg1:          [SKIP][333] ([i915#9433]) -> [SKIP][334] ([i915#9424])
   [333]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg1-13/igt@kms_content_protection@mei-interface.html
   [334]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@kms_content_protection@mei-interface.html

  * igt@kms_cursor_crc@cursor-suspend@pipe-a-hdmi-a-4:
    - shard-dg1:          [FAIL][335] ([i915#11298]) -> [FAIL][336] ([i915#11279] / [i915#11298])
   [335]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg1-17/igt@kms_cursor_crc@cursor-suspend@pipe-a-hdmi-a-4.html
   [336]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-18/igt@kms_cursor_crc@cursor-suspend@pipe-a-hdmi-a-4.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
    - shard-dg2:          [FAIL][337] ([i915#11280]) -> [FAIL][338] ([i915#11279] / [i915#11280])
   [337]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg2-5/igt@kms_frontbuffer_tracking@fbc-suspend.html
   [338]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-1/igt@kms_frontbuffer_tracking@fbc-suspend.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt:
    - shard-dg2:          [SKIP][339] ([i915#10433] / [i915#3458]) -> [SKIP][340] ([i915#3458]) +2 other tests skip
   [339]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt.html
   [340]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move:
    - shard-dg2:          [SKIP][341] ([i915#3458]) -> [SKIP][342] ([i915#10433] / [i915#3458]) +1 other test skip
   [341]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg2-5/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move.html
   [342]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move.html

  * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-hdmi-a-4:
    - shard-dg1:          [FAIL][343] ([i915#11274] / [i915#11279]) -> [FAIL][344] ([i915#11274])
   [343]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg1-16/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-hdmi-a-4.html
   [344]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-16/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-hdmi-a-4.html

  * igt@kms_pm_dc@deep-pkgc:
    - shard-rkl:          [SKIP][345] ([i915#3361]) -> [SKIP][346] ([i915#3828])
   [345]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-rkl-6/igt@kms_pm_dc@deep-pkgc.html
   [346]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-rkl-5/igt@kms_pm_dc@deep-pkgc.html

  * igt@kms_pm_rpm@system-suspend-modeset:
    - shard-dg2:          [FAIL][347] ([i915#11273]) -> [FAIL][348] ([i915#11273] / [i915#11279])
   [347]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg2-8/igt@kms_pm_rpm@system-suspend-modeset.html
   [348]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-8/igt@kms_pm_rpm@system-suspend-modeset.html

  * igt@kms_psr@fbc-psr-primary-mmap-gtt:
    - shard-dg2:          [SKIP][349] ([i915#1072] / [i915#9673] / [i915#9732]) -> [SKIP][350] ([i915#1072] / [i915#9732]) +10 other tests skip
   [349]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg2-11/igt@kms_psr@fbc-psr-primary-mmap-gtt.html
   [350]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-1/igt@kms_psr@fbc-psr-primary-mmap-gtt.html

  * igt@kms_psr@fbc-psr2-primary-page-flip:
    - shard-dg2:          [SKIP][351] ([i915#1072] / [i915#9732]) -> [SKIP][352] ([i915#1072] / [i915#9673] / [i915#9732]) +1 other test skip
   [351]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg2-3/igt@kms_psr@fbc-psr2-primary-page-flip.html
   [352]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-11/igt@kms_psr@fbc-psr2-primary-page-flip.html

  * igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-4:
    - shard-dg1:          [FAIL][353] ([i915#10305]) -> [FAIL][354] ([i915#10305] / [i915#11279])
   [353]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg1-15/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-4.html
   [354]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg1-14/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-4.html

  * igt@perf@non-zero-reason@0-rcs0:
    - shard-dg2:          [FAIL][355] ([i915#9100]) -> [FAIL][356] ([i915#7484])
   [355]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14904/shard-dg2-1/igt@perf@non-zero-reason@0-rcs0.html
   [356]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_11239/shard-dg2-8/igt@perf@non-zero-reason@0-rcs0.html

  
  [i915#10031]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10031
  [i915#10047]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10047
  [i915#10086]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10086
  [i915#10166]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10166
  [i915#10177]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10177
  [i915#10278]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10278
  [i915#10305]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10305
  [i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
  [i915#10354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10354
  [i915#10378]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10378
  [i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
  [i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
  [i915#10545]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10545
  [i915#10656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10656
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078
  [i915#11139]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11139
  [i915#11269]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11269
  [i915#11273]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11273
  [i915#11274]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11274
  [i915#11275]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11275
  [i915#11279]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11279
  [i915#11280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11280
  [i915#11284]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11284
  [i915#11295]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11295
  [i915#11298]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11298
  [i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
  [i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
  [i915#1839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1839
  [i915#1982]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1982
  [i915#2065]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2065
  [i915#2122]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2122
  [i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
  [i915#2433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2433
  [i915#2434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2434
  [i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
  [i915#2575]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2575
  [i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
  [i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
  [i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
  [i915#2842]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2842
  [i915#2846]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2846
  [i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
  [i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
  [i915#3116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3116
  [i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299
  [i915#3359]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3359
  [i915#3361]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3361
  [i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
  [i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804
  [i915#3826]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3826
  [i915#3828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3828
  [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
  [i915#4235]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4235
  [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
  [i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349
  [i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
  [i915#4473]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4473
  [i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
  [i915#4537]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4537
  [i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
  [i915#4565]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4565
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#4771]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4771
  [i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
  [i915#4816]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4816
  [i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
  [i915#4854]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4854
  [i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
  [i915#4881]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4881
  [i915#4885]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4885
  [i915#4936]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4936
  [i915#4958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4958
  [i915#5030]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5030
  [i915#5107]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5107
  [i915#5176]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5176
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#5235]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5235
  [i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
  [i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#5439]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5439
  [i915#5465]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5465
  [i915#5493]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5493
  [i915#5784]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5784
  [i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
  [i915#6118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6118
  [i915#6227]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6227
  [i915#6230]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6230
  [i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
  [i915#6334]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6334
  [i915#6335]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6335
  [i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/658
  [i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880
  [i915#6944]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6944
  [i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118
  [i915#7387]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7387
  [i915#7484]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7484
  [i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
  [i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
  [i915#7711]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7711
  [i915#7742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7742
  [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
  [i915#7862]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7862
  [i915#7975]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7975
  [i915#7984]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7984
  [i915#8213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8213
  [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
  [i915#8381]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8381
  [i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399
  [i915#8414]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8414
  [i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428
  [i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516
  [i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555
  [i915#8562]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8562
  [i915#8588]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8588
  [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
  [i915#8814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8814
  [i915#8925]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8925
  [i915#9041]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9041
  [i915#9100]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9100
  [i915#9196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9196
  [i915#9227]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9227
  [i915#9311]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9311
  [i915#9318]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9318
  [i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
  [i915#9337]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9337
  [i915#9408]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9408
  [i915#9412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9412
  [i915#9423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9423
  [i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424
  [i915#9433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9433
  [i915#9519]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9519
  [i915#9606]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9606
  [i915#9673]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9673
  [i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683
  [i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
  [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
  [i915#9723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9723
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
  [i915#9779]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9779
  [i915#9809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9809
  [i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
  [i915#9820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9820
  [i915#9849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9849
  [i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
  [i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7880 -> IGTPW_11239
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_14904: 2bea08bd31298d60d416b2a6ed346bb53dd28037 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_11239: e1c92a280ba09388fabf5484d0f6f276fa136f44 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_7880: 73618605b4370cf902267aaf1d25666ff5e26112 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

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

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

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

end of thread, other threads:[~2024-06-08 15:04 UTC | newest]

Thread overview: 33+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-07 20:08 [PATCH i-g-t v3 00/27] Intel Xe OA IGT's Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 01/27] lib/xe/oa: Import OA metric generation files from i915 Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 02/27] lib/xe/oa: Add LNL metric guids Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 03/27] lib/xe/oa: Add OA LNL metrics (oa_lnl.xml) Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 04/27] lib/xe/oa: Add truncated legacy Xe1 metrics XML's Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 05/27] lib/xe/oa: Generate LNL metrics/registers files Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 06/27] lib/xe/oa: Switch generated files to Xe namespace Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 07/27] drm-uapi/xe: Sync with Perf/OA changes Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 08/27] lib/xe: Complete xe_oa lib functionality Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 09/27] tests/intel/xe_query: Add OA units query test Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 10/27] tests/intel/xe_oa: Add first tests Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 11/27] tests/intel/xe_oa: Add some negative tests Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 12/27] tests/intel/xe_oa: Add "oa-formats" subtest Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 13/27] tests/intel/xe_oa: Add oa exponent tests Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 14/27] tests/intel/xe_oa: buffer-fill, non-zero-reason, enable-disable Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 15/27] tests/intel/xe_oa: blocking and polling tests Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 16/27] tests/intel/xe_oa: OAR/OAC tests Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 17/27] tests/intel/xe_oa: Exclusive/concurrent access, rc6 and stress open close Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 18/27] tests/intel/xe_oa: add remove OA config tests Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 19/27] tests/intel/xe_oa: OA buffer mmap tests Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 20/27] tests/intel/xe_oa: Register whitelisting and MMIO trigger tests Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 21/27] lib/xe/oa: Add xe_oa_data_reader to IGT lib Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 22/27] tools/xe-perf: Add xe_perf_recorder Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 23/27] tools/xe-perf: xe_perf_reader, xe_perf_control and xe_perf_configs Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 24/27] xe/oa: Fix invalid escape warnings Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 25/27] xe/oa/mdapi-xml-convert: Add support for 576B_PEC64LL format Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 26/27] xe/oa: Regenerate oa-lnl.xml now parsing all counters Ashutosh Dixit
2024-06-07 20:08 ` [PATCH i-g-t 27/27] xe/oa/oa-metricset-codegen: Fix XE_OA_FORMAT_PEC64u64 offsets Ashutosh Dixit
2024-06-07 22:48 ` ✗ GitLab.Pipeline: warning for Intel Xe OA IGT's (rev3) Patchwork
2024-06-07 23:22 ` ✓ Fi.CI.BAT: success " Patchwork
2024-06-07 23:23 ` ✗ CI.xeBAT: failure " Patchwork
2024-06-08 14:10 ` ✗ CI.xeFULL: " Patchwork
2024-06-08 15:04 ` ✗ Fi.CI.IGT: " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox