public inbox for igt-dev@lists.freedesktop.org
 help / color / mirror / Atom feed
* [PATCH 0/3] lib/genxml: Introduce Mesa genxml infrastructure to IGT
@ 2026-04-07 13:26 Jan Maslak
  2026-04-07 13:26 ` [PATCH 1/3] lib/genxml: Import genxml definitions and generators from Mesa Jan Maslak
                   ` (6 more replies)
  0 siblings, 7 replies; 13+ messages in thread
From: Jan Maslak @ 2026-04-07 13:26 UTC (permalink / raw)
  To: igt-dev; +Cc: zbigniew.kempczynski, Jan Maslak

This series brings Mesa's hardware XML command/state definitions and
gen_pack_header.py code generator into IGT, adds a new IGT-written
batch buffer decoder (gen_decode_header.py), and converts rendercopy_gen9
to use the generated pack headers.

Patch 1 imports the XML definitions and generators. gen_pack_header.py
is taken from Mesa with C90 compliance fixes and a new baseline
deduplication mechanism - when a platform's command layout matches any
older generation exactly, the item is omitted entirely.
gen_decode_header.py is a new IGT-only file that generates per-platform
decoders for instructions, structs, and registers.

Patch 2 converts rendercopy_gen9.c to use the generated pack headers,
replacing hand-written struct assignments and intel_bb_out() calls with
igt_genxml_emit and igt_genxml_pack_state.

Patch 3 adds an opt-in annotated batch dump to intel_bb_dump(): when
IGT_BB_ANNOTATE=1 is set a companion .annotated file is written alongside
the raw hex dump, decoding each command's field names and values.

Tested on LNL and DG2 (xe_render_copy render-square, render-full;
xe_intel_bb render) and TGL (gem_render_copy_redux; api_intel_bb).

Signed-off-by: Jan Maslak <jan.maslak@intel.com>

Jan Maslak (3):
  lib/genxml: Import genxml definitions and generators from Mesa
  lib/rendercopy: Convert rendercopy_gen9 to use genxml pack headers
  lib: Add genxml annotated batch buffer decode

 lib/genxml/gen110.xml           | 3358 +++++++++++++++++++++++++
 lib/genxml/gen120.xml           | 2432 ++++++++++++++++++
 lib/genxml/gen125.xml           | 2628 +++++++++++++++++++
 lib/genxml/gen40.xml            | 1012 ++++++++
 lib/genxml/gen45.xml            |  507 ++++
 lib/genxml/gen50.xml            |  648 +++++
 lib/genxml/gen60.xml            | 2606 +++++++++++++++++++
 lib/genxml/gen70.xml            | 3067 ++++++++++++++++++++++
 lib/genxml/gen75.xml            | 2424 ++++++++++++++++++
 lib/genxml/gen80.xml            | 2993 ++++++++++++++++++++++
 lib/genxml/gen90.xml            | 4192 +++++++++++++++++++++++++++++++
 lib/genxml/gen_decode_header.py |  487 ++++
 lib/genxml/gen_pack_header.py   |  799 ++++++
 lib/genxml/igt_genxml.h         |  112 +
 lib/genxml/igt_genxml_decode.h  |   60 +
 lib/genxml/igt_genxml_defs.h    |  335 +++
 lib/genxml/intel_genxml.py      |  553 ++++
 lib/genxml/util.py              |   39 +
 lib/genxml/xe2.xml              | 1969 +++++++++++++++
 lib/genxml/xe3.xml              |  816 ++++++
 lib/genxml/xe3p.xml             |    4 +
 lib/intel_batchbuffer.c         |   32 +-
 lib/meson.build                 |   65 +-
 lib/rendercopy_gen9.c           | 1117 ++++----
 24 files changed, 31687 insertions(+), 568 deletions(-)
 create mode 100644 lib/genxml/gen110.xml
 create mode 100644 lib/genxml/gen120.xml
 create mode 100644 lib/genxml/gen125.xml
 create mode 100644 lib/genxml/gen40.xml
 create mode 100644 lib/genxml/gen45.xml
 create mode 100644 lib/genxml/gen50.xml
 create mode 100644 lib/genxml/gen60.xml
 create mode 100644 lib/genxml/gen70.xml
 create mode 100644 lib/genxml/gen75.xml
 create mode 100644 lib/genxml/gen80.xml
 create mode 100644 lib/genxml/gen90.xml
 create mode 100644 lib/genxml/gen_decode_header.py
 create mode 100644 lib/genxml/gen_pack_header.py
 create mode 100644 lib/genxml/igt_genxml.h
 create mode 100644 lib/genxml/igt_genxml_decode.h
 create mode 100644 lib/genxml/igt_genxml_defs.h
 create mode 100644 lib/genxml/intel_genxml.py
 create mode 100644 lib/genxml/util.py
 create mode 100644 lib/genxml/xe2.xml
 create mode 100644 lib/genxml/xe3.xml
 create mode 100644 lib/genxml/xe3p.xml

-- 
2.34.1


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

* [PATCH 1/3] lib/genxml: Import genxml definitions and generators from Mesa
  2026-04-07 13:26 [PATCH 0/3] lib/genxml: Introduce Mesa genxml infrastructure to IGT Jan Maslak
@ 2026-04-07 13:26 ` Jan Maslak
  2026-04-08 15:44   ` Kamil Konieczny
  2026-04-07 13:26 ` [PATCH 2/3] lib/rendercopy: Convert rendercopy_gen9 to use genxml pack headers Jan Maslak
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 13+ messages in thread
From: Jan Maslak @ 2026-04-07 13:26 UTC (permalink / raw)
  To: igt-dev; +Cc: zbigniew.kempczynski, Jan Maslak

Import the hardware command/state XML definitions, gen_pack_header.py, and
intel_genxml.py from Mesa (MIT-licensed, Mesa commit 3a62dc0218d3).  Add a
new gen_decode_header.py written for IGT.  The generators produce per-platform
*_pack.h and *_decode.h headers at build time into the build directory - no
generated files are committed to the source tree.  Meson custom_target rules
build headers for gen9 through xe3p covering the render, blitter, and compute
engines.

gen_pack_header.py produces type-safe pack and emit functions for every
command, struct, and register in the XML.  Callers fill a typed struct and
call the pack function; the generator handles all bit-field packing.

gen_decode_header.py (new, IGT-only) produces decoders that identify a command
from its opcode and print each decoded field's name and value.  Also decodes
structs and registers embedded within commands.

IGT-specific changes to gen_pack_header.py over the upstream Mesa version:

 - C90 compliance: block-scope each dword's local variable declarations in the
   generated pack functions.
 - Baseline deduplication: when a platform's layout exactly matches any older
   generation, the item is omitted entirely - no #define aliases are emitted.
   A comment names the oldest generation that first defined that layout so
   the definition can be found in one grep.  Upstream Mesa has no
   deduplication; this keeps the generated headers free of noise as the
   number of platform variants grows.

See individual file headers for per-file copyright notices.

Signed-off-by: Jan Maslak <jan.maslak@intel.com>
---
 lib/genxml/gen110.xml           | 3358 +++++++++++++++++++++++++
 lib/genxml/gen120.xml           | 2432 ++++++++++++++++++
 lib/genxml/gen125.xml           | 2628 +++++++++++++++++++
 lib/genxml/gen40.xml            | 1012 ++++++++
 lib/genxml/gen45.xml            |  507 ++++
 lib/genxml/gen50.xml            |  648 +++++
 lib/genxml/gen60.xml            | 2606 +++++++++++++++++++
 lib/genxml/gen70.xml            | 3067 ++++++++++++++++++++++
 lib/genxml/gen75.xml            | 2424 ++++++++++++++++++
 lib/genxml/gen80.xml            | 2993 ++++++++++++++++++++++
 lib/genxml/gen90.xml            | 4192 +++++++++++++++++++++++++++++++
 lib/genxml/gen_decode_header.py |  487 ++++
 lib/genxml/gen_pack_header.py   |  799 ++++++
 lib/genxml/igt_genxml.h         |  112 +
 lib/genxml/igt_genxml_decode.h  |   60 +
 lib/genxml/igt_genxml_defs.h    |  335 +++
 lib/genxml/intel_genxml.py      |  553 ++++
 lib/genxml/util.py              |   39 +
 lib/genxml/xe2.xml              | 1969 +++++++++++++++
 lib/genxml/xe3.xml              |  816 ++++++
 lib/genxml/xe3p.xml             |    4 +
 lib/meson.build                 |   65 +-
 22 files changed, 31105 insertions(+), 1 deletion(-)
 create mode 100644 lib/genxml/gen110.xml
 create mode 100644 lib/genxml/gen120.xml
 create mode 100644 lib/genxml/gen125.xml
 create mode 100644 lib/genxml/gen40.xml
 create mode 100644 lib/genxml/gen45.xml
 create mode 100644 lib/genxml/gen50.xml
 create mode 100644 lib/genxml/gen60.xml
 create mode 100644 lib/genxml/gen70.xml
 create mode 100644 lib/genxml/gen75.xml
 create mode 100644 lib/genxml/gen80.xml
 create mode 100644 lib/genxml/gen90.xml
 create mode 100644 lib/genxml/gen_decode_header.py
 create mode 100644 lib/genxml/gen_pack_header.py
 create mode 100644 lib/genxml/igt_genxml.h
 create mode 100644 lib/genxml/igt_genxml_decode.h
 create mode 100644 lib/genxml/igt_genxml_defs.h
 create mode 100644 lib/genxml/intel_genxml.py
 create mode 100644 lib/genxml/util.py
 create mode 100644 lib/genxml/xe2.xml
 create mode 100644 lib/genxml/xe3.xml
 create mode 100644 lib/genxml/xe3p.xml

diff --git a/lib/genxml/gen110.xml b/lib/genxml/gen110.xml
new file mode 100644
index 000000000..124f6af24
--- /dev/null
+++ b/lib/genxml/gen110.xml
@@ -0,0 +1,3358 @@
+<?xml version='1.0' encoding='utf-8'?>
+<genxml name="ICL" gen="11">
+  <import name="gen90.xml">
+    <exclude name="ACTHD_UDW" />
+    <exclude name="BCS_ACTHD_UDW" />
+    <exclude name="BCS_RING_BUFFER_CTL" />
+    <exclude name="COMMON_SLICE_CHICKEN2" />
+    <exclude name="FAULT_REG" />
+    <exclude name="GFX_ARB_ERROR_RPT" />
+    <exclude name="GPGPU_CSR_BASE_ADDRESS" />
+    <exclude name="MFX_MPEG_TS_CONTROL command" />
+    <exclude name="MI_LOAD_URB_MEM" />
+    <exclude name="MI_STORE_URB_MEM" />
+    <exclude name="MI_URB_ATOMIC_ALLOC" />
+    <exclude name="RCS_RING_BUFFER_CTL" />
+    <exclude name="STATE_PREFETCH" />
+    <exclude name="VCS2_RING_BUFFER_CTL" />
+    <exclude name="VCS_ACTHD_UDW" />
+    <exclude name="VCS_RING_BUFFER_CTL" />
+    <exclude name="VECS_ACTHD_UDW" />
+    <exclude name="VECS_INSTDONE" />
+    <exclude name="VECS_RING_BUFFER_CTL" />
+  </import>
+  <enum name="Texture Coordinate Mode" prefix="TCM">
+    <value name="WRAP" value="0" />
+    <value name="MIRROR" value="1" />
+    <value name="CLAMP" value="2" />
+    <value name="CUBE" value="3" />
+    <value name="CLAMP_BORDER" value="4" />
+    <value name="MIRROR_ONCE" value="5" />
+    <value name="HALF_BORDER" value="6" />
+    <value name="MIRROR_101" value="7" />
+  </enum>
+  <struct name="CHROMA_FILTER_COEFFICIENTS_ARRAY" length="2">
+    <field name="Table 1X Filter Coefficient[[n],2]" dword="0" bits="7:0" type="s1.6" />
+    <field name="Table 1Y Filter Coefficient[[n],2]" dword="0" bits="15:8" type="s1.6" />
+    <field name="Table 1X Filter Coefficient[[n],3]" dword="0" bits="23:16" type="s1.6" />
+    <field name="Table 1Y Filter Coefficient[[n],3]" dword="0" bits="31:24" type="s1.6" />
+    <field name="Table 1X Filter Coefficient[[n],4]" dword="1" bits="7:0" type="s1.6" />
+    <field name="Table 1Y Filter Coefficient[[n],4]" dword="1" bits="15:8" type="s1.6" />
+    <field name="Table 1X Filter Coefficient[[n],5]" dword="1" bits="23:16" type="s1.6" />
+    <field name="Table 1Y Filter Coefficient[[n],5]" dword="1" bits="31:24" type="s1.6" />
+  </struct>
+  <struct name="CLEAR_COLOR" length="8">
+    <field name="Raw Clear Color Red" dword="0" bits="31:0" type="int" />
+    <field name="Raw Clear Color Green" dword="1" bits="31:0" type="int" />
+    <field name="Raw Clear Color Blue" dword="2" bits="31:0" type="int" />
+    <field name="Raw Clear Color Alpha" dword="3" bits="31:0" type="int" />
+    <field name="Converted Clear Value Hi/Low" dword="4" bits="63:0" type="uint" />
+  </struct>
+  <struct name="HCP_TILE_POSITION_IN_CTB_MSB" length="2">
+    <group count="22" dword="0" size="2">
+      <field name="Ctb Row Position of Tile Column" dword="0" bits="1:0" type="uint" />
+    </group>
+  </struct>
+  <struct name="HCP_WEIGHTOFFSET_CHROMA_EXT_ENTRY" length="1">
+    <field name="Chroma Offset LX[0] MSByte [i]" dword="0" bits="7:0" type="uint" />
+    <field name="Chroma Offset LX[0] MSByte [i+1]" dword="0" bits="15:8" type="uint" />
+    <field name="Chroma Offset LX[1] MSByte [i]" dword="0" bits="23:16" type="uint" />
+    <field name="Chroma Offset LX[1] MSByte [i+1]" dword="0" bits="31:24" type="uint" />
+  </struct>
+  <struct name="HCP_WEIGHTOFFSET_LUMA_ENTRY" length="1">
+    <field name="Delta Luma Weight LX" dword="0" bits="7:0" type="uint" />
+    <field name="Luma Offset LX" dword="0" bits="15:8" type="uint" />
+    <field name="Luma Offset LX MSByte" dword="0" bits="31:24" type="uint" />
+  </struct>
+  <struct name="IMAGE_STATE_COST" length="2">
+    <field name="MV 0 Cost" dword="0" bits="7:0" type="uint" />
+    <field name="MV 1 Cost" dword="0" bits="15:8" type="uint" />
+    <field name="MV 2 Cost" dword="0" bits="23:16" type="uint" />
+    <field name="MV 3 Cost" dword="0" bits="31:24" type="uint" />
+    <field name="MV 4 Cost" dword="1" bits="7:0" type="uint" />
+    <field name="MV 5 Cost" dword="1" bits="15:8" type="uint" />
+    <field name="MV 6 Cost" dword="1" bits="23:16" type="uint" />
+    <field name="MV 7 Cost" dword="1" bits="31:24" type="uint" />
+  </struct>
+  <struct name="INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT" length="3">
+    <field name="MB Error Concealment P Slice Weight Prediction Disable" dword="0" bits="0:0" type="bool" />
+    <field name="MB Error Concealment P Slice Motion Vectors Override Disable" dword="0" bits="1:1" type="bool" />
+    <field name="MB Error Concealment B Spatial Weight Prediction Disable" dword="0" bits="3:3" type="bool" />
+    <field name="MB Error Concealment B Spatial Motion Vectors Override Disable" dword="0" bits="4:4" type="bool" />
+    <field name="MB Error Concealment B Spatial Prediction Mode" dword="0" bits="7:6" type="uint" />
+    <field name="MB Header Error Handling" dword="0" bits="8:8" type="bool" />
+    <field name="Entropy Error Handling" dword="0" bits="10:10" type="bool" />
+    <field name="MPR Error Handling" dword="0" bits="12:12" type="bool" />
+    <field name="BSD Premature Complete Error Handling" dword="0" bits="14:14" type="bool" />
+    <field name="Concealment Picture ID" dword="0" bits="21:16" type="uint" />
+    <field name="MB Error Concealment B Temporal Weight Prediction Disable" dword="0" bits="24:24" type="bool" />
+    <field name="MB Error Concealment B Temporal Motion Vectors Override Enable" dword="0" bits="25:25" type="bool" />
+    <field name="MB Error Concealment B Temporal Prediction Mode" dword="0" bits="28:27" type="uint" />
+    <field name="Intra PredMode (4x4/8x8 Luma) Error Control" dword="0" bits="29:29" type="bool" />
+    <field name="Init Current MB Number" dword="0" bits="30:30" type="bool" />
+    <field name="Concealment Method" dword="0" bits="31:31" type="uint" />
+    <field name="First MB Bit Offset" dword="1" bits="2:0" type="uint" />
+    <field name="Last Slice" dword="1" bits="3:3" type="bool" />
+    <field name="Emulation Prevention Byte Present" dword="1" bits="4:4" type="bool" />
+    <field name="Fix Prev MB Skipped" dword="1" bits="7:7" type="bool" />
+    <field name="First MB Byte Offset of Slice Data or Slice Header" dword="1" bits="31:16" type="uint" />
+    <field name="Intra Prediction Error Control" dword="2" bits="0:0" type="bool" />
+    <field name="Intra 8x8/4x4 Prediction Error Concealment Control" dword="2" bits="1:1" type="bool" />
+    <field name="B Slice Temporal Inter Concealment Mode" dword="2" bits="6:4" type="uint" />
+    <field name="B Slice Spatial Inter Concealment Mode" dword="2" bits="10:8" type="uint" />
+    <field name="B Slice Inter Direct Type Concealment Mode" dword="2" bits="13:12" type="uint" />
+    <field name="B Slice Concealment Mode" dword="2" bits="15:15" type="uint">
+      <value name="Intra Concealment" value="1" />
+      <value name="Inter Concealment" value="0" />
+    </field>
+    <field name="P Slice Inter Concealment Mode" dword="2" bits="18:16" type="uint" />
+    <field name="P Slice Concealment Mode" dword="2" bits="23:23" type="uint">
+      <value name="Intra Concealment" value="1" />
+      <value name="Inter Concealment" value="0" />
+    </field>
+    <field name="Concealment Reference Picture + Field Bit" dword="2" bits="29:24" type="uint" />
+    <field name="I Slice Concealment Mode" dword="2" bits="31:31" type="uint">
+      <value name="Intra Concealment" value="1" />
+      <value name="Inter Concealment" value="0" />
+    </field>
+  </struct>
+  <struct name="LUMA_FILTER_COEFFICIENTS_ARRAY" length="4">
+    <field name="Table 0X Filter Coefficient[[n],0]" dword="0" bits="7:0" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],0]" dword="0" bits="15:8" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],1]" dword="0" bits="23:16" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],1]" dword="0" bits="31:24" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],2]" dword="1" bits="7:0" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],2]" dword="1" bits="15:8" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],3]" dword="1" bits="23:16" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],3]" dword="1" bits="31:24" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],4]" dword="2" bits="7:0" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],4]" dword="2" bits="15:8" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],5]" dword="2" bits="23:16" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],5]" dword="2" bits="31:24" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],6]" dword="3" bits="7:0" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],6]" dword="3" bits="15:8" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],7]" dword="3" bits="23:16" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],7]" dword="3" bits="31:24" type="s1.6" />
+  </struct>
+  <struct name="RENDER_SURFACE_STATE" length="16">
+    <field name="Cube Face Enable - Positive Z" dword="0" bits="0:0" type="bool" />
+    <field name="Cube Face Enable - Negative Z" dword="0" bits="1:1" type="bool" />
+    <field name="Cube Face Enable - Positive Y" dword="0" bits="2:2" type="bool" />
+    <field name="Cube Face Enable - Negative Y" dword="0" bits="3:3" type="bool" />
+    <field name="Cube Face Enable - Positive X" dword="0" bits="4:4" type="bool" />
+    <field name="Cube Face Enable - Negative X" dword="0" bits="5:5" type="bool" />
+    <field name="Media Boundary Pixel Mode" dword="0" bits="7:6" type="uint">
+      <value name="NORMAL_MODE" value="0" />
+      <value name="PROGRESSIVE_FRAME" value="2" />
+      <value name="INTERLACED_FRAME" value="3" />
+    </field>
+    <field name="Render Cache Read Write Mode" dword="0" bits="8:8" type="uint">
+      <value name="Write-Only Cache" value="0" />
+      <value name="Read-Write Cache" value="1" />
+    </field>
+    <field name="Sampler L2 Bypass Mode Disable" dword="0" bits="9:9" type="bool" />
+    <field name="Vertical Line Stride Offset" dword="0" bits="10:10" type="uint" />
+    <field name="Vertical Line Stride" dword="0" bits="11:11" type="uint" />
+    <field name="Tile Mode" dword="0" bits="13:12" type="uint">
+      <value name="LINEAR" value="0" />
+      <value name="WMAJOR" value="1" />
+      <value name="XMAJOR" value="2" />
+      <value name="YMAJOR" value="3" />
+    </field>
+    <field name="Surface Horizontal Alignment" dword="0" bits="15:14" type="uint">
+      <value name="HALIGN_4" value="1" />
+      <value name="HALIGN_8" value="2" />
+      <value name="HALIGN_16" value="3" />
+    </field>
+    <field name="Surface Vertical Alignment" dword="0" bits="17:16" type="uint">
+      <value name="VALIGN_4" value="1" />
+      <value name="VALIGN_8" value="2" />
+      <value name="VALIGN_16" value="3" />
+    </field>
+    <field name="Surface Format" dword="0" bits="27:18" type="uint" />
+    <field name="Surface Array" dword="0" bits="28:28" type="bool" />
+    <field name="Surface Type" dword="0" bits="31:29" type="uint">
+      <value name="SURFTYPE_1D" value="0" />
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_3D" value="2" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_BUFFER" value="4" />
+      <value name="SURFTYPE_STRBUF" value="5" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface QPitch" dword="1" bits="14:0" type="uint" />
+    <field name="Base Mip Level" dword="1" bits="23:19" type="u4.1" />
+    <field name="MOCS" dword="1" bits="30:24" type="uint" nonzero="true" />
+    <field name="Enable Unorm Path In Color Pipe" dword="1" bits="31:31" type="bool" />
+    <field name="Width" dword="2" bits="13:0" type="uint" />
+    <field name="Height" dword="2" bits="29:16" type="uint" />
+    <field name="Surface Pitch" dword="3" bits="17:0" type="uint" />
+    <field name="Tile Address Mapping Mode" dword="3" bits="20:20" type="uint">
+      <value name="Gfx9" value="0" />
+      <value name="Gfx10+" value="1" />
+    </field>
+    <field name="Depth" dword="3" bits="31:21" type="uint" />
+    <field name="Multisample Position Palette Index" dword="4" bits="2:0" type="uint" />
+    <field name="Number of Multisamples" dword="4" bits="5:3" type="uint">
+      <value name="MULTISAMPLECOUNT_1" value="0" />
+      <value name="MULTISAMPLECOUNT_2" value="1" />
+      <value name="MULTISAMPLECOUNT_4" value="2" />
+      <value name="MULTISAMPLECOUNT_8" value="3" />
+      <value name="MULTISAMPLECOUNT_16" value="4" />
+    </field>
+    <field name="Multisampled Surface Storage Format" dword="4" bits="6:6" type="uint">
+      <value name="MSFMT_MSS" value="0" />
+      <value name="MSFMT_DEPTH_STENCIL" value="1" />
+    </field>
+    <field name="Render Target View Extent" dword="4" bits="17:7" type="uint" />
+    <field name="Minimum Array Element" dword="4" bits="28:18" type="uint" />
+    <field name="Render Target And Sample Unorm Rotation" dword="4" bits="30:29" type="uint">
+      <value name="0DEG" value="0" />
+      <value name="90DEG" value="1" />
+      <value name="180DEG" value="2" />
+      <value name="270DEG" value="3" />
+    </field>
+    <field name="MIP Count / LOD" dword="5" bits="3:0" type="uint" />
+    <field name="Surface Min LOD" dword="5" bits="7:4" type="uint" />
+    <field name="Mip Tail Start LOD" dword="5" bits="11:8" type="uint" />
+    <field name="Coherency Type" dword="5" bits="14:14" type="uint">
+      <value name="GPU coherent" value="0" />
+      <value name="IA coherent" value="1" />
+    </field>
+    <field name="Tiled Resource Mode" dword="5" bits="19:18" type="uint">
+      <value name="NONE" value="0" />
+      <value name="4KB" value="1" />
+      <value name="64KB" value="2" />
+      <value name="TILEYF" value="1" />
+      <value name="TILEYS" value="2" />
+    </field>
+    <field name="EWA Disable For Cube" dword="5" bits="20:20" type="bool" />
+    <field name="Y Offset" dword="5" bits="23:21" type="uint" />
+    <field name="X Offset" dword="5" bits="31:25" type="uint" />
+    <field name="Auxiliary Surface Mode" dword="6" bits="2:0" type="uint">
+      <value name="AUX_NONE" value="0" />
+      <value name="AUX_CCS_D" value="1" />
+      <value name="AUX_APPEND" value="2" />
+      <value name="AUX_HIZ" value="3" />
+      <value name="AUX_CCS_E" value="5" />
+    </field>
+    <field name="Y Offset for U or UV Plane" dword="6" bits="13:0" type="uint" />
+    <field name="Auxiliary Surface Pitch" dword="6" bits="11:3" type="uint" />
+    <field name="Auxiliary Surface QPitch" dword="6" bits="30:16" type="uint" />
+    <field name="X Offset for U or UV Plane" dword="6" bits="29:16" type="uint" />
+    <field name="Separate UV Plane Enable" dword="6" bits="31:31" type="bool" />
+    <field name="Resource Min LOD" dword="7" bits="11:0" type="u4.8" />
+    <field name="Shader Channel Select Alpha" dword="7" bits="18:16" type="Shader Channel Select" />
+    <field name="Shader Channel Select Blue" dword="7" bits="21:19" type="Shader Channel Select" />
+    <field name="Shader Channel Select Green" dword="7" bits="24:22" type="Shader Channel Select" />
+    <field name="Shader Channel Select Red" dword="7" bits="27:25" type="Shader Channel Select" />
+    <field name="Memory Compression Enable" dword="7" bits="30:30" type="bool" />
+    <field name="Memory Compression Mode" dword="7" bits="31:31" type="uint">
+      <value name="Horizontal" value="0" />
+      <value name="Vertical" value="1" />
+    </field>
+    <field name="Surface Base Address" dword="8" bits="63:0" type="address" />
+    <field name="Quilt Width" dword="10" bits="4:0" type="uint" />
+    <field name="Quilt Height" dword="10" bits="9:5" type="uint" />
+    <field name="Clear Value Address Enable" dword="10" bits="10:10" type="bool" />
+    <field name="Auxiliary Surface Base Address" dword="10" bits="63:12" type="address" />
+    <field name="Auxiliary Table Index for Media Compressed Surface" dword="10" bits="31:21" type="uint" />
+    <field name="Y Offset for V Plane" dword="11" bits="13:0" type="uint" />
+    <field name="X Offset for V Plane" dword="11" bits="29:16" type="uint" />
+    <field name="Red Clear Color" dword="12" bits="31:0" type="int" />
+    <field name="Clear Color Conversion Enable" dword="12" bits="5:5" type="uint" />
+    <field name="Clear Value Address" dword="12" bits="47:6" type="address" />
+    <field name="Green Clear Color" dword="13" bits="31:0" type="int" />
+    <field name="Blue Clear Color" dword="14" bits="31:0" type="int" />
+    <field name="Alpha Clear Color" dword="15" bits="31:0" type="int" />
+  </struct>
+  <struct name="SAMPLER_INDIRECT_STATE_BORDER_COLOR" length="4">
+    <field name="Border Color Red As S31" dword="0" bits="31:0" type="int" />
+    <field name="Border Color Red As U32" dword="0" bits="31:0" type="uint" />
+    <field name="Border Color Red As Float" dword="0" bits="31:0" type="float" />
+    <field name="Border Color Red As U8" dword="0" bits="7:0" type="uint" />
+    <field name="Border Color Green As U8" dword="0" bits="15:8" type="uint" />
+    <field name="Border Color Blue As U8" dword="0" bits="23:16" type="uint" />
+    <field name="Border Color Alpha As U8" dword="0" bits="31:24" type="uint" />
+    <field name="Border Color Green As S31" dword="1" bits="31:0" type="int" />
+    <field name="Border Color Green As U32" dword="1" bits="31:0" type="uint" />
+    <field name="Border Color Green As Float" dword="1" bits="31:0" type="float" />
+    <field name="Border Color Blue As S31" dword="2" bits="31:0" type="int" />
+    <field name="Border Color Blue As U32" dword="2" bits="31:0" type="uint" />
+    <field name="Border Color Blue As Float" dword="2" bits="31:0" type="float" />
+    <field name="Border Color Alpha As S31" dword="3" bits="31:0" type="int" />
+    <field name="Border Color Alpha As U32" dword="3" bits="31:0" type="uint" />
+    <field name="Border Color Alpha As Float" dword="3" bits="31:0" type="float" />
+  </struct>
+  <struct name="SAMPLER_STATE" length="4">
+    <field name="Anisotropic Algorithm" dword="0" bits="0:0" type="uint">
+      <value name="LEGACY" value="0" />
+      <value name="EWA Approximation" value="1" />
+    </field>
+    <field name="Texture LOD Bias" dword="0" bits="13:1" type="s4.8" />
+    <field name="Min Mode Filter" dword="0" bits="16:14" type="uint" prefix="MAPFILTER">
+      <value name="NEAREST" value="0" />
+      <value name="LINEAR" value="1" />
+      <value name="ANISOTROPIC" value="2" />
+      <value name="MONO" value="6" />
+    </field>
+    <field name="Mag Mode Filter" dword="0" bits="19:17" type="uint" prefix="MAPFILTER">
+      <value name="NEAREST" value="0" />
+      <value name="LINEAR" value="1" />
+      <value name="ANISOTROPIC" value="2" />
+      <value name="MONO" value="6" />
+    </field>
+    <field name="Mip Mode Filter" dword="0" bits="21:20" type="uint" prefix="MIPFILTER">
+      <value name="NONE" value="0" />
+      <value name="NEAREST" value="1" />
+      <value name="LINEAR" value="3" />
+    </field>
+    <field name="Coarse LOD Quality Mode" dword="0" bits="26:22" type="uint" />
+    <field name="LOD PreClamp Mode" dword="0" bits="28:27" type="uint" prefix="CLAMP_MODE">
+      <value name="NONE" value="0" />
+      <value name="OGL" value="2" />
+    </field>
+    <field name="Texture Border Color Mode" dword="0" bits="29:29" type="uint">
+      <value name="DX10/OGL" value="0" />
+      <value name="DX9" value="1" />
+    </field>
+    <field name="CPS LOD Compensation Enable" dword="0" bits="30:30" type="bool" />
+    <field name="Sampler Disable" dword="0" bits="31:31" type="bool" />
+    <field name="Cube Surface Control Mode" dword="1" bits="0:0" type="uint">
+      <value name="PROGRAMMED" value="0" />
+      <value name="OVERRIDE" value="1" />
+    </field>
+    <field name="Shadow Function" dword="1" bits="3:1" type="uint" prefix="PREFILTEROP">
+      <value name="ALWAYS" value="0" />
+      <value name="NEVER" value="1" />
+      <value name="LESS" value="2" />
+      <value name="EQUAL" value="3" />
+      <value name="LEQUAL" value="4" />
+      <value name="GREATER" value="5" />
+      <value name="NOTEQUAL" value="6" />
+      <value name="GEQUAL" value="7" />
+    </field>
+    <field name="ChromaKey Mode" dword="1" bits="4:4" type="uint">
+      <value name="KEYFILTER_KILL_ON_ANY_MATCH" value="0" />
+      <value name="KEYFILTER_REPLACE_BLACK" value="1" />
+    </field>
+    <field name="ChromaKey Index" dword="1" bits="6:5" type="uint" />
+    <field name="ChromaKey Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Max LOD" dword="1" bits="19:8" type="u4.8" />
+    <field name="Min LOD" dword="1" bits="31:20" type="u4.8" />
+    <field name="LOD Clamp Magnification Mode" dword="2" bits="0:0" type="uint">
+      <value name="MIPNONE" value="0" />
+      <value name="MIPFILTER" value="1" />
+    </field>
+    <field name="SRGB DECODE" dword="2" bits="1:1" type="uint">
+      <value name="DECODE_EXT" value="0" />
+      <value name="SKIP_DECODE_EXT" value="1" />
+    </field>
+    <field name="Return Filter Weight for Null Texels" dword="2" bits="2:2" type="uint" />
+    <field name="Return Filter Weight for Border Texels" dword="2" bits="3:3" type="uint" />
+    <field name="Force gather4 Behavior" dword="2" bits="5:5" type="bool" />
+    <field name="Border Color Pointer" dword="2" bits="23:6" type="offset" />
+    <field name="TCZ Address Control Mode" dword="3" bits="2:0" type="Texture Coordinate Mode" />
+    <field name="TCY Address Control Mode" dword="3" bits="5:3" type="Texture Coordinate Mode" />
+    <field name="TCX Address Control Mode" dword="3" bits="8:6" type="Texture Coordinate Mode" />
+    <field name="Reduction Type Enable" dword="3" bits="9:9" type="bool" />
+    <field name="Non-normalized Coordinate Enable" dword="3" bits="10:10" type="bool" />
+    <field name="Trilinear Filter Quality" dword="3" bits="12:11" type="uint">
+      <value name="FULL" value="0" />
+      <value name="HIGH" value="1" />
+      <value name="MED" value="2" />
+      <value name="LOW" value="3" />
+    </field>
+    <field name="R Address Min Filter Rounding Enable" dword="3" bits="13:13" type="bool" />
+    <field name="R Address Mag Filter Rounding Enable" dword="3" bits="14:14" type="bool" />
+    <field name="V Address Min Filter Rounding Enable" dword="3" bits="15:15" type="bool" />
+    <field name="V Address Mag Filter Rounding Enable" dword="3" bits="16:16" type="bool" />
+    <field name="U Address Min Filter Rounding Enable" dword="3" bits="17:17" type="bool" />
+    <field name="U Address Mag Filter Rounding Enable" dword="3" bits="18:18" type="bool" />
+    <field name="Maximum Anisotropy" dword="3" bits="21:19" type="uint">
+      <value name="RATIO 2:1" value="0" />
+      <value name="RATIO 4:1" value="1" />
+      <value name="RATIO 6:1" value="2" />
+      <value name="RATIO 8:1" value="3" />
+      <value name="RATIO 10:1" value="4" />
+      <value name="RATIO 12:1" value="5" />
+      <value name="RATIO 14:1" value="6" />
+      <value name="RATIO 16:1" value="7" />
+    </field>
+    <field name="Reduction Type" dword="3" bits="23:22" type="uint">
+      <value name="STD_FILTER" value="0" />
+      <value name="COMPARISON" value="1" />
+      <value name="MINIMUM" value="2" />
+      <value name="MAXIMUM" value="3" />
+    </field>
+    <field name="Allow Low Quality LOD Calculation" dword="3" bits="24:24" type="bool" />
+  </struct>
+  <struct name="SFC_AVS_CHROMA_COEFF_TABLE_BODY" length="64">
+    <field name="Table 1X Filter Coefficient[[n],2]" dword="0" bits="7:0" type="s1.6" />
+    <field name="Table 1Y Filter Coefficient[[n],2]" dword="0" bits="15:8" type="s1.6" />
+    <field name="Table 1X Filter Coefficient[[n],3]" dword="0" bits="23:16" type="s1.6" />
+    <field name="Table 1Y Filter Coefficient[[n],3]" dword="0" bits="31:24" type="s1.6" />
+    <field name="Table 1X Filter Coefficient[[n],4]" dword="1" bits="7:0" type="s1.6" />
+    <field name="Table 1Y Filter Coefficient[[n],4]" dword="1" bits="15:8" type="s1.6" />
+    <field name="Table 1X Filter Coefficient[[n],5]" dword="1" bits="23:16" type="s1.6" />
+    <field name="Table 1Y Filter Coefficient[[n],5]" dword="1" bits="31:24" type="s1.6" />
+    <group count="31" dword="2" size="64">
+      <field name="Filter Coefficients" dword="0" bits="63:0" type="CHROMA_FILTER_COEFFICIENTS_ARRAY" />
+    </group>
+  </struct>
+  <struct name="SFC_AVS_LUMA_COEFF_TABLE_BODY" length="128">
+    <field name="Table 0X Filter Coefficient[[n],0]" dword="0" bits="7:0" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],0]" dword="0" bits="15:8" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],1]" dword="0" bits="23:16" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],1]" dword="0" bits="31:24" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],2]" dword="1" bits="7:0" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],2]" dword="1" bits="15:8" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],3]" dword="1" bits="23:16" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],3]" dword="1" bits="31:24" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],4]" dword="2" bits="7:0" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],4]" dword="2" bits="15:8" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],5]" dword="2" bits="23:16" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],5]" dword="2" bits="31:24" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],6]" dword="3" bits="7:0" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],6]" dword="3" bits="15:8" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],7]" dword="3" bits="23:16" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],7]" dword="3" bits="31:24" type="s1.6" />
+    <group count="31" dword="4" size="128">
+      <field name="Filter Coefficients" dword="0" bits="127:0" type="LUMA_FILTER_COEFFICIENTS_ARRAY" />
+    </group>
+  </struct>
+  <struct name="SFC_AVS_STATE_BODY" length="3">
+    <field name="Transition Area with 8 Pixels" dword="0" bits="2:0" type="uint" />
+    <field name="Transition Area with 4 Pixels" dword="0" bits="6:4" type="uint" />
+    <field name="Sharpness Level" dword="0" bits="31:24" type="uint" />
+    <field name="Max Derivative 8 Pixels" dword="1" bits="7:0" type="uint" />
+    <field name="Max Derivative 4 Pixels" dword="1" bits="23:16" type="uint" />
+    <field name="Input Vertical Siting" dword="2" bits="3:0" type="uint">
+      <value name="1/8" value="1" />
+      <value name="2/8" value="2" />
+      <value name="3/8" value="3" />
+      <value name="4/8" value="4" />
+      <value name="5/8" value="5" />
+      <value name="6/8" value="6" />
+      <value name="7/8" value="7" />
+      <value name="8/8" value="8" />
+    </field>
+  </struct>
+  <struct name="SLICE_HASH_TABLE" length="32">
+    <group count="16" dword="0" size="64">
+      <group count="16" dword="0" size="4">
+        <field name="Entry" dword="0" bits="3:0" type="uint" />
+      </group>
+    </group>
+  </struct>
+  <struct name="VDENC_SURFACE_STATE_FIELDS" length="4">
+    <field name="Cr(V)/Cb(U) Pixel Offset V Direction" dword="0" bits="1:0" type="u0.2" />
+    <field name="Surface Format Byte Swizzle" dword="0" bits="2:2" type="bool" />
+    <field name="Color space selection" dword="0" bits="3:3" type="uint" />
+    <field name="Width" dword="0" bits="17:4" type="uint" />
+    <field name="Height" dword="0" bits="31:18" type="uint" />
+    <field name="Tile Walk" dword="1" bits="0:0" type="uint" prefix="TW">
+      <value name="XMAJOR" value="0" />
+      <value name="YMAJOR" value="1" />
+    </field>
+    <field name="Tiled Surface" dword="1" bits="1:1" type="uint" />
+    <field name="Half Pitch for Chroma" dword="1" bits="2:2" type="bool" />
+    <field name="Surface Pitch" dword="1" bits="19:3" type="uint" />
+    <field name="Chroma Downsample Filter Control" dword="1" bits="22:20" type="uint" />
+    <field name="Surface Format" dword="1" bits="31:27" type="uint" prefix="VDENC">
+      <value name="YUV 4:2:2" value="0" />
+      <value name="RGBA 4:4:4:4" value="1" />
+      <value name="YUV 4:4:4" value="2" />
+      <value name="Y8_UNORM" value="3" />
+      <value name="PLANAR_420_8" value="4" />
+    </field>
+    <field name="Y Offset for U(Cb)" dword="2" bits="14:0" type="uint" />
+    <field name="X Offset for U(Cb)" dword="2" bits="30:16" type="uint" />
+    <field name="Y Offset for V(Cr)" dword="3" bits="15:0" type="uint" />
+    <field name="X Offset for V(Cr)" dword="3" bits="28:16" type="uint" />
+  </struct>
+  <instruction name="3DPRIMITIVE" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="UAV Coherency Required" dword="0" bits="9:9" type="bool" />
+    <field name="Indirect Parameter Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Extended Parameters Present" dword="0" bits="11:11" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Primitive Topology Type" dword="1" bits="5:0" type="3D_Prim_Topo_Type" />
+    <field name="Vertex Access Type" dword="1" bits="8:8" type="uint">
+      <value name="SEQUENTIAL" value="0" />
+      <value name="RANDOM" value="1" />
+    </field>
+    <field name="End Offset Enable" dword="1" bits="9:9" type="bool" />
+    <field name="Vertex Count Per Instance" dword="2" bits="31:0" type="uint" />
+    <field name="Start Vertex Location" dword="3" bits="31:0" type="uint" />
+    <field name="Instance Count" dword="4" bits="31:0" type="uint" />
+    <field name="Start Instance Location" dword="5" bits="31:0" type="uint" />
+    <field name="Base Vertex Location" dword="6" bits="31:0" type="int" />
+  </instruction>
+  <instruction name="3DPRIMITIVE_EXTENDED" bias="2" length="10" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="8" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="UAV Coherency Required" dword="0" bits="9:9" type="bool" />
+    <field name="Indirect Parameter Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Extended Parameters Present" dword="0" bits="11:11" type="bool" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Primitive Topology Type" dword="1" bits="5:0" type="3D_Prim_Topo_Type" />
+    <field name="Vertex Access Type" dword="1" bits="8:8" type="uint">
+      <value name="SEQUENTIAL" value="0" />
+      <value name="RANDOM" value="1" />
+    </field>
+    <field name="End Offset Enable" dword="1" bits="9:9" type="bool" />
+    <field name="Vertex Count Per Instance" dword="2" bits="31:0" type="uint" />
+    <field name="Start Vertex Location" dword="3" bits="31:0" type="uint" />
+    <field name="Instance Count" dword="4" bits="31:0" type="uint" />
+    <field name="Start Instance Location" dword="5" bits="31:0" type="uint" />
+    <field name="Base Vertex Location" dword="6" bits="31:0" type="int" />
+    <field name="Extended Parameter 0" dword="7" bits="31:0" type="uint" />
+    <field name="Extended Parameter 1" dword="8" bits="31:0" type="uint" />
+    <field name="Extended Parameter 2" dword="9" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_3D_MODE" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="30" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Cross Slice Hashing Mode" dword="1" bits="1:0" type="uint">
+      <value name="Normal Mode" value="0" />
+      <value name="Disable" value="1" />
+      <value name="hashing 32x32" value="3" />
+    </field>
+    <field name="Subslice Hashing Mode" dword="1" bits="3:2" type="uint">
+      <value name="hashing 8x8" value="0" />
+      <value name="hashing 16x4" value="1" />
+      <value name="hashing 8x4" value="2" />
+      <value name="hashing 16x16" value="3" />
+    </field>
+    <field name="Slice Hashing Table Enable" dword="1" bits="6:6" type="bool" />
+    <field name="Mask" dword="1" bits="31:16" type="mbo" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_PS" bias="2" length="11" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="MOCS" dword="0" bits="14:8" type="uint" nonzero="true" />
+    <field name="Disable Gather at Set Shader Hint" dword="0" bits="15:15" type="uint" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="23" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Body" dword="1" bits="319:0" type="3DSTATE_CONSTANT_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_CPS" bias="2" length="9" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="7" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="34" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Min CP Size X" dword="1" bits="10:0" type="s3.7" />
+    <field name="Statistics Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Coarse Pixel Shading Mode" dword="1" bits="13:12" type="uint">
+      <value name="CPS_MODE_NONE" value="0" />
+      <value name="CPS_MODE_CONSTANT" value="1" />
+      <value name="CPS_MODE_RADIAL" value="2" />
+    </field>
+    <field name="Scale Axis" dword="1" bits="14:14" type="uint">
+      <value name="X axis" value="0" />
+      <value name="Y axis" value="1" />
+    </field>
+    <field name="Min CP Size Y" dword="1" bits="26:16" type="s3.7" />
+    <field name="Max CP Size X " dword="2" bits="10:0" type="s3.7" />
+    <field name="Max CP Size Y" dword="2" bits="26:16" type="s3.7" />
+    <field name="Y Focal" dword="3" bits="15:0" type="int" />
+    <field name="X Focal" dword="4" bits="15:0" type="int" />
+    <field name="M y" dword="5" bits="31:0" type="float" />
+    <field name="M x" dword="6" bits="31:0" type="float" />
+    <field name="R min" dword="7" bits="31:0" type="float" />
+    <field name="Aspect" dword="8" bits="31:0" type="float" />
+  </instruction>
+  <instruction name="3DSTATE_DS" bias="2" length="11" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="29" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Accesses UAV" dword="3" bits="14:14" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="4" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="4" bits="63:10" type="address" />
+    <field name="Patch URB Entry Read Offset" dword="6" bits="9:4" type="uint" />
+    <field name="Patch URB Entry Read Length" dword="6" bits="17:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="6" bits="24:20" type="uint" />
+    <field name="Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Cache Disable" dword="7" bits="1:1" type="bool" />
+    <field name="Compute W Coordinate Enable" dword="7" bits="2:2" type="bool" />
+    <field name="Dispatch Mode" dword="7" bits="4:3" type="uint" prefix="DISPATCH_MODE">
+      <value name="SIMD8_SINGLE_PATCH" value="1" />
+      <value name="SIMD8_SINGLE_OR_DUAL_PATCH" value="2" />
+    </field>
+    <field name="Statistics Enable" dword="7" bits="10:10" type="bool" />
+    <field name="Maximum Number of Threads" dword="7" bits="30:21" type="uint" />
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="8" bits="7:0" type="uint" />
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="8" bits="15:8" type="uint" />
+    <field name="Vertex URB Entry Output Length" dword="8" bits="20:16" type="uint" />
+    <field name="Vertex URB Entry Output Read Offset" dword="8" bits="26:21" type="uint" />
+    <field name="DUAL_PATCH Kernel Start Pointer" dword="9" bits="63:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_GS" bias="2" length="10" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="8" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="17" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Expected Vertex Count" dword="3" bits="5:0" type="uint" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="3" bits="11:11" type="bool" />
+    <field name="Accesses UAV" dword="3" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="bool" />
+    <field name="Single Program Flow" dword="3" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="4" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="4" bits="63:10" type="address" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="6" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="6" bits="9:4" type="uint" />
+    <field name="Include Vertex Handles" dword="6" bits="10:10" type="bool" />
+    <field name="Vertex URB Entry Read Length" dword="6" bits="16:11" type="uint" />
+    <field name="Output Topology" dword="6" bits="22:17" type="3D_Prim_Topo_Type" />
+    <field name="Output Vertex Size" dword="6" bits="28:23" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data [5:4]" dword="6" bits="30:29" type="uint" />
+    <field name="Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Discard Adjacency" dword="7" bits="1:1" type="bool" />
+    <field name="Reorder Mode" dword="7" bits="2:2" type="uint">
+      <value name="LEADING" value="0" />
+      <value name="TRAILING" value="1" />
+    </field>
+    <field name="Hint" dword="7" bits="3:3" type="uint" />
+    <field name="Include Primitive ID" dword="7" bits="4:4" type="bool" />
+    <field name="Invocations Increment Value" dword="7" bits="9:5" type="uint" />
+    <field name="Statistics Enable" dword="7" bits="10:10" type="bool" />
+    <field name="Dispatch Mode" dword="7" bits="12:11" type="uint" prefix="DISPATCH_MODE">
+      <value name="SIMD8" value="3" />
+    </field>
+    <field name="Default Stream Id" dword="7" bits="14:13" type="uint" />
+    <field name="Instance Control" dword="7" bits="19:15" type="uint" />
+    <field name="Control Data Header Size" dword="7" bits="23:20" type="uint" />
+    <field name="Maximum Number of Threads" dword="8" bits="8:0" type="uint" />
+    <field name="Static Output Vertex Count" dword="8" bits="26:16" type="uint" />
+    <field name="Static Output" dword="8" bits="30:30" type="bool" />
+    <field name="Control Data Format" dword="8" bits="31:31" type="uint">
+      <value name="CUT" value="0" />
+      <value name="SID" value="1" />
+    </field>
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="9" bits="7:0" type="uint" />
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="9" bits="15:8" type="uint" />
+    <field name="Vertex URB Entry Output Length" dword="9" bits="20:16" type="uint" />
+    <field name="Vertex URB Entry Output Read Offset" dword="9" bits="26:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_HS" bias="2" length="9" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="7" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="27" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Software Exception Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="1" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="1" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Instance Count" dword="2" bits="3:0" type="uint" />
+    <field name="Maximum Number of Threads" dword="2" bits="16:8" type="uint" />
+    <field name="Statistics Enable" dword="2" bits="29:29" type="bool" />
+    <field name="Enable" dword="2" bits="31:31" type="bool" />
+    <field name="Kernel Start Pointer" dword="3" bits="63:6" type="offset" />
+    <field name="Per-Thread Scratch Space" dword="5" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="5" bits="63:10" type="address" />
+    <field name="Include Primitive ID" dword="7" bits="0:0" type="bool" />
+    <field name="Vertex URB Entry Read Offset" dword="7" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="7" bits="16:11" type="uint" />
+    <field name="Dispatch Mode" dword="7" bits="18:17" type="uint" prefix="DISPATCH_MODE">
+      <value name="SINGLE_PATCH" value="0" />
+      <value name="8_PATCH" value="2" />
+    </field>
+    <field name="Dispatch GRF Start Register For URB Data" dword="7" bits="23:19" type="uint" />
+    <field name="Include Vertex Handles" dword="7" bits="24:24" type="bool" />
+    <field name="Accesses UAV" dword="7" bits="25:25" type="bool" />
+    <field name="Vector Mask Enable" dword="7" bits="26:26" type="bool" />
+    <field name="Single Program Flow" dword="7" bits="27:27" type="bool" />
+    <field name="Dispatch GRF Start Register For URB Data [5]" dword="7" bits="28:28" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_PS" bias="2" length="12" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="10" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="32" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer 0" dword="1" bits="63:6" type="offset" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="3" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Rounding Mode" dword="3" bits="15:14" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Single Precision Denormal Mode" dword="3" bits="26:26" type="uint">
+      <value name="Flushed to Zero" value="0" />
+      <value name="Retained" value="1" />
+    </field>
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="bool" />
+    <field name="Single Program Flow" dword="3" bits="31:31" type="bool" />
+    <field name="Per Thread Scratch Space" dword="4" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="4" bits="63:10" type="address" />
+    <field name="8 Pixel Dispatch Enable" dword="6" bits="0:0" type="bool" />
+    <field name="16 Pixel Dispatch Enable" dword="6" bits="1:1" type="bool" />
+    <field name="32 Pixel Dispatch Enable" dword="6" bits="2:2" type="bool" />
+    <field name="Position XY Offset Select" dword="6" bits="4:3" type="uint">
+      <value name="POSOFFSET_NONE" value="0" />
+      <value name="POSOFFSET_CENTROID" value="2" />
+      <value name="POSOFFSET_SAMPLE" value="3" />
+    </field>
+    <field name="Render Target Resolve Type" dword="6" bits="7:6" type="uint">
+      <value name="RESOLVE_DISABLED" value="0" />
+      <value name="RESOLVE_PARTIAL" value="1" />
+      <value name="FAST_CLEAR_0" value="2" />
+      <value name="RESOLVE_FULL" value="3" />
+    </field>
+    <field name="Render Target Fast Clear Enable" dword="6" bits="8:8" type="bool" />
+    <field name="Push Constant Enable" dword="6" bits="11:11" type="bool" />
+    <field name="Maximum Number of Threads Per PSD" dword="6" bits="31:23" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 2" dword="7" bits="6:0" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 1" dword="7" bits="14:8" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 0" dword="7" bits="22:16" type="uint" />
+    <field name="Kernel Start Pointer 1" dword="8" bits="63:6" type="offset" />
+    <field name="Kernel Start Pointer 2" dword="10" bits="63:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_PS_EXTRA" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="79" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Input Coverage Mask State" dword="1" bits="1:0" type="uint" prefix="ICMS">
+      <value name="NONE" value="0" />
+      <value name="NORMAL" value="1" />
+      <value name="INNER_CONSERVATIVE" value="2" />
+      <value name="DEPTH_COVERAGE" value="3" />
+    </field>
+    <field name="Pixel Shader Has UAV" dword="1" bits="2:2" type="bool" />
+    <field name="Pixel Shader Pulls Bary" dword="1" bits="3:3" type="bool" />
+    <field name="Pixel Shader Is Per Coarse Pixel" dword="1" bits="4:4" type="bool" />
+    <field name="Pixel Shader Computes Stencil" dword="1" bits="5:5" type="bool" />
+    <field name="Pixel Shader Is Per Sample" dword="1" bits="6:6" type="bool" />
+    <field name="Pixel Shader Disables Alpha To Coverage" dword="1" bits="7:7" type="bool" />
+    <field name="Attribute Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Simple PS Hint" dword="1" bits="9:9" type="bool" />
+    <field name="Pixel Shader Requires Subpixel Sample Offsets" dword="1" bits="18:18" type="bool" />
+    <field name="Pixel Shader Requires Non-Perspective Bary Plane Coefficients" dword="1" bits="19:19" type="bool" />
+    <field name="Pixel Shader Requires Perspective Bary Plane Coefficients" dword="1" bits="20:20" type="bool" />
+    <field name="Pixel Shader Requires Source Depth and/or W Plane Coefficients" dword="1" bits="21:21" type="bool" />
+    <field name="Pixel Shader Requires Requested Coarse Pixel Shading Size" dword="1" bits="22:22" type="bool" />
+    <field name="Pixel Shader Uses Source W" dword="1" bits="23:23" type="bool" />
+    <field name="Pixel Shader Uses Source Depth" dword="1" bits="24:24" type="bool" />
+    <field name="Force Computed Depth" dword="1" bits="25:25" type="bool" />
+    <field name="Pixel Shader Computed Depth Mode" dword="1" bits="27:26" type="uint">
+      <value name="PSCDEPTH_OFF" value="0" />
+      <value name="PSCDEPTH_ON" value="1" />
+      <value name="PSCDEPTH_ON_GE" value="2" />
+      <value name="PSCDEPTH_ON_LE" value="3" />
+    </field>
+    <field name="Pixel Shader Kills Pixel" dword="1" bits="28:28" type="bool" />
+    <field name="oMask Present to Render Target" dword="1" bits="29:29" type="bool" />
+    <field name="Pixel Shader Does not write to RT" dword="1" bits="30:30" type="mbz" />
+    <field name="Pixel Shader Valid" dword="1" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_SLICE_TABLE_STATE_POINTERS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="32" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Slice Hash State Pointer Valid" dword="1" bits="0:0" type="bool" />
+    <field name="Slice Hash Table State Pointer" dword="1" bits="31:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_VF" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="Indexed Draw Cut Index Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Component Packing Enable" dword="0" bits="9:9" type="bool" />
+    <field name="Sequential Draw Cut Index Enable" dword="0" bits="10:10" type="bool" />
+    <field name="VertexID Offset Enable" dword="0" bits="11:11" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="12" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Cut Index" dword="1" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_VF_SGVS_2" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="86" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="XP0 Element Offset" dword="1" bits="5:0" type="uint" />
+    <field name="XP0 Source Select" dword="1" bits="12:12" type="uint">
+      <value name="VERTEX_LOCATION" value="1" />
+      <value name="XP0_PARAMETER" value="0" />
+    </field>
+    <field name="XP0 Component Number" dword="1" bits="14:13" type="uint">
+      <value name="COMP_0" value="0" />
+      <value name="COMP_1" value="1" />
+      <value name="COMP_2" value="2" />
+      <value name="COMP_3" value="3" />
+    </field>
+    <field name="XP0 Enable" dword="1" bits="15:15" type="bool" />
+    <field name="XP1 Element Offset" dword="1" bits="21:16" type="uint" />
+    <field name="XP1 Source Select" dword="1" bits="28:28" type="uint">
+      <value name="Starting Instance Location" value="1" />
+      <value name="XP1_PARAMETER" value="0" />
+    </field>
+    <field name="XP1 Component Number" dword="1" bits="30:29" type="uint">
+      <value name="COMP_0" value="0" />
+      <value name="COMP_1" value="1" />
+      <value name="COMP_2" value="2" />
+      <value name="COMP_3" value="3" />
+    </field>
+    <field name="XP1 Enable" dword="1" bits="31:31" type="bool" />
+    <field name="XP2 Element Offset" dword="2" bits="5:0" type="uint" />
+    <field name="XP2 Component Number" dword="2" bits="14:13" type="uint">
+      <value name="COMP_0" value="0" />
+      <value name="COMP_1" value="1" />
+      <value name="COMP_2" value="2" />
+      <value name="COMP_3" value="3" />
+    </field>
+    <field name="XP2 Enable" dword="2" bits="15:15" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_VS" bias="2" length="9" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="7" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="16" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Accesses UAV" dword="3" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="4" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="4" bits="63:10" type="address" />
+    <field name="Vertex URB Entry Read Offset" dword="6" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="6" bits="16:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="6" bits="24:20" type="uint" />
+    <field name="Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Vertex Cache Disable" dword="7" bits="1:1" type="bool" />
+    <field name="SIMD8 Dispatch Enable" dword="7" bits="2:2" type="bool" />
+    <field name="SIMD8 Single Instance Dispatch Enable" dword="7" bits="9:9" type="bool" />
+    <field name="Statistics Enable" dword="7" bits="10:10" type="bool" />
+    <field name="Maximum Number of Threads" dword="7" bits="31:22" type="uint" />
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="8" bits="7:0" type="uint" />
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="8" bits="15:8" type="uint" />
+    <field name="Vertex URB Entry Output Length" dword="8" bits="20:16" type="uint" />
+    <field name="Vertex URB Entry Output Read Offset" dword="8" bits="26:21" type="uint" />
+  </instruction>
+  <instruction name="HCP_IND_OBJ_BASE_ADDR_STATE" bias="2" length="29" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="27" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="3" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="HCP Indirect Bitstream Object - Base Address" dword="1" bits="63:0" type="address" />
+    <field name="HCP Indirect Bitstream Object - Memory Address Attributes" dword="3" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="HCP Indirect Bitstream Object - Access Upper Bound" dword="4" bits="63:0" type="address" />
+    <field name="HCP Indirect CU Object - Base Address" dword="6" bits="63:0" type="address" />
+    <field name="HCP Indirect CU Object - Memory Address Attributes" dword="8" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="HCP PAK-BSE Object - Base Address" dword="9" bits="63:0" type="address" />
+    <field name="HCP PAK-BSE Object - Memory Address Attributes" dword="11" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="HCP PAK-BSE Object - Access Upper Bound" dword="12" bits="63:0" type="address" />
+    <field name="HCP VP9 PAK Compressed Header Syntax Stream-In - Base Address" dword="14" bits="63:0" type="address" />
+    <field name="HCP VP9 PAK Compressed Header Syntax Stream-In - Memory Address Attributes" dword="16" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="HCP VP9 PAK Probability Counter Stream-Out - Base Address" dword="17" bits="63:0" type="address" />
+    <field name="HCP VP9 PAK Probability Counter Stream-Out - Memory Address Attributes" dword="19" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="HCP VP9 PAK Probability Deltas Stream-In - Base Address" dword="20" bits="63:0" type="address" />
+    <field name="HCP VP9 PAK Probability Deltas Stream-In - Memory Address Attributes" dword="22" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="HCP VP9 PAK Tile Record Stream-Out - Base Address" dword="23" bits="63:0" type="address" />
+    <field name="HCP VP9 PAK Tile Record Stream-Out - Memory Address Attributes" dword="25" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="HCP VP9 PAK CU Level Statistic Stream-Out - Base Address" dword="26" bits="63:0" type="address" />
+    <field name="HCP VP9 PAK CU Level Statistic Stream-Out - Memory Address Attributes" dword="28" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+  </instruction>
+  <instruction name="HCP_PAK_INSERT_OBJECT" bias="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="34" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="End of Slice" dword="1" bits="1:1" type="bool" />
+    <field name="Last Header" dword="1" bits="2:2" type="bool" />
+    <field name="Emulation Byte Bits Insert Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Skip Emulation Byte Count" dword="1" bits="7:4" type="uint" />
+    <field name="Data Bits In Last DW" dword="1" bits="13:8" type="uint" />
+    <field name="Slice Header Indicator" dword="1" bits="14:14" type="bool" />
+    <field name="Header Length Excluded From Size" dword="1" bits="15:15" type="uint">
+      <value name="ACCUMULATE" value="0" />
+      <value name="NO_ACCUMULATION" value="1" />
+    </field>
+    <field name="Data Byte Offset" dword="1" bits="17:16" type="uint" />
+    <field name="Indirect Payload Enable" dword="1" bits="31:31" type="bool" />
+    <group count="0" dword="2" size="128">
+      <field name="Indirect Payload" dword="0" bits="127:0" type="HCP_PAK_INSERT_OBJECT_INDIRECT_PAYLOAD" />
+      <field name="Inline PayLoad" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="HCP_PAK_OBJECT" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="33" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Split Level 2 Part 0" dword="1" bits="3:0" type="uint" />
+    <field name="Split Level 2 Part 1" dword="1" bits="7:4" type="uint" />
+    <field name="Split Level 2 Part 2" dword="1" bits="11:8" type="uint" />
+    <field name="Split Level 2 Part 3" dword="1" bits="15:12" type="uint" />
+    <field name="Split Level 1" dword="1" bits="19:16" type="uint" />
+    <field name="Split Level 0" dword="1" bits="20:20" type="uint" />
+    <field name="CU Count" dword="1" bits="29:24" type="uint" />
+    <field name="Last LCU of Tile" dword="1" bits="30:30" type="bool" />
+    <field name="Last LCU of Slice" dword="1" bits="31:31" type="bool" />
+    <field name="Current LCU X Address" dword="2" bits="15:0" type="uint" />
+    <field name="Current LCU Y Address" dword="2" bits="31:16" type="uint" />
+    <field name="Estimated LCU Size" dword="3" bits="31:0" type="uint" />
+    <field name="SSE ClassID 32x32_0" dword="4" bits="3:0" type="uint" />
+    <field name="SSE ClassID 32x32_1" dword="4" bits="7:4" type="uint" />
+    <field name="SSE ClassID 32x32_2" dword="4" bits="11:8" type="uint" />
+    <field name="SSE ClassID 32x32_3" dword="4" bits="15:12" type="uint" />
+    <field name="LCU Force Zero Coeff" dword="4" bits="16:16" type="bool" />
+  </instruction>
+  <instruction name="HCP_PIC_STATE" bias="2" length="38" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="36" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="16" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Width In Minimum Coding Block Size" dword="1" bits="10:0" type="uint" />
+    <field name="PAK Transform Skip Enable" dword="1" bits="15:15" type="bool" />
+    <field name="Frame Height In Minimum Coding Block Size" dword="1" bits="26:16" type="uint" />
+    <field name="Min CU Size" dword="2" bits="1:0" type="uint" prefix="LCU">
+      <value name="64x64" value="3" />
+      <value name="32x32" value="2" />
+      <value name="16x16" value="1" />
+      <value name="8x8" value="0" />
+    </field>
+    <field name="LCU Size" dword="2" bits="3:2" type="uint" prefix="LCU">
+      <value name="64x64" value="3" />
+      <value name="32x32" value="2" />
+      <value name="16x16" value="1" />
+      <value name="Illegal/reserved" value="0" />
+    </field>
+    <field name="Min TU Size" dword="2" bits="5:4" type="uint" prefix="TU">
+      <value name="32x32" value="3" />
+      <value name="16x16" value="2" />
+      <value name="8x8" value="1" />
+      <value name="4x4" value="0" />
+    </field>
+    <field name="Max TU Size" dword="2" bits="7:6" type="uint" prefix="TU">
+      <value name="32x32" value="3" />
+      <value name="16x16" value="2" />
+      <value name="8x8" value="1" />
+      <value name="4x4" value="0" />
+    </field>
+    <field name="Min PCM Size" dword="2" bits="9:8" type="uint" prefix="PCM">
+      <value name="32x32" value="2" />
+      <value name="16x16" value="1" />
+      <value name="8x8" value="0" />
+    </field>
+    <field name="Max PCM Size" dword="2" bits="11:10" type="uint" prefix="PCM">
+      <value name="32x32" value="2" />
+      <value name="16x16" value="1" />
+      <value name="8x8" value="0" />
+    </field>
+    <field name="Log2 SAO Offset Scale Luma" dword="2" bits="14:12" type="uint" />
+    <field name="Log2 SAO Offset Scale Chroma" dword="2" bits="18:16" type="uint" />
+    <field name="Chroma QP Offset List Length" dword="2" bits="22:20" type="uint" />
+    <field name="Diff CU Chroma QP Offset Depth" dword="2" bits="27:24" type="uint" />
+    <field name="Chroma QP Offset List Enable" dword="2" bits="28:28" type="bool" />
+    <field name="Chroma Subsampling" dword="2" bits="31:29" type="uint">
+      <value name="4:2:0" value="1" />
+      <value name="4:2:2" value="2" />
+      <value name="4:4:4" value="3" />
+    </field>
+    <field name="Collocated Picture Is I Slice" dword="3" bits="0:0" type="bool" />
+    <field name="Current Picture Is I Slice" dword="3" bits="1:1" type="bool" />
+    <field name="CABAC Zero Word Insertion Test Enable" dword="3" bits="2:2" type="bool" />
+    <field name="High Precision Offsets Enable" dword="3" bits="19:19" type="bool" />
+    <field name="Log2 Max Transform Skip Size" dword="3" bits="22:20" type="uint" />
+    <field name="Cross Component Prediction Enable" dword="3" bits="23:23" type="bool" />
+    <field name="CABAC Bypass Alignment Enable" dword="3" bits="24:24" type="bool" />
+    <field name="Persistent Rice Adaptation Enable" dword="3" bits="25:25" type="bool" />
+    <field name="Intra Smoothing Disable" dword="3" bits="26:26" type="bool" />
+    <field name="Explicit RDPCM Enable" dword="3" bits="27:27" type="bool" />
+    <field name="Implicit RDPCM Enable" dword="3" bits="28:28" type="bool" />
+    <field name="Transform Skip Context Enable" dword="3" bits="29:29" type="bool" />
+    <field name="Transform Skip Rotation Enable" dword="3" bits="30:30" type="bool" />
+    <field name="SPS Range Extension Enable" dword="3" bits="31:31" type="bool" />
+    <field name="Sample Adaptive Offset Enable" dword="4" bits="3:3" type="bool" />
+    <field name="PCM Enable" dword="4" bits="4:4" type="bool" />
+    <field name="CU QP Delta Enable" dword="4" bits="5:5" type="bool" />
+    <field name="Max DQP Depth" dword="4" bits="7:6" type="uint" />
+    <field name="PCM Loop Filter Disable" dword="4" bits="8:8" type="bool" />
+    <field name="Constrained Intra Prediction" dword="4" bits="9:9" type="bool" />
+    <field name="Log2 Parallel Merge Level" dword="4" bits="12:10" type="uint" />
+    <field name="Sign Data Hiding" dword="4" bits="13:13" type="bool" />
+    <field name="Loop Filter Enable" dword="4" bits="15:15" type="bool" />
+    <field name="Entropy Coding Sync Enable" dword="4" bits="16:16" type="bool" />
+    <field name="Tiling Enable" dword="4" bits="17:17" type="bool" />
+    <field name="Weighted BiPredication Enable" dword="4" bits="18:18" type="bool" />
+    <field name="Weighted Predication Enable" dword="4" bits="19:19" type="bool" />
+    <field name="Field Pic" dword="4" bits="20:20" type="bool" />
+    <field name="Top Field" dword="4" bits="21:21" type="bool" />
+    <field name="Transform Skip Enable" dword="4" bits="22:22" type="bool" />
+    <field name="AMP Enable" dword="4" bits="23:23" type="bool" />
+    <field name="Transquant Bypass Enable" dword="4" bits="25:25" type="bool" />
+    <field name="Strong Intra Smoothing Enable" dword="4" bits="26:26" type="bool" />
+    <field name="CU Packet Structure" dword="4" bits="27:27" type="uint">
+      <value name="VME" value="0" />
+      <value name="ExtEnc" value="1" />
+    </field>
+    <field name="Picture Cb QP Offset" dword="5" bits="4:0" type="int" />
+    <field name="Picture Cr QP Offset" dword="5" bits="9:5" type="int" />
+    <field name="Intra Max Transform Hierarchy Depth" dword="5" bits="12:10" type="uint" />
+    <field name="Inter Max Transform Hierarchy Depth" dword="5" bits="15:13" type="uint" />
+    <field name="Chroma PCM Sample Bit Depth" dword="5" bits="19:16" type="uint" />
+    <field name="Luma PCM Sample Bit Depth" dword="5" bits="23:20" type="uint" />
+    <field name="Chroma Bit Depth" dword="5" bits="26:24" type="uint">
+      <value name="8-bit" value="0" />
+      <value name="9-bit" value="1" />
+      <value name="10-bit" value="2" />
+      <value name="11-bit" value="3" />
+      <value name="12-bit" value="4" />
+    </field>
+    <field name="Luma Bit Depth" dword="5" bits="29:27" type="uint">
+      <value name="8-bit" value="0" />
+      <value name="9-bit" value="1" />
+      <value name="10-bit" value="2" />
+      <value name="11-bit" value="3" />
+      <value name="12-bit" value="4" />
+    </field>
+    <field name="LCU Max Bit Size Allowed" dword="6" bits="15:0" type="uint" />
+    <field name="Non First Pass" dword="6" bits="16:16" type="bool" />
+    <field name="LCU Max Size Report" dword="6" bits="24:24" type="bool" />
+    <field name="Frame Bitrate Max Report" dword="6" bits="25:25" type="bool" />
+    <field name="Frame Bitrate Min Report" dword="6" bits="26:26" type="bool" />
+    <field name="Load Bitstream Pointer Per Slice" dword="6" bits="29:29" type="bool" />
+    <field name="Frame Bitrate Max" dword="7" bits="13:0" type="uint" />
+    <field name="Frame Bitrate Max Unit" dword="7" bits="31:31" type="uint" />
+    <field name="Frame Bitrate Min" dword="8" bits="13:0" type="uint" />
+    <field name="Frame Bitrate Min Unit" dword="8" bits="31:31" type="uint" />
+    <field name="Frame Bitrate Min Delta" dword="9" bits="14:0" type="uint" />
+    <field name="Frame Bitrate Max Delta" dword="9" bits="30:16" type="uint" />
+    <field name="Frame Delta QP Max" dword="10" bits="63:0" type="FRAMEDELTAQP" />
+    <field name="Frame Delta QP Min" dword="12" bits="63:0" type="FRAMEDELTAQP" />
+    <field name="Frame Delta QP Max Range" dword="14" bits="63:0" type="FRAMEDELTAQPRANGE" />
+    <field name="Frame Delta QP Min Range" dword="16" bits="63:0" type="FRAMEDELTAQPRANGE" />
+    <field name="Minimum Frame Size" dword="18" bits="15:0" type="uint" />
+    <field name="Minimum Frame Size Units" dword="18" bits="31:30" type="uint" prefix="HCP_MFSU">
+      <value name="4Kb" value="0" />
+      <value name="16Kb" value="1" />
+      <value name="Compatibility mode" value="2" />
+      <value name="16 bytes" value="3" />
+    </field>
+    <field name="Fractional QP Input" dword="19" bits="2:0" type="uint" />
+    <field name="Fractional QP Offset" dword="19" bits="5:3" type="uint" />
+    <field name="Rho Domain Rate Control Enable" dword="19" bits="6:6" type="bool" />
+    <field name="Fractional QP Adjustment Enable" dword="19" bits="7:7" type="bool" />
+    <field name="Rho Domain Frame Level QP" dword="19" bits="13:8" type="uint" />
+    <field name="PAK Dynamic Slice Mode Enable" dword="19" bits="14:14" type="bool" />
+    <field name="No Output of Prior Pics" dword="19" bits="15:15" type="bool" />
+    <field name="First Slice Segment In Pic" dword="19" bits="16:16" type="bool" />
+    <field name="Nal Unit Type" dword="19" bits="17:17" type="uint" />
+    <field name="Slice_pic_parameter_set_id" dword="19" bits="23:18" type="uint" />
+    <field name="SSE Enable" dword="19" bits="24:24" type="bool" />
+    <field name="RDOQ Enable" dword="19" bits="25:25" type="bool" />
+    <field name="Number of LCUs InNormal Slice Size Conformance Mode" dword="19" bits="27:26" type="uint" />
+    <field name="Intra TU Count Based RDOQ Disable" dword="20" bits="6:6" type="bool" />
+    <field name="Slice Size Threshold" dword="21" bits="31:0" type="uint" />
+    <field name="Target Slice Size" dword="22" bits="31:0" type="uint" />
+    <field name="Class0_SSE_Threshold0" dword="23" bits="15:0" type="uint" />
+    <field name="Class0_SSE_Threshold1" dword="23" bits="31:16" type="uint" />
+    <field name="SSE Thresholds for Class1-8" dword="24" bits="255:0" type="uint" />
+    <field name="Cb QP Offset List[0]" dword="32" bits="4:0" type="int" />
+    <field name="Cb QP Offset List[1]" dword="32" bits="9:5" type="int" />
+    <field name="Cb QP Offset List[2]" dword="32" bits="14:10" type="int" />
+    <field name="Cb QP Offset List[3]" dword="32" bits="19:15" type="int" />
+    <field name="Cb QP Offset List[4]" dword="32" bits="24:20" type="int" />
+    <field name="Cb QP Offset List[5]" dword="32" bits="29:25" type="int" />
+    <field name="Cr QP Offset List[0]" dword="33" bits="4:0" type="int" />
+    <field name="Cr QP Offset List[1]" dword="33" bits="9:5" type="int" />
+    <field name="Cr QP Offset List[2]" dword="33" bits="14:10" type="int" />
+    <field name="Cr QP Offset List[3]" dword="33" bits="19:15" type="int" />
+    <field name="Cr QP Offset List[4]" dword="33" bits="24:20" type="int" />
+    <field name="Cr QP Offset List[5]" dword="33" bits="29:25" type="int" />
+    <field name="RDOQ Intra TU Threshold" dword="37" bits="15:0" type="uint" />
+  </instruction>
+  <instruction name="HCP_PIPE_BUF_ADDR_STATE" bias="2" length="121" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="119" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Decoded Picture - Address" dword="1" bits="63:0" type="address" />
+    <field name="Decoded Picture - Memory Address Attributes" dword="3" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocking Filter Line Buffer - Address" dword="4" bits="63:0" type="address" />
+    <field name="Deblocking Filter Line Buffer - Memory Address Attributes" dword="6" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocking Filter Tile Line Buffer - Address" dword="7" bits="63:0" type="address" />
+    <field name="Deblocking Filter Tile Line Buffer - Memory Address Attributes" dword="9" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocking Filter Tile Column Buffer - Address" dword="10" bits="63:0" type="address" />
+    <field name="Deblocking Filter Tile Column Buffer - Memory Address Attributes" dword="12" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Metadata Line Buffer - Address" dword="13" bits="63:0" type="address" />
+    <field name="Metadata Line Buffer - Memory Address Attributes" dword="15" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Metadata Tile Line Buffer - Address" dword="16" bits="63:0" type="address" />
+    <field name="Metadata Tile Line Buffer - Memory Address Attributes" dword="18" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Metadata Tile Column Buffer - Address" dword="19" bits="63:0" type="address" />
+    <field name="Metadata Tile Column Buffer - Memory Address Attributes" dword="21" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="SAO Line Buffer - Address" dword="22" bits="63:0" type="address" />
+    <field name="SAO Line Buffer - Memory Address Attributes" dword="24" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="SAO Tile Line Buffer - Address" dword="25" bits="63:0" type="address" />
+    <field name="SAO Tile Line Buffer - Memory Address Attributes" dword="27" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="SAO Tile Column Buffer - Address" dword="28" bits="63:0" type="address" />
+    <field name="SAO Tile Column Buffer - Memory Address Attributes" dword="30" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Current MV Temporal Buffer - Address" dword="31" bits="63:0" type="address" />
+    <field name="Current MV Temporal Buffer - Memory Address Attributes" dword="33" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <group count="8" dword="37" size="64">
+      <field name="Reference Picture - Address" dword="0" bits="63:0" type="address" />
+    </group>
+    <field name="Reference Picture - Memory Address Attributes" dword="53" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Original Uncompressed Picture Source - Address" dword="54" bits="63:0" type="address" />
+    <field name="Original Uncompressed Picture Source - Memory Address Attributes" dword="56" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Stream-Out Data Destination - Address" dword="57" bits="63:0" type="address" />
+    <field name="Stream-Out Data Destination - Memory Address Attributes" dword="59" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Decoded Picture Status Buffer - Address" dword="60" bits="63:0" type="address" />
+    <field name="Decoded Picture Status Buffer - Memory Address Attributes" dword="62" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="LCU ILDB Stream-Out Buffer - Address" dword="63" bits="63:0" type="address" />
+    <field name="LCU ILDB Stream-Out Buffer - Memory Address Attributes" dword="65" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <group count="8" dword="66" size="64">
+      <field name="Collocated MV Temporal Buffer - Address" dword="0" bits="63:0" type="address" />
+    </group>
+    <field name="Collocated MV Temporal Buffer - Memory Address Attributes" dword="82" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="VP9 Probability Buffer - Address" dword="83" bits="63:0" type="address" />
+    <field name="VP9 Probability Buffer - Memory Address Attributes" dword="85" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="VP9 Segment ID Buffer - Address" dword="86" bits="63:0" type="address" />
+    <field name="VP9 Segment ID Buffer - Memory Address Attributes" dword="88" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="VP9 HVD Line Row Store Buffer - Address" dword="89" bits="63:0" type="address" />
+    <field name="VP9 HVD Line Row Store Buffer - Memory Address Attributes" dword="91" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="VP9 HVD Tile Row Store Buffer - Address" dword="92" bits="63:0" type="address" />
+    <field name="VP9 HVD Tile Row Store Buffer - Memory Address Attributes" dword="94" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="SAO Stream-Out Data Destination Buffer - Base Address" dword="95" bits="63:0" type="address" />
+    <field name="SAO Stream-Out Data Destination Buffer - Memory Address Attributes" dword="97" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Frame Statistics Stream-Out Data Destination Buffer - Base Address" dword="98" bits="63:0" type="address" />
+    <field name="Frame Statistics Stream-Out Data Destination Buffer - Memory Address Attributes" dword="100" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="SSE Source Pixel Row Store Buffer - Base Address" dword="101" bits="63:0" type="address" />
+    <field name="SSE Source Pixel Row Store Buffer - Memory Address Attributes Read/Write" dword="103" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="HCP Scalability Slice State Buffer - Base Address" dword="104" bits="63:0" type="address" />
+    <field name="HCP Scalability Slice State Buffer - Memory Address Attributes" dword="106" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="HCP Scalability CABAC Decoded Syntax Elements Buffer - Base Address" dword="107" bits="63:0" type="address" />
+    <field name="HCP Scalability CABAC Decoded Syntax Elements Buffer - Memory Address Attributes" dword="109" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="MV Upper Right Column Store Buffer - Base Address" dword="110" bits="63:0" type="address" />
+    <field name="MV Upper Right Column Store Buffer - Memory Address Attributes" dword="112" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Intra Prediction Upper Right Column Store Buffer - Base Address" dword="113" bits="63:0" type="address" />
+    <field name="Intra Prediction Upper Right Column Store Buffer - Memory Address Attributes" dword="115" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Intra Prediction Left Recon Column Store Buffer - Base Address" dword="116" bits="63:0" type="address" />
+    <field name="Intra Prediction Left Recon Column Store Buffer - Memory Address Attributes" dword="118" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="HCP Scalability CABAC Decoded Syntax Elements Buffer Max Address" dword="119" bits="63:0" type="address" />
+  </instruction>
+  <instruction name="HCP_PIPE_MODE_SELECT" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Codec Select" dword="1" bits="0:0" type="uint">
+      <value name="Decode" value="0" />
+      <value name="Encode" value="1" />
+    </field>
+    <field name="Deblocker Stream-Out Enable" dword="1" bits="1:1" type="bool" />
+    <field name="PAK Pipeline Stream-Out Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Pic Status/Error Report Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Codec Standard Select" dword="1" bits="7:5" type="uint">
+      <value name="HEVC" value="0" />
+      <value name="VP9" value="1" />
+    </field>
+    <field name="Advanced Rate Control Enable" dword="1" bits="9:9" type="bool" />
+    <field name="VDEnc Mode" dword="1" bits="10:10" type="uint" prefix="VM">
+      <value name="MBEnc Mode" value="0" />
+      <value name="VDEnc Mode" value="1" />
+    </field>
+    <field name="RDOQ Enable" dword="1" bits="11:11" type="bool" />
+    <field name="PAK Frame Level Stream-Out Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Multi-Engine Mode" dword="1" bits="14:13" type="uint" />
+    <field name="Pipe Working Mode" dword="1" bits="16:15" type="uint">
+      <value name="Legacy Decoder/Encoder Mode" value="0" />
+      <value name="CABAC FE Only Decode Mode" value="1" />
+      <value name="Decoder BE Only or Encoder Mode" value="2" />
+    </field>
+    <field name="Media Soft-Reset Counter" dword="2" bits="31:0" type="uint" />
+    <field name="Pic Status/Error Report ID" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="HCP_QM_STATE" bias="2" length="18" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="16" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="4" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Prediction Type" dword="1" bits="0:0" type="uint">
+      <value name="Intra" value="0" />
+      <value name="Inter" value="1" />
+    </field>
+    <field name="SizeID" dword="1" bits="2:1" type="uint">
+      <value name="4x4" value="0" />
+      <value name="8x8" value="1" />
+      <value name="16x16" value="2" />
+      <value name="32x32" value="3" />
+    </field>
+    <field name="Color Component" dword="1" bits="4:3" type="uint">
+      <value name="Luma" value="0" />
+      <value name="Chroma Cb" value="1" />
+      <value name="Chroma Cr" value="2" />
+    </field>
+    <field name="DC Coefficient" dword="1" bits="12:5" type="uint" />
+    <group count="64" dword="2" size="8">
+      <field name="Quantizer Matrix 8x8" dword="0" bits="7:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="HCP_RDOQ_STATE" bias="2" length="9" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="21" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Intra RDOQ" dword="1" bits="0:0" type="bool" />
+    <field name="Inter RDOQ" dword="1" bits="1:1" type="bool" />
+    <group count="26" dword="2" size="16">
+      <field name="Lambda Intra Luma" dword="0" bits="15:0" type="uint" />
+    </group>
+    <group count="26" dword="15" size="16">
+      <field name="Lambda Intra Chroma" dword="0" bits="15:0" type="uint" />
+    </group>
+    <group count="26" dword="28" size="16">
+      <field name="Lambda Inter Luma" dword="0" bits="15:0" type="uint" />
+    </group>
+    <group count="26" dword="41" size="16">
+      <field name="Lambda Inter Chroma" dword="0" bits="15:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="HCP_SLICE_STATE" bias="2" length="11" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="9" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="20" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Slice Horizontal Position" dword="1" bits="9:0" type="uint" />
+    <field name="Slice Vertical Position" dword="1" bits="25:16" type="uint" />
+    <field name="Next Slice Horizontal Position" dword="2" bits="9:0" type="uint" />
+    <field name="Next Slice Vertical Position" dword="2" bits="26:16" type="uint" />
+    <field name="Slice Type" dword="3" bits="1:0" type="uint" prefix="HCP_ST">
+      <value name="B Slice" value="0" />
+      <value name="P Slice" value="1" />
+      <value name="I Slice" value="2" />
+    </field>
+    <field name="Last Slice" dword="3" bits="2:2" type="bool" />
+    <field name="Slice QP Sign" dword="3" bits="3:3" type="uint" />
+    <field name="Dependent Slice" dword="3" bits="4:4" type="bool" />
+    <field name="Slice Temporal MVP Enable" dword="3" bits="5:5" type="bool" />
+    <field name="Slice QP" dword="3" bits="11:6" type="uint" />
+    <field name="Slice Cb QP Offset" dword="3" bits="16:12" type="int">
+      <value name="-12" value="20" />
+      <value name="-11" value="21" />
+      <value name="-10" value="22" />
+      <value name="-9" value="23" />
+      <value name="-8" value="24" />
+      <value name="-7" value="25" />
+      <value name="-6" value="26" />
+      <value name="-5" value="27" />
+      <value name="-4" value="28" />
+      <value name="-3" value="29" />
+      <value name="-2" value="30" />
+      <value name="-1" value="31" />
+    </field>
+    <field name="Slice Cr QP Offset" dword="3" bits="21:17" type="int">
+      <value name="-12" value="20" />
+      <value name="-11" value="21" />
+      <value name="-10" value="22" />
+      <value name="-9" value="23" />
+      <value name="-8" value="24" />
+      <value name="-7" value="25" />
+      <value name="-6" value="26" />
+      <value name="-5" value="27" />
+      <value name="-4" value="28" />
+      <value name="-3" value="29" />
+      <value name="-2" value="30" />
+      <value name="-1" value="31" />
+    </field>
+    <field name="Intra Ref Fetch Disable" dword="3" bits="22:22" type="bool" />
+    <field name="CU Chroma QP Offset Enable" dword="3" bits="23:23" type="bool" />
+    <field name="Last Slice of Tile" dword="3" bits="24:24" type="uint" />
+    <field name="Slice Header Disable Deblocking Filter" dword="4" bits="0:0" type="bool" />
+    <field name="Slice TC Offset Div2" dword="4" bits="4:1" type="int" />
+    <field name="Slice Beta Offset Div2" dword="4" bits="8:5" type="int" />
+    <field name="Slice Loop Filter Enable" dword="4" bits="10:10" type="bool" />
+    <field name="Slice SAO Chroma" dword="4" bits="11:11" type="bool" />
+    <field name="Slice SAO Luma" dword="4" bits="12:12" type="bool" />
+    <field name="MVD L1 Zero" dword="4" bits="13:13" type="bool" />
+    <field name="Low Delay" dword="4" bits="14:14" type="bool" />
+    <field name="Collocated From L0" dword="4" bits="15:15" type="bool" />
+    <field name="Log2 Weight Denominator Chroma" dword="4" bits="18:16" type="uint" />
+    <field name="Log2 Weight Denominator Luma" dword="4" bits="21:19" type="uint" />
+    <field name="CABAC Init" dword="4" bits="22:22" type="bool" />
+    <field name="Max Merge Index" dword="4" bits="25:23" type="uint" />
+    <field name="Collocated MV Temporal Buffer Index" dword="4" bits="28:26" type="uint" />
+    <field name="Slice Header Length" dword="5" bits="15:0" type="uint" />
+    <field name="Round Intra" dword="6" bits="23:20" type="uint">
+      <value name="+1/32" value="0" />
+      <value name="+2/32" value="1" />
+      <value name="+3/32" value="2" />
+      <value name="+4/32" value="3" />
+      <value name="+5/32" value="4" />
+      <value name="+6/32" value="5" />
+      <value name="+7/32" value="6" />
+      <value name="+8/32" value="7" />
+      <value name="+9/32" value="8" />
+      <value name="+10/32" value="9" />
+      <value name="+11/32" value="10" />
+      <value name="+12/32" value="11" />
+      <value name="+13/32" value="12" />
+      <value name="+14/32" value="13" />
+      <value name="+15/32" value="14" />
+      <value name="+16/32" value="15" />
+    </field>
+    <field name="Round Inter" dword="6" bits="29:26" type="uint">
+      <value name="+1/32" value="0" />
+      <value name="+2/32" value="1" />
+      <value name="+3/32" value="2" />
+      <value name="+4/32" value="3" />
+      <value name="+5/32" value="4" />
+      <value name="+6/32" value="5" />
+      <value name="+7/32" value="6" />
+      <value name="+8/32" value="7" />
+      <value name="+9/32" value="8" />
+      <value name="+10/32" value="9" />
+      <value name="+11/32" value="10" />
+      <value name="+12/32" value="11" />
+      <value name="+13/32" value="12" />
+      <value name="+14/32" value="13" />
+      <value name="+15/32" value="14" />
+      <value name="+16/32" value="15" />
+    </field>
+    <field name="CABAC Zero Word Insertion Enable" dword="7" bits="1:1" type="bool" />
+    <field name="Emulation Byte Slice Insert Enable" dword="7" bits="2:2" type="bool" />
+    <field name="Tail Insertion Present" dword="7" bits="8:8" type="bool" />
+    <field name="Slice Data Insertion Present" dword="7" bits="9:9" type="bool" />
+    <field name="Header Insertion Present" dword="7" bits="10:10" type="bool" />
+    <field name="Indirect PAK-BSE Data Start Offset" dword="8" bits="28:6" type="offset" />
+    <field name="Transform Skip Lambda" dword="9" bits="15:0" type="uint" />
+    <field name="Force SAO Parameters To Zero" dword="9" bits="31:31" type="bool" />
+    <field name="Transform Skip Number of Zero Coeffs Factor0" dword="10" bits="7:0" type="uint" />
+    <field name="Transform Skip Number of Non-Zero Coeffs Factor0" dword="10" bits="15:8" type="uint" />
+    <field name="Transform Skip Number of Zero Coeffs Factor1" dword="10" bits="23:16" type="uint" />
+    <field name="Transform Skip Number of Non-Zero Coeffs Factor1" dword="10" bits="31:24" type="uint" />
+  </instruction>
+  <instruction name="HCP_SURFACE_STATE" bias="2" length="4" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="2" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="Surface ID" dword="1" bits="31:28" type="uint" prefix="HCP">
+      <value name="Current Decoded Picture" value="0" />
+      <value name="Source Input Picture" value="1" />
+      <value name="Prev Reference Picture" value="2" />
+      <value name="Golden Reference Picture" value="3" />
+      <value name="AltRef Reference Picture" value="4" />
+    </field>
+    <field name="Y Offset for U(Cb)" dword="2" bits="14:0" type="uint" />
+    <field name="Surface Format" dword="2" bits="31:27" type="uint">
+      <value name="YUY2" value="0" />
+      <value name="RGB_8" value="1" />
+      <value name="AYUV4444" value="2" />
+      <value name="P010Variant" value="3" />
+      <value name="PLANAR_420_8" value="4" />
+      <value name="YCRCB_SwapY" value="5" />
+      <value name="YCRCB_SwapUV" value="6" />
+      <value name="YCRCB_SwapUVY" value="7" />
+      <value name="Y216/Y210" value="8" />
+      <value name="RGB_10" value="9" />
+      <value name="Y410" value="10" />
+      <value name="NV21 Planar_420_8" value="11" />
+      <value name="Y416" value="12" />
+      <value name="P010" value="13" />
+      <value name="P016" value="14" />
+      <value name="Y216Variant" value="17" />
+      <value name="Y416Variant" value="18" />
+      <value name="YUY2Variant" value="19" />
+      <value name="AYUV4444Variant" value="20" />
+    </field>
+    <field name="Default Alpha Value" dword="3" bits="15:0" type="uint" />
+    <field name="Y Offset for V(Cr)" dword="3" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="HCP_TILE_CODING" bias="1" length="14" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="13" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="21" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Tile Column Position" dword="2" bits="9:0" type="uint" />
+    <field name="Tile Row Position" dword="2" bits="25:16" type="uint" />
+    <field name="Last Tile of Column" dword="2" bits="31:31" type="bool" />
+    <field name="Tile Height In Minimum Coding Block Size" dword="3" bits="10:0" type="uint" />
+    <field name="Tile Width In Minimum Coding Block Size" dword="3" bits="26:16" type="uint" />
+    <field name="SAO Parameter Offset" dword="4" bits="31:0" type="uint" />
+    <field name="Bitstream Byte Offset" dword="4" bits="31:6" type="uint" />
+    <field name="PAK Frame Statistics Offset" dword="5" bits="31:6" type="uint" />
+    <field name="CU Level Stream-Out Offset" dword="6" bits="31:6" type="uint" />
+    <field name="Slice Size Stream-Out Offset" dword="7" bits="31:6" type="uint" />
+    <field name="CU Record Offset" dword="8" bits="31:6" type="uint" />
+    <field name="SSE Row Store Offset" dword="9" bits="31:6" type="uint" />
+    <field name="SAO Row Store Offset" dword="10" bits="31:6" type="uint" />
+    <field name="Tile Size Stream-Out Offset" dword="11" bits="31:6" type="uint" />
+    <field name="VP9 Probability Counter Stream-Out Offset" dword="12" bits="31:6" type="uint" />
+    <field name="HCP Scalability Synchronize Buffer - Base Address" dword="13" bits="63:0" type="address" />
+    <field name="HCP Scalability Synchronize Buffer - Attributes" dword="15" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+  </instruction>
+  <instruction name="HCP_TILE_STATE" bias="2" length="17" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="15" />
+    <field name="Media Instruction Command" dword="0" bits="22:16" type="uint" default="17" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Number of Tile Rows" dword="1" bits="4:0" type="uint" />
+    <field name="Number of Tile Columns" dword="1" bits="9:5" type="uint" />
+    <group count="5" dword="2" size="32">
+      <field name="Column Position" dword="0" bits="31:0" type="HCP_TILE_POSITION_IN_CTB" />
+    </group>
+    <group count="6" dword="7" size="32">
+      <field name="Row position" dword="0" bits="31:0" type="HCP_TILE_POSITION_IN_CTB" />
+    </group>
+    <field name="Ctb Column Position MSB" dword="13" bits="63:0" type="HCP_TILE_POSITION_IN_CTB_MSB" />
+    <field name="Ctb Row Position MSB" dword="15" bits="63:0" type="HCP_TILE_POSITION_IN_CTB_MSB" />
+  </instruction>
+  <instruction name="HCP_VP9_PAK_OBJECT" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="53" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Split_coding_unit_flag[x0][y0]" dword="1" bits="20:0" type="uint" />
+    <field name="CU Count" dword="1" bits="29:24" type="uint" />
+    <field name="Last SB of Tile" dword="1" bits="31:31" type="bool" />
+    <field name="Current SB X Address" dword="2" bits="15:0" type="uint" />
+    <field name="Current SB Y Address" dword="2" bits="31:16" type="uint" />
+    <field name="SSE ClassID 32x32_0" dword="4" bits="3:0" type="uint" />
+    <field name="SSE ClassID 32x32_1" dword="4" bits="7:4" type="uint" />
+    <field name="SSE ClassID 32x32_2" dword="4" bits="11:8" type="uint" />
+    <field name="SSE ClassID 32x32_3" dword="4" bits="15:12" type="uint" />
+    <field name="LCU Force Zero Coeff" dword="4" bits="16:16" type="bool" />
+  </instruction>
+  <instruction name="HCP_VP9_PIC_STATE" bias="2" length="42" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="40" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="48" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Width" dword="1" bits="13:0" type="uint" />
+    <field name="Frame Height" dword="1" bits="29:16" type="uint" />
+    <field name="Frame Type" dword="2" bits="0:0" type="uint" prefix="VP9">
+      <value name="Key Frame" value="0" />
+      <value name="Inter Frame" value="1" />
+    </field>
+    <field name="Adapt Probabilities" dword="2" bits="1:1" type="bool" />
+    <field name="Intra Only" dword="2" bits="2:2" type="bool" />
+    <field name="Allow Hi Precision MV" dword="2" bits="3:3" type="bool" />
+    <field name="Motion Compensation Filter Type" dword="2" bits="6:4" type="uint">
+      <value name="Eight-tap" value="0" />
+      <value name="Eight-tap-Smooth" value="1" />
+      <value name="Eight-tap-Sharp" value="2" />
+      <value name="Bilinear" value="3" />
+      <value name="Switchable" value="4" />
+    </field>
+    <field name="Reference Frame Sign Bias" dword="2" bits="9:7" type="uint" />
+    <field name="Use Prev in Find MV References" dword="2" bits="10:10" type="bool" />
+    <field name="Hybrid Prediction Mode" dword="2" bits="11:11" type="uint" />
+    <field name="Selectable TX Mode" dword="2" bits="12:12" type="uint" />
+    <field name="Last Frame Type" dword="2" bits="13:13" type="uint" prefix="VP9">
+      <value name="Key Frame" value="0" />
+      <value name="Non Key Frame" value="1" />
+    </field>
+    <field name="Refresh Frame Context Enable" dword="2" bits="14:14" type="bool" />
+    <field name="Error Resilient Mode Enable" dword="2" bits="15:15" type="bool" />
+    <field name="Frame Parallel Decoding Mode Enable" dword="2" bits="16:16" type="bool" />
+    <field name="Filter Level" dword="2" bits="22:17" type="uint" />
+    <field name="Sharpness Level" dword="2" bits="25:23" type="uint" />
+    <field name="Segmentation Enable" dword="2" bits="26:26" type="bool" />
+    <field name="Segmentation Update Map" dword="2" bits="27:27" type="bool" />
+    <field name="Segmentation Temporal Update" dword="2" bits="28:28" type="bool" />
+    <field name="Lossless Mode" dword="2" bits="29:29" type="bool" />
+    <field name="Segment ID Stream-Out Enable" dword="2" bits="30:30" type="bool" />
+    <field name="Segment ID Stream-In Enable" dword="2" bits="31:31" type="bool" />
+    <field name="Log2 Tile Column" dword="3" bits="3:0" type="uint">
+      <value name="1 Tile Column" value="0" />
+      <value name="2 Tile Column" value="1" />
+      <value name="4 Tile Column" value="2" />
+      <value name="8 Tile Column" value="3" />
+      <value name="16 Tile Column" value="4" />
+      <value name="32 Tile Column" value="5" />
+      <value name="64 Tile Column" value="6" />
+    </field>
+    <field name="Log2 Tile Row" dword="3" bits="9:8" type="uint">
+      <value name="1 Tile Row" value="0" />
+      <value name="2 Tile Row" value="1" />
+      <value name="4 Tile Row" value="2" />
+    </field>
+    <field name="SSE Enable" dword="3" bits="21:21" type="bool" />
+    <field name="Chroma Sampling Format" dword="3" bits="23:22" type="uint">
+      <value name="Format_420" value="0" />
+      <value name="Format_422" value="1" />
+      <value name="Format_444" value="2" />
+    </field>
+    <field name="Bit Depth" dword="3" bits="27:24" type="uint">
+      <value name="8-bit" value="0" />
+      <value name="10-bit" value="2" />
+      <value name="12-bit" value="4" />
+    </field>
+    <field name="Profile Level" dword="3" bits="31:28" type="uint">
+      <value name="Profile_0" value="0" />
+      <value name="Profile_1" value="1" />
+      <value name="Profile_2" value="2" />
+      <value name="Profile_3" value="3" />
+    </field>
+    <field name="Vertical Scale Factor for LAST" dword="4" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor for LAST" dword="4" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor for GOLDEN" dword="5" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor for GOLDEN" dword="5" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor for ALTREF" dword="6" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor for ALTREF" dword="6" bits="31:16" type="uint" />
+    <field name="Last Frame Width" dword="7" bits="13:0" type="uint" />
+    <field name="Last Frame Height" dword="7" bits="29:16" type="uint" />
+    <field name="Golden Frame Width" dword="8" bits="13:0" type="uint" />
+    <field name="Golden Frame Height" dword="8" bits="29:16" type="uint" />
+    <field name="Altref Frame Width" dword="9" bits="13:0" type="uint" />
+    <field name="Altref Frame Height" dword="9" bits="29:16" type="uint" />
+    <field name="Uncompressed Header Length" dword="10" bits="7:0" type="uint" />
+    <field name="First Partition Size" dword="10" bits="31:16" type="uint" />
+    <field name="Motion Comp Scaling Enable" dword="11" bits="1:1" type="bool" />
+    <field name="Compressed Header BIN count" dword="13" bits="15:0" type="uint" />
+    <field name="Luma AC Q Index Delta" dword="13" bits="23:16" type="uint" />
+    <field name="Tail Insertion Enable" dword="13" bits="24:24" type="bool" />
+    <field name="Header Insertion Enable" dword="13" bits="25:25" type="bool" />
+    <field name="Chroma AC Q Index Delta" dword="14" bits="4:0" type="int" />
+    <field name="Chroma DC Q Index Delta" dword="14" bits="12:8" type="int" />
+    <field name="Luma DC Q Index Delta" dword="14" bits="20:16" type="int" />
+    <field name="LF Ref Delta 0" dword="15" bits="6:0" type="int" />
+    <field name="LF Ref Delta 1" dword="15" bits="14:8" type="int" />
+    <field name="LF Ref Delta 2" dword="15" bits="22:16" type="int" />
+    <field name="LF Ref Delta 3" dword="15" bits="30:24" type="int" />
+    <field name="LF Mode Delta 0" dword="16" bits="6:0" type="int" />
+    <field name="LF Mode Delta 1" dword="16" bits="14:8" type="int" />
+    <field name="Bit Offset for LF Ref Delta" dword="17" bits="15:0" type="uint" />
+    <field name="Bit Offset for LF Mode Delta" dword="17" bits="31:16" type="uint" />
+    <field name="Bit Offset for QIndex" dword="18" bits="15:0" type="uint" />
+    <field name="Bit Offset for LF Level" dword="18" bits="31:16" type="uint" />
+    <field name="Non First Pass" dword="19" bits="16:16" type="bool" />
+    <field name="VDENC PAK_ONLY PASS" dword="19" bits="17:17" type="bool" />
+    <field name="Frame Bitrate Max Report" dword="19" bits="25:25" type="bool" />
+    <field name="Frame Bitrate Min Report" dword="19" bits="26:26" type="bool" />
+    <field name="Frame Bitrate Max" dword="20" bits="13:0" type="uint" />
+    <field name="Frame Bitrate Max Unit" dword="20" bits="31:31" type="bool" />
+    <field name="Frame Bitrate Min" dword="21" bits="13:0" type="uint" />
+    <field name="Frame Bitrate Min Unit" dword="21" bits="31:31" type="bool" />
+    <field name="Frame Delta QIndex Max" dword="22" bits="63:0" type="uint" />
+    <field name="Frame Delta QIndex Min" dword="24" bits="31:0" type="uint" />
+    <field name="Frame Delta LFMax" dword="25" bits="63:0" type="uint" />
+    <field name="Frame Delta LFMin" dword="27" bits="31:0" type="uint" />
+    <field name="Frame Delta QIndex LFMax Range" dword="28" bits="63:0" type="uint" />
+    <field name="Frame Delta QIndex LFMin Range" dword="30" bits="31:0" type="uint" />
+    <field name="Minimum Frame Size" dword="31" bits="15:0" type="uint" />
+    <field name="Minimum Frame Size Units" dword="31" bits="31:30" type="uint" prefix="VP9_MFSU">
+      <value name="4Kb" value="0" />
+      <value name="16Kb" value="1" />
+      <value name="Comaptibility mode" value="2" />
+      <value name="16 bytes" value="3" />
+    </field>
+    <field name="Bit Offset for First Partition Size" dword="32" bits="15:0" type="uint" />
+    <field name="Class0_SSE_Threshold0" dword="33" bits="15:0" type="uint" />
+    <field name="Class0_SSE_Threshold1" dword="33" bits="31:16" type="uint" />
+    <group count="8" dword="34" size="32">
+      <field name="SSE Threshold For Class1-8" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="HCP_VP9_SEGMENT_STATE" bias="2" length="8" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="6" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="50" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Segment ID" dword="1" bits="2:0" type="uint" />
+    <field name="Segment Skipped" dword="2" bits="0:0" type="bool" />
+    <field name="Segment Reference" dword="2" bits="2:1" type="uint" />
+    <field name="Segment Reference Enable" dword="2" bits="3:3" type="bool" />
+    <field name="Filter Level Ref0 Mode 0" dword="3" bits="5:0" type="uint" />
+    <field name="Filter Level Ref0 Mode 1" dword="3" bits="13:8" type="uint" />
+    <field name="Filter Level Ref1 Mode 0" dword="3" bits="21:16" type="uint" />
+    <field name="Filter Level Ref1 Mode 1" dword="3" bits="29:24" type="uint" />
+    <field name="Filter Level Ref2 Mode 0" dword="4" bits="5:0" type="uint" />
+    <field name="Filter Level Ref2 Mode 1" dword="4" bits="13:8" type="uint" />
+    <field name="Filter Level Ref3 Mode 0" dword="4" bits="21:16" type="uint" />
+    <field name="Filter Level Ref3 Mode 1" dword="4" bits="29:24" type="uint" />
+    <field name="Luma DC Quant Scale" dword="5" bits="14:0" type="uint" />
+    <field name="Luma AC Quant Scale" dword="5" bits="30:16" type="uint" />
+    <field name="Chroma DC Quant Scale" dword="6" bits="14:0" type="uint" />
+    <field name="Chroma AC Quant Scale" dword="6" bits="30:16" type="uint" />
+    <field name="Segment QIndex Delta" dword="7" bits="8:0" type="int" />
+    <field name="Segment LF Level Delta" dword="7" bits="22:16" type="int" />
+  </instruction>
+  <instruction name="HCP_WEIGHTOFFSET_STATE" bias="2" length="42" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="40" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="19" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Reference Picture List Select" dword="1" bits="0:0" type="uint" />
+    <group count="16" dword="2" size="32">
+      <field name="Luma Offsets" dword="0" bits="31:0" type="HCP_WEIGHTOFFSET_LUMA_ENTRY" />
+    </group>
+    <group count="16" dword="18" size="32">
+      <field name="Chroma Offsets" dword="0" bits="31:0" type="HCP_WEIGHTOFFSET_CHROMA_ENTRY" />
+    </group>
+    <group count="8" dword="34" size="32">
+      <field name="Chroma Offsets Ext" dword="0" bits="31:0" type="HCP_WEIGHTOFFSET_CHROMA_EXT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="HUC_STREAM_OBJECT" bias="2" length="5" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="32" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="11" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect Stream-In Data Length" dword="1" bits="31:0" type="uint" />
+    <field name="Indirect Stream-In - Address" dword="2" bits="28:0" type="address" />
+    <field name="HuC Processing" dword="2" bits="31:31" type="bool" />
+    <field name="Indirect Stream-Out - Address" dword="3" bits="28:0" type="address" />
+    <field name="Start Code Byte [0]" dword="4" bits="7:0" type="uint" />
+    <field name="Start Code Byte [1]" dword="4" bits="15:8" type="uint" />
+    <field name="Start Code Byte [2]" dword="4" bits="23:16" type="uint" />
+    <field name="Start Code Search Engine" dword="4" bits="24:24" type="bool" />
+    <field name="Emulation Prevention Byte Removal" dword="4" bits="25:25" type="bool" />
+    <field name="Stream-Out" dword="4" bits="26:26" type="bool" />
+    <field name="DRM Length Mode" dword="4" bits="28:27" type="uint">
+      <value name="Start Code Mode" value="0" />
+      <value name="Length Mode" value="1" />
+    </field>
+    <field name="HUC Bitstream Enable" dword="4" bits="29:29" type="bool" />
+  </instruction>
+  <instruction name="MEDIA_OBJECT" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="14:0" type="uint" default="4" />
+    <field name="Media Command Sub-Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Media Command Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="Indirect Data Length" dword="2" bits="16:0" type="uint" />
+    <field name="SubSlice Destination Select" dword="2" bits="18:17" type="uint">
+      <value name="Subslice 3" value="3" />
+      <value name="SubSlice 2" value="2" />
+      <value name="SubSlice 1" value="1" />
+      <value name="SubSlice 0" value="0" />
+    </field>
+    <field name="Slice Destination Select" dword="2" bits="20:19" type="uint">
+      <value name="Slice 0" value="0" />
+      <value name="Slice 1" value="1" />
+      <value name="Slice 2" value="2" />
+    </field>
+    <field name="Force Destination" dword="2" bits="22:22" type="uint" />
+    <field name="Thread Synchronization" dword="2" bits="24:24" type="uint">
+      <value name="No thread synchronization" value="0" />
+      <value name="Thread dispatch is synchronized by the 'spawn root thread' message" value="1" />
+    </field>
+    <field name="Slice Destination Select MSBs" dword="2" bits="26:25" type="uint" />
+    <field name="Children Present" dword="2" bits="31:31" type="bool" />
+    <field name="Indirect Data Start Address" dword="3" bits="31:0" type="address" />
+    <field name="X Position" dword="4" bits="8:0" type="uint" />
+    <field name="Y Position" dword="4" bits="24:16" type="uint" />
+    <field name="Block Color" dword="5" bits="23:16" type="uint" />
+    <group count="0" dword="6" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MEDIA_OBJECT_GRPID" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="5" />
+    <field name="Media Command Sub-Opcode" dword="0" bits="23:16" type="uint" default="6" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Media Command Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="Indirect Data Length" dword="2" bits="16:0" type="uint" />
+    <field name="End of Thread Group" dword="2" bits="23:23" type="uint" />
+    <field name="Indirect Data Start Address" dword="3" bits="31:0" type="address" />
+    <field name="X Position" dword="4" bits="8:0" type="uint" />
+    <field name="Y Position" dword="4" bits="24:16" type="uint" />
+    <field name="Block Color" dword="5" bits="23:16" type="uint" />
+    <field name="GroupID" dword="6" bits="31:0" type="uint" />
+    <group count="0" dword="7" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MEDIA_OBJECT_PRT" bias="2" length="16" engine="render">
+    <field name="DWord Length" dword="0" bits="14:0" type="uint" default="14" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="PRT_FenceType" dword="2" bits="22:22" type="uint">
+      <value name="Root thread queue" value="0" />
+      <value name="VFE state flush" value="1" />
+    </field>
+    <field name="PRT_Fence Needed" dword="2" bits="23:23" type="bool" />
+    <field name="Children Present" dword="2" bits="31:31" type="bool" />
+    <group count="12" dword="4" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MEDIA_OBJECT_WALKER" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="14:0" type="uint" default="15" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="3" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="Indirect Data Length" dword="2" bits="16:0" type="uint" />
+    <field name="Masked Dispatch" dword="2" bits="23:22" type="uint" />
+    <field name="Thread Synchronization" dword="2" bits="24:24" type="uint">
+      <value name="No thread synchronization" value="0" />
+      <value name="Thread dispatch is synchronized by the 'spawn root thread' message" value="1" />
+    </field>
+    <field name="Indirect Data Start Address" dword="3" bits="31:0" type="uint" />
+    <field name="Group ID Loop Select" dword="5" bits="31:8" type="uint">
+      <value name="No_Groups" value="0" />
+      <value name="Color_Groups" value="1" />
+      <value name="InnerLocal_Groups" value="2" />
+      <value name="MidLocal_Groups" value="3" />
+      <value name="OuterLocal_Groups" value="4" />
+      <value name="InnerGlobal_Groups" value="5" />
+    </field>
+    <field name="Mid-Loop Unit X" dword="6" bits="9:8" type="int" />
+    <field name="Local Mid-Loop Unit Y" dword="6" bits="13:12" type="int" />
+    <field name="Middle Loop Extra Steps" dword="6" bits="20:16" type="uint" />
+    <field name="Color Count Minus One" dword="6" bits="31:24" type="uint" />
+    <field name="Local Loop Exec Count" dword="7" bits="11:0" type="uint" />
+    <field name="Global Loop Exec Count" dword="7" bits="27:16" type="uint" />
+    <field name="Block Resolution X" dword="8" bits="10:0" type="uint" />
+    <field name="Block Resolution Y" dword="8" bits="26:16" type="uint" />
+    <field name="Local Start X" dword="9" bits="10:0" type="uint" />
+    <field name="Local Start Y" dword="9" bits="26:16" type="uint" />
+    <field name="Local Outer Loop Stride X" dword="11" bits="11:0" type="int" />
+    <field name="Local Outer Loop Stride Y" dword="11" bits="27:16" type="int" />
+    <field name="Local Inner Loop Unit X" dword="12" bits="11:0" type="int" />
+    <field name="Local Inner Loop Unit Y" dword="12" bits="27:16" type="int" />
+    <field name="Global Resolution X" dword="13" bits="10:0" type="uint" />
+    <field name="Global Resolution Y" dword="13" bits="26:16" type="uint" />
+    <field name="Global Start X" dword="14" bits="11:0" type="int" />
+    <field name="Global Start Y" dword="14" bits="27:16" type="int" />
+    <field name="Global Outer Loop Stride X" dword="15" bits="11:0" type="int" />
+    <field name="Global Outer Loop Stride Y" dword="15" bits="27:16" type="int" />
+    <field name="Global Inner Loop Unit X" dword="16" bits="11:0" type="int" />
+    <field name="Global Inner Loop Unit Y" dword="16" bits="27:16" type="int" />
+    <group count="0" dword="17" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MEDIA_STATE_FLUSH" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="0" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="Flush to GO" dword="1" bits="7:7" type="bool" />
+  </instruction>
+  <instruction name="MEDIA_VFE_STATE" bias="2" length="9" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="7" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Per Thread Scratch Space" dword="1" bits="3:0" type="uint" />
+    <field name="Stack Size" dword="1" bits="7:4" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="1" bits="47:10" type="address" />
+    <field name="Dispatch Load Balance" dword="3" bits="2:2" type="uint">
+      <value name="Color LSB" value="1" />
+      <value name="Least Loaded" value="0" />
+    </field>
+    <field name="Number of URB Entries" dword="3" bits="15:8" type="uint" />
+    <field name="Maximum Number of Threads" dword="3" bits="31:16" type="uint" />
+    <field name="Maximum Number of Dual-Subslices" dword="4" bits="7:0" type="uint" />
+    <field name="CURBE Allocation Size" dword="5" bits="15:0" type="uint" />
+    <field name="URB Entry Allocation Size" dword="5" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="MFD_AVC_BSD_OBJECT" bias="2" length="7" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="5" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="8" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect BSD Data Length" dword="1" bits="31:0" type="uint" />
+    <field name="Indirect BSD Data Start Address" dword="2" bits="28:0" type="offset" />
+    <field name="Inline Data" dword="3" bits="95:0" type="INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT" />
+  </instruction>
+  <instruction name="MFD_AVC_SLICEADDR" bias="2" length="4" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="2" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="7" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect BSD Data Length" dword="1" bits="31:0" type="uint" />
+    <field name="Indirect BSD Data Start Address" dword="2" bits="28:0" type="offset" />
+    <field name="Driver Provided NAL Type Value" dword="3" bits="7:0" type="uint" />
+    <field name="AVC NAL Type First Byte Override" dword="3" bits="8:8" type="uint">
+      <value name="Use Bitstream Decoded NAL Type" value="0" />
+      <value name="Use Driver Programmed NAL Type" value="1" />
+    </field>
+  </instruction>
+  <instruction name="MFX_AVC_IMG_STATE" bias="2" length="21" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="19" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Size" dword="1" bits="15:0" type="uint" />
+    <field name="Frame Width" dword="2" bits="7:0" type="uint" />
+    <field name="Frame Height" dword="2" bits="23:16" type="uint" />
+    <field name="Image Structure" dword="3" bits="9:8" type="uint">
+      <value name="Frame Picture" value="0" />
+      <value name="Top Field Picture" value="1" />
+      <value name="Bottom Field Picture" value="3" />
+      <value name="Invalid, not allowed." value="2" />
+    </field>
+    <field name="Weighted BiPrediction IDC" dword="3" bits="11:10" type="uint">
+      <value name="DEFAULT" value="0" />
+      <value name="EXPLICIT" value="1" />
+      <value name="IMPLICIT" value="2" />
+    </field>
+    <field name="Weighted Prediction Enable" dword="3" bits="12:12" type="bool" />
+    <field name="Rho Domain Rate Control Enable" dword="3" bits="13:13" type="bool" />
+    <field name="First Chroma QP Offset" dword="3" bits="20:16" type="int" />
+    <field name="Second Chroma QP Offset" dword="3" bits="28:24" type="int" />
+    <field name="Field Picture" dword="4" bits="0:0" type="bool" />
+    <field name="MBAFF Mode" dword="4" bits="1:1" type="bool" />
+    <field name="Frame MB Only" dword="4" bits="2:2" type="bool" />
+    <field name="8x8 IDCT Transform Mode" dword="4" bits="3:3" type="bool" />
+    <field name="Direct 8x8 Inference" dword="4" bits="4:4" type="bool" />
+    <field name="Constrained Intra Prediction" dword="4" bits="5:5" type="bool" />
+    <field name="Non-Reference Picture" dword="4" bits="6:6" type="bool" />
+    <field name="Entropy Coding Sync Enable" dword="4" bits="7:7" type="bool" />
+    <field name="MB MV Format" dword="4" bits="8:8" type="uint">
+      <value name="IGNORE" value="0" />
+      <value name="FOLLOW" value="1" />
+    </field>
+    <field name="Chroma Format IDC" dword="4" bits="11:10" type="uint">
+      <value name="Monochrome picture" value="0" />
+      <value name="4:2:0 picture" value="1" />
+      <value name="4:2:2 picture (not supported)" value="2" />
+      <value name="4:4:4 picture (not supported)" value="3" />
+    </field>
+    <field name="MV Unpacked Enable" dword="4" bits="12:12" type="bool" />
+    <field name="Load Bitstream Pointer Per Slice" dword="4" bits="14:14" type="bool" />
+    <field name="MB Status Read" dword="4" bits="15:15" type="bool" />
+    <field name="Minimum Frame Size" dword="4" bits="31:16" type="uint" />
+    <field name="Intra MB Max Bit Control" dword="5" bits="0:0" type="bool" />
+    <field name="Inter MB Max Bit Control" dword="5" bits="1:1" type="bool" />
+    <field name="Frame Bitrate Max Report" dword="5" bits="2:2" type="bool" />
+    <field name="Frame Bitrate Min Report" dword="5" bits="3:3" type="bool" />
+    <field name="Force IPCM Control" dword="5" bits="7:7" type="bool" />
+    <field name="MB Level Rate Control" dword="5" bits="9:9" type="bool" />
+    <field name="Minimum Frame Size Units" dword="5" bits="11:10" type="uint" prefix="AVC_MFSU">
+      <value name="Compatibility mode" value="0" />
+      <value name="16 bytes" value="1" />
+      <value name="4Kb" value="2" />
+      <value name="16Kb" value="3" />
+    </field>
+    <field name="Non First Pass" dword="5" bits="16:16" type="uint" />
+    <field name="Trellis Quantization Chroma Disable" dword="5" bits="27:27" type="bool" />
+    <field name="Trellis Quantization Rounding" dword="5" bits="30:28" type="uint" />
+    <field name="Trellis Quantization Enable" dword="5" bits="31:31" type="bool" />
+    <field name="Intra MB Conformance Max Size" dword="6" bits="11:0" type="uint" />
+    <field name="Inter MB Conformance Max Size" dword="6" bits="27:16" type="uint" />
+    <field name="Slice Delta QP Max[0]" dword="8" bits="7:0" type="int" />
+    <field name="Slice Delta QP Max[1]" dword="8" bits="15:8" type="int" />
+    <field name="Slice Delta QP Max[2]" dword="8" bits="23:16" type="uint" />
+    <field name="Slice Delta QP Max[3]" dword="8" bits="31:24" type="int" />
+    <field name="Slice Delta QP Min[0]" dword="9" bits="7:0" type="int" />
+    <field name="Slice Delta QP Min[1]" dword="9" bits="15:8" type="int" />
+    <field name="Slice Delta QP Min[2]" dword="9" bits="23:16" type="int" />
+    <field name="Slice Delta QP Min[3]" dword="9" bits="31:24" type="int" />
+    <field name="Frame Bitrate Min" dword="10" bits="13:0" type="uint" />
+    <field name="Frame Bitrate Min Unit Mode" dword="10" bits="14:14" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Min Unit" dword="10" bits="15:15" type="uint" />
+    <field name="Frame Bitrate Max" dword="10" bits="29:16" type="uint" />
+    <field name="Frame Bitrate Max Unit Mode" dword="10" bits="30:30" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Max Unit" dword="10" bits="31:31" type="uint" />
+    <field name="Frame Bitrate Min Delta" dword="11" bits="14:0" type="uint" />
+    <field name="Frame Bitrate Max Delta" dword="11" bits="30:16" type="uint" />
+    <field name="Slice Stats Stream-Out Enable" dword="11" bits="31:31" type="bool" />
+    <field name="Initial QP Value" dword="13" bits="7:0" type="int" />
+    <field name="Number of Active Reference Pictures from L0" dword="13" bits="13:8" type="uint" />
+    <field name="Number of Active Reference Pictures from L1" dword="13" bits="21:16" type="uint" />
+    <field name="Number of Reference Frames" dword="13" bits="28:24" type="uint" />
+    <field name="Current Picture Has Performed MMCO5" dword="13" bits="29:29" type="bool" />
+    <field name="Pic Order Present" dword="14" bits="0:0" type="bool" />
+    <field name="Delta Pic Order Always Zero" dword="14" bits="1:1" type="bool" />
+    <field name="Pic Order Count Type" dword="14" bits="3:2" type="uint" />
+    <field name="Slice Group Map Type" dword="14" bits="10:8" type="uint" />
+    <field name="Redundant Pic Count Present" dword="14" bits="11:11" type="bool" />
+    <field name="Number of Slice Groups" dword="14" bits="14:12" type="uint" />
+    <field name="Deblocking Filter Control Present" dword="14" bits="15:15" type="bool" />
+    <field name="Log2 Max Frame Number" dword="14" bits="23:16" type="uint" />
+    <field name="Log2 Max Pic Order Count LSB" dword="14" bits="31:24" type="uint" />
+    <field name="Slice Group Change Rate" dword="15" bits="15:0" type="uint" />
+    <field name="Current Picture Frame Number" dword="15" bits="31:16" type="uint" />
+    <field name="Current Frame View ID" dword="16" bits="9:0" type="uint" />
+    <field name="Max View IDXL0" dword="16" bits="15:12" type="uint" />
+    <field name="Max View IDXL1" dword="16" bits="21:18" type="uint" />
+    <field name="Inter View Order Disable" dword="16" bits="31:31" type="bool" />
+    <field name="Fractional QP Input" dword="17" bits="2:0" type="uint" />
+    <field name="Fractional QP Offset" dword="17" bits="5:3" type="uint" />
+    <field name="Extended Rho Domain Statistics Enable" dword="17" bits="8:8" type="bool" />
+    <field name="Rho Domain Average MB QP" dword="17" bits="21:16" type="uint" />
+    <field name="Threshold Size" dword="19" bits="31:0" type="uint" />
+    <field name="Target Slice Size" dword="20" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MFX_MPEG2_PIC_STATE" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Scan Order" dword="1" bits="6:6" type="uint">
+      <value name="MPEG_ZIGZAG_SCAN" value="0" />
+      <value name="MPEG_ALTERNATE_VERTICAL_SCAN" value="1" />
+    </field>
+    <field name="Intra VLC Format" dword="1" bits="7:7" type="uint" />
+    <field name="Quantizer Scale Type" dword="1" bits="8:8" type="uint">
+      <value name="MPEG_QSCALE_LINEAR" value="0" />
+      <value name="MPEG_QSCALE_NONLINEAR" value="1" />
+    </field>
+    <field name="Concealment MV" dword="1" bits="9:9" type="bool" />
+    <field name="Frame Prediction Frame DCT" dword="1" bits="10:10" type="uint" />
+    <field name="Top Field First" dword="1" bits="11:11" type="bool" />
+    <field name="Picture Structure" dword="1" bits="13:12" type="uint">
+      <value name="MPEG_TOP_FIELD" value="1" />
+      <value name="MPEG_BOTTOM_FIELD" value="2" />
+      <value name="MPEG_FRAME" value="3" />
+    </field>
+    <field name="Intra DC Precision" dword="1" bits="15:14" type="uint" />
+    <field name="F_code[0][0]" dword="1" bits="19:16" type="uint" />
+    <field name="F_code[0][1]" dword="1" bits="23:20" type="uint" />
+    <field name="F_code[1][0]" dword="1" bits="27:24" type="uint" />
+    <field name="F_code[1][1]" dword="1" bits="31:28" type="uint" />
+    <field name="Disable Mismatch" dword="2" bits="0:0" type="bool" />
+    <field name="Mismatch Control Disable" dword="2" bits="1:1" type="bool" />
+    <field name="Picture Coding Type" dword="2" bits="10:9" type="uint">
+      <value name="MPEG_I_PICTURE" value="1" />
+      <value name="MPEG_P_PICTURE" value="2" />
+      <value name="MPEG_B_PICTURE" value="3" />
+    </field>
+    <field name="Load Bitstream Pointer Per Slice" dword="2" bits="14:14" type="bool" />
+    <field name="P/B Slice Predicted MV Override" dword="2" bits="24:24" type="uint">
+      <value name="Predicted" value="0" />
+      <value name="ZERO" value="1" />
+    </field>
+    <field name="P/B Slice Predicted Bi-direction MV Type Override" dword="2" bits="26:25" type="uint" prefix="MPEG2_MVTO">
+      <value name="BID" value="0" />
+      <value name="RESERVED" value="1" />
+      <value name="FWD" value="2" />
+      <value name="BWD" value="3" />
+    </field>
+    <field name="P/B Slice Concealment Mode" dword="2" bits="29:28" type="uint" prefix="MPEG2_CM">
+      <value name="INTER" value="0" />
+      <value name="LEFT" value="1" />
+      <value name="ZERO" value="2" />
+      <value name="INTRA" value="3" />
+    </field>
+    <field name="I Slice Concealment Mode" dword="2" bits="31:31" type="uint" prefix="MPEG2_CM">
+      <value name="Intra Concealment" value="0" />
+      <value name="Inter Concealment" value="1" />
+    </field>
+    <field name="Frame Width In MBs" dword="3" bits="7:0" type="uint" />
+    <field name="Frame Height In MBs" dword="3" bits="23:16" type="uint" />
+    <field name="Slice Concealment Disable" dword="3" bits="31:31" type="bool" />
+    <field name="Round Intra DC" dword="4" bits="2:1" type="uint" />
+    <field name="Round Inter DC" dword="4" bits="6:4" type="uint" />
+    <field name="Round Intra AC" dword="4" bits="10:8" type="uint" />
+    <field name="Round Inter AC," dword="4" bits="14:12" type="uint" />
+    <field name="Minimum Frame Size" dword="4" bits="31:16" type="uint" />
+    <field name="Intra MB Max Bit Control" dword="5" bits="0:0" type="uint" />
+    <field name="Inter MB Max Bit Control" dword="5" bits="1:1" type="uint" />
+    <field name="Frame Bitrate Max Report" dword="5" bits="2:2" type="uint" />
+    <field name="Frame Bitrate Min Report" dword="5" bits="3:3" type="uint" />
+    <field name="MBRateControlMask" dword="5" bits="9:9" type="uint" />
+    <field name="Minimum Frame Size Units" dword="5" bits="11:10" type="uint" prefix="MPEG2_MFSU">
+      <value name="Compatibility mode" value="0" />
+      <value name="16 bytes" value="1" />
+      <value name="4Kb" value="2" />
+      <value name="16Kb" value="3" />
+    </field>
+    <field name="Inter MB Force CBP to Zero Control" dword="5" bits="12:12" type="uint" />
+    <field name="Frame Size Control" dword="5" bits="16:16" type="uint" />
+    <field name="Intra MB Conformance Max Size" dword="6" bits="11:0" type="uint" />
+    <field name="Inter MB Conformance Max Size" dword="6" bits="27:16" type="uint" />
+    <field name="Slice Delta QP Max[0]" dword="8" bits="7:0" type="int" />
+    <field name="Slice Delta QP Max[1]" dword="8" bits="15:8" type="int" />
+    <field name="Slice Delta QP Max[2]" dword="8" bits="23:16" type="int" />
+    <field name="Slice Delta QP Max[3]" dword="8" bits="31:24" type="int" />
+    <field name="Slice Delta QP Min[0]" dword="9" bits="7:0" type="int" />
+    <field name="Slice Delta QP Min[1]" dword="9" bits="15:8" type="int" />
+    <field name="Slice Delta QP Min[2]" dword="9" bits="23:16" type="int" />
+    <field name="Slice Delta QP Min[3]" dword="9" bits="31:24" type="int" />
+    <field name="Frame Bitrate Min" dword="10" bits="13:0" type="uint" />
+    <field name="Frame Bitrate Min Unit Mode" dword="10" bits="14:14" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Min Unit" dword="10" bits="15:15" type="uint" />
+    <field name="Frame Bitrate Max" dword="10" bits="29:16" type="uint" />
+    <field name="Frame Bitrate Max Unit Mode" dword="10" bits="30:30" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Max Unit" dword="10" bits="31:31" type="uint" />
+    <field name="Frame Bitrate Min Delta" dword="11" bits="14:0" type="uint" />
+    <field name="Frame Bitrate Max Delta" dword="11" bits="30:16" type="uint" />
+  </instruction>
+  <instruction name="MFX_PIPE_BUF_ADDR_STATE" bias="2" length="65" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="63" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pre Deblocking Destination - Address" dword="1" bits="47:6" type="address" />
+    <field name="Pre Deblocking Destination - Attributes" dword="3" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Post Deblocking Destination - Address" dword="4" bits="47:6" type="address" />
+    <field name="Post Deblocking Destination - Attributes" dword="6" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Original Uncompressed Picture Source - Address" dword="7" bits="47:6" type="address" />
+    <field name="Original Uncompressed Picture Source - Attributes" dword="9" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Stream-Out Data Destination - Address" dword="10" bits="47:6" type="address" />
+    <field name="Stream-Out Data Destination - Attributes" dword="12" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Intra Row Store Scratch Buffer - Address" dword="13" bits="47:6" type="address" />
+    <field name="Intra Row Store Scratch Buffer - Attributes" dword="15" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocking Filter Row Store Scratch - Address" dword="16" bits="47:6" type="address" />
+    <field name="Deblocking Filter Row Store Scratch - Attributes" dword="18" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <group count="16" dword="19" size="64">
+      <field name="Reference Picture - Address" dword="0" bits="63:0" type="address" />
+    </group>
+    <field name="Reference Picture - Attributes" dword="51" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="MB Status Buffer - Address" dword="52" bits="47:6" type="address" />
+    <field name="MB Status Buffer - Attributes" dword="54" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="MB ILDB Stream-Out Buffer - Address" dword="55" bits="47:6" type="address" />
+    <field name="MB ILDB Stream-Out Buffer - Attributes" dword="57" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Second MB ILDB Stream-Out Buffer - Address" dword="58" bits="47:6" type="address" />
+    <field name="Second MB ILDB Stream-Out Buffer - Attributes" dword="60" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <group count="16" dword="61" size="2">
+      <field name="Reference Picture - Memory Compression Mode" dword="0" bits="1:1" type="uint" />
+      <field name="Reference Picture - Memory Compression Enable" dword="0" bits="0:0" type="bool" />
+    </group>
+    <field name="Scaled Reference Surface - Address" dword="62" bits="47:6" type="address" />
+    <field name="Scaled Reference Surface - Attributes" dword="64" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+  </instruction>
+  <instruction name="MFX_PIPE_MODE_SELECT" bias="2" length="5" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="3" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Standard Select" dword="1" bits="3:0" type="uint" prefix="SS">
+      <value name="MPEG2" value="0" />
+      <value name="VC1" value="1" />
+      <value name="AVC" value="2" />
+      <value name="JPEG" value="3" />
+      <value name="VP8" value="5" />
+      <value name="UVLD" value="15" />
+    </field>
+    <field name="Codec Select" dword="1" bits="4:4" type="uint">
+      <value name="Decode" value="0" />
+      <value name="Encode" value="1" />
+    </field>
+    <field name="Stitch Mode" dword="1" bits="5:5" type="bool" />
+    <field name="Frame Statistics Stream-Out Enable" dword="1" bits="6:6" type="bool" />
+    <field name="Scaled Surface Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Pre Deblocking Output Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Post Deblocking Output Enable" dword="1" bits="9:9" type="bool" />
+    <field name="Stream-Out Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Pic Error/Status Report Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Deblocker Stream-Out Enable" dword="1" bits="12:12" type="bool" />
+    <field name="VDEnc Mode" dword="1" bits="13:13" type="uint" prefix="VM">
+      <value name="MBEnc Mode" value="0" />
+      <value name="VDEnc Mode" value="1" />
+    </field>
+    <field name="Standalone VDEnc Mode Enable" dword="1" bits="14:14" type="bool" />
+    <field name="Decoder Mode Select" dword="1" bits="16:15" type="uint">
+      <value name="VLD Mode" value="0" />
+      <value name="IT Mode" value="1" />
+      <value name="Deblocker Mode" value="2" />
+      <value name="Interlayer Mode" value="3" />
+    </field>
+    <field name="Decoder Short Format Mode" dword="1" bits="17:17" type="uint">
+      <value name="Short Format Driver Interface" value="0" />
+      <value name="Long Format Driver Interface" value="1" />
+    </field>
+    <field name="Extended Stream-Out Enable" dword="1" bits="18:18" type="bool" />
+    <field name="AES Control" dword="1" bits="31:24" type="uint" />
+    <field name="Pic Status/Error Report ID" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MFX_VP8_ENCODER_CFG" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="1" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="4" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Performance Counter Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Final Bitstream Output Disable" dword="1" bits="1:1" type="bool" />
+    <field name="Token Statistics Output Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Bitstream Statistics Output Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Update Segment Feature Data Flag" dword="1" bits="4:4" type="bool" />
+    <field name="Skip Final Bitstream when Over/Underflow" dword="1" bits="5:5" type="bool" />
+    <field name="Rate Control Initial Pass" dword="1" bits="6:6" type="bool" />
+    <field name="Per Segment Delta Qindex / LoopFilter Disable" dword="1" bits="7:7" type="bool" />
+    <field name="Finer BRC Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Compressed Bitstream Output Disable" dword="1" bits="9:9" type="bool" />
+    <field name="VBSP Unit Power Clock Gating Disable" dword="1" bits="10:10" type="bool" />
+    <field name="Max Frame Bit count Rate Control Enable" dword="2" bits="0:0" type="bool" />
+    <field name="Min Frame Bit Count Rate Control Enable" dword="2" bits="1:1" type="bool" />
+    <field name="Max Inter MB Bit Count Check Enable" dword="2" bits="2:2" type="bool" />
+    <field name="Max Intra MB Bit Count Check Enable" dword="2" bits="3:3" type="bool" />
+    <field name="Intermediate Bit Buffer Overrun Enable" dword="2" bits="4:4" type="bool" />
+    <field name="Final Bitstream Buffer Overrun Enable" dword="2" bits="5:5" type="bool" />
+    <field name="QIndex Clamp High for Underflow" dword="2" bits="6:6" type="bool" />
+    <field name="QIndex Clamp High for Overflow" dword="2" bits="7:7" type="bool" />
+    <field name="Max Inter MB Bit Count" dword="3" bits="11:0" type="uint" />
+    <field name="Max Intra MB Bit Count Limit" dword="3" bits="27:16" type="uint" />
+    <field name="Frame Bitrate Max" dword="4" bits="13:0" type="uint" />
+    <field name="Frame Bitrate Max Unit" dword="4" bits="14:14" type="uint" />
+    <field name="Frame Bitrate Max Unit Mode" dword="4" bits="15:15" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Min" dword="4" bits="29:16" type="uint" />
+    <field name="Frame Bitrate Min Unit" dword="4" bits="30:30" type="uint" />
+    <field name="Frame Bitrate Min Unit Mode" dword="4" bits="31:31" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New mode" value="1" />
+    </field>
+    <field name="Frame Delta QIndex Max[0]" dword="5" bits="7:0" type="uint" />
+    <field name="Frame Delta QIndex Max[1]" dword="5" bits="15:8" type="uint" />
+    <field name="Frame Delta QIndex Max[2]" dword="5" bits="23:16" type="uint" />
+    <field name="Frame Delta QIndex Max[3]" dword="5" bits="31:24" type="uint" />
+    <field name="Frame Delta QIndex Min[0]" dword="6" bits="7:0" type="uint" />
+    <field name="Frame Delta QIndex Min[1]" dword="6" bits="15:8" type="uint" />
+    <field name="Frame Delta QIndex Min[2]" dword="6" bits="23:16" type="uint" />
+    <field name="Frame Delta QIndex Min[3]" dword="6" bits="31:24" type="uint" />
+    <field name="Per Segment Frame Delta QIndex Max[1]" dword="7" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta QIndex Min[1]" dword="8" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta QIndex Max[2]" dword="9" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta QIndex Min[2]" dword="10" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta QIndex Max[3]" dword="11" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta QIndex Min[3]" dword="12" bits="31:0" type="uint" />
+    <field name="Frame Delta Loop Filter Max[0]" dword="13" bits="7:0" type="uint" />
+    <field name="Frame Delta Loop Filter Max[1]" dword="13" bits="15:8" type="uint" />
+    <field name="Frame Delta Loop Filter Max[2]" dword="13" bits="23:16" type="uint" />
+    <field name="Frame Delta Loop Filter Max[3]" dword="13" bits="31:24" type="uint" />
+    <field name="Frame Delta Loop Filter Min[0]" dword="14" bits="7:0" type="uint" />
+    <field name="Frame Delta Loop Filter Min[1]" dword="14" bits="15:8" type="uint" />
+    <field name="Frame Delta Loop Filter Min[2]" dword="14" bits="23:16" type="uint" />
+    <field name="Frame Delta Loop Filter Min[3]" dword="14" bits="31:24" type="uint" />
+    <field name="Per Segment Frame Delta Loop Filter Max[1]" dword="15" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta Loop Filter Min[1]" dword="16" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta Loop Filter Max[2]" dword="17" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta Loop Filter Min[2]" dword="18" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta Loop Filter Max[3]" dword="19" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta Loop Filter Min[3]" dword="20" bits="31:0" type="uint" />
+    <field name="Frame Bitrate Max Delta" dword="21" bits="14:0" type="uint" />
+    <field name="Frame Bitrate Min Delta" dword="21" bits="30:16" type="uint" />
+    <field name="Minimum Frame Size" dword="22" bits="15:0" type="uint" />
+    <field name="Minimum Frame Size Unit" dword="22" bits="17:16" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New mode" value="1" />
+    </field>
+    <field name="Bitstream Format Version" dword="22" bits="22:20" type="uint" />
+    <field name="Show Frame" dword="22" bits="23:23" type="uint" />
+    <field name="Horizontal_Size_Code" dword="23" bits="15:0" type="uint" />
+    <field name="Vertical_Size_Code" dword="23" bits="31:16" type="uint" />
+    <field name="Frame Header Bit Count" dword="24" bits="31:0" type="uint" />
+    <field name="Frame Header Bin Buffer QIndex Update Pointer" dword="25" bits="31:0" type="uint" />
+    <field name="Frame Header Bin Buffer Loop Filter Update Pointer" dword="26" bits="31:0" type="uint" />
+    <field name="Frame Header Bin Buffer Token Update Pointer" dword="27" bits="31:0" type="uint" />
+    <field name="Frame Header Bin Buffer MV Update Pointer" dword="28" bits="31:0" type="uint" />
+    <field name="CV0" dword="29" bits="3:0" type="uint" />
+    <field name="CV1" dword="29" bits="7:4" type="uint" />
+    <field name="CV2" dword="29" bits="11:8" type="uint" />
+    <field name="CV3" dword="29" bits="15:12" type="uint" />
+    <field name="CV4" dword="29" bits="19:16" type="uint" />
+    <field name="CV5" dword="29" bits="23:20" type="uint" />
+    <field name="CV6" dword="29" bits="27:24" type="uint" />
+    <field name="CV7" dword="29" bits="31:28" type="uint" />
+  </instruction>
+  <instruction name="MFX_VP8_PIC_STATE" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command OpCode" dword="0" bits="26:24" type="uint" default="4" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Width" dword="1" bits="7:0" type="uint" />
+    <field name="Frame Height" dword="1" bits="23:16" type="uint" />
+    <field name="MC Filter Select" dword="2" bits="0:0" type="uint" />
+    <field name="Chroma Full Pixel MC Filter Mode" dword="2" bits="1:1" type="uint" />
+    <field name="DBLK Filter Type" dword="2" bits="4:4" type="uint" />
+    <field name="Key Frame" dword="2" bits="5:5" type="bool" />
+    <field name="Segmentation ID Stream-Out Enable" dword="2" bits="6:6" type="bool" />
+    <field name="Segmentation ID Stream-In Enable" dword="2" bits="7:7" type="bool" />
+    <field name="Segment Enable" dword="2" bits="8:8" type="bool" />
+    <field name="Update MB Segment Map" dword="2" bits="9:9" type="bool" />
+    <field name="MB NoCoeff Skip" dword="2" bits="10:10" type="bool" />
+    <field name="Mode Reference Loop Filter Delta Enable" dword="2" bits="11:11" type="bool" />
+    <field name="Golden Ref Picture MV Sign Bias" dword="2" bits="12:12" type="bool" />
+    <field name="Alternate Ref Pic MV Sign Bias" dword="2" bits="13:13" type="bool" />
+    <field name="Deblock Sharpness Level" dword="2" bits="18:16" type="uint" />
+    <field name="Log2 Num of Partition" dword="2" bits="25:24" type="uint">
+      <value name="1 Token partition" value="0" />
+      <value name="2 Token partition" value="1" />
+      <value name="4 Token partition" value="2" />
+      <value name="8 Token partition" value="3" />
+    </field>
+    <field name="DBLK Filter Level for Segment0" dword="3" bits="5:0" type="uint" />
+    <field name="DBLK Filter Level for Segment1" dword="3" bits="13:8" type="uint" />
+    <field name="DBLK Filter Level for Segment2" dword="3" bits="21:16" type="uint" />
+    <field name="DBLK Filter Level for Segment3" dword="3" bits="29:24" type="uint" />
+    <field name="Segment0 QIndex" dword="4" bits="6:0" type="uint" />
+    <field name="Segment1 QIndex" dword="4" bits="14:8" type="uint" />
+    <field name="Segment2 QIndex" dword="4" bits="22:16" type="uint" />
+    <field name="Segment3 QIndex" dword="4" bits="30:24" type="uint" />
+    <field name="Y2DC QIndex Delta" dword="5" bits="3:0" type="uint" />
+    <field name="Y2AC QIndex Delta Sign" dword="5" bits="4:4" type="uint" />
+    <field name="Y2AC QIndex Delta" dword="5" bits="11:8" type="uint" />
+    <field name="Y2AC QIndex Sign" dword="5" bits="12:12" type="uint" />
+    <field name="UVDC QIndex Delta" dword="5" bits="19:16" type="uint" />
+    <field name="UVDC QIndex Delta Sign" dword="5" bits="20:20" type="uint" />
+    <field name="UVAC QIndex Delta" dword="5" bits="27:24" type="uint" />
+    <field name="UVAC QIndex Delta Sign" dword="5" bits="28:28" type="uint" />
+    <field name="Y1DC QIndex Delta" dword="6" bits="3:0" type="uint" />
+    <field name="Y1DC QIndex Delta Sign" dword="6" bits="4:4" type="uint" />
+    <field name="Clamp QIndex Low" dword="7" bits="6:0" type="uint" />
+    <field name="Clamp QIndex High" dword="7" bits="14:8" type="uint" />
+    <field name="Quantizer Value [1][UVDC]" dword="8" bits="8:0" type="uint" />
+    <field name="Quantizer Value [1][UVAC]" dword="8" bits="24:16" type="uint" />
+    <field name="Quantizer Value [1][Y2DC]" dword="9" bits="8:0" type="uint" />
+    <field name="Quantizer Value [1][Y2AC]" dword="9" bits="24:16" type="uint" />
+    <field name="Quantizer Value [2][Y1DC]" dword="10" bits="8:0" type="uint" />
+    <field name="Quantizer Value [2][Y1AC]" dword="10" bits="24:16" type="uint" />
+    <field name="Quantizer Value [2][UVDC]" dword="11" bits="8:0" type="uint" />
+    <field name="Quantizer Value [2][UVAC]" dword="11" bits="24:16" type="uint" />
+    <field name="Quantizer Value [2][Y2DC]" dword="12" bits="8:0" type="uint" />
+    <field name="Quantizer Value [2][Y2AC]" dword="12" bits="24:16" type="uint" />
+    <field name="Quantizer Value [3][Y1DC]" dword="13" bits="8:0" type="uint" />
+    <field name="Quantizer Value [3][Y1AC]" dword="13" bits="24:16" type="uint" />
+    <field name="Quantizer Value [3][UVDC]" dword="14" bits="8:0" type="uint" />
+    <field name="Quantizer Value [3][UVAC]" dword="14" bits="24:16" type="uint" />
+    <field name="Quantizer Value [3][Y2DC]" dword="15" bits="8:0" type="uint" />
+    <field name="Quantizer Value [3][Y2AC]" dword="15" bits="24:16" type="uint" />
+    <field name="CoeffProbability Stream-In - Address" dword="16" bits="47:6" type="uint" />
+    <field name="CoeffProbability Stream-In - MOCS (Encoder Only)" dword="18" bits="6:0" type="uint" nonzero="true" />
+    <field name="CoeffProbability Stream-In - Arbitration Priority Control" dword="18" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="CoeffProbability Stream-In - Memory Compression Enable" dword="18" bits="9:9" type="bool" />
+    <field name="CoeffProbability Stream-In - Memory Compression Mode" dword="18" bits="10:10" type="uint" />
+    <field name="CoeffProbability Stream-In - Tiled Resource Mode" dword="18" bits="14:13" type="uint">
+      <value name="TRMODE_NONE" value="0" />
+      <value name="TRMODE_TILEYF" value="1" />
+      <value name="TRMODE_TILEYS" value="2" />
+    </field>
+    <field name="MBSegmentIDTreeProbs[0]" dword="19" bits="7:0" type="uint" />
+    <field name="MBSegmentIDTreeProbs[1]" dword="19" bits="15:8" type="uint" />
+    <field name="MBSegmentIDTreeProbs[2]" dword="19" bits="23:16" type="uint" />
+    <field name="InterPredFromGRefRefProb" dword="20" bits="7:0" type="uint" />
+    <field name="InterPredFromLastRefProb" dword="20" bits="15:8" type="uint" />
+    <field name="IntraMBProb" dword="20" bits="23:16" type="uint" />
+    <field name="MBNoCoeffSkipFalseProb" dword="20" bits="31:24" type="uint" />
+    <field name="YModeProb[0]" dword="21" bits="7:0" type="uint" />
+    <field name="YModeProb[1]" dword="21" bits="15:8" type="uint" />
+    <field name="YModeProb[2]" dword="21" bits="23:16" type="uint" />
+    <field name="YModeProb[3]" dword="21" bits="31:24" type="uint" />
+    <field name="UVModeProb[0]" dword="22" bits="7:0" type="uint" />
+    <field name="UVModeProb[1]" dword="22" bits="15:8" type="uint" />
+    <field name="UVModeProb[2]" dword="22" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[0][0]" dword="23" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[0][1]" dword="23" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[0][2]" dword="23" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[0][3]" dword="23" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[0][4]" dword="24" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[0][5]" dword="24" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[0][6]" dword="24" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[0][7]" dword="24" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[0][8]" dword="25" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[0][9]" dword="25" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[0][10]" dword="25" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[0][11]" dword="25" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[0][12]" dword="26" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[0][13]" dword="26" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[0][14]" dword="26" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[0][15]" dword="26" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[0][16]" dword="27" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[0][17]" dword="27" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[0][18]" dword="27" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[1][0]" dword="28" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[1][1]" dword="28" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[1][2]" dword="28" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[1][3]" dword="28" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[1][4]" dword="29" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[1][5]" dword="29" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[1][6]" dword="29" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[1][7]" dword="29" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[1][8]" dword="30" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[1][9]" dword="30" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[1][10]" dword="30" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[1][11]" dword="30" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[1][12]" dword="31" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[1][13]" dword="31" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[1][14]" dword="31" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[1][15]" dword="31" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[1][16]" dword="32" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[1][17]" dword="32" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[1][18]" dword="32" bits="23:16" type="uint" />
+    <field name="RefLFDelta0" dword="33" bits="6:0" type="int" />
+    <field name="RefLFDelta1" dword="33" bits="14:8" type="int" />
+    <field name="RefLFDelta2" dword="33" bits="22:16" type="int" />
+    <field name="RefLFDelta3" dword="33" bits="30:24" type="int" />
+    <field name="ModeLFDelta0" dword="34" bits="6:0" type="int" />
+    <field name="ModeLFDelta1" dword="34" bits="14:8" type="int" />
+    <field name="ModeLFDelta2" dword="34" bits="22:16" type="int" />
+    <field name="ModeLFDelta3" dword="34" bits="30:24" type="int" />
+    <field name="Segmentation ID Stream - Address" dword="35" bits="47:0" type="uint" />
+    <field name="CoeffProbability Stream-In - MOCS" dword="37" bits="6:0" type="uint" nonzero="true" />
+    <field name="Segmentation ID Stream - Arbitration Priority Control" dword="37" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Segmentation ID Stream - Memory Compression Enable" dword="37" bits="9:9" type="bool" />
+    <field name="Segmentation ID Stream - Memory Compression Mode" dword="37" bits="10:10" type="uint" />
+    <field name="Segmentation ID Stream - Tiled Resource Mode" dword="37" bits="14:13" type="uint">
+      <value name="TRMODE_NONE" value="0" />
+      <value name="TRMODE_TILEYF" value="1" />
+      <value name="TRMODE_TILEYS" value="2" />
+    </field>
+  </instruction>
+  <instruction name="MI_ARB_ON_OFF" bias="1" length="1">
+    <field name="Arbitration Enable" dword="0" bits="0:0" type="bool" default="1" />
+    <field name="Allow Lite Restore" dword="0" bits="1:1" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="8" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_BATCH_BUFFER_END" bias="1" length="1">
+    <field name="End Context" dword="0" bits="0:0" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="10" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_BATCH_BUFFER_START" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Address Space Indicator" dword="0" bits="8:8" type="uint" prefix="ASI">
+      <value name="GGTT" value="0" />
+      <value name="PPGTT" value="1" />
+    </field>
+    <field name="Resource Streamer Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Predication Enable" dword="0" bits="15:15" type="bool" />
+    <field name="Second Level Batch Buffer" dword="0" bits="22:22" type="uint">
+      <value name="First level batch" value="0" />
+      <value name="Second level batch" value="1" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="49" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Batch Buffer Start Address" dword="1" bits="63:2" type="address" />
+  </instruction>
+  <instruction name="MI_DISPLAY_FLIP" bias="2" length="3" engine="render|blitter">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Display Plane Select" dword="0" bits="13:8" type="uint">
+      <value name="Display Plane 1" value="0" />
+      <value name="Display Plane 2" value="1" />
+      <value name="Display Plane 3" value="2" />
+      <value name="Display Plane 4" value="4" />
+      <value name="Display Plane 5" value="5" />
+      <value name="Display Plane 6" value="6" />
+      <value name="Display Plane 7" value="7" />
+      <value name="Display Plane 8" value="8" />
+      <value name="Display Plane 9" value="9" />
+      <value name="Display Plane 10" value="10" />
+      <value name="Display Plane 11" value="11" />
+      <value name="Display Plane 12" value="12" />
+      <value name="Display Plane 13" value="13" />
+      <value name="Display Plane 14" value="14" />
+      <value name="Display Plane 15" value="15" />
+      <value name="Display Plane 16" value="16" />
+      <value name="Display Plane 17" value="17" />
+      <value name="Display Plane 18" value="18" />
+      <value name="Display Plane 19" value="19" />
+      <value name="Display Plane 20" value="20" />
+      <value name="Display Plane 21" value="21" />
+      <value name="Display Plane 22" value="22" />
+      <value name="Display Plane 23" value="23" />
+      <value name="Display Plane 24" value="24" />
+      <value name="Display Plane 25" value="25" />
+      <value name="Display Plane 26" value="26" />
+      <value name="Display Plane 27" value="27" />
+      <value name="Display Plane 28" value="28" />
+      <value name="Display Plane 29" value="29" />
+      <value name="Display Plane 30" value="30" />
+      <value name="Display Plane 31" value="31" />
+      <value name="Display Plane 32" value="32" />
+    </field>
+    <field name="Async Flip Indicator" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="20" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Tile Parameter" dword="1" bits="2:0" type="uint" />
+    <field name="Display Buffer Pitch" dword="1" bits="15:6" type="uint" />
+    <field name="Stereoscopic 3D Mode" dword="1" bits="31:31" type="bool" />
+    <field name="Flip Type" dword="2" bits="1:0" type="uint">
+      <value name="Sync Flip" value="0" />
+      <value name="Async Flip" value="1" />
+      <value name="Stereo 3D Flip" value="2" />
+    </field>
+    <field name="VRR Master Flip" dword="2" bits="11:11" type="uint" />
+    <field name="Display Buffer Base Address" dword="2" bits="31:12" type="address" />
+    <field name="Left Eye Display Buffer Base Address" dword="3" bits="31:12" type="address" />
+  </instruction>
+  <instruction name="MI_FLUSH_DW" bias="2" length="5" engine="blitter|video">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="3" />
+    <field name="Video Pipeline Cache Invalidate" dword="0" bits="7:7" type="bool" />
+    <field name="Notify Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Flush LLC" dword="0" bits="9:9" type="bool" />
+    <field name="Post-Sync Operation" dword="0" bits="15:14" type="uint">
+      <value name="No Write" value="0" />
+      <value name="Write Immediate Data" value="1" />
+      <value name="Write Timestamp" value="3" />
+    </field>
+    <field name="TLB Invalidate" dword="0" bits="18:18" type="bool" />
+    <field name="Store Data Index" dword="0" bits="21:21" type="uint" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="38" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Destination Address Type" dword="1" bits="2:2" type="uint" prefix="DAT">
+      <value name="PPGTT" value="0" />
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Address" dword="1" bits="47:3" type="address" />
+    <field name="Immediate Data" dword="3" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="MI_FORCE_WAKEUP" bias="2" length="2">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="29" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Force Media-Slice0 Awake" dword="1" bits="0:0" type="uint" />
+    <field name="Force Render Awake" dword="1" bits="1:1" type="uint" />
+    <field name="Force Media-Slice1 Awake" dword="1" bits="2:2" type="uint" />
+    <field name="Force Media-Slice2 Awake" dword="1" bits="3:3" type="uint" />
+    <field name="Force Media-Slice3 Awake" dword="1" bits="4:4" type="uint" />
+    <field name="Mask Bits" dword="1" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="MI_LOAD_REGISTER_IMM" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Byte Write Disables" dword="0" bits="11:8" type="uint" />
+    <field name="Add CS MMIO Start Offset" dword="0" bits="19:19" type="uint" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="34" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Register Offset" dword="1" bits="22:2" type="offset" />
+    <field name="Data DWord" dword="2" bits="31:0" type="uint" />
+    <group count="0" dword="3" size="64">
+      <field name="Register Offset" dword="0" bits="22:2" type="offset" />
+      <field name="Data DWord" dword="1" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MI_LOAD_REGISTER_MEM" bias="2" length="4">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="Add CS MMIO Start Offset" dword="0" bits="19:19" type="uint" />
+    <field name="Add Loop Variable" dword="0" bits="20:20" type="uint" />
+    <field name="Async Mode Enable" dword="0" bits="21:21" type="bool" />
+    <field name="Use Global GTT" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="41" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Register Address" dword="1" bits="22:2" type="offset" />
+    <field name="Memory Address" dword="2" bits="63:2" type="address" />
+  </instruction>
+  <instruction name="MI_LOAD_REGISTER_REG" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Add CS MMIO Start Offset Source" dword="0" bits="18:18" type="uint" />
+    <field name="Add CS MMIO Start Offset Destination" dword="0" bits="19:19" type="uint" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="42" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Source Register Address" dword="1" bits="22:2" type="offset" />
+    <field name="Destination Register Address" dword="2" bits="22:2" type="offset" />
+  </instruction>
+  <instruction name="MI_LOAD_SCAN_LINES_EXCL" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="0" />
+    <field name="Display (Plane) Select" dword="0" bits="21:19" type="uint">
+      <value name="Display Plane A" value="0" />
+      <value name="Display Plane B" value="1" />
+      <value name="Display Plane C" value="4" />
+      <value name="Display Plane D" value="5" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="19" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="End Scan Line Number" dword="1" bits="12:0" type="uint" />
+    <field name="Start Scan Line Number" dword="1" bits="28:16" type="uint" />
+  </instruction>
+  <instruction name="MI_LOAD_SCAN_LINES_INCL" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="0" />
+    <field name="Scan Line Event Done Forward" dword="0" bits="18:17" type="uint" />
+    <field name="Display (Plane) Select" dword="0" bits="21:19" type="uint">
+      <value name="Display Plane 1 A" value="0" />
+      <value name="Display Plane 1 B" value="1" />
+      <value name="Display Plane 1 C" value="4" />
+      <value name="Display Plane 1 D" value="5" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="18" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="End Scan Line Number" dword="1" bits="12:0" type="uint" />
+    <field name="Start Scan Line Number" dword="1" bits="28:16" type="uint" />
+  </instruction>
+  <instruction name="MI_SEMAPHORE_SIGNAL" bias="2" length="2">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="Target Engine Select" dword="0" bits="18:15" type="uint">
+      <value name="RCS" value="0" />
+      <value name="VCS0" value="1" />
+      <value name="BCS" value="2" />
+      <value name="VECS" value="3" />
+      <value name="VCS1" value="4" />
+      <value name="VCS2" value="6" />
+      <value name="VCS3" value="7" />
+      <value name="VCS4" value="8" />
+      <value name="VCS5" value="9" />
+      <value name="VCS6" value="10" />
+      <value name="VCS7" value="11" />
+      <value name="VECS1" value="12" />
+      <value name="VECS2" value="13" />
+      <value name="VECS3" value="14" />
+    </field>
+    <field name="Post-Sync Operation" dword="0" bits="21:21" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="27" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Target Context ID" dword="1" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MI_SET_CONTEXT" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="24" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Restore Inhibit" dword="1" bits="0:0" type="uint" />
+    <field name="Force Restore" dword="1" bits="1:1" type="uint" />
+    <field name="Resource Streamer State Restore Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Resource Streamer State Save Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Core Mode Enable" dword="1" bits="4:4" type="bool" />
+    <field name="Reserved, Must be 1" dword="1" bits="8:8" type="uint" />
+    <field name="Logical Context Address" dword="1" bits="31:12" type="address" />
+  </instruction>
+  <instruction name="MI_SET_PREDICATE" bias="1" length="1">
+    <field name="Predicate Enable" dword="0" bits="3:0" type="uint">
+      <value name="NOOP Never" value="0" />
+      <value name="NOOP On Result2 Clear" value="1" />
+      <value name="NOOP On Result2 Set" value="2" />
+      <value name="NOOP On Result Clear" value="3" />
+      <value name="NOOP On Result Set" value="4" />
+      <value name="NOOP Always" value="15" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="1" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_STORE_REGISTER_MEM" bias="2" length="4">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="Add CS MMIO Start Offset" dword="0" bits="19:19" type="uint" />
+    <field name="Predicate Enable" dword="0" bits="21:21" type="bool" />
+    <field name="Use Global GTT" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="36" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Register Address" dword="1" bits="22:2" type="offset" />
+    <field name="Memory Address" dword="2" bits="63:2" type="address" />
+  </instruction>
+  <instruction name="MI_WAIT_FOR_EVENT_2" bias="1" length="1" engine="render|blitter">
+    <field name="Display Plane Flip Pending Wait Enable" dword="0" bits="5:0" type="uint" />
+    <field name="Display Pipe Vertical Blank Wait Enable" dword="0" bits="10:8" type="uint" />
+    <field name="Display Pipe Scan Line Wait Enable" dword="0" bits="14:12" type="uint" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="4" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="PIPE_CONTROL" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Depth Cache Flush Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Stall At Pixel Scoreboard" dword="1" bits="1:1" type="bool" />
+    <field name="State Cache Invalidation Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Constant Cache Invalidation Enable" dword="1" bits="3:3" type="bool" />
+    <field name="VF Cache Invalidation Enable" dword="1" bits="4:4" type="bool" />
+    <field name="DC Flush Enable" dword="1" bits="5:5" type="bool" />
+    <field name="Pipe Control Flush Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Notify Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Indirect State Pointers Disable" dword="1" bits="9:9" type="bool" />
+    <field name="Texture Cache Invalidation Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Instruction Cache Invalidate Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Render Target Cache Flush Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Depth Stall Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Post Sync Operation" dword="1" bits="15:14" type="uint">
+      <value name="No Write" value="0" />
+      <value name="Write Immediate Data" value="1" />
+      <value name="Write PS Depth Count" value="2" />
+      <value name="Write Timestamp" value="3" />
+    </field>
+    <field name="Generic Media State Clear" dword="1" bits="16:16" type="bool" />
+    <field name="PSD Sync Enable" dword="1" bits="17:17" type="bool" />
+    <field name="TLB Invalidate" dword="1" bits="18:18" type="bool" />
+    <field name="Global Snapshot Count Reset" dword="1" bits="19:19" type="bool" />
+    <field name="Command Streamer Stall Enable" dword="1" bits="20:20" type="bool" />
+    <field name="Store Data Index" dword="1" bits="21:21" type="uint" />
+    <field name="LRI Post Sync Operation" dword="1" bits="23:23" type="uint">
+      <value name="No LRI Operation" value="0" />
+      <value name="MMIO Write Immediate Data" value="1" />
+    </field>
+    <field name="Destination Address Type" dword="1" bits="24:24" type="uint" prefix="DAT">
+      <value name="PPGTT" value="0" />
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Flush LLC" dword="1" bits="26:26" type="bool" />
+    <field name="Command Cache Invalidate Enable" dword="1" bits="29:29" type="bool" />
+    <field name="Address" dword="2" bits="47:2" type="address" />
+    <field name="Immediate Data" dword="4" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="SFC_AVS_STATE" bias="2" length="4" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="2" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="10" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="AVS State Body" dword="1" bits="1535:0" type="SFC_AVS_STATE_BODY" />
+  </instruction>
+  <instruction name="SFC_STATE" bias="2" length="32" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="30" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="1" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="10" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="SFC Pipe Mode" dword="1" bits="3:0" type="uint" />
+    <field name="SFC Input Chroma Sub-Sampling" dword="1" bits="7:4" type="uint">
+      <value name="4:0:0" value="0" />
+      <value name="4:2:0" value="1" />
+      <value name="4:2:2 Horizontal" value="2" />
+      <value name="4:4:4 Progressive/Interleaved" value="4" />
+    </field>
+    <field name="VD/VE Input Ordering Mode" dword="1" bits="10:8" type="uint" />
+    <field name="Input Frame Resolution Width" dword="2" bits="11:0" type="uint" />
+    <field name="Input Frame Resolution Height" dword="2" bits="27:16" type="uint" />
+    <field name="Output Surface Format Type" dword="3" bits="3:0" type="uint" />
+    <field name="RGBA Channel Swap Enable" dword="3" bits="5:5" type="bool" />
+    <field name="Output Chroma Downsampling Co-siting position Vertical Direction" dword="3" bits="11:8" type="uint">
+      <value name="0/8 (Left Full Pixel)" value="0" />
+      <value name="1/8" value="1" />
+      <value name="1/4 (2/8)" value="2" />
+      <value name="3/8" value="3" />
+      <value name="1/2 (4/8)" value="4" />
+      <value name="5/8" value="5" />
+      <value name="3/4 (6/8)" value="6" />
+      <value name="7/8" value="7" />
+      <value name="8/8" value="8" />
+    </field>
+    <field name="Output Chroma Downsampling Co-siting position Horizontal Direction" dword="3" bits="15:12" type="uint">
+      <value name="0/8 (Left Full Pixel)" value="0" />
+      <value name="1/8" value="1" />
+      <value name="1/4 (2/8)" value="2" />
+      <value name="3/8" value="3" />
+      <value name="1/2 (4/8)" value="4" />
+      <value name="5/8" value="5" />
+      <value name="3/4 (6/8)" value="6" />
+      <value name="7/8" value="7" />
+      <value name="8/8" value="8" />
+    </field>
+    <field name="IEF Enable" dword="4" bits="0:0" type="bool" />
+    <field name="Skin Tone Tuned IEF_Enable" dword="4" bits="1:1" type="bool" />
+    <field name="IEF4 Smooth Enable" dword="4" bits="2:2" type="bool" />
+    <field name="AVS Filter Mode" dword="4" bits="5:4" type="uint">
+      <value name="5x5 Poly-phase filter + Bilinear" value="0" />
+      <value name="8x8 poly-phase filter + Bilinear" value="1" />
+      <value name="Bilinear filter only" value="2" />
+    </field>
+    <field name="Adaptive Filter for all Channels" dword="4" bits="6:6" type="bool" />
+    <field name="AVS Scaling Enable" dword="4" bits="7:7" type="bool" />
+    <field name="Bypass Y Adaptive Filtering" dword="4" bits="8:8" type="bool" />
+    <field name="Bypass X Adaptive Filtering" dword="4" bits="9:9" type="bool" />
+    <field name="RGB Adaptive" dword="4" bits="10:10" type="bool" />
+    <field name="Chroma Upsampling Enable" dword="4" bits="12:12" type="bool" />
+    <field name="Mirror Type" dword="4" bits="13:13" type="uint">
+      <value name="Horizontal Flip" value="0" />
+      <value name="Vertical Flip" value="1" />
+    </field>
+    <field name="Mirror Mode" dword="4" bits="14:14" type="bool" />
+    <field name="Rotation Mode" dword="4" bits="17:16" type="uint">
+      <value name="0" value="0" />
+      <value name="90 CW" value="1" />
+      <value name="180 CW" value="2" />
+      <value name="270 CW" value="3" />
+    </field>
+    <field name="Color Fill Enable" dword="4" bits="18:18" type="bool" />
+    <field name="CSC Enable" dword="4" bits="19:19" type="bool" />
+    <field name="Bit Depth" dword="4" bits="21:20" type="uint" prefix="SFC">
+      <value name="10-bit" value="0" />
+      <value name="16-bit" value="1" />
+    </field>
+    <field name="Source Region Width" dword="5" bits="11:0" type="uint" />
+    <field name="Source Region Height" dword="5" bits="27:16" type="uint" />
+    <field name="Source Region Horizontal Offset" dword="6" bits="11:0" type="uint" />
+    <field name="Source Region Vertical Offset" dword="6" bits="27:16" type="uint" />
+    <field name="Output Frame Width" dword="7" bits="11:0" type="uint" />
+    <field name="Output Frame Height" dword="7" bits="27:16" type="uint" />
+    <field name="Scaled Region Size Width" dword="8" bits="11:0" type="uint" />
+    <field name="Scaled Region Size Height" dword="8" bits="27:16" type="uint" />
+    <field name="Scaled Region Horizontal Offset" dword="9" bits="12:0" type="int" />
+    <field name="Scaled Region Vertical Offset" dword="9" bits="28:16" type="int" />
+    <field name="Gray Bar Pixel - U/G" dword="10" bits="9:0" type="uint" />
+    <field name="Gray Bar Pixel - Y/R" dword="10" bits="25:16" type="uint" />
+    <field name="Gray Bar Pixel - A" dword="11" bits="9:0" type="uint" />
+    <field name="Gray Bar Pixel - V/B" dword="11" bits="25:16" type="uint" />
+    <field name="UV Default value for U channel" dword="12" bits="9:0" type="uint" />
+    <field name="UV Default value for V channel" dword="12" bits="25:16" type="uint" />
+    <field name="Alpha Default Value" dword="13" bits="9:0" type="uint" />
+    <field name="Scaling Factor Height" dword="14" bits="20:0" type="u4.17" />
+    <field name="Scaling Factor Width" dword="15" bits="20:0" type="u4.17" />
+    <field name="Output Frame - Address" dword="17" bits="47:12" type="uint" />
+    <field name="Output Frame - MOCS" dword="19" bits="6:0" type="uint" nonzero="true" />
+    <field name="Output Frame - Arbitration Priority Control" dword="19" bits="8:7" type="HEVC_ARBITRATION_PRIORITY" />
+    <field name="Output Frame - Memory Compression Enable" dword="19" bits="9:9" type="bool" />
+    <field name="Output Frame - Memory Compression Mode" dword="19" bits="10:10" type="uint" />
+    <field name="Output Frame - Cache Select" dword="19" bits="12:12" type="bool" />
+    <field name="Output Frame - Tiled Mode" dword="19" bits="14:13" type="uint">
+      <value name="TRMODE_NONE" value="0" />
+      <value name="TRMODE_TILEYF" value="1" />
+      <value name="TRMODE_TILEYS" value="2" />
+    </field>
+    <field name="AVS Line Buffer - Address" dword="20" bits="47:12" type="uint" />
+    <field name="AVS Line Buffer - MOCS" dword="22" bits="6:0" type="uint" nonzero="true" />
+    <field name="AVS Line Buffer - Arbitration Priority Control" dword="22" bits="8:7" type="HEVC_ARBITRATION_PRIORITY" />
+    <field name="AVS Line Buffer - Memory Compression Enable" dword="22" bits="9:9" type="bool" />
+    <field name="AVS Line Buffer - Memory Compression Mode" dword="22" bits="10:10" type="uint">
+      <value name="Horizontal Compression Mode" value="0" />
+    </field>
+    <field name="AVS Line Buffer - Cache Select" dword="22" bits="12:12" type="uint">
+      <value name="LLC" value="0" />
+    </field>
+    <field name="AVS Line Buffer - Tiled Mode" dword="22" bits="14:13" type="uint">
+      <value name="TRMODE_NONE" value="0" />
+      <value name="TRMODE_TILEYF" value="1" />
+      <value name="TRMODE_TILEYS" value="2" />
+    </field>
+    <field name="IEF Line Buffer - Address" dword="23" bits="47:12" type="uint" />
+    <field name="IEF Line Buffer - MOCS" dword="25" bits="6:0" type="uint" nonzero="true" />
+    <field name="IEF Line Buffer - Arbitration Priority Control" dword="25" bits="8:7" type="HEVC_ARBITRATION_PRIORITY" />
+    <field name="IEF Line Buffer - Memory Compression Enable" dword="25" bits="9:9" type="bool" />
+    <field name="IEF Line Buffer - Memory Compression Mode" dword="25" bits="10:10" type="uint" />
+    <field name="IEF Line Buffer - Cache Select" dword="25" bits="12:12" type="uint" />
+    <field name="IEF Line Buffer - Tiled Mode" dword="25" bits="14:13" type="uint">
+      <value name="TRMODE_NONE" value="0" />
+      <value name="TRMODE_TILEYF" value="1" />
+      <value name="TRMODE_TILEYS" value="2" />
+    </field>
+    <field name="Output Surface Tile Walk" dword="29" bits="0:0" type="uint" prefix="TW">
+      <value name="XMAJOR" value="0" />
+      <value name="YMAJOR" value="1" />
+    </field>
+    <field name="Output Surface Tiled" dword="29" bits="1:1" type="bool" />
+    <field name="Output Surface Half Pitch for Chroma" dword="29" bits="2:2" type="bool" />
+    <field name="Output Surface Pitch" dword="29" bits="19:3" type="uint" />
+    <field name="Output Surface Interleave Chroma Enable" dword="29" bits="27:27" type="bool" />
+    <field name="Output Surface Format" dword="29" bits="31:28" type="uint" />
+    <field name="Output Surface Y Offset for U" dword="30" bits="13:0" type="uint" />
+    <field name="Output Surface X Offset for U" dword="30" bits="29:16" type="uint" />
+    <field name="Output Surface Y Offset for V" dword="31" bits="13:0" type="uint" />
+    <field name="Output Surface X Offset for V" dword="31" bits="29:16" type="uint" />
+  </instruction>
+  <instruction name="STATE_BASE_ADDRESS" bias="2" length="22" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="20" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="1" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="General State Base Address Modify Enable" dword="1" bits="0:0" type="bool" />
+    <field name="General State MOCS" dword="1" bits="10:4" type="uint" nonzero="true" />
+    <field name="General State Base Address" dword="1" bits="63:12" type="address" />
+    <field name="Stateless Data Port Access MOCS" dword="3" bits="22:16" type="uint" nonzero="true" />
+    <field name="Surface State Base Address Modify Enable" dword="4" bits="0:0" type="bool" />
+    <field name="Surface State MOCS" dword="4" bits="10:4" type="uint" nonzero="true" />
+    <field name="Surface State Base Address" dword="4" bits="63:12" type="address" />
+    <field name="Dynamic State Base Address Modify Enable" dword="6" bits="0:0" type="bool" />
+    <field name="Dynamic State MOCS" dword="6" bits="10:4" type="uint" nonzero="true" />
+    <field name="Dynamic State Base Address" dword="6" bits="63:12" type="address" />
+    <field name="Indirect Object Base Address Modify Enable" dword="8" bits="0:0" type="bool" />
+    <field name="Indirect Object MOCS" dword="8" bits="10:4" type="uint" nonzero="true" />
+    <field name="Indirect Object Base Address" dword="8" bits="63:12" type="address" />
+    <field name="Instruction Base Address Modify Enable" dword="10" bits="0:0" type="bool" />
+    <field name="Instruction MOCS" dword="10" bits="10:4" type="uint" nonzero="true" />
+    <field name="Instruction Base Address" dword="10" bits="63:12" type="address" />
+    <field name="General State Buffer Size Modify Enable" dword="12" bits="0:0" type="bool" />
+    <field name="General State Buffer Size" dword="12" bits="31:12" type="uint" />
+    <field name="Dynamic State Buffer Size Modify Enable" dword="13" bits="0:0" type="bool" />
+    <field name="Dynamic State Buffer Size" dword="13" bits="31:12" type="uint" />
+    <field name="Indirect Object Buffer Size Modify Enable" dword="14" bits="0:0" type="bool" />
+    <field name="Indirect Object Buffer Size" dword="14" bits="31:12" type="uint" />
+    <field name="Instruction Buffer size Modify Enable" dword="15" bits="0:0" type="bool" />
+    <field name="Instruction Buffer Size" dword="15" bits="31:12" type="uint" />
+    <field name="Bindless Surface State Base Address Modify Enable" dword="16" bits="0:0" type="bool" />
+    <field name="Bindless Surface State MOCS" dword="16" bits="10:4" type="uint" nonzero="true" />
+    <field name="Bindless Surface State Base Address" dword="16" bits="63:12" type="address" />
+    <field name="Bindless Surface State Size" dword="18" bits="31:12" type="uint" />
+    <field name="Bindless Sampler State Base Address Modify Enable" dword="19" bits="0:0" type="bool" />
+    <field name="Bindless Sampler State MOCS" dword="19" bits="10:4" type="uint" nonzero="true" />
+    <field name="Bindless Sampler State Base Address" dword="19" bits="63:12" type="address" />
+    <field name="Bindless Sampler State Buffer Size" dword="21" bits="31:12" type="uint" />
+  </instruction>
+  <instruction name="VDENC_DS_REF_SURFACE_STATE" bias="2" length="10" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="8" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="3" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="8X Surface State" dword="2" bits="127:0" type="VDENC_SURFACE_STATE_FIELDS" />
+    <field name="4X Surface State" dword="6" bits="127:0" type="VDENC_SURFACE_STATE_FIELDS" />
+  </instruction>
+  <instruction name="VDENC_IMG_STATE" bias="2" length="35" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="33" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="5" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Bidirectional Mix Disable" dword="1" bits="2:2" type="bool" />
+    <field name="VDENC PerfMode" dword="1" bits="3:3" type="uint">
+      <value name="Speed" value="1" />
+    </field>
+    <field name="Time Budget Overflow Check" dword="1" bits="4:4" type="bool" />
+    <field name="VDEnc Extended PAK_OBJ_CMD Enable" dword="1" bits="6:6" type="bool" />
+    <field name="Transform 8x8" dword="1" bits="7:7" type="bool" />
+    <field name="VDEnc L1 Cache Priority" dword="1" bits="9:8" type="uint" />
+    <field name="Lambda Value for Trellis" dword="1" bits="31:16" type="uint" />
+    <field name="Bidirectional Weight" dword="2" bits="21:16" type="uint" />
+    <field name="Unidirectional Mix Disable" dword="2" bits="28:28" type="bool" />
+    <field name="Picture Width" dword="3" bits="31:16" type="uint" />
+    <field name="Sub-Pel Mode" dword="4" bits="13:12" type="uint" />
+    <field name="Forward Transform Skip Check Enable" dword="4" bits="17:17" type="bool" />
+    <field name="Bme Disable For Fbr Message" dword="4" bits="18:18" type="bool" />
+    <field name="Block-Based Skip Enable" dword="4" bits="19:19" type="bool" />
+    <field name="Inter SAD Measure Adjustment" dword="4" bits="21:20" type="uint" prefix="ISMA">
+      <value name="None" value="0" />
+      <value name="Haar Transform Adjusted" value="2" />
+    </field>
+    <field name="Intra SAD Measure Adjustment" dword="4" bits="23:22" type="uint" prefix="ISMA">
+      <value name="None" value="0" />
+      <value name="Haar Transform Adjusted" value="2" />
+    </field>
+    <field name="Sub-MB Sub-Partition Mask" dword="4" bits="30:24" type="uint" />
+    <field name="Block-Based Skip Type" dword="4" bits="31:31" type="uint" />
+    <field name="Picture Height" dword="5" bits="15:0" type="uint" />
+    <field name="CRE Prefetch Enable" dword="5" bits="16:16" type="bool" />
+    <field name="HME Ref1 Disable" dword="5" bits="17:17" type="bool" />
+    <field name="MB Slice Threshold Value" dword="5" bits="21:18" type="uint" />
+    <field name="Constrained Intra Prediction" dword="5" bits="26:26" type="bool" />
+    <field name="Picture Type" dword="5" bits="30:29" type="uint" prefix="PI">
+      <value name="I" value="0" />
+      <value name="P" value="1" />
+    </field>
+    <field name="Slice MB Height" dword="6" bits="15:0" type="uint" />
+    <field name="HME0 X Offset" dword="7" bits="7:0" type="int" />
+    <field name="HME0 Y Offset" dword="7" bits="15:8" type="int" />
+    <field name="HME1 X Offset" dword="7" bits="23:16" type="int" />
+    <field name="HME1 Y Offset" dword="7" bits="31:24" type="int" />
+    <field name="Luma Intra Partition Mask" dword="8" bits="4:0" type="uint" />
+    <field name="Non Skip Zero MV Cost Added" dword="8" bits="5:5" type="uint" />
+    <field name="Non Skip MB Mode Cost Added" dword="8" bits="6:6" type="uint" />
+    <field name="MV Cost Scaling Factor" dword="8" bits="17:16" type="uint">
+      <value name="Qpel" value="0" />
+      <value name="Hpel" value="1" />
+      <value name="Pel" value="2" />
+      <value name="2pel" value="3" />
+    </field>
+    <field name="BiLinear Filter Enable" dword="8" bits="18:18" type="bool" />
+    <field name="RefID Cost Mode Select" dword="8" bits="22:22" type="uint" />
+    <field name="Mode 0 Cost" dword="9" bits="7:0" type="uint" />
+    <field name="Mode 1 Cost" dword="9" bits="15:8" type="uint" />
+    <field name="Mode 2 Cost" dword="9" bits="23:16" type="uint" />
+    <field name="Mode 3 Cost" dword="9" bits="31:24" type="uint" />
+    <field name="Mode 4 Cost" dword="10" bits="7:0" type="uint" />
+    <field name="Mode 5 Cost" dword="10" bits="15:8" type="uint" />
+    <field name="Mode 6 Cost" dword="10" bits="23:16" type="uint" />
+    <field name="Mode 7 Cost" dword="10" bits="31:24" type="uint" />
+    <field name="Mode 8 Cost" dword="11" bits="7:0" type="uint" />
+    <field name="Mode 9 Cost" dword="11" bits="15:8" type="uint" />
+    <field name="RefID Cost" dword="11" bits="23:16" type="uint" />
+    <field name="Chroma Intra Mode Cost" dword="11" bits="31:24" type="uint" />
+    <field name="MV Cost" dword="12" bits="63:0" type="IMAGE_STATE_COST" />
+    <field name="QpPrimeY" dword="14" bits="7:0" type="int" />
+    <field name="TargetSizeInWord" dword="14" bits="31:24" type="uint" />
+    <field name="AVC Intra 4x4 Mode Mask" dword="17" bits="8:0" type="uint" />
+    <field name="AVC Intra 8x8 Mode Mask" dword="17" bits="24:16" type="uint" />
+    <field name="AVC Intra 16x16 Mode Mask" dword="18" bits="3:0" type="uint" />
+    <field name="AVC Intra Chroma Mode Mask" dword="18" bits="7:4" type="uint" />
+    <field name="Intra Compute Type" dword="18" bits="9:8" type="uint" />
+    <field name="Penalty for Intra 16x16 Non-DC Prediction" dword="20" bits="7:0" type="uint" />
+    <field name="Penalty for Intra 8x8 Non-DC Prediction" dword="20" bits="15:8" type="uint" />
+    <field name="Penalty for Intra 4x4 Non-DC Prediction" dword="20" bits="23:16" type="uint" />
+    <field name="Intra Refresh MB Position" dword="21" bits="7:0" type="uint" />
+    <field name="Intra Refresh MB Size" dword="21" bits="15:8" type="uint" />
+    <field name="Intra Refresh Enable (Rolling-I Enable)" dword="21" bits="16:16" type="bool" />
+    <field name="Intra Refresh Mode" dword="21" bits="17:17" type="uint">
+      <value name="Row Based" value="0" />
+      <value name="Column Based" value="1" />
+    </field>
+    <field name="QP Adjustment for Rolling-I" dword="21" bits="31:24" type="int" />
+    <field name="PanicModeMBThreshold" dword="22" bits="15:0" type="uint" />
+    <field name="SmallMbSizeInWord" dword="22" bits="23:16" type="uint" />
+    <field name="LargeMbSizeInWord" dword="22" bits="31:24" type="uint" />
+    <field name="L0 Number of References" dword="23" bits="7:0" type="int" />
+    <field name="L1 Number of References" dword="23" bits="23:16" type="int" />
+    <field name="Macroblock Budget" dword="24" bits="15:0" type="uint" />
+    <field name="Initial Time" dword="24" bits="31:16" type="uint" />
+    <field name="HME Ref Windows Combining Threshold" dword="26" bits="15:8" type="uint" />
+    <field name="Max Horizontal MV Range" dword="27" bits="15:0" type="uint" />
+    <field name="Max Vertical MV Range" dword="27" bits="31:16" type="uint" />
+    <field name="HME MV Cost" dword="28" bits="63:0" type="IMAGE_STATE_COST" />
+    <field name="ROI QP Adjustment for Zone0" dword="30" bits="3:0" type="int" />
+    <field name="ROI QP Adjustment for Zone1" dword="30" bits="7:4" type="int" />
+    <field name="ROI QP Adjustment for Zone2" dword="30" bits="11:8" type="int" />
+    <field name="ROI QP Adjustment for Zone3" dword="30" bits="15:12" type="int" />
+    <field name="QP Adjustment for Shape Best Intra 4x4 Winner" dword="30" bits="19:16" type="int" />
+    <field name="QP Adjustment for Shape Best Intra 8x8 Winner" dword="30" bits="23:20" type="int" />
+    <field name="QP Adjustment for Shape Best Intra 16x16 Winner" dword="30" bits="27:24" type="int" />
+    <field name="Best Distortion QP Adjustment for Zone0" dword="31" bits="3:0" type="int" />
+    <field name="Best Distortion QP Adjustment for Zone1" dword="31" bits="7:4" type="int" />
+    <field name="Best Distortion QP Adjustment for Zone2" dword="31" bits="11:8" type="int" />
+    <field name="Best Distortion QP Adjustment for Zone3" dword="31" bits="15:12" type="int" />
+    <field name="Sad/Haar Threshold 0" dword="31" bits="31:16" type="uint" />
+    <field name="Sad/Haar Threshold 1" dword="32" bits="15:0" type="uint" />
+    <field name="Sad/Haar Threshold 2" dword="32" bits="31:16" type="uint" />
+    <field name="Max QP" dword="33" bits="7:0" type="uint" />
+    <field name="Min QP" dword="33" bits="15:8" type="uint" />
+    <field name="Max Delta QP" dword="33" bits="27:24" type="uint" />
+    <field name="ROI Enable" dword="34" bits="0:0" type="bool" />
+    <field name="Fwd/Predictor0 MV Enable" dword="34" bits="1:1" type="bool" />
+    <field name="Bwd/Predictor1 MV Enable" dword="34" bits="2:2" type="bool" />
+    <field name="MB Level QP Enable" dword="34" bits="3:3" type="bool" />
+    <field name="TargetSizeinWordsMB/MaxSizeinWordsMB Enable" dword="34" bits="4:4" type="bool" />
+    <field name="PPMV Disable" dword="34" bits="8:8" type="bool" />
+    <field name="Coefficient Clamp Enable" dword="34" bits="9:9" type="bool" />
+    <field name="Long Term Reference Frame Bwd Ref0 Indicator" dword="34" bits="10:10" type="bool" />
+    <field name="Long Term Reference Frame Fwd Ref2 Indicator" dword="34" bits="11:11" type="bool" />
+    <field name="Long Term Reference Frame Fwd Ref1 Indicator" dword="34" bits="12:12" type="bool" />
+    <field name="Long Term Reference Frame Fwd Ref0 Indicator" dword="34" bits="13:13" type="bool" />
+    <field name="Midpoint Sad/Haar" dword="34" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="VDENC_PIPE_BUF_ADDR_STATE" bias="2" length="62" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="60" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="4" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="DS FWD REF0" dword="1" bits="95:0" type="VDENC_PICTURE" />
+    <field name="DS FWD REF1" dword="4" bits="95:0" type="VDENC_PICTURE" />
+    <field name="Original Uncompressed Picture" dword="10" bits="95:0" type="VDENC_PICTURE" />
+    <field name="Stream-In Data Picture" dword="13" bits="95:0" type="VDENC_PICTURE" />
+    <field name="Row Store Scratch Buffer" dword="16" bits="95:0" type="VDENC_PICTURE" />
+    <field name="Colocated MV Read Buffer" dword="19" bits="95:0" type="VDENC_PICTURE" />
+    <field name="FWD REF0" dword="22" bits="95:0" type="VDENC_PICTURE" />
+    <field name="FWD REF1" dword="25" bits="95:0" type="VDENC_PICTURE" />
+    <field name="FWD REF2" dword="28" bits="95:0" type="VDENC_PICTURE" />
+    <field name="BWD REF0" dword="31" bits="95:0" type="VDENC_PICTURE" />
+    <field name="VDEnc Statistics Stream-Out" dword="34" bits="95:0" type="VDENC_PICTURE" />
+    <field name="DS FWD REF0 4X" dword="37" bits="95:0" type="VDENC_PICTURE" />
+    <field name="DS FWD REF1 4X" dword="40" bits="95:0" type="VDENC_PICTURE" />
+    <field name="VDEnc CU Record Stream-Out Buffer" dword="46" bits="95:0" type="VDENC_PICTURE" />
+    <field name="VDEnc LCU PAK_OBJ_CMD Buffer" dword="49" bits="95:0" type="VDENC_PICTURE" />
+    <field name="Scaled Reference Surface 8X" dword="52" bits="95:0" type="VDENC_PICTURE" />
+    <field name="Scaled Reference Surface 4X" dword="55" bits="95:0" type="VDENC_PICTURE" />
+    <field name="VP9 Segmentation Map Stream-In Buffer" dword="58" bits="95:0" type="VDENC_PICTURE" />
+    <field name="VP9 Segmentation Map Stream-Out Buffer" dword="61" bits="31:0" type="VDENC_PICTURE" />
+    <field name="Weights Histogram Stream-Out Offset" dword="62" bits="95:0" type="uint" />
+  </instruction>
+  <instruction name="VDENC_PIPE_MODE_SELECT" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Standard Select" dword="1" bits="3:0" type="uint" prefix="SS">
+      <value name="HEVC" value="0" />
+      <value name="VP9" value="1" />
+      <value name="AVC" value="2" />
+    </field>
+    <field name="Scalability Mode" dword="1" bits="4:4" type="bool" />
+    <field name="Frame Statistics Stream-Out Enable" dword="1" bits="5:5" type="bool" />
+    <field name="VDEnc PAK_OBJ_CMD Stream-Out Enable" dword="1" bits="6:6" type="bool" />
+    <field name="TLB Prefetch Enable" dword="1" bits="7:7" type="bool" />
+    <field name="PAK Threshold Check Enable" dword="1" bits="8:8" type="bool" />
+    <field name="VDEnc Stream-In Enable" dword="1" bits="9:9" type="bool" />
+    <field name="DownScaled 8x Write Disable" dword="1" bits="10:10" type="bool" />
+    <field name="DownScaled 4x Write Disable" dword="1" bits="11:11" type="bool" />
+    <field name="Bit Depth" dword="1" bits="14:12" type="uint">
+      <value name="8-bit" value="0" />
+      <value name="10-bit" value="2" />
+    </field>
+    <field name="PAK Chroma Sub-Sampling Type" dword="1" bits="16:15" type="uint">
+      <value name="4:2:0" value="1" />
+      <value name="4:4:4" value="3" />
+    </field>
+    <field name="Output Range Control After Color Space Conversion" dword="1" bits="17:17" type="bool" />
+    <field name="Disable Speed Mode Fetch Optimization" dword="1" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="VDENC_WALKER_STATE" bias="2" length="10" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="8" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="7" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="MB/LCU Start Y Position" dword="1" bits="8:0" type="uint" />
+    <field name="MB/LCU Start X Position" dword="1" bits="24:16" type="uint" />
+    <field name="First Super Slice" dword="1" bits="28:28" type="bool" />
+    <field name="Next Slice MB Start Y Position" dword="2" bits="9:0" type="uint" />
+    <field name="Next Slice MB/LCU Start X Position" dword="2" bits="25:16" type="uint" />
+    <field name="Log2 Weight Denominator Luma" dword="3" bits="2:0" type="uint" />
+    <field name="HEVC/VP9 Log2 Weight Denominator Luma" dword="3" bits="6:4" type="uint" />
+    <field name="Number of Parallel Engines" dword="3" bits="10:9" type="uint" />
+    <field name="Tile Number" dword="3" bits="31:24" type="uint" />
+    <field name="Tile Start CTB-Y" dword="4" bits="15:0" type="uint" />
+    <field name="Tile Start CTB-X" dword="4" bits="31:16" type="uint" />
+    <field name="Tile Width" dword="5" bits="15:0" type="uint" />
+    <field name="Tile Height" dword="5" bits="31:16" type="uint" />
+    <field name="Tile Stream-In Offset Enable" dword="6" bits="0:0" type="bool" />
+    <field name="Tile Stream-In Offset" dword="6" bits="31:6" type="uint" />
+    <field name="Tile Row Store Offset Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Tile Row Store Offset" dword="7" bits="31:6" type="uint" />
+    <field name="Tile Stream-Out Offset Enable" dword="8" bits="0:0" type="bool" />
+    <field name="Tile Stream-Out Offset" dword="8" bits="31:6" type="uint" />
+    <field name="Tile LCU Stream-Out Offset Enable" dword="9" bits="0:0" type="bool" />
+    <field name="Tile LCU Stream-Out Offset" dword="9" bits="31:6" type="uint" />
+  </instruction>
+  <instruction name="VDENC_WEIGHTSOFFSETS_STATE" bias="2" length="3" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="1" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="8" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command OpCode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Weights Forward Reference 0" dword="1" bits="7:0" type="int" />
+    <field name="Offset Forward Reference 0" dword="1" bits="15:8" type="int" />
+    <field name="Weights Forward Reference 1" dword="1" bits="23:16" type="int" />
+    <field name="Offset Forward Reference 1" dword="1" bits="31:24" type="int" />
+    <field name="Weights Forward Reference 2" dword="2" bits="7:0" type="int" />
+    <field name="Offset Forward Reference 2" dword="2" bits="15:8" type="int" />
+    <field name="HEVC/VP9 Weights Backward Reference 0" dword="2" bits="23:16" type="int" />
+    <field name="HEVC/VP9 Offset Backward Reference 0" dword="2" bits="31:24" type="int" />
+  </instruction>
+  <register name="3D_CHICKEN3" length="1" num="0x2090">
+    <field name="AA Line Quality Fix" dword="0" bits="5:5" type="bool" />
+    <field name="AA Line Quality Fix Mask" dword="0" bits="21:21" type="bool" />
+  </register>
+  <register name="CACHE_MODE_0" length="1" num="0x7000">
+    <field name="Disable Byte sharing for 3D TYF LOD1 surfaces for 32/64/128 bpp" dword="0" bits="0:0" type="bool" />
+    <field name="Disable clock gating in the pixel backend" dword="0" bits="1:1" type="bool" />
+    <field name="Hierarchical Z Disable" dword="0" bits="3:3" type="bool" />
+    <field name="RCC Eviction Policy" dword="0" bits="4:4" type="bool" />
+    <field name="STC PMA Optimization Disable" dword="0" bits="5:5" type="bool" />
+    <field name="STC Read-Hit Wonly Optimization Disable" dword="0" bits="6:6" type="bool" />
+    <field name="Depth Related Cache Pipelined Flush Disable" dword="0" bits="8:8" type="bool" />
+    <field name="Sampler L2 TLB Prefetch Enable" dword="0" bits="9:9" type="bool" />
+    <field name="RCZ PMA Not-Promoted Allocation stall optimization Disable due to change in depth parameters" dword="0" bits="10:10" type="bool" />
+    <field name="MSAA Compression Plane Number Threshold for eLLC" dword="0" bits="14:12" type="uint" />
+    <field name="Disable Repacking for Compression" dword="0" bits="15:15" type="bool" />
+    <field name="Disable Byte sharing for 3D TYF LOD1 surfaces for 32/64/128 bpp Mask" dword="0" bits="16:16" type="bool" />
+    <field name="Disable clock gating in the pixel backend Mask" dword="0" bits="17:17" type="bool" />
+    <field name="Hierarchical Z Disable Mask" dword="0" bits="19:19" type="bool" />
+    <field name="RCC Eviction Policy Mask" dword="0" bits="20:20" type="bool" />
+    <field name="STC PMA Optimization Disable Mask" dword="0" bits="21:21" type="bool" />
+    <field name="STC Read-Hit Wonly Optimization Disable Mask" dword="0" bits="22:22" type="bool" />
+    <field name="Depth Related Cache Pipelined Flush Disable Mask" dword="0" bits="24:24" type="bool" />
+    <field name="Sampler L2 TLB Prefetch Enable Mask" dword="0" bits="25:25" type="bool" />
+    <field name="RCZ PMA Not-Promoted Allocation stall optimization Disable due to change in depth parameters Mask" dword="0" bits="26:26" type="bool" />
+    <field name="MSAA Compression Plane Number Threshold for eLLC Mask" dword="0" bits="30:28" type="uint" />
+    <field name="Disable Repacking for Compression Mask" dword="0" bits="31:31" type="bool" />
+  </register>
+  <register name="CACHE_MODE_1" length="1" num="0x7004">
+    <field name="Partial Resolve Disable In VC" dword="0" bits="1:1" type="bool" />
+    <field name="RCZ PMA Promoted 2 Not-Promoted Allocation stall optimization Disable" dword="0" bits="3:3" type="bool" />
+    <field name="MCS Cache Disable" dword="0" bits="5:5" type="bool" />
+    <field name="MSC RAW Hazard Avoidance Bit" dword="0" bits="9:9" type="bool" />
+    <field name="NP Early Z Fails Disable" dword="0" bits="13:13" type="uint" />
+    <field name="Blend Optimization Fix Disable" dword="0" bits="14:14" type="bool" />
+    <field name="Color Compression Disable" dword="0" bits="15:15" type="bool" />
+    <field name="Partial Resolve Disable In VC Mask" dword="0" bits="17:17" type="bool" />
+    <field name="RCZ PMA Promoted 2 Not-Promoted Allocation stall optimization Disable Mask" dword="0" bits="19:19" type="bool" />
+    <field name="MCS Cache Disable Mask" dword="0" bits="21:21" type="bool" />
+    <field name="MSC RAW Hazard Avoidance Bit Mask" dword="0" bits="25:25" type="bool" />
+    <field name="NP Early Z Fails Disable Mask" dword="0" bits="29:29" type="bool" />
+    <field name="Blend Optimization Fix Disable Mask" dword="0" bits="30:30" type="bool" />
+    <field name="Color Compression Disable Mask" dword="0" bits="31:31" type="bool" />
+  </register>
+  <register name="COMMON_SLICE_CHICKEN3" length="1" num="0x7304">
+    <field name="PS Thread Panic Dispatch" dword="0" bits="7:6" type="uint" />
+    <field name="PS Thread Panic Dispatch Mask" dword="0" bits="23:22" type="uint" />
+  </register>
+  <register name="COMMON_SLICE_CHICKEN4" length="1" num="0x7300">
+    <field name="Enable Hardware Filtering in WM" dword="0" bits="5:5" type="bool" />
+    <field name="Enable Hardware Filtering in WM Mask" dword="0" bits="21:21" type="bool" />
+  </register>
+  <register name="GT_MODE" length="1" num="0x7008">
+    <field name="Binding Table Alignment" dword="0" bits="10:10" type="uint">
+      <value name="BTP_15_5" value="0" />
+      <value name="BTP_18_8" value="1" />
+    </field>
+    <field name="Binding Table Alignment Mask" dword="0" bits="26:26" type="bool" />
+  </register>
+  <register name="HALF_SLICE_CHICKEN7" length="1" num="0x0e194">
+    <field name="Enabled Texel Offset Precision Fix" dword="0" bits="1:1" type="bool" />
+    <field name="Enabled Texel Offset Precision Fix Mask" dword="0" bits="17:17" type="bool" />
+  </register>
+  <register name="INSTDONE_1" length="1" num="0x206c">
+    <field name="PRB0 Ring Enable" dword="0" bits="0:0" type="bool" />
+    <field name="VFG Done" dword="0" bits="1:1" type="bool" />
+    <field name="VS Done" dword="0" bits="2:2" type="bool" />
+    <field name="HS Done" dword="0" bits="3:3" type="bool" />
+    <field name="TE Done" dword="0" bits="4:4" type="bool" />
+    <field name="DS Done" dword="0" bits="5:5" type="bool" />
+    <field name="GS Done" dword="0" bits="6:6" type="bool" />
+    <field name="SOL Done" dword="0" bits="7:7" type="bool" />
+    <field name="CL Done" dword="0" bits="8:8" type="bool" />
+    <field name="SF Done" dword="0" bits="9:9" type="bool" />
+    <field name="TDG1 Done" dword="0" bits="11:11" type="bool" />
+    <field name="TDG0 Done" dword="0" bits="12:12" type="bool" />
+    <field name="URBM Done" dword="0" bits="13:13" type="bool" />
+    <field name="SVG Done" dword="0" bits="14:14" type="bool" />
+    <field name="GAFS Done" dword="0" bits="15:15" type="bool" />
+    <field name="VFE Done" dword="0" bits="16:16" type="bool" />
+    <field name="TSG0 Done" dword="0" bits="17:17" type="bool" />
+    <field name="GAFM Done" dword="0" bits="18:18" type="bool" />
+    <field name="GAM Done" dword="0" bits="19:19" type="bool" />
+    <field name="RS Done" dword="0" bits="20:20" type="bool" />
+    <field name="CS Done" dword="0" bits="21:21" type="bool" />
+    <field name="SDE Done" dword="0" bits="22:22" type="bool" />
+    <field name="RCCFBC CS Done" dword="0" bits="23:23" type="bool" />
+    <field name="TSG1 Done" dword="0" bits="24:24" type="bool" />
+  </register>
+  <register name="L3CNTLREG" length="1" num="0x7034">
+    <field name="URB Allocation" dword="0" bits="7:1" type="uint" />
+    <field name="Error Detection Behavior Control" dword="0" bits="9:9" type="bool" />
+    <field name="Use Full Ways" dword="0" bits="10:10" type="bool" />
+    <field name="RO Allocation" dword="0" bits="17:11" type="uint" />
+    <field name="DC Allocation" dword="0" bits="24:18" type="uint" />
+    <field name="All Allocation" dword="0" bits="31:25" type="uint" />
+  </register>
+  <register name="SAMPLER_INSTDONE" length="1" num="0xe160">
+    <field name="IME Done" dword="0" bits="0:0" type="bool" />
+    <field name="PL0 Done" dword="0" bits="1:1" type="bool" />
+    <field name="SO0 Done" dword="0" bits="2:2" type="bool" />
+    <field name="DG0 Done" dword="0" bits="3:3" type="bool" />
+    <field name="FT0 Done" dword="0" bits="4:4" type="bool" />
+    <field name="DM0 Done" dword="0" bits="5:5" type="bool" />
+    <field name="SC Done" dword="0" bits="6:6" type="bool" />
+    <field name="FL0 Done" dword="0" bits="7:7" type="bool" />
+    <field name="QC Done" dword="0" bits="8:8" type="bool" />
+    <field name="SVSM Done" dword="0" bits="9:9" type="bool" />
+    <field name="SI0 Done" dword="0" bits="10:10" type="bool" />
+    <field name="MT0 Done" dword="0" bits="11:11" type="bool" />
+    <field name="AVS Done" dword="0" bits="12:12" type="bool" />
+    <field name="IEF Done" dword="0" bits="13:13" type="bool" />
+    <field name="CRE Done" dword="0" bits="14:14" type="bool" />
+    <field name="SVSM_ARB_SIFM" dword="0" bits="15:15" type="bool" />
+    <field name="SVSM ARB2" dword="0" bits="16:16" type="bool" />
+    <field name="SVSM ARB1" dword="0" bits="17:17" type="bool" />
+    <field name="SVSM Adapter" dword="0" bits="18:18" type="bool" />
+    <field name="BDM Done" dword="0" bits="19:19" type="bool" />
+  </register>
+  <register name="SAMPLER_MODE" length="1" num="0x0e18c">
+    <field name="Headerless Message for Pre-emptable Contexts" dword="0" bits="5:5" type="bool" />
+    <field name="Enable Small PL" dword="0" bits="15:15" type="bool" />
+    <field name="Headerless Message for Pre-emptable Contexts Mask" dword="0" bits="21:21" type="bool" />
+    <field name="Enable Small PL Mask" dword="0" bits="31:31" type="bool" />
+  </register>
+  <register name="SC_INSTDONE" length="1" num="0x7100">
+    <field name="SVL Done" dword="0" bits="0:0" type="bool" />
+    <field name="WMFE Done" dword="0" bits="1:1" type="bool" />
+    <field name="WMBE Done" dword="0" bits="2:2" type="bool" />
+    <field name="HIZ Done" dword="0" bits="3:3" type="bool" />
+    <field name="STC Done" dword="0" bits="4:4" type="bool" />
+    <field name="IZ Done" dword="0" bits="5:5" type="bool" />
+    <field name="SBE Done" dword="0" bits="6:6" type="bool" />
+    <field name="RCZ Done" dword="0" bits="8:8" type="bool" />
+    <field name="RCC Done" dword="0" bits="9:9" type="bool" />
+    <field name="RCPBE Done" dword="0" bits="10:10" type="bool" />
+    <field name="RCPFE Done" dword="0" bits="11:11" type="bool" />
+    <field name="DAPB Done" dword="0" bits="12:12" type="bool" />
+    <field name="DAPRBE Done" dword="0" bits="13:13" type="bool" />
+    <field name="SARB Done" dword="0" bits="15:15" type="bool" />
+    <field name="DC0 Done" dword="0" bits="16:16" type="bool" />
+    <field name="DC1 Done" dword="0" bits="17:17" type="bool" />
+    <field name="DC2 Done" dword="0" bits="18:18" type="bool" />
+    <field name="DC3 Done" dword="0" bits="19:19" type="bool" />
+    <field name="GW0 Done" dword="0" bits="20:20" type="bool" />
+    <field name="GW1 Done" dword="0" bits="21:21" type="bool" />
+    <field name="GW2 Done" dword="0" bits="22:22" type="bool" />
+    <field name="GW3 Done" dword="0" bits="23:23" type="bool" />
+    <field name="TDC Done" dword="0" bits="24:24" type="bool" />
+    <field name="SFBE Done" dword="0" bits="25:25" type="bool" />
+  </register>
+  <register name="SLICE_COMMON_ECO_CHICKEN1" length="1" num="0x731c">
+    <field name="State Cache Redirect To CS Section Enable" dword="0" bits="11:11" type="bool" />
+    <field name="State Cache Redirect To CS Section Enable Mask" dword="0" bits="27:27" type="bool" />
+  </register>
+  <register name="TCCNTLREG" length="1" num="0xb0a4">
+    <field name="URB Partial Write Merging Enable" dword="0" bits="0:0" type="bool" />
+    <field name="Color/Z Partial Write Merging Enable" dword="0" bits="1:1" type="bool" />
+    <field name="L3 Data Partial Write Merging Enable" dword="0" bits="2:2" type="bool" />
+    <field name="TC Disable" dword="0" bits="3:3" type="bool" />
+  </register>
+  <register name="VCS_INSTDONE" length="1" num="0x1206c">
+    <field name="Ring Enable" dword="0" bits="0:0" type="bool" />
+    <field name="USB Done" dword="0" bits="1:1" type="bool" />
+    <field name="QRC Done" dword="0" bits="2:2" type="bool" />
+    <field name="SEC Done" dword="0" bits="3:3" type="bool" />
+    <field name="MPC Done" dword="0" bits="4:4" type="bool" />
+    <field name="VFT Done" dword="0" bits="5:5" type="bool" />
+    <field name="BSP Done" dword="0" bits="6:6" type="bool" />
+    <field name="VLF Done" dword="0" bits="7:7" type="bool" />
+    <field name="VOP Done" dword="0" bits="8:8" type="bool" />
+    <field name="VMC Done" dword="0" bits="9:9" type="bool" />
+    <field name="VIP Done" dword="0" bits="10:10" type="bool" />
+    <field name="VIT Done" dword="0" bits="11:11" type="bool" />
+    <field name="VDS Done" dword="0" bits="12:12" type="bool" />
+    <field name="VMX Done" dword="0" bits="13:13" type="bool" />
+    <field name="VCP Done" dword="0" bits="14:14" type="bool" />
+    <field name="VCD Done" dword="0" bits="15:15" type="bool" />
+    <field name="VAD Done" dword="0" bits="16:16" type="bool" />
+    <field name="VMD Done" dword="0" bits="17:17" type="bool" />
+    <field name="VIS Done" dword="0" bits="18:18" type="bool" />
+    <field name="VAC Done" dword="0" bits="19:19" type="bool" />
+    <field name="VAM Done" dword="0" bits="20:20" type="bool" />
+    <field name="JPG Done" dword="0" bits="21:21" type="bool" />
+    <field name="VBP Done" dword="0" bits="22:22" type="bool" />
+    <field name="VHR Done" dword="0" bits="23:23" type="bool" />
+    <field name="VCI Done" dword="0" bits="24:24" type="bool" />
+    <field name="VIN Done" dword="0" bits="26:26" type="bool" />
+    <field name="VPR Done" dword="0" bits="27:27" type="bool" />
+    <field name="VTQ Done" dword="0" bits="28:28" type="bool" />
+    <field name="Reserved" dword="0" bits="29:29" type="bool" />
+    <field name="VCS Done" dword="0" bits="30:30" type="bool" />
+    <field name="GAC Done" dword="0" bits="31:31" type="bool" />
+  </register>
+</genxml>
diff --git a/lib/genxml/gen120.xml b/lib/genxml/gen120.xml
new file mode 100644
index 000000000..ec9746ea9
--- /dev/null
+++ b/lib/genxml/gen120.xml
@@ -0,0 +1,2432 @@
+<?xml version='1.0' encoding='utf-8'?>
+<genxml name="TGL" gen="12">
+  <import name="gen110.xml">
+    <exclude name="3DSTATE_CPS" />
+    <exclude name="L3CNTLREG" />
+    <exclude name="PERFCNT1" />
+    <exclude name="PERFCNT2" />
+    <exclude name="SAMPLER_MODE" />
+    <exclude name="TCCNTLREG" />
+    <exclude name="VD_PIPELINE_FLUSH" />
+  </import>
+  <struct name="3DSTATE_CONSTANT_ALL_DATA" length="2">
+    <field name="Constant Buffer Read Length" dword="0" bits="4:0" type="uint" />
+    <field name="Pointer To Constant Buffer" dword="0" bits="63:5" type="address" />
+  </struct>
+  <struct name="3DSTATE_SO_BUFFER_INDEX_BODY" length="7">
+    <field name="Stream Output Buffer Offset Address Enable" dword="0" bits="20:20" type="bool" />
+    <field name="Stream Offset Write Enable" dword="0" bits="21:21" type="bool" />
+    <field name="MOCS" dword="0" bits="28:22" type="uint" nonzero="true" />
+    <field name="SO Buffer Enable" dword="0" bits="31:31" type="bool" />
+    <field name="Surface Base Address" dword="1" bits="47:2" type="address" />
+    <field name="Surface Size" dword="3" bits="29:0" type="uint" />
+    <field name="Stream Output Buffer Offset Address" dword="4" bits="47:2" type="address" />
+    <field name="Stream Offset" dword="6" bits="31:0" type="uint" />
+  </struct>
+  <struct name="CPS_STATE" length="8">
+    <field name="Min CP Size X" dword="0" bits="10:0" type="s3.7" />
+    <field name="Statistics Enable" dword="0" bits="11:11" type="bool" />
+    <field name="Coarse Pixel Shading Mode" dword="0" bits="13:12" type="uint">
+      <value name="CPS_MODE_NONE" value="0" />
+      <value name="CPS_MODE_CONSTANT" value="1" />
+      <value name="CPS_MODE_RADIAL" value="2" />
+    </field>
+    <field name="Scale Axis" dword="0" bits="14:14" type="uint" prefix="SCALE_AXIS">
+      <value name="X Axis" value="0" />
+      <value name="Y Axis" value="1" />
+    </field>
+    <field name="Min CP Size Y" dword="0" bits="26:16" type="s3.7" />
+    <field name="Max CP Size X" dword="1" bits="10:0" type="s3.7" />
+    <field name="Max CP Size Y" dword="1" bits="26:16" type="s3.7" />
+    <field name="Y Focal" dword="2" bits="15:0" type="s15.0" />
+    <field name="X Focal" dword="3" bits="15:0" type="s15.0" />
+    <field name="M y" dword="4" bits="31:0" type="float" />
+    <field name="M x" dword="5" bits="31:0" type="float" />
+    <field name="R min" dword="6" bits="31:0" type="float" />
+    <field name="Aspect" dword="7" bits="31:0" type="float" />
+  </struct>
+  <struct name="INTERFACE_DESCRIPTOR_DATA" length="8">
+    <field name="Kernel Start Pointer" dword="0" bits="47:6" type="offset" />
+    <field name="Software Exception Enable" dword="2" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="2" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="2" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="2" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="2" bits="17:17" type="uint">
+      <value name="Normal Priority" value="0" />
+      <value name="High Priority" value="1" />
+    </field>
+    <field name="Single Program Flow" dword="2" bits="18:18" type="bool" />
+    <field name="Denorm Mode" dword="2" bits="19:19" type="uint">
+      <value name="Ftz" value="0" />
+      <value name="SetByKernel" value="1" />
+    </field>
+    <field name="Thread Preemption Disable" dword="2" bits="20:20" type="bool" />
+    <field name="Sampler Count" dword="3" bits="4:2" type="uint">
+      <value name="No samplers used" value="0" />
+      <value name="Between 1 and 4 samplers used" value="1" />
+      <value name="Between 5 and 8 samplers used" value="2" />
+      <value name="Between 9 and 12 samplers used" value="3" />
+      <value name="Between 13 and 16 samplers used" value="4" />
+    </field>
+    <field name="Sampler State Pointer" dword="3" bits="31:5" type="offset" />
+    <field name="Binding Table Entry Count" dword="4" bits="4:0" type="uint" />
+    <field name="Binding Table Pointer" dword="4" bits="15:5" type="offset" />
+    <field name="Constant URB Entry Read Offset" dword="5" bits="15:0" type="uint" />
+    <field name="Constant URB Entry Read Length" dword="5" bits="31:16" type="uint" />
+    <field name="Number of Threads in GPGPU Thread Group" dword="6" bits="9:0" type="uint" />
+    <field name="Global Barrier Enable" dword="6" bits="15:15" type="bool" />
+    <field name="Shared Local Memory Size" dword="6" bits="20:16" type="uint">
+      <value name="Encodes 0K" value="0" />
+      <value name="Encodes 1K" value="1" />
+      <value name="Encodes 2K" value="2" />
+      <value name="Encodes 4K" value="3" />
+      <value name="Encodes 8K" value="4" />
+      <value name="Encodes 16K" value="5" />
+      <value name="Encodes 32K" value="6" />
+      <value name="Encodes 64K" value="7" />
+    </field>
+    <field name="Barrier Enable" dword="6" bits="21:21" type="bool" />
+    <field name="Rounding Mode" dword="6" bits="23:22" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Cross-Thread Constant Data Read Length" dword="7" bits="7:0" type="uint" />
+  </struct>
+  <struct name="RENDER_SURFACE_STATE" length="16">
+    <field name="Cube Face Enable - Positive Z" dword="0" bits="0:0" type="bool" />
+    <field name="Cube Face Enable - Negative Z" dword="0" bits="1:1" type="bool" />
+    <field name="Cube Face Enable - Positive Y" dword="0" bits="2:2" type="bool" />
+    <field name="Cube Face Enable - Negative Y" dword="0" bits="3:3" type="bool" />
+    <field name="Cube Face Enable - Positive X" dword="0" bits="4:4" type="bool" />
+    <field name="Cube Face Enable - Negative X" dword="0" bits="5:5" type="bool" />
+    <field name="Media Boundary Pixel Mode" dword="0" bits="7:6" type="uint">
+      <value name="NORMAL_MODE" value="0" />
+      <value name="PROGRESSIVE_FRAME" value="2" />
+      <value name="INTERLACED_FRAME" value="3" />
+    </field>
+    <field name="Render Cache Read Write Mode" dword="0" bits="8:8" type="uint">
+      <value name="Write-Only Cache" value="0" />
+      <value name="Read-Write Cache" value="1" />
+    </field>
+    <field name="Sampler L2 Bypass Mode Disable" dword="0" bits="9:9" type="bool" />
+    <field name="Vertical Line Stride Offset" dword="0" bits="10:10" type="uint" />
+    <field name="Vertical Line Stride" dword="0" bits="11:11" type="uint" />
+    <field name="Tile Mode" dword="0" bits="13:12" type="uint">
+      <value name="LINEAR" value="0" />
+      <value name="XMAJOR" value="2" />
+      <value name="YMAJOR" value="3" />
+    </field>
+    <field name="Surface Horizontal Alignment" dword="0" bits="15:14" type="uint">
+      <value name="HALIGN_4" value="1" />
+      <value name="HALIGN_8" value="2" />
+      <value name="HALIGN_16" value="3" />
+    </field>
+    <field name="Surface Vertical Alignment" dword="0" bits="17:16" type="uint">
+      <value name="VALIGN_4" value="1" />
+      <value name="VALIGN_8" value="2" />
+      <value name="VALIGN_16" value="3" />
+    </field>
+    <field name="Surface Format" dword="0" bits="27:18" type="uint" />
+    <field name="Surface Array" dword="0" bits="28:28" type="bool" />
+    <field name="Surface Type" dword="0" bits="31:29" type="uint">
+      <value name="SURFTYPE_1D" value="0" />
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_3D" value="2" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_BUFFER" value="4" />
+      <value name="SURFTYPE_STRBUF" value="5" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface QPitch" dword="1" bits="14:0" type="uint" />
+    <field name="Sample Tap Discard Disable" dword="1" bits="15:15" type="bool" />
+    <field name="Double Fetch Disable" dword="1" bits="17:17" type="bool" />
+    <field name="Corner Texel Mode" dword="1" bits="18:18" type="uint" />
+    <field name="Base Mip Level" dword="1" bits="23:19" type="u4.1" />
+    <field name="MOCS" dword="1" bits="30:24" type="uint" nonzero="true" />
+    <field name="Enable Unorm Path In Color Pipe" dword="1" bits="31:31" type="bool" />
+    <field name="Width" dword="2" bits="13:0" type="uint" />
+    <field name="Height" dword="2" bits="29:16" type="uint" />
+    <field name="Depth Stencil Resource" dword="2" bits="31:31" type="bool" />
+    <field name="Surface Pitch" dword="3" bits="17:0" type="uint" />
+    <field name="Null Probing Enable" dword="3" bits="18:18" type="uint" />
+    <field name="Standard Tiling Mode Extensions" dword="3" bits="19:19" type="uint" />
+    <field name="Tile Address Mapping Mode" dword="3" bits="20:20" type="uint">
+      <value name="Gfx9" value="0" />
+      <value name="Gfx10+" value="1" />
+    </field>
+    <field name="Depth" dword="3" bits="31:21" type="uint" />
+    <field name="Multisample Position Palette Index" dword="4" bits="2:0" type="uint" />
+    <field name="Number of Multisamples" dword="4" bits="5:3" type="uint">
+      <value name="MULTISAMPLECOUNT_1" value="0" />
+      <value name="MULTISAMPLECOUNT_2" value="1" />
+      <value name="MULTISAMPLECOUNT_4" value="2" />
+      <value name="MULTISAMPLECOUNT_8" value="3" />
+      <value name="MULTISAMPLECOUNT_16" value="4" />
+    </field>
+    <field name="Multisampled Surface Storage Format" dword="4" bits="6:6" type="uint">
+      <value name="MSFMT_MSS" value="0" />
+      <value name="MSFMT_DEPTH_STENCIL" value="1" />
+    </field>
+    <field name="Render Target View Extent" dword="4" bits="17:7" type="uint" />
+    <field name="Minimum Array Element" dword="4" bits="28:18" type="uint" />
+    <field name="Render Target And Sample Unorm Rotation" dword="4" bits="30:29" type="uint">
+      <value name="0DEG" value="0" />
+      <value name="90DEG" value="1" />
+      <value name="180DEG" value="2" />
+      <value name="270DEG" value="3" />
+    </field>
+    <field name="Decompress In L3" dword="4" bits="31:31" type="bool" />
+    <field name="MIP Count / LOD" dword="5" bits="3:0" type="uint" />
+    <field name="Surface Min LOD" dword="5" bits="7:4" type="uint" />
+    <field name="Mip Tail Start LOD" dword="5" bits="11:8" type="uint" />
+    <field name="Coherency Type" dword="5" bits="14:14" type="uint">
+      <value name="GPU coherent" value="0" />
+      <value name="IA coherent" value="1" />
+    </field>
+    <field name="Tiled Resource Mode" dword="5" bits="19:18" type="uint">
+      <value name="NONE" value="0" />
+      <value name="4KB" value="1" />
+      <value name="64KB" value="2" />
+      <value name="TILEYF" value="1" />
+      <value name="TILEYS" value="2" />
+    </field>
+    <field name="EWA Disable For Cube" dword="5" bits="20:20" type="bool" />
+    <field name="Y Offset" dword="5" bits="23:21" type="uint" />
+    <field name="X Offset" dword="5" bits="31:25" type="uint" />
+    <field name="Auxiliary Surface Mode" dword="6" bits="2:0" type="uint">
+      <value name="AUX_NONE" value="0" />
+      <value name="AUX_CCS_D" value="1" />
+      <value name="AUX_APPEND" value="2" />
+      <value name="AUX_MCS_LCE" value="4" />
+      <value name="AUX_CCS_E" value="5" />
+    </field>
+    <field name="Y Offset for U or UV Plane" dword="6" bits="13:0" type="uint" />
+    <field name="Auxiliary Surface Pitch" dword="6" bits="11:3" type="uint" />
+    <field name="YUV Interpolation Enable" dword="6" bits="15:15" type="bool" />
+    <field name="Auxiliary Surface QPitch" dword="6" bits="30:16" type="uint" />
+    <field name="X Offset for U or UV Plane" dword="6" bits="29:16" type="uint" />
+    <field name="Half Pitch for Chroma" dword="6" bits="30:30" type="uint" />
+    <field name="Separate UV Plane Enable" dword="6" bits="31:31" type="bool" />
+    <field name="Resource Min LOD" dword="7" bits="11:0" type="u4.8" />
+    <field name="Shader Channel Select Alpha" dword="7" bits="18:16" type="Shader Channel Select" />
+    <field name="Shader Channel Select Blue" dword="7" bits="21:19" type="Shader Channel Select" />
+    <field name="Shader Channel Select Green" dword="7" bits="24:22" type="Shader Channel Select" />
+    <field name="Shader Channel Select Red" dword="7" bits="27:25" type="Shader Channel Select" />
+    <field name="Memory Compression Enable" dword="7" bits="30:30" type="bool" />
+    <field name="Memory Compression Mode" dword="7" bits="31:31" type="uint">
+      <value name="Horizontal" value="0" />
+    </field>
+    <field name="Surface Base Address" dword="8" bits="63:0" type="address" />
+    <field name="Clear Value Address Enable" dword="10" bits="10:10" type="bool" />
+    <field name="Caching Expanded Formats" dword="10" bits="11:11" type="uint" />
+    <field name="Auxiliary Surface Base Address" dword="10" bits="63:12" type="address" />
+    <field name="Clear Value Address" dword="12" bits="47:6" type="address" />
+  </struct>
+  <struct name="SAMPLER_STATE" length="4">
+    <field name="Anisotropic Algorithm" dword="0" bits="0:0" type="uint">
+      <value name="LEGACY" value="0" />
+      <value name="EWA Approximation" value="1" />
+    </field>
+    <field name="Texture LOD Bias" dword="0" bits="13:1" type="s4.8" />
+    <field name="Min Mode Filter" dword="0" bits="16:14" type="uint" prefix="MAPFILTER">
+      <value name="NEAREST" value="0" />
+      <value name="LINEAR" value="1" />
+      <value name="ANISOTROPIC" value="2" />
+      <value name="MONO" value="6" />
+    </field>
+    <field name="Mag Mode Filter" dword="0" bits="19:17" type="uint" prefix="MAPFILTER">
+      <value name="NEAREST" value="0" />
+      <value name="LINEAR" value="1" />
+      <value name="ANISOTROPIC" value="2" />
+      <value name="MONO" value="6" />
+    </field>
+    <field name="Mip Mode Filter" dword="0" bits="21:20" type="uint" prefix="MIPFILTER">
+      <value name="NONE" value="0" />
+      <value name="NEAREST" value="1" />
+      <value name="LINEAR" value="3" />
+    </field>
+    <field name="Coarse LOD Quality Mode" dword="0" bits="26:22" type="uint" />
+    <field name="LOD PreClamp Mode" dword="0" bits="28:27" type="uint" prefix="CLAMP_MODE">
+      <value name="NONE" value="0" />
+      <value name="OGL" value="2" />
+    </field>
+    <field name="Texture Border Color Mode" dword="0" bits="29:29" type="uint">
+      <value name="DX10/OGL" value="0" />
+      <value name="DX9" value="1" />
+    </field>
+    <field name="CPS LOD Compensation Enable" dword="0" bits="30:30" type="bool" />
+    <field name="Sampler Disable" dword="0" bits="31:31" type="bool" />
+    <field name="Cube Surface Control Mode" dword="1" bits="0:0" type="uint">
+      <value name="PROGRAMMED" value="0" />
+      <value name="OVERRIDE" value="1" />
+    </field>
+    <field name="Shadow Function" dword="1" bits="3:1" type="uint" prefix="PREFILTEROP">
+      <value name="ALWAYS" value="0" />
+      <value name="NEVER" value="1" />
+      <value name="LESS" value="2" />
+      <value name="EQUAL" value="3" />
+      <value name="LEQUAL" value="4" />
+      <value name="GREATER" value="5" />
+      <value name="NOTEQUAL" value="6" />
+      <value name="GEQUAL" value="7" />
+    </field>
+    <field name="ChromaKey Mode" dword="1" bits="4:4" type="uint">
+      <value name="KEYFILTER_KILL_ON_ANY_MATCH" value="0" />
+      <value name="KEYFILTER_REPLACE_BLACK" value="1" />
+    </field>
+    <field name="ChromaKey Index" dword="1" bits="6:5" type="uint" />
+    <field name="ChromaKey Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Max LOD" dword="1" bits="19:8" type="u4.8" />
+    <field name="Min LOD" dword="1" bits="31:20" type="u4.8" />
+    <field name="LOD Clamp Magnification Mode" dword="2" bits="0:0" type="uint">
+      <value name="MIPNONE" value="0" />
+      <value name="MIPFILTER" value="1" />
+    </field>
+    <field name="SRGB DECODE" dword="2" bits="1:1" type="uint">
+      <value name="DECODE_EXT" value="0" />
+      <value name="SKIP_DECODE_EXT" value="1" />
+    </field>
+    <field name="Return Filter Weight for Null Texels" dword="2" bits="2:2" type="uint" />
+    <field name="Return Filter Weight for Border Texels" dword="2" bits="3:3" type="uint" />
+    <field name="Force gather4 Behavior" dword="2" bits="5:5" type="bool" />
+    <field name="Border Color Pointer" dword="2" bits="31:6" type="offset" />
+    <field name="TCZ Address Control Mode" dword="3" bits="2:0" type="Texture Coordinate Mode" />
+    <field name="TCY Address Control Mode" dword="3" bits="5:3" type="Texture Coordinate Mode" />
+    <field name="TCX Address Control Mode" dword="3" bits="8:6" type="Texture Coordinate Mode" />
+    <field name="Reduction Type Enable" dword="3" bits="9:9" type="bool" />
+    <field name="Non-normalized Coordinate Enable" dword="3" bits="10:10" type="bool" />
+    <field name="Trilinear Filter Quality" dword="3" bits="12:11" type="uint">
+      <value name="FULL" value="0" />
+      <value name="HIGH" value="1" />
+      <value name="MED" value="2" />
+      <value name="LOW" value="3" />
+    </field>
+    <field name="R Address Min Filter Rounding Enable" dword="3" bits="13:13" type="bool" />
+    <field name="R Address Mag Filter Rounding Enable" dword="3" bits="14:14" type="bool" />
+    <field name="V Address Min Filter Rounding Enable" dword="3" bits="15:15" type="bool" />
+    <field name="V Address Mag Filter Rounding Enable" dword="3" bits="16:16" type="bool" />
+    <field name="U Address Min Filter Rounding Enable" dword="3" bits="17:17" type="bool" />
+    <field name="U Address Mag Filter Rounding Enable" dword="3" bits="18:18" type="bool" />
+    <field name="Maximum Anisotropy" dword="3" bits="21:19" type="uint">
+      <value name="RATIO 2:1" value="0" />
+      <value name="RATIO 4:1" value="1" />
+      <value name="RATIO 6:1" value="2" />
+      <value name="RATIO 8:1" value="3" />
+      <value name="RATIO 10:1" value="4" />
+      <value name="RATIO 12:1" value="5" />
+      <value name="RATIO 14:1" value="6" />
+      <value name="RATIO 16:1" value="7" />
+    </field>
+    <field name="Reduction Type" dword="3" bits="23:22" type="uint">
+      <value name="STD_FILTER" value="0" />
+      <value name="COMPARISON" value="1" />
+      <value name="MINIMUM" value="2" />
+      <value name="MAXIMUM" value="3" />
+    </field>
+    <field name="Allow Low Quality LOD Calculation" dword="3" bits="24:24" type="bool" />
+    <field name="Low Quality Filter" dword="3" bits="26:26" type="bool" />
+  </struct>
+  <struct name="VD_CONTROL_STATE_BODY" length="2">
+    <field name="Pipeline Initialization" dword="0" bits="0:0" type="bool" />
+    <field name="Scalable Mode Pipe Lock" dword="1" bits="0:0" type="bool" />
+    <field name="Scalable Mode Pipe Unlock" dword="1" bits="1:1" type="bool" />
+    <field name="Memory Implicit Flush" dword="1" bits="2:2" type="bool" />
+  </struct>
+  <struct name="VERTEX_BUFFER_STATE" length="4">
+    <field name="Buffer Pitch" dword="0" bits="11:0" type="uint" />
+    <field name="Null Vertex Buffer" dword="0" bits="13:13" type="bool" />
+    <field name="Address Modify Enable" dword="0" bits="14:14" type="bool" />
+    <field name="MOCS" dword="0" bits="22:16" type="uint" nonzero="true" />
+    <field name="L3 Bypass Disable" dword="0" bits="25:25" type="bool" />
+    <field name="Vertex Buffer Index" dword="0" bits="31:26" type="uint" />
+    <field name="Buffer Starting Address" dword="1" bits="63:0" type="address" />
+    <field name="Buffer Size" dword="3" bits="31:0" type="uint" />
+  </struct>
+  <instruction name="3DPRIMITIVE" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="UAV Coherency Required" dword="0" bits="9:9" type="bool" />
+    <field name="Indirect Parameter Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Extended Parameters Present" dword="0" bits="11:11" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Primitive Topology Type" dword="1" bits="5:0" type="3D_Prim_Topo_Type" />
+    <field name="Vertex Access Type" dword="1" bits="8:8" type="uint">
+      <value name="SEQUENTIAL" value="0" />
+      <value name="RANDOM" value="1" />
+    </field>
+    <field name="End Offset Enable" dword="1" bits="9:9" type="bool" />
+    <field name="Vertex Count Per Instance" dword="2" bits="31:0" type="uint" />
+    <field name="Start Vertex Location" dword="3" bits="31:0" type="uint" />
+    <field name="Instance Count" dword="4" bits="31:0" type="uint" />
+    <field name="Start Instance Location" dword="5" bits="31:0" type="uint" />
+    <field name="Base Vertex Location" dword="6" bits="31:0" type="int" />
+    <field name="Extended Parameter 0" dword="7" bits="31:0" type="uint" />
+    <field name="Extended Parameter 1" dword="8" bits="31:0" type="uint" />
+    <field name="Extended Parameter 2" dword="9" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_3D_MODE" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="30" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Cross Slice Hashing Mode" dword="1" bits="1:0" type="uint">
+      <value name="Normal Mode" value="0" />
+      <value name="Disable" value="1" />
+      <value name="hashing 32x32" value="3" />
+    </field>
+    <field name="3D Scoreboard Hashing Mode" dword="1" bits="4:4" type="bool" />
+    <field name="Subslice Hashing Table Enable" dword="1" bits="5:5" type="bool" />
+    <field name="Slice Hashing Table Enable" dword="1" bits="6:6" type="bool" />
+    <field name="Cross Slice Hashing Mode Mask" dword="1" bits="17:16" type="uint" />
+    <field name="3D Scoreboard Hashing Mode Mask" dword="1" bits="20:20" type="bool" />
+    <field name="Subslice Hashing Table Enable Mask" dword="1" bits="21:21" type="bool" />
+    <field name="Slice Hashing Table Enable Mask" dword="1" bits="22:22" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_ALL" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="Shader Update Enable" dword="0" bits="12:8" type="uint" />
+    <field name="Vertex Shader Update Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Hull Shader Update Enable" dword="0" bits="9:9" type="bool" />
+    <field name="Domain Shader Update Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Geometry Shader Update Enable" dword="0" bits="11:11" type="bool" />
+    <field name="Pixel Shader Update Enable" dword="0" bits="12:12" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="109" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="MOCS" dword="1" bits="6:0" type="uint" nonzero="true" />
+    <field name="Pointer Buffer Mask" dword="1" bits="19:16" type="uint" />
+    <field name="Update Mode" dword="1" bits="31:31" type="bool" />
+    <group count="0" dword="2" size="64">
+      <field name="Constant Body" dword="0" bits="63:0" type="3DSTATE_CONSTANT_ALL_DATA" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_CPS_POINTERS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="34" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Coarse Pixel Shading State Array Pointer" dword="1" bits="31:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_DEPTH_BOUNDS" bias="2" length="4" engine="render">
+    <field name="Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="Depth Bounds Test Value Modify Disable" dword="0" bits="14:14" type="bool" />
+    <field name="Depth Bounds Test Enable Modify Disable" dword="0" bits="15:15" type="bool" />
+    <field name="3DSTATE Command Sub Opcode" dword="0" bits="23:16" type="uint" default="113" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Depth Bounds Test Enable" dword="1" bits="0:0" type="uint" />
+    <field name="Depth Bounds Test Min Value" dword="2" bits="31:0" type="float" />
+    <field name="Depth Bounds Test Max Value" dword="3" bits="31:0" type="float" />
+  </instruction>
+  <instruction name="3DSTATE_DEPTH_BUFFER" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="5" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="17:0" type="uint" />
+    <field name="Control Surface Enable" dword="1" bits="19:19" type="bool" />
+    <field name="Depth Buffer Compression Enable" dword="1" bits="21:21" type="bool" />
+    <field name="Hierarchical Depth Buffer Enable" dword="1" bits="22:22" type="bool" />
+    <field name="Corner Texel Mode" dword="1" bits="23:23" type="bool" />
+    <field name="Surface Format" dword="1" bits="26:24" type="uint">
+      <value name="D32_FLOAT" value="1" />
+      <value name="D24_UNORM_X8_UINT" value="3" />
+      <value name="D16_UNORM" value="5" />
+    </field>
+    <field name="Null Page Coherency Enable" dword="1" bits="27:27" type="bool" />
+    <field name="Depth Write Enable" dword="1" bits="28:28" type="bool" />
+    <field name="Surface Type" dword="1" bits="31:29" type="uint">
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface Base Address" dword="2" bits="63:0" type="address" />
+    <field name="Width" dword="4" bits="14:1" type="uint" />
+    <field name="Height" dword="4" bits="30:17" type="uint" />
+    <field name="MOCS" dword="5" bits="6:0" type="uint" nonzero="true" />
+    <field name="Minimum Array Element" dword="5" bits="18:8" type="uint" />
+    <field name="Depth" dword="5" bits="30:20" type="uint" />
+    <field name="Mip Tail Start LOD" dword="6" bits="29:26" type="uint" />
+    <field name="Tiled Resource Mode" dword="6" bits="31:30" type="uint">
+      <value name="NONE" value="0" />
+      <value name="TILEYF" value="1" />
+      <value name="TILEYS" value="2" />
+    </field>
+    <field name="Surface QPitch" dword="7" bits="14:0" type="uint" />
+    <field name="LOD" dword="7" bits="19:16" type="uint" />
+    <field name="Render Target View Extent" dword="7" bits="31:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_DS" bias="2" length="11" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="29" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Accesses UAV" dword="3" bits="14:14" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="4" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="4" bits="63:10" type="address" />
+    <field name="Patch URB Entry Read Offset" dword="6" bits="9:4" type="uint" />
+    <field name="Patch URB Entry Read Length" dword="6" bits="17:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="6" bits="24:20" type="uint" />
+    <field name="Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Cache Disable" dword="7" bits="1:1" type="bool" />
+    <field name="Compute W Coordinate Enable" dword="7" bits="2:2" type="bool" />
+    <field name="Dispatch Mode" dword="7" bits="4:3" type="uint" prefix="DISPATCH_MODE">
+      <value name="SIMD8_SINGLE_PATCH" value="1" />
+      <value name="SIMD8_SINGLE_OR_DUAL_PATCH" value="2" />
+    </field>
+    <field name="Primitive ID Not Required" dword="7" bits="9:9" type="bool" />
+    <field name="Statistics Enable" dword="7" bits="10:10" type="bool" />
+    <field name="Maximum Number of Threads" dword="7" bits="30:21" type="uint" />
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="8" bits="7:0" type="uint" />
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="8" bits="15:8" type="uint" />
+    <field name="Vertex URB Entry Output Length" dword="8" bits="20:16" type="uint" />
+    <field name="Vertex URB Entry Output Read Offset" dword="8" bits="26:21" type="uint" />
+    <field name="DUAL_PATCH Kernel Start Pointer" dword="9" bits="63:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_HIER_DEPTH_BUFFER" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="7" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="Hierarchical Depth Buffer Write Thru Enable" dword="1" bits="20:20" type="bool" />
+    <field name="Tiled Mode" dword="1" bits="23:22" type="uint">
+      <value name="NONE" value="0" />
+      <value name="TILEYF" value="1" />
+      <value name="TILEYS" value="2" />
+    </field>
+    <field name="MOCS" dword="1" bits="31:25" type="uint" nonzero="true" />
+    <field name="Surface Base Address" dword="2" bits="63:0" type="address" />
+    <field name="Surface QPitch" dword="4" bits="14:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_HS" bias="2" length="9" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="7" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="27" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Software Exception Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="1" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="1" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Instance Count" dword="2" bits="4:0" type="uint" />
+    <field name="Maximum Number of Threads" dword="2" bits="16:8" type="uint" />
+    <field name="Statistics Enable" dword="2" bits="29:29" type="bool" />
+    <field name="Enable" dword="2" bits="31:31" type="bool" />
+    <field name="Kernel Start Pointer" dword="3" bits="63:6" type="offset" />
+    <field name="Per-Thread Scratch Space" dword="5" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="5" bits="63:10" type="address" />
+    <field name="Include Primitive ID" dword="7" bits="0:0" type="bool" />
+    <field name="Patch Count Threshold" dword="7" bits="3:1" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="7" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="7" bits="16:11" type="uint" />
+    <field name="Dispatch Mode" dword="7" bits="18:17" type="uint" prefix="DISPATCH_MODE">
+      <value name="SINGLE_PATCH" value="0" />
+      <value name="8_PATCH" value="2" />
+    </field>
+    <field name="Dispatch GRF Start Register For URB Data" dword="7" bits="23:19" type="uint" />
+    <field name="Include Vertex Handles" dword="7" bits="24:24" type="bool" />
+    <field name="Accesses UAV" dword="7" bits="25:25" type="bool" />
+    <field name="Vector Mask Enable" dword="7" bits="26:26" type="bool" />
+    <field name="Single Program Flow" dword="7" bits="27:27" type="bool" />
+    <field name="Dispatch GRF Start Register For URB Data [5]" dword="7" bits="28:28" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_INDEX_BUFFER" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="10" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="MOCS" dword="1" bits="6:0" type="uint" nonzero="true" />
+    <field name="Index Format" dword="1" bits="9:8" type="uint" prefix="INDEX">
+      <value name="BYTE" value="0" />
+      <value name="WORD" value="1" />
+      <value name="DWORD" value="2" />
+    </field>
+    <field name="L3 Bypass Disable" dword="1" bits="11:11" type="bool" />
+    <field name="Buffer Starting Address" dword="2" bits="63:0" type="address" />
+    <field name="Buffer Size" dword="4" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_PRIMITIVE_REPLICATION" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="108" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Replication Count" dword="1" bits="3:0" type="uint" />
+    <field name="Replica Mask" dword="1" bits="31:16" type="uint" />
+    <group count="16" dword="2" size="4">
+      <field name="Viewport Offset" dword="0" bits="3:0" type="uint" />
+    </group>
+    <group count="16" dword="4" size="4">
+      <field name="RTAI Offset" dword="0" bits="3:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_PS" bias="2" length="12" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="10" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="32" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer 0" dword="1" bits="63:6" type="offset" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="3" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Rounding Mode" dword="3" bits="15:14" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Single Precision Denormal Mode" dword="3" bits="26:26" type="uint">
+      <value name="Flushed to Zero" value="0" />
+      <value name="Retained" value="1" />
+    </field>
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="bool" />
+    <field name="Single Program Flow" dword="3" bits="31:31" type="bool" />
+    <field name="Per Thread Scratch Space" dword="4" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="4" bits="63:10" type="address" />
+    <field name="8 Pixel Dispatch Enable" dword="6" bits="0:0" type="bool" />
+    <field name="16 Pixel Dispatch Enable" dword="6" bits="1:1" type="bool" />
+    <field name="32 Pixel Dispatch Enable" dword="6" bits="2:2" type="bool" />
+    <field name="Position XY Offset Select" dword="6" bits="4:3" type="uint">
+      <value name="POSOFFSET_NONE" value="0" />
+      <value name="POSOFFSET_CENTROID" value="2" />
+      <value name="POSOFFSET_SAMPLE" value="3" />
+    </field>
+    <field name="Dual SIMD8 Dispatch Enable" dword="6" bits="5:5" type="bool" />
+    <field name="Render Target Resolve Type" dword="6" bits="7:6" type="uint">
+      <value name="RESOLVE_DISABLED" value="0" />
+      <value name="RESOLVE_PARTIAL" value="1" />
+      <value name="FAST_CLEAR_0" value="2" />
+      <value name="RESOLVE_FULL" value="3" />
+    </field>
+    <field name="Render Target Fast Clear Enable" dword="6" bits="8:8" type="bool" />
+    <field name="Overlapping Subspans Enable" dword="6" bits="9:9" type="bool" />
+    <field name="Push Constant Enable" dword="6" bits="11:11" type="bool" />
+    <field name="Maximum Number of Threads Per PSD" dword="6" bits="31:23" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 2" dword="7" bits="6:0" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 1" dword="7" bits="14:8" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 0" dword="7" bits="22:16" type="uint" />
+    <field name="Kernel Start Pointer 1" dword="8" bits="63:6" type="offset" />
+    <field name="Kernel Start Pointer 2" dword="10" bits="63:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_SF" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="19" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Viewport Transform Enable" dword="1" bits="1:1" type="bool" />
+    <field name="Statistics Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Legacy Global Depth Bias Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Line Width" dword="1" bits="29:12" type="u11.7" />
+    <field name="Line End Cap Antialiasing Region Width" dword="2" bits="17:16" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Deref Block Size" dword="2" bits="30:29" type="uint">
+      <value name="Block Deref Size 32" value="0" />
+      <value name="Per Poly Deref Mode" value="1" />
+      <value name="Block Deref Size 8" value="2" />
+    </field>
+    <field name="Point Width" dword="3" bits="10:0" type="u8.3" />
+    <field name="Point Width Source" dword="3" bits="11:11" type="uint">
+      <value name="Vertex" value="0" />
+      <value name="State" value="1" />
+    </field>
+    <field name="Vertex Sub Pixel Precision Select" dword="3" bits="12:12" type="uint">
+      <value name="8 Bit" value="0" />
+      <value name="4 Bit" value="1" />
+    </field>
+    <field name="Smooth Point Enable" dword="3" bits="13:13" type="bool" />
+    <field name="AA Line Distance Mode" dword="3" bits="14:14" type="uint">
+      <value name="AALINEDISTANCE_TRUE" value="1" />
+    </field>
+    <field name="Triangle Fan Provoking Vertex Select" dword="3" bits="26:25" type="uint" />
+    <field name="Line Strip/List Provoking Vertex Select" dword="3" bits="28:27" type="uint" />
+    <field name="Triangle Strip/List Provoking Vertex Select" dword="3" bits="30:29" type="uint" />
+    <field name="Last Pixel Enable" dword="3" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_SO_BUFFER_INDEX_0" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="96" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="SO Buffer Index State Body" dword="1" bits="223:0" type="3DSTATE_SO_BUFFER_INDEX_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_SO_BUFFER_INDEX_1" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="97" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="SO Buffer Index State Body" dword="1" bits="223:0" type="3DSTATE_SO_BUFFER_INDEX_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_SO_BUFFER_INDEX_2" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="98" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="SO Buffer Index State Body" dword="1" bits="223:0" type="3DSTATE_SO_BUFFER_INDEX_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_SO_BUFFER_INDEX_3" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="99" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="SO Buffer Index State Body" dword="1" bits="223:0" type="3DSTATE_SO_BUFFER_INDEX_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_STENCIL_BUFFER" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="6" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="Corner Texel Mode" dword="1" bits="23:23" type="bool" />
+    <field name="Control Surface Enable" dword="1" bits="24:24" type="bool" />
+    <field name="Stencil Compression Enable" dword="1" bits="25:25" type="bool" />
+    <field name="Null Page Coherency Enable" dword="1" bits="27:27" type="bool" />
+    <field name="Stencil Write Enable" dword="1" bits="28:28" type="bool" />
+    <field name="Surface Type" dword="1" bits="31:29" type="uint">
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface Base Address" dword="2" bits="63:0" type="address" />
+    <field name="Width" dword="4" bits="14:1" type="uint" />
+    <field name="Height" dword="4" bits="30:17" type="uint" />
+    <field name="MOCS" dword="5" bits="6:0" type="uint" nonzero="true" />
+    <field name="Minimum Array Element" dword="5" bits="18:8" type="uint" />
+    <field name="Depth" dword="5" bits="30:20" type="uint" />
+    <field name="Mip Tail Start LOD" dword="6" bits="29:26" type="uint" />
+    <field name="Tiled Mode" dword="6" bits="31:30" type="uint">
+      <value name="NONE" value="0" />
+      <value name="TILEYF" value="1" />
+      <value name="TILEYS" value="2" />
+    </field>
+    <field name="Surface QPitch" dword="7" bits="14:0" type="uint" />
+    <field name="Surf LOD" dword="7" bits="19:16" type="uint" />
+    <field name="Render Target View Extent" dword="7" bits="31:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_SUBSLICE_HASH_TABLE" bias="2" length="14" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="12" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="31" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="8" dword="1" size="2">
+      <field name="Slice Hash Control" dword="0" bits="1:0" type="uint">
+        <value name="COMPUTED" value="0" />
+        <value name="UNBALANCED_TABLE_0" value="1" />
+        <value name="TABLE_0" value="2" />
+        <value name="TABLE_1" value="3" />
+      </field>
+    </group>
+    <field name="Slice Table Mode" dword="1" bits="31:30" type="uint">
+      <value name="SINGLE_TABLE" value="0" />
+      <value name="DUAL_TABLE" value="1" />
+    </field>
+    <group count="8" dword="2" size="16">
+      <group count="16" dword="0" size="1">
+        <field name="Two Way Table Entry" dword="0" bits="0:0" type="uint" />
+      </group>
+    </group>
+    <group count="8" dword="6" size="32">
+      <group count="16" dword="0" size="2">
+        <field name="Three Way Table Entry" dword="0" bits="1:0" type="uint" />
+      </group>
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_TE" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="28" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="TE Enable" dword="1" bits="0:0" type="bool" />
+    <field name="TE Mode" dword="1" bits="2:1" type="uint">
+      <value name="HW_TESS" value="0" />
+    </field>
+    <field name="TE Domain" dword="1" bits="5:4" type="uint">
+      <value name="QUAD" value="0" />
+      <value name="TRI" value="1" />
+      <value name="ISOLINE" value="2" />
+    </field>
+    <field name="Output Topology" dword="1" bits="9:8" type="uint" prefix="OUTPUT">
+      <value name="POINT" value="0" />
+      <value name="LINE" value="1" />
+      <value name="TRI_CW" value="2" />
+      <value name="TRI_CCW" value="3" />
+    </field>
+    <field name="Partitioning" dword="1" bits="13:12" type="uint">
+      <value name="INTEGER" value="0" />
+      <value name="ODD_FRACTIONAL" value="1" />
+      <value name="EVEN_FRACTIONAL" value="2" />
+    </field>
+    <field name="Tessellation Scale Factor Enable" dword="1" bits="19:19" type="bool" />
+    <field name="Tessellation Factor Format" dword="1" bits="20:20" type="uint">
+      <value name="FLOAT32" value="0" />
+      <value name="FLOAT16" value="1" />
+    </field>
+    <field name="Patch Header Layout" dword="1" bits="23:22" type="uint">
+      <value name="LEGACY" value="0" />
+      <value name="REVERSED" value="2" />
+      <value name="REVERSED_TRI_INSIDE_SEPARATE" value="3" />
+    </field>
+    <field name="Maximum Tessellation Factor Odd" dword="2" bits="31:0" type="float" />
+    <field name="Maximum Tessellation Factor Not Odd" dword="3" bits="31:0" type="float" />
+    <field name="Tessellation Scale Factor" dword="4" bits="31:0" type="float" />
+  </instruction>
+  <instruction name="3DSTATE_URB_ALLOC_DS" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="90" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="DS URB Entry Allocation Size" dword="1" bits="9:0" type="uint" />
+    <field name="DS URB Starting Address Slice0" dword="1" bits="17:10" type="uint" />
+    <field name="DS URB Starting Address Slice N" dword="1" bits="28:21" type="uint" />
+    <field name="DS Number of URB Entries Slice0" dword="2" bits="15:0" type="uint" />
+    <field name="DS Number of URB Entries Slice N" dword="2" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_URB_ALLOC_GS" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="91" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="GS URB Entry Allocation Size" dword="1" bits="9:0" type="uint" />
+    <field name="GS URB Starting Address Slice0" dword="1" bits="17:10" type="uint" />
+    <field name="GS URB Starting Address Slice N" dword="1" bits="28:21" type="uint" />
+    <field name="GS Number of URB Entries Slice0" dword="2" bits="15:0" type="uint" />
+    <field name="GS Number of URB Entries Slice N" dword="2" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_URB_ALLOC_HS" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="89" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="HS URB Entry Allocation Size" dword="1" bits="9:0" type="uint" />
+    <field name="HS URB Starting Address Slice0" dword="1" bits="17:10" type="uint" />
+    <field name="HS URB Starting Address Slice N" dword="1" bits="28:21" type="uint" />
+    <field name="HS Number of URB Entries Slice0" dword="2" bits="15:0" type="uint" />
+    <field name="HS Number of URB Entries Slice N" dword="2" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_URB_ALLOC_VS" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="88" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="VS URB Entry Allocation Size" dword="1" bits="9:0" type="uint" />
+    <field name="VS URB Starting Address Slice0" dword="1" bits="17:10" type="uint" />
+    <field name="VS URB Starting Address Slice N" dword="1" bits="28:21" type="uint" />
+    <field name="VS Number of URB Entries Slice0" dword="2" bits="15:0" type="uint" />
+    <field name="VS Number of URB Entries Slice N" dword="2" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_WM_DEPTH_STENCIL" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="Stencil Reference Value Modify Disable" dword="0" bits="8:8" type="bool" />
+    <field name="Stencil Test Mask Modify Disable" dword="0" bits="9:9" type="bool" />
+    <field name="Stencil Write Mask Modify Disable" dword="0" bits="10:10" type="bool" />
+    <field name="Stencil State Modify Disable" dword="0" bits="11:11" type="bool" />
+    <field name="Depth State Modify Disable" dword="0" bits="12:12" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="78" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Depth Buffer Write Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Depth Test Enable" dword="1" bits="1:1" type="bool" />
+    <field name="Stencil Buffer Write Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Stencil Test Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Double Sided Stencil Enable" dword="1" bits="4:4" type="bool" />
+    <field name="Depth Test Function" dword="1" bits="7:5" type="3D_Compare_Function" />
+    <field name="Stencil Test Function" dword="1" bits="10:8" type="3D_Compare_Function" />
+    <field name="Backface Stencil Pass Depth Pass Op" dword="1" bits="13:11" type="3D_Stencil_Operation" />
+    <field name="Backface Stencil Pass Depth Fail Op" dword="1" bits="16:14" type="3D_Stencil_Operation" />
+    <field name="Backface Stencil Fail Op" dword="1" bits="19:17" type="3D_Stencil_Operation" />
+    <field name="Backface Stencil Test Function" dword="1" bits="22:20" type="3D_Compare_Function" />
+    <field name="Stencil Pass Depth Pass Op" dword="1" bits="25:23" type="3D_Stencil_Operation" />
+    <field name="Stencil Pass Depth Fail Op" dword="1" bits="28:26" type="3D_Stencil_Operation" />
+    <field name="Stencil Fail Op" dword="1" bits="31:29" type="3D_Stencil_Operation" />
+    <field name="Backface Stencil Write Mask" dword="2" bits="7:0" type="uint" />
+    <field name="Backface Stencil Test Mask" dword="2" bits="15:8" type="uint" />
+    <field name="Stencil Write Mask" dword="2" bits="23:16" type="uint" />
+    <field name="Stencil Test Mask" dword="2" bits="31:24" type="uint" />
+    <field name="Backface Stencil Reference Value" dword="3" bits="7:0" type="uint" />
+    <field name="Stencil Reference Value" dword="3" bits="15:8" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_WM_HZ_OP" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="82" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Number of Multisamples" dword="1" bits="15:13" type="uint" />
+    <field name="Stencil Clear Value" dword="1" bits="23:16" type="uint" />
+    <field name="Stencil Buffer Resolve Enable" dword="1" bits="24:24" type="bool" />
+    <field name="Full Surface Depth and Stencil Clear" dword="1" bits="25:25" type="bool" />
+    <field name="Pixel Position Offset Enable" dword="1" bits="26:26" type="bool" />
+    <field name="Hierarchical Depth Buffer Resolve Enable" dword="1" bits="27:27" type="bool" />
+    <field name="Depth Buffer Resolve Enable" dword="1" bits="28:28" type="bool" />
+    <field name="Scissor Rectangle Enable" dword="1" bits="29:29" type="bool" />
+    <field name="Depth Buffer Clear Enable" dword="1" bits="30:30" type="bool" />
+    <field name="Stencil Buffer Clear Enable" dword="1" bits="31:31" type="bool" />
+    <field name="Clear Rectangle X Min" dword="2" bits="15:0" type="uint" />
+    <field name="Clear Rectangle Y Min" dword="2" bits="31:16" type="uint" />
+    <field name="Clear Rectangle X Max" dword="3" bits="15:0" type="uint" />
+    <field name="Clear Rectangle Y Max" dword="3" bits="31:16" type="uint" />
+    <field name="Sample Mask" dword="4" bits="15:0" type="uint" />
+  </instruction>
+  <instruction name="AVP_BSD_OBJECT" bias="2" length="3" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="1" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="32" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Tile Indirect BSD Data Length" dword="1" bits="31:0" type="uint" />
+    <field name="Tile Indirect Data Start Address" dword="2" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="AVP_IND_OBJ_BASE_ADDR_STATE" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="3" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="AVP Indirect Bitstream Object Base Address" dword="1" bits="63:0" type="address" />
+    <field name="AVP Indirect Bitstream Object Address Attributes" dword="3" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="AVP Indirect Bitstream Object Access Upper Bound" dword="4" bits="63:0" type="address" />
+  </instruction>
+  <instruction name="AVP_INLOOP_FILTER_STATE" bias="2" length="15" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="13" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="51" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Luma Y Deblocker Filter Level Vertical" dword="1" bits="5:0" type="uint" />
+    <field name="Luma Y Deblocker Filter Level Horizontal" dword="1" bits="11:6" type="uint" />
+    <field name="Chroma U Deblocker Filter Level" dword="1" bits="17:12" type="uint" />
+    <field name="Chroma V Deblocker Filter Level" dword="1" bits="23:18" type="uint" />
+    <field name="Deblocker Filter Sharpness Level" dword="1" bits="26:24" type="uint" />
+    <field name="Deblocker Filter Mode Ref Delta Enable Flag" dword="1" bits="27:27" type="bool" />
+    <field name="Deblocker Delta LF Resolution" dword="1" bits="29:28" type="uint" />
+    <field name="Deblocker Filter Delta LF Multi Flag" dword="1" bits="30:30" type="bool" />
+    <field name="Deblocker Filter Delta LF Present Flag" dword="1" bits="31:31" type="bool" />
+    <field name="Deblocker Filter Ref Deltas 0" dword="2" bits="6:0" type="int" />
+    <field name="Deblocker Filter Ref Deltas 1" dword="2" bits="14:8" type="int" />
+    <field name="Deblocker Filter Ref Deltas 2" dword="2" bits="22:16" type="int" />
+    <field name="Deblocker Filter Ref Deltas 3" dword="2" bits="30:24" type="int" />
+    <field name="Deblocker Filter Ref Deltas 4" dword="3" bits="6:0" type="int" />
+    <field name="Deblocker Filter Ref Deltas 5" dword="3" bits="14:8" type="int" />
+    <field name="Deblocker Filter Ref Deltas 6" dword="3" bits="22:16" type="int" />
+    <field name="Deblocker Filter Ref Deltas 7" dword="3" bits="30:24" type="int" />
+    <field name="Deblocker Filter Mode Deltas 0" dword="4" bits="6:0" type="int" />
+    <field name="Deblocker Filter Mode Deltas 1" dword="4" bits="14:8" type="int" />
+    <field name="CDEF Y Strength 0" dword="5" bits="5:0" type="uint" />
+    <field name="CDEF Y Strength 1" dword="5" bits="11:6" type="uint" />
+    <field name="CDEF Y Strength 2" dword="5" bits="17:12" type="uint" />
+    <field name="CDEF Y Strength 3" dword="5" bits="23:18" type="uint" />
+    <field name="CDEF Bits" dword="5" bits="29:28" type="uint" />
+    <field name="CDEF Filter Dmpaing Factor Minus 3" dword="5" bits="31:30" type="uint" />
+    <field name="CDEF Y Strength 4" dword="6" bits="5:0" type="uint" />
+    <field name="CDEF Y Strength 5" dword="6" bits="11:6" type="uint" />
+    <field name="CDEF Y Strength 6" dword="6" bits="17:12" type="uint" />
+    <field name="CDEF Y Strength 7" dword="6" bits="23:18" type="uint" />
+    <field name="CDEF UV Strength 0" dword="7" bits="5:0" type="uint" />
+    <field name="CDEF UV Strength 1" dword="7" bits="11:6" type="uint" />
+    <field name="CDEF UV Strength 2" dword="7" bits="17:12" type="uint" />
+    <field name="CDEF UV Strength 3" dword="7" bits="23:18" type="uint" />
+    <field name="CDEF UV Strength 4" dword="8" bits="5:0" type="uint" />
+    <field name="CDEF UV Strength 5" dword="8" bits="11:6" type="uint" />
+    <field name="CDEF UV Strength 6" dword="8" bits="17:12" type="uint" />
+    <field name="CDEF UV Strength 7" dword="8" bits="23:18" type="uint" />
+    <field name="Super Res Upscaled Frame Width Minus 1" dword="9" bits="15:0" type="uint" />
+    <field name="Super Res Denom" dword="9" bits="20:16" type="uint" />
+    <field name="Frame Loop Restoration Filter Luma Y" dword="10" bits="1:0" type="uint" />
+    <field name="Frame Loop Restoration Filter Chroma U" dword="10" bits="3:2" type="uint" />
+    <field name="Frame Loop Restoration Filter Chroma V" dword="10" bits="5:4" type="uint" />
+    <field name="Loop Restoration Unit Size Luma Y" dword="10" bits="9:8" type="uint" />
+    <field name="Use Same Loop Restoration Unit Size Chromas UV Flag" dword="10" bits="10:10" type="bool" />
+    <field name="Luma Plane x_step_qn" dword="11" bits="15:0" type="uint" />
+    <field name="Luma Plane x0_qn" dword="12" bits="31:0" type="uint" />
+    <field name="Chroma Plane x_step_qn" dword="13" bits="15:0" type="uint" />
+    <field name="Chroma Plane x0_qn" dword="14" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="AVP_INTER_PRED_STATE" bias="2" length="15" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="13" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="18" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="7" dword="1" size="8">
+      <field name="Saved Order Hints 0" dword="0" bits="7:0" type="uint" />
+    </group>
+    <field name="Active Reference Bitmask" dword="2" bits="31:24" type="uint" />
+    <group count="7" dword="3" size="8">
+      <field name="Saved Order Hints 1" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="7" dword="5" size="8">
+      <field name="Saved Order Hints 2" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="7" dword="7" size="8">
+      <field name="Saved Order Hints 3" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="7" dword="9" size="8">
+      <field name="Saved Order Hints 4" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="7" dword="11" size="8">
+      <field name="Saved Order Hints 5" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="7" dword="13" size="8">
+      <field name="Saved Order Hints 6" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="7" dword="15" size="8">
+      <field name="Saved Order Hints 7" dword="0" bits="7:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="AVP_PIC_STATE" bias="2" length="51" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="49" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="48" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Width" dword="1" bits="13:0" type="uint" />
+    <field name="Frame Height" dword="1" bits="29:16" type="uint" />
+    <field name="Sequence Chroma SubSampling Format" dword="2" bits="1:0" type="uint" prefix="SS">
+      <value name="Monochrome" value="0" />
+      <value name="420" value="1" />
+      <value name="422" value="2" />
+      <value name="444" value="3" />
+    </field>
+    <field name="Sequence Pixel Bit-Depth Idc" dword="2" bits="4:3" type="uint" prefix="SeqPix">
+      <value name="8-bit" value="0" />
+      <value name="10-bit" value="1" />
+      <value name="12-bit" value="2" />
+    </field>
+    <field name="Sequence Superblock Size Used" dword="2" bits="8:7" type="uint">
+      <value name="64x64" value="0" />
+      <value name="128x128" value="1" />
+    </field>
+    <field name="Sequence Enable Order Hint Flag" dword="2" bits="9:9" type="bool" />
+    <field name="Sequence Order Hint Bits Minus 1" dword="2" bits="12:10" type="uint" />
+    <field name="Sequence Enable Filter Intra Flag" dword="2" bits="16:16" type="bool" />
+    <field name="Sequence Enable Intra Edge Filter Flag" dword="2" bits="17:17" type="bool" />
+    <field name="Sequence Enable Dual Filter Flag" dword="2" bits="18:18" type="bool" />
+    <field name="Sequence Enable Inter Intra Compound Flag" dword="2" bits="19:19" type="bool" />
+    <field name="Sequence Enable Masked Compound Flag" dword="2" bits="20:20" type="bool" />
+    <field name="Sequence Enable Joint Compound Flag" dword="2" bits="21:21" type="bool" />
+    <field name="Allow Screen Content Tools Flag" dword="3" bits="0:0" type="bool" />
+    <field name="Force Integer MV Flag" dword="3" bits="1:1" type="bool" />
+    <field name="Allow Warped Motion Flag" dword="3" bits="2:2" type="bool" />
+    <field name="Use CDEF Filter Flag" dword="3" bits="4:4" type="bool" />
+    <field name="Use Super-Res Flag" dword="3" bits="5:5" type="bool" />
+    <field name="Frame Level Loop Restoration Filter Enable" dword="3" bits="6:6" type="bool" />
+    <field name="Frame Type" dword="3" bits="17:16" type="uint" />
+    <field name="Intra Only Flag" dword="3" bits="19:19" type="bool" />
+    <field name="Error Resilient Mode Flag" dword="3" bits="22:22" type="bool" />
+    <field name="Allow IntraBC Flag" dword="3" bits="23:23" type="bool" />
+    <field name="Primary Reference Frame Idx" dword="3" bits="30:28" type="uint" />
+    <field name="Segmentation Enable Flag" dword="4" bits="0:0" type="bool" />
+    <field name="Segmentation Update Map Flag" dword="4" bits="1:1" type="bool" />
+    <field name="Segmentation Temporal Update Flag" dword="4" bits="2:2" type="bool" />
+    <field name="Pre Skip Segment ID Flag" dword="4" bits="3:3" type="bool" />
+    <field name="Last Active Segment Segment ID" dword="4" bits="6:4" type="uint" />
+    <field name="Delta Q Present Flag" dword="4" bits="7:7" type="bool" />
+    <field name="Delta Q Res" dword="4" bits="9:8" type="uint" />
+    <field name="Frame Coded Lossless Mode" dword="4" bits="10:10" type="bool" />
+    <field name="Segment Map is Zero Flag" dword="4" bits="11:11" type="bool" />
+    <field name="Segment ID Buffer Stream In Enable Flag" dword="4" bits="12:12" type="bool" />
+    <field name="Segment ID Buffer Stream Out Enable Flag" dword="4" bits="13:13" type="bool" />
+    <field name="Base Qindex" dword="4" bits="23:16" type="uint" />
+    <field name="Y dc delta Q" dword="4" bits="30:24" type="int" />
+    <field name="U dc delta Q" dword="5" bits="6:0" type="int" />
+    <field name="U ac delta Q" dword="5" bits="14:8" type="int" />
+    <field name="V dc delta Q" dword="5" bits="22:16" type="int" />
+    <field name="V ac delta Q" dword="5" bits="30:24" type="int" />
+    <field name="Allow High Precision MV" dword="6" bits="0:0" type="bool" />
+    <field name="Frame Level Reference Mode Select" dword="6" bits="1:1" type="bool" />
+    <field name="Mcomp Filter Type" dword="6" bits="4:2" type="uint">
+      <value name="Eight Tap" value="0" />
+      <value name="Eight Tap Smooth" value="1" />
+      <value name="Eight Tap Sharp" value="2" />
+      <value name="Bilinear" value="3" />
+      <value name="Switchable" value="4" />
+    </field>
+    <field name="Motion Mode Switchable Flag" dword="6" bits="6:6" type="bool" />
+    <field name="Use Reference Frame MV Set Flag" dword="6" bits="7:7" type="bool" />
+    <field name="Reference Frame Sign Bias" dword="6" bits="15:8" type="uint" />
+    <field name="Current Frame Order Hint" dword="6" bits="23:16" type="uint" />
+    <field name="Reduced Tx Set Used" dword="7" bits="0:0" type="bool" />
+    <field name="Frame Transform Mode" dword="7" bits="2:1" type="uint" />
+    <field name="Skip Mode Present Flag" dword="7" bits="4:4" type="bool" />
+    <field name="Skip Mode Frame 0" dword="7" bits="7:5" type="uint" />
+    <field name="Skip Mode Frame 1" dword="7" bits="11:9" type="uint" />
+    <field name="Reference Frame Side" dword="7" bits="31:24" type="uint" />
+    <field name="Global Motion Type 1" dword="8" bits="4:3" type="uint" />
+    <field name="Global Motion Type 2" dword="8" bits="7:6" type="uint" />
+    <field name="Global Motion Type 3" dword="8" bits="10:9" type="uint" />
+    <field name="Global Motion Type 4" dword="8" bits="13:12" type="uint" />
+    <field name="Global Motion Type 5" dword="8" bits="16:15" type="uint" />
+    <field name="Global Motion Type 6" dword="8" bits="19:18" type="uint" />
+    <field name="Global Motion Type 7" dword="8" bits="22:21" type="uint" />
+    <field name="Frame Level Global Motion Invalid Flags" dword="8" bits="31:24" type="uint" />
+    <group count="42" dword="9" size="16">
+      <field name="Warp Parameters" dword="0" bits="15:0" type="uint" />
+    </group>
+    <field name="Reference Frame Idx 0" dword="30" bits="2:0" type="uint" />
+    <field name="Reference Frame Idx 1" dword="30" bits="6:4" type="uint" />
+    <field name="Reference Frame Idx 2" dword="30" bits="10:8" type="uint" />
+    <field name="Reference Frame Idx 3" dword="30" bits="14:12" type="uint" />
+    <field name="Reference Frame Idx 4" dword="30" bits="18:16" type="uint" />
+    <field name="Reference Frame Idx 5" dword="30" bits="22:20" type="uint" />
+    <field name="Reference Frame Idx 6" dword="30" bits="26:24" type="uint" />
+    <field name="Reference Frame Idx 7" dword="30" bits="30:28" type="uint" />
+    <field name="Intra Frame Width in Pixel Minus 1" dword="31" bits="15:0" type="uint" />
+    <field name="Intra Frame Height in Pixel Minus 1" dword="31" bits="31:16" type="uint" />
+    <field name="Last Frame Width in Pixel Minus 1" dword="32" bits="15:0" type="uint" />
+    <field name="Last Frame Height in Pixel Minus 1" dword="32" bits="31:16" type="uint" />
+    <field name="Last2 Frame Width in Pixel Minus 1" dword="33" bits="15:0" type="uint" />
+    <field name="Last2 Frame Height in Pixel Minus 1" dword="33" bits="31:16" type="uint" />
+    <field name="Last3 Frame Width in Pixel Minus 1" dword="34" bits="15:0" type="uint" />
+    <field name="Last3 Frame Height in Pixel Minus 1" dword="34" bits="31:16" type="uint" />
+    <field name="Golden Frame Width in Pixel Minus 1" dword="35" bits="15:0" type="uint" />
+    <field name="Golden Frame Height in Pixel Minus 1" dword="35" bits="31:16" type="uint" />
+    <field name="BWDREF Frame Width in Pixel Minus 1" dword="36" bits="15:0" type="uint" />
+    <field name="BWDREF Frame Height in Pixel Minus 1" dword="36" bits="31:16" type="uint" />
+    <field name="ALTREF2 Frame Width in Pixel Minus 1" dword="37" bits="15:0" type="uint" />
+    <field name="ALTREF2 Frame Height in Pixel Minus 1" dword="37" bits="31:16" type="uint" />
+    <field name="ALTREF Frame Width in Pixel Minus 1" dword="38" bits="15:0" type="uint" />
+    <field name="ALTREF Frame Height in Pixel Minus 1" dword="38" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For Intra" dword="39" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For Intra" dword="39" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For Last" dword="40" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For Last" dword="40" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For Last2" dword="41" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For Last2" dword="41" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For Last3" dword="42" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For Last3" dword="42" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For Golden" dword="43" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For Golden" dword="43" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For BWDREF" dword="44" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For BWDREF" dword="44" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For ALTREF2" dword="45" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For ALTREF2" dword="45" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For ALTREF" dword="46" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For ALTREF" dword="46" bits="31:16" type="uint" />
+    <group count="8" dword="47" size="8">
+      <field name="Reference Frame Order Hint" dword="0" bits="7:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="AVP_PIPE_BUF_ADDR_STATE" bias="2" length="188" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="186" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="8" dword="1" size="64">
+      <field name="Reference Picture - Address" dword="0" bits="63:0" type="address" />
+    </group>
+    <field name="Reference Picture - Attributes" dword="17" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Decoded Output Frame Buffer Address" dword="18" bits="63:0" type="address" />
+    <field name="Decoded Output Frame Buffer Address - Attributes" dword="20" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="IntraBC Decoded Output Frame Buffer Address" dword="24" bits="63:0" type="address" />
+    <field name="IntraBC Decoded Output Frame Buffer Address - Attributes" dword="26" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDF Tables Initialization Buffer Address" dword="27" bits="63:0" type="address" />
+    <field name="CDF Tables Initialization Buffer Address - Attributes" dword="29" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDF Tables Backward Adaptation Buffer Address" dword="30" bits="63:0" type="address" />
+    <field name="CDF Tables Backward Adaptation Buffer Address - Attributes" dword="32" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="AV1 Segment ID Read Buffer Address" dword="33" bits="63:0" type="address" />
+    <field name="AV1 Segment ID Read Buffer Address - Attributes" dword="35" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="AV1 Segment ID Write Buffer Address" dword="36" bits="63:0" type="address" />
+    <field name="AV1 Segment ID Write Buffer Address - Attributes" dword="38" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <group count="8" dword="39" size="64">
+      <field name="Collocated MV Temporal Buffer - Address" dword="0" bits="63:0" type="address" />
+    </group>
+    <field name="Collocated MV Temporal Buffer - Attributes" dword="55" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Current Frame MV Write Buffer Address" dword="56" bits="63:0" type="address" />
+    <field name="Current Frame MV Write Buffer Address - Attributes" dword="58" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Bitstream Line Rowstore Buffer Address" dword="62" bits="63:0" type="address" />
+    <field name="Bitstream Line Rowstore Buffer Address - Attributes" dword="64" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Bitstream Tile Line Rowstore Buffer Address" dword="65" bits="63:0" type="address" />
+    <field name="Bitstream Tile Line Rowstore Buffer Address - Attributes" dword="67" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Intra Prediction Line Rowstore Buffer Address" dword="68" bits="63:0" type="address" />
+    <field name="Intra Prediction Line Rowstore Buffer Address - Attributes" dword="70" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Intra Prediction Tile Line Rowstore Buffer Address" dword="71" bits="63:0" type="address" />
+    <field name="Intra Prediction Tile Line Rowstore Buffer Address - Attributes" dword="73" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Spatial Motion Vector Line Buffer Address" dword="74" bits="63:0" type="address" />
+    <field name="Spatial Motion Vector Line Buffer Address - Attributes" dword="76" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Spatial Motion Vector Tile Line Buffer Address" dword="77" bits="63:0" type="address" />
+    <field name="Spatial Motion Vector Tile Line Buffer Address - Attributes" dword="79" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Meta Tile Column Buffer Address" dword="80" bits="63:0" type="address" />
+    <field name="Loop Restoration Meta Tile Column Buffer Address - Attributes" dword="82" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Filter Tile Line Y Buffer Address" dword="83" bits="63:0" type="address" />
+    <field name="Loop Restoration Filter Tile Line Y Buffer Address - Attributes" dword="85" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Filter Tile Line U Buffer Address" dword="86" bits="63:0" type="address" />
+    <field name="Loop Restoration Filter Tile Line U Buffer Address - Attributes" dword="88" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Filter Tile Line V Buffer Address" dword="89" bits="63:0" type="address" />
+    <field name="Loop Restoration Filter Tile Line V Buffer Address - Attributes" dword="91" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Line Y Buffer Address" dword="92" bits="63:0" type="address" />
+    <field name="Deblocker Filter Line Y Buffer Address - Attributes" dword="94" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Line U Buffer Address" dword="95" bits="63:0" type="address" />
+    <field name="Deblocker Filter Line U Buffer Address - Attributes" dword="97" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Line V Buffer Address" dword="98" bits="63:0" type="address" />
+    <field name="Deblocker Filter Line V Buffer Address - Attributes" dword="100" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Tile Line Y Buffer Address" dword="101" bits="63:0" type="address" />
+    <field name="Deblocker Filter Tile Line Y Buffer Address - Attributes" dword="103" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Tile Line U Buffer Address" dword="104" bits="63:0" type="address" />
+    <field name="Deblocker Filter Tile Line U Buffer Address - Attributes" dword="106" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Tile Line V Buffer Address" dword="107" bits="63:0" type="address" />
+    <field name="Deblocker Filter Tile Line V Buffer Address - Attributes" dword="109" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Tile Column Y Buffer Address" dword="110" bits="63:0" type="address" />
+    <field name="Deblocker Filter Tile Column Y Buffer Address - Attributes" dword="112" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Tile Column U Buffer Address" dword="113" bits="63:0" type="address" />
+    <field name="Deblocker Filter Tile Column U Buffer Address - Attributes" dword="115" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Tile Column V Buffer Address" dword="116" bits="63:0" type="address" />
+    <field name="Deblocker Filter Tile Column V Buffer Address - Attributes" dword="118" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDEF Filter Line Buffer Address" dword="119" bits="63:0" type="address" />
+    <field name="CDEF Filter Line Buffer Address - Attributes" dword="121" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDEF Filter Tile Line Buffer Address" dword="128" bits="63:0" type="address" />
+    <field name="CDEF Filter Tile Line Buffer Address - Attributes" dword="130" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDEF Filter Tile Column Buffer Address" dword="137" bits="63:0" type="address" />
+    <field name="CDEF Filter Tile Column Buffer Address - Attributes" dword="139" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDEF Filter Meta Tile Line Buffer Address" dword="140" bits="63:0" type="address" />
+    <field name="CDEF Filter Meta Tile Line Buffer Address - Attributes" dword="142" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDEF Filter Meta Tile Column Buffer Address" dword="143" bits="63:0" type="address" />
+    <field name="CDEF Filter Meta Tile Column Buffer Address - Attributes" dword="145" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDEF Filter Top Left Corner Buffer Address" dword="146" bits="63:0" type="address" />
+    <field name="CDEF Filter Top Left Corner Buffer Address - Attributes" dword="148" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Super Res Tile Column Y Buffer Address" dword="149" bits="63:0" type="address" />
+    <field name="Super Res Tile Column Y Buffer Address - Attributes" dword="151" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Super Res Tile Column U Buffer Address" dword="152" bits="63:0" type="address" />
+    <field name="Super Res Tile Column U Buffer Address - Attributes" dword="154" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Super Res Tile Column V Buffer Address" dword="155" bits="63:0" type="address" />
+    <field name="Super Res Tile Column V Buffer Address - Attributes" dword="157" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Filter Tile Column Y Buffer Address" dword="158" bits="63:0" type="address" />
+    <field name="Loop Restoration Filter Tile Column Y Buffer Address - Attributes" dword="160" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Filter Tile Column U Buffer Address" dword="161" bits="63:0" type="address" />
+    <field name="Loop Restoration Filter Tile Column U Buffer Address - Attributes" dword="163" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Filter Tile Column V Buffer Address" dword="164" bits="63:0" type="address" />
+    <field name="Loop Restoration Filter Tile Column V Buffer Address - Attributes" dword="166" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Decoded Frame Status Error Buffer Address" dword="176" bits="63:0" type="address" />
+    <field name="Decoded Frame Status Error Buffer Address - Attributes" dword="178" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Decoded Block Data Streamout Buffer Address" dword="179" bits="63:0" type="address" />
+    <field name="Decoded Block Data Streamout Buffer Address - Attributes" dword="181" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+  </instruction>
+  <instruction name="AVP_PIPE_MODE_SELECT" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Codec Select" dword="1" bits="0:0" type="bool">
+      <value name="Decode" value="0" />
+      <value name="Encode" value="1" />
+    </field>
+    <field name="Pic Status/Error Report Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Codec Standard Select" dword="1" bits="7:5" type="uint" default="2" />
+    <field name="Multi Engine Mode" dword="1" bits="14:13" type="uint">
+      <value name="Single Engine Mode" value="0" />
+      <value name="Left Engine Mode" value="1" />
+      <value name="Right Engine Mode" value="2" />
+      <value name="Middle Engine Mode" value="3" />
+    </field>
+    <field name="Pipe Working Mode" dword="1" bits="16:15" type="uint">
+      <value name="Legacy Single Pipe" value="0" />
+      <value name="Decode Scalable Mode" value="3" />
+    </field>
+    <field name="Pic Status/Error Report ID" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="AVP_SEGMENT_STATE" bias="2" length="4" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="2" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="50" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Segment ID" dword="1" bits="2:0" type="uint" />
+    <field name="Segment Feature Mask" dword="2" bits="7:0" type="uint" />
+    <field name="Segment Delta Qindex" dword="2" bits="16:8" type="int" />
+    <field name="Segment Block Skip Flag" dword="2" bits="17:17" type="bool" />
+    <field name="Segment Block Global MV Flag" dword="2" bits="18:18" type="bool" />
+    <field name="Segment Lossless Flag" dword="2" bits="19:19" type="bool" />
+    <field name="Segment Luma Y QM Level" dword="2" bits="23:20" type="uint" />
+    <field name="Segment Chroma U QM Level" dword="2" bits="27:24" type="uint" />
+    <field name="Segment Chroma V QM Level" dword="2" bits="31:28" type="uint" />
+    <field name="Segment Delta Loop Filter Level Luma Vertical" dword="3" bits="6:0" type="uint" />
+    <field name="Segment Delta Loop Filter Level Luma Horizontal" dword="3" bits="13:7" type="uint" />
+    <field name="Segment Delta Loop Filter Level Chroma U" dword="3" bits="20:14" type="uint" />
+    <field name="Segment Delta Loop Filter Level Chroma V" dword="3" bits="27:21" type="uint" />
+    <field name="Segment Reference Frame" dword="3" bits="30:28" type="uint" />
+  </instruction>
+  <instruction name="AVP_SURFACE_STATE" bias="2" length="5" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="3" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch Minus 1" dword="1" bits="15:0" type="uint" />
+    <field name="Surface ID" dword="1" bits="31:28" type="uint" />
+    <field name="Y Offset for UCb" dword="2" bits="14:0" type="uint" />
+    <field name="Surface Format" dword="2" bits="31:27" type="uint" prefix="AVP">
+      <value name="PLANAR_420_8" value="4" />
+      <value name="P010" value="13" />
+    </field>
+    <field name="Default Alpha Value" dword="3" bits="15:0" type="uint" />
+    <field name="Y Offset for VCr" dword="3" bits="31:16" type="uint" />
+    <field name="Memory Compression Enable for Intra Frame" dword="4" bits="0:0" type="bool" />
+    <field name="Memory Compression Enable for Last Frame" dword="4" bits="1:1" type="bool" />
+    <field name="Memory Compression Enable for Last2 Frame" dword="4" bits="2:2" type="bool" />
+    <field name="Memory Compression Enable for Last3 Frame" dword="4" bits="3:3" type="bool" />
+    <field name="Memory Compression Enable for Golden Frame" dword="4" bits="4:4" type="bool" />
+    <field name="Memory Compression Enable for BwdRef Frame" dword="4" bits="5:5" type="bool" />
+    <field name="Memory Compression Enable for AltRef2 Frame" dword="4" bits="6:6" type="bool" />
+    <field name="Memory Compression Enable for AltRef Frame" dword="4" bits="7:7" type="bool" />
+    <field name="Compression Type for Intra Frame" dword="4" bits="8:8" type="bool" />
+    <field name="Compression Type for Last Frame" dword="4" bits="9:9" type="bool" />
+    <field name="Compression Type for Last2 Frame" dword="4" bits="10:10" type="bool" />
+    <field name="Compression Type for Last3 Frame" dword="4" bits="11:11" type="bool" />
+    <field name="Compression Type for Golden Frame" dword="4" bits="12:12" type="bool" />
+    <field name="Compression Type for BwdRef Frame" dword="4" bits="13:13" type="bool" />
+    <field name="Compression Type for AltRef2 Frame" dword="4" bits="14:14" type="bool" />
+    <field name="Compression Type for AltRef Frame" dword="4" bits="15:15" type="bool" />
+  </instruction>
+  <instruction name="AVP_TILE_CODING" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="21" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Tile ID" dword="1" bits="11:0" type="uint" />
+    <field name="TG Tile Num" dword="1" bits="23:12" type="uint" />
+    <field name="Tile Group ID" dword="1" bits="31:24" type="uint" />
+    <field name="Tile Column Position in SB Unit" dword="2" bits="9:0" type="uint" />
+    <field name="Tile Row Position in SB Unit" dword="2" bits="25:16" type="uint" />
+    <field name="Tile Width in SB Minus 1" dword="3" bits="5:0" type="uint" />
+    <field name="Tile Height in SB Minus 1" dword="3" bits="25:16" type="uint" />
+    <field name="Is Last Tile of Column Flag" dword="4" bits="25:25" type="bool" />
+    <field name="Is Last Tile of Row Flag" dword="4" bits="26:26" type="bool" />
+    <field name="Is Start Tile of Tile Group Flag" dword="4" bits="27:27" type="bool" />
+    <field name="Is End Tile of Tile Group Flag" dword="4" bits="28:28" type="bool" />
+    <field name="Is Last Tile of Frame Flag" dword="4" bits="29:29" type="bool" />
+    <field name="Disable CDF Update Flag" dword="4" bits="30:30" type="bool" />
+    <field name="Disable Frame Context Update Flag" dword="4" bits="31:31" type="bool" />
+    <field name="Number of Active BE Pipes" dword="5" bits="7:0" type="uint" />
+    <field name="Num of Tile Columns in Frame Minus 1" dword="5" bits="21:12" type="uint" />
+    <field name="Num of Tile Rows in Frame Minus 1" dword="5" bits="31:22" type="uint" />
+  </instruction>
+  <instruction name="AVP_VD_CONTROL_STATE" bias="2" length="3" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="1" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="10" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="VD Control State" dword="1" bits="63:0" type="VD_CONTROL_STATE_BODY" />
+  </instruction>
+  <instruction name="HCP_FQM_STATE" bias="2" length="34" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="32" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="5" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Intra/Inter" dword="1" bits="0:0" type="uint">
+      <value name="Intra" value="0" />
+      <value name="Inter" value="1" />
+    </field>
+    <field name="SizeID" dword="1" bits="2:1" type="uint">
+      <value name="4x4" value="0" />
+      <value name="8x8" value="1" />
+      <value name="16x16" value="2" />
+      <value name="32x32" value="3" />
+    </field>
+    <field name="Color Component" dword="1" bits="4:3" type="uint">
+      <value name="Luma" value="0" />
+      <value name="Chroma Cb" value="1" />
+      <value name="Chroma Cr" value="2" />
+    </field>
+    <field name="FQM DC Value" dword="1" bits="31:16" type="uint" />
+    <group count="128" dword="2" size="8">
+      <field name="Quantizer Matrix 8x8" dword="0" bits="7:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="HCP_PIC_STATE" bias="2" length="41" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="39" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="16" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Width In Minimum Coding Block Size" dword="1" bits="10:0" type="uint" />
+    <field name="PAK Transform Skip Enable" dword="1" bits="15:15" type="bool" />
+    <field name="Frame Height In Minimum Coding Block Size" dword="1" bits="26:16" type="uint" />
+    <field name="Min CU Size" dword="2" bits="1:0" type="uint" prefix="LCU">
+      <value name="64x64" value="3" />
+      <value name="32x32" value="2" />
+      <value name="16x16" value="1" />
+      <value name="8x8" value="0" />
+    </field>
+    <field name="LCU Size" dword="2" bits="3:2" type="uint" prefix="LCU">
+      <value name="64x64" value="3" />
+      <value name="32x32" value="2" />
+      <value name="16x16" value="1" />
+      <value name="Illegal/reserved" value="0" />
+    </field>
+    <field name="Min TU Size" dword="2" bits="5:4" type="uint" prefix="TU">
+      <value name="32x32" value="3" />
+      <value name="16x16" value="2" />
+      <value name="8x8" value="1" />
+      <value name="4x4" value="0" />
+    </field>
+    <field name="Max TU Size" dword="2" bits="7:6" type="uint" prefix="TU">
+      <value name="32x32" value="3" />
+      <value name="16x16" value="2" />
+      <value name="8x8" value="1" />
+      <value name="4x4" value="0" />
+    </field>
+    <field name="Min PCM Size" dword="2" bits="9:8" type="uint" prefix="PCM">
+      <value name="32x32" value="2" />
+      <value name="16x16" value="1" />
+      <value name="8x8" value="0" />
+    </field>
+    <field name="Max PCM Size" dword="2" bits="11:10" type="uint" prefix="PCM">
+      <value name="32x32" value="2" />
+      <value name="16x16" value="1" />
+      <value name="8x8" value="0" />
+    </field>
+    <field name="Log2 SAO Offset Scale Luma" dword="2" bits="14:12" type="uint" />
+    <field name="Log2 SAO Offset Scale Chroma" dword="2" bits="18:16" type="uint" />
+    <field name="Chroma QP Offset List Length" dword="2" bits="22:20" type="uint" />
+    <field name="Diff CU Chroma QP Offset Depth" dword="2" bits="27:24" type="uint" />
+    <field name="Chroma QP Offset List Enable" dword="2" bits="28:28" type="bool" />
+    <field name="Chroma Subsampling" dword="2" bits="31:29" type="uint">
+      <value name="4:2:0" value="1" />
+      <value name="4:2:2" value="2" />
+      <value name="4:4:4" value="3" />
+    </field>
+    <field name="Collocated Picture Is I Slice" dword="3" bits="0:0" type="bool" />
+    <field name="Current Picture Is I Slice" dword="3" bits="1:1" type="bool" />
+    <field name="CABAC Zero Word Insertion Test Enable" dword="3" bits="2:2" type="bool" />
+    <field name="High Precision Offsets Enable" dword="3" bits="19:19" type="bool" />
+    <field name="Log2 Max Transform Skip Size" dword="3" bits="22:20" type="uint" />
+    <field name="Cross Component Prediction Enable" dword="3" bits="23:23" type="bool" />
+    <field name="CABAC Bypass Alignment Enable" dword="3" bits="24:24" type="bool" />
+    <field name="Persistent Rice Adaptation Enable" dword="3" bits="25:25" type="bool" />
+    <field name="Intra Smoothing Disable" dword="3" bits="26:26" type="bool" />
+    <field name="Explicit RDPCM Enable" dword="3" bits="27:27" type="bool" />
+    <field name="Implicit RDPCM Enable" dword="3" bits="28:28" type="bool" />
+    <field name="Transform Skip Context Enable" dword="3" bits="29:29" type="bool" />
+    <field name="Transform Skip Rotation Enable" dword="3" bits="30:30" type="bool" />
+    <field name="SPS Range Extension Enable" dword="3" bits="31:31" type="bool" />
+    <field name="Sample Adaptive Offset Enable" dword="4" bits="3:3" type="bool" />
+    <field name="PCM Enable" dword="4" bits="4:4" type="bool" />
+    <field name="CU QP Delta Enable" dword="4" bits="5:5" type="bool" />
+    <field name="Max DQP Depth" dword="4" bits="7:6" type="uint" />
+    <field name="PCM Loop Filter Disable" dword="4" bits="8:8" type="bool" />
+    <field name="Constrained Intra Prediction" dword="4" bits="9:9" type="bool" />
+    <field name="Log2 Parallel Merge Level" dword="4" bits="12:10" type="uint" />
+    <field name="Sign Data Hiding" dword="4" bits="13:13" type="bool" />
+    <field name="Loop Filter Enable" dword="4" bits="15:15" type="bool" />
+    <field name="Entropy Coding Sync Enable" dword="4" bits="16:16" type="bool" />
+    <field name="Tiling Enable" dword="4" bits="17:17" type="bool" />
+    <field name="Weighted BiPredication Enable" dword="4" bits="18:18" type="bool" />
+    <field name="Weighted Predication Enable" dword="4" bits="19:19" type="bool" />
+    <field name="Field Pic" dword="4" bits="20:20" type="bool" />
+    <field name="Top Field" dword="4" bits="21:21" type="bool" />
+    <field name="Transform Skip Enable" dword="4" bits="22:22" type="bool" />
+    <field name="AMP Enable" dword="4" bits="23:23" type="bool" />
+    <field name="Transquant Bypass Enable" dword="4" bits="25:25" type="bool" />
+    <field name="Strong Intra Smoothing Enable" dword="4" bits="26:26" type="bool" />
+    <field name="CU Packet Structure" dword="4" bits="27:27" type="uint">
+      <value name="VME" value="0" />
+      <value name="ExtEnc" value="1" />
+    </field>
+    <field name="Picture Cb QP Offset" dword="5" bits="4:0" type="int" />
+    <field name="Picture Cr QP Offset" dword="5" bits="9:5" type="int" />
+    <field name="Intra Max Transform Hierarchy Depth" dword="5" bits="12:10" type="uint" />
+    <field name="Inter Max Transform Hierarchy Depth" dword="5" bits="15:13" type="uint" />
+    <field name="Chroma PCM Sample Bit Depth" dword="5" bits="19:16" type="uint" />
+    <field name="Luma PCM Sample Bit Depth" dword="5" bits="23:20" type="uint" />
+    <field name="Chroma Bit Depth" dword="5" bits="26:24" type="uint">
+      <value name="8-bit" value="0" />
+      <value name="9-bit" value="1" />
+      <value name="10-bit" value="2" />
+      <value name="11-bit" value="3" />
+      <value name="12-bit" value="4" />
+    </field>
+    <field name="Luma Bit Depth" dword="5" bits="29:27" type="uint">
+      <value name="8-bit" value="0" />
+      <value name="9-bit" value="1" />
+      <value name="10-bit" value="2" />
+      <value name="11-bit" value="3" />
+      <value name="12-bit" value="4" />
+    </field>
+    <field name="LCU Max Bit Size Allowed" dword="6" bits="15:0" type="uint" />
+    <field name="Non First Pass" dword="6" bits="16:16" type="bool" />
+    <field name="LCU Max Size Report" dword="6" bits="24:24" type="bool" />
+    <field name="Frame Bitrate Max Report" dword="6" bits="25:25" type="bool" />
+    <field name="Frame Bitrate Min Report" dword="6" bits="26:26" type="bool" />
+    <field name="Load Bitstream Pointer Per Slice" dword="6" bits="29:29" type="bool" />
+    <field name="Frame Bitrate Max" dword="7" bits="13:0" type="uint" />
+    <field name="Frame Bitrate Max Unit" dword="7" bits="31:31" type="uint" />
+    <field name="Frame Bitrate Min" dword="8" bits="13:0" type="uint" />
+    <field name="Frame Bitrate Min Unit" dword="8" bits="31:31" type="uint" />
+    <field name="Frame Bitrate Min Delta" dword="9" bits="14:0" type="uint" />
+    <field name="Frame Bitrate Max Delta" dword="9" bits="30:16" type="uint" />
+    <field name="Frame Delta QP Max" dword="10" bits="63:0" type="FRAMEDELTAQP" />
+    <field name="Frame Delta QP Min" dword="12" bits="63:0" type="FRAMEDELTAQP" />
+    <field name="Frame Delta QP Max Range" dword="14" bits="63:0" type="FRAMEDELTAQPRANGE" />
+    <field name="Frame Delta QP Min Range" dword="16" bits="63:0" type="FRAMEDELTAQPRANGE" />
+    <field name="Minimum Frame Size" dword="18" bits="15:0" type="uint" />
+    <field name="Minimum Frame Size Units" dword="18" bits="31:30" type="uint" prefix="HCP_MFSU">
+      <value name="4Kb" value="0" />
+      <value name="16Kb" value="1" />
+      <value name="Compatibility mode" value="2" />
+      <value name="16 bytes" value="3" />
+    </field>
+    <field name="Fractional QP Input" dword="19" bits="2:0" type="uint" />
+    <field name="Fractional QP Offset" dword="19" bits="5:3" type="uint" />
+    <field name="Rho Domain Rate Control Enable" dword="19" bits="6:6" type="bool" />
+    <field name="Fractional QP Adjustment Enable" dword="19" bits="7:7" type="bool" />
+    <field name="Rho Domain Frame Level QP" dword="19" bits="13:8" type="uint" />
+    <field name="PAK Dynamic Slice Mode Enable" dword="19" bits="14:14" type="bool" />
+    <field name="No Output of Prior Pics" dword="19" bits="15:15" type="bool" />
+    <field name="First Slice Segment In Pic" dword="19" bits="16:16" type="bool" />
+    <field name="Nal Unit Type" dword="19" bits="17:17" type="uint" />
+    <field name="Slice_pic_parameter_set_id" dword="19" bits="23:18" type="uint" />
+    <field name="SSE Enable" dword="19" bits="24:24" type="bool" />
+    <field name="RDOQ Enable" dword="19" bits="25:25" type="bool" />
+    <field name="Number of LCUs InNormal Slice Size Conformance Mode" dword="19" bits="27:26" type="uint" />
+    <field name="Intra TU Count Based RDOQ Disable" dword="20" bits="6:6" type="bool" />
+    <field name="Slice Size Threshold" dword="21" bits="31:0" type="uint" />
+    <field name="Target Slice Size" dword="22" bits="31:0" type="uint" />
+    <field name="Class0_SSE_Threshold0" dword="23" bits="15:0" type="uint" />
+    <field name="Class0_SSE_Threshold1" dword="23" bits="31:16" type="uint" />
+    <field name="SSE Thresholds for Class1-8" dword="24" bits="255:0" type="uint" />
+    <field name="Cb QP Offset List[0]" dword="32" bits="4:0" type="int" />
+    <field name="Cb QP Offset List[1]" dword="32" bits="9:5" type="int" />
+    <field name="Cb QP Offset List[2]" dword="32" bits="14:10" type="int" />
+    <field name="Cb QP Offset List[3]" dword="32" bits="19:15" type="int" />
+    <field name="Cb QP Offset List[4]" dword="32" bits="24:20" type="int" />
+    <field name="Cb QP Offset List[5]" dword="32" bits="29:25" type="int" />
+    <field name="Cr QP Offset List[0]" dword="33" bits="4:0" type="int" />
+    <field name="Cr QP Offset List[1]" dword="33" bits="9:5" type="int" />
+    <field name="Cr QP Offset List[2]" dword="33" bits="14:10" type="int" />
+    <field name="Cr QP Offset List[3]" dword="33" bits="19:15" type="int" />
+    <field name="Cr QP Offset List[4]" dword="33" bits="24:20" type="int" />
+    <field name="Cr QP Offset List[5]" dword="33" bits="29:25" type="int" />
+    <field name="RDOQ Intra TU Threshold" dword="37" bits="15:0" type="uint" />
+  </instruction>
+  <instruction name="HCP_PIPE_MODE_SELECT" bias="2" length="7" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="5" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Codec Select" dword="1" bits="0:0" type="uint">
+      <value name="Decode" value="0" />
+      <value name="Encode" value="1" />
+    </field>
+    <field name="Deblocker Stream-Out Enable" dword="1" bits="1:1" type="bool" />
+    <field name="PAK Pipeline Stream-Out Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Pic Status/Error Report Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Codec Standard Select" dword="1" bits="7:5" type="uint">
+      <value name="HEVC" value="0" />
+      <value name="VP9" value="1" />
+    </field>
+    <field name="Advanced Rate Control Enable" dword="1" bits="9:9" type="bool" />
+    <field name="VDEnc Mode" dword="1" bits="10:10" type="uint" prefix="VM">
+      <value name="MBEnc Mode" value="0" />
+      <value name="VDEnc Mode" value="1" />
+    </field>
+    <field name="RDOQ Enable" dword="1" bits="11:11" type="bool" />
+    <field name="PAK Frame Level Stream-Out Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Multi-Engine Mode" dword="1" bits="14:13" type="uint" />
+    <field name="Pipe Working Mode" dword="1" bits="16:15" type="uint">
+      <value name="Legacy Decoder/Encoder Mode" value="0" />
+      <value name="CABAC FE Only Decode Mode" value="1" />
+      <value name="Decoder BE Only or Encoder Mode" value="2" />
+    </field>
+    <field name="Media Soft-Reset Counter" dword="2" bits="31:0" type="uint" />
+    <field name="Pic Status/Error Report ID" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="HCP_SLICE_STATE" bias="2" length="13" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="11" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="20" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Slice Horizontal Position" dword="1" bits="9:0" type="uint" />
+    <field name="Slice Vertical Position" dword="1" bits="25:16" type="uint" />
+    <field name="Next Slice Horizontal Position" dword="2" bits="9:0" type="uint" />
+    <field name="Next Slice Vertical Position" dword="2" bits="26:16" type="uint" />
+    <field name="Slice Type" dword="3" bits="1:0" type="uint" prefix="HCP_ST">
+      <value name="B Slice" value="0" />
+      <value name="P Slice" value="1" />
+      <value name="I Slice" value="2" />
+    </field>
+    <field name="Last Slice" dword="3" bits="2:2" type="bool" />
+    <field name="Slice QP Sign" dword="3" bits="3:3" type="uint" />
+    <field name="Dependent Slice" dword="3" bits="4:4" type="bool" />
+    <field name="Slice Temporal MVP Enable" dword="3" bits="5:5" type="bool" />
+    <field name="Slice QP" dword="3" bits="11:6" type="uint" />
+    <field name="Slice Cb QP Offset" dword="3" bits="16:12" type="int">
+      <value name="-12" value="20" />
+      <value name="-11" value="21" />
+      <value name="-10" value="22" />
+      <value name="-9" value="23" />
+      <value name="-8" value="24" />
+      <value name="-7" value="25" />
+      <value name="-6" value="26" />
+      <value name="-5" value="27" />
+      <value name="-4" value="28" />
+      <value name="-3" value="29" />
+      <value name="-2" value="30" />
+      <value name="-1" value="31" />
+    </field>
+    <field name="Slice Cr QP Offset" dword="3" bits="21:17" type="int">
+      <value name="-12" value="20" />
+      <value name="-11" value="21" />
+      <value name="-10" value="22" />
+      <value name="-9" value="23" />
+      <value name="-8" value="24" />
+      <value name="-7" value="25" />
+      <value name="-6" value="26" />
+      <value name="-5" value="27" />
+      <value name="-4" value="28" />
+      <value name="-3" value="29" />
+      <value name="-2" value="30" />
+      <value name="-1" value="31" />
+    </field>
+    <field name="Intra Ref Fetch Disable" dword="3" bits="22:22" type="bool" />
+    <field name="CU Chroma QP Offset Enable" dword="3" bits="23:23" type="bool" />
+    <field name="Last Slice of Tile" dword="3" bits="24:24" type="uint" />
+    <field name="Slice Header Disable Deblocking Filter" dword="4" bits="0:0" type="bool" />
+    <field name="Slice TC Offset Div2" dword="4" bits="4:1" type="int" />
+    <field name="Slice Beta Offset Div2" dword="4" bits="8:5" type="int" />
+    <field name="Slice Loop Filter Enable" dword="4" bits="10:10" type="bool" />
+    <field name="Slice SAO Chroma" dword="4" bits="11:11" type="bool" />
+    <field name="Slice SAO Luma" dword="4" bits="12:12" type="bool" />
+    <field name="MVD L1 Zero" dword="4" bits="13:13" type="bool" />
+    <field name="Low Delay" dword="4" bits="14:14" type="bool" />
+    <field name="Collocated From L0" dword="4" bits="15:15" type="bool" />
+    <field name="Log2 Weight Denominator Chroma" dword="4" bits="18:16" type="uint" />
+    <field name="Log2 Weight Denominator Luma" dword="4" bits="21:19" type="uint" />
+    <field name="CABAC Init" dword="4" bits="22:22" type="bool" />
+    <field name="Max Merge Index" dword="4" bits="25:23" type="uint" />
+    <field name="Collocated MV Temporal Buffer Index" dword="4" bits="28:26" type="uint" />
+    <field name="Slice Header Length" dword="5" bits="15:0" type="uint" />
+    <field name="Round Intra" dword="6" bits="23:20" type="uint">
+      <value name="+1/32" value="0" />
+      <value name="+2/32" value="1" />
+      <value name="+3/32" value="2" />
+      <value name="+4/32" value="3" />
+      <value name="+5/32" value="4" />
+      <value name="+6/32" value="5" />
+      <value name="+7/32" value="6" />
+      <value name="+8/32" value="7" />
+      <value name="+9/32" value="8" />
+      <value name="+10/32" value="9" />
+      <value name="+11/32" value="10" />
+      <value name="+12/32" value="11" />
+      <value name="+13/32" value="12" />
+      <value name="+14/32" value="13" />
+      <value name="+15/32" value="14" />
+      <value name="+16/32" value="15" />
+    </field>
+    <field name="Round Inter" dword="6" bits="29:26" type="uint">
+      <value name="+1/32" value="0" />
+      <value name="+2/32" value="1" />
+      <value name="+3/32" value="2" />
+      <value name="+4/32" value="3" />
+      <value name="+5/32" value="4" />
+      <value name="+6/32" value="5" />
+      <value name="+7/32" value="6" />
+      <value name="+8/32" value="7" />
+      <value name="+9/32" value="8" />
+      <value name="+10/32" value="9" />
+      <value name="+11/32" value="10" />
+      <value name="+12/32" value="11" />
+      <value name="+13/32" value="12" />
+      <value name="+14/32" value="13" />
+      <value name="+15/32" value="14" />
+      <value name="+16/32" value="15" />
+    </field>
+    <field name="CABAC Zero Word Insertion Enable" dword="7" bits="1:1" type="bool" />
+    <field name="Emulation Byte Slice Insert Enable" dword="7" bits="2:2" type="bool" />
+    <field name="Tail Insertion Present" dword="7" bits="8:8" type="bool" />
+    <field name="Slice Data Insertion Present" dword="7" bits="9:9" type="bool" />
+    <field name="Header Insertion Present" dword="7" bits="10:10" type="bool" />
+    <field name="Indirect PAK-BSE Data Start Offset" dword="8" bits="28:6" type="offset" />
+    <field name="Transform Skip Lambda" dword="9" bits="15:0" type="uint" />
+    <field name="Force SAO Parameters To Zero" dword="9" bits="31:31" type="bool" />
+    <field name="Transform Skip Number of Zero Coeffs Factor0" dword="10" bits="7:0" type="uint" />
+    <field name="Transform Skip Number of Non-Zero Coeffs Factor0" dword="10" bits="15:8" type="uint" />
+    <field name="Transform Skip Number of Zero Coeffs Factor1" dword="10" bits="23:16" type="uint" />
+    <field name="Transform Skip Number of Non-Zero Coeffs Factor1" dword="10" bits="31:24" type="uint" />
+    <field name="Original Slice Start Ctb X" dword="11" bits="9:0" type="uint" />
+    <field name="Original Slice Start Ctb Y" dword="11" bits="25:16" type="uint" />
+    <field name="Slice Act Cr QP offset" dword="12" bits="5:0" type="uint" />
+    <field name="Slice Act Cb QP offset" dword="12" bits="11:6" type="uint" />
+    <field name="Slice Act Y QP offset" dword="12" bits="17:12" type="uint" />
+    <field name="Use Integer MV flag" dword="12" bits="31:31" type="uint" />
+  </instruction>
+  <instruction name="HCP_SURFACE_STATE" bias="2" length="5" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="3" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="Surface ID" dword="1" bits="31:28" type="uint" prefix="HCP">
+      <value name="Current Decoded Picture" value="0" />
+      <value name="Source Input Picture" value="1" />
+      <value name="Prev Reference Picture" value="2" />
+      <value name="Golden Reference Picture" value="3" />
+      <value name="AltRef Reference Picture" value="4" />
+      <value name="Reference Picture" value="5" />
+    </field>
+    <field name="Y Offset for U(Cb)" dword="2" bits="14:0" type="uint" />
+    <field name="Surface Format" dword="2" bits="31:27" type="uint">
+      <value name="YUY2" value="0" />
+      <value name="RGB_8" value="1" />
+      <value name="AYUV4444" value="2" />
+      <value name="P010Variant" value="3" />
+      <value name="PLANAR_420_8" value="4" />
+      <value name="YCRCB_SwapY" value="5" />
+      <value name="YCRCB_SwapUV" value="6" />
+      <value name="YCRCB_SwapUVY" value="7" />
+      <value name="Y216/Y210" value="8" />
+      <value name="RGB_10" value="9" />
+      <value name="Y410" value="10" />
+      <value name="NV21 Planar_420_8" value="11" />
+      <value name="Y416" value="12" />
+      <value name="P010" value="13" />
+      <value name="P016" value="14" />
+      <value name="Y216Variant" value="17" />
+      <value name="Y416Variant" value="18" />
+      <value name="YUY2Variant" value="19" />
+      <value name="AYUV4444Variant" value="20" />
+    </field>
+    <field name="Default Alpha Value" dword="3" bits="15:0" type="uint" />
+    <field name="Y Offset for V(Cr)" dword="3" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="MI_ARB_CHECK" bias="1" length="1">
+    <field name="Pre-Parser Disable" dword="0" bits="0:0" type="bool" />
+    <field name="Pre-Parser Disable Mask" dword="0" bits="8:8" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="5" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_FORCE_WAKEUP" bias="2" length="2">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="29" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Force Media-Slice0 Awake" dword="1" bits="0:0" type="uint" />
+    <field name="Force Render Awake" dword="1" bits="1:1" type="uint" />
+    <field name="Force Media-Slice1 Awake" dword="1" bits="2:2" type="uint" />
+    <field name="Force Media-Slice2 Awake" dword="1" bits="3:3" type="uint" />
+    <field name="Force Media-Slice3 Awake" dword="1" bits="4:4" type="uint" />
+    <field name="HEVC Power Well Control" dword="1" bits="8:8" type="bool" />
+    <field name="MFX Power Well Control" dword="1" bits="9:9" type="bool" />
+    <field name="Mask Bits" dword="1" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="MI_SET_APPID" bias="1" length="1">
+    <field name="Protected Memory Application ID" dword="0" bits="6:0" type="uint" />
+    <field name="Protected Memory Application ID Type" dword="0" bits="7:7" type="uint">
+      <value name="DISPLAY_APP" value="0" />
+      <value name="TRANSCODE_APP" value="1" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="14" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_STORE_DATA_IMM" bias="2" length="4">
+    <field name="DWord Length" dword="0" bits="9:0" type="uint" default="2" />
+    <field name="Force Write Completion Check " dword="0" bits="10:10" type="bool" />
+    <field name="Store Qword" dword="0" bits="21:21" type="uint" />
+    <field name="Use Global GTT" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="32" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Core Mode Enable" dword="1" bits="0:0" type="uint" />
+    <field name="Address" dword="1" bits="47:2" type="address" />
+    <field name="Immediate Data" dword="3" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="PIPE_CONTROL" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="HDC Pipeline Flush Enable" dword="0" bits="9:9" type="bool" />
+    <field name="L3 Read Only Cache Invalidation Enable" dword="0" bits="10:10" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Depth Cache Flush Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Stall At Pixel Scoreboard" dword="1" bits="1:1" type="bool" />
+    <field name="State Cache Invalidation Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Constant Cache Invalidation Enable" dword="1" bits="3:3" type="bool" />
+    <field name="VF Cache Invalidation Enable" dword="1" bits="4:4" type="bool" />
+    <field name="DC Flush Enable" dword="1" bits="5:5" type="bool" />
+    <field name="Pipe Control Flush Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Notify Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Indirect State Pointers Disable" dword="1" bits="9:9" type="bool" />
+    <field name="Texture Cache Invalidation Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Instruction Cache Invalidate Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Render Target Cache Flush Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Depth Stall Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Post Sync Operation" dword="1" bits="15:14" type="uint">
+      <value name="No Write" value="0" />
+      <value name="Write Immediate Data" value="1" />
+      <value name="Write PS Depth Count" value="2" />
+      <value name="Write Timestamp" value="3" />
+    </field>
+    <field name="Generic Media State Clear" dword="1" bits="16:16" type="bool" />
+    <field name="PSD Sync Enable" dword="1" bits="17:17" type="bool" />
+    <field name="TLB Invalidate" dword="1" bits="18:18" type="bool" />
+    <field name="Global Snapshot Count Reset" dword="1" bits="19:19" type="bool" />
+    <field name="Command Streamer Stall Enable" dword="1" bits="20:20" type="bool" />
+    <field name="Store Data Index" dword="1" bits="21:21" type="uint" />
+    <field name="Protected Memory Enable" dword="1" bits="22:22" type="bool" />
+    <field name="LRI Post Sync Operation" dword="1" bits="23:23" type="uint">
+      <value name="No LRI Operation" value="0" />
+      <value name="MMIO Write Immediate Data" value="1" />
+    </field>
+    <field name="Destination Address Type" dword="1" bits="24:24" type="uint" prefix="DAT">
+      <value name="PPGTT" value="0" />
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Flush LLC" dword="1" bits="26:26" type="bool" />
+    <field name="Protected Memory Disable" dword="1" bits="27:27" type="bool" />
+    <field name="Tile Cache Flush Enable" dword="1" bits="28:28" type="bool" />
+    <field name="Command Cache Invalidate Enable" dword="1" bits="29:29" type="bool" />
+    <field name="L3 Fabric Flush" dword="1" bits="30:30" type="bool" />
+    <field name="Address" dword="2" bits="47:2" type="address" />
+    <field name="Immediate Data" dword="4" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="VDENC_CMD1" bias="2" length="31" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="29" />
+    <field name="SubOpcodeB" dword="0" bits="20:16" type="uint" default="10" />
+    <field name="SubOpcodeA" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command OpCode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="30" dword="1" size="32">
+      <field name="Values" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="VDENC_CMD2" bias="2" length="51" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="49" />
+    <field name="SubOpcodeB" dword="0" bits="20:16" type="uint" default="9" />
+    <field name="SubOpcodeA" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command OpCode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Width In Pixels Minus One" dword="1" bits="15:0" type="uint" />
+    <field name="Values1" dword="1" bits="31:0" type="uint" />
+    <field name="Frame Height In Pixels Minus One" dword="1" bits="31:16" type="uint" />
+    <field name="Values2" dword="2" bits="31:0" type="uint" />
+    <field name="Picture Type" dword="2" bits="21:20" type="uint" />
+    <field name="Temporal MVP Enable Flag" dword="2" bits="22:22" type="bool" />
+    <field name="Long Term Reference Flags L0" dword="2" bits="26:24" type="uint" />
+    <field name="Long Term Reference Flags L1" dword="2" bits="27:27" type="uint" />
+    <field name="Transform Skip" dword="2" bits="30:30" type="bool" />
+    <field name="POC Number For Refid0 In L0" dword="3" bits="7:0" type="int" />
+    <field name="Values3" dword="3" bits="31:0" type="uint" />
+    <field name="POC Number For Refid0 In L1" dword="3" bits="15:8" type="int" />
+    <field name="POC Number For Refid1 In L0" dword="3" bits="23:16" type="int" />
+    <field name="POC Number For Refid1 In L1" dword="3" bits="31:24" type="int" />
+    <field name="POC Number For Refid2 In L0" dword="4" bits="7:0" type="int" />
+    <field name="Values4" dword="4" bits="31:0" type="uint" />
+    <field name="POC Number For Refid2 In L1" dword="4" bits="15:8" type="int" />
+    <field name="Values5" dword="5" bits="31:0" type="uint" />
+    <field name="Stream In ROI Enable" dword="5" bits="8:8" type="bool" />
+    <field name="Sub Pel Mode" dword="5" bits="11:10" type="uint" />
+    <field name="Num Ref Idx L0 Minus One" dword="5" bits="27:24" type="uint" />
+    <field name="Num Ref Idx L1 Minus One" dword="5" bits="31:28" type="uint" />
+    <field name="Values6" dword="6" bits="31:0" type="uint" />
+    <field name="Values7" dword="7" bits="31:0" type="uint" />
+    <field name="Segmentation Enable" dword="7" bits="4:4" type="bool" />
+    <field name="Segmentation Map Temporal Prediction Enable" dword="7" bits="5:5" type="bool" />
+    <field name="Tiling Enable" dword="7" bits="7:7" type="bool" />
+    <field name="VDEnc Stream In Enable" dword="7" bits="9:9" type="bool" />
+    <field name="PAK Only Multi Pass Enable" dword="7" bits="16:16" type="bool" />
+    <field name="Values8" dword="8" bits="31:0" type="uint" />
+    <field name="Values9" dword="9" bits="31:0" type="uint" />
+    <field name="Values10" dword="10" bits="31:0" type="uint" />
+    <field name="Values11" dword="11" bits="31:0" type="uint" />
+    <field name="Values12" dword="12" bits="31:0" type="uint" />
+    <field name="Values13" dword="13" bits="31:0" type="uint" />
+    <field name="Roi QP Adjustment For Zone1 Stage3" dword="13" bits="7:4" type="uint" />
+    <field name="Roi QP Adjustment For Zone2 Stage3" dword="13" bits="11:8" type="uint" />
+    <field name="Roi QP Adjustment For Zone3 Stage3" dword="13" bits="15:12" type="uint" />
+    <field name="Values14" dword="14" bits="31:0" type="uint" />
+    <field name="Values15" dword="15" bits="31:0" type="uint" />
+    <field name="Min Qp" dword="16" bits="7:0" type="uint" />
+    <field name="Values16" dword="16" bits="31:0" type="uint" />
+    <field name="Max Qp" dword="16" bits="15:8" type="uint" />
+    <field name="Values17" dword="17" bits="31:0" type="uint" />
+    <field name="Temporal MV Enable For Integer Search" dword="17" bits="20:20" type="bool" />
+    <field name="Values18" dword="18" bits="31:0" type="uint" />
+    <field name="Values19" dword="19" bits="31:0" type="uint" />
+    <field name="Values20" dword="20" bits="31:0" type="uint" />
+    <field name="Intra Refresh Pos" dword="21" bits="8:0" type="uint" />
+    <field name="Values21" dword="21" bits="31:0" type="uint" />
+    <field name="Intra Refresh MB Size Minus One" dword="21" bits="23:16" type="uint" />
+    <field name="Intra Refresh Mode" dword="21" bits="24:24" type="uint" />
+    <field name="QP Adjustment For Rolling I" dword="21" bits="31:28" type="uint" />
+    <field name="Values22" dword="22" bits="31:0" type="uint" />
+    <field name="Values23" dword="23" bits="31:0" type="uint" />
+    <field name="QP For Seg0" dword="24" bits="7:0" type="uint" />
+    <field name="Values24" dword="24" bits="31:0" type="uint" />
+    <field name="QP For Seg1" dword="24" bits="15:8" type="uint" />
+    <field name="QP For Seg2" dword="24" bits="23:16" type="uint" />
+    <field name="QP For Seg3" dword="24" bits="31:24" type="uint" />
+    <field name="QP For Seg4" dword="25" bits="7:0" type="uint" />
+    <field name="Values25" dword="25" bits="31:0" type="uint" />
+    <field name="QP For Seg5" dword="25" bits="15:8" type="uint" />
+    <field name="QP For Seg6" dword="25" bits="23:16" type="uint" />
+    <field name="QP For Seg7" dword="25" bits="31:24" type="uint" />
+    <field name="Rd Qp Lambda" dword="26" bits="15:0" type="uint" />
+    <field name="Values26" dword="26" bits="31:0" type="uint" />
+    <field name="Sad Qp Lambda" dword="26" bits="24:16" type="uint" />
+    <field name="VP9 Dynamic Slice Enable" dword="26" bits="25:25" type="bool" />
+    <field name="Qp Prime YDc" dword="27" bits="7:0" type="uint" />
+    <field name="Values27" dword="27" bits="31:0" type="uint" />
+    <field name="Qp Prime YAc" dword="27" bits="15:8" type="uint" />
+    <field name="Values28" dword="28" bits="31:0" type="uint" />
+    <field name="Values29" dword="29" bits="31:0" type="uint" />
+    <field name="Values30" dword="30" bits="31:0" type="uint" />
+    <field name="Values31" dword="31" bits="31:0" type="uint" />
+    <field name="Values32" dword="32" bits="31:0" type="uint" />
+    <field name="Values33" dword="33" bits="31:0" type="uint" />
+    <field name="Values34" dword="34" bits="31:0" type="uint" />
+    <field name="Values35" dword="35" bits="31:0" type="uint" />
+    <field name="Intra Refresh Boundary Ref0" dword="36" bits="8:0" type="uint" />
+    <field name="Intra Refresh Boundary Ref1" dword="36" bits="18:10" type="uint" />
+    <field name="Intra Refresh Boundary Ref2" dword="36" bits="28:20" type="uint" />
+    <field name="Tile Replay Enable" dword="37" bits="27:27" type="bool" />
+    <field name="Values39" dword="38" bits="31:0" type="uint" />
+    <field name="Values40" dword="39" bits="31:0" type="uint" />
+    <field name="Values41" dword="40" bits="31:0" type="uint" />
+    <field name="Values42" dword="41" bits="31:0" type="uint" />
+    <field name="Values43" dword="42" bits="31:0" type="uint" />
+    <field name="Values44" dword="43" bits="31:0" type="uint" />
+    <field name="Values45" dword="44" bits="31:0" type="uint" />
+    <field name="Values46" dword="45" bits="31:0" type="uint" />
+    <field name="Values47" dword="46" bits="31:0" type="uint" />
+    <field name="Values48" dword="47" bits="31:0" type="uint" />
+    <field name="Values49" dword="48" bits="31:0" type="uint" />
+    <field name="Values50" dword="49" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="VDENC_CONTROL_STATE" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="11" />
+    <field name="Media Command OpCode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Vdenc Initialization" dword="1" bits="1:1" type="bool" />
+  </instruction>
+  <instruction name="VDENC_PIPE_BUF_ADDR_STATE" bias="2" length="71" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="69" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="4" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="DS FWD REF0" dword="1" bits="95:0" type="VDENC_PICTURE" />
+    <field name="DS FWD REF1" dword="4" bits="95:0" type="VDENC_PICTURE" />
+    <field name="Original Uncompressed Picture" dword="10" bits="95:0" type="VDENC_PICTURE" />
+    <field name="Stream-In Data Picture" dword="13" bits="95:0" type="VDENC_PICTURE" />
+    <field name="Row Store Scratch Buffer" dword="16" bits="95:0" type="VDENC_PICTURE" />
+    <field name="Colocated MV Read Buffer" dword="19" bits="95:0" type="VDENC_PICTURE" />
+    <field name="FWD REF0" dword="22" bits="95:0" type="VDENC_PICTURE" />
+    <field name="FWD REF1" dword="25" bits="95:0" type="VDENC_PICTURE" />
+    <field name="FWD REF2" dword="28" bits="95:0" type="VDENC_PICTURE" />
+    <field name="BWD REF0" dword="31" bits="95:0" type="VDENC_PICTURE" />
+    <field name="VDEnc Statistics Stream-Out" dword="34" bits="95:0" type="VDENC_PICTURE" />
+    <field name="DS FWD REF0 4X" dword="37" bits="95:0" type="VDENC_PICTURE" />
+    <field name="DS FWD REF1 4X" dword="40" bits="95:0" type="VDENC_PICTURE" />
+    <field name="VDEnc CU Record Stream-Out Buffer" dword="46" bits="95:0" type="VDENC_PICTURE" />
+    <field name="VDEnc LCU PAK_OBJ_CMD Buffer" dword="49" bits="95:0" type="VDENC_PICTURE" />
+    <field name="Scaled Reference Surface 8X" dword="52" bits="95:0" type="VDENC_PICTURE" />
+    <field name="Scaled Reference Surface 4X" dword="55" bits="95:0" type="VDENC_PICTURE" />
+    <field name="VP9 Segmentation Map Stream-In Buffer" dword="58" bits="95:0" type="VDENC_PICTURE" />
+    <field name="VP9 Segmentation Map Stream-Out Buffer" dword="61" bits="31:0" type="VDENC_PICTURE" />
+    <field name="Weights Histogram Stream-Out Offset" dword="62" bits="95:0" type="uint" />
+    <field name="VDEnc Tile Row Store Buffer" dword="65" bits="95:0" type="VDENC_PICTURE" />
+    <field name="VDEnc Cumulative CU Count Stream-Out Surface" dword="68" bits="95:0" type="VDENC_PICTURE" />
+    <field name="VDEnc Palette Mode Stream-Out Surface" dword="71" bits="95:0" type="VDENC_PICTURE" />
+  </instruction>
+  <instruction name="VDENC_PIPE_MODE_SELECT" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Standard Select" dword="1" bits="3:0" type="uint" prefix="SS">
+      <value name="HEVC" value="0" />
+      <value name="VP9" value="1" />
+      <value name="AVC" value="2" />
+    </field>
+    <field name="Scalability Mode" dword="1" bits="4:4" type="bool" />
+    <field name="Frame Statistics Stream-Out Enable" dword="1" bits="5:5" type="bool" />
+    <field name="VDEnc PAK_OBJ_CMD Stream-Out Enable" dword="1" bits="6:6" type="bool" />
+    <field name="TLB Prefetch Enable" dword="1" bits="7:7" type="bool" />
+    <field name="PAK Threshold Check Enable" dword="1" bits="8:8" type="bool" />
+    <field name="VDEnc Stream-In Enable" dword="1" bits="9:9" type="bool" />
+    <field name="DownScaled 8x Write Disable" dword="1" bits="10:10" type="bool" />
+    <field name="DownScaled 4x Write Disable" dword="1" bits="11:11" type="bool" />
+    <field name="Bit Depth" dword="1" bits="14:12" type="uint">
+      <value name="8-bit" value="0" />
+      <value name="10-bit" value="2" />
+    </field>
+    <field name="PAK Chroma Sub-Sampling Type" dword="1" bits="16:15" type="uint">
+      <value name="4:2:0" value="1" />
+      <value name="4:4:4" value="3" />
+    </field>
+    <field name="Output Range Control After Color Space Conversion" dword="1" bits="17:17" type="bool" />
+    <field name="Is Random Access" dword="1" bits="18:18" type="bool" />
+    <field name="RGB Encoding Enable" dword="1" bits="20:20" type="bool" />
+    <field name="Primary Channel Selection For RGB Encoding" dword="1" bits="22:21" type="uint" default="1" />
+    <field name="First Secondary Channel Selection For RGB Encoding" dword="1" bits="24:23" type="uint" default="2" />
+    <field name="Tile Replay Enable" dword="1" bits="25:25" type="bool" />
+    <field name="Streaming Buffer Config" dword="1" bits="27:26" type="uint" />
+    <field name="Disable Speed Mode Fetch Optimization" dword="1" bits="31:31" type="bool" />
+    <field name="HME Region Prefetch Enable" dword="2" bits="0:0" type="bool" default="1" />
+    <field name="Top Prefetch Enable Mode" dword="2" bits="2:1" type="uint" default="1" />
+    <field name="Left Prefetch At Wrap Around" dword="2" bits="3:3" type="bool" default="1" />
+    <field name="VerticalShift32Minus1" dword="2" bits="7:4" type="uint" />
+    <field name="HzShift32Minus1" dword="2" bits="11:8" type="uint" default="3" />
+    <field name="Number of Vertical Requests" dword="2" bits="19:16" type="uint" default="11" />
+    <field name="Number of Horizontal Requests" dword="2" bits="23:20" type="uint" default="2" />
+    <field name="Prefetch Offset for Reference" dword="2" bits="27:24" type="uint" />
+    <field name="Source Luma/Packed Data TLB Prefetch Enable" dword="3" bits="0:0" type="bool" default="1" />
+    <field name="Source Chroma TLB Prefetch Enable" dword="3" bits="1:1" type="bool" default="1" />
+    <field name="VerticalShift32Minus1Src" dword="3" bits="7:4" type="uint" />
+    <field name="HzShift32Minus1Src" dword="3" bits="11:8" type="uint" default="3" />
+    <field name="Number of Vertical Requests for Source" dword="3" bits="19:16" type="uint" />
+    <field name="Number of Horizontal Request for Source" dword="3" bits="23:20" type="uint" />
+    <field name="Prefetch Offset for Source" dword="3" bits="27:24" type="uint" default="4" />
+  </instruction>
+  <instruction name="VDENC_WALKER_STATE" bias="2" length="27" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="25" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="7" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="MB/LCU Start Y Position" dword="1" bits="8:0" type="uint" />
+    <field name="MB/LCU Start X Position" dword="1" bits="24:16" type="uint" />
+    <field name="First Super Slice" dword="1" bits="28:28" type="bool" />
+    <field name="Next Slice MB Start Y Position" dword="2" bits="9:0" type="uint" />
+    <field name="Next Slice MB/LCU Start X Position" dword="2" bits="25:16" type="uint" />
+    <field name="Log2 Weight Denominator Luma" dword="3" bits="2:0" type="uint" />
+    <field name="HEVC/VP9 Log2 Weight Denominator Luma" dword="3" bits="6:4" type="uint" />
+    <field name="Number of Parallel Engines" dword="3" bits="10:9" type="uint" />
+    <field name="Tile Number" dword="3" bits="31:24" type="uint" />
+    <field name="Tile Start CTB-Y" dword="4" bits="15:0" type="uint" />
+    <field name="Tile Start CTB-X" dword="4" bits="31:16" type="uint" />
+    <field name="Tile Width" dword="5" bits="15:0" type="uint" />
+    <field name="Tile Height" dword="5" bits="31:16" type="uint" />
+    <field name="Tile Stream-In Offset Enable" dword="6" bits="0:0" type="bool" />
+    <field name="Tile Stream-In Offset" dword="6" bits="31:6" type="uint" />
+    <field name="Tile Row Store Offset Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Tile Row Store Offset" dword="7" bits="31:6" type="uint" />
+    <field name="Tile Stream-Out Offset Enable" dword="8" bits="0:0" type="bool" />
+    <field name="Tile Stream-Out Offset" dword="8" bits="31:6" type="uint" />
+    <field name="Tile LCU Stream-Out Offset Enable" dword="9" bits="0:0" type="bool" />
+    <field name="Tile LCU Stream-Out Offset" dword="9" bits="31:6" type="uint" />
+    <field name="Palette Mode Enable" dword="12" bits="26:26" type="bool" />
+    <field name="IBC Control" dword="12" bits="28:27" type="uint" />
+    <field name="Adaptive Channel Threshold" dword="16" bits="27:24" type="uint" />
+  </instruction>
+  <instruction name="VD_CONTROL_STATE" bias="2" length="3" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="1" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="10" />
+    <field name="Media Command OpCode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pipeline Initialization" dword="1" bits="0:0" type="bool" />
+    <field name="Scalable Mode Pipe Lock" dword="2" bits="0:0" type="bool" />
+    <field name="Scalable Mode Pipe Unlock" dword="2" bits="1:1" type="bool" />
+    <field name="Memory Implicit Flush" dword="2" bits="2:2" type="bool" />
+  </instruction>
+  <instruction name="VD_PIPELINE_FLUSH" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="15" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="HEVC Pipeline Done" dword="1" bits="0:0" type="bool" />
+    <field name="VD-ENC Pipeline Done" dword="1" bits="1:1" type="bool" />
+    <field name="MFX Pipeline Done" dword="1" bits="3:3" type="bool" />
+    <field name="VD Command/Message Parser Done" dword="1" bits="4:4" type="bool" />
+    <field name="AVP Pipeline Done" dword="1" bits="5:5" type="bool" />
+    <field name="HEVC Pipeline Command Flush" dword="1" bits="16:16" type="bool" />
+    <field name="VD-ENC Pipeline Command Flush" dword="1" bits="17:17" type="bool" />
+    <field name="MFX Pipeline Command Flush" dword="1" bits="19:19" type="bool" />
+    <field name="AVP Pipeline Command Flush" dword="1" bits="20:20" type="bool" />
+  </instruction>
+  <instruction name="XY_BLOCK_COPY_BLT" bias="2" length="12" engine="blitter">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="10" />
+    <field name="Color Depth" dword="0" bits="21:19" type="uint" prefix="XY_BPP">
+      <value name="8_BIT" value="0" />
+      <value name="16_BIT" value="1" />
+      <value name="32_BIT" value="2" />
+      <value name="64_BIT" value="3" />
+      <value name="96_BIT" value="4" />
+      <value name="128_BIT" value="5" />
+    </field>
+    <field name="Opcode" dword="0" bits="28:22" type="uint" default="0x41" />
+    <field name="Client" dword="0" bits="31:29" type="uint" default="2" />
+    <field name="Destination Pitch" dword="1" bits="17:0" type="uint" />
+    <field name="Destination MOCS" dword="1" bits="27:21" type="uint" nonzero="true" />
+    <field name="Destination Tiling" dword="1" bits="31:30" type="int" prefix="XY_TILE">
+      <value name="LINEAR" value="0" />
+      <value name="Y" value="1" />
+    </field>
+    <field name="Destination X1" dword="2" bits="15:0" type="int" />
+    <field name="Destination Y1" dword="2" bits="31:16" type="int" />
+    <field name="Destination X2" dword="3" bits="15:0" type="int" />
+    <field name="Destination Y2" dword="3" bits="31:16" type="int" />
+    <field name="Destination Base Address" dword="4" bits="63:0" type="address" />
+    <field name="Destination X Offset" dword="6" bits="13:0" type="uint" />
+    <field name="Destination Y Offset" dword="6" bits="29:16" type="uint" />
+    <field name="Source X1" dword="7" bits="15:0" type="int" />
+    <field name="Source Y1" dword="7" bits="31:16" type="int" />
+    <field name="Source Pitch" dword="8" bits="17:0" type="uint" />
+    <field name="Source MOCS" dword="8" bits="27:21" type="uint" nonzero="true" />
+    <field name="Source Tiling" dword="8" bits="31:30" type="uint" prefix="XY_TILE">
+      <value name="LINEAR" value="0" />
+      <value name="Y" value="1" />
+    </field>
+    <field name="Source Base Address" dword="9" bits="63:0" type="address" />
+    <field name="Source X Offset" dword="11" bits="13:0" type="uint" />
+    <field name="Source Y Offset" dword="11" bits="29:16" type="uint" />
+  </instruction>
+  <instruction name="XY_FAST_COLOR_BLT" bias="2" length="11" engine="blitter">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="Color Depth" dword="0" bits="21:19" type="uint" prefix="XY_BPP">
+      <value name="8_BIT" value="0" />
+      <value name="16_BIT" value="1" />
+      <value name="32_BIT" value="2" />
+      <value name="64_BIT" value="3" />
+      <value name="96_BIT" value="4" />
+      <value name="128_BIT" value="5" />
+    </field>
+    <field name="Opcode" dword="0" bits="28:22" type="uint" default="0x44" />
+    <field name="Client" dword="0" bits="31:29" type="uint" default="2" />
+    <field name="Destination Pitch" dword="1" bits="17:0" type="uint" />
+    <field name="Destination MOCS" dword="1" bits="27:21" type="uint" />
+    <field name="Destination Tiling" dword="1" bits="31:30" type="int" prefix="XY_TILE">
+      <value name="LINEAR" value="0" />
+      <value name="Y" value="1" />
+    </field>
+    <field name="Destination X1" dword="2" bits="15:0" type="int" />
+    <field name="Destination Y1" dword="2" bits="31:16" type="int" />
+    <field name="Destination X2" dword="3" bits="15:0" type="int" />
+    <field name="Destination Y2" dword="3" bits="31:16" type="int" />
+    <field name="Destination Base Address" dword="4" bits="63:0" type="address" />
+    <field name="Destination X Offset" dword="6" bits="13:0" type="uint" />
+    <field name="Destination Y Offset" dword="6" bits="29:16" type="uint" />
+    <group count="4" dword="7" size="32">
+      <field name="Fill Color" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <register name="BLT_TRTT_CR" length="1" num="0x4480">
+    <field name="TR-TT Enable" dword="0" bits="0:0" type="bool" />
+  </register>
+  <register name="BLT_TRTT_INVAL" length="1" num="0x4494">
+    <field name="Invalid Tile Detection Value" dword="0" bits="31:0" type="uint" />
+  </register>
+  <register name="BLT_TRTT_L3_BASE_HIGH" length="1" num="0x448C">
+    <field name="TR-VA L3 Pointer Upper Address" dword="0" bits="15:0" type="uint" />
+  </register>
+  <register name="BLT_TRTT_L3_BASE_LOW" length="1" num="0x4488">
+    <field name="TR-VA L3 Pointer Lower Address" dword="0" bits="31:12" type="uint" />
+  </register>
+  <register name="BLT_TRTT_NULL" length="1" num="0x4490">
+    <field name="Null Tile Detection Value" dword="0" bits="31:0" type="uint" />
+  </register>
+  <register name="BLT_TRTT_VA_RANGE" length="1" num="0x4484">
+    <field name="TR-VA Data Value" dword="0" bits="3:0" type="uint" />
+    <field name="TR-VA Mask Value" dword="0" bits="7:4" type="uint" />
+  </register>
+  <register name="COMMON_SLICE_CHICKEN1" length="1" num="0x7010">
+    <field name="HIZ Plane Optimization disable bit" dword="0" bits="9:9" type="bool" />
+    <field name="RCC RHWO Optimization Disable" dword="0" bits="14:14" type="bool" />
+    <field name="HIZ Plane Optimization disable bit Mask" dword="0" bits="25:25" type="bool" />
+    <field name="RCC RHWO Optimization Disable Mask" dword="0" bits="30:30" type="bool" />
+  </register>
+  <register name="COMPCS0_AUX_TABLE_BASE_ADDR" length="2" num="0x42C0">
+    <field name="Address" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="COMPCS0_CCS_AUX_INV" length="1" num="0x42C8">
+    <field name="Aux Inv" dword="0" bits="0:0" type="bool" />
+  </register>
+  <register name="COMP_CTX0_TRTT_CR" length="1" num="0x4580">
+    <field name="TR-TT Enable" dword="0" bits="0:0" type="bool" />
+  </register>
+  <register name="COMP_CTX0_TRTT_INVAL" length="1" num="0x4594">
+    <field name="Invalid Tile Detection Value" dword="0" bits="31:0" type="uint" />
+  </register>
+  <register name="COMP_CTX0_TRTT_L3_BASE_HIGH" length="1" num="0x458C">
+    <field name="TR-VA L3 Pointer Upper Address" dword="0" bits="15:0" type="uint" />
+  </register>
+  <register name="COMP_CTX0_TRTT_L3_BASE_LOW" length="1" num="0x4588">
+    <field name="TR-VA L3 Pointer Lower Address" dword="0" bits="31:12" type="uint" />
+  </register>
+  <register name="COMP_CTX0_TRTT_NULL" length="1" num="0x4590">
+    <field name="Null Tile Detection Value" dword="0" bits="31:0" type="uint" />
+  </register>
+  <register name="COMP_CTX0_TRTT_VA_RANGE" length="1" num="0x4584">
+    <field name="TR-VA Data Value" dword="0" bits="3:0" type="uint" />
+    <field name="TR-VA Mask Value" dword="0" bits="7:4" type="uint" />
+  </register>
+  <register name="CS_CHICKEN1" length="1" num="0x2580">
+    <field name="Replay Mode" dword="0" bits="0:0" type="uint">
+      <value name="Mid-cmdbuffer Preemption" value="0" />
+      <value name="Object Level Preemption" value="1" />
+    </field>
+    <field name="Media And GPGPU Pre-emption Control" dword="0" bits="2:1" type="uint">
+      <value name="Mid-thread Pre-emption" value="0" />
+      <value name="Thread Group Pre-emption" value="1" />
+      <value name="Command Level Pre-emption" value="2" />
+    </field>
+    <field name="Disable Preemption and High Priority Pausing due to 3DPRIMITIVE Command" dword="0" bits="10:10" type="bool" />
+    <field name="Replay Mode Mask" dword="0" bits="16:16" type="bool" />
+    <field name="Media And GPGPU Pre-emption Control Mask" dword="0" bits="18:17" type="uint" />
+    <field name="Disable Preemption and High Priority Pausing due to 3DPRIMITIVE Command Mask" dword="0" bits="26:26" type="bool" />
+  </register>
+  <register name="FF_MODE2" length="1" num="0x6604">
+    <field name="VS Timer Value" dword="0" bits="7:0" type="uint" />
+    <field name="HS Timer Value" dword="0" bits="15:8" type="uint" />
+    <field name="TDS Timer Value" dword="0" bits="23:16" type="uint" />
+    <field name="GS Timer Value" dword="0" bits="31:24" type="uint" />
+  </register>
+  <register name="GAM_DONE" length="1" num="0xcf68">
+    <field name="GFX TLB0 Done" dword="0" bits="0:0" type="bool" />
+    <field name="GFX TLB1 Done" dword="0" bits="1:1" type="bool" />
+    <field name="COMP TLB0 Done" dword="0" bits="2:2" type="bool" />
+    <field name="COMP TLB1 Done" dword="0" bits="3:3" type="bool" />
+    <field name="GUC TLB Done" dword="0" bits="4:4" type="bool" />
+    <field name="KCR TLB Done" dword="0" bits="5:5" type="bool" />
+    <field name="OAC TLB Done" dword="0" bits="6:6" type="bool" />
+    <field name="VDBOX0 TLB Done" dword="0" bits="7:7" type="bool" />
+    <field name="VDBOX2 TLB Done" dword="0" bits="8:8" type="bool" />
+    <field name="VEBOX0 TLB Done" dword="0" bits="9:9" type="bool" />
+    <field name="CM INGRESS Done" dword="0" bits="10:10" type="bool" />
+    <field name="Data INGRESS Done" dword="0" bits="11:11" type="bool" />
+    <field name="REQ STRM Done" dword="0" bits="12:12" type="bool" />
+    <field name="S TLB Done" dword="0" bits="13:13" type="bool" />
+    <field name="BLT TLB Done" dword="0" bits="14:14" type="bool" />
+    <field name="TLB Hit ARB COMP Done" dword="0" bits="15:15" type="bool" />
+    <field name="TLB Hit ARB MISC Done" dword="0" bits="16:16" type="bool" />
+    <field name="TLB Hit ARB STG Done" dword="0" bits="17:17" type="bool" />
+    <field name="TLB Hit GFX STG Done" dword="0" bits="18:18" type="bool" />
+    <field name="TLB Miss ARB GFX Done" dword="0" bits="19:19" type="bool" />
+    <field name="TLB Miss ARB COMP Done" dword="0" bits="20:20" type="bool" />
+    <field name="TLB Miss ARB MISC Done" dword="0" bits="21:21" type="bool" />
+    <field name="TLB Miss ARB STG Done" dword="0" bits="22:22" type="bool" />
+    <field name="TR TLB Done" dword="0" bits="23:23" type="bool" />
+    <field name="WKRS Done" dword="0" bits="24:24" type="bool" />
+    <field name="CCS Done" dword="0" bits="25:25" type="bool" />
+    <field name="CTRLCOMM Done" dword="0" bits="26:26" type="bool" />
+    <field name="FLWCTRL Done" dword="0" bits="27:27" type="bool" />
+    <field name="DRTN Done" dword="0" bits="28:28" type="bool" />
+    <field name="VEBOX1 TBL Done" dword="0" bits="29:29" type="bool" />
+    <field name="XBL Done" dword="0" bits="30:30" type="bool" />
+  </register>
+  <register name="GFX_AUX_TABLE_BASE_ADDR" length="2" num="0x4200">
+    <field name="Address" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="GFX_CCS_AUX_INV" length="1" num="0x4208">
+    <field name="Aux Inv" dword="0" bits="0:0" type="bool" />
+  </register>
+  <register name="GFX_TRTT_CR" length="1" num="0x4400">
+    <field name="TR-TT Enable" dword="0" bits="0:0" type="bool" />
+  </register>
+  <register name="GFX_TRTT_INVAL" length="1" num="0x4414">
+    <field name="Invalid Tile Detection Value" dword="0" bits="31:0" type="uint" />
+  </register>
+  <register name="GFX_TRTT_L3_BASE_HIGH" length="1" num="0x440C">
+    <field name="TR-VA L3 Pointer Upper Address" dword="0" bits="15:0" type="uint" />
+  </register>
+  <register name="GFX_TRTT_L3_BASE_LOW" length="1" num="0x4408">
+    <field name="TR-VA L3 Pointer Lower Address" dword="0" bits="31:12" type="uint" />
+  </register>
+  <register name="GFX_TRTT_NULL" length="1" num="0x4410">
+    <field name="Null Tile Detection Value" dword="0" bits="31:0" type="uint" />
+  </register>
+  <register name="GFX_TRTT_VA_RANGE" length="1" num="0x4404">
+    <field name="TR-VA Data Value" dword="0" bits="3:0" type="uint" />
+    <field name="TR-VA Mask Value" dword="0" bits="7:4" type="uint" />
+  </register>
+  <register name="HIZ_CHICKEN" length="1" num="0x7018">
+    <field name="HZ Depth Test LE/GE Optimization Disable" dword="0" bits="13:13" type="bool" />
+    <field name="HZ Depth Test LE/GE Optimization Disable Mask" dword="0" bits="29:29" type="bool" />
+  </register>
+  <register name="L3ALLOC" length="1" num="0xB134">
+    <field name="Allocation Error" dword="0" bits="0:0" type="uint" />
+    <field name="URB Allocation" dword="0" bits="7:1" type="uint" />
+    <field name="L3 Full Way Allocation Enable" dword="0" bits="9:9" type="bool" />
+    <field name="RO Allocation" dword="0" bits="17:11" type="uint" />
+    <field name="DC Allocation" dword="0" bits="24:18" type="uint" />
+    <field name="All Allocation" dword="0" bits="31:25" type="uint" />
+  </register>
+  <register name="ROW_INSTDONE" length="1" num="0xe164">
+    <field name="BC Done" dword="0" bits="0:0" type="bool" />
+    <field name="PSD Done" dword="0" bits="1:1" type="bool" />
+    <field name="TDP Done" dword="0" bits="2:2" type="bool" />
+    <field name="DAPR Done" dword="0" bits="3:3" type="bool" />
+    <field name="CPSS Done" dword="0" bits="4:4" type="bool" />
+    <field name="TDL Done" dword="0" bits="6:6" type="bool" />
+    <field name="EU00 done SS1" dword="0" bits="7:7" type="bool" />
+    <field name="EU01 done SS1" dword="0" bits="8:8" type="bool" />
+    <field name="EU02 done SS1" dword="0" bits="9:9" type="bool" />
+    <field name="EU03 done SS1" dword="0" bits="10:10" type="bool" />
+    <field name="MA0 done SS1" dword="0" bits="11:11" type="bool" />
+    <field name="IC Done" dword="0" bits="12:12" type="bool" />
+    <field name="MA0 Done SS0" dword="0" bits="15:15" type="bool" />
+    <field name="EU00 Done SS0" dword="0" bits="16:16" type="bool" />
+    <field name="EU01 Done SS0" dword="0" bits="17:17" type="bool" />
+    <field name="EU02 Done SS0" dword="0" bits="18:18" type="bool" />
+    <field name="EU03 Done SS0" dword="0" bits="19:19" type="bool" />
+    <field name="EU10 Done SS0" dword="0" bits="21:21" type="bool" />
+    <field name="EU11 Done SS0" dword="0" bits="22:22" type="bool" />
+    <field name="EU12 Done SS0" dword="0" bits="23:23" type="bool" />
+    <field name="EU13 Done SS0" dword="0" bits="24:24" type="bool" />
+    <field name="EU10 Done SS1" dword="0" bits="27:27" type="bool" />
+    <field name="EU11 Done SS1" dword="0" bits="28:28" type="bool" />
+    <field name="EU12 Done SS1" dword="0" bits="29:29" type="bool" />
+    <field name="EU13 Done SS1" dword="0" bits="30:30" type="bool" />
+  </register>
+  <register name="SAMPLER_INSTDONE" length="1" num="0xe160">
+    <field name="IME Done" dword="0" bits="0:0" type="bool" />
+    <field name="PL0 Done" dword="0" bits="1:1" type="bool" />
+    <field name="SO0 Done" dword="0" bits="2:2" type="bool" />
+    <field name="DG0 Done" dword="0" bits="3:3" type="bool" />
+    <field name="FT0 Done" dword="0" bits="4:4" type="bool" />
+    <field name="DM0 Done" dword="0" bits="5:5" type="bool" />
+    <field name="SC Done" dword="0" bits="6:6" type="bool" />
+    <field name="FL0 Done" dword="0" bits="7:7" type="bool" />
+    <field name="ST Done" dword="0" bits="8:8" type="bool" />
+    <field name="SVSM Done" dword="0" bits="9:9" type="bool" />
+    <field name="SI0 Done" dword="0" bits="10:10" type="bool" />
+    <field name="MT0 Done" dword="0" bits="11:11" type="bool" />
+    <field name="AVS Done" dword="0" bits="12:12" type="bool" />
+    <field name="VAFE Done" dword="0" bits="13:13" type="bool" />
+    <field name="CRE Done" dword="0" bits="14:14" type="bool" />
+    <field name="Media Sampler Arb Done" dword="0" bits="15:15" type="bool" />
+    <field name="SVSM ARB2" dword="0" bits="16:16" type="bool" />
+    <field name="SVSM ARB1" dword="0" bits="17:17" type="bool" />
+    <field name="SVSM Adapter" dword="0" bits="18:18" type="bool" />
+    <field name="BDM Done" dword="0" bits="19:19" type="bool" />
+    <field name="SO1 Done" dword="0" bits="22:22" type="bool" />
+    <field name="FL1 Done" dword="0" bits="23:23" type="bool" />
+    <field name="DG1 Done" dword="0" bits="24:24" type="bool" />
+    <field name="PL1 Done" dword="0" bits="25:25" type="bool" />
+    <field name="SI1 Done" dword="0" bits="26:26" type="bool" />
+    <field name="MEDIASAMPLER ARB2" dword="0" bits="27:27" type="bool" />
+    <field name="MEDIASAMPLER ARB1" dword="0" bits="28:28" type="bool" />
+    <field name="MS SUBSLICED FORK" dword="0" bits="29:29" type="bool" />
+    <field name="VMESC Done" dword="0" bits="30:30" type="bool" />
+    <field name="RDE Done" dword="0" bits="31:31" type="bool" />
+  </register>
+  <register name="SC_INSTDONE" length="1" num="0x7100">
+    <field name="SVL Done" dword="0" bits="0:0" type="bool" />
+    <field name="WMFE Done" dword="0" bits="1:1" type="bool" />
+    <field name="WMBE Done" dword="0" bits="2:2" type="bool" />
+    <field name="HIZ Done" dword="0" bits="3:3" type="bool" />
+    <field name="IZBE Done 0" dword="0" bits="4:4" type="bool" />
+    <field name="IZFE Done" dword="0" bits="5:5" type="bool" />
+    <field name="SBE Done" dword="0" bits="6:6" type="bool" />
+    <field name="RCC Done" dword="0" bits="9:9" type="bool" />
+    <field name="RCPBE Done" dword="0" bits="10:10" type="bool" />
+    <field name="RCPFE Done" dword="0" bits="11:11" type="bool" />
+    <field name="DAPB Done" dword="0" bits="12:12" type="bool" />
+    <field name="DAPRBE Done" dword="0" bits="13:13" type="bool" />
+    <field name="SARB Done" dword="0" bits="15:15" type="bool" />
+    <field name="DC0 Done" dword="0" bits="16:16" type="bool" />
+    <field name="DC1 Done" dword="0" bits="17:17" type="bool" />
+    <field name="DC2 Done" dword="0" bits="18:18" type="bool" />
+    <field name="GW0 Done" dword="0" bits="20:20" type="bool" />
+    <field name="GW1 Done" dword="0" bits="21:21" type="bool" />
+    <field name="GW2 Done" dword="0" bits="22:22" type="bool" />
+    <field name="TDC Done" dword="0" bits="24:24" type="bool" />
+    <field name="SFBE Done" dword="0" bits="25:25" type="bool" />
+    <field name="PSS Done" dword="0" bits="26:26" type="bool" />
+    <field name="AMFS Done" dword="0" bits="27:27" type="bool" />
+  </register>
+  <register name="VD0_AUX_TABLE_BASE_ADDR" length="2" num="0x4210">
+    <field name="Address" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="VD0_CCS_AUX_INV" length="1" num="0x4218">
+    <field name="Aux Inv" dword="0" bits="0:0" type="bool" />
+  </register>
+</genxml>
diff --git a/lib/genxml/gen125.xml b/lib/genxml/gen125.xml
new file mode 100644
index 000000000..2bc5bd3cb
--- /dev/null
+++ b/lib/genxml/gen125.xml
@@ -0,0 +1,2628 @@
+<?xml version='1.0' encoding='utf-8'?>
+<genxml name="GFX125" gen="12.5">
+  <import name="gen120.xml">
+    <exclude name="3D_CHICKEN3" />
+    <exclude name="GPGPU_WALKER" />
+    <exclude name="GT_MODE" />
+    <exclude name="MEDIA_CURBE_LOAD" />
+    <exclude name="MEDIA_INTERFACE_DESCRIPTOR_LOAD" />
+    <exclude name="MEDIA_OBJECT" />
+    <exclude name="MEDIA_OBJECT_GRPID" />
+    <exclude name="MEDIA_OBJECT_PRT" />
+    <exclude name="MEDIA_OBJECT_WALKER" />
+    <exclude name="MEDIA_STATE_FLUSH" />
+    <exclude name="MEDIA_VFE_STATE" />
+  </import>
+  <enum name="FRAME_BITRATE_UNITS" prefix="FRAME_BR">
+    <value name="32BYTE_UNITS" value="0" />
+    <value name="4KBYTE_UNITS" value="1" />
+  </enum>
+  <enum name="L1_CACHE_CONTROL" prefix="L1CC">
+    <value name="WBP" value="0" />
+    <value name="UC" value="1" />
+    <value name="WB" value="2" />
+    <value name="WT" value="3" />
+    <value name="WS" value="4" />
+  </enum>
+  <enum name="PREF_SLM_ALLOCATION_SIZE">
+    <value name="SLM_ENCODES_0K" value="8" />
+    <value name="SLM_ENCODES_16K" value="9" />
+    <value name="SLM_ENCODES_32K" value="10" />
+    <value name="SLM_ENCODES_64K" value="11" />
+    <value name="SLM_ENCODES_96K" value="12" />
+    <value name="SLM_ENCODES_128K" value="13" />
+    <value name="SLM_ENCODES_192K" value="14" />
+    <value name="SLM_ENCODES_256K" value="15" />
+  </enum>
+  <enum name="STATE_SURFACE_TYPE">
+    <value name="SURFTYPE_1D" value="0" />
+    <value name="SURFTYPE_2D" value="1" />
+    <value name="SURFTYPE_3D" value="2" />
+    <value name="SURFTYPE_CUBE" value="3" />
+    <value name="SURFTYPE_BUFFER" value="4" />
+    <value name="SURFTYPE_RES5" value="5" />
+    <value name="SURFTYPE_SCRATCH" value="6" />
+    <value name="SURFTYPE_NULL" value="7" />
+  </enum>
+  <struct name="INTERFACE_DESCRIPTOR_DATA" length="8">
+    <field name="Kernel Start Pointer" dword="0" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="2" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="2" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="2" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="2" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Single Program Flow" dword="2" bits="18:18" type="bool" />
+    <field name="Denorm Mode" dword="2" bits="19:19" type="uint">
+      <value name="Ftz" value="0" />
+      <value name="SetByKernel" value="1" />
+    </field>
+    <field name="Thread Preemption Disable" dword="2" bits="20:20" type="uint" />
+    <field name="Sampler Count" dword="3" bits="4:2" type="uint">
+      <value name="No samplers used" value="0" />
+      <value name="Between 1 and 4 samplers used" value="1" />
+      <value name="Between 5 and 8 samplers used" value="2" />
+      <value name="Between 9 and 12 samplers used" value="3" />
+      <value name="Between 13 and 16 samplers used" value="4" />
+    </field>
+    <field name="Sampler State Pointer" dword="3" bits="31:5" type="offset" />
+    <field name="Binding Table Entry Count" dword="4" bits="4:0" type="uint" />
+    <field name="Binding Table Pointer" dword="4" bits="20:5" type="offset" />
+    <field name="Number of Threads in GPGPU Thread Group" dword="5" bits="9:0" type="uint" />
+    <field name="Shared Local Memory Size" dword="5" bits="20:16" type="uint">
+      <value name="Encodes 0K" value="0" />
+      <value name="Encodes 1K" value="1" />
+      <value name="Encodes 2K" value="2" />
+      <value name="Encodes 4K" value="3" />
+      <value name="Encodes 8K" value="4" />
+      <value name="Encodes 16K" value="5" />
+      <value name="Encodes 32K" value="6" />
+      <value name="Encodes 64K" value="7" />
+    </field>
+    <field name="Barrier Enable" dword="5" bits="21:21" type="bool" />
+    <field name="Rounding Mode" dword="5" bits="23:22" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Thread Group Dispatch Size" dword="5" bits="27:26" type="uint">
+      <value name="TG size 8" value="0" />
+      <value name="TG size 4" value="1" />
+      <value name="TG size 2" value="2" />
+      <value name="TG size 1" value="3" />
+    </field>
+    <field name="Number Of Barriers" dword="5" bits="30:28" type="uint" prefix="BARRIER_SIZE">
+      <value name="NONE" value="0" />
+      <value name="B1" value="1" />
+      <value name="B2" value="2" />
+      <value name="B4" value="3" />
+      <value name="B8" value="4" />
+      <value name="B16" value="5" />
+      <value name="B24" value="6" />
+      <value name="B32" value="7" />
+    </field>
+    <field name="BTD Mode" dword="5" bits="31:31" type="uint" />
+    <field name="Preferred SLM Allocation Size" dword="6" bits="3:0" type="uint" />
+  </struct>
+  <struct name="POSTSYNC_DATA" length="5">
+    <field name="Operation" dword="0" bits="1:0" type="uint" default="0">
+      <value name="No Write" value="0" />
+      <value name="Write Immediate Data" value="1" />
+      <value name="Write Timestamp" value="3" />
+    </field>
+    <field name="HDC Pipeline Flush" dword="0" bits="2:2" type="bool" />
+    <field name="L3 flush" dword="0" bits="3:3" type="bool" />
+    <field name="MOCS" dword="0" bits="10:4" type="uint" nonzero="true" />
+    <field name="Destination Address" dword="1" bits="63:0" type="address" />
+    <field name="Immediate Data" dword="3" bits="63:0" type="uint" />
+  </struct>
+  <struct name="COMPUTE_WALKER_BODY" length="38">
+    <field name="Indirect Data Length" dword="1" bits="16:0" type="uint" />
+    <field name="L3 prefetch disable" dword="1" bits="17:17" type="bool" />
+    <field name="Partition Type" dword="1" bits="31:30" type="uint">
+      <value name="PartitionX" value="1" />
+      <value name="PartitionY" value="2" />
+      <value name="PartitionZ" value="3" />
+    </field>
+    <field name="Indirect Data Start Address" dword="2" bits="31:6" type="offset" />
+    <field name="Message SIMD" dword="3" bits="18:17" type="uint">
+      <value name="SIMD8" value="0" />
+      <value name="SIMD16" value="1" />
+      <value name="SIMD32" value="2" />
+    </field>
+    <field name="Tile Layout" dword="3" bits="21:19" type="uint">
+      <value name="Linear" value="0" />
+      <value name="TileY 32bpe" value="1" />
+      <value name="TileY 64bpe" value="2" />
+      <value name="TileY 128bpe" value="3" />
+    </field>
+    <field name="Walk Order" dword="3" bits="24:22" type="uint">
+      <value name="Walk 012" value="0" />
+      <value name="Walk 021" value="1" />
+      <value name="Walk 102" value="2" />
+      <value name="Walk 120" value="3" />
+      <value name="Walk 201" value="4" />
+      <value name="Walk 210" value="5" />
+    </field>
+    <field name="Emit Inline Parameter" dword="3" bits="25:25" type="bool" />
+    <field name="Emit Local" dword="3" bits="28:26" type="uint">
+      <value name="Emit None" value="0" />
+      <value name="Emit X" value="1" />
+      <value name="Emit XY" value="3" />
+      <value name="Emit XYZ" value="7" />
+    </field>
+    <field name="Generate Local ID" dword="3" bits="29:29" type="bool" />
+    <field name="SIMD Size" dword="3" bits="31:30" type="uint">
+      <value name="SIMD8" value="0" />
+      <value name="SIMD16" value="1" />
+      <value name="SIMD32" value="2" />
+    </field>
+    <field name="Execution Mask" dword="4" bits="31:0" type="uint" />
+    <field name="Local X Maximum" dword="5" bits="9:0" type="uint" />
+    <field name="Local Y Maximum" dword="5" bits="19:10" type="uint" />
+    <field name="Local Z Maximum" dword="5" bits="29:20" type="uint" />
+    <field name="Thread Group ID X Dimension" dword="6" bits="31:0" type="uint" />
+    <field name="Thread Group ID Y Dimension" dword="7" bits="31:0" type="uint" />
+    <field name="Thread Group ID Z Dimension" dword="8" bits="31:0" type="uint" />
+    <field name="Thread Group ID Starting X" dword="9" bits="31:0" type="uint" />
+    <field name="Thread Group ID Starting Y" dword="10" bits="31:0" type="uint" />
+    <field name="Thread Group ID Starting Z" dword="11" bits="31:0" type="uint" />
+    <field name="Partition ID" dword="12" bits="31:0" type="uint" />
+    <field name="Partition Size" dword="13" bits="31:0" type="uint" />
+    <field name="Preempt X" dword="14" bits="31:0" type="uint" />
+    <field name="Preempt Y" dword="15" bits="31:0" type="uint" />
+    <field name="Preempt Z" dword="16" bits="31:0" type="uint" />
+    <field name="Interface Descriptor" dword="17" bits="255:0" type="INTERFACE_DESCRIPTOR_DATA" />
+    <field name="Post Sync" dword="25" bits="159:0" type="POSTSYNC_DATA" />
+    <group count="8" dword="30" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </struct>
+  <struct name="CPS_STATE" length="8">
+    <field name="MinCPSizeX" dword="0" bits="10:0" type="s3.7" />
+    <field name="Statistics Enable" dword="0" bits="11:11" type="bool" />
+    <field name="Coarse Pixel Shading Mode" dword="0" bits="13:12" type="uint">
+      <value name="CPS_MODE_NONE" value="0" />
+      <value name="CPS_MODE_CONSTANT" value="1" />
+      <value name="CPS_MODE_RADIAL" value="2" />
+    </field>
+    <field name="ScaleAxis" dword="0" bits="14:14" type="uint">
+      <value name="X axis" value="0" />
+      <value name="Y axis" value="1" />
+    </field>
+    <field name="MinCPSizeY" dword="0" bits="25:15" type="s3.7" />
+    <field name="Combiner1 Opcode for CPsize" dword="0" bits="28:26" type="uint">
+      <value name="PASSTHROUGH" value="0" />
+      <value name="OVERRIDE" value="1" />
+      <value name="HIGH_QUALITY" value="2" />
+      <value name="LOW_QUALITY" value="3" />
+      <value name="RELATIVE" value="4" />
+    </field>
+    <field name="Combiner0 Opcode for CPsize" dword="0" bits="31:29" type="uint">
+      <value name="PASSTHROUGH" value="0" />
+      <value name="OVERRIDE" value="1" />
+      <value name="HIGH_QUALITY" value="2" />
+      <value name="LOW_QUALITY" value="3" />
+      <value name="RELATIVE" value="4" />
+    </field>
+    <field name="MaxCPSizeX" dword="1" bits="10:0" type="s3.7" />
+    <field name="MaxCPSizeY" dword="1" bits="26:16" type="s3.7" />
+    <field name="Y_Focal" dword="2" bits="15:0" type="int" />
+    <field name="X_Focal" dword="3" bits="15:0" type="int" />
+    <field name="My" dword="4" bits="31:0" type="uint" />
+    <field name="Mx" dword="5" bits="31:0" type="uint" />
+    <field name="Rmin" dword="6" bits="31:0" type="uint" />
+    <field name="Aspect" dword="7" bits="31:0" type="uint" />
+  </struct>
+  <struct name="MEMORYADDRESSATTRIBUTES" length="1">
+    <field name="MOCS" dword="0" bits="6:0" type="uint" nonzero="true" />
+    <field name="Arbitration Priority Control" dword="0" bits="8:7" type="HEVC_ARBITRATION_PRIORITY" />
+    <field name="Memory Compression Enable" dword="0" bits="9:9" type="bool" />
+    <field name="Memory Compression Mode" dword="0" bits="10:10" type="uint" />
+    <field name="Row Store Scratch Buffer Cache Select" dword="0" bits="12:12" type="uint">
+      <value name="LLC" value="0" />
+      <value name="Internal Media Storage" value="1" />
+    </field>
+    <field name="Tiled Resource Mode" dword="0" bits="14:13" type="uint">
+      <value name="TRMODE_NONE" value="0" />
+      <value name="TRMODE_TILES" value="1" />
+      <value name="TRMODE_TILEX" value="2" />
+      <value name="TRMODE_TILEF" value="3" />
+    </field>
+  </struct>
+  <struct name="MI_MATH_ALU_INSTRUCTION" length="1">
+    <field name="Operand 2" dword="0" bits="9:0" type="uint" prefix="MI_ALU">
+      <value name="REG0" value="0x00" />
+      <value name="REG1" value="0x01" />
+      <value name="REG2" value="0x02" />
+      <value name="REG3" value="0x03" />
+      <value name="REG4" value="0x04" />
+      <value name="REG5" value="0x05" />
+      <value name="REG6" value="0x06" />
+      <value name="REG7" value="0x07" />
+      <value name="REG8" value="0x08" />
+      <value name="REG9" value="0x09" />
+      <value name="REG10" value="0x0a" />
+      <value name="REG11" value="0x0b" />
+      <value name="REG12" value="0x0c" />
+      <value name="REG13" value="0x0d" />
+      <value name="REG14" value="0x0e" />
+      <value name="REG15" value="0x0f" />
+      <value name="SRCA" value="0x20" />
+      <value name="SRCB" value="0x21" />
+      <value name="ACCU" value="0x31" />
+      <value name="ZF" value="0x32" />
+      <value name="CF" value="0x33" />
+    </field>
+    <field name="Operand 1" dword="0" bits="19:10" type="uint" prefix="MI_ALU">
+      <value name="REG0" value="0x00" />
+      <value name="REG1" value="0x01" />
+      <value name="REG2" value="0x02" />
+      <value name="REG3" value="0x03" />
+      <value name="REG4" value="0x04" />
+      <value name="REG5" value="0x05" />
+      <value name="REG6" value="0x06" />
+      <value name="REG7" value="0x07" />
+      <value name="REG8" value="0x08" />
+      <value name="REG9" value="0x09" />
+      <value name="REG10" value="0x0a" />
+      <value name="REG11" value="0x0b" />
+      <value name="REG12" value="0x0c" />
+      <value name="REG13" value="0x0d" />
+      <value name="REG14" value="0x0e" />
+      <value name="REG15" value="0x0f" />
+      <value name="SRCA" value="0x20" />
+      <value name="SRCB" value="0x21" />
+      <value name="ACCU" value="0x31" />
+      <value name="ZF" value="0x32" />
+      <value name="CF" value="0x33" />
+    </field>
+    <field name="ALU Opcode" dword="0" bits="31:20" type="uint" prefix="MI_ALU">
+      <value name="NOOP" value="0x000" />
+      <value name="FENCE_RD" value="0x001" />
+      <value name="FENCE_WR" value="0x002" />
+      <value name="LOAD" value="0x080" />
+      <value name="LOADINV" value="0x480" />
+      <value name="LOAD0" value="0x081" />
+      <value name="LOAD1" value="0x481" />
+      <value name="LOADIND" value="0x082" />
+      <value name="ADD" value="0x100" />
+      <value name="SUB" value="0x101" />
+      <value name="AND" value="0x102" />
+      <value name="OR" value="0x103" />
+      <value name="XOR" value="0x104" />
+      <value name="SHL" value="0x105" />
+      <value name="SHR" value="0x106" />
+      <value name="SAR" value="0x107" />
+      <value name="STORE" value="0x180" />
+      <value name="STOREINV" value="0x580" />
+      <value name="STOREIND" value="0x181" />
+    </field>
+  </struct>
+  <struct name="RENDER_SURFACE_STATE" length="16">
+    <field name="Cube Face Enable - Positive Z" dword="0" bits="0:0" type="bool" />
+    <field name="Cube Face Enable - Negative Z" dword="0" bits="1:1" type="bool" />
+    <field name="Cube Face Enable - Positive Y" dword="0" bits="2:2" type="bool" />
+    <field name="Cube Face Enable - Negative Y" dword="0" bits="3:3" type="bool" />
+    <field name="Cube Face Enable - Positive X" dword="0" bits="4:4" type="bool" />
+    <field name="Cube Face Enable - Negative X" dword="0" bits="5:5" type="bool" />
+    <field name="Media Boundary Pixel Mode" dword="0" bits="7:6" type="uint">
+      <value name="NORMAL_MODE" value="0" />
+      <value name="PROGRESSIVE_FRAME" value="2" />
+      <value name="INTERLACED_FRAME" value="3" />
+    </field>
+    <field name="Render Cache Read Write Mode" dword="0" bits="8:8" type="uint">
+      <value name="Write-Only Cache" value="0" />
+      <value name="Read-Write Cache" value="1" />
+    </field>
+    <field name="Sampler L2 Bypass Mode Disable" dword="0" bits="9:9" type="bool" />
+    <field name="Vertical Line Stride Offset" dword="0" bits="10:10" type="uint" />
+    <field name="Vertical Line Stride" dword="0" bits="11:11" type="uint" />
+    <field name="Tile Mode" dword="0" bits="13:12" type="uint">
+      <value name="LINEAR" value="0" />
+      <value name="TILE64" value="1" />
+      <value name="XMAJOR" value="2" />
+      <value name="TILE4" value="3" />
+    </field>
+    <field name="Surface Horizontal Alignment" dword="0" bits="15:14" type="uint">
+      <value name="HALIGN_16" value="0" />
+      <value name="HALIGN_32" value="1" />
+      <value name="HALIGN_64" value="2" />
+      <value name="HALIGN_128" value="3" />
+    </field>
+    <field name="Surface Vertical Alignment" dword="0" bits="17:16" type="uint">
+      <value name="VALIGN_4" value="1" />
+      <value name="VALIGN_8" value="2" />
+      <value name="VALIGN_16" value="3" />
+    </field>
+    <field name="Surface Format" dword="0" bits="26:18" type="uint" />
+    <field name="Surface Array" dword="0" bits="28:28" type="bool" />
+    <field name="Surface Type" dword="0" bits="31:29" type="STATE_SURFACE_TYPE" />
+    <field name="Surface QPitch" dword="1" bits="14:0" type="uint" />
+    <field name="Sample Tap Discard Disable" dword="1" bits="15:15" type="bool" />
+    <field name="Double Fetch Disable" dword="1" bits="17:17" type="bool" />
+    <field name="Corner Texel Mode" dword="1" bits="18:18" type="uint" />
+    <field name="Base Mip Level" dword="1" bits="23:19" type="u4.1" />
+    <field name="MOCS" dword="1" bits="30:24" type="uint" nonzero="true" />
+    <field name="Width" dword="2" bits="13:0" type="uint" />
+    <field name="Height" dword="2" bits="29:16" type="uint" />
+    <field name="Depth Stencil Resource" dword="2" bits="31:31" type="bool" />
+    <field name="Surface Pitch" dword="3" bits="17:0" type="uint" />
+    <field name="Null Probing Enable" dword="3" bits="18:18" type="uint" />
+    <field name="Depth" dword="3" bits="31:21" type="uint" />
+    <field name="Multisample Position Palette Index" dword="4" bits="2:0" type="uint" />
+    <field name="Number of Multisamples" dword="4" bits="5:3" type="uint">
+      <value name="MULTISAMPLECOUNT_1" value="0" />
+      <value name="MULTISAMPLECOUNT_2" value="1" />
+      <value name="MULTISAMPLECOUNT_4" value="2" />
+      <value name="MULTISAMPLECOUNT_8" value="3" />
+      <value name="MULTISAMPLECOUNT_16" value="4" />
+    </field>
+    <field name="Multisampled Surface Storage Format" dword="4" bits="6:6" type="uint">
+      <value name="MSFMT_MSS" value="0" />
+      <value name="MSFMT_DEPTH_STENCIL" value="1" />
+    </field>
+    <field name="Render Target View Extent" dword="4" bits="17:7" type="uint" />
+    <field name="Minimum Array Element" dword="4" bits="28:18" type="uint" />
+    <field name="Render Target And Sample Unorm Rotation" dword="4" bits="30:29" type="uint">
+      <value name="0DEG" value="0" />
+      <value name="90DEG" value="1" />
+      <value name="180DEG" value="2" />
+      <value name="270DEG" value="3" />
+    </field>
+    <field name="Decompress In L3" dword="4" bits="31:31" type="bool" />
+    <field name="MIP Count / LOD" dword="5" bits="3:0" type="uint" />
+    <field name="Surface Min LOD" dword="5" bits="7:4" type="uint" />
+    <field name="Mip Tail Start LOD" dword="5" bits="11:8" type="uint" />
+    <field name="Coherency Type" dword="5" bits="14:14" type="mbz" />
+    <field name="L1 Cache Control" dword="5" bits="18:16" type="L1_CACHE_CONTROL" />
+    <field name="EWA Disable For Cube" dword="5" bits="20:20" type="bool" />
+    <field name="Y Offset" dword="5" bits="23:21" type="uint" />
+    <field name="X Offset" dword="5" bits="31:25" type="uint" />
+    <field name="Auxiliary Surface Mode" dword="6" bits="2:0" type="uint">
+      <value name="AUX_NONE" value="0" />
+      <value name="AUX_CCS_D" value="1" />
+      <value name="AUX_APPEND" value="2" />
+      <value name="AUX_MCS_LCE" value="4" />
+      <value name="AUX_CCS_E" value="5" />
+    </field>
+    <field name="Y Offset for U or UV Plane" dword="6" bits="13:0" type="uint" />
+    <field name="Auxiliary Surface Pitch" dword="6" bits="12:3" type="uint" />
+    <field name="YUV Interpolation Enable" dword="6" bits="15:15" type="bool" />
+    <field name="Auxiliary Surface QPitch" dword="6" bits="30:16" type="uint" />
+    <field name="X Offset for U or UV Plane" dword="6" bits="29:16" type="uint" />
+    <field name="Half Pitch for Chroma" dword="6" bits="30:30" type="uint" />
+    <field name="Separate UV Plane Enable" dword="6" bits="31:31" type="bool" />
+    <field name="Resource Min LOD" dword="7" bits="11:0" type="u4.8" />
+    <field name="Shader Channel Select Alpha" dword="7" bits="18:16" type="Shader Channel Select" />
+    <field name="Shader Channel Select Blue" dword="7" bits="21:19" type="Shader Channel Select" />
+    <field name="Shader Channel Select Green" dword="7" bits="24:22" type="Shader Channel Select" />
+    <field name="Shader Channel Select Red" dword="7" bits="27:25" type="Shader Channel Select" />
+    <field name="Memory Compression Enable" dword="7" bits="30:30" type="bool" />
+    <field name="Memory Compression Mode" dword="7" bits="31:31" type="uint">
+      <value name="Media Compression" value="0" />
+      <value name="3D Compression" value="1" />
+    </field>
+    <field name="Surface Base Address" dword="8" bits="63:0" type="address" />
+    <field name="Clear Value Address Enable" dword="10" bits="10:10" type="bool" />
+    <field name="Caching Expanded Formats" dword="10" bits="11:11" type="uint" />
+    <field name="Auxiliary Surface Base Address" dword="10" bits="63:12" type="address" />
+    <field name="Compression Format" dword="12" bits="4:0" type="uint" />
+    <field name="Clear Value Address" dword="12" bits="47:6" type="address" />
+  </struct>
+  <struct name="SLICE_HASH_TABLE" length="224">
+    <group count="7" dword="0" size="1024">
+      <group count="16" dword="0" size="64">
+        <group count="16" dword="0" size="4">
+          <field name="Entry" dword="0" bits="3:0" type="uint" />
+        </group>
+      </group>
+    </group>
+  </struct>
+  <struct name="VDENC_SURFACE_CONTROL_BITS" length="1">
+    <field name="MOCS" dword="0" bits="6:0" type="uint" nonzero="true" />
+    <field name="Arbitration Priority Control" dword="0" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Memory Compression Enable" dword="0" bits="9:9" type="bool" />
+    <field name="Memory Compression Mode" dword="0" bits="10:10" type="uint" />
+    <field name="Cache Select" dword="0" bits="12:12" type="uint" />
+  </struct>
+  <instruction name="3DMESH_1D" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="UAV Coherency Required" dword="0" bits="9:9" type="bool" />
+    <field name="Indirect Parameter Enable" dword="0" bits="10:10" type="bool" />
+    <field name="TBIMR Enabled" dword="0" bits="13:13" type="uint" />
+    <field name="Extended Parameter 0 Present" dword="0" bits="14:14" type="uint" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="1" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="ThreadGroup Count X" dword="1" bits="31:0" type="uint" />
+    <field name="Starting ThreadGroup ID X" dword="2" bits="31:0" type="uint" />
+    <field name="Extended Parameter 0 (XP0)" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DMESH_3D" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="UAV Coherency Required" dword="0" bits="9:9" type="bool" />
+    <field name="Indirect Parameter Enable" dword="0" bits="10:10" type="bool" />
+    <field name="TBIMR Enabled" dword="0" bits="13:13" type="uint" />
+    <field name="Extended Parameter 0 Present" dword="0" bits="14:14" type="uint" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="2" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="ThreadGroup Count X" dword="1" bits="31:0" type="uint" />
+    <field name="ThreadGroup Count Y" dword="2" bits="31:0" type="uint" />
+    <field name="ThreadGroup Count Z" dword="3" bits="31:0" type="uint" />
+    <field name="Extended Parameter 0 (XP0)" dword="4" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DPRIMITIVE" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="UAV Coherency Required" dword="0" bits="9:9" type="bool" />
+    <field name="Indirect Parameter Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Extended Parameters Present" dword="0" bits="11:11" type="uint" />
+    <field name="TBIMR Enable" dword="0" bits="13:13" type="uint" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Primitive Topology Type" dword="1" bits="5:0" type="3D_Prim_Topo_Type" />
+    <field name="Vertex Access Type" dword="1" bits="8:8" type="uint">
+      <value name="SEQUENTIAL" value="0" />
+      <value name="RANDOM" value="1" />
+    </field>
+    <field name="End Offset Enable" dword="1" bits="9:9" type="bool" />
+    <field name="Vertex Count Per Instance" dword="2" bits="31:0" type="uint" />
+    <field name="Start Vertex Location" dword="3" bits="31:0" type="uint" />
+    <field name="Instance Count" dword="4" bits="31:0" type="uint" />
+    <field name="Start Instance Location" dword="5" bits="31:0" type="uint" />
+    <field name="Base Vertex Location" dword="6" bits="31:0" type="int" />
+    <field name="Extended Parameter 0" dword="7" bits="31:0" type="uint" />
+    <field name="Extended Parameter 1" dword="8" bits="31:0" type="uint" />
+    <field name="Extended Parameter 2" dword="9" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DPRIMITIVE_EXTENDED" bias="2" length="10" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="8" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="UAV Coherency Required" dword="0" bits="9:9" type="bool" />
+    <field name="Indirect Parameter Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Extended Parameters Present" dword="0" bits="11:11" type="bool" default="1" />
+    <field name="TBIMR Enable" dword="0" bits="13:13" type="uint" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Primitive Topology Type" dword="1" bits="5:0" type="3D_Prim_Topo_Type" />
+    <field name="Vertex Access Type" dword="1" bits="8:8" type="uint">
+      <value name="SEQUENTIAL" value="0" />
+      <value name="RANDOM" value="1" />
+    </field>
+    <field name="End Offset Enable" dword="1" bits="9:9" type="bool" />
+    <field name="Vertex Count Per Instance" dword="2" bits="31:0" type="uint" />
+    <field name="Start Vertex Location" dword="3" bits="31:0" type="uint" />
+    <field name="Instance Count" dword="4" bits="31:0" type="uint" />
+    <field name="Start Instance Location" dword="5" bits="31:0" type="uint" />
+    <field name="Base Vertex Location" dword="6" bits="31:0" type="int" />
+    <field name="Extended Parameter 0" dword="7" bits="31:0" type="uint" />
+    <field name="Extended Parameter 1" dword="8" bits="31:0" type="uint" />
+    <field name="Extended Parameter 2" dword="9" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_3D_MODE" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="30" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Cross Slice Hashing Mode" dword="1" bits="1:0" type="uint">
+      <value name="Normal Mode" value="0" />
+      <value name="Disable" value="1" />
+      <value name="hashing 32x32" value="3" />
+    </field>
+    <field name="3D Scoreboard Hashing Mode" dword="1" bits="4:4" type="bool" />
+    <field name="Subslice Hashing Table Enable" dword="1" bits="5:5" type="bool" />
+    <field name="Slice Hashing Table Enable" dword="1" bits="6:6" type="bool" />
+    <field name="DX10 OGL Border Mode for YCRCB" dword="1" bits="10:10" type="bool" />
+    <field name="Cross Slice Hashing Mode Mask" dword="1" bits="17:16" type="int" />
+    <field name="3D Scoreboard Hashing Mode Mask" dword="1" bits="20:20" type="bool" />
+    <field name="Subslice Hashing Table Enable Mask" dword="1" bits="21:21" type="bool" />
+    <field name="Slice Hashing Table Enable Mask" dword="1" bits="22:22" type="bool" />
+    <field name="DX10 OGL Border Mode for YCRCB Mask" dword="1" bits="26:26" type="bool" />
+    <field name="Fast Clear Optimization Enable" dword="3" bits="10:10" type="bool" />
+    <field name="RCC RHWO Optimization Disable" dword="3" bits="15:15" type="bool" />
+    <field name="Fast Clear Optimization Enable Mask" dword="3" bits="26:26" type="bool" />
+    <field name="RCC RHWO Optimization Disable Mask" dword="3" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_POINTERS_DS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="40" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to DS Binding Table" dword="1" bits="20:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_POINTERS_GS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="41" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to GS Binding Table" dword="1" bits="20:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_POINTERS_HS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="39" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to HS Binding Table" dword="1" bits="20:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_POINTERS_PS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="42" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to PS Binding Table" dword="1" bits="20:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_POINTERS_VS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="38" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to VS Binding Table" dword="1" bits="20:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_POOL_ALLOC" bias="2" length="4" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="25" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="MOCS" dword="1" bits="6:0" type="uint" nonzero="true" />
+    <field name="Binding Table Pool Base Address" dword="1" bits="63:12" type="address" />
+    <field name="Binding Table Pool Buffer Size" dword="3" bits="31:12" type="uint">
+      <value name="No Valid Data" value="0" />
+    </field>
+  </instruction>
+  <instruction name="3DSTATE_BTD" bias="2" length="6" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="6" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Dispatch Timeout Counter" dword="1" bits="1:0" type="uint">
+      <value name="64 clocks" value="0" />
+      <value name="128 clocks" value="1" />
+      <value name="192 clocks" value="2" />
+      <value name="256 clocks" value="3" />
+    </field>
+    <field name="AMFS Mode" dword="1" bits="4:3" type="uint" prefix="AMFS_MODE">
+      <value name="NORMAL" value="0" />
+      <value name="TOUCH" value="1" />
+      <value name="BACKFILL" value="2" />
+      <value name="FALLBACK" value="3" />
+    </field>
+    <field name="Per DSS Memory Backed Buffer Size" dword="2" bits="2:0" type="uint" />
+    <field name="Memory Backed Buffer Base Pointer" dword="2" bits="63:10" type="address" />
+    <field name="Scratch Space Buffer" dword="4" bits="31:10" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_CHROMA_KEY" bias="2" length="4" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="ChromaKey Table Index" dword="1" bits="31:30" type="uint" />
+    <field name="ChromaKey Low Value" dword="2" bits="31:0" type="uint" />
+    <field name="ChromaKey High Value" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_CLIP_MESH" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="129" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="1" bits="7:0" type="uint" />
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="1" bits="15:8" type="uint" />
+    <field name="Primitive Header Enable" dword="1" bits="16:16" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_CPSIZE_CONTROL_BUFFER" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="131" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="Lossless Compression Enable" dword="1" bits="25:25" type="bool" />
+    <field name="Surface Type" dword="1" bits="31:29" type="uint" />
+    <field name="Surface Base Address" dword="2" bits="63:0" type="address" />
+    <field name="Width" dword="4" bits="14:1" type="uint" />
+    <field name="Height" dword="4" bits="30:17" type="uint" />
+    <field name="MOCS" dword="5" bits="6:0" type="uint" />
+    <field name="Minimum Array Element" dword="5" bits="18:8" type="uint" />
+    <field name="Depth" dword="5" bits="30:20" type="uint" />
+    <field name="Mip Tail Start LOD" dword="6" bits="29:26" type="uint" />
+    <field name="Tiled Mode" dword="6" bits="31:30" type="uint">
+      <value name="TILE64" value="1" />
+      <value name="TILE4" value="3" />
+    </field>
+    <field name="Surface QPitch" dword="7" bits="14:0" type="uint" />
+    <field name="Surf LOD" dword="7" bits="19:16" type="uint" />
+    <field name="Render Target View Extent" dword="7" bits="31:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_DEPTH_BUFFER" bias="2" length="10" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="8" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="5" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="17:0" type="uint" />
+    <field name="Control Surface Enable" dword="1" bits="19:19" type="bool" />
+    <field name="Depth Buffer Compression Enable" dword="1" bits="21:21" type="bool" />
+    <field name="Hierarchical Depth Buffer Enable" dword="1" bits="22:22" type="bool" />
+    <field name="Corner Texel Mode" dword="1" bits="23:23" type="bool" />
+    <field name="Surface Format" dword="1" bits="26:24" type="uint">
+      <value name="D32_FLOAT" value="1" />
+      <value name="D24_UNORM_X8_UINT" value="3" />
+      <value name="D16_UNORM" value="5" />
+    </field>
+    <field name="Null Page Coherency Enable" dword="1" bits="27:27" type="bool" />
+    <field name="Depth Write Enable" dword="1" bits="28:28" type="bool" />
+    <field name="Surface Type" dword="1" bits="31:29" type="uint">
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface Base Address" dword="2" bits="63:0" type="address" />
+    <field name="Width" dword="4" bits="14:1" type="uint" />
+    <field name="Height" dword="4" bits="30:17" type="uint" />
+    <field name="MOCS" dword="5" bits="6:0" type="uint" nonzero="true" />
+    <field name="Minimum Array Element" dword="5" bits="18:8" type="uint" />
+    <field name="Depth" dword="5" bits="30:20" type="uint" />
+    <field name="Render Compression Format" dword="6" bits="4:0" type="uint" />
+    <field name="Compression Mode" dword="6" bits="5:5" type="bool" />
+    <field name="Mip Tail Start LOD" dword="6" bits="29:26" type="uint" />
+    <field name="Tiled Mode" dword="6" bits="31:30" type="uint">
+      <value name="TILE64" value="1" />
+      <value name="TILE4" value="3" />
+    </field>
+    <field name="Surface QPitch" dword="7" bits="14:0" type="uint" />
+    <field name="LOD" dword="7" bits="19:16" type="uint" />
+    <field name="Render Target View Extent" dword="7" bits="31:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_DS" bias="2" length="11" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="29" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Accesses UAV" dword="3" bits="14:14" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="bool" />
+    <field name="Scratch Space Buffer" dword="4" bits="31:10" type="uint" />
+    <field name="Patch URB Entry Read Offset" dword="6" bits="9:4" type="uint" />
+    <field name="Patch URB Entry Read Length" dword="6" bits="17:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="6" bits="24:20" type="uint" />
+    <field name="Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Cache Disable" dword="7" bits="1:1" type="bool" />
+    <field name="Compute W Coordinate Enable" dword="7" bits="2:2" type="bool" />
+    <field name="Dispatch Mode" dword="7" bits="4:3" type="uint" prefix="DISPATCH_MODE">
+      <value name="SIMD8_SINGLE_PATCH" value="1" />
+      <value name="SIMD8_SINGLE_OR_DUAL_PATCH" value="2" />
+    </field>
+    <field name="Primitive ID Not Required" dword="7" bits="9:9" type="bool" />
+    <field name="Statistics Enable" dword="7" bits="10:10" type="bool" />
+    <field name="Maximum Number of Threads" dword="7" bits="30:21" type="uint" />
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="8" bits="7:0" type="uint" />
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="8" bits="15:8" type="uint" />
+    <field name="Vertex URB Entry Output Length" dword="8" bits="20:16" type="uint" />
+    <field name="Vertex URB Entry Output Read Offset" dword="8" bits="26:21" type="uint" />
+    <field name="DUAL_PATCH Kernel Start Pointer" dword="9" bits="63:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_GS" bias="2" length="10" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="8" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="17" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Expected Vertex Count" dword="3" bits="5:0" type="uint" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="3" bits="11:11" type="bool" />
+    <field name="Accesses UAV" dword="3" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="bool" />
+    <field name="Single Program Flow" dword="3" bits="31:31" type="bool" />
+    <field name="Scratch Space Buffer" dword="4" bits="31:10" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="6" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="6" bits="9:4" type="uint" />
+    <field name="Include Vertex Handles" dword="6" bits="10:10" type="bool" />
+    <field name="Vertex URB Entry Read Length" dword="6" bits="16:11" type="uint" />
+    <field name="Output Topology" dword="6" bits="22:17" type="3D_Prim_Topo_Type" />
+    <field name="Output Vertex Size" dword="6" bits="28:23" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data [5:4]" dword="6" bits="30:29" type="uint" />
+    <field name="Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Discard Adjacency" dword="7" bits="1:1" type="bool" />
+    <field name="Reorder Mode" dword="7" bits="2:2" type="uint">
+      <value name="LEADING" value="0" />
+      <value name="TRAILING" value="1" />
+    </field>
+    <field name="Hint" dword="7" bits="3:3" type="uint" />
+    <field name="Include Primitive ID" dword="7" bits="4:4" type="bool" />
+    <field name="Invocations Increment Value" dword="7" bits="9:5" type="uint" />
+    <field name="Statistics Enable" dword="7" bits="10:10" type="bool" />
+    <field name="Dispatch Mode" dword="7" bits="12:11" type="uint" prefix="DISPATCH_MODE">
+      <value name="SIMD8" value="3" />
+    </field>
+    <field name="Default Stream Id" dword="7" bits="14:13" type="uint" />
+    <field name="Instance Control" dword="7" bits="19:15" type="uint" />
+    <field name="Control Data Header Size" dword="7" bits="23:20" type="uint" />
+    <field name="Maximum Number of Threads" dword="8" bits="8:0" type="uint" />
+    <field name="Static Output Vertex Count" dword="8" bits="26:16" type="uint" />
+    <field name="Static Output" dword="8" bits="30:30" type="bool" />
+    <field name="Control Data Format" dword="8" bits="31:31" type="uint">
+      <value name="CUT" value="0" />
+      <value name="SID" value="1" />
+    </field>
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="9" bits="7:0" type="uint" />
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="9" bits="15:8" type="uint" />
+    <field name="Vertex URB Entry Output Length" dword="9" bits="20:16" type="uint" />
+    <field name="Vertex URB Entry Output Read Offset" dword="9" bits="26:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_HIER_DEPTH_BUFFER" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="7" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="Hierarchical Depth Buffer Write Thru Enable" dword="1" bits="20:20" type="bool" />
+    <field name="Tiled Mode" dword="1" bits="23:22" type="uint">
+      <value name="TILE64" value="1" />
+      <value name="TILE4" value="3" />
+    </field>
+    <field name="MOCS" dword="1" bits="31:25" type="uint" nonzero="true" />
+    <field name="Surface Base Address" dword="2" bits="63:0" type="address" />
+    <field name="Surface QPitch" dword="4" bits="14:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_HS" bias="2" length="9" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="7" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="27" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Software Exception Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="1" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="1" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Instance Count" dword="2" bits="4:0" type="uint" />
+    <field name="Maximum Number of Threads" dword="2" bits="16:8" type="uint" />
+    <field name="Statistics Enable" dword="2" bits="29:29" type="bool" />
+    <field name="Enable" dword="2" bits="31:31" type="bool" />
+    <field name="Kernel Start Pointer" dword="3" bits="63:6" type="offset" />
+    <field name="Scratch Space Buffer" dword="5" bits="31:10" type="uint" />
+    <field name="Include Primitive ID" dword="7" bits="0:0" type="bool" />
+    <field name="Patch Count Threshold" dword="7" bits="3:1" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="7" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="7" bits="16:11" type="uint" />
+    <field name="Dispatch Mode" dword="7" bits="18:17" type="uint" prefix="DISPATCH_MODE">
+      <value name="SINGLE_PATCH" value="0" />
+      <value name="8_PATCH" value="2" />
+    </field>
+    <field name="Dispatch GRF Start Register For URB Data" dword="7" bits="23:19" type="uint" />
+    <field name="Include Vertex Handles" dword="7" bits="24:24" type="bool" />
+    <field name="Accesses UAV" dword="7" bits="25:25" type="bool" />
+    <field name="Vector Mask Enable" dword="7" bits="26:26" type="bool" />
+    <field name="Single Program Flow" dword="7" bits="27:27" type="bool" />
+    <field name="Dispatch GRF Start Register For URB Data [5]" dword="7" bits="28:28" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_MESH_CONTROL" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="119" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Maximum Number of ThreadGroups" dword="1" bits="8:0" type="uint" />
+    <field name="Thread Dispatch Priority" dword="1" bits="28:28" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Fused EU Dispatch" dword="1" bits="29:29" type="bool" />
+    <field name="Statistics Enable" dword="1" bits="30:30" type="bool" />
+    <field name="MeshShader Enable" dword="1" bits="31:31" type="uint" />
+    <field name="Scratch Space Buffer" dword="2" bits="31:10" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_MESH_DISTRIB" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="120" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Mesh Distribution Disable" dword="1" bits="0:0" type="bool" />
+    <field name="Task Distribution Disable" dword="1" bits="1:1" type="bool" />
+    <field name="Distribution Mode" dword="1" bits="2:2" type="uint" prefix="MESH">
+      <value name="RR_FREE" value="1" />
+      <value name="RR_STRICT" value="0" />
+    </field>
+    <field name="Mesh Distribution Batch Size" dword="1" bits="7:4" type="uint" />
+    <field name="Task Distribution Batch Size" dword="1" bits="13:10" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_MESH_SHADER" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="122" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Local X Maximum" dword="3" bits="9:0" type="uint" />
+    <field name="Software Exception Enable" dword="3" bits="10:10" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="3" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Single Program Flow" dword="3" bits="18:18" type="uint" />
+    <field name="Denorm Mode" dword="3" bits="19:19" type="uint">
+      <value name="Ftz" value="0" />
+      <value name="SetByKernel" value="1" />
+    </field>
+    <field name="Number of Threads in GPGPU Thread Group" dword="4" bits="9:0" type="uint" />
+    <field name="Shared Local Memory Size" dword="4" bits="20:16" type="uint" />
+    <field name="Barrier Enable" dword="4" bits="21:21" type="bool" />
+    <field name="Rounding Mode" dword="4" bits="23:22" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Preferred SLM Allocation Size" dword="4" bits="27:24" type="PREF_SLM_ALLOCATION_SIZE" />
+    <field name="Number of Barriers" dword="4" bits="30:28" type="uint" />
+    <field name="Indirect Data Length" dword="5" bits="16:0" type="uint" />
+    <field name="L3 Prefetch Disable" dword="5" bits="17:17" type="bool" />
+    <field name="Emit Local ID X" dword="5" bits="18:18" type="bool" />
+    <field name="Emit Inline Parameter" dword="5" bits="19:19" type="bool" />
+    <field name="Systolic Mode Enable" dword="5" bits="20:20" type="bool" />
+    <field name="Accesses UAV" dword="5" bits="21:21" type="bool" />
+    <field name="XP0 Required" dword="5" bits="22:22" type="uint" />
+    <field name="Message SIMD" dword="5" bits="29:28" type="uint">
+      <value name="SIMD8" value="0" />
+      <value name="SIMD16" value="1" />
+      <value name="SIMD32" value="2" />
+    </field>
+    <field name="SIMD Size" dword="5" bits="31:30" type="uint">
+      <value name="SIMD8" value="0" />
+      <value name="SIMD16" value="1" />
+      <value name="SIMD32" value="2" />
+    </field>
+    <field name="Execution Mask" dword="6" bits="31:0" type="uint" />
+    <field name="Maximum Primitive Count" dword="7" bits="9:0" type="uint" />
+    <field name="Per-Primitive Data Pitch" dword="7" bits="16:12" type="uint" />
+    <field name="Per-Vertex Data Pitch" dword="7" bits="24:20" type="uint" />
+    <field name="Index Format" dword="7" bits="27:25" type="uint" prefix="INDEX">
+      <value name="U888X" value="0" />
+      <value name="U101010X" value="1" />
+      <value name="U8" value="4" />
+      <value name="U16" value="5" />
+      <value name="U32" value="3" />
+    </field>
+    <field name="Output Topology" dword="7" bits="29:28" type="uint" prefix="OUTPUT">
+      <value name="POINT" value="0" />
+      <value name="LINE" value="1" />
+      <value name="TRI" value="2" />
+    </field>
+    <field name="Per-Primitive Data Present" dword="7" bits="31:31" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_MESH_SHADER_DATA" bias="2" length="10" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="8" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="123" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect Data Start Address" dword="1" bits="31:6" type="offset" />
+    <group count="8" dword="2" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_MONOFILTER_SIZE" bias="2" length="2" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="17" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Monochrome Filter Height" dword="1" bits="2:0" type="uint" />
+    <field name="Monochrome Filter Width" dword="1" bits="5:3" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_PS" bias="2" length="12" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="10" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="32" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer 0" dword="1" bits="63:6" type="offset" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="3" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Rounding Mode" dword="3" bits="15:14" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Single Precision Denormal Mode" dword="3" bits="26:26" type="uint">
+      <value name="Flushed to Zero" value="0" />
+      <value name="Retained" value="1" />
+    </field>
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="bool" />
+    <field name="Single Program Flow" dword="3" bits="31:31" type="bool" />
+    <field name="Scratch Space Buffer" dword="4" bits="31:10" type="uint" />
+    <field name="8 Pixel Dispatch Enable" dword="6" bits="0:0" type="bool" />
+    <field name="16 Pixel Dispatch Enable" dword="6" bits="1:1" type="bool" />
+    <field name="32 Pixel Dispatch Enable" dword="6" bits="2:2" type="bool" />
+    <field name="Position XY Offset Select" dword="6" bits="4:3" type="uint">
+      <value name="POSOFFSET_NONE" value="0" />
+      <value name="POSOFFSET_CENTROID" value="2" />
+      <value name="POSOFFSET_SAMPLE" value="3" />
+    </field>
+    <field name="Dual SIMD8 Dispatch Enable" dword="6" bits="5:5" type="bool" />
+    <field name="Render Target Resolve Type" dword="6" bits="7:6" type="uint">
+      <value name="RESOLVE_DISABLED" value="0" />
+      <value name="RESOLVE_PARTIAL" value="1" />
+      <value name="FAST_CLEAR_0" value="2" />
+      <value name="RESOLVE_FULL" value="3" />
+    </field>
+    <field name="Render Target Fast Clear Enable" dword="6" bits="8:8" type="bool" />
+    <field name="Overlapping Subspans Enable" dword="6" bits="9:9" type="bool" />
+    <field name="Push Constant Enable" dword="6" bits="11:11" type="bool" />
+    <field name="Maximum Number of Threads Per PSD" dword="6" bits="31:23" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 2" dword="7" bits="6:0" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 1" dword="7" bits="14:8" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 0" dword="7" bits="22:16" type="uint" />
+    <field name="Kernel Start Pointer 1" dword="8" bits="63:6" type="offset" />
+    <field name="Kernel Start Pointer 2" dword="10" bits="63:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_PS_EXTRA" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="79" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Input Coverage Mask State" dword="1" bits="1:0" type="uint" prefix="ICMS">
+      <value name="NONE" value="0" />
+      <value name="NORMAL" value="1" />
+      <value name="INNER_CONSERVATIVE" value="2" />
+      <value name="DEPTH_COVERAGE" value="3" />
+    </field>
+    <field name="Pixel Shader Has UAV" dword="1" bits="2:2" type="bool" />
+    <field name="Pixel Shader Pulls Bary" dword="1" bits="3:3" type="bool" />
+    <field name="Pixel Shader Is Per Coarse Pixel" dword="1" bits="4:4" type="bool" />
+    <field name="Pixel Shader Computes Stencil" dword="1" bits="5:5" type="bool" />
+    <field name="Pixel Shader Is Per Sample" dword="1" bits="6:6" type="bool" />
+    <field name="Pixel Shader Disables Alpha To Coverage" dword="1" bits="7:7" type="bool" />
+    <field name="Attribute Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Simple PS Hint" dword="1" bits="9:9" type="bool" />
+    <field name="Enable PS Dependency On CPsize Change" dword="1" bits="17:17" type="bool" />
+    <field name="Pixel Shader Requires Subpixel Sample Offsets" dword="1" bits="18:18" type="bool" />
+    <field name="Pixel Shader Requires Non-Perspective Bary Plane Coefficients" dword="1" bits="19:19" type="bool" />
+    <field name="Pixel Shader Requires Perspective Bary Plane Coefficients" dword="1" bits="20:20" type="bool" />
+    <field name="Pixel Shader Requires Source Depth and/or W Plane Coefficients" dword="1" bits="21:21" type="bool" />
+    <field name="Pixel Shader Requires Requested Coarse Pixel Shading Size" dword="1" bits="22:22" type="bool" />
+    <field name="Pixel Shader Uses Source W" dword="1" bits="23:23" type="bool" />
+    <field name="Pixel Shader Uses Source Depth" dword="1" bits="24:24" type="bool" />
+    <field name="Force Computed Depth" dword="1" bits="25:25" type="bool" />
+    <field name="Pixel Shader Computed Depth Mode" dword="1" bits="27:26" type="uint">
+      <value name="PSCDEPTH_OFF" value="0" />
+      <value name="PSCDEPTH_ON" value="1" />
+      <value name="PSCDEPTH_ON_GE" value="2" />
+      <value name="PSCDEPTH_ON_LE" value="3" />
+    </field>
+    <field name="Pixel Shader Kills Pixel" dword="1" bits="28:28" type="bool" />
+    <field name="oMask Present to Render Target" dword="1" bits="29:29" type="bool" />
+    <field name="Pixel Shader Does not write to RT" dword="1" bits="30:30" type="mbz" />
+    <field name="Pixel Shader Valid" dword="1" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_SBE_MESH" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="130" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Per-Vertex URB Entry Output Read Length" dword="1" bits="4:0" type="uint" />
+    <field name="Per-Vertex URB Entry Output Read Offset" dword="1" bits="10:5" type="uint" />
+    <field name="Per-Primitive URB Entry Output Read Length" dword="1" bits="15:11" type="uint" />
+    <field name="Per-Primitive URB Entry Output Read Offset" dword="1" bits="21:16" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_SF" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="19" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Viewport Transform Enable" dword="1" bits="1:1" type="bool" />
+    <field name="Statistics Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Legacy Global Depth Bias Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Line Width" dword="1" bits="29:12" type="u11.7" />
+    <field name="Line End Cap Antialiasing Region Width" dword="2" bits="17:16" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Deref Block Size" dword="2" bits="30:29" type="uint">
+      <value name="Block Deref Size 32" value="0" />
+      <value name="Per Poly Deref Mode" value="1" />
+      <value name="Block Deref Size 8" value="2" />
+      <value name="Mesh Shader EODB" value="3" />
+    </field>
+    <field name="Point Width" dword="3" bits="10:0" type="u8.3" />
+    <field name="Point Width Source" dword="3" bits="11:11" type="uint">
+      <value name="Vertex" value="0" />
+      <value name="State" value="1" />
+    </field>
+    <field name="Vertex Sub Pixel Precision Select" dword="3" bits="12:12" type="uint">
+      <value name="8 Bit" value="0" />
+      <value name="4 Bit" value="1" />
+    </field>
+    <field name="Smooth Point Enable" dword="3" bits="13:13" type="bool" />
+    <field name="AA Line Distance Mode" dword="3" bits="14:14" type="uint">
+      <value name="AALINEDISTANCE_TRUE" value="1" />
+    </field>
+    <field name="Triangle Fan Provoking Vertex Select" dword="3" bits="26:25" type="uint" />
+    <field name="Line Strip/List Provoking Vertex Select" dword="3" bits="28:27" type="uint" />
+    <field name="Triangle Strip/List Provoking Vertex Select" dword="3" bits="30:29" type="uint" />
+    <field name="Last Pixel Enable" dword="3" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_STENCIL_BUFFER" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="6" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="Corner Texel Mode" dword="1" bits="23:23" type="bool" />
+    <field name="Control Surface Enable" dword="1" bits="24:24" type="bool" />
+    <field name="Stencil Compression Enable" dword="1" bits="25:25" type="bool" />
+    <field name="Null Page Coherency Enable" dword="1" bits="27:27" type="bool" />
+    <field name="Stencil Write Enable" dword="1" bits="28:28" type="bool" />
+    <field name="Surface Type" dword="1" bits="31:29" type="uint">
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface Base Address" dword="2" bits="63:0" type="address" />
+    <field name="Width" dword="4" bits="14:1" type="uint" />
+    <field name="Height" dword="4" bits="30:17" type="uint" />
+    <field name="MOCS" dword="5" bits="6:0" type="uint" nonzero="true" />
+    <field name="Minimum Array Element" dword="5" bits="18:8" type="uint" />
+    <field name="Depth" dword="5" bits="30:20" type="uint" />
+    <field name="Render Compression Format" dword="6" bits="4:0" type="uint" />
+    <field name="Compression Mode" dword="6" bits="5:5" type="bool" />
+    <field name="Mip Tail Start LOD" dword="6" bits="29:26" type="uint" />
+    <field name="Tiled Mode" dword="6" bits="31:30" type="uint">
+      <value name="TILE64" value="1" />
+      <value name="TILE4" value="3" />
+    </field>
+    <field name="Surface QPitch" dword="7" bits="14:0" type="uint" />
+    <field name="Surf LOD" dword="7" bits="19:16" type="uint" />
+    <field name="Render Target View Extent" dword="7" bits="31:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_TASK_CONTROL" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="124" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Maximum Number of ThreadGroups" dword="1" bits="8:0" type="uint" />
+    <field name="Thread Dispatch Priority" dword="1" bits="28:28" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Fused EU Dispatch" dword="1" bits="29:29" type="bool" />
+    <field name="Statistics Enable" dword="1" bits="30:30" type="bool" />
+    <field name="TaskShader Enable" dword="1" bits="31:31" type="uint" />
+    <field name="Scratch Space Buffer" dword="2" bits="31:10" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_TASK_REDISTRIB" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="121" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Task Redistribution Mode" dword="1" bits="1:0" type="uint">
+      <value name="TASKREDISTRIB_OFF" value="0" />
+      <value name="TASKREDISTRIB_RR_STRICT" value="1" />
+      <value name="TASKREDISTRIB_RR_FREE" value="2" />
+    </field>
+    <field name="Task Redistribution Level" dword="1" bits="3:2" type="uint">
+      <value name="TASKREDISTRIB_TASK" value="0" />
+      <value name="TASKREDISTRIB_BOM" value="1" />
+    </field>
+    <field name="Target Mesh Batch Size" dword="1" bits="7:4" type="uint" />
+    <field name="Small TaskThreshold" dword="1" bits="12:10" type="uint" />
+    <field name="Local BOT Accumulator Threshold" dword="1" bits="17:16" type="uint">
+      <value name="MULTIPLIER_0" value="0" />
+      <value name="MULTIPLIER_1" value="1" />
+      <value name="MULTIPLIER_2" value="2" />
+      <value name="MULTIPLIER_4" value="3" />
+    </field>
+  </instruction>
+  <instruction name="3DSTATE_TASK_SHADER" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="125" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Local X Maximum" dword="3" bits="9:0" type="uint" />
+    <field name="Software Exception Enable" dword="3" bits="10:10" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="3" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Single Program Flow" dword="3" bits="18:18" type="uint" />
+    <field name="Denorm Mode" dword="3" bits="19:19" type="uint">
+      <value name="Ftz" value="0" />
+      <value name="SetByKernel" value="1" />
+    </field>
+    <field name="Number of Threads in GPGPU Thread Group" dword="4" bits="9:0" type="uint" />
+    <field name="Shared Local Memory Size" dword="4" bits="20:16" type="uint" />
+    <field name="Barrier Enable" dword="4" bits="21:21" type="bool" />
+    <field name="Rounding Mode" dword="4" bits="23:22" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Preferred SLM Allocation Size" dword="4" bits="27:24" type="uint" />
+    <field name="Number of Barriers" dword="4" bits="30:28" type="uint" />
+    <field name="Indirect Data Length" dword="5" bits="16:0" type="uint" />
+    <field name="L3 Prefetch Disable" dword="5" bits="17:17" type="bool" />
+    <field name="Emit Local ID X" dword="5" bits="18:18" type="bool" />
+    <field name="Emit Inline Parameter" dword="5" bits="19:19" type="bool" />
+    <field name="Systolic Mode Enable" dword="5" bits="20:20" type="bool" />
+    <field name="Accesses UAV" dword="5" bits="21:21" type="bool" />
+    <field name="XP0 Required" dword="5" bits="22:22" type="uint" />
+    <field name="Message SIMD" dword="5" bits="29:28" type="uint">
+      <value name="SIMD8" value="0" />
+      <value name="SIMD16" value="1" />
+      <value name="SIMD32" value="2" />
+    </field>
+    <field name="SIMD Size" dword="5" bits="31:30" type="uint">
+      <value name="SIMD8" value="0" />
+      <value name="SIMD16" value="1" />
+      <value name="SIMD32" value="2" />
+    </field>
+    <field name="Execution Mask" dword="6" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_TASK_SHADER_DATA" bias="2" length="10" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="8" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="126" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect Data Start Address" dword="1" bits="31:6" type="offset" />
+    <group count="8" dword="2" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_TBIMR_TILE_PASS_INFO" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="110" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Tile Rectangle Height" dword="1" bits="14:0" type="uint" />
+    <field name="Tile Rectangle Width" dword="1" bits="30:16" type="uint" />
+    <field name="Vertical Tile Count" dword="2" bits="15:0" type="uint" />
+    <field name="Horizontal Tile Count" dword="2" bits="31:16" type="uint" />
+    <field name="Walk Pattern" dword="3" bits="0:0" type="uint" />
+    <field name="Tile Box Check" dword="3" bits="2:2" type="uint" />
+    <field name="TBIMR Batch Size" dword="3" bits="5:3" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_TE" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="28" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="TE Enable" dword="1" bits="0:0" type="bool" />
+    <field name="TE Mode" dword="1" bits="2:1" type="uint">
+      <value name="HW_TESS" value="0" />
+    </field>
+    <field name="TE Domain" dword="1" bits="5:4" type="uint">
+      <value name="QUAD" value="0" />
+      <value name="TRI" value="1" />
+      <value name="ISOLINE" value="2" />
+    </field>
+    <field name="Output Topology" dword="1" bits="9:8" type="uint" prefix="OUTPUT">
+      <value name="POINT" value="0" />
+      <value name="LINE" value="1" />
+      <value name="TRI_CW" value="2" />
+      <value name="TRI_CCW" value="3" />
+    </field>
+    <field name="Partitioning" dword="1" bits="13:12" type="uint">
+      <value name="INTEGER" value="0" />
+      <value name="ODD_FRACTIONAL" value="1" />
+      <value name="EVEN_FRACTIONAL" value="2" />
+    </field>
+    <field name="Tessellation Distribution Mode" dword="1" bits="15:14" type="uint">
+      <value name="TEDMODE_OFF" value="0" />
+      <value name="TEDMODE_RR_STRICT" value="1" />
+      <value name="TEDMODE_RR_FREE" value="2" />
+    </field>
+    <field name="Tessellation Distribution Level" dword="1" bits="18:17" type="uint">
+      <value name="TEDLEVEL_PATCH" value="0" />
+    </field>
+    <field name="Tessellation Scale Factor Enable" dword="1" bits="19:19" type="bool" />
+    <field name="Tessellation Factor Format" dword="1" bits="20:20" type="uint">
+      <value name="FLOAT32" value="0" />
+      <value name="FLOAT16" value="1" />
+    </field>
+    <field name="Patch Header Layout" dword="1" bits="23:22" type="uint">
+      <value name="LEGACY" value="0" />
+      <value name="REVERSED" value="2" />
+      <value name="REVERSED_TRI_INSIDE_SEPARATE" value="3" />
+    </field>
+    <field name="Small Patch Threshold" dword="1" bits="25:24" type="uint">
+      <value name="SPT_8_TRIANGLES" value="0" />
+      <value name="SPT_16_TRIANGLES" value="1" />
+      <value name="SPT_32_TRIANGLES" value="2" />
+      <value name="SPT_64_TRIANGLES" value="3" />
+    </field>
+    <field name="Target Block Size" dword="1" bits="29:26" type="uint">
+      <value name="64_TRIANGLES" value="0" />
+      <value name="96_TRIANGLES" value="1" />
+      <value name="128_TRIANGLES" value="2" />
+      <value name="192_TRIANGLES" value="3" />
+      <value name="256_TRIANGLES" value="4" />
+      <value name="384_TRIANGLES" value="5" />
+      <value name="512_TRIANGLES" value="6" />
+      <value name="768_TRIANGLES" value="7" />
+      <value name="1K_TRIANGLES" value="8" />
+      <value name="1.5K_TRIANGLES" value="9" />
+      <value name="2K_TRIANGLES" value="10" />
+      <value name="3K_TRIANGLES" value="11" />
+      <value name="4K_TRIANGLES" value="12" />
+      <value name="6K_TRIANGLES" value="13" />
+      <value name="8K_TRIANGLES" value="14" />
+      <value name="12K_TRIANGLES" value="15" />
+    </field>
+    <field name="Local BOP Accumulator Threshold" dword="1" bits="31:30" type="uint">
+      <value name="MULTIPLIER_0" value="0" />
+      <value name="MULTIPLIER_1" value="1" />
+      <value name="MULTIPLIER_2" value="2" />
+      <value name="MULTIPLIER_3" value="3" />
+    </field>
+    <field name="Maximum Tessellation Factor Odd" dword="2" bits="31:0" type="float" />
+    <field name="Maximum Tessellation Factor Not Odd" dword="3" bits="31:0" type="float" />
+    <field name="Tessellation Scale Factor" dword="4" bits="31:0" type="float" />
+  </instruction>
+  <instruction name="3DSTATE_URB_ALLOC_MESH" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="127" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="MESH URB Entry Allocation Size" dword="1" bits="9:0" type="uint" />
+    <field name="MESH URB Starting Address Slice0" dword="1" bits="17:10" type="uint" />
+    <field name="MESH URB Starting Address SliceN" dword="1" bits="28:21" type="uint" />
+    <field name="MESH Number of URB Entries Slice0" dword="2" bits="15:0" type="uint" />
+    <field name="MESH Number of URB Entries SliceN" dword="2" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_URB_ALLOC_TASK" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="128" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="TASK URB Entry Allocation Size" dword="1" bits="9:0" type="uint" />
+    <field name="TASK URB Starting Address Slice0" dword="1" bits="17:10" type="uint" />
+    <field name="TASK URB Starting Address SliceN" dword="1" bits="28:21" type="uint" />
+    <field name="TASK Number of URB Entries Slice0" dword="2" bits="15:0" type="uint" />
+    <field name="TASK Number of URB Entries SliceN" dword="2" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_VF" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="Indexed Draw Cut Index Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Component Packing Enable" dword="0" bits="9:9" type="bool" />
+    <field name="Sequential Draw Cut Index Enable" dword="0" bits="10:10" type="bool" />
+    <field name="VertexID Offset Enable" dword="0" bits="11:11" type="bool" />
+    <field name="Geometry Distribution Enable" dword="0" bits="12:12" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="12" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Cut Index" dword="1" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_VFG" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="87" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Distribution Granularity" dword="1" bits="1:0" type="uint">
+      <value name="Batch Level Granularity" value="0" />
+      <value name="Instance Level Granularity" value="1" />
+      <value name="Draw Level Granularity" value="2" />
+    </field>
+    <field name="Granularity Threshold Disable" dword="1" bits="2:2" type="bool" />
+    <field name="List Cut Index Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Distribution Mode" dword="1" bits="4:4" type="uint">
+      <value name="RR_STRICT" value="0" />
+      <value name="RR_FREE" value="1" />
+    </field>
+    <field name="List 1 Batch Size Scale" dword="2" bits="2:0" type="uint" />
+    <field name="List 2 Batch Size Scale" dword="2" bits="10:8" type="uint" />
+    <field name="List 3 Batch Size Scale" dword="2" bits="18:16" type="uint" />
+    <field name="List N Batch Size Scale" dword="2" bits="26:24" type="uint" />
+    <field name="Strip Batch Size Scale" dword="3" bits="2:0" type="uint" />
+    <field name="Patch Batch Size Scale" dword="3" bits="10:8" type="uint" />
+    <field name="Patch Batch Size Multiplier" dword="3" bits="20:16" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_VF_SGVS_2" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="86" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="XP0 Element Offset" dword="1" bits="5:0" type="uint" />
+    <field name="XP0 Source Select" dword="1" bits="12:12" type="uint">
+      <value name="VERTEX_LOCATION" value="1" />
+      <value name="XP0_PARAMETER" value="0" />
+    </field>
+    <field name="XP0 Component Number" dword="1" bits="14:13" type="uint">
+      <value name="COMP_0" value="0" />
+      <value name="COMP_1" value="1" />
+      <value name="COMP_2" value="2" />
+      <value name="COMP_3" value="3" />
+    </field>
+    <field name="XP0 Enable" dword="1" bits="15:15" type="uint" />
+    <field name="XP1 Element Offset" dword="1" bits="21:16" type="uint" />
+    <field name="XP1 Source Select" dword="1" bits="28:28" type="uint">
+      <value name="Starting Instance Location" value="1" />
+      <value name="XP1_PARAMETER" value="0" />
+    </field>
+    <field name="XP1 Component Number" dword="1" bits="30:29" type="uint">
+      <value name="COMP_0" value="0" />
+      <value name="COMP_1" value="1" />
+      <value name="COMP_2" value="2" />
+      <value name="COMP_3" value="3" />
+    </field>
+    <field name="XP1 Enable" dword="1" bits="31:31" type="uint" />
+    <field name="XP2 Element Offset" dword="2" bits="5:0" type="uint" />
+    <field name="XP2 Component Number" dword="2" bits="14:13" type="uint">
+      <value name="COMP_0" value="0" />
+      <value name="COMP_1" value="1" />
+      <value name="COMP_2" value="2" />
+      <value name="COMP_3" value="3" />
+    </field>
+    <field name="XP2 Enable" dword="2" bits="15:15" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_VS" bias="2" length="9" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="7" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="16" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Accesses UAV" dword="3" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="bool" />
+    <field name="Scratch Space Buffer" dword="4" bits="31:10" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="6" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="6" bits="16:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="6" bits="24:20" type="uint" />
+    <field name="Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Vertex Cache Disable" dword="7" bits="1:1" type="bool" />
+    <field name="SIMD8 Dispatch Enable" dword="7" bits="2:2" type="bool" />
+    <field name="SIMD8 Single Instance Dispatch Enable" dword="7" bits="9:9" type="bool" />
+    <field name="Statistics Enable" dword="7" bits="10:10" type="bool" />
+    <field name="Maximum Number of Threads" dword="7" bits="31:22" type="uint" />
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="8" bits="7:0" type="uint" />
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="8" bits="15:8" type="uint" />
+    <field name="Vertex URB Entry Output Length" dword="8" bits="20:16" type="uint" />
+    <field name="Vertex URB Entry Output Read Offset" dword="8" bits="26:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_WM" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="20" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Force Kill Pixel Enable" dword="1" bits="1:0" type="uint">
+      <value name="ForceOff" value="1" />
+      <value name="ForceON" value="2" />
+    </field>
+    <field name="Point Rasterization Rule" dword="1" bits="2:2" type="uint">
+      <value name="RASTRULE_UPPER_LEFT" value="0" />
+      <value name="RASTRULE_UPPER_RIGHT" value="1" />
+    </field>
+    <field name="Line Stipple Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Polygon Stipple Enable" dword="1" bits="4:4" type="bool" />
+    <field name="Line Antialiasing Region Width" dword="1" bits="7:6" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Line End Cap Antialiasing Region Width" dword="1" bits="9:8" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Barycentric Interpolation Mode" dword="1" bits="16:11" type="uint">
+      <value name="BIM_PERSPECTIVE_PIXEL" value="1" />
+      <value name="BIM_PERSPECTIVE_CENTROID" value="2" />
+      <value name="BIM_PERSPECTIVE_SAMPLE" value="4" />
+      <value name="BIM_LINEAR_PIXEL" value="8" />
+      <value name="BIM_LINEAR_CENTROID" value="16" />
+      <value name="BIM_LINEAR_SAMPLE" value="32" />
+    </field>
+    <field name="Position ZW Interpolation Mode" dword="1" bits="18:17" type="uint">
+      <value name="INTERP_PIXEL" value="0" />
+      <value name="INTERP_CENTROID" value="2" />
+      <value name="INTERP_SAMPLE" value="3" />
+    </field>
+    <field name="Force Thread Dispatch Enable" dword="1" bits="20:19" type="uint">
+      <value name="ForceOff" value="1" />
+      <value name="ForceON" value="2" />
+    </field>
+    <field name="Early Depth/Stencil Control" dword="1" bits="22:21" type="uint">
+      <value name="EDSC_NORMAL" value="0" />
+      <value name="EDSC_PSEXEC" value="1" />
+      <value name="EDSC_PREPS" value="2" />
+    </field>
+    <field name="Walker Direction" dword="1" bits="23:23" type="uint" default="0">
+      <value name="Snake Walk" value="0" />
+      <value name="Z Walk" value="1" />
+    </field>
+    <field name="Walking Granularity" dword="1" bits="25:24" type="uint" default="2">
+      <value name="16x16 granularity" value="0" />
+      <value name="32x32 granularity" value="1" />
+      <value name="64x64 granularity" value="2" />
+    </field>
+    <field name="Legacy Diamond Line Rasterization" dword="1" bits="26:26" type="bool" />
+    <field name="Legacy Hierarchical Depth Buffer Resolve Enable" dword="1" bits="27:27" type="bool" />
+    <field name="Legacy Depth Buffer Resolve Enable" dword="1" bits="28:28" type="bool" />
+    <field name="Legacy Depth Buffer Clear Enable" dword="1" bits="30:30" type="bool" />
+    <field name="Statistics Enable" dword="1" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_WM_HZ_OP" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="82" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Depth Buffer Partial Resolve Enable" dword="1" bits="9:9" type="bool" />
+    <field name="Number of Multisamples" dword="1" bits="15:13" type="uint" />
+    <field name="Stencil Clear Value" dword="1" bits="23:16" type="uint" />
+    <field name="Stencil Buffer Resolve Enable" dword="1" bits="24:24" type="bool" />
+    <field name="Full Surface Depth and Stencil Clear" dword="1" bits="25:25" type="bool" />
+    <field name="Pixel Position Offset Enable" dword="1" bits="26:26" type="bool" />
+    <field name="Hierarchical Depth Buffer Resolve Enable" dword="1" bits="27:27" type="bool" />
+    <field name="Depth Buffer Resolve Enable" dword="1" bits="28:28" type="bool" />
+    <field name="Scissor Rectangle Enable" dword="1" bits="29:29" type="bool" />
+    <field name="Depth Buffer Clear Enable" dword="1" bits="30:30" type="bool" />
+    <field name="Stencil Buffer Clear Enable" dword="1" bits="31:31" type="bool" />
+    <field name="Clear Rectangle X Min" dword="2" bits="15:0" type="uint" />
+    <field name="Clear Rectangle Y Min" dword="2" bits="31:16" type="uint" />
+    <field name="Clear Rectangle X Max" dword="3" bits="15:0" type="uint" />
+    <field name="Clear Rectangle Y Max" dword="3" bits="31:16" type="uint" />
+    <field name="Sample Mask" dword="4" bits="15:0" type="uint" />
+  </instruction>
+  <instruction name="AVP_IND_OBJ_BASE_ADDR_STATE" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="3" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="AVP Indirect Bitstream Object Base Address" dword="1" bits="63:0" type="address" />
+    <field name="AVP Indirect Bitstream Object Address Attributes" dword="3" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="AVP Indirect CU Object Base Address" dword="6" bits="63:0" type="address" />
+    <field name="AVP Indirect CU Object Memory Address Attributes" dword="8" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+  </instruction>
+  <instruction name="AVP_PIC_STATE" bias="2" length="76" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="74" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="48" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Width" dword="1" bits="13:0" type="uint" />
+    <field name="Frame Height" dword="1" bits="29:16" type="uint" />
+    <field name="Sequence Chroma SubSampling Format" dword="2" bits="1:0" type="uint" prefix="SS">
+      <value name="Monochrome" value="0" />
+      <value name="420" value="1" />
+      <value name="422" value="2" />
+      <value name="444" value="3" />
+    </field>
+    <field name="Sequence Pixel Bit-Depth Idc" dword="2" bits="4:3" type="uint" prefix="SeqPix">
+      <value name="8-bit" value="0" />
+      <value name="10-bit" value="1" />
+      <value name="12-bit" value="2" />
+    </field>
+    <field name="Sequence Superblock Size Used" dword="2" bits="8:7" type="uint">
+      <value name="64x64" value="0" />
+      <value name="128x128" value="1" />
+    </field>
+    <field name="Sequence Enable Order Hint Flag" dword="2" bits="9:9" type="bool" />
+    <field name="Sequence Order Hint Bits Minus 1" dword="2" bits="12:10" type="uint" />
+    <field name="Sequence Enable Filter Intra Flag" dword="2" bits="16:16" type="bool" />
+    <field name="Sequence Enable Intra Edge Filter Flag" dword="2" bits="17:17" type="bool" />
+    <field name="Sequence Enable Dual Filter Flag" dword="2" bits="18:18" type="bool" />
+    <field name="Sequence Enable Inter Intra Compound Flag" dword="2" bits="19:19" type="bool" />
+    <field name="Sequence Enable Masked Compound Flag" dword="2" bits="20:20" type="bool" />
+    <field name="Sequence Enable Joint Compound Flag" dword="2" bits="21:21" type="bool" />
+    <field name="Allow Screen Content Tools Flag" dword="3" bits="0:0" type="bool" />
+    <field name="Force Integer MV Flag" dword="3" bits="1:1" type="bool" />
+    <field name="Allow Warped Motion Flag" dword="3" bits="2:2" type="bool" />
+    <field name="Use CDEF Filter Flag" dword="3" bits="4:4" type="bool" />
+    <field name="Use Super-Res Flag" dword="3" bits="5:5" type="bool" />
+    <field name="Frame Level Loop Restoration Filter Enable" dword="3" bits="6:6" type="bool" />
+    <field name="Frame Type" dword="3" bits="17:16" type="uint" />
+    <field name="Intra Only Flag" dword="3" bits="19:19" type="bool" />
+    <field name="Error Resilient Mode Flag" dword="3" bits="22:22" type="bool" />
+    <field name="Allow IntraBC Flag" dword="3" bits="23:23" type="bool" />
+    <field name="Primary Reference Frame Idx" dword="3" bits="30:28" type="uint" />
+    <field name="Segmentation Enable Flag" dword="4" bits="0:0" type="bool" />
+    <field name="Segmentation Update Map Flag" dword="4" bits="1:1" type="bool" />
+    <field name="Segmentation Temporal Update Flag" dword="4" bits="2:2" type="bool" />
+    <field name="Pre Skip Segment ID Flag" dword="4" bits="3:3" type="bool" />
+    <field name="Last Active Segment Segment ID" dword="4" bits="6:4" type="uint" />
+    <field name="Delta Q Present Flag" dword="4" bits="7:7" type="bool" />
+    <field name="Delta Q Res" dword="4" bits="9:8" type="uint" />
+    <field name="Frame Coded Lossless Mode" dword="4" bits="10:10" type="bool" />
+    <field name="Segment Map is Zero Flag" dword="4" bits="11:11" type="bool" />
+    <field name="Segment ID Buffer Stream In Enable Flag" dword="4" bits="12:12" type="bool" />
+    <field name="Segment ID Buffer Stream Out Enable Flag" dword="4" bits="13:13" type="bool" />
+    <field name="Base Qindex" dword="4" bits="23:16" type="uint" />
+    <field name="Y dc delta Q" dword="4" bits="30:24" type="int" />
+    <field name="U dc delta Q" dword="5" bits="6:0" type="int" />
+    <field name="U ac delta Q" dword="5" bits="14:8" type="int" />
+    <field name="V dc delta Q" dword="5" bits="22:16" type="int" />
+    <field name="V ac delta Q" dword="5" bits="30:24" type="int" />
+    <field name="Allow High Precision MV" dword="6" bits="0:0" type="bool" />
+    <field name="Frame Level Reference Mode Select" dword="6" bits="1:1" type="bool" />
+    <field name="Mcomp Filter Type" dword="6" bits="4:2" type="uint">
+      <value name="Eight Tap" value="0" />
+      <value name="Eight Tap Smooth" value="1" />
+      <value name="Eight Tap Sharp" value="2" />
+      <value name="Bilinear" value="3" />
+      <value name="Switchable" value="4" />
+    </field>
+    <field name="Motion Mode Switchable Flag" dword="6" bits="6:6" type="bool" />
+    <field name="Use Reference Frame MV Set Flag" dword="6" bits="7:7" type="bool" />
+    <field name="Reference Frame Sign Bias" dword="6" bits="15:8" type="uint" />
+    <field name="Current Frame Order Hint" dword="6" bits="23:16" type="uint" />
+    <field name="Reduced Tx Set Used" dword="7" bits="0:0" type="bool" />
+    <field name="Frame Transform Mode" dword="7" bits="2:1" type="uint" />
+    <field name="Skip Mode Present Flag" dword="7" bits="4:4" type="bool" />
+    <field name="Skip Mode Frame 0" dword="7" bits="7:5" type="uint" />
+    <field name="Skip Mode Frame 1" dword="7" bits="11:9" type="uint" />
+    <field name="Reference Frame Side" dword="7" bits="31:24" type="uint" />
+    <field name="Global Motion Type 1" dword="8" bits="4:3" type="uint" />
+    <field name="Global Motion Type 2" dword="8" bits="7:6" type="uint" />
+    <field name="Global Motion Type 3" dword="8" bits="10:9" type="uint" />
+    <field name="Global Motion Type 4" dword="8" bits="13:12" type="uint" />
+    <field name="Global Motion Type 5" dword="8" bits="16:15" type="uint" />
+    <field name="Global Motion Type 6" dword="8" bits="19:18" type="uint" />
+    <field name="Global Motion Type 7" dword="8" bits="22:21" type="uint" />
+    <field name="Frame Level Global Motion Invalid Flags" dword="8" bits="31:24" type="uint" />
+    <group count="42" dword="9" size="16">
+      <field name="Warp Parameters" dword="0" bits="15:0" type="uint" />
+    </group>
+    <field name="Reference Frame Idx 0" dword="30" bits="2:0" type="uint" />
+    <field name="Reference Frame Idx 1" dword="30" bits="6:4" type="uint" />
+    <field name="Reference Frame Idx 2" dword="30" bits="10:8" type="uint" />
+    <field name="Reference Frame Idx 3" dword="30" bits="14:12" type="uint" />
+    <field name="Reference Frame Idx 4" dword="30" bits="18:16" type="uint" />
+    <field name="Reference Frame Idx 5" dword="30" bits="22:20" type="uint" />
+    <field name="Reference Frame Idx 6" dword="30" bits="26:24" type="uint" />
+    <field name="Reference Frame Idx 7" dword="30" bits="30:28" type="uint" />
+    <field name="Intra Frame Width in Pixel Minus 1" dword="31" bits="15:0" type="uint" />
+    <field name="Intra Frame Height in Pixel Minus 1" dword="31" bits="31:16" type="uint" />
+    <field name="Last Frame Width in Pixel Minus 1" dword="32" bits="15:0" type="uint" />
+    <field name="Last Frame Height in Pixel Minus 1" dword="32" bits="31:16" type="uint" />
+    <field name="Last2 Frame Width in Pixel Minus 1" dword="33" bits="15:0" type="uint" />
+    <field name="Last2 Frame Height in Pixel Minus 1" dword="33" bits="31:16" type="uint" />
+    <field name="Last3 Frame Width in Pixel Minus 1" dword="34" bits="15:0" type="uint" />
+    <field name="Last3 Frame Height in Pixel Minus 1" dword="34" bits="31:16" type="uint" />
+    <field name="Golden Frame Width in Pixel Minus 1" dword="35" bits="15:0" type="uint" />
+    <field name="Golden Frame Height in Pixel Minus 1" dword="35" bits="31:16" type="uint" />
+    <field name="BWDREF Frame Width in Pixel Minus 1" dword="36" bits="15:0" type="uint" />
+    <field name="BWDREF Frame Height in Pixel Minus 1" dword="36" bits="31:16" type="uint" />
+    <field name="ALTREF2 Frame Width in Pixel Minus 1" dword="37" bits="15:0" type="uint" />
+    <field name="ALTREF2 Frame Height in Pixel Minus 1" dword="37" bits="31:16" type="uint" />
+    <field name="ALTREF Frame Width in Pixel Minus 1" dword="38" bits="15:0" type="uint" />
+    <field name="ALTREF Frame Height in Pixel Minus 1" dword="38" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For Intra" dword="39" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For Intra" dword="39" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For Last" dword="40" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For Last" dword="40" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For Last2" dword="41" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For Last2" dword="41" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For Last3" dword="42" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For Last3" dword="42" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For Golden" dword="43" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For Golden" dword="43" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For BWDREF" dword="44" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For BWDREF" dword="44" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For ALTREF2" dword="45" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For ALTREF2" dword="45" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For ALTREF" dword="46" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For ALTREF" dword="46" bits="31:16" type="uint" />
+    <group count="8" dword="47" size="8">
+      <field name="Reference Frame Order Hint" dword="0" bits="7:0" type="uint" />
+    </group>
+    <field name="NonFirstPassFlag" dword="51" bits="16:16" type="bool" />
+    <field name="FrameSzOverStatusEn - FrameBitRateMaxReportMask" dword="51" bits="25:25" type="bool" />
+    <field name="FrameSzUnderStatusEn - FrameBitRateMinReportMask" dword="51" bits="26:26" type="bool" />
+    <field name="FrameBitRateMax" dword="52" bits="13:0" type="uint" />
+    <field name="FrameBitrateMaxUnit" dword="52" bits="31:31" type="FRAME_BITRATE_UNITS" />
+    <field name="FrameBitRateMin" dword="53" bits="13:0" type="uint" />
+    <field name="FrameBitrateMinUnit" dword="53" bits="31:31" type="FRAME_BITRATE_UNITS" />
+    <field name="FrameDeltaQindexMax" dword="54" bits="63:0" type="uint" />
+    <field name="FrameDeltaQindexMin" dword="56" bits="31:0" type="uint" />
+    <field name="FrameDeltaLFMax" dword="57" bits="63:0" type="uint" />
+    <field name="FrameDeltaLFMin" dword="59" bits="31:0" type="uint" />
+    <field name="FrameDeltaQindexLFMaxRange" dword="60" bits="63:0" type="uint" />
+    <field name="FrameDeltaQindexLFMinRange" dword="62" bits="31:0" type="uint" />
+    <field name="MinFrameSize" dword="63" bits="15:0" type="uint" />
+    <field name="MinFrameSizeUnits" dword="63" bits="31:30" type="uint">
+      <value name="4K Byte Units" value="0" />
+      <value name="16K Byte Units" value="1" />
+      <value name="Compatibility Mode" value="2" />
+      <value name="6 Byte Units" value="3" />
+    </field>
+    <field name="Reserved MBZ" dword="64" bits="15:0" type="uint" />
+    <field name="Class0 SSE Threshold0" dword="65" bits="15:0" type="uint" />
+    <field name="Class0 SSE Threshold1" dword="65" bits="31:16" type="uint" />
+    <group count="8" dword="66" size="8">
+      <field name="SSE Thresholds For Class" dword="0" bits="7:0" type="uint" />
+    </group>
+    <field name="rdmult" dword="74" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="AVP_PIPE_BUF_ADDR_STATE" bias="2" length="212" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="210" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="8" dword="1" size="64">
+      <field name="Reference Picture - Address" dword="0" bits="63:0" type="address" />
+    </group>
+    <field name="Reference Picture - Attributes" dword="17" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Decoded Output Frame Buffer Address" dword="18" bits="63:0" type="address" />
+    <field name="Decoded Output Frame Buffer Address - Attributes" dword="20" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="IntraBC Decoded Output Frame Buffer Address" dword="24" bits="63:0" type="address" />
+    <field name="IntraBC Decoded Output Frame Buffer Address - Attributes" dword="26" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDF Tables Initialization Buffer Address" dword="27" bits="63:0" type="address" />
+    <field name="CDF Tables Initialization Buffer Address - Attributes" dword="29" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDF Tables Backward Adaptation Buffer Address" dword="30" bits="63:0" type="address" />
+    <field name="CDF Tables Backward Adaptation Buffer Address - Attributes" dword="32" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="AV1 Segment ID Read Buffer Address" dword="33" bits="63:0" type="address" />
+    <field name="AV1 Segment ID Read Buffer Address - Attributes" dword="35" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="AV1 Segment ID Write Buffer Address" dword="36" bits="63:0" type="address" />
+    <field name="AV1 Segment ID Write Buffer Address - Attributes" dword="38" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <group count="8" dword="39" size="64">
+      <field name="Collocated MV Temporal Buffer - Address" dword="0" bits="63:0" type="address" />
+    </group>
+    <field name="Collocated MV Temporal Buffer - Attributes" dword="55" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Current Frame MV Write Buffer Address" dword="56" bits="63:0" type="address" />
+    <field name="Current Frame MV Write Buffer Address - Attributes" dword="58" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Bitstream Line Rowstore Buffer Address" dword="62" bits="63:0" type="address" />
+    <field name="Bitstream Line Rowstore Buffer Address - Attributes" dword="64" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Bitstream Tile Line Rowstore Buffer Address" dword="65" bits="63:0" type="address" />
+    <field name="Bitstream Tile Line Rowstore Buffer Address - Attributes" dword="67" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Intra Prediction Line Rowstore Buffer Address" dword="68" bits="63:0" type="address" />
+    <field name="Intra Prediction Line Rowstore Buffer Address - Attributes" dword="70" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Intra Prediction Tile Line Rowstore Buffer Address" dword="71" bits="63:0" type="address" />
+    <field name="Intra Prediction Tile Line Rowstore Buffer Address - Attributes" dword="73" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Spatial Motion Vector Line Buffer Address" dword="74" bits="63:0" type="address" />
+    <field name="Spatial Motion Vector Line Buffer Address - Attributes" dword="76" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Spatial Motion Vector Tile Line Buffer Address" dword="77" bits="63:0" type="address" />
+    <field name="Spatial Motion Vector Tile Line Buffer Address - Attributes" dword="79" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Meta Tile Column Buffer Address" dword="80" bits="63:0" type="address" />
+    <field name="Loop Restoration Meta Tile Column Buffer Address - Attributes" dword="82" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Filter Tile Line Y Buffer Address" dword="83" bits="63:0" type="address" />
+    <field name="Loop Restoration Filter Tile Line Y Buffer Address - Attributes" dword="85" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Filter Tile Line U Buffer Address" dword="86" bits="63:0" type="address" />
+    <field name="Loop Restoration Filter Tile Line U Buffer Address - Attributes" dword="88" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Filter Tile Line V Buffer Address" dword="89" bits="63:0" type="address" />
+    <field name="Loop Restoration Filter Tile Line V Buffer Address - Attributes" dword="91" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Line Y Buffer Address" dword="92" bits="63:0" type="address" />
+    <field name="Deblocker Filter Line Y Buffer Address - Attributes" dword="94" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Line U Buffer Address" dword="95" bits="63:0" type="address" />
+    <field name="Deblocker Filter Line U Buffer Address - Attributes" dword="97" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Line V Buffer Address" dword="98" bits="63:0" type="address" />
+    <field name="Deblocker Filter Line V Buffer Address - Attributes" dword="100" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Tile Line Y Buffer Address" dword="101" bits="63:0" type="address" />
+    <field name="Deblocker Filter Tile Line Y Buffer Address - Attributes" dword="103" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Tile Line U Buffer Address" dword="104" bits="63:0" type="address" />
+    <field name="Deblocker Filter Tile Line U Buffer Address - Attributes" dword="106" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Tile Line V Buffer Address" dword="107" bits="63:0" type="address" />
+    <field name="Deblocker Filter Tile Line V Buffer Address - Attributes" dword="109" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Tile Column Y Buffer Address" dword="110" bits="63:0" type="address" />
+    <field name="Deblocker Filter Tile Column Y Buffer Address - Attributes" dword="112" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Tile Column U Buffer Address" dword="113" bits="63:0" type="address" />
+    <field name="Deblocker Filter Tile Column U Buffer Address - Attributes" dword="115" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Tile Column V Buffer Address" dword="116" bits="63:0" type="address" />
+    <field name="Deblocker Filter Tile Column V Buffer Address - Attributes" dword="118" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDEF Filter Line Buffer Address" dword="119" bits="63:0" type="address" />
+    <field name="CDEF Filter Line Buffer Address - Attributes" dword="121" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDEF Filter Tile Line Buffer Address" dword="128" bits="63:0" type="address" />
+    <field name="CDEF Filter Tile Line Buffer Address - Attributes" dword="130" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDEF Filter Tile Column Buffer Address" dword="137" bits="63:0" type="address" />
+    <field name="CDEF Filter Tile Column Buffer Address - Attributes" dword="139" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDEF Filter Meta Tile Line Buffer Address" dword="140" bits="63:0" type="address" />
+    <field name="CDEF Filter Meta Tile Line Buffer Address - Attributes" dword="142" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDEF Filter Meta Tile Column Buffer Address" dword="143" bits="63:0" type="address" />
+    <field name="CDEF Filter Meta Tile Column Buffer Address - Attributes" dword="145" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDEF Filter Top Left Corner Buffer Address" dword="146" bits="63:0" type="address" />
+    <field name="CDEF Filter Top Left Corner Buffer Address - Attributes" dword="148" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Super Res Tile Column Y Buffer Address" dword="149" bits="63:0" type="address" />
+    <field name="Super Res Tile Column Y Buffer Address - Attributes" dword="151" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Super Res Tile Column U Buffer Address" dword="152" bits="63:0" type="address" />
+    <field name="Super Res Tile Column U Buffer Address - Attributes" dword="154" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Super Res Tile Column V Buffer Address" dword="155" bits="63:0" type="address" />
+    <field name="Super Res Tile Column V Buffer Address - Attributes" dword="157" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Filter Tile Column Y Buffer Address" dword="158" bits="63:0" type="address" />
+    <field name="Loop Restoration Filter Tile Column Y Buffer Address - Attributes" dword="160" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Filter Tile Column U Buffer Address" dword="161" bits="63:0" type="address" />
+    <field name="Loop Restoration Filter Tile Column U Buffer Address - Attributes" dword="163" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Filter Tile Column V Buffer Address" dword="164" bits="63:0" type="address" />
+    <field name="Loop Restoration Filter Tile Column V Buffer Address - Attributes" dword="166" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Decoded Frame Status Error Buffer Address" dword="176" bits="63:0" type="address" />
+    <field name="Decoded Frame Status Error Buffer Address - Attributes" dword="178" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Decoded Block Data Streamout Buffer Address" dword="179" bits="63:0" type="address" />
+    <field name="Decoded Block Data Streamout Buffer Address - Attributes" dword="181" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Original Uncompressed Picture Source Buffer Address" dword="188" bits="63:0" type="address" />
+    <field name="Original Uncompressed Picture Source Buffer Address - Attributes" dword="190" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Downscaled Uncompressed Picture Source Buffer Address" dword="191" bits="63:0" type="address" />
+    <field name="Downscaled Uncompressed Picture Source Buffer Address - Attributes" dword="193" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Tile Size Streamout Buffer Address" dword="194" bits="63:0" type="address" />
+    <field name="Tile Size Streamout Buffer Address - Attributes" dword="196" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Tile Statistics Streamout Buffer Address" dword="197" bits="63:0" type="address" />
+    <field name="Tile Statistics Streamout Buffer Address - Attributes" dword="199" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CU Streamout Buffer Address" dword="200" bits="63:0" type="address" />
+    <field name="CU Streamout Buffer Address - Attributes" dword="202" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="SSE Line Read/Write Buffer Address" dword="203" bits="63:0" type="address" />
+    <field name="SSE Line Read/Write Buffer Address - Attributes" dword="205" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="SSE Tile Line Read/Write Buffer Address" dword="206" bits="63:0" type="address" />
+    <field name="SSE Tile Line Read/Write Buffer Address - Attributes" dword="208" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="PostCDEF Pixels Buffer Address" dword="209" bits="63:0" type="address" />
+    <field name="PostCDEF Pixels Buffer Address - Attributes" dword="211" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+  </instruction>
+  <instruction name="AVP_PIPE_MODE_SELECT" bias="2" length="7" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="5" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Codec Select" dword="1" bits="0:0" type="bool">
+      <value name="Decode" value="0" />
+      <value name="Encode" value="1" />
+    </field>
+    <field name="Pic Status/Error Report Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Frame Reconstruction Disable" dword="1" bits="4:4" type="bool" />
+    <field name="Codec Standard Select" dword="1" bits="7:5" type="uint" default="2" />
+    <field name="Tile Statistics Streamout Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Multi Engine Mode" dword="1" bits="14:13" type="uint">
+      <value name="Single Engine Mode" value="0" />
+      <value name="Left Engine Mode" value="1" />
+      <value name="Right Engine Mode" value="2" />
+      <value name="Middle Engine Mode" value="3" />
+    </field>
+    <field name="Pipe Working Mode" dword="1" bits="16:15" type="uint">
+      <value name="Legacy Single Pipe" value="0" />
+      <value name="Encode Mode" value="2" />
+      <value name="Decode Scalable Mode" value="3" />
+    </field>
+    <field name="Pic Status/Error Report ID" dword="3" bits="31:0" type="uint" />
+    <field name="Source Pixel Prefetch Length" dword="6" bits="4:2" type="uint" />
+    <field name="Source Pixel Prefetch Enable" dword="6" bits="5:5" type="bool" />
+  </instruction>
+  <instruction name="AVP_TILE_CODING" bias="2" length="7" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="5" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="21" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Tile ID" dword="1" bits="11:0" type="uint" />
+    <field name="TG Tile Num" dword="1" bits="23:12" type="uint" />
+    <field name="Tile Group ID" dword="1" bits="31:24" type="uint" />
+    <field name="Tile Column Position in SB Unit" dword="2" bits="9:0" type="uint" />
+    <field name="Tile Row Position in SB Unit" dword="2" bits="25:16" type="uint" />
+    <field name="Tile Width in SB Minus 1" dword="3" bits="5:0" type="uint" />
+    <field name="Tile Height in SB Minus 1" dword="3" bits="25:16" type="uint" />
+    <field name="First Tile in a Frame" dword="4" bits="23:23" type="bool" />
+    <field name="Is Last Tile of Column Flag" dword="4" bits="25:25" type="bool" />
+    <field name="Is Last Tile of Row Flag" dword="4" bits="26:26" type="bool" />
+    <field name="Is Start Tile of Tile Group Flag" dword="4" bits="27:27" type="bool" />
+    <field name="Is End Tile of Tile Group Flag" dword="4" bits="28:28" type="bool" />
+    <field name="Is Last Tile of Frame Flag" dword="4" bits="29:29" type="bool" />
+    <field name="Disable CDF Update Flag" dword="4" bits="30:30" type="bool" />
+    <field name="Disable Frame Context Update Flag" dword="4" bits="31:31" type="bool" />
+    <field name="Number of Active BE Pipes" dword="5" bits="7:0" type="uint" />
+    <field name="Num of Tile Columns in Frame Minus 1" dword="5" bits="21:12" type="uint" />
+    <field name="Num of Tile Rows in Frame Minus 1" dword="5" bits="31:22" type="uint" />
+    <field name="Output Decoded Tile Column Position in SB Unit" dword="6" bits="9:0" type="uint" />
+    <field name="Output Decoded Tile Row Position in SB Unit" dword="6" bits="25:16" type="uint" />
+  </instruction>
+  <instruction name="CFE_STATE" bias="2" length="6" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="CFE SubOpcode Variant" dword="0" bits="17:16" type="uint" default="0" />
+    <field name="CFE SubOpcode" dword="0" bits="23:18" type="uint" default="0" />
+    <field name="Compute Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Scratch Space Buffer" dword="1" bits="31:10" type="uint" />
+    <field name="Number of Walkers" dword="3" bits="5:3" type="uint" />
+    <field name="Fused EU Dispatch" dword="3" bits="6:6" type="bool" />
+    <field name="Single Slice Dispatch CCS Mode" dword="3" bits="13:13" type="bool" />
+    <field name="Over Dispatch Control" dword="3" bits="15:14" type="uint">
+      <value name="Over Dispatch None" value="0" />
+      <value name="Over Dispatch Low" value="1" />
+      <value name="Over Dispatch Normal" value="2" />
+      <value name="Over Dispatch High" value="3" />
+    </field>
+    <field name="Maximum Number of Threads" dword="3" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="COMPUTE_WALKER" bias="2" length="39" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="37" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Workload Partition Enable" dword="0" bits="9:9" type="bool" />
+    <field name="Indirect Parameter Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Systolic Mode Enable" dword="0" bits="14:14" type="bool" />
+    <field name="CFE SubOpcode Variant" dword="0" bits="17:16" type="uint" default="0" />
+    <field name="CFE SubOpcode" dword="0" bits="23:18" type="uint" default="2" />
+    <field name="Compute Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="body" dword="1" bits="1216:0" type="COMPUTE_WALKER_BODY" />
+  </instruction>
+  <instruction name="EXECUTE_INDIRECT_DISPATCH" bias="2" length="44" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="42" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="MOCS" dword="0" bits="15:12" type="uint" nonzero="true" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="1" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="4" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Max Count" dword="1" bits="31:0" type="uint" />
+    <field name="Count Buffer Indirect Enable" dword="2" bits="0:0" type="bool" />
+    <field name="Count Buffer Address" dword="2" bits="63:2" type="address" />
+    <field name="Argument Buffer Start Address" dword="4" bits="63:2" type="address" />
+    <field name="body" dword="6" bits="1215:0" type="COMPUTE_WALKER_BODY" />
+  </instruction>
+  <instruction name="EXECUTE_INDIRECT_DRAW" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="TBIMR Enabled" dword="0" bits="9:9" type="uint" />
+    <field name="Argument Format" dword="0" bits="11:10" type="uint" prefix="XI">
+      <value name="DRAW" value="0" />
+      <value name="DRAWINDEXED" value="1" />
+      <value name="MESH_3D" value="2" />
+      <value name="MESH_1D" value="3" />
+    </field>
+    <field name="MOCS" dword="0" bits="15:12" type="uint" nonzero="true" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="4" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Max Count" dword="1" bits="31:0" type="uint" />
+    <field name="Count Buffer Indirect Enable" dword="2" bits="0:0" type="bool" />
+    <field name="Count Buffer Address" dword="2" bits="63:2" type="address" />
+    <field name="Argument Buffer Start Address" dword="4" bits="63:2" type="address" />
+  </instruction>
+  <instruction name="HCP_FQM_STATE" bias="2" length="34" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="32" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="5" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Intra/Inter" dword="1" bits="0:0" type="uint">
+      <value name="Intra" value="0" />
+      <value name="Inter" value="1" />
+    </field>
+    <field name="SizeID" dword="1" bits="2:1" type="uint" prefix="SZ">
+      <value name="4x4" value="0" />
+      <value name="8x8" value="1" />
+      <value name="16x16" value="2" />
+      <value name="32x32" value="3" />
+    </field>
+    <field name="Color Component" dword="1" bits="4:3" type="uint">
+      <value name="Luma" value="0" />
+      <value name="Chroma Cb" value="1" />
+      <value name="Chroma Cr" value="2" />
+    </field>
+    <field name="FQM DC Value" dword="1" bits="31:16" type="uint" />
+    <group count="128" dword="2" size="8">
+      <field name="Quantizer Matrix 8x8" dword="0" bits="7:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MI_FLUSH_DW" bias="2" length="5" engine="blitter|compute|video">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="3" />
+    <field name="Video Pipeline Cache Invalidate" dword="0" bits="7:7" type="bool" />
+    <field name="Notify Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Flush LLC" dword="0" bits="9:9" type="bool" />
+    <field name="Post-Sync Operation" dword="0" bits="15:14" type="uint">
+      <value name="No Write" value="0" />
+      <value name="Write Immediate Data" value="1" />
+      <value name="Write Timestamp" value="3" />
+    </field>
+    <field name="Flush CCS" dword="0" bits="16:16" type="bool" />
+    <field name="TLB Invalidate" dword="0" bits="18:18" type="bool" />
+    <field name="Store Data Index" dword="0" bits="21:21" type="uint" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="38" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Destination Address Type" dword="1" bits="2:2" type="uint" prefix="DAT">
+      <value name="PPGTT" value="0" />
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Address" dword="1" bits="47:3" type="address" />
+    <field name="Immediate Data" dword="3" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="MI_MATH" bias="2">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="MOCS" dword="0" bits="14:8" type="uint" nonzero="true" />
+    <field name="Predication Enable" dword="0" bits="15:15" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="26" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <group count="0" dword="1" size="32">
+      <field name="Instruction" dword="0" bits="31:0" type="MI_MATH_ALU_INSTRUCTION" />
+    </group>
+  </instruction>
+  <instruction name="MI_REPORT_PERF_COUNT" bias="2" length="4" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="2" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="40" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Use Global GTT" dword="1" bits="0:0" type="bool" />
+    <field name="Core Mode Enable" dword="1" bits="4:4" type="uint" />
+    <field name="Memory Address" dword="1" bits="63:6" type="address" />
+    <field name="Report ID" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MI_SET_PREDICATE" bias="1" length="1">
+    <field name="Predicate Enable" dword="0" bits="3:0" type="uint">
+      <value name="NOOP Never" value="0" />
+      <value name="NOOP On Result2 Clear" value="1" />
+      <value name="NOOP On Result2 Set" value="2" />
+      <value name="NOOP On Result Clear" value="3" />
+      <value name="NOOP On Result Set" value="4" />
+      <value name="NOOP Always" value="15" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="1" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="PIPELINE_SELECT" bias="1" length="1" engine="render|compute">
+    <field name="Pipeline Selection" dword="0" bits="1:0" type="uint">
+      <value name="3D" value="0" />
+      <value name="Media" value="1" />
+      <value name="GPGPU" value="2" />
+    </field>
+    <field name="Media Sampler DOP Clock Gate Enable" dword="0" bits="4:4" type="bool" />
+    <field name="Force Media Awake" dword="0" bits="5:5" type="bool" />
+    <field name="Systolic Mode Enable" dword="0" bits="7:7" type="bool" />
+    <field name="Mask Bits" dword="0" bits="15:8" type="uint" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="1" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+  </instruction>
+  <instruction name="PIPE_CONTROL" bias="2" length="6" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="HDC Pipeline Flush Enable" dword="0" bits="9:9" type="bool" />
+    <field name="L3 Read Only Cache Invalidation Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Untyped Data Port Cache Flush Enable" dword="0" bits="11:11" type="bool" />
+    <field name="CCS Flush Enable" dword="0" bits="13:13" type="bool" />
+    <field name="Workload Partition ID Offset Enable" dword="0" bits="14:14" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Depth Cache Flush Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Stall At Pixel Scoreboard" dword="1" bits="1:1" type="bool" />
+    <field name="State Cache Invalidation Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Constant Cache Invalidation Enable" dword="1" bits="3:3" type="bool" />
+    <field name="VF Cache Invalidation Enable" dword="1" bits="4:4" type="bool" />
+    <field name="DC Flush Enable" dword="1" bits="5:5" type="bool" />
+    <field name="Protected Memory Application ID" dword="1" bits="6:6" type="bool" />
+    <field name="Pipe Control Flush Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Notify Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Indirect State Pointers Disable" dword="1" bits="9:9" type="bool" />
+    <field name="Texture Cache Invalidation Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Instruction Cache Invalidate Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Render Target Cache Flush Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Depth Stall Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Post Sync Operation" dword="1" bits="15:14" type="uint">
+      <value name="No Write" value="0" />
+      <value name="Write Immediate Data" value="1" />
+      <value name="Write PS Depth Count" value="2" />
+      <value name="Write Timestamp" value="3" />
+    </field>
+    <field name="Generic Media State Clear" dword="1" bits="16:16" type="bool" />
+    <field name="PSS Stall Sync Enable" dword="1" bits="17:17" type="bool" />
+    <field name="TLB Invalidate" dword="1" bits="18:18" type="bool" />
+    <field name="Depth Stall Sync Enable" dword="1" bits="19:19" type="bool" />
+    <field name="Command Streamer Stall Enable" dword="1" bits="20:20" type="bool" />
+    <field name="Store Data Index" dword="1" bits="21:21" type="uint" />
+    <field name="Protected Memory Enable" dword="1" bits="22:22" type="bool" />
+    <field name="LRI Post Sync Operation" dword="1" bits="23:23" type="uint">
+      <value name="No LRI Operation" value="0" />
+      <value name="MMIO Write Immediate Data" value="1" />
+    </field>
+    <field name="Destination Address Type" dword="1" bits="24:24" type="uint" prefix="DAT">
+      <value name="PPGTT" value="0" />
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="AMFS Flush Enable" dword="1" bits="25:25" type="bool" />
+    <field name="Flush LLC" dword="1" bits="26:26" type="bool" />
+    <field name="Protected Memory Disable" dword="1" bits="27:27" type="bool" />
+    <field name="Tile Cache Flush Enable" dword="1" bits="28:28" type="bool" />
+    <field name="Command Cache Invalidate Enable" dword="1" bits="29:29" type="bool" />
+    <field name="L3 Fabric Flush" dword="1" bits="30:30" type="bool" />
+    <field name="TBIMR Force Batch Closure" dword="1" bits="31:31" type="uint">
+      <value name="No Batch Closure" value="0" />
+      <value name="Close Batch" value="1" />
+    </field>
+    <field name="Address" dword="2" bits="47:2" type="address" />
+    <field name="Immediate Data" dword="4" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="STATE_BASE_ADDRESS" bias="2" length="22" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="20" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="1" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="General State Base Address Modify Enable" dword="1" bits="0:0" type="bool" />
+    <field name="General State MOCS" dword="1" bits="10:4" type="uint" nonzero="true" />
+    <field name="General State Base Address" dword="1" bits="63:12" type="address" />
+    <field name="Stateless Data Port Access MOCS" dword="3" bits="22:16" type="uint" nonzero="true" />
+    <field name="L1 Cache Control" dword="3" bits="25:23" type="uint" prefix="L1CC">
+      <value name="WBP" value="0" dont_use="1" />
+      <value name="UC" value="1" dont_use="1" />
+      <value name="WB" value="2" />
+      <value name="WT" value="3" />
+      <value name="WS" value="4" />
+    </field>
+    <field name="Surface State Base Address Modify Enable" dword="4" bits="0:0" type="bool" />
+    <field name="Surface State MOCS" dword="4" bits="10:4" type="uint" nonzero="true" />
+    <field name="Surface State Base Address" dword="4" bits="63:12" type="address" />
+    <field name="Dynamic State Base Address Modify Enable" dword="6" bits="0:0" type="bool" />
+    <field name="Dynamic State MOCS" dword="6" bits="10:4" type="uint" nonzero="true" />
+    <field name="Dynamic State Base Address" dword="6" bits="63:12" type="address" />
+    <field name="Indirect Object Base Address Modify Enable" dword="8" bits="0:0" type="bool" />
+    <field name="Indirect Object MOCS" dword="8" bits="10:4" type="uint" nonzero="true" />
+    <field name="Indirect Object Base Address" dword="8" bits="63:12" type="address" />
+    <field name="Instruction Base Address Modify Enable" dword="10" bits="0:0" type="bool" />
+    <field name="Instruction MOCS" dword="10" bits="10:4" type="uint" nonzero="true" />
+    <field name="Instruction Base Address" dword="10" bits="63:12" type="address" />
+    <field name="General State Buffer Size Modify Enable" dword="12" bits="0:0" type="bool" />
+    <field name="General State Buffer Size" dword="12" bits="31:12" type="uint" />
+    <field name="Dynamic State Buffer Size Modify Enable" dword="13" bits="0:0" type="bool" />
+    <field name="Dynamic State Buffer Size" dword="13" bits="31:12" type="uint" />
+    <field name="Indirect Object Buffer Size Modify Enable" dword="14" bits="0:0" type="bool" />
+    <field name="Indirect Object Buffer Size" dword="14" bits="31:12" type="uint" />
+    <field name="Instruction Buffer size Modify Enable" dword="15" bits="0:0" type="bool" />
+    <field name="Instruction Buffer Size" dword="15" bits="31:12" type="uint" />
+    <field name="Bindless Surface State Base Address Modify Enable" dword="16" bits="0:0" type="bool" />
+    <field name="Bindless Surface State MOCS" dword="16" bits="10:4" type="uint" nonzero="true" />
+    <field name="Bindless Surface State Base Address" dword="16" bits="63:12" type="address" />
+    <field name="Bindless Surface State Size" dword="18" bits="31:0" type="uint" />
+    <field name="Bindless Sampler State Base Address Modify Enable" dword="19" bits="0:0" type="bool" />
+    <field name="Bindless Sampler State MOCS" dword="19" bits="10:4" type="uint" nonzero="true" />
+    <field name="Bindless Sampler State Base Address" dword="19" bits="63:12" type="address" />
+    <field name="Bindless Sampler State Buffer Size" dword="21" bits="31:12" type="uint" />
+  </instruction>
+  <instruction name="STATE_COMPUTE_MODE" bias="2" length="2" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="5" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Z Pass Async Compute Thread Limit" dword="1" bits="2:0" type="uint" prefix="ZPACTL">
+      <value name="Max 60" value="0" />
+      <value name="Max 64" value="1" />
+      <value name="Max 56" value="2" />
+      <value name="Max 48" value="3" />
+    </field>
+    <field name="Force Non-Coherent DG2" dword="1" bits="4:3" type="uint">
+      <value name="Force Disabled" value="0" />
+      <value name="Force CPU Non-Coherent" value="1" />
+      <value name="Force GPU Non-Coherent" value="2" />
+    </field>
+    <field name="Z Async Throttle settings" dword="1" bits="4:3" type="uint" prefix="ZATS">
+      <value name="Defer to Pixel Async Compute Thread Limit" value="0" />
+      <value name="Max 32" value="1" />
+      <value name="Max 40" value="2" />
+      <value name="Max 48" value="3" />
+    </field>
+    <field name="Fast Clear Disabled on Compressed Surface" dword="1" bits="5:5" type="bool" />
+    <field name="Disable SLM Read Merge Optimization" dword="1" bits="6:6" type="bool" />
+    <field name="Pixel Async Compute Thread Limit" dword="1" bits="9:7" type="uint" prefix="PACTL">
+      <value name="Disabled" value="0" />
+      <value name="Max 2" value="1" />
+      <value name="Max 8" value="2" />
+      <value name="Max 16" value="3" />
+      <value name="Max 24" value="4" />
+      <value name="Max 32" value="5" />
+      <value name="Max 40" value="6" />
+      <value name="Max 48" value="7" />
+    </field>
+    <field name="Disable Atomic on Clear Data" dword="1" bits="11:11" type="bool" />
+    <field name="Disable L1 Invalidate for non-L1-cacheable Writes" dword="1" bits="13:13" type="bool" />
+    <field name="Large GRF Mode" dword="1" bits="15:15" type="bool" />
+    <field name="Z Pass Async Compute Thread Limit Mask" dword="1" bits="18:16" type="uint" />
+    <field name="Mask1" dword="1" bits="31:16" type="uint" />
+    <field name="Force Non-Coherent DG2 Mask" dword="1" bits="20:19" type="uint" />
+    <field name="Z Async Throttle settings Mask" dword="1" bits="20:19" type="uint" />
+    <field name="Fast Clear Disabled on Compressed Surface Mask" dword="1" bits="21:21" type="bool" />
+    <field name="Disable SLM Read Merge Optimization Mask" dword="1" bits="22:22" type="bool" />
+    <field name="Pixel Async Compute Thread Limit Mask" dword="1" bits="25:23" type="uint" />
+    <field name="Disable Atomic on Clear Data Mask" dword="1" bits="27:27" type="bool" />
+    <field name="Disable L1 Invalidate for non-L1-cacheable Writes Mask" dword="1" bits="29:29" type="bool" />
+    <field name="Large GRF Mode Mask" dword="1" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="STATE_SIP" bias="2" length="3" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="2" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="System Instruction Pointer" dword="1" bits="63:4" type="offset" />
+  </instruction>
+  <instruction name="XY_BLOCK_COPY_BLT" bias="2" length="22" engine="blitter">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="20" />
+    <field name="Special Mode of Operation" dword="0" bits="13:12" type="uint">
+      <value name="NONE" value="0" />
+      <value name="FULL_RESOLVE" value="1" />
+      <value name="PARTIAL_RESOLVE" value="2" />
+    </field>
+    <field name="Color Depth" dword="0" bits="21:19" type="uint" prefix="XY_BPP">
+      <value name="8_BIT" value="0" />
+      <value name="16_BIT" value="1" />
+      <value name="32_BIT" value="2" />
+      <value name="64_BIT" value="3" />
+      <value name="96_BIT" value="4" />
+      <value name="128_BIT" value="5" />
+    </field>
+    <field name="Opcode" dword="0" bits="28:22" type="uint" default="0x41" />
+    <field name="Client" dword="0" bits="31:29" type="uint" default="2" />
+    <field name="Destination Pitch" dword="1" bits="17:0" type="uint" />
+    <field name="Destination Auxiliary Surface Mode" dword="1" bits="20:18" type="uint" prefix="XY_AUX">
+      <value name="NONE" value="0" />
+      <value name="CCS_E" value="5" />
+    </field>
+    <field name="Destination MOCS" dword="1" bits="27:21" type="uint" nonzero="true" />
+    <field name="Destination Control Surface Type" dword="1" bits="28:28" type="uint" />
+    <field name="Destination Compression Enable" dword="1" bits="29:29" type="bool" />
+    <field name="Destination Tiling" dword="1" bits="31:30" type="uint" prefix="XY_TILE">
+      <value name="LINEAR" value="0" />
+      <value name="X" value="1" />
+      <value name="4" value="2" />
+      <value name="64" value="3" />
+    </field>
+    <field name="Destination X1" dword="2" bits="15:0" type="int" />
+    <field name="Destination Y1" dword="2" bits="31:16" type="int" />
+    <field name="Destination X2" dword="3" bits="15:0" type="int" />
+    <field name="Destination Y2" dword="3" bits="31:16" type="int" />
+    <field name="Destination Base Address" dword="4" bits="63:0" type="address" />
+    <field name="Destination X Offset" dword="6" bits="13:0" type="uint" />
+    <field name="Destination Y Offset" dword="6" bits="29:16" type="uint" />
+    <field name="Destination Target Memory" dword="6" bits="31:31" type="uint" prefix="XY_MEM">
+      <value name="LOCAL" value="0" />
+      <value name="SYSTEM" value="1" />
+    </field>
+    <field name="Source X1" dword="7" bits="15:0" type="int" />
+    <field name="Source Y1" dword="7" bits="31:16" type="int" />
+    <field name="Source Pitch" dword="8" bits="17:0" type="uint" />
+    <field name="Source Auxiliary Surface Mode" dword="8" bits="20:18" type="uint" prefix="XY">
+      <value name="NONE" value="0" />
+      <value name="CCS_E" value="5" />
+    </field>
+    <field name="Source MOCS" dword="8" bits="27:21" type="uint" nonzero="true" />
+    <field name="Source Control Surface Type" dword="8" bits="28:28" type="uint" />
+    <field name="Source Compression Enable" dword="8" bits="29:29" type="bool" />
+    <field name="Source Tiling" dword="8" bits="31:30" type="uint" prefix="XY_TILE">
+      <value name="LINEAR" value="0" />
+      <value name="X" value="1" />
+      <value name="4" value="2" />
+      <value name="64" value="3" />
+    </field>
+    <field name="Source Base Address" dword="9" bits="63:0" type="address" />
+    <field name="Source X Offset" dword="11" bits="13:0" type="uint" />
+    <field name="Source Y Offset" dword="11" bits="29:16" type="uint" />
+    <field name="Source Target Memory" dword="11" bits="31:31" type="uint" prefix="XY_MEM">
+      <value name="LOCAL" value="0" />
+      <value name="SYSTEM" value="1" />
+    </field>
+    <field name="Source Compression Format" dword="12" bits="4:0" type="uint" />
+    <field name="Source Clear Value Enable" dword="12" bits="5:5" type="bool" />
+    <field name="Source Clear Address" dword="12" bits="47:6" type="address" />
+    <field name="Destination Compression Format" dword="14" bits="4:0" type="uint" />
+    <field name="Destination Clear Value Enable" dword="14" bits="5:5" type="bool" />
+    <field name="Destination Clear Address" dword="14" bits="47:6" type="address" />
+    <field name="Destination Surface Height" dword="16" bits="13:0" type="uint" />
+    <field name="Destination Surface Width" dword="16" bits="27:14" type="uint" />
+    <field name="Destination Surface Type" dword="16" bits="31:29" type="uint" prefix="XY_SURFTYPE">
+      <value name="1D" value="0" />
+      <value name="2D" value="1" />
+      <value name="3D" value="2" />
+      <value name="CUBE" value="3" />
+    </field>
+    <field name="Destination LOD" dword="17" bits="3:0" type="uint" />
+    <field name="Destination Surface QPitch" dword="17" bits="18:4" type="uint" />
+    <field name="Destination Surface Depth" dword="17" bits="31:21" type="uint" />
+    <field name="Destination Horizontal Align" dword="18" bits="1:0" type="uint">
+      <value name="HALIGN_16" value="0" />
+      <value name="HALIGN_32" value="1" />
+      <value name="HALIGN_64" value="2" />
+      <value name="HALIGN_128" value="3" />
+    </field>
+    <field name="Destination Vertical Align" dword="18" bits="4:3" type="uint">
+      <value name="VALIGN_4" value="1" />
+      <value name="VALIGN_8" value="2" />
+      <value name="VALIGN_16" value="3" />
+    </field>
+    <field name="Destination Mip Tail Start LOD" dword="18" bits="11:8" type="uint" />
+    <field name="Destination Depth/Stencil Resource" dword="18" bits="18:18" type="bool" />
+    <field name="Destination Array Index" dword="18" bits="31:21" type="uint" />
+    <field name="Source Surface Height" dword="19" bits="13:0" type="uint" />
+    <field name="Source Surface Width" dword="19" bits="27:14" type="uint" />
+    <field name="Source Surface Type" dword="19" bits="31:29" type="uint" prefix="XY_SURFTYPE">
+      <value name="1D" value="0" />
+      <value name="2D" value="1" />
+      <value name="3D" value="2" />
+      <value name="CUBE" value="3" />
+    </field>
+    <field name="Source LOD" dword="20" bits="3:0" type="uint" />
+    <field name="Source Surface QPitch" dword="20" bits="18:4" type="uint" />
+    <field name="Source Surface Depth" dword="20" bits="31:21" type="uint" />
+    <field name="Source Horizontal Align" dword="21" bits="1:0" type="uint">
+      <value name="HALIGN_16" value="0" />
+      <value name="HALIGN_32" value="1" />
+      <value name="HALIGN_64" value="2" />
+      <value name="HALIGN_128" value="3" />
+    </field>
+    <field name="Source Vertical Align" dword="21" bits="4:3" type="uint">
+      <value name="VALIGN_4" value="1" />
+      <value name="VALIGN_8" value="2" />
+      <value name="VALIGN_16" value="3" />
+    </field>
+    <field name="Source Mip Tail Start LOD" dword="21" bits="11:8" type="uint" />
+    <field name="Source Depth/Stencil Resource" dword="21" bits="18:18" type="bool" />
+    <field name="Source Array Index" dword="21" bits="31:21" type="uint" />
+  </instruction>
+  <instruction name="XY_FAST_COLOR_BLT" bias="2" length="16" engine="blitter">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="14" />
+    <field name="Special Mode of Operation" dword="0" bits="13:12" type="uint">
+      <value name="NONE" value="0" />
+      <value name="FAST_CLEAR_1" value="1" />
+      <value name="FAST_CLEAR_0" value="2" />
+    </field>
+    <field name="Color Depth" dword="0" bits="21:19" type="uint" prefix="XY_BPP">
+      <value name="8_BIT" value="0" />
+      <value name="16_BIT" value="1" />
+      <value name="32_BIT" value="2" />
+      <value name="64_BIT" value="3" />
+      <value name="96_BIT" value="4" />
+      <value name="128_BIT" value="5" />
+    </field>
+    <field name="Opcode" dword="0" bits="28:22" type="uint" default="0x44" />
+    <field name="Client" dword="0" bits="31:29" type="uint" default="2" />
+    <field name="Destination Pitch" dword="1" bits="17:0" type="uint" />
+    <field name="Destination Auxiliary Surface Mode" dword="1" bits="20:18" type="uint" prefix="XY_AUX">
+      <value name="NONE" value="0" />
+      <value name="CCS_E" value="5" />
+    </field>
+    <field name="Destination MOCS" dword="1" bits="27:21" type="uint" nonzero="true" />
+    <field name="Destination Control Surface Type" dword="1" bits="28:28" type="uint" />
+    <field name="Destination Compression Enable" dword="1" bits="29:29" type="bool" />
+    <field name="Destination Tiling" dword="1" bits="31:30" type="uint" prefix="XY_TILE">
+      <value name="LINEAR" value="0" />
+      <value name="X" value="1" />
+      <value name="4" value="2" />
+      <value name="64" value="3" />
+    </field>
+    <field name="Destination X1" dword="2" bits="15:0" type="int" />
+    <field name="Destination Y1" dword="2" bits="31:16" type="int" />
+    <field name="Destination X2" dword="3" bits="15:0" type="int" />
+    <field name="Destination Y2" dword="3" bits="31:16" type="int" />
+    <field name="Destination Base Address" dword="4" bits="63:0" type="address" />
+    <field name="Destination X Offset" dword="6" bits="13:0" type="uint" />
+    <field name="Destination Y Offset" dword="6" bits="29:16" type="uint" />
+    <field name="Destination Target Memory" dword="6" bits="31:31" type="uint" prefix="XY_MEM">
+      <value name="LOCAL" value="0" />
+      <value name="SYSTEM" value="1" />
+    </field>
+    <group count="4" dword="7" size="32">
+      <field name="Fill Color" dword="0" bits="31:0" type="uint" />
+    </group>
+    <field name="Destination Compression Format" dword="11" bits="4:0" type="uint" />
+    <field name="Destination Clear Value Enable" dword="11" bits="5:5" type="bool" />
+    <field name="Destination Clear Address" dword="11" bits="47:6" type="address" />
+    <field name="Destination Surface Height" dword="13" bits="13:0" type="uint" />
+    <field name="Destination Surface Width" dword="13" bits="27:14" type="uint" />
+    <field name="Destination Surface Type" dword="13" bits="31:29" type="uint" prefix="XY_SURFTYPE">
+      <value name="1D" value="0" />
+      <value name="2D" value="1" />
+      <value name="3D" value="2" />
+      <value name="CUBE" value="3" />
+    </field>
+    <field name="Destination LOD" dword="14" bits="3:0" type="uint" />
+    <field name="Destination Surface QPitch" dword="14" bits="18:4" type="uint" />
+    <field name="Destination Surface Depth" dword="14" bits="31:21" type="uint" />
+    <field name="Destination Horizontal Align" dword="15" bits="1:0" type="uint">
+      <value name="HALIGN_16" value="0" />
+      <value name="HALIGN_32" value="1" />
+      <value name="HALIGN_64" value="2" />
+      <value name="HALIGN_128" value="3" />
+    </field>
+    <field name="Destination Vertical Align" dword="15" bits="4:3" type="uint">
+      <value name="VALIGN_4" value="1" />
+      <value name="VALIGN_8" value="2" />
+      <value name="VALIGN_16" value="3" />
+    </field>
+    <field name="Destination Mip Tail Start LOD" dword="15" bits="11:8" type="uint" />
+    <field name="Destination Depth/Stencil Resource" dword="15" bits="18:18" type="bool" />
+    <field name="Destination Array Index" dword="15" bits="31:21" type="uint" />
+  </instruction>
+  <register name="BCS_AUX_TABLE_BASE_ADDR" length="2" num="0x4240">
+    <field name="Address" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="BCS_CCS_AUX_INV" length="1" num="0x4248">
+    <field name="Aux Inv" dword="0" bits="0:0" type="bool" />
+  </register>
+  <register name="CCS_INSTDONE" length="1" num="0x1206c">
+    <field name="Ring Enable" dword="0" bits="0:0" type="bool" />
+    <field name="VFE Done" dword="0" bits="16:16" type="bool" />
+    <field name="TSG Done" dword="0" bits="17:17" type="bool" />
+    <field name="CS Done" dword="0" bits="21:21" type="bool" />
+  </register>
+  <register name="CHICKEN_RASTER_1" length="1" num="0x6204">
+    <field name="AA Line Quality Fix" dword="0" bits="5:5" type="bool" />
+    <field name="AA Line Quality Fix Mask" dword="0" bits="21:21" type="bool" />
+  </register>
+  <register name="CHICKEN_RASTER_2" length="1" num="0x6208">
+    <field name="TBIMR Batch Size Override" dword="0" bits="1:1" type="bool" />
+    <field name="TBIMR Open Batch Enable" dword="0" bits="4:4" type="bool" />
+    <field name="TBIMR Fast Clip" dword="0" bits="5:5" type="bool" />
+    <field name="TBIMR Batch Size Override Mask" dword="0" bits="17:17" type="bool" />
+    <field name="TBIMR Open Batch Enable Mask" dword="0" bits="20:20" type="bool" />
+    <field name="TBIMR Fast Clip Mask" dword="0" bits="21:21" type="bool" />
+  </register>
+  <register name="COMMON_SLICE_CHICKEN1" length="1" num="0x7010">
+    <field name="HIZ Plane Optimization disable bit" dword="0" bits="9:9" type="bool" />
+    <field name="HIZ Plane Optimization disable bit Mask" dword="0" bits="25:25" type="bool" />
+  </register>
+  <register name="INSTDONE_GEOM" length="1" num="0x666c">
+    <field name="VFL Done" dword="0" bits="1:1" type="bool" />
+    <field name="VS Done" dword="0" bits="2:2" type="bool" />
+    <field name="HS Done" dword="0" bits="3:3" type="bool" />
+    <field name="TE Done" dword="0" bits="4:4" type="bool" />
+    <field name="DS Done" dword="0" bits="5:5" type="bool" />
+    <field name="GS Done" dword="0" bits="6:6" type="bool" />
+    <field name="SOL Done" dword="0" bits="7:7" type="bool" />
+    <field name="CL Done" dword="0" bits="8:8" type="bool" />
+    <field name="SF Done" dword="0" bits="9:9" type="bool" />
+    <field name="TDG1 Done" dword="0" bits="11:11" type="bool" />
+    <field name="URBM Done" dword="0" bits="13:13" type="bool" />
+    <field name="SVG Done" dword="0" bits="14:14" type="bool" />
+    <field name="TSG0 Done" dword="0" bits="17:17" type="bool" />
+    <field name="SDE Done" dword="0" bits="22:22" type="bool" />
+  </register>
+  <register name="L3SQCREG5" length="1" num="0xB158">
+    <field name="L3 Cache Partial Write Merge Timer Initial Value" dword="0" bits="9:0" type="uint" />
+    <field name="Compressible Partial Write Merge Enable" dword="0" bits="21:21" type="uint" />
+    <field name="Coherent Partial Write Merge Enable" dword="0" bits="22:22" type="uint" />
+    <field name="Cross-Tile Partial Write Merge Enable" dword="0" bits="23:23" type="uint" />
+  </register>
+  <register name="MESH_INVOCATION_COUNT" length="2" num="0x26E0">
+    <field name="MESH Invocation Counter" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="MESH_PRIMITIVE_COUNT" length="2" num="0x26D8">
+    <field name="MESH Primitive Counter" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="ROW_INSTDONE" length="1" num="0xe164">
+    <field name="BC Done" dword="0" bits="0:0" type="bool" />
+    <field name="PSD Done" dword="0" bits="1:1" type="bool" />
+    <field name="TDP Done" dword="0" bits="2:2" type="bool" />
+    <field name="DAPR Done" dword="0" bits="3:3" type="bool" />
+    <field name="CPSS Done" dword="0" bits="4:4" type="bool" />
+    <field name="RT DONE RENDER" dword="0" bits="5:5" type="bool" />
+    <field name="TDL Done" dword="0" bits="6:6" type="bool" />
+    <field name="EU00 done SS1" dword="0" bits="7:7" type="bool" />
+    <field name="EU01 done SS1" dword="0" bits="8:8" type="bool" />
+    <field name="EU02 done SS1" dword="0" bits="9:9" type="bool" />
+    <field name="EU03 done SS1" dword="0" bits="10:10" type="bool" />
+    <field name="MA0 done SS1" dword="0" bits="11:11" type="bool" />
+    <field name="IC Done" dword="0" bits="12:12" type="bool" />
+    <field name="BTD DONE RENDER" dword="0" bits="13:13" type="bool" />
+    <field name="RT DONE COMPUTE" dword="0" bits="14:14" type="bool" />
+    <field name="MA0 Done SS0" dword="0" bits="15:15" type="bool" />
+    <field name="EU00 Done SS0" dword="0" bits="16:16" type="bool" />
+    <field name="EU01 Done SS0" dword="0" bits="17:17" type="bool" />
+    <field name="EU02 Done SS0" dword="0" bits="18:18" type="bool" />
+    <field name="EU03 Done SS0" dword="0" bits="19:19" type="bool" />
+    <field name="BTD DONE COMPUTE" dword="0" bits="20:20" type="bool" />
+    <field name="EU10 Done SS0" dword="0" bits="21:21" type="bool" />
+    <field name="EU11 Done SS0" dword="0" bits="22:22" type="bool" />
+    <field name="EU12 Done SS0" dword="0" bits="23:23" type="bool" />
+    <field name="EU13 Done SS0" dword="0" bits="24:24" type="bool" />
+    <field name="TSL Done" dword="0" bits="26:26" type="bool" />
+    <field name="EU10 Done SS1" dword="0" bits="27:27" type="bool" />
+    <field name="EU11 Done SS1" dword="0" bits="28:28" type="bool" />
+    <field name="EU12 Done SS1" dword="0" bits="29:29" type="bool" />
+    <field name="EU13 Done SS1" dword="0" bits="30:30" type="bool" />
+  </register>
+  <register name="SAMPLER_INSTDONE" length="1" num="0xe160">
+    <field name="SI Done" dword="0" bits="0:0" type="bool" />
+    <field name="SVSM ADAPTER Done" dword="0" bits="1:1" type="bool" />
+    <field name="SVSM ARB Done" dword="0" bits="2:2" type="bool" />
+    <field name="SVSM Done" dword="0" bits="3:3" type="bool" />
+    <field name="PL Done" dword="0" bits="4:4" type="bool" />
+    <field name="DG Done" dword="0" bits="5:5" type="bool" />
+    <field name="SSLA Done" dword="0" bits="6:6" type="bool" />
+    <field name="ST ARB Done" dword="0" bits="7:7" type="bool" />
+    <field name="ST Done" dword="0" bits="8:8" type="bool" />
+    <field name="FT Done" dword="0" bits="9:9" type="bool" />
+    <field name="MT Done" dword="0" bits="11:11" type="bool" />
+    <field name="DM Done" dword="0" bits="12:12" type="bool" />
+    <field name="BDM Done" dword="0" bits="13:13" type="bool" />
+    <field name="SC Done" dword="0" bits="14:14" type="bool" />
+    <field name="FL Done" dword="0" bits="15:15" type="bool" />
+    <field name="SO Done" dword="0" bits="16:16" type="bool" />
+    <field name="LSC L1BANK0 Idle" dword="0" bits="18:18" type="bool" />
+    <field name="LSC L1BANK1 Idle" dword="0" bits="19:19" type="bool" />
+    <field name="LSC L1BANK2 Idle" dword="0" bits="20:20" type="bool" />
+    <field name="LSC L1BANK3 Idle" dword="0" bits="21:21" type="bool" />
+    <field name="LSC SEQ0 Idle" dword="0" bits="22:22" type="bool" />
+    <field name="LSC SEQ1 Idle" dword="0" bits="23:23" type="bool" />
+    <field name="LSC SEQ2 Idle" dword="0" bits="24:24" type="bool" />
+    <field name="LSC SEQ3 Idle" dword="0" bits="25:25" type="bool" />
+    <field name="LSC SEQ INTF Idle" dword="0" bits="26:26" type="bool" />
+    <field name="LSC L3 INTF Idle" dword="0" bits="27:27" type="bool" />
+    <field name="VMEM SOARB0 Done" dword="0" bits="28:28" type="bool" />
+    <field name="VMEM SOARB1 Done" dword="0" bits="29:29" type="bool" />
+    <field name="VMEM L3REQARB0 Done" dword="0" bits="30:30" type="bool" />
+    <field name="VMEM L3REQARB1 Done" dword="0" bits="31:31" type="bool" />
+  </register>
+  <register name="SC_INSTDONE" length="1" num="0x7100">
+    <field name="SVL Done" dword="0" bits="0:0" type="bool" />
+    <field name="WMFE Done" dword="0" bits="1:1" type="bool" />
+    <field name="WMBE Done" dword="0" bits="2:2" type="bool" />
+    <field name="HIZ Done" dword="0" bits="3:3" type="bool" />
+    <field name="IZFE Done" dword="0" bits="5:5" type="bool" />
+    <field name="SBE Done" dword="0" bits="6:6" type="bool" />
+    <field name="RCC Done" dword="0" bits="9:9" type="bool" />
+    <field name="RCPBE Done" dword="0" bits="10:10" type="bool" />
+    <field name="RCPFE Done" dword="0" bits="11:11" type="bool" />
+    <field name="DAPB Done" dword="0" bits="12:12" type="bool" />
+    <field name="DAPRBE Done" dword="0" bits="13:13" type="bool" />
+    <field name="SARB Done" dword="0" bits="15:15" type="bool" />
+    <field name="DC0 Done" dword="0" bits="16:16" type="bool" />
+    <field name="DC1 Done" dword="0" bits="17:17" type="bool" />
+    <field name="DC2 Done" dword="0" bits="18:18" type="bool" />
+    <field name="DC3 Done" dword="0" bits="19:19" type="bool" />
+    <field name="GW0 Done" dword="0" bits="20:20" type="bool" />
+    <field name="GW1 Done" dword="0" bits="21:21" type="bool" />
+    <field name="GW2 Done" dword="0" bits="22:22" type="bool" />
+    <field name="GW3 Done" dword="0" bits="23:23" type="bool" />
+    <field name="TDC Done" dword="0" bits="24:24" type="bool" />
+    <field name="SFBE Done" dword="0" bits="25:25" type="bool" />
+    <field name="PSS Done" dword="0" bits="26:26" type="bool" />
+    <field name="AMFS Done" dword="0" bits="27:27" type="bool" />
+  </register>
+  <register name="SC_INSTDONE_EXTRA" length="1" num="0x7104">
+    <field name="RCC1 Done" dword="0" bits="9:9" type="bool" />
+    <field name="RCPBE1 Done" dword="0" bits="10:10" type="bool" />
+    <field name="RCPFE1 Done" dword="0" bits="11:11" type="bool" />
+    <field name="DAPB1 Done" dword="0" bits="12:12" type="bool" />
+    <field name="DAPRBE1 Done" dword="0" bits="13:13" type="bool" />
+    <field name="DC4 Done" dword="0" bits="16:16" type="bool" />
+    <field name="DC5 Done" dword="0" bits="17:17" type="bool" />
+    <field name="DC6 Done" dword="0" bits="18:18" type="bool" />
+    <field name="DC7 Done" dword="0" bits="19:19" type="bool" />
+    <field name="GW4 Done" dword="0" bits="20:20" type="bool" />
+    <field name="GW5 Done" dword="0" bits="21:21" type="bool" />
+    <field name="GW6 Done" dword="0" bits="22:22" type="bool" />
+    <field name="GW7 Done" dword="0" bits="23:23" type="bool" />
+    <field name="TDC1 Done" dword="0" bits="24:24" type="bool" />
+    <field name="PSS Done" dword="0" bits="26:26" type="bool" />
+  </register>
+  <register name="SC_INSTDONE_EXTRA2" length="1" num="0x7108">
+    <field name="RCC2 Done" dword="0" bits="9:9" type="bool" />
+    <field name="RCPBE2 Done" dword="0" bits="10:10" type="bool" />
+    <field name="RCPFE2 Done" dword="0" bits="11:11" type="bool" />
+    <field name="DAPB2 Done" dword="0" bits="12:12" type="bool" />
+    <field name="DAPRBE2 Done" dword="0" bits="13:13" type="bool" />
+  </register>
+  <register name="TASK_INVOCATION_COUNT" length="2" num="0x26E8">
+    <field name="TASK Invocation Counter" dword="0" bits="63:0" type="uint" />
+  </register>
+</genxml>
diff --git a/lib/genxml/gen40.xml b/lib/genxml/gen40.xml
new file mode 100644
index 000000000..2d4b83df7
--- /dev/null
+++ b/lib/genxml/gen40.xml
@@ -0,0 +1,1012 @@
+<?xml version='1.0' encoding='utf-8'?>
+<genxml name="BRW" gen="4">
+  <enum name="3D_Color_Buffer_Blend_Factor" prefix="BLENDFACTOR">
+    <value name="ONE" value="1" />
+    <value name="SRC_COLOR" value="2" />
+    <value name="SRC_ALPHA" value="3" />
+    <value name="DST_ALPHA" value="4" />
+    <value name="DST_COLOR" value="5" />
+    <value name="SRC_ALPHA_SATURATE" value="6" />
+    <value name="CONST_COLOR" value="7" />
+    <value name="CONST_ALPHA" value="8" />
+    <value name="SRC1_COLOR" value="9" />
+    <value name="SRC1_ALPHA" value="10" />
+    <value name="ZERO" value="17" />
+    <value name="INV_SRC_COLOR" value="18" />
+    <value name="INV_SRC_ALPHA" value="19" />
+    <value name="INV_DST_ALPHA" value="20" />
+    <value name="INV_DST_COLOR" value="21" />
+    <value name="INV_CONST_COLOR" value="23" />
+    <value name="INV_CONST_ALPHA" value="24" />
+    <value name="INV_SRC1_COLOR" value="25" />
+    <value name="INV_SRC1_ALPHA" value="26" />
+  </enum>
+  <enum name="3D_Color_Buffer_Blend_Function" prefix="BLENDFUNCTION">
+    <value name="ADD" value="0" />
+    <value name="SUBTRACT" value="1" />
+    <value name="REVERSE_SUBTRACT" value="2" />
+    <value name="MIN" value="3" />
+    <value name="MAX" value="4" />
+  </enum>
+  <enum name="3D_Compare_Function" prefix="COMPAREFUNCTION">
+    <value name="ALWAYS" value="0" />
+    <value name="NEVER" value="1" />
+    <value name="LESS" value="2" />
+    <value name="EQUAL" value="3" />
+    <value name="LEQUAL" value="4" />
+    <value name="GREATER" value="5" />
+    <value name="NOTEQUAL" value="6" />
+    <value name="GEQUAL" value="7" />
+  </enum>
+  <enum name="3D_Logic_Op_Function" prefix="LOGICOP">
+    <value name="CLEAR" value="0" />
+    <value name="NOR" value="1" />
+    <value name="AND_INVERTED" value="2" />
+    <value name="COPY_INVERTED" value="3" />
+    <value name="AND_REVERSE" value="4" />
+    <value name="INVERT" value="5" />
+    <value name="XOR" value="6" />
+    <value name="NAND" value="7" />
+    <value name="AND" value="8" />
+    <value name="EQUIV" value="9" />
+    <value name="NOOP" value="10" />
+    <value name="OR_INVERTED" value="11" />
+    <value name="COPY" value="12" />
+    <value name="OR_REVERSE" value="13" />
+    <value name="OR" value="14" />
+    <value name="SET" value="15" />
+  </enum>
+  <enum name="3D_Prim_Topo_Type" prefix="3DPRIM">
+    <value name="POINTLIST" value="1" />
+    <value name="LINELIST" value="2" />
+    <value name="LINESTRIP" value="3" />
+    <value name="TRILIST" value="4" />
+    <value name="TRISTRIP" value="5" />
+    <value name="TRIFAN" value="6" />
+    <value name="QUADLIST" value="7" />
+    <value name="QUADSTRIP" value="8" />
+    <value name="LINELIST_ADJ" value="9" />
+    <value name="LINESTRIP_ADJ" value="10" />
+    <value name="TRILIST_ADJ" value="11" />
+    <value name="TRISTRIP_ADJ" value="12" />
+    <value name="TRISTRIP_REVERSE" value="13" />
+    <value name="POLYGON" value="14" />
+    <value name="RECTLIST" value="15" />
+    <value name="LINELOOP" value="16" />
+    <value name="POINTLIST _BF" value="17" />
+    <value name="LINESTRIP_CONT" value="18" />
+    <value name="LINESTRIP_BF" value="19" />
+    <value name="LINESTRIP_CONT_BF" value="20" />
+    <value name="TRIFAN_NOSTIPPLE" value="22" />
+  </enum>
+  <enum name="3D_Stencil_Operation" prefix="STENCILOP">
+    <value name="KEEP" value="0" />
+    <value name="ZERO" value="1" />
+    <value name="REPLACE" value="2" />
+    <value name="INCRSAT" value="3" />
+    <value name="DECRSAT" value="4" />
+    <value name="INCR" value="5" />
+    <value name="DECR" value="6" />
+    <value name="INVERT" value="7" />
+  </enum>
+  <enum name="3D_Vertex_Component_Control" prefix="VFCOMP">
+    <value name="NOSTORE" value="0" />
+    <value name="STORE_SRC" value="1" />
+    <value name="STORE_0" value="2" />
+    <value name="STORE_1_FP" value="3" />
+    <value name="STORE_1_INT" value="4" />
+    <value name="STORE_VID" value="5" />
+    <value name="STORE_IID" value="6" />
+    <value name="STORE_PID" value="7" />
+  </enum>
+  <enum name="Texture Coordinate Mode" prefix="TCM">
+    <value name="WRAP" value="0" />
+    <value name="MIRROR" value="1" />
+    <value name="CLAMP" value="2" />
+    <value name="CUBE" value="3" />
+    <value name="CLAMP_BORDER" value="4" />
+    <value name="MIRROR_ONCE" value="5" />
+  </enum>
+  <struct name="CC_VIEWPORT" length="2">
+    <field name="Minimum Depth" dword="0" bits="31:0" type="float" />
+    <field name="Maximum Depth" dword="1" bits="31:0" type="float" />
+  </struct>
+  <struct name="CLIP_STATE" length="11">
+    <field name="GRF Register Count" dword="0" bits="3:1" type="uint" />
+    <field name="Kernel Start Pointer" dword="0" bits="31:6" type="address" />
+    <field name="Software Exception Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint" prefix="FLOATING_POINT_MODE">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="1" bits="17:17" type="uint">
+      <value name="Normal Priority" value="0" />
+      <value name="High Priority" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Single Program Flow" dword="1" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="2" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="2" bits="31:10" type="address" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="3" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="3" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="3" bits="16:11" type="uint" />
+    <field name="Constant URB Entry Read Offset" dword="3" bits="23:18" type="uint" />
+    <field name="Constant URB Entry Read Length" dword="3" bits="30:25" type="uint" />
+    <field name="Clipper Statistics Enable" dword="4" bits="10:10" type="bool" />
+    <field name="GS Output Object Statistics Enable" dword="4" bits="10:10" type="bool" />
+    <field name="Number of URB Entries" dword="4" bits="18:11" type="uint" />
+    <field name="URB Entry Allocation Size" dword="4" bits="23:19" type="uint" />
+    <field name="Maximum Number of Threads" dword="4" bits="30:25" type="uint" />
+    <field name="Clip Mode" dword="5" bits="15:13" type="uint" prefix="CLIPMODE">
+      <value name="NORMAL" value="0" />
+      <value name="ALL" value="1" />
+      <value name="CLIP_NON_REJECTED" value="2" />
+      <value name="REJECT_ALL" value="3" />
+      <value name="ACCEPT_ALL" value="4" />
+    </field>
+    <field name="UserClipDistance ClipTest Enable Bitmask" dword="5" bits="23:16" type="uint" />
+    <field name="UserClipFlags MustClip Enable" dword="5" bits="24:24" type="bool" />
+    <field name="Guardband ClipTest Enable" dword="5" bits="26:26" type="bool" />
+    <field name="Viewport Z ClipTest Enable" dword="5" bits="27:27" type="bool" />
+    <field name="Viewport XY ClipTest Enable" dword="5" bits="28:28" type="bool" />
+    <field name="Vertex Position Space" dword="5" bits="29:29" type="uint" prefix="VPOS">
+      <value name="NDCSPACE" value="0" />
+      <value name="SCREENSPACE" value="1" />
+    </field>
+    <field name="API Mode" dword="5" bits="30:30" type="uint" prefix="APIMODE">
+      <value name="OGL" value="0" />
+      <value name="D3D" value="1" />
+    </field>
+    <field name="Clipper Viewport State Pointer" dword="6" bits="31:5" type="address" />
+    <field name="Screen Space Viewport X Min" dword="7" bits="31:0" type="float" />
+    <field name="Screen Space Viewport X Max" dword="8" bits="31:0" type="float" />
+    <field name="Screen Space Viewport Y Min" dword="9" bits="31:0" type="float" />
+    <field name="Screen Space Viewport Y Max" dword="10" bits="31:0" type="float" />
+  </struct>
+  <struct name="CLIP_VIEWPORT" length="4">
+    <field name="XMin Clip Guardband" dword="0" bits="31:0" type="float" />
+    <field name="XMax Clip Guardband" dword="1" bits="31:0" type="float" />
+    <field name="YMin Clip Guardband" dword="2" bits="31:0" type="float" />
+    <field name="YMax Clip Guardband" dword="3" bits="31:0" type="float" />
+  </struct>
+  <struct name="COLOR_CALC_STATE" length="8">
+    <field name="Backface Stencil Pass Depth Pass Op" dword="0" bits="5:3" type="3D_Stencil_Operation" />
+    <field name="Backface Stencil Pass Depth Fail Op" dword="0" bits="8:6" type="3D_Stencil_Operation" />
+    <field name="Backface Stencil Fail Op" dword="0" bits="11:9" type="3D_Stencil_Operation" />
+    <field name="Backface Stencil Test Function" dword="0" bits="14:12" type="3D_Compare_Function" />
+    <field name="Double Sided Stencil Enable" dword="0" bits="15:15" type="bool" />
+    <field name="Stencil Buffer Write Enable" dword="0" bits="18:18" type="bool" />
+    <field name="Stencil Pass Depth Pass Op" dword="0" bits="21:19" type="3D_Stencil_Operation" />
+    <field name="Stencil Pass Depth Fail Op" dword="0" bits="24:22" type="3D_Stencil_Operation" />
+    <field name="Stencil Fail Op" dword="0" bits="27:25" type="3D_Stencil_Operation" />
+    <field name="Stencil Test Function" dword="0" bits="30:28" type="3D_Compare_Function" />
+    <field name="Stencil Test Enable" dword="0" bits="31:31" type="bool" />
+    <field name="Backface Stencil Reference Value" dword="1" bits="7:0" type="uint" />
+    <field name="Stencil Write Mask" dword="1" bits="15:8" type="uint" />
+    <field name="Stencil Test Mask" dword="1" bits="23:16" type="uint" />
+    <field name="Stencil Reference Value" dword="1" bits="31:24" type="uint" />
+    <field name="Logic Op Enable" dword="2" bits="0:0" type="bool" />
+    <field name="Depth Buffer Write Enable" dword="2" bits="11:11" type="bool" />
+    <field name="Depth Test Function" dword="2" bits="14:12" type="3D_Compare_Function" />
+    <field name="Depth Test Enable" dword="2" bits="15:15" type="bool" />
+    <field name="Backface Stencil Write Mask" dword="2" bits="23:16" type="uint" />
+    <field name="Backface Stencil Test Mask" dword="2" bits="31:24" type="uint" />
+    <field name="Alpha Test Function" dword="3" bits="10:8" type="3D_Compare_Function" />
+    <field name="Alpha Test Enable" dword="3" bits="11:11" type="bool" />
+    <field name="Color Buffer Blend Enable" dword="3" bits="12:12" type="bool" />
+    <field name="Independent Alpha Blend Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Alpha Test Format" dword="3" bits="15:15" type="uint">
+      <value name="ALPHATEST_UNORM8" value="0" />
+      <value name="ALPHATEST_FLOAT32" value="1" />
+    </field>
+    <field name="CC Viewport State Pointer" dword="4" bits="31:5" type="address" />
+    <field name="Destination Alpha Blend Factor" dword="5" bits="6:2" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Source Alpha Blend Factor" dword="5" bits="11:7" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Alpha Blend Function" dword="5" bits="14:12" type="3D_Color_Buffer_Blend_Function" />
+    <field name="Statistics Enable" dword="5" bits="15:15" type="bool" />
+    <field name="Logic Op Function" dword="5" bits="19:16" type="3D_Logic_Op_Function" />
+    <field name="Round Disable Function Disable" dword="5" bits="30:30" type="bool" />
+    <field name="Color Dither Enable" dword="5" bits="31:31" type="bool" />
+    <field name="Post-Blend Color Clamp Enable" dword="6" bits="0:0" type="bool" />
+    <field name="Pre-Blend Color Clamp Enable" dword="6" bits="1:1" type="bool" />
+    <field name="Color Clamp Range" dword="6" bits="3:2" type="uint">
+      <value name="COLORCLAMP_UNORM" value="0" />
+      <value name="COLORCLAMP_SNORM" value="1" />
+      <value name="COLORCLAMP_RTFORMAT" value="2" />
+    </field>
+    <field name="Y Dither Offset" dword="6" bits="16:15" type="uint" />
+    <field name="X Dither Offset" dword="6" bits="18:17" type="uint" />
+    <field name="Destination Blend Factor" dword="6" bits="23:19" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Source Blend Factor" dword="6" bits="28:24" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Color Blend Function" dword="6" bits="31:29" type="3D_Color_Buffer_Blend_Function" />
+    <field name="Alpha Reference Value As UNORM8" dword="7" bits="31:0" type="uint" />
+    <field name="Alpha Reference Value As FLOAT32" dword="7" bits="31:0" type="float" />
+  </struct>
+  <struct name="GS_STATE" length="7">
+    <field name="GRF Register Count" dword="0" bits="3:1" type="uint" />
+    <field name="Kernel Start Pointer" dword="0" bits="31:6" type="address" />
+    <field name="Software Exception Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint" prefix="FLOATING_POINT_MODE">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Single Program Flow" dword="1" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="2" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="2" bits="31:10" type="address" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="3" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="3" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="3" bits="16:11" type="uint" />
+    <field name="Constant URB Entry Read Offset" dword="3" bits="23:18" type="uint" />
+    <field name="Constant URB Entry Read Length" dword="3" bits="30:25" type="uint" />
+    <field name="Number of URB Entries" dword="4" bits="18:11" type="uint" />
+    <field name="URB Entry Allocation Size" dword="4" bits="23:19" type="uint" />
+    <field name="Maximum Number of Threads" dword="4" bits="30:25" type="uint" />
+    <field name="Sampler Count" dword="5" bits="2:0" type="uint" />
+    <field name="Sampler State Pointer" dword="5" bits="31:5" type="address" />
+    <field name="Maximum VPIndex" dword="6" bits="3:0" type="uint" />
+    <field name="Discard Adjacency" dword="6" bits="29:29" type="bool" />
+    <field name="Reorder Enable" dword="6" bits="30:30" type="bool" />
+  </struct>
+  <struct name="RENDER_SURFACE_STATE" length="5">
+    <field name="Cube Face Enable - Positive Z" dword="0" bits="0:0" type="bool" />
+    <field name="Cube Face Enable - Negative Z" dword="0" bits="1:1" type="bool" />
+    <field name="Cube Face Enable - Positive Y" dword="0" bits="2:2" type="bool" />
+    <field name="Cube Face Enable - Negative Y" dword="0" bits="3:3" type="bool" />
+    <field name="Cube Face Enable - Positive X" dword="0" bits="4:4" type="bool" />
+    <field name="Cube Face Enable - Negative X" dword="0" bits="5:5" type="bool" />
+    <field name="Media Boundary Pixel Mode" dword="0" bits="7:6" type="uint">
+      <value name="NORMAL_MODE" value="0" />
+    </field>
+    <field name="Render Cache Read Write Mode" dword="0" bits="8:8" type="uint">
+      <value name="WRITE_ONLY" value="0" />
+      <value name="READ_WRITE" value="1" />
+    </field>
+    <field name="MIP Map Layout Mode" dword="0" bits="10:10" type="uint">
+      <value name="MIPLAYOUT_BELOW" value="0" />
+      <value name="MIPLAYOUT_RIGHT" value="1" />
+    </field>
+    <field name="Vertical Line Stride Offset" dword="0" bits="11:11" type="uint" />
+    <field name="Vertical Line Stride" dword="0" bits="12:12" type="uint" />
+    <field name="Color Blend Enable" dword="0" bits="13:13" type="bool" />
+    <field name="Color Buffer Component Write Disables" dword="0" bits="17:14" type="uint">
+      <value name="WRITEDISABLE_ALPHA" value="8" />
+      <value name="WRITEDISABLE_RED" value="4" />
+      <value name="WRITEDISABLE_GREEN" value="2" />
+      <value name="WRITEDISABLE_BLUE" value="1" />
+    </field>
+    <field name="Surface Format" dword="0" bits="26:18" type="uint" />
+    <field name="Data Return Format" dword="0" bits="27:27" type="uint">
+      <value name="DATA_RETURN_FLOAT32" value="0" />
+      <value name="DATA_RETURN_S1.14" value="1" />
+    </field>
+    <field name="Surface Type" dword="0" bits="31:29" type="uint">
+      <value name="SURFTYPE_1D" value="0" />
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_3D" value="2" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_BUFFER" value="4" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface Base Address" dword="1" bits="31:0" type="address" />
+    <field name="MIP Count / LOD" dword="2" bits="5:2" type="uint" />
+    <field name="Width" dword="2" bits="18:6" type="uint" />
+    <field name="Height" dword="2" bits="31:19" type="uint" />
+    <field name="Tile Walk" dword="3" bits="0:0" type="uint">
+      <value name="TILEWALK_XMAJOR" value="0" />
+      <value name="TILEWALK_YMAJOR" value="1" />
+    </field>
+    <field name="Tiled Surface" dword="3" bits="1:1" type="uint" />
+    <field name="Surface Pitch" dword="3" bits="19:3" type="uint" />
+    <field name="Depth" dword="3" bits="31:21" type="uint" />
+    <field name="Render Target View Extent" dword="4" bits="16:8" type="uint" />
+    <field name="Minimum Array Element" dword="4" bits="27:17" type="uint" />
+    <field name="Surface Min LOD" dword="4" bits="31:28" type="uint" />
+  </struct>
+  <struct name="SAMPLER_BORDER_COLOR_STATE" length="12">
+    <field name="Border Color Red" dword="0" bits="31:0" type="float" />
+    <field name="Border Color Green" dword="1" bits="31:0" type="float" />
+    <field name="Border Color Blue" dword="2" bits="31:0" type="float" />
+    <field name="Border Color Alpha" dword="3" bits="31:0" type="float" />
+  </struct>
+  <struct name="SAMPLER_STATE" length="4">
+    <field name="Shadow Function" dword="0" bits="2:0" type="uint" prefix="PREFILTEROP">
+      <value name="ALWAYS" value="0" />
+      <value name="NEVER" value="1" />
+      <value name="LESS" value="2" />
+      <value name="EQUAL" value="3" />
+      <value name="LEQUAL" value="4" />
+      <value name="GREATER" value="5" />
+      <value name="NOTEQUAL" value="6" />
+      <value name="GEQUAL" value="7" />
+    </field>
+    <field name="Texture LOD Bias" dword="0" bits="13:3" type="s4.6" />
+    <field name="Min Mode Filter" dword="0" bits="16:14" type="uint" prefix="MAPFILTER" />
+    <field name="Mag Mode Filter" dword="0" bits="19:17" type="uint" prefix="MAPFILTER">
+      <value name="NEAREST" value="0" />
+      <value name="LINEAR" value="1" />
+      <value name="ANISOTROPIC" value="2" />
+      <value name="MONO" value="6" />
+    </field>
+    <field name="Mip Mode Filter" dword="0" bits="21:20" type="uint" prefix="MIPFILTER">
+      <value name="NONE" value="0" />
+      <value name="NEAREST" value="1" />
+      <value name="LINEAR" value="3" />
+    </field>
+    <field name="Base Mip Level" dword="0" bits="26:22" type="u4.1" />
+    <field name="LOD PreClamp Enable" dword="0" bits="28:28" type="bool" />
+    <field name="Sampler Disable" dword="0" bits="31:31" type="bool" />
+    <field name="TCZ Address Control Mode" dword="1" bits="2:0" type="Texture Coordinate Mode" />
+    <field name="TCY Address Control Mode" dword="1" bits="5:3" type="Texture Coordinate Mode" />
+    <field name="TCX Address Control Mode" dword="1" bits="8:6" type="Texture Coordinate Mode" />
+    <field name="Cube Surface Control Mode" dword="1" bits="9:9" type="uint">
+      <value name="CUBECTRLMODE_PROGRAMMED" value="0" />
+      <value name="CUBECTRLMODE_OVERRIDE" value="1" />
+    </field>
+    <field name="Max LOD" dword="1" bits="21:12" type="u4.6" />
+    <field name="Min LOD" dword="1" bits="31:22" type="u4.6" />
+    <field name="Border Color Pointer" dword="2" bits="31:5" type="address" />
+    <field name="R Address Min Filter Rounding Enable" dword="3" bits="13:13" type="bool" />
+    <field name="R Address Mag Filter Rounding Enable" dword="3" bits="14:14" type="bool" />
+    <field name="V Address Min Filter Rounding Enable" dword="3" bits="15:15" type="bool" />
+    <field name="V Address Mag Filter Rounding Enable" dword="3" bits="16:16" type="bool" />
+    <field name="U Address Min Filter Rounding Enable" dword="3" bits="17:17" type="bool" />
+    <field name="U Address Mag Filter Rounding Enable" dword="3" bits="18:18" type="bool" />
+    <field name="Maximum Anisotropy" dword="3" bits="21:19" type="uint">
+      <value name="RATIO 2:1" value="0" />
+      <value name="RATIO 4:1" value="1" />
+      <value name="RATIO 6:1" value="2" />
+      <value name="RATIO 8:1" value="3" />
+      <value name="RATIO 10:1" value="4" />
+      <value name="RATIO 12:1" value="5" />
+      <value name="RATIO 14:1" value="6" />
+      <value name="RATIO 16:1" value="7" />
+    </field>
+    <field name="ChromaKey Mode" dword="3" bits="22:22" type="uint" prefix="KEYFILTER">
+      <value name="KILL_ON_ANY_MATCH" value="0" />
+      <value name="REPLACE_BLACK" value="1" />
+    </field>
+    <field name="ChromaKey Index" dword="3" bits="24:23" type="uint" />
+    <field name="ChromaKey Enable" dword="3" bits="25:25" type="bool" />
+  </struct>
+  <struct name="SCISSOR_RECT" length="2">
+    <field name="Scissor Rectangle X Min" dword="0" bits="15:0" type="uint" />
+    <field name="Scissor Rectangle Y Min" dword="0" bits="31:16" type="uint" />
+    <field name="Scissor Rectangle X Max" dword="1" bits="15:0" type="uint" />
+    <field name="Scissor Rectangle Y Max" dword="1" bits="31:16" type="uint" />
+  </struct>
+  <struct name="SF_STATE" length="8">
+    <field name="GRF Register Count" dword="0" bits="3:1" type="uint" />
+    <field name="Kernel Start Pointer" dword="0" bits="31:6" type="address" />
+    <field name="Software Exception Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint" prefix="FLOATING_POINT_MODE">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="1" bits="17:17" type="uint">
+      <value name="Normal Priority" value="0" />
+      <value name="High Priority" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Single Program Flow" dword="1" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="2" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="2" bits="31:10" type="address" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="3" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="3" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="3" bits="16:11" type="uint" />
+    <field name="Constant URB Entry Read Offset" dword="3" bits="23:18" type="uint" />
+    <field name="Constant URB Entry Read Length" dword="3" bits="30:25" type="uint" />
+    <field name="Number of URB Entries" dword="4" bits="18:11" type="uint" />
+    <field name="URB Entry Allocation Size" dword="4" bits="23:19" type="uint" />
+    <field name="Maximum Number of Threads" dword="4" bits="30:25" type="uint" />
+    <field name="Front Winding" dword="5" bits="0:0" type="uint">
+      <value name="FRONTWINDING_CW" value="0" />
+      <value name="FRONTWINDING_CCW" value="1" />
+    </field>
+    <field name="Viewport Transform Enable" dword="5" bits="1:1" type="bool" />
+    <field name="Setup Viewport State Offset" dword="5" bits="31:5" type="address" />
+    <field name="Destination Origin Vertical Bias" dword="6" bits="12:9" type="u0.4" />
+    <field name="Destination Origin Horizontal Bias" dword="6" bits="16:13" type="u0.4" />
+    <field name="Scissor Rectangle Enable" dword="6" bits="17:17" type="bool" />
+    <field name="2x2 Pixel Triangle Filter Disable" dword="6" bits="18:18" type="bool" />
+    <field name="Zero Pixel Triangle Filter Disable" dword="6" bits="19:19" type="bool" />
+    <field name="Point Rasterization Rule" dword="6" bits="21:20" type="uint">
+      <value name="RASTRULE_UPPER_LEFT" value="0" />
+      <value name="RASTRULE_UPPER_RIGHT" value="1" />
+    </field>
+    <field name="Line End Cap Antialiasing Region Width" dword="6" bits="23:22" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Line Width" dword="6" bits="27:24" type="u3.1" />
+    <field name="Fast Scissor Clip Disable" dword="6" bits="28:28" type="bool" />
+    <field name="Cull Mode" dword="6" bits="30:29" type="uint" prefix="CULLMODE">
+      <value name="BOTH" value="0" />
+      <value name="NONE" value="1" />
+      <value name="FRONT" value="2" />
+      <value name="BACK" value="3" />
+    </field>
+    <field name="Antialiasing Enable" dword="6" bits="31:31" type="bool" />
+    <field name="Point Width" dword="7" bits="10:0" type="u8.3" />
+    <field name="Point Width Source" dword="7" bits="11:11" type="uint">
+      <value name="Vertex" value="0" />
+      <value name="State" value="1" />
+    </field>
+    <field name="Vertex Sub Pixel Precision Select" dword="7" bits="12:12" type="uint">
+      <value name="8 Sub-Pixel Precision Bits" value="0" />
+      <value name="4 Sub-Pixel Precision Bits" value="1" />
+    </field>
+    <field name="Sprite Point Enable" dword="7" bits="13:13" type="bool" />
+    <field name="Triangle Fan Provoking Vertex Select" dword="7" bits="26:25" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+      <value name="Vertex 2" value="2" />
+    </field>
+    <field name="Line Strip/List Provoking Vertex Select" dword="7" bits="28:27" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+    </field>
+    <field name="Triangle Strip/List Provoking Vertex Select" dword="7" bits="30:29" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+      <value name="Vertex 2" value="2" />
+    </field>
+    <field name="Last Pixel Enable" dword="7" bits="31:31" type="bool" />
+  </struct>
+  <struct name="SF_VIEWPORT" length="8">
+    <field name="Viewport Matrix Element m00" dword="0" bits="31:0" type="float" />
+    <field name="Viewport Matrix Element m11" dword="1" bits="31:0" type="float" />
+    <field name="Viewport Matrix Element m22" dword="2" bits="31:0" type="float" />
+    <field name="Viewport Matrix Element m30" dword="3" bits="31:0" type="float" />
+    <field name="Viewport Matrix Element m31" dword="4" bits="31:0" type="float" />
+    <field name="Viewport Matrix Element m32" dword="5" bits="31:0" type="float" />
+    <field name="Scissor Rectangle" dword="6" bits="63:0" type="SCISSOR_RECT" />
+  </struct>
+  <struct name="VERTEX_BUFFER_STATE" length="4">
+    <field name="Buffer Pitch" dword="0" bits="10:0" type="uint" />
+    <field name="Buffer Access Type" dword="0" bits="26:26" type="uint">
+      <value name="VERTEXDATA" value="0" />
+      <value name="INSTANCEDATA" value="1" />
+    </field>
+    <field name="Vertex Buffer Index" dword="0" bits="31:27" type="uint" />
+    <field name="Buffer Starting Address" dword="1" bits="31:0" type="address" />
+    <field name="Max Index" dword="2" bits="31:0" type="uint" />
+    <field name="Instance Data Step Rate" dword="3" bits="31:0" type="uint" />
+  </struct>
+  <struct name="VERTEX_ELEMENT_STATE" length="2">
+    <field name="Source Element Offset" dword="0" bits="10:0" type="uint" />
+    <field name="Source Element Format" dword="0" bits="24:16" type="uint" />
+    <field name="Valid" dword="0" bits="26:26" type="bool" />
+    <field name="Vertex Buffer Index" dword="0" bits="31:27" type="uint" />
+    <field name="Destination Element Offset" dword="1" bits="7:0" type="uint" />
+    <field name="Component 3 Control" dword="1" bits="18:16" type="3D_Vertex_Component_Control" />
+    <field name="Component 2 Control" dword="1" bits="22:20" type="3D_Vertex_Component_Control" />
+    <field name="Component 1 Control" dword="1" bits="26:24" type="3D_Vertex_Component_Control" />
+    <field name="Component 0 Control" dword="1" bits="30:28" type="3D_Vertex_Component_Control" />
+  </struct>
+  <struct name="VS_STATE" length="7">
+    <field name="GRF Register Count" dword="0" bits="3:1" type="uint" />
+    <field name="Kernel Start Pointer" dword="0" bits="31:6" type="address" />
+    <field name="Software Exception Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint" prefix="FLOATING_POINT_MODE">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="1" bits="17:17" type="uint">
+      <value name="Normal Priority" value="0" />
+      <value name="High Priority" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Single Program Flow" dword="1" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="2" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="2" bits="31:10" type="address" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="3" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="3" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="3" bits="16:11" type="uint" />
+    <field name="Constant URB Entry Read Offset" dword="3" bits="23:18" type="uint" />
+    <field name="Constant URB Entry Read Length" dword="3" bits="30:25" type="uint" />
+    <field name="Statistics Enable" dword="4" bits="10:10" type="bool" />
+    <field name="Number of URB Entries" dword="4" bits="18:11" type="uint" />
+    <field name="URB Entry Allocation Size" dword="4" bits="23:19" type="uint" />
+    <field name="Maximum Number of Threads" dword="4" bits="30:25" type="uint" />
+    <field name="Sampler Count" dword="5" bits="2:0" type="uint" />
+    <field name="Sampler State Pointer" dword="5" bits="31:5" type="address" />
+    <field name="Enable" dword="6" bits="0:0" type="bool" />
+    <field name="Vertex Cache Disable" dword="6" bits="1:1" type="bool" />
+  </struct>
+  <struct name="WM_STATE" length="8">
+    <field name="GRF Register Count 0" dword="0" bits="3:1" type="uint" />
+    <field name="Kernel Start Pointer 0" dword="0" bits="31:6" type="address" />
+    <field name="Software Exception Enable" dword="1" bits="1:1" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="4:4" type="bool" />
+    <field name="Depth Coefficient URB Read Offset" dword="1" bits="13:8" type="uint" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint" prefix="FLOATING_POINT_MODE">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="1" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Single Program Flow" dword="1" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="2" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="2" bits="31:10" type="address" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 0" dword="3" bits="3:0" type="uint" />
+    <field name="Setup URB Entry Read Offset" dword="3" bits="9:4" type="uint" />
+    <field name="Setup URB Entry Read Length" dword="3" bits="16:11" type="uint" />
+    <field name="Constant URB Entry Read Offset" dword="3" bits="23:18" type="uint" />
+    <field name="Constant URB Entry Read Length" dword="3" bits="30:25" type="uint" />
+    <field name="Statistics Enable" dword="4" bits="0:0" type="bool" />
+    <field name="Sampler Count" dword="4" bits="4:2" type="uint" />
+    <field name="Sampler State Pointer" dword="4" bits="31:5" type="address" />
+    <field name="8 Pixel Dispatch Enable" dword="5" bits="0:0" type="bool" />
+    <field name="16 Pixel Dispatch Enable" dword="5" bits="1:1" type="bool" />
+    <field name="32 Pixel Dispatch Enable" dword="5" bits="2:2" type="bool" />
+    <field name="Legacy Global Depth Bias Enable" dword="5" bits="10:10" type="bool" />
+    <field name="Line Stipple Enable" dword="5" bits="11:11" type="bool" />
+    <field name="Global Depth Offset Enable" dword="5" bits="12:12" type="bool" />
+    <field name="Polygon Stipple Enable" dword="5" bits="13:13" type="bool" />
+    <field name="Line Antialiasing Region Width" dword="5" bits="15:14" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Line End Cap Antialiasing Region Width" dword="5" bits="17:16" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Early Depth Test Enable" dword="5" bits="18:18" type="bool" />
+    <field name="Thread Dispatch Enable" dword="5" bits="19:19" type="bool" />
+    <field name="Pixel Shader Uses Source Depth" dword="5" bits="20:20" type="bool" />
+    <field name="Pixel Shader Computed Depth" dword="5" bits="21:21" type="bool" />
+    <field name="Pixel Shader Kills Pixel" dword="5" bits="22:22" type="bool" />
+    <field name="Legacy Diamond Line Rasterization" dword="5" bits="23:23" type="bool" />
+    <field name="Maximum Number of Threads" dword="5" bits="31:25" type="uint" />
+    <field name="Global Depth Offset Constant" dword="6" bits="31:0" type="float" />
+    <field name="Global Depth Offset Scale" dword="7" bits="31:0" type="float" />
+  </struct>
+  <instruction name="3DPRIMITIVE" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="Primitive Topology Type" dword="0" bits="14:10" type="3D_Prim_Topo_Type" />
+    <field name="Vertex Access Type" dword="0" bits="15:15" type="uint">
+      <value name="SEQUENTIAL" value="0" />
+      <value name="RANDOM" value="1" />
+    </field>
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Vertex Count Per Instance" dword="1" bits="31:0" type="uint" />
+    <field name="Start Vertex Location" dword="2" bits="31:0" type="uint" />
+    <field name="Instance Count" dword="3" bits="31:0" type="uint" default="1">
+      <value name="UNDEFINED" value="0" />
+      <value name="'non-instanced' operation" value="1" />
+    </field>
+    <field name="Base Vertex Location" dword="5" bits="31:0" type="int" />
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_POINTERS" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="1" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to VS Binding Table" dword="1" bits="31:5" type="offset" />
+    <field name="Pointer to GS Binding Table" dword="2" bits="31:5" type="offset" />
+    <field name="Pointer to CLIP Binding Table" dword="3" bits="31:5" type="offset" />
+    <field name="Pointer to SF Binding Table" dword="4" bits="31:5" type="offset" />
+    <field name="Pointer to PS Binding Table" dword="5" bits="31:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_COLOR" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="1" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Blend Constant Color Red" dword="1" bits="31:0" type="float" />
+    <field name="Blend Constant Color Green" dword="2" bits="31:0" type="float" />
+    <field name="Blend Constant Color Blue" dword="3" bits="31:0" type="float" />
+    <field name="Blend Constant Color Alpha" dword="4" bits="31:0" type="float" />
+  </instruction>
+  <instruction name="3DSTATE_DEPTH_BUFFER" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="5" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="Surface Format" dword="1" bits="20:18" type="uint">
+      <value name="D32_FLOAT_S8X24_UINT" value="0" />
+      <value name="D32_FLOAT" value="1" />
+      <value name="D24_UNORM_S8_UINT" value="2" />
+      <value name="D24_UNORM_X8_UINT" value="3" />
+      <value name="D16_UNORM" value="5" />
+    </field>
+    <field name="Software Tiled Rendering Mode" dword="1" bits="24:23" type="uint">
+      <value name="NORMAL" value="0" />
+      <value name="STR1" value="1" />
+      <value name="STR2" value="3" />
+    </field>
+    <field name="Depth Buffer Coordinate Offset Disable" dword="1" bits="25:25" type="bool" />
+    <field name="Tile Walk" dword="1" bits="26:26" type="uint">
+      <value name="TILEWALK_YMAJOR" value="1" />
+    </field>
+    <field name="Tiled Surface" dword="1" bits="27:27" type="bool" />
+    <field name="Surface Type" dword="1" bits="31:29" type="uint">
+      <value name="SURFTYPE_1D" value="0" />
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_3D" value="2" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface Base Address" dword="2" bits="31:0" type="address" />
+    <field name="MIP Map Layout Mode" dword="3" bits="1:1" type="uint">
+      <value name="MIPLAYOUT_BELOW" value="0" />
+      <value name="MIPLAYOUT_RIGHT" value="1" />
+    </field>
+    <field name="LOD" dword="3" bits="5:2" type="uint" />
+    <field name="Width" dword="3" bits="18:6" type="uint" />
+    <field name="Height" dword="3" bits="31:19" type="uint">
+      <value name="SURFTYPE_1D:  must be zero" value="0" />
+    </field>
+    <field name="Render Target View Extent" dword="4" bits="9:1" type="uint" />
+    <field name="Minimum Array Element" dword="4" bits="20:10" type="uint" />
+    <field name="Depth" dword="4" bits="31:21" type="uint">
+      <value name="SURFTYPE_CUBE:  must be zero" value="0" />
+    </field>
+  </instruction>
+  <instruction name="3DSTATE_DRAWING_RECTANGLE" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Clipped Drawing Rectangle X Min" dword="1" bits="15:0" type="uint" />
+    <field name="Clipped Drawing Rectangle Y Min" dword="1" bits="31:16" type="uint" />
+    <field name="Clipped Drawing Rectangle X Max" dword="2" bits="15:0" type="uint" />
+    <field name="Clipped Drawing Rectangle Y Max" dword="2" bits="31:16" type="uint" />
+    <field name="Drawing Rectangle Origin X" dword="3" bits="15:0" type="int" />
+    <field name="Drawing Rectangle Origin Y" dword="3" bits="31:16" type="int" />
+  </instruction>
+  <instruction name="3DSTATE_GLOBAL_DEPTH_OFFSET_CLAMP" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="9" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Global Depth Offset Clamp" dword="1" bits="31:0" type="float" />
+  </instruction>
+  <instruction name="3DSTATE_INDEX_BUFFER" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Index Format" dword="0" bits="9:8" type="uint" prefix="INDEX">
+      <value name="BYTE" value="0" />
+      <value name="WORD" value="1" />
+      <value name="DWORD" value="2" />
+    </field>
+    <field name="Cut Index Enable" dword="0" bits="10:10" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="10" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Buffer Starting Address" dword="1" bits="31:0" type="address" />
+    <field name="Buffer Ending Address" dword="2" bits="31:0" type="address" />
+  </instruction>
+  <instruction name="3DSTATE_LINE_STIPPLE" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="8" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Line Stipple Pattern" dword="1" bits="15:0" type="uint" />
+    <field name="Current Stipple Index" dword="1" bits="19:16" type="uint" />
+    <field name="Current Repeat Counter" dword="1" bits="29:21" type="uint" />
+    <field name="Modify Enable" dword="1" bits="31:31" type="bool" />
+    <field name="Line Stipple Repeat Count" dword="2" bits="8:0" type="uint" />
+    <field name="Line Stipple Inverse Repeat Count" dword="2" bits="31:16" type="u1.13" />
+  </instruction>
+  <instruction name="3DSTATE_PIPELINED_POINTERS" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to VS State" dword="1" bits="31:5" type="address" />
+    <field name="GS Enable" dword="2" bits="0:0" type="bool" />
+    <field name="Pointer to GS State" dword="2" bits="31:5" type="address" />
+    <field name="Clip Enable" dword="3" bits="0:0" type="bool" />
+    <field name="Pointer to CLIP State" dword="3" bits="31:5" type="address" />
+    <field name="Pointer to SF State" dword="4" bits="31:5" type="address" />
+    <field name="Pointer to WM State" dword="5" bits="31:5" type="address" />
+    <field name="Pointer to Color Calc State" dword="6" bits="31:5" type="address" />
+  </instruction>
+  <instruction name="3DSTATE_POLY_STIPPLE_OFFSET" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="6" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Polygon Stipple Y Offset" dword="1" bits="4:0" type="uint" />
+    <field name="Polygon Stipple X Offset" dword="1" bits="12:8" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_POLY_STIPPLE_PATTERN" bias="2" length="33" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="31" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="7" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="32" dword="1" size="32">
+      <field name="Pattern Row" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_VERTEX_BUFFERS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="8" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="0" dword="1" size="128">
+      <field name="Vertex Buffer State" dword="0" bits="127:0" type="VERTEX_BUFFER_STATE" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_VERTEX_ELEMENTS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="9" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="0" dword="1" size="64">
+      <field name="Element" dword="0" bits="63:0" type="VERTEX_ELEMENT_STATE" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_VF_STATISTICS" bias="1" length="1" engine="render">
+    <field name="Statistics Enable" dword="0" bits="0:0" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="11" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+  </instruction>
+  <instruction name="CONSTANT_BUFFER" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="Valid" dword="0" bits="8:8" type="bool" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="2" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Buffer Length" dword="1" bits="5:0" type="uint" />
+    <field name="Buffer Starting Address" dword="1" bits="31:6" type="address" />
+  </instruction>
+  <instruction name="CS_URB_STATE" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="1" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Number of URB Entries" dword="1" bits="2:0" type="uint" />
+    <field name="URB Entry Allocation Size" dword="1" bits="8:4" type="uint" />
+  </instruction>
+  <instruction name="MI_FLUSH" bias="1" length="1" engine="render">
+    <field name="State/Instruction Cache Invalidate" dword="0" bits="1:1" type="uint">
+      <value name="Don't Invalidate" value="0" />
+      <value name="Invalidate" value="1" />
+    </field>
+    <field name="Render Cache Flush Inhibit" dword="0" bits="2:2" type="uint">
+      <value name="Flush" value="0" />
+      <value name="Don't Flush" value="1" />
+    </field>
+    <field name="Global Snapshot Count Reset" dword="0" bits="3:3" type="uint">
+      <value name="Don't Reset" value="0" />
+      <value name="Reset" value="1" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="4" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_LOAD_REGISTER_IMM" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="1" />
+    <field name="Byte Write Disables" dword="0" bits="11:8" type="uint" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="34" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Register Offset" dword="1" bits="31:2" type="offset" />
+    <field name="Data DWord" dword="2" bits="31:0" type="uint" />
+    <group count="0" dword="3" size="64">
+      <field name="Register Offset" dword="0" bits="31:2" type="offset" />
+      <field name="Data DWord" dword="1" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MI_STORE_DATA_IMM" bias="2" length="5">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="2" />
+    <field name="BitFieldName" dword="0" bits="21:21" type="uint" />
+    <field name="Memory Address Type" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="32" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Physical Start Address Extension" dword="1" bits="3:0" type="address" />
+    <field name="Address" dword="2" bits="31:2" type="address" />
+    <field name="Immediate Data" dword="3" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="MI_STORE_REGISTER_MEM" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Use Global GTT" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="36" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Register Address" dword="1" bits="22:2" type="offset" />
+    <field name="Physical Start Address Extension" dword="1" bits="31:28" type="address" />
+    <field name="Memory Address" dword="2" bits="31:2" type="address" />
+  </instruction>
+  <instruction name="PIPELINE_SELECT" bias="1" length="1" engine="render">
+    <field name="Pipeline Selection" dword="0" bits="0:0" type="uint">
+      <value name="3D" value="0" />
+      <value name="Media" value="1" />
+    </field>
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+  </instruction>
+  <instruction name="PIPE_CONTROL" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="Notify Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Instruction Cache Invalidate Enable" dword="0" bits="11:11" type="bool" />
+    <field name="Write Cache Flush" dword="0" bits="12:12" type="bool" />
+    <field name="Depth Stall Enable" dword="0" bits="13:13" type="bool" />
+    <field name="Post Sync Operation" dword="0" bits="15:14" type="uint">
+      <value name="No Write" value="0" />
+      <value name="Write Immediate Data" value="1" />
+      <value name="Write PS Depth Count" value="2" />
+      <value name="Write Timestamp" value="3" />
+    </field>
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Destination Address Type" dword="1" bits="2:2" type="uint" prefix="DAT">
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Address" dword="1" bits="31:3" type="address" />
+    <field name="Immediate Data" dword="2" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="STATE_BASE_ADDRESS" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="1" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="General State Base Address Modify Enable" dword="1" bits="0:0" type="bool" />
+    <field name="General State Base Address" dword="1" bits="31:12" type="address" />
+    <field name="Surface State Base Address Modify Enable" dword="2" bits="0:0" type="bool" />
+    <field name="Surface State Base Address" dword="2" bits="31:12" type="address" />
+    <field name="Indirect Object Base Address Modify Enable" dword="3" bits="0:0" type="bool" />
+    <field name="Indirect Object Base Address" dword="3" bits="31:12" type="address" />
+    <field name="General State Access Upper Bound Modify Enable" dword="4" bits="0:0" type="bool" />
+    <field name="General State Access Upper Bound" dword="4" bits="31:12" type="address" />
+    <field name="Indirect Object Access Upper Bound Modify Enable" dword="5" bits="0:0" type="bool" />
+    <field name="Indirect Object Access Upper Bound" dword="5" bits="31:12" type="address" />
+  </instruction>
+  <instruction name="STATE_SIP" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="2" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="System Instruction Pointer" dword="1" bits="31:4" type="offset" />
+  </instruction>
+  <instruction name="URB_FENCE" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="VS Unit URB Reallocation Request" dword="0" bits="8:8" type="bool" />
+    <field name="GS Unit URB Reallocation Request" dword="0" bits="9:9" type="bool" />
+    <field name="CLIP Unit URB Reallocation Request" dword="0" bits="10:10" type="bool" />
+    <field name="SF Unit URB Reallocation Request" dword="0" bits="11:11" type="bool" />
+    <field name="VFE Unit URB Reallocation Request" dword="0" bits="12:12" type="bool" />
+    <field name="CS Unit URB Reallocation Request" dword="0" bits="13:13" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="VS Fence" dword="1" bits="9:0" type="uint" />
+    <field name="GS Fence" dword="1" bits="19:10" type="uint" />
+    <field name="CLIP Fence" dword="1" bits="29:20" type="uint" />
+    <field name="SF Fence" dword="2" bits="9:0" type="uint" />
+    <field name="VFE Fence" dword="2" bits="19:10" type="uint" />
+    <field name="CS Fence" dword="2" bits="30:20" type="uint" />
+  </instruction>
+  <instruction name="XY_COLOR_BLT" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="Tiling Enable" dword="0" bits="11:11" type="bool" />
+    <field name="32bpp Byte Mask" dword="0" bits="21:20" type="uint" />
+    <field name="2D Command Opcode" dword="0" bits="28:22" type="uint" default="80" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="2" />
+    <field name="Destination Pitch" dword="1" bits="15:0" type="int" />
+    <field name="Raster Operation" dword="1" bits="23:16" type="uint" />
+    <field name="Color Depth" dword="1" bits="25:24" type="uint" prefix="COLOR_DEPTH">
+      <value name="8 bit" value="0" />
+      <value name="565" value="1" />
+      <value name="1555" value="2" />
+      <value name="32 bit" value="3" />
+    </field>
+    <field name="Clipping Enabled" dword="1" bits="30:30" type="bool" />
+    <field name="Destination X1 Coordinate" dword="2" bits="15:0" type="int" />
+    <field name="Destination Y1 Coordinate" dword="2" bits="31:16" type="int" />
+    <field name="Destination X2 Coordinate" dword="3" bits="15:0" type="int" />
+    <field name="Destination Y2 Coordinate" dword="3" bits="31:16" type="int" />
+    <field name="Destination Base Address" dword="4" bits="31:0" type="address" />
+    <field name="Solid Pattern Color" dword="5" bits="31:0" type="int" />
+  </instruction>
+  <instruction name="XY_SETUP_BLT" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="Tiling Enable" dword="0" bits="11:11" type="bool" />
+    <field name="32bpp Byte Mask" dword="0" bits="21:20" type="uint" />
+    <field name="2D Command Opcode" dword="0" bits="28:22" type="uint" default="1" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="2" />
+    <field name="Destination Pitch" dword="1" bits="15:0" type="int" />
+    <field name="Raster Operation" dword="1" bits="23:16" type="uint" />
+    <field name="Color Depth" dword="1" bits="25:24" type="uint" prefix="COLOR_DEPTH">
+      <value name="8 bit" value="0" />
+      <value name="565" value="1" />
+      <value name="1555" value="2" />
+      <value name="32 bit" value="3" />
+    </field>
+    <field name="Mono Source Transparency Mode" dword="1" bits="29:29" type="bool" />
+    <field name="Clipping Enabled" dword="1" bits="30:30" type="bool" />
+    <field name="ClipRect X1 Coordinate" dword="2" bits="15:0" type="int" />
+    <field name="ClipRect Y1 Coordinate" dword="2" bits="31:16" type="int" />
+    <field name="ClipRect X2 Coordinate" dword="3" bits="15:0" type="int" />
+    <field name="ClipRect Y2 Coordinate" dword="3" bits="31:16" type="int" />
+    <field name="Destination Base Address" dword="4" bits="31:0" type="address" />
+    <field name="Background Color" dword="5" bits="31:0" type="uint" />
+    <field name="Foreground Color" dword="6" bits="31:0" type="uint" />
+    <field name="Pattern Base Address" dword="7" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="XY_SRC_COPY_BLT" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="Destination Tiling Enable" dword="0" bits="11:11" type="bool" />
+    <field name="Source Tiling Enable" dword="0" bits="15:15" type="bool" />
+    <field name="32bpp Byte Mask" dword="0" bits="21:20" type="uint" />
+    <field name="2D Command Opcode" dword="0" bits="28:22" type="uint" default="83" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="2" />
+    <field name="Destination Pitch" dword="1" bits="15:0" type="int" />
+    <field name="Raster Operation" dword="1" bits="23:16" type="uint" />
+    <field name="Color Depth" dword="1" bits="25:24" type="uint" prefix="COLOR_DEPTH">
+      <value name="8 bit" value="0" />
+      <value name="565" value="1" />
+      <value name="1555" value="2" />
+      <value name="32 bit" value="3" />
+    </field>
+    <field name="Clipping Enabled" dword="1" bits="30:30" type="bool" />
+    <field name="Destination X1 Coordinate" dword="2" bits="15:0" type="int" />
+    <field name="Destination Y1 Coordinate" dword="2" bits="31:16" type="int" />
+    <field name="Destination X2 Coordinate" dword="3" bits="15:0" type="int" />
+    <field name="Destination Y2 Coordinate" dword="3" bits="31:16" type="int" />
+    <field name="Destination Base Address" dword="4" bits="31:0" type="address" />
+    <field name="Source X1 Coordinate" dword="5" bits="15:0" type="int" />
+    <field name="Source Y1 Coordinate" dword="5" bits="31:16" type="int" />
+    <field name="Source Pitch" dword="6" bits="15:0" type="int" />
+    <field name="Source Base Address" dword="7" bits="31:0" type="address" />
+  </instruction>
+  <instruction name="XY_TEXT_IMMEDIATE_BLT" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Tiling Enable" dword="0" bits="11:11" type="bool" />
+    <field name="Packing" dword="0" bits="16:16" type="uint">
+      <value name="Bit Packed" value="0" />
+      <value name="Byte Packed" value="1" />
+    </field>
+    <field name="32bpp Byte Mask" dword="0" bits="21:20" type="uint" />
+    <field name="2D Command Opcode" dword="0" bits="28:22" type="uint" default="49" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="2" />
+    <field name="Destination Pitch" dword="1" bits="15:0" type="int" />
+    <field name="Destination X1 Coordinate" dword="1" bits="15:0" type="int" />
+    <field name="Destination Y1 Coordinate" dword="1" bits="31:16" type="int" />
+    <field name="Destination X2 Coordinate" dword="2" bits="15:0" type="int" />
+    <field name="Destination Y2 Coordinate" dword="2" bits="31:16" type="int" />
+  </instruction>
+</genxml>
diff --git a/lib/genxml/gen45.xml b/lib/genxml/gen45.xml
new file mode 100644
index 000000000..a9101ba10
--- /dev/null
+++ b/lib/genxml/gen45.xml
@@ -0,0 +1,507 @@
+<?xml version='1.0' encoding='utf-8'?>
+<genxml name="CTG" gen="4.5">
+  <import name="gen40.xml" />
+  <struct name="CLIP_STATE" length="11">
+    <field name="GRF Register Count" dword="0" bits="3:1" type="uint" />
+    <field name="Kernel Start Pointer" dword="0" bits="31:6" type="address" />
+    <field name="Software Exception Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint" prefix="FLOATING_POINT_MODE">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="1" bits="17:17" type="uint">
+      <value name="Normal Priority" value="0" />
+      <value name="High Priority" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Single Program Flow" dword="1" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="2" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="2" bits="31:10" type="address" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="3" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="3" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="3" bits="16:11" type="uint" />
+    <field name="Constant URB Entry Read Offset" dword="3" bits="23:18" type="uint" />
+    <field name="Constant URB Entry Read Length" dword="3" bits="30:25" type="uint" />
+    <field name="Clipper Statistics Enable" dword="4" bits="10:10" type="bool" />
+    <field name="GS Output Object Statistics Enable" dword="4" bits="10:10" type="bool" />
+    <field name="Number of URB Entries" dword="4" bits="18:11" type="uint" />
+    <field name="URB Entry Allocation Size" dword="4" bits="23:19" type="uint" />
+    <field name="Maximum Number of Threads" dword="4" bits="30:25" type="uint" />
+    <field name="Clip Mode" dword="5" bits="15:13" type="uint" prefix="CLIPMODE">
+      <value name="NORMAL" value="0" />
+      <value name="ALL" value="1" />
+      <value name="CLIP_NON_REJECTED" value="2" />
+      <value name="REJECT_ALL" value="3" />
+      <value name="ACCEPT_ALL" value="4" />
+    </field>
+    <field name="UserClipDistance ClipTest Enable Bitmask" dword="5" bits="23:16" type="uint" />
+    <field name="UserClipFlags MustClip Enable" dword="5" bits="24:24" type="bool" />
+    <field name="Negative W ClipTest Enable" dword="5" bits="25:25" type="bool" />
+    <field name="Guardband ClipTest Enable" dword="5" bits="26:26" type="bool" />
+    <field name="Viewport Z ClipTest Enable" dword="5" bits="27:27" type="bool" />
+    <field name="Viewport XY ClipTest Enable" dword="5" bits="28:28" type="bool" />
+    <field name="Vertex Position Space" dword="5" bits="29:29" type="uint" prefix="VPOS">
+      <value name="NDCSPACE" value="0" />
+      <value name="SCREENSPACE" value="1" />
+    </field>
+    <field name="API Mode" dword="5" bits="30:30" type="uint" prefix="APIMODE">
+      <value name="OGL" value="0" />
+      <value name="D3D" value="1" />
+    </field>
+    <field name="Clipper Viewport State Pointer" dword="6" bits="31:5" type="address" />
+    <field name="Screen Space Viewport X Min" dword="7" bits="31:0" type="float" />
+    <field name="Screen Space Viewport X Max" dword="8" bits="31:0" type="float" />
+    <field name="Screen Space Viewport Y Min" dword="9" bits="31:0" type="float" />
+    <field name="Screen Space Viewport Y Max" dword="10" bits="31:0" type="float" />
+  </struct>
+  <struct name="GS_STATE" length="7">
+    <field name="GRF Register Count" dword="0" bits="3:1" type="uint" />
+    <field name="Kernel Start Pointer" dword="0" bits="31:6" type="address" />
+    <field name="Software Exception Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint" prefix="FLOATING_POINT_MODE">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Single Program Flow" dword="1" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="2" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="2" bits="31:10" type="address" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="3" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="3" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="3" bits="16:11" type="uint" />
+    <field name="Constant URB Entry Read Offset" dword="3" bits="23:18" type="uint" />
+    <field name="Constant URB Entry Read Length" dword="3" bits="30:25" type="uint" />
+    <field name="Rendering Enable" dword="4" bits="8:8" type="bool" />
+    <field name="GS Statistics Enable" dword="4" bits="10:10" type="bool" />
+    <field name="Number of URB Entries" dword="4" bits="18:11" type="uint" />
+    <field name="URB Entry Allocation Size" dword="4" bits="23:19" type="uint" />
+    <field name="Maximum Number of Threads" dword="4" bits="30:25" type="uint" />
+    <field name="Sampler Count" dword="5" bits="2:0" type="uint" />
+    <field name="Sampler State Pointer" dword="5" bits="31:5" type="address" />
+    <field name="Maximum VPIndex" dword="6" bits="3:0" type="uint" />
+    <field name="Discard Adjacency" dword="6" bits="29:29" type="bool" />
+    <field name="Reorder Enable" dword="6" bits="30:30" type="bool" />
+  </struct>
+  <struct name="RENDER_SURFACE_STATE" length="6">
+    <field name="Cube Face Enable - Positive Z" dword="0" bits="0:0" type="bool" />
+    <field name="Cube Face Enable - Negative Z" dword="0" bits="1:1" type="bool" />
+    <field name="Cube Face Enable - Positive Y" dword="0" bits="2:2" type="bool" />
+    <field name="Cube Face Enable - Negative Y" dword="0" bits="3:3" type="bool" />
+    <field name="Cube Face Enable - Positive X" dword="0" bits="4:4" type="bool" />
+    <field name="Cube Face Enable - Negative X" dword="0" bits="5:5" type="bool" />
+    <field name="Media Boundary Pixel Mode" dword="0" bits="7:6" type="uint">
+      <value name="NORMAL_MODE" value="0" />
+      <value name="PROGRESSIVE_FRAME" value="2" />
+      <value name="INTERLACED_FRAME" value="3" />
+    </field>
+    <field name="Render Cache Read Write Mode" dword="0" bits="8:8" type="uint">
+      <value name="WRITE_ONLY" value="0" />
+      <value name="READ_WRITE" value="1" />
+    </field>
+    <field name="MIP Map Layout Mode" dword="0" bits="10:10" type="uint">
+      <value name="MIPLAYOUT_BELOW" value="0" />
+      <value name="MIPLAYOUT_RIGHT" value="1" />
+    </field>
+    <field name="Vertical Line Stride Offset" dword="0" bits="11:11" type="uint" />
+    <field name="Vertical Line Stride" dword="0" bits="12:12" type="uint" />
+    <field name="Color Blend Enable" dword="0" bits="13:13" type="bool" />
+    <field name="Color Buffer Component Write Disables" dword="0" bits="17:14" type="uint">
+      <value name="WRITEDISABLE_ALPHA" value="8" />
+      <value name="WRITEDISABLE_RED" value="4" />
+      <value name="WRITEDISABLE_GREEN" value="2" />
+      <value name="WRITEDISABLE_BLUE" value="1" />
+    </field>
+    <field name="Surface Format" dword="0" bits="26:18" type="uint" />
+    <field name="Data Return Format" dword="0" bits="27:27" type="uint">
+      <value name="DATA_RETURN_FLOAT32" value="0" />
+      <value name="DATA_RETURN_S1.14" value="1" />
+    </field>
+    <field name="Surface Type" dword="0" bits="31:29" type="uint">
+      <value name="SURFTYPE_1D" value="0" />
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_3D" value="2" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_BUFFER" value="4" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface Base Address" dword="1" bits="31:0" type="address" />
+    <field name="MIP Count / LOD" dword="2" bits="5:2" type="uint" />
+    <field name="Width" dword="2" bits="18:6" type="uint" />
+    <field name="Height" dword="2" bits="31:19" type="uint" />
+    <field name="Tile Walk" dword="3" bits="0:0" type="uint">
+      <value name="TILEWALK_XMAJOR" value="0" />
+      <value name="TILEWALK_YMAJOR" value="1" />
+    </field>
+    <field name="Tiled Surface" dword="3" bits="1:1" type="uint" />
+    <field name="Surface Pitch" dword="3" bits="19:3" type="uint" />
+    <field name="Depth" dword="3" bits="31:21" type="uint" />
+    <field name="Render Target View Extent" dword="4" bits="16:8" type="uint" />
+    <field name="Minimum Array Element" dword="4" bits="27:17" type="uint" />
+    <field name="Surface Min LOD" dword="4" bits="31:28" type="uint" />
+    <field name="Y Offset" dword="5" bits="23:20" type="uint" />
+    <field name="X Offset" dword="5" bits="31:25" type="uint" />
+  </struct>
+  <struct name="SAMPLER_STATE" length="4">
+    <field name="Shadow Function" dword="0" bits="2:0" type="uint" prefix="PREFILTEROP">
+      <value name="ALWAYS" value="0" />
+      <value name="NEVER" value="1" />
+      <value name="LESS" value="2" />
+      <value name="EQUAL" value="3" />
+      <value name="LEQUAL" value="4" />
+      <value name="GREATER" value="5" />
+      <value name="NOTEQUAL" value="6" />
+      <value name="GEQUAL" value="7" />
+    </field>
+    <field name="Texture LOD Bias" dword="0" bits="13:3" type="s4.6" />
+    <field name="Min Mode Filter" dword="0" bits="16:14" type="uint" prefix="MAPFILTER" />
+    <field name="Mag Mode Filter" dword="0" bits="19:17" type="uint" prefix="MAPFILTER">
+      <value name="NEAREST" value="0" />
+      <value name="LINEAR" value="1" />
+      <value name="ANISOTROPIC" value="2" />
+      <value name="MONO" value="6" />
+    </field>
+    <field name="Mip Mode Filter" dword="0" bits="21:20" type="uint" prefix="MIPFILTER">
+      <value name="NONE" value="0" />
+      <value name="NEAREST" value="1" />
+      <value name="LINEAR" value="3" />
+    </field>
+    <field name="Base Mip Level" dword="0" bits="26:22" type="u4.1" />
+    <field name="LOD PreClamp Enable" dword="0" bits="28:28" type="bool" />
+    <field name="Sampler Disable" dword="0" bits="31:31" type="bool" />
+    <field name="TCZ Address Control Mode" dword="1" bits="2:0" type="Texture Coordinate Mode" />
+    <field name="TCY Address Control Mode" dword="1" bits="5:3" type="Texture Coordinate Mode" />
+    <field name="TCX Address Control Mode" dword="1" bits="8:6" type="Texture Coordinate Mode" />
+    <field name="Cube Surface Control Mode" dword="1" bits="9:9" type="uint">
+      <value name="CUBECTRLMODE_PROGRAMMED" value="0" />
+      <value name="CUBECTRLMODE_OVERRIDE" value="1" />
+    </field>
+    <field name="Max LOD" dword="1" bits="21:12" type="u4.6" />
+    <field name="Min LOD" dword="1" bits="31:22" type="u4.6" />
+    <field name="Border Color Pointer" dword="2" bits="31:5" type="address" />
+    <field name="R Address Min Filter Rounding Enable" dword="3" bits="13:13" type="bool" />
+    <field name="R Address Mag Filter Rounding Enable" dword="3" bits="14:14" type="bool" />
+    <field name="V Address Min Filter Rounding Enable" dword="3" bits="15:15" type="bool" />
+    <field name="V Address Mag Filter Rounding Enable" dword="3" bits="16:16" type="bool" />
+    <field name="U Address Min Filter Rounding Enable" dword="3" bits="17:17" type="bool" />
+    <field name="U Address Mag Filter Rounding Enable" dword="3" bits="18:18" type="bool" />
+    <field name="Maximum Anisotropy" dword="3" bits="21:19" type="uint">
+      <value name="RATIO 2:1" value="0" />
+      <value name="RATIO 4:1" value="1" />
+      <value name="RATIO 6:1" value="2" />
+      <value name="RATIO 8:1" value="3" />
+      <value name="RATIO 10:1" value="4" />
+      <value name="RATIO 12:1" value="5" />
+      <value name="RATIO 14:1" value="6" />
+      <value name="RATIO 16:1" value="7" />
+    </field>
+    <field name="ChromaKey Mode" dword="3" bits="22:22" type="uint" prefix="KEYFILTER">
+      <value name="KILL_ON_ANY_MATCH" value="0" />
+      <value name="REPLACE_BLACK" value="1" />
+    </field>
+    <field name="ChromaKey Index" dword="3" bits="24:23" type="uint" />
+    <field name="ChromaKey Enable" dword="3" bits="25:25" type="bool" />
+    <field name="Monochrome Filter Width" dword="3" bits="28:26" type="uint" />
+    <field name="Monochrome Filter Height" dword="3" bits="31:29" type="uint" />
+  </struct>
+  <struct name="SF_STATE" length="8">
+    <field name="GRF Register Count" dword="0" bits="3:1" type="uint" />
+    <field name="Kernel Start Pointer" dword="0" bits="31:6" type="address" />
+    <field name="Software Exception Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint" prefix="FLOATING_POINT_MODE">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="1" bits="17:17" type="uint">
+      <value name="Normal Priority" value="0" />
+      <value name="High Priority" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Single Program Flow" dword="1" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="2" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="2" bits="31:10" type="address" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="3" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="3" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="3" bits="16:11" type="uint" />
+    <field name="Constant URB Entry Read Offset" dword="3" bits="23:18" type="uint" />
+    <field name="Constant URB Entry Read Length" dword="3" bits="30:25" type="uint" />
+    <field name="Statistics Enable" dword="4" bits="10:10" type="bool" />
+    <field name="Number of URB Entries" dword="4" bits="18:11" type="uint" />
+    <field name="URB Entry Allocation Size" dword="4" bits="23:19" type="uint" />
+    <field name="Maximum Number of Threads" dword="4" bits="30:25" type="uint" />
+    <field name="Front Winding" dword="5" bits="0:0" type="uint">
+      <value name="FRONTWINDING_CW" value="0" />
+      <value name="FRONTWINDING_CCW" value="1" />
+    </field>
+    <field name="Viewport Transform Enable" dword="5" bits="1:1" type="bool" />
+    <field name="Setup Viewport State Offset" dword="5" bits="31:5" type="address" />
+    <field name="Destination Origin Vertical Bias" dword="6" bits="12:9" type="u0.4" />
+    <field name="Destination Origin Horizontal Bias" dword="6" bits="16:13" type="u0.4" />
+    <field name="Scissor Rectangle Enable" dword="6" bits="17:17" type="bool" />
+    <field name="2x2 Pixel Triangle Filter Disable" dword="6" bits="18:18" type="bool" />
+    <field name="Zero Pixel Triangle Filter Disable" dword="6" bits="19:19" type="bool" />
+    <field name="Point Rasterization Rule" dword="6" bits="21:20" type="uint">
+      <value name="RASTRULE_UPPER_LEFT" value="0" />
+      <value name="RASTRULE_UPPER_RIGHT" value="1" />
+    </field>
+    <field name="Line End Cap Antialiasing Region Width" dword="6" bits="23:22" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Line Width" dword="6" bits="27:24" type="u3.1" />
+    <field name="Fast Scissor Clip Disable" dword="6" bits="28:28" type="bool" />
+    <field name="Cull Mode" dword="6" bits="30:29" type="uint" prefix="CULLMODE">
+      <value name="BOTH" value="0" />
+      <value name="NONE" value="1" />
+      <value name="FRONT" value="2" />
+      <value name="BACK" value="3" />
+    </field>
+    <field name="Antialiasing Enable" dword="6" bits="31:31" type="bool" />
+    <field name="Point Width" dword="7" bits="10:0" type="u8.3" />
+    <field name="Point Width Source" dword="7" bits="11:11" type="uint">
+      <value name="Vertex" value="0" />
+      <value name="State" value="1" />
+    </field>
+    <field name="Vertex Sub Pixel Precision Select" dword="7" bits="12:12" type="uint">
+      <value name="8 Sub-Pixel Precision Bits" value="0" />
+      <value name="4 Sub-Pixel Precision Bits" value="1" />
+    </field>
+    <field name="Sprite Point Enable" dword="7" bits="13:13" type="bool" />
+    <field name="AA Line Distance Mode" dword="7" bits="14:14" type="uint" prefix="AALINEDISTANCE">
+      <value name="MANHATTAN" value="0" />
+      <value name="TRUE" value="1" />
+    </field>
+    <field name="Triangle Fan Provoking Vertex Select" dword="7" bits="26:25" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+      <value name="Vertex 2" value="2" />
+    </field>
+    <field name="Line Strip/List Provoking Vertex Select" dword="7" bits="28:27" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+    </field>
+    <field name="Triangle Strip/List Provoking Vertex Select" dword="7" bits="30:29" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+      <value name="Vertex 2" value="2" />
+    </field>
+    <field name="Last Pixel Enable" dword="7" bits="31:31" type="bool" />
+  </struct>
+  <struct name="WM_STATE" length="8">
+    <field name="GRF Register Count 0" dword="0" bits="3:1" type="uint" />
+    <field name="Kernel Start Pointer 0" dword="0" bits="31:6" type="address" />
+    <field name="Software Exception Enable" dword="1" bits="1:1" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="4:4" type="bool" />
+    <field name="Depth Coefficient URB Read Offset" dword="1" bits="13:8" type="uint" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint" prefix="FLOATING_POINT_MODE">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="1" bits="17:17" type="uint">
+      <value name="Normal" value="0" />
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Single Program Flow" dword="1" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="2" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="2" bits="31:10" type="address" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 0" dword="3" bits="3:0" type="uint" />
+    <field name="Setup URB Entry Read Offset" dword="3" bits="9:4" type="uint" />
+    <field name="Setup URB Entry Read Length" dword="3" bits="16:11" type="uint" />
+    <field name="Constant URB Entry Read Offset" dword="3" bits="23:18" type="uint" />
+    <field name="Constant URB Entry Read Length" dword="3" bits="30:25" type="uint" />
+    <field name="Statistics Enable" dword="4" bits="0:0" type="bool" />
+    <field name="Sampler Count" dword="4" bits="4:2" type="uint" />
+    <field name="Sampler State Pointer" dword="4" bits="31:5" type="address" />
+    <field name="8 Pixel Dispatch Enable" dword="5" bits="0:0" type="bool" />
+    <field name="16 Pixel Dispatch Enable" dword="5" bits="1:1" type="bool" />
+    <field name="32 Pixel Dispatch Enable" dword="5" bits="2:2" type="bool" />
+    <field name="Contiguous 32 Pixel Dispatch Enable" dword="5" bits="3:3" type="bool" />
+    <field name="Contiguous 64 Pixel Dispatch Enable" dword="5" bits="4:4" type="bool" />
+    <field name="Legacy Global Depth Bias Enable" dword="5" bits="10:10" type="bool" />
+    <field name="Line Stipple Enable" dword="5" bits="11:11" type="bool" />
+    <field name="Global Depth Offset Enable" dword="5" bits="12:12" type="bool" />
+    <field name="Polygon Stipple Enable" dword="5" bits="13:13" type="bool" />
+    <field name="Line Antialiasing Region Width" dword="5" bits="15:14" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Line End Cap Antialiasing Region Width" dword="5" bits="17:16" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Early Depth Test Enable" dword="5" bits="18:18" type="bool" />
+    <field name="Thread Dispatch Enable" dword="5" bits="19:19" type="bool" />
+    <field name="Pixel Shader Uses Source Depth" dword="5" bits="20:20" type="bool" />
+    <field name="Pixel Shader Computed Depth" dword="5" bits="21:21" type="bool" />
+    <field name="Pixel Shader Kills Pixel" dword="5" bits="22:22" type="bool" />
+    <field name="Legacy Diamond Line Rasterization" dword="5" bits="23:23" type="bool" />
+    <field name="Maximum Number of Threads" dword="5" bits="31:25" type="uint" />
+    <field name="Global Depth Offset Constant" dword="6" bits="31:0" type="float" />
+    <field name="Global Depth Offset Scale" dword="7" bits="31:0" type="float" />
+  </struct>
+  <instruction name="3DPRIMITIVE" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="Indirect Vertex Count" dword="0" bits="9:9" type="uint" />
+    <field name="Primitive Topology Type" dword="0" bits="14:10" type="3D_Prim_Topo_Type" />
+    <field name="Vertex Access Type" dword="0" bits="15:15" type="uint">
+      <value name="SEQUENTIAL" value="0" />
+      <value name="RANDOM" value="1" />
+    </field>
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Vertex Count Per Instance" dword="1" bits="31:0" type="uint" />
+    <field name="Start Vertex Location" dword="2" bits="31:0" type="uint" />
+    <field name="Instance Count" dword="3" bits="31:0" type="uint" />
+    <field name="Start Instance Location" dword="4" bits="31:0" type="uint" />
+    <field name="Base Vertex Location" dword="5" bits="31:0" type="int" />
+  </instruction>
+  <instruction name="3DSTATE_AA_LINE_PARAMETERS" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="10" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="AA Coverage Slope" dword="1" bits="7:0" type="u0.8" />
+    <field name="AA Coverage Bias" dword="1" bits="23:16" type="u0.8" />
+    <field name="AA Coverage EndCap Slope" dword="2" bits="7:0" type="u0.8" />
+    <field name="AA Coverage EndCap Bias" dword="2" bits="23:16" type="u0.8" />
+  </instruction>
+  <instruction name="3DSTATE_DEPTH_BUFFER" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="5" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="Surface Format" dword="1" bits="20:18" type="uint">
+      <value name="D32_FLOAT_S8X24_UINT" value="0" />
+      <value name="D32_FLOAT" value="1" />
+      <value name="D24_UNORM_S8_UINT" value="2" />
+      <value name="D24_UNORM_X8_UINT" value="3" />
+      <value name="D16_UNORM" value="5" />
+    </field>
+    <field name="Software Tiled Rendering Mode" dword="1" bits="24:23" type="uint">
+      <value name="NORMAL" value="0" />
+      <value name="STR1" value="1" />
+      <value name="STR2" value="3" />
+    </field>
+    <field name="Depth Buffer Coordinate Offset Disable" dword="1" bits="25:25" type="bool" />
+    <field name="Tile Walk" dword="1" bits="26:26" type="uint">
+      <value name="TILEWALK_YMAJOR" value="1" />
+    </field>
+    <field name="Tiled Surface" dword="1" bits="27:27" type="bool" />
+    <field name="Surface Type" dword="1" bits="31:29" type="uint">
+      <value name="SURFTYPE_1D" value="0" />
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_3D" value="2" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface Base Address" dword="2" bits="31:0" type="address" />
+    <field name="MIP Map Layout Mode" dword="3" bits="1:1" type="uint">
+      <value name="MIPLAYOUT_BELOW" value="0" />
+      <value name="MIPLAYOUT_RIGHT" value="1" />
+    </field>
+    <field name="LOD" dword="3" bits="5:2" type="uint" />
+    <field name="Width" dword="3" bits="18:6" type="uint" />
+    <field name="Height" dword="3" bits="31:19" type="uint">
+      <value name="SURFTYPE_1D:  must be zero" value="0" />
+    </field>
+    <field name="Render Target View Extent" dword="4" bits="9:1" type="uint" />
+    <field name="Minimum Array Element" dword="4" bits="20:10" type="uint" />
+    <field name="Depth" dword="4" bits="31:21" type="uint">
+      <value name="SURFTYPE_CUBE:  must be zero" value="0" />
+    </field>
+    <field name="Depth Coordinate Offset X" dword="5" bits="15:0" type="int" />
+    <field name="Depth Coordinate Offset Y" dword="5" bits="31:16" type="int" />
+  </instruction>
+  <instruction name="3DSTATE_LINE_STIPPLE" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="8" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Line Stipple Pattern" dword="1" bits="15:0" type="uint" />
+    <field name="Current Stipple Index" dword="1" bits="19:16" type="uint" />
+    <field name="Current Repeat Counter" dword="1" bits="29:21" type="uint" />
+    <field name="Modify Enable (Current Repeat Counter, Current Stipple Index)" dword="1" bits="31:31" type="bool" />
+    <field name="Line Stipple Repeat Count" dword="2" bits="8:0" type="uint" />
+    <field name="Line Stipple Inverse Repeat Count" dword="2" bits="31:16" type="u1.13" />
+  </instruction>
+  <instruction name="3DSTATE_VF_STATISTICS" bias="1" length="1" engine="render">
+    <field name="Statistics Enable" dword="0" bits="0:0" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="11" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="1" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+  </instruction>
+  <instruction name="PIPELINE_SELECT" bias="1" length="1" engine="render">
+    <field name="Pipeline Selection" dword="0" bits="1:0" type="uint">
+      <value name="3D" value="0" />
+      <value name="Media" value="1" />
+    </field>
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="1" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+  </instruction>
+  <instruction name="PIPE_CONTROL" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="Notify Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Indirect State Pointers Disable" dword="0" bits="9:9" type="bool" />
+    <field name="Texture Cache Flush Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Instruction Cache Invalidate Enable" dword="0" bits="11:11" type="bool" />
+    <field name="Write Cache Flush" dword="0" bits="12:12" type="bool" />
+    <field name="Depth Stall Enable" dword="0" bits="13:13" type="bool" />
+    <field name="Post Sync Operation" dword="0" bits="15:14" type="uint">
+      <value name="No Write" value="0" />
+      <value name="Write Immediate Data" value="1" />
+      <value name="Write PS Depth Count" value="2" />
+      <value name="Write Timestamp" value="3" />
+    </field>
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Destination Address Type" dword="1" bits="2:2" type="uint" prefix="DAT">
+      <value name="PGTT" value="0" />
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Address" dword="1" bits="31:3" type="address" />
+    <field name="Immediate Data" dword="2" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="URB_FENCE" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="VS Unit URB Reallocation Request" dword="0" bits="8:8" type="bool" />
+    <field name="GS Unit URB Reallocation Request" dword="0" bits="9:9" type="bool" />
+    <field name="CLIP Unit URB Reallocation Request" dword="0" bits="10:10" type="bool" />
+    <field name="SF Unit URB Reallocation Request" dword="0" bits="11:11" type="bool" />
+    <field name="VFE Unit URB Reallocation Request" dword="0" bits="12:12" type="bool" />
+    <field name="CS Unit URB Reallocation Request" dword="0" bits="13:13" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="VS Fence" dword="1" bits="9:0" type="uint" />
+    <field name="GS Fence" dword="1" bits="19:10" type="uint" />
+    <field name="CLIP Fence" dword="1" bits="29:20" type="uint" />
+    <field name="SF Fence" dword="2" bits="9:0" type="uint" />
+    <field name="VFE Fence" dword="2" bits="19:10" type="uint" />
+    <field name="CS Fence" dword="2" bits="30:20" type="uint" />
+  </instruction>
+</genxml>
diff --git a/lib/genxml/gen50.xml b/lib/genxml/gen50.xml
new file mode 100644
index 000000000..1eddce9fe
--- /dev/null
+++ b/lib/genxml/gen50.xml
@@ -0,0 +1,648 @@
+<?xml version='1.0' encoding='utf-8'?>
+<genxml name="ILK" gen="5">
+  <import name="gen45.xml" />
+  <struct name="CLIP_STATE" length="11">
+    <field name="GRF Register Count" dword="0" bits="3:1" type="uint" />
+    <field name="Kernel Start Pointer" dword="0" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint" prefix="FLOATING_POINT_MODE">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="1" bits="17:17" type="uint">
+      <value name="Normal Priority" value="0" />
+      <value name="High Priority" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Single Program Flow" dword="1" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="2" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="2" bits="31:10" type="address" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="3" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="3" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="3" bits="16:11" type="uint" />
+    <field name="Constant URB Entry Read Offset" dword="3" bits="23:18" type="uint" />
+    <field name="Constant URB Entry Read Length" dword="3" bits="30:25" type="uint" />
+    <field name="Number of URB Entries" dword="4" bits="18:11" type="uint" />
+    <field name="URB Entry Allocation Size" dword="4" bits="23:19" type="uint" />
+    <field name="Maximum Number of Threads" dword="4" bits="30:25" type="uint" />
+    <field name="Clip Mode" dword="5" bits="15:13" type="uint" prefix="CLIPMODE">
+      <value name="NORMAL" value="0" />
+      <value name="ALL" value="1" />
+      <value name="CLIP_NON_REJECTED" value="2" />
+      <value name="REJECT_ALL" value="3" />
+      <value name="ACCEPT_ALL" value="4" />
+    </field>
+    <field name="UserClipDistance ClipTest Enable Bitmask" dword="5" bits="23:16" type="uint" />
+    <field name="UserClipFlags MustClip Enable" dword="5" bits="24:24" type="bool" />
+    <field name="Negative W ClipTest Enable" dword="5" bits="25:25" type="bool" />
+    <field name="Guardband ClipTest Enable" dword="5" bits="26:26" type="bool" />
+    <field name="Viewport Z ClipTest Enable" dword="5" bits="27:27" type="bool" />
+    <field name="Viewport XY ClipTest Enable" dword="5" bits="28:28" type="bool" />
+    <field name="Vertex Position Space" dword="5" bits="29:29" type="uint" prefix="VPOS">
+      <value name="NDCSPACE" value="0" />
+      <value name="SCREENSPACE" value="1" />
+    </field>
+    <field name="API Mode" dword="5" bits="30:30" type="uint" prefix="APIMODE">
+      <value name="OGL" value="0" />
+      <value name="D3D" value="1" />
+    </field>
+    <field name="Clipper Viewport State Pointer" dword="6" bits="31:5" type="address" />
+    <field name="Screen Space Viewport X Min" dword="7" bits="31:0" type="float" />
+    <field name="Screen Space Viewport X Max" dword="8" bits="31:0" type="float" />
+    <field name="Screen Space Viewport Y Min" dword="9" bits="31:0" type="float" />
+    <field name="Screen Space Viewport Y Max" dword="10" bits="31:0" type="float" />
+  </struct>
+  <struct name="GS_STATE" length="7">
+    <field name="GRF Register Count" dword="0" bits="3:1" type="uint" />
+    <field name="Kernel Start Pointer" dword="0" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint" prefix="FLOATING_POINT_MODE">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Single Program Flow" dword="1" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="2" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="2" bits="31:10" type="address" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="3" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="3" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="3" bits="16:11" type="uint" />
+    <field name="Constant URB Entry Read Offset" dword="3" bits="23:18" type="uint" />
+    <field name="Constant URB Entry Read Length" dword="3" bits="30:25" type="uint" />
+    <field name="Rendering Enabled" dword="4" bits="8:8" type="bool" />
+    <field name="SO Statistics Enable" dword="4" bits="9:9" type="bool" />
+    <field name="GS Statistics Enable" dword="4" bits="10:10" type="bool" />
+    <field name="Number of URB Entries" dword="4" bits="18:11" type="uint" />
+    <field name="URB Entry Allocation Size" dword="4" bits="23:19" type="uint" />
+    <field name="Maximum Number of Threads" dword="4" bits="30:25" type="uint" />
+    <field name="Sampler Count" dword="5" bits="2:0" type="uint" />
+    <field name="Sampler State Pointer" dword="5" bits="31:5" type="address" />
+    <field name="Maximum VPIndex" dword="6" bits="3:0" type="uint" />
+    <field name="Reorder Enable" dword="6" bits="30:30" type="bool" />
+  </struct>
+  <struct name="MEMORY_OBJECT_CONTROL_STATE" length="1">
+    <field name="Cacheability Control" dword="0" bits="1:0" type="uint" />
+    <field name="Graphics Data Type (GFDT)" dword="0" bits="2:2" type="uint" />
+    <field name="Encrypted Data" dword="0" bits="3:3" type="bool" />
+  </struct>
+  <struct name="RENDER_SURFACE_STATE" length="6">
+    <field name="Cube Face Enable - Positive Z" dword="0" bits="0:0" type="bool" />
+    <field name="Cube Face Enable - Negative Z" dword="0" bits="1:1" type="bool" />
+    <field name="Cube Face Enable - Positive Y" dword="0" bits="2:2" type="bool" />
+    <field name="Cube Face Enable - Negative Y" dword="0" bits="3:3" type="bool" />
+    <field name="Cube Face Enable - Positive X" dword="0" bits="4:4" type="bool" />
+    <field name="Cube Face Enable - Negative X" dword="0" bits="5:5" type="bool" />
+    <field name="Media Boundary Pixel Mode" dword="0" bits="7:6" type="uint">
+      <value name="NORMAL_MODE" value="0" />
+    </field>
+    <field name="Render Cache Read Write Mode" dword="0" bits="8:8" type="uint">
+      <value name="WRITE_ONLY" value="0" />
+      <value name="READ_WRITE" value="1" />
+    </field>
+    <field name="Cube Map Corner Mode" dword="0" bits="9:9" type="uint">
+      <value name="CUBE_REPLICATE" value="0" />
+      <value name="CUBE_AVERAGE" value="1" />
+    </field>
+    <field name="MIP Map Layout Mode" dword="0" bits="10:10" type="uint">
+      <value name="MIPLAYOUT_BELOW" value="0" />
+      <value name="MIPLAYOUT_RIGHT" value="1" />
+    </field>
+    <field name="Vertical Line Stride Offset" dword="0" bits="11:11" type="uint" />
+    <field name="Vertical Line Stride" dword="0" bits="12:12" type="uint" />
+    <field name="Color Blend Enable" dword="0" bits="13:13" type="bool" />
+    <field name="Color Buffer Component Write Disables" dword="0" bits="17:14" type="uint">
+      <value name="WRITEDISABLE_ALPHA" value="8" />
+      <value name="WRITEDISABLE_RED" value="4" />
+      <value name="WRITEDISABLE_GREEN" value="2" />
+      <value name="WRITEDISABLE_BLUE" value="1" />
+    </field>
+    <field name="Surface Format" dword="0" bits="26:18" type="uint" />
+    <field name="Data Return Format" dword="0" bits="27:27" type="uint">
+      <value name="DATA_RETURN_FLOAT32" value="0" />
+      <value name="DATA_RETURN_S1.14" value="1" />
+    </field>
+    <field name="Surface Type" dword="0" bits="31:29" type="uint">
+      <value name="SURFTYPE_1D" value="0" />
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_3D" value="2" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_BUFFER" value="4" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface Base Address" dword="1" bits="31:0" type="address" />
+    <field name="Render Target Rotation" dword="2" bits="1:0" type="uint">
+      <value name="RTROTATE_0DEG" value="0" />
+      <value name="RTROTATE_90DEG" value="1" />
+      <value name="RTROTATE_270DEG" value="3" />
+    </field>
+    <field name="MIP Count / LOD" dword="2" bits="5:2" type="uint" />
+    <field name="Width" dword="2" bits="18:6" type="uint" />
+    <field name="Height" dword="2" bits="31:19" type="uint" />
+    <field name="Tile Walk" dword="3" bits="0:0" type="uint">
+      <value name="TILEWALK_XMAJOR" value="0" />
+      <value name="TILEWALK_YMAJOR" value="1" />
+    </field>
+    <field name="Tiled Surface" dword="3" bits="1:1" type="uint" />
+    <field name="Surface Pitch" dword="3" bits="19:3" type="uint" />
+    <field name="Depth" dword="3" bits="31:21" type="uint" />
+    <field name="Render Target View Extent" dword="4" bits="16:8" type="uint" />
+    <field name="Minimum Array Element" dword="4" bits="27:17" type="uint" />
+    <field name="Surface Min LOD" dword="4" bits="31:28" type="uint" />
+    <field name="Y Offset" dword="5" bits="23:20" type="uint" />
+    <field name="X Offset" dword="5" bits="31:25" type="uint" />
+  </struct>
+  <struct name="SAMPLER_BORDER_COLOR_STATE" length="12">
+    <field name="Border Color Unorm Red" dword="0" bits="7:0" type="uint" />
+    <field name="Border Color Unorm Green" dword="0" bits="15:8" type="uint" />
+    <field name="Border Color Unorm Blue" dword="0" bits="23:16" type="uint" />
+    <field name="Border Color Unorm Alpha" dword="0" bits="31:24" type="uint" />
+    <field name="Border Color Float Red" dword="1" bits="31:0" type="float" />
+    <field name="Border Color Float Green" dword="2" bits="31:0" type="float" />
+    <field name="Border Color Float Blue" dword="3" bits="31:0" type="float" />
+    <field name="Border Color Float Alpha" dword="4" bits="31:0" type="float" />
+    <field name="Border Color Float16 Red" dword="5" bits="15:0" type="uint" />
+    <field name="Border Color Float16 Green" dword="5" bits="31:16" type="uint" />
+    <field name="Border Color Float16 Blue" dword="6" bits="15:0" type="uint" />
+    <field name="Border Color Float16 Alpha" dword="6" bits="31:16" type="uint" />
+    <field name="Border Color Unorm16 Red" dword="7" bits="15:0" type="uint" />
+    <field name="Border Color Unorm16 Green" dword="7" bits="31:16" type="uint" />
+    <field name="Border Color Unorm16 Blue" dword="8" bits="15:0" type="uint" />
+    <field name="Border Color Unorm16 Alpha" dword="8" bits="31:16" type="uint" />
+    <field name="Border Color Snorm16 Red" dword="9" bits="15:0" type="int" />
+    <field name="Border Color Snorm16 Green" dword="9" bits="31:16" type="int" />
+    <field name="Border Color Snorm16 Blue" dword="10" bits="15:0" type="int" />
+    <field name="Border Color Snorm16 Alpha" dword="10" bits="31:16" type="int" />
+    <field name="Border Color Snorm8 Red" dword="11" bits="7:0" type="int" />
+    <field name="Border Color Snorm8 Green" dword="11" bits="15:8" type="int" />
+    <field name="Border Color Snorm8 Blue" dword="11" bits="23:16" type="int" />
+    <field name="Border Color Snorm8 Alpha" dword="11" bits="31:24" type="int" />
+  </struct>
+  <struct name="SF_STATE" length="8">
+    <field name="GRF Register Count" dword="0" bits="3:1" type="uint" />
+    <field name="Kernel Start Pointer" dword="0" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint" prefix="FLOATING_POINT_MODE">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="1" bits="17:17" type="uint">
+      <value name="Normal Priority" value="0" />
+      <value name="High Priority" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Single Program Flow" dword="1" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="2" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="2" bits="31:10" type="address" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="3" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="3" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="3" bits="16:11" type="uint" />
+    <field name="Constant URB Entry Read Offset" dword="3" bits="23:18" type="uint" />
+    <field name="Constant URB Entry Read Length" dword="3" bits="30:25" type="uint" />
+    <field name="Number of URB Entries" dword="4" bits="18:11" type="uint" />
+    <field name="URB Entry Allocation Size" dword="4" bits="23:19" type="uint" />
+    <field name="Maximum Number of Threads" dword="4" bits="30:25" type="uint" />
+    <field name="Front Winding" dword="5" bits="0:0" type="uint">
+      <value name="FRONTWINDING_CW" value="0" />
+      <value name="FRONTWINDING_CCW" value="1" />
+    </field>
+    <field name="Viewport Transform Enable" dword="5" bits="1:1" type="bool" />
+    <field name="Setup Viewport State Offset" dword="5" bits="31:5" type="address" />
+    <field name="Destination Origin Vertical Bias" dword="6" bits="12:9" type="u0.4" />
+    <field name="Destination Origin Horizontal Bias" dword="6" bits="16:13" type="u0.4" />
+    <field name="Scissor Rectangle Enable" dword="6" bits="17:17" type="bool" />
+    <field name="2x2 Pixel Triangle Filter Disable" dword="6" bits="18:18" type="bool" />
+    <field name="Zero Pixel Triangle Filter Disable" dword="6" bits="19:19" type="bool" />
+    <field name="Point Rasterization Rule" dword="6" bits="21:20" type="uint">
+      <value name="RASTRULE_UPPER_LEFT" value="0" />
+      <value name="RASTRULE_UPPER_RIGHT" value="1" />
+    </field>
+    <field name="Line End Cap Antialiasing Region Width" dword="6" bits="23:22" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Line Width" dword="6" bits="27:24" type="u3.1" />
+    <field name="Fast Scissor Clip Disable" dword="6" bits="28:28" type="bool" />
+    <field name="Cull Mode" dword="6" bits="30:29" type="uint" prefix="CULLMODE">
+      <value name="BOTH" value="0" />
+      <value name="NONE" value="1" />
+      <value name="FRONT" value="2" />
+      <value name="BACK" value="3" />
+    </field>
+    <field name="Antialiasing Enable" dword="6" bits="31:31" type="bool" />
+    <field name="Point Width" dword="7" bits="10:0" type="u8.3" />
+    <field name="Point Width Source" dword="7" bits="11:11" type="uint">
+      <value name="Vertex" value="0" />
+      <value name="State" value="1" />
+    </field>
+    <field name="Vertex Sub Pixel Precision Select" dword="7" bits="12:12" type="uint">
+      <value name="8 Sub-Pixel Precision Bits" value="0" />
+      <value name="4 Sub-Pixel Precision Bits" value="1" />
+    </field>
+    <field name="Sprite Point Enable" dword="7" bits="13:13" type="bool" />
+    <field name="AA Line Distance Mode" dword="7" bits="14:14" type="uint" prefix="AALINEDISTANCE">
+      <value name="MANHATTAN" value="0" />
+      <value name="TRUE" value="1" />
+    </field>
+    <field name="Triangle Fan Provoking Vertex Select" dword="7" bits="26:25" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+      <value name="Vertex 2" value="2" />
+    </field>
+    <field name="Line Strip/List Provoking Vertex Select" dword="7" bits="28:27" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+    </field>
+    <field name="Triangle Strip/List Provoking Vertex Select" dword="7" bits="30:29" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+      <value name="Vertex 2" value="2" />
+    </field>
+    <field name="Last Pixel Enable" dword="7" bits="31:31" type="bool" />
+  </struct>
+  <struct name="VERTEX_BUFFER_STATE" length="4">
+    <field name="Buffer Pitch" dword="0" bits="11:0" type="uint" />
+    <field name="Null Vertex Buffer" dword="0" bits="13:13" type="bool" />
+    <field name="Buffer Access Type" dword="0" bits="26:26" type="uint">
+      <value name="VERTEXDATA" value="0" />
+      <value name="INSTANCEDATA" value="1" />
+    </field>
+    <field name="Vertex Buffer Index" dword="0" bits="31:27" type="uint" />
+    <field name="Buffer Starting Address" dword="1" bits="31:0" type="address" />
+    <field name="End Address" dword="2" bits="31:0" type="address" />
+    <field name="Instance Data Step Rate" dword="3" bits="31:0" type="uint" />
+  </struct>
+  <struct name="VS_STATE" length="7">
+    <field name="GRF Register Count" dword="0" bits="3:1" type="uint" />
+    <field name="Kernel Start Pointer" dword="0" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint" prefix="FLOATING_POINT_MODE">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="1" bits="17:17" type="uint">
+      <value name="Normal Priority" value="0" />
+      <value name="High Priority" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Single Program Flow" dword="1" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="2" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="2" bits="31:10" type="address" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="3" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="3" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="3" bits="16:11" type="uint" />
+    <field name="Constant URB Entry Read Offset" dword="3" bits="23:18" type="uint" />
+    <field name="Constant URB Entry Read Length" dword="3" bits="30:25" type="uint" />
+    <field name="Statistics Enable" dword="4" bits="10:10" type="bool" />
+    <field name="Number of URB Entries" dword="4" bits="18:11" type="uint" />
+    <field name="URB Entry Allocation Size" dword="4" bits="23:19" type="uint" />
+    <field name="Maximum Number of Threads" dword="4" bits="30:25" type="uint" />
+    <field name="Sampler Count" dword="5" bits="2:0" type="uint" />
+    <field name="Sampler State Pointer" dword="5" bits="31:5" type="address" />
+    <field name="Enable" dword="6" bits="0:0" type="bool" />
+    <field name="Vertex Cache Disable" dword="6" bits="1:1" type="bool" />
+  </struct>
+  <struct name="WM_STATE" length="11">
+    <field name="GRF Register Count 0" dword="0" bits="3:1" type="uint" />
+    <field name="Kernel Start Pointer 0" dword="0" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="1" bits="1:1" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="4:4" type="bool" />
+    <field name="Depth Coefficient URB Read Offset" dword="1" bits="13:8" type="uint" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint" prefix="FLOATING_POINT_MODE">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="1" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Single Program Flow" dword="1" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="2" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="2" bits="31:10" type="address" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 0" dword="3" bits="3:0" type="uint" />
+    <field name="Setup URB Entry Read Offset" dword="3" bits="9:4" type="uint" />
+    <field name="Setup URB Entry Read Length" dword="3" bits="16:11" type="uint" />
+    <field name="Constant URB Entry Read Offset" dword="3" bits="23:18" type="uint" />
+    <field name="Constant URB Entry Read Length" dword="3" bits="30:25" type="uint" />
+    <field name="Statistics Enable" dword="4" bits="0:0" type="bool" />
+    <field name="Sampler Count" dword="4" bits="4:2" type="uint" />
+    <field name="Sampler State Pointer" dword="4" bits="31:5" type="address" />
+    <field name="8 Pixel Dispatch Enable" dword="5" bits="0:0" type="bool" />
+    <field name="16 Pixel Dispatch Enable" dword="5" bits="1:1" type="bool" />
+    <field name="32 Pixel Dispatch Enable" dword="5" bits="2:2" type="bool" />
+    <field name="Contiguous 32 Pixel Dispatch Enable" dword="5" bits="3:3" type="bool" />
+    <field name="Contiguous 64 Pixel Dispatch Enable" dword="5" bits="4:4" type="bool" />
+    <field name="Fast Span Coverage Enable" dword="5" bits="6:6" type="bool" />
+    <field name="Depth Buffer Clear" dword="5" bits="7:7" type="bool" />
+    <field name="Depth Buffer Resolve Enable" dword="5" bits="8:8" type="bool" />
+    <field name="Hierarchical Depth Buffer Resolve Enable" dword="5" bits="9:9" type="bool" />
+    <field name="Legacy Global Depth Bias Enable" dword="5" bits="10:10" type="bool" />
+    <field name="Line Stipple Enable" dword="5" bits="11:11" type="bool" />
+    <field name="Global Depth Offset Enable" dword="5" bits="12:12" type="bool" />
+    <field name="Polygon Stipple Enable" dword="5" bits="13:13" type="bool" />
+    <field name="Line Antialiasing Region Width" dword="5" bits="15:14" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Line End Cap Antialiasing Region Width" dword="5" bits="17:16" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Early Depth Test Enable" dword="5" bits="18:18" type="bool" />
+    <field name="Thread Dispatch Enable" dword="5" bits="19:19" type="bool" />
+    <field name="Pixel Shader Uses Source Depth" dword="5" bits="20:20" type="bool" />
+    <field name="Pixel Shader Computed Depth" dword="5" bits="21:21" type="bool" />
+    <field name="Pixel Shader Kills Pixel" dword="5" bits="22:22" type="bool" />
+    <field name="Legacy Diamond Line Rasterization" dword="5" bits="23:23" type="bool" />
+    <field name="Maximum Number of Threads" dword="5" bits="31:25" type="uint" />
+    <field name="Global Depth Offset Constant" dword="6" bits="31:0" type="float" />
+    <field name="Global Depth Offset Scale" dword="7" bits="31:0" type="float" />
+    <field name="GRF Register Count 1" dword="8" bits="3:1" type="uint" />
+    <field name="Kernel Start Pointer 1" dword="8" bits="31:6" type="offset" />
+    <field name="GRF Register Count 2" dword="9" bits="3:1" type="uint" />
+    <field name="Kernel Start Pointer 2" dword="9" bits="31:6" type="offset" />
+    <field name="GRF Register Count 3" dword="10" bits="3:1" type="uint" />
+    <field name="Kernel Start Pointer 3" dword="10" bits="31:6" type="offset" />
+  </struct>
+  <instruction name="3DSTATE_CLEAR_PARAMS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="Depth Clear Value Valid" dword="0" bits="15:15" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="16" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Depth Clear Value" dword="1" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_DEPTH_BUFFER" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="5" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="Surface Format" dword="1" bits="20:18" type="uint">
+      <value name="D32_FLOAT_S8X24_UINT" value="0" />
+      <value name="D32_FLOAT" value="1" />
+      <value name="D24_UNORM_S8_UINT" value="2" />
+      <value name="D24_UNORM_X8_UINT" value="3" />
+      <value name="D16_UNORM" value="5" />
+    </field>
+    <field name="Separate Stencil Buffer Enable" dword="1" bits="21:21" type="bool" />
+    <field name="Hierarchical Depth Buffer Enable" dword="1" bits="22:22" type="bool" />
+    <field name="Software Tiled Rendering Mode" dword="1" bits="24:23" type="uint">
+      <value name="NORMAL" value="0" />
+      <value name="STR1" value="1" />
+      <value name="STR2" value="3" />
+    </field>
+    <field name="Tile Walk" dword="1" bits="26:26" type="uint">
+      <value name="TILEWALK_YMAJOR" value="1" />
+    </field>
+    <field name="Tiled Surface" dword="1" bits="27:27" type="bool" />
+    <field name="Surface Type" dword="1" bits="31:29" type="uint">
+      <value name="SURFTYPE_1D" value="0" />
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_3D" value="2" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface Base Address" dword="2" bits="31:0" type="address" />
+    <field name="MIP Map Layout Mode" dword="3" bits="1:1" type="uint">
+      <value name="MIPLAYOUT_BELOW" value="0" />
+      <value name="MIPLAYOUT_RIGHT" value="1" />
+    </field>
+    <field name="LOD" dword="3" bits="5:2" type="uint" />
+    <field name="Width" dword="3" bits="18:6" type="uint" />
+    <field name="Height" dword="3" bits="31:19" type="uint" />
+    <field name="Render Target View Extent" dword="4" bits="9:1" type="uint" />
+    <field name="Minimum Array Element" dword="4" bits="20:10" type="uint" />
+    <field name="Depth" dword="4" bits="31:21" type="uint" />
+    <field name="Depth Coordinate Offset X" dword="5" bits="15:0" type="int" />
+    <field name="Depth Coordinate Offset Y" dword="5" bits="31:16" type="int" />
+  </instruction>
+  <instruction name="3DSTATE_HIER_DEPTH_BUFFER" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="15" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="Surface Base Address" dword="2" bits="31:0" type="address" />
+  </instruction>
+  <instruction name="3DSTATE_LINE_STIPPLE" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="8" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Line Stipple Pattern" dword="1" bits="15:0" type="uint" />
+    <field name="Current Stipple Index" dword="1" bits="19:16" type="uint" />
+    <field name="Current Repeat Counter" dword="1" bits="29:21" type="uint" />
+    <field name="Modify Enable" dword="1" bits="31:31" type="bool" />
+    <field name="Line Stipple Repeat Count" dword="2" bits="8:0" type="uint" />
+    <field name="Line Stipple Inverse Repeat Count" dword="2" bits="31:16" type="u1.13" />
+  </instruction>
+  <instruction name="3DSTATE_STENCIL_BUFFER" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="14" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="Surface Base Address" dword="2" bits="31:0" type="address" />
+  </instruction>
+  <instruction name="CONSTANT_BUFFER" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="Valid" dword="0" bits="8:8" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="2" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Buffer Length" dword="1" bits="5:0" type="uint" />
+    <field name="Buffer Starting Address" dword="1" bits="31:6" type="address" />
+  </instruction>
+  <instruction name="MI_FLUSH" bias="1" length="1" engine="render">
+    <field name="State/Instruction Cache Invalidate" dword="0" bits="1:1" type="uint">
+      <value name="Don't Invalidate" value="0" />
+      <value name="Invalidate" value="1" />
+    </field>
+    <field name="Render Cache Flush Inhibit" dword="0" bits="2:2" type="uint">
+      <value name="Flush" value="0" />
+      <value name="Don't Flush" value="1" />
+    </field>
+    <field name="Global Snapshot Count Reset" dword="0" bits="3:3" type="uint">
+      <value name="Don't Reset" value="0" />
+      <value name="Reset" value="1" />
+    </field>
+    <field name="Generic Media State Clear" dword="0" bits="4:4" type="bool" />
+    <field name="Indirect State Pointers Disable" dword="0" bits="5:5" type="bool" />
+    <field name="Protected Memory Enable" dword="0" bits="6:6" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="4" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_STORE_DATA_IMM" bias="2" length="5">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="2" />
+    <field name="Memory Address Type" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="32" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Physical Start Address Extension" dword="1" bits="3:0" type="address" />
+    <field name="Address" dword="2" bits="31:2" type="address" />
+    <field name="Immediate Data" dword="3" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="MI_STORE_REGISTER_MEM" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Use Global GTT" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="36" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Register Address" dword="1" bits="25:2" type="offset" />
+    <field name="Memory Address" dword="2" bits="31:2" type="address" />
+  </instruction>
+  <instruction name="PIPELINE_SELECT" bias="1" length="1" engine="render">
+    <field name="Pipeline Selection" dword="0" bits="1:0" type="uint">
+      <value name="3D" value="0" />
+      <value name="Media" value="1" />
+      <value name="GPGPU" value="2" />
+    </field>
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="1" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+  </instruction>
+  <instruction name="PIPE_CONTROL" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="Notify Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Indirect State Pointers Disable" dword="0" bits="9:9" type="bool" />
+    <field name="Texture Cache Flush Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Instruction Cache Invalidate Enable" dword="0" bits="11:11" type="bool" />
+    <field name="Write Cache Flush" dword="0" bits="12:12" type="bool" />
+    <field name="Depth Stall Enable" dword="0" bits="13:13" type="bool" />
+    <field name="Post Sync Operation" dword="0" bits="15:14" type="uint">
+      <value name="No Write" value="0" />
+      <value name="Write Immediate Data" value="1" />
+      <value name="Write PS Depth Count" value="2" />
+      <value name="Write Timestamp" value="3" />
+    </field>
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Depth Cache Flush Inhibit" dword="1" bits="0:0" type="uint">
+      <value name="Flushed" value="0" />
+      <value name="Not Flushed" value="1" />
+    </field>
+    <field name="Stall At Pixel Scoreboard" dword="1" bits="1:1" type="bool" />
+    <field name="Destination Address Type" dword="1" bits="2:2" type="uint" prefix="DAT">
+      <value name="PGTT" value="0" />
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Address" dword="1" bits="31:3" type="address" />
+    <field name="Immediate Data" dword="2" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="STATE_BASE_ADDRESS" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="1" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="General State Base Address Modify Enable" dword="1" bits="0:0" type="bool" />
+    <field name="General State Base Address" dword="1" bits="31:12" type="address" />
+    <field name="Surface State Base Address Modify Enable" dword="2" bits="0:0" type="bool" />
+    <field name="Surface State Base Address" dword="2" bits="31:12" type="address" />
+    <field name="Indirect Object Base Address Modify Enable" dword="3" bits="0:0" type="bool" />
+    <field name="Indirect Object Base Address" dword="3" bits="31:12" type="address" />
+    <field name="Instruction Base Address Modify Enable" dword="4" bits="0:0" type="bool" />
+    <field name="Instruction Base Address" dword="4" bits="31:12" type="address" />
+    <field name="General State Access Upper Bound Modify Enable" dword="5" bits="0:0" type="bool" />
+    <field name="General State Access Upper Bound" dword="5" bits="31:12" type="address" />
+    <field name="Indirect Object Access Upper Bound Modify Enable" dword="6" bits="0:0" type="bool" />
+    <field name="Indirect Object Access Upper Bound" dword="6" bits="31:12" type="address" />
+    <field name="Instruction Access Upper Bound Modify Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Instruction Access Upper Bound" dword="7" bits="31:12" type="address" />
+  </instruction>
+  <instruction name="XY_COLOR_BLT" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="Tiling Enable" dword="0" bits="11:11" type="bool" />
+    <field name="32bpp Byte Mask" dword="0" bits="21:20" type="uint" />
+    <field name="2D Command Opcode" dword="0" bits="28:22" type="uint" default="80" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="2" />
+    <field name="Destination Pitch" dword="1" bits="15:0" type="int" />
+    <field name="Raster Operation" dword="1" bits="23:16" type="uint" />
+    <field name="Color Depth" dword="1" bits="26:24" type="uint" prefix="COLOR_DEPTH">
+      <value name="8 bit" value="0" />
+      <value name="565" value="1" />
+      <value name="1555" value="2" />
+      <value name="32 bit" value="3" />
+    </field>
+    <field name="Clipping Enabled" dword="1" bits="30:30" type="bool" />
+    <field name="Destination X1 Coordinate" dword="2" bits="15:0" type="int" />
+    <field name="Destination Y1 Coordinate" dword="2" bits="31:16" type="int" />
+    <field name="Destination X2 Coordinate" dword="3" bits="15:0" type="int" />
+    <field name="Destination Y2 Coordinate" dword="3" bits="31:16" type="int" />
+    <field name="Destination Base Address" dword="4" bits="31:0" type="address" />
+    <field name="Solid Pattern Color" dword="5" bits="31:0" type="int" />
+  </instruction>
+  <instruction name="XY_SETUP_BLT" bias="2" length="8" engine="blitter">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="Tiling Enable" dword="0" bits="11:11" type="bool" />
+    <field name="32bpp Byte Mask" dword="0" bits="21:20" type="uint" />
+    <field name="2D Command Opcode" dword="0" bits="28:22" type="uint" default="1" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="2" />
+    <field name="Destination Pitch" dword="1" bits="15:0" type="int" />
+    <field name="Raster Operation" dword="1" bits="23:16" type="uint" />
+    <field name="Color Depth" dword="1" bits="25:24" type="uint" prefix="COLOR_DEPTH">
+      <value name="8 bit" value="0" />
+      <value name="565" value="1" />
+      <value name="1555" value="2" />
+      <value name="32 bit" value="3" />
+    </field>
+    <field name="Mono Source Transparency Mode" dword="1" bits="28:28" type="bool" />
+    <field name="Clipping Enabled" dword="1" bits="30:30" type="bool" />
+    <field name="ClipRect X1 Coordinate" dword="2" bits="15:0" type="int" />
+    <field name="ClipRect Y1 Coordinate" dword="2" bits="31:16" type="int" />
+    <field name="ClipRect X2 Coordinate" dword="3" bits="15:0" type="int" />
+    <field name="ClipRect Y2 Coordinate" dword="3" bits="31:16" type="int" />
+    <field name="Destination Base Address" dword="4" bits="31:0" type="address" />
+    <field name="Background Color" dword="5" bits="31:0" type="uint" />
+    <field name="Foreground Color" dword="6" bits="31:0" type="uint" />
+    <field name="Pattern Base Address" dword="7" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="XY_SRC_COPY_BLT" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="Destination Tiling Enable" dword="0" bits="11:11" type="bool" />
+    <field name="Source Tiling Enable" dword="0" bits="15:15" type="bool" />
+    <field name="32bpp Byte Mask" dword="0" bits="21:20" type="uint" />
+    <field name="2D Command Opcode" dword="0" bits="28:22" type="uint" default="83" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="2" />
+    <field name="Destination Pitch" dword="1" bits="15:0" type="int" />
+    <field name="Raster Operation" dword="1" bits="23:16" type="uint" />
+    <field name="Color Depth" dword="1" bits="26:24" type="uint" prefix="COLOR_DEPTH">
+      <value name="8 bit" value="0" />
+      <value name="565" value="1" />
+      <value name="1555" value="2" />
+      <value name="32 bit" value="3" />
+    </field>
+    <field name="Clipping Enabled" dword="1" bits="30:30" type="bool" />
+    <field name="Destination X1 Coordinate" dword="2" bits="15:0" type="int" />
+    <field name="Destination Y1 Coordinate" dword="2" bits="31:16" type="int" />
+    <field name="Destination X2 Coordinate" dword="3" bits="15:0" type="int" />
+    <field name="Destination Y2 Coordinate" dword="3" bits="31:16" type="int" />
+    <field name="Destination Base Address" dword="4" bits="31:0" type="address" />
+    <field name="Source X1 Coordinate" dword="5" bits="15:0" type="int" />
+    <field name="Source Y1 Coordinate" dword="5" bits="31:16" type="int" />
+    <field name="Source Pitch" dword="6" bits="15:0" type="int" />
+    <field name="Source Base Address" dword="7" bits="31:0" type="address" />
+  </instruction>
+</genxml>
diff --git a/lib/genxml/gen60.xml b/lib/genxml/gen60.xml
new file mode 100644
index 000000000..035810d60
--- /dev/null
+++ b/lib/genxml/gen60.xml
@@ -0,0 +1,2606 @@
+<?xml version='1.0' encoding='utf-8'?>
+<genxml name="SNB" gen="6">
+  <import name="gen50.xml">
+    <exclude name="3DSTATE_CONSTANT_COLOR" />
+    <exclude name="3DSTATE_GLOBAL_DEPTH_OFFSET_CLAMP" />
+    <exclude name="3DSTATE_PIPELINED_POINTERS" />
+    <exclude name="CLIP_STATE" />
+    <exclude name="CONSTANT_BUFFER" />
+    <exclude name="CS_URB_STATE" />
+    <exclude name="GS_STATE" />
+    <exclude name="SF_STATE" />
+    <exclude name="URB_FENCE" />
+    <exclude name="VS_STATE" />
+    <exclude name="WM_STATE" />
+    <exclude name="XY_COLOR_BLT" />
+    <exclude name="XY_SETUP_BLT" />
+    <exclude name="XY_SRC_COPY_BLT" />
+    <exclude name="XY_TEXT_IMMEDIATE_BLT" />
+  </import>
+  <struct name="3DSTATE_CONSTANT_BODY" length="4">
+    <field name="Constant Buffer 0 Read Length" dword="0" bits="4:0" type="uint" />
+    <field name="Pointer to Constant Buffer 0" dword="0" bits="31:5" type="offset" />
+    <field name="Constant Buffer 1 Read Length" dword="1" bits="4:0" type="uint" />
+    <field name="Pointer to Constant Buffer 1" dword="1" bits="31:5" type="address" />
+    <field name="Constant Buffer 2 Read Length" dword="2" bits="4:0" type="uint" />
+    <field name="Pointer to Constant Buffer 2" dword="2" bits="31:5" type="address" />
+    <field name="Constant Buffer 3 Read Length" dword="3" bits="4:0" type="uint" />
+    <field name="Pointer to Constant Buffer 3" dword="3" bits="31:5" type="address" />
+  </struct>
+  <struct name="BINDING_TABLE_STATE" length="1">
+    <field name="Surface State Pointer" dword="0" bits="31:5" type="offset" />
+  </struct>
+  <struct name="BLEND_STATE_ENTRY" length="2">
+    <field name="Destination Blend Factor" dword="0" bits="4:0" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Source Blend Factor" dword="0" bits="9:5" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Color Blend Function" dword="0" bits="13:11" type="3D_Color_Buffer_Blend_Function" />
+    <field name="Destination Alpha Blend Factor" dword="0" bits="19:15" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Source Alpha Blend Factor" dword="0" bits="24:20" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Alpha Blend Function" dword="0" bits="28:26" type="3D_Color_Buffer_Blend_Function" />
+    <field name="Independent Alpha Blend Enable" dword="0" bits="30:30" type="bool" />
+    <field name="Color Buffer Blend Enable" dword="0" bits="31:31" type="bool" />
+    <field name="Post-Blend Color Clamp Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Pre-Blend Color Clamp Enable" dword="1" bits="1:1" type="bool" />
+    <field name="Color Clamp Range" dword="1" bits="3:2" type="uint">
+      <value name="COLORCLAMP_UNORM" value="0" />
+      <value name="COLORCLAMP_SNORM" value="1" />
+      <value name="COLORCLAMP_RTFORMAT" value="2" />
+    </field>
+    <field name="Y Dither Offset" dword="1" bits="9:8" type="uint" />
+    <field name="X Dither Offset" dword="1" bits="11:10" type="uint" />
+    <field name="Color Dither Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Alpha Test Function" dword="1" bits="15:13" type="3D_Compare_Function" />
+    <field name="Alpha Test Enable" dword="1" bits="16:16" type="bool" />
+    <field name="Logic Op Function" dword="1" bits="21:18" type="3D_Logic_Op_Function" />
+    <field name="Logic Op Enable" dword="1" bits="22:22" type="bool" />
+    <field name="Write Disable Blue" dword="1" bits="24:24" type="bool" />
+    <field name="Write Disable Green" dword="1" bits="25:25" type="bool" />
+    <field name="Write Disable Red" dword="1" bits="26:26" type="bool" />
+    <field name="Write Disable Alpha" dword="1" bits="27:27" type="bool" />
+    <field name="AlphaToCoverage Dither Enable" dword="1" bits="29:29" type="bool" />
+    <field name="AlphaToOne Enable" dword="1" bits="30:30" type="bool" />
+    <field name="AlphaToCoverage Enable" dword="1" bits="31:31" type="bool" />
+  </struct>
+  <struct name="BLEND_STATE" length="0">
+    <group count="0" dword="0" size="64">
+      <field name="Entry" dword="0" bits="63:0" type="BLEND_STATE_ENTRY" />
+    </group>
+  </struct>
+  <struct name="COLOR_CALC_STATE" length="6">
+    <field name="Alpha Test Format" dword="0" bits="0:0" type="uint">
+      <value name="ALPHATEST_UNORM8" value="0" />
+      <value name="ALPHATEST_FLOAT32" value="1" />
+    </field>
+    <field name="Round Disable Function Disable" dword="0" bits="15:15" type="bool" />
+    <field name="Backface Stencil Reference Value" dword="0" bits="23:16" type="uint" />
+    <field name="Stencil Reference Value" dword="0" bits="31:24" type="uint" />
+    <field name="Alpha Reference Value As UNORM8" dword="1" bits="31:0" type="uint" />
+    <field name="Alpha Reference Value As FLOAT32" dword="1" bits="31:0" type="float" />
+    <field name="Blend Constant Color Red" dword="2" bits="31:0" type="float" />
+    <field name="Blend Constant Color Green" dword="3" bits="31:0" type="float" />
+    <field name="Blend Constant Color Blue" dword="4" bits="31:0" type="float" />
+    <field name="Blend Constant Color Alpha" dword="5" bits="31:0" type="float" />
+  </struct>
+  <struct name="DEPTH_STENCIL_STATE" length="3">
+    <field name="Backface Stencil Pass Depth Pass Op" dword="0" bits="5:3" type="3D_Stencil_Operation" />
+    <field name="Backface Stencil Pass Depth Fail Op" dword="0" bits="8:6" type="3D_Stencil_Operation" />
+    <field name="Backface Stencil Fail Op" dword="0" bits="11:9" type="3D_Stencil_Operation" />
+    <field name="Backface Stencil Test Function" dword="0" bits="14:12" type="3D_Compare_Function" />
+    <field name="Double Sided Stencil Enable" dword="0" bits="15:15" type="bool" />
+    <field name="Stencil Buffer Write Enable" dword="0" bits="18:18" type="bool" />
+    <field name="Stencil Pass Depth Pass Op" dword="0" bits="21:19" type="3D_Stencil_Operation" />
+    <field name="Stencil Pass Depth Fail Op" dword="0" bits="24:22" type="3D_Stencil_Operation" />
+    <field name="Stencil Fail Op" dword="0" bits="27:25" type="3D_Stencil_Operation" />
+    <field name="Stencil Test Function" dword="0" bits="30:28" type="3D_Compare_Function" />
+    <field name="Stencil Test Enable" dword="0" bits="31:31" type="bool" />
+    <field name="Backface Stencil Write Mask" dword="1" bits="7:0" type="uint" />
+    <field name="Backface Stencil Test Mask" dword="1" bits="15:8" type="uint" />
+    <field name="Stencil Write Mask" dword="1" bits="23:16" type="uint" />
+    <field name="Stencil Test Mask" dword="1" bits="31:24" type="uint" />
+    <field name="Depth Buffer Write Enable" dword="2" bits="26:26" type="bool" />
+    <field name="Depth Test Function" dword="2" bits="29:27" type="3D_Compare_Function" />
+    <field name="Depth Test Enable" dword="2" bits="31:31" type="bool" />
+  </struct>
+  <struct name="INTERFACE_DESCRIPTOR_DATA" length="8">
+    <field name="Kernel Start Pointer" dword="0" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="1" bits="17:17" type="uint">
+      <value name="Normal Priority" value="0" />
+      <value name="High Priority" value="1" />
+    </field>
+    <field name="Single Program Flow" dword="1" bits="18:18" type="bool" />
+    <field name="Sampler Count" dword="2" bits="4:2" type="uint">
+      <value name="No samplers used" value="0" />
+      <value name="Between 1 and 4 samplers used" value="1" />
+      <value name="Between 5 and 8 samplers used" value="2" />
+      <value name="Between 9 and 12 samplers used" value="3" />
+      <value name="Between 13 and 16 samplers used" value="4" />
+    </field>
+    <field name="Sampler State Pointer" dword="2" bits="31:5" type="offset" />
+    <field name="Binding Table Entry Count" dword="3" bits="4:0" type="uint" />
+    <field name="Binding Table Pointer" dword="3" bits="31:5" type="offset" />
+    <field name="Constant URB Entry Read Offset" dword="4" bits="15:0" type="uint" />
+    <field name="Constant URB Entry Read Length" dword="4" bits="31:16" type="uint" />
+    <field name="Barrier ID" dword="5" bits="3:0" type="uint" />
+    <field name="Barrier Return Byte" dword="5" bits="15:8" type="uint" />
+    <field name="Barrier Return GRF Offset" dword="5" bits="31:24" type="uint" />
+  </struct>
+  <struct name="MEMORY_OBJECT_CONTROL_STATE" length="1">
+    <field name="Cacheability Control" dword="0" bits="1:0" type="uint" />
+    <field name="Graphics Data Type (GFDT)" dword="0" bits="2:2" type="uint" />
+  </struct>
+  <struct name="PALETTE_ENTRY" length="1">
+    <field name="Blue" dword="0" bits="7:0" type="uint" />
+    <field name="Green" dword="0" bits="15:8" type="uint" />
+    <field name="Red" dword="0" bits="23:16" type="uint" />
+    <field name="Alpha" dword="0" bits="31:24" type="uint" />
+  </struct>
+  <struct name="RENDER_SURFACE_STATE" length="6">
+    <field name="Cube Face Enable - Positive Z" dword="0" bits="0:0" type="bool" />
+    <field name="Cube Face Enable - Negative Z" dword="0" bits="1:1" type="bool" />
+    <field name="Cube Face Enable - Positive Y" dword="0" bits="2:2" type="bool" />
+    <field name="Cube Face Enable - Negative Y" dword="0" bits="3:3" type="bool" />
+    <field name="Cube Face Enable - Positive X" dword="0" bits="4:4" type="bool" />
+    <field name="Cube Face Enable - Negative X" dword="0" bits="5:5" type="bool" />
+    <field name="Media Boundary Pixel Mode" dword="0" bits="7:6" type="uint">
+      <value name="NORMAL_MODE" value="0" />
+      <value name="PROGRESSIVE_FRAME" value="2" />
+      <value name="INTERLACED_FRAME" value="3" />
+    </field>
+    <field name="Render Cache Read Write Mode" dword="0" bits="8:8" type="uint">
+      <value name="WRITE_ONLY" value="0" />
+      <value name="READ_WRITE" value="1" />
+    </field>
+    <field name="Cube Map Corner Mode" dword="0" bits="9:9" type="uint">
+      <value name="CUBE_REPLICATE" value="0" />
+      <value name="CUBE_AVERAGE" value="1" />
+    </field>
+    <field name="MIP Map Layout Mode" dword="0" bits="10:10" type="uint">
+      <value name="MIPLAYOUT_BELOW" value="0" />
+      <value name="MIPLAYOUT_RIGHT" value="1" />
+    </field>
+    <field name="Vertical Line Stride Offset" dword="0" bits="11:11" type="uint" />
+    <field name="Vertical Line Stride" dword="0" bits="12:12" type="uint" />
+    <field name="Surface Format" dword="0" bits="26:18" type="uint" />
+    <field name="Data Return Format" dword="0" bits="27:27" type="uint">
+      <value name="DATA_RETURN_FLOAT32" value="0" />
+    </field>
+    <field name="Surface Type" dword="0" bits="31:29" type="uint">
+      <value name="SURFTYPE_1D" value="0" />
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_3D" value="2" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_BUFFER" value="4" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface Base Address" dword="1" bits="31:0" type="address" />
+    <field name="Render Target Rotation" dword="2" bits="1:0" type="uint">
+      <value name="RTROTATE_0DEG" value="0" />
+      <value name="RTROTATE_90DEG" value="1" />
+      <value name="RTROTATE_270DEG" value="3" />
+    </field>
+    <field name="MIP Count / LOD" dword="2" bits="5:2" type="uint" />
+    <field name="Width" dword="2" bits="18:6" type="uint" />
+    <field name="Height" dword="2" bits="31:19" type="uint" />
+    <field name="Tile Walk" dword="3" bits="0:0" type="uint">
+      <value name="TILEWALK_XMAJOR" value="0" />
+      <value name="TILEWALK_YMAJOR" value="1" />
+    </field>
+    <field name="Tiled Surface" dword="3" bits="1:1" type="bool" />
+    <field name="Surface Pitch" dword="3" bits="19:3" type="uint" />
+    <field name="Depth" dword="3" bits="31:21" type="uint" />
+    <field name="Multisample Position Palette Index" dword="4" bits="2:0" type="uint" />
+    <field name="Number of Multisamples" dword="4" bits="6:4" type="uint">
+      <value name="MULTISAMPLECOUNT_1" value="0" />
+      <value name="MULTISAMPLECOUNT_4" value="2" />
+    </field>
+    <field name="Render Target View Extent" dword="4" bits="16:8" type="uint" />
+    <field name="Minimum Array Element" dword="4" bits="27:17" type="uint" />
+    <field name="Surface Min LOD" dword="4" bits="31:28" type="uint" />
+    <field name="MOCS" dword="5" bits="19:16" type="uint" />
+    <field name="Y Offset" dword="5" bits="23:20" type="uint" />
+    <field name="Surface Vertical Alignment" dword="5" bits="24:24" type="uint">
+      <value name="VALIGN_2" value="0" />
+      <value name="VALIGN_4" value="1" />
+    </field>
+    <field name="X Offset" dword="5" bits="31:25" type="uint" />
+  </struct>
+  <struct name="SAMPLER_STATE" length="4">
+    <field name="Shadow Function" dword="0" bits="2:0" type="uint" prefix="PREFILTEROP">
+      <value name="ALWAYS" value="0" />
+      <value name="NEVER" value="1" />
+      <value name="LESS" value="2" />
+      <value name="EQUAL" value="3" />
+      <value name="LEQUAL" value="4" />
+      <value name="GREATER" value="5" />
+      <value name="NOTEQUAL" value="6" />
+      <value name="GEQUAL" value="7" />
+    </field>
+    <field name="Texture LOD Bias" dword="0" bits="13:3" type="s4.6" />
+    <field name="Min Mode Filter" dword="0" bits="16:14" type="uint" prefix="MAPFILTER" />
+    <field name="Mag Mode Filter" dword="0" bits="19:17" type="uint" prefix="MAPFILTER">
+      <value name="NEAREST" value="0" />
+      <value name="LINEAR" value="1" />
+      <value name="ANISOTROPIC" value="2" />
+      <value name="MONO" value="6" />
+    </field>
+    <field name="Mip Mode Filter" dword="0" bits="21:20" type="uint" prefix="MIPFILTER">
+      <value name="NONE" value="0" />
+      <value name="NEAREST" value="1" />
+      <value name="LINEAR" value="3" />
+    </field>
+    <field name="Base Mip Level" dword="0" bits="26:22" type="u4.1" />
+    <field name="Min and Mag State Not Equal" dword="0" bits="27:27" type="uint">
+      <value name="MIN_MAG_EQ" value="0" />
+      <value name="MIN_MAG_NEQ" value="1" />
+    </field>
+    <field name="LOD PreClamp Enable" dword="0" bits="28:28" type="uint" prefix="CLAMP_ENABLE">
+      <value name="OGL" value="1" />
+    </field>
+    <field name="Texture Border Color Mode" dword="0" bits="29:29" type="uint">
+      <value name="DX10/OGL" value="0" />
+      <value name="DX9" value="1" />
+    </field>
+    <field name="Sampler Disable" dword="0" bits="31:31" type="bool" />
+    <field name="TCZ Address Control Mode" dword="1" bits="2:0" type="Texture Coordinate Mode" />
+    <field name="TCY Address Control Mode" dword="1" bits="5:3" type="Texture Coordinate Mode" />
+    <field name="TCX Address Control Mode" dword="1" bits="8:6" type="Texture Coordinate Mode" />
+    <field name="Cube Surface Control Mode" dword="1" bits="9:9" type="uint">
+      <value name="CUBECTRLMODE_PROGRAMMED" value="0" />
+      <value name="CUBECTRLMODE_OVERRIDE" value="1" />
+    </field>
+    <field name="Max LOD" dword="1" bits="21:12" type="u4.6" />
+    <field name="Min LOD" dword="1" bits="31:22" type="u4.6" />
+    <field name="Border Color Pointer" dword="2" bits="31:5" type="offset" />
+    <field name="Non-normalized Coordinate Enable" dword="3" bits="0:0" type="bool" />
+    <field name="R Address Min Filter Rounding Enable" dword="3" bits="13:13" type="bool" />
+    <field name="R Address Mag Filter Rounding Enable" dword="3" bits="14:14" type="bool" />
+    <field name="V Address Min Filter Rounding Enable" dword="3" bits="15:15" type="bool" />
+    <field name="V Address Mag Filter Rounding Enable" dword="3" bits="16:16" type="bool" />
+    <field name="U Address Min Filter Rounding Enable" dword="3" bits="17:17" type="bool" />
+    <field name="U Address Mag Filter Rounding Enable" dword="3" bits="18:18" type="bool" />
+    <field name="Maximum Anisotropy" dword="3" bits="21:19" type="uint">
+      <value name="RATIO 2:1" value="0" />
+      <value name="RATIO 4:1" value="1" />
+      <value name="RATIO 6:1" value="2" />
+      <value name="RATIO 8:1" value="3" />
+      <value name="RATIO 10:1" value="4" />
+      <value name="RATIO 12:1" value="5" />
+      <value name="RATIO 14:1" value="6" />
+      <value name="RATIO 16:1" value="7" />
+    </field>
+    <field name="ChromaKey Mode" dword="3" bits="22:22" type="uint">
+      <value name="KEYFILTER_KILL_ON_ANY_MATCH" value="0" />
+      <value name="KEYFILTER_REPLACE_BLACK" value="1" />
+    </field>
+    <field name="ChromaKey Index" dword="3" bits="24:23" type="uint" />
+    <field name="ChromaKey Enable" dword="3" bits="25:25" type="bool" />
+    <field name="Monochrome Filter Width" dword="3" bits="28:26" type="uint" />
+    <field name="Monochrome Filter Height: Reserved" dword="3" bits="31:29" type="uint" />
+  </struct>
+  <struct name="SF_OUTPUT_ATTRIBUTE_DETAIL" length="1">
+    <field name="Source Attribute" dword="0" bits="4:0" type="uint" />
+    <field name="Swizzle Select" dword="0" bits="7:6" type="uint">
+      <value name="INPUTATTR" value="0" />
+      <value name="INPUTATTR_FACING" value="1" />
+      <value name="INPUTATTR_W" value="2" />
+      <value name="INPUTATTR_FACING_W" value="3" />
+    </field>
+    <field name="Constant Source" dword="0" bits="10:9" type="uint">
+      <value name="CONST_0000" value="0" />
+      <value name="CONST_0001_FLOAT" value="1" />
+      <value name="CONST_1111_FLOAT" value="2" />
+      <value name="PRIM_ID" value="3" />
+    </field>
+    <field name="Swizzle Control Mode" dword="0" bits="11:11" type="uint" />
+    <field name="Component Override X" dword="0" bits="12:12" type="bool" />
+    <field name="Component Override Y" dword="0" bits="13:13" type="bool" />
+    <field name="Component Override Z" dword="0" bits="14:14" type="bool" />
+    <field name="Component Override W" dword="0" bits="15:15" type="bool" />
+  </struct>
+  <struct name="SF_VIEWPORT" length="8">
+    <field name="Viewport Matrix Element m00" dword="0" bits="31:0" type="float" />
+    <field name="Viewport Matrix Element m11" dword="1" bits="31:0" type="float" />
+    <field name="Viewport Matrix Element m22" dword="2" bits="31:0" type="float">
+      <value name="Excludes DWord (0,1)" value="0" />
+    </field>
+    <field name="Viewport Matrix Element m30" dword="3" bits="31:0" type="float" />
+    <field name="Viewport Matrix Element m31" dword="4" bits="31:0" type="float" />
+    <field name="Viewport Matrix Element m32" dword="5" bits="31:0" type="float" />
+  </struct>
+  <struct name="VERTEX_BUFFER_STATE" length="4">
+    <field name="Buffer Pitch" dword="0" bits="11:0" type="uint" />
+    <field name="Vertex Fetch Invalidate" dword="0" bits="12:12" type="bool" default="0" />
+    <field name="Null Vertex Buffer" dword="0" bits="13:13" type="bool" />
+    <field name="MOCS" dword="0" bits="19:16" type="uint" />
+    <field name="Buffer Access Type" dword="0" bits="20:20" type="uint">
+      <value name="VERTEXDATA" value="0" />
+      <value name="INSTANCEDATA" value="1" />
+    </field>
+    <field name="Vertex Buffer Index" dword="0" bits="31:26" type="uint" />
+    <field name="Buffer Starting Address" dword="1" bits="31:0" type="address" />
+    <field name="End Address" dword="2" bits="31:0" type="address" />
+    <field name="Instance Data Step Rate" dword="3" bits="31:0" type="uint" />
+  </struct>
+  <struct name="VERTEX_ELEMENT_STATE" length="2">
+    <field name="Source Element Offset" dword="0" bits="11:0" type="uint" />
+    <field name="Edge Flag Enable" dword="0" bits="15:15" type="bool" />
+    <field name="Source Element Format" dword="0" bits="24:16" type="uint" />
+    <field name="Valid" dword="0" bits="25:25" type="bool" />
+    <field name="Vertex Buffer Index" dword="0" bits="31:26" type="uint" />
+    <field name="Component 3 Control" dword="1" bits="18:16" type="3D_Vertex_Component_Control" />
+    <field name="Component 2 Control" dword="1" bits="22:20" type="3D_Vertex_Component_Control" />
+    <field name="Component 1 Control" dword="1" bits="26:24" type="3D_Vertex_Component_Control" />
+    <field name="Component 0 Control" dword="1" bits="30:28" type="3D_Vertex_Component_Control" />
+  </struct>
+  <instruction name="3DPRIMITIVE" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="Internal Vertex Count" dword="0" bits="9:9" type="uint" />
+    <field name="Primitive Topology Type" dword="0" bits="14:10" type="3D_Prim_Topo_Type" />
+    <field name="Vertex Access Type" dword="0" bits="15:15" type="uint">
+      <value name="SEQUENTIAL" value="0" />
+      <value name="RANDOM" value="1" />
+    </field>
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Vertex Count Per Instance" dword="1" bits="31:0" type="uint" />
+    <field name="Start Vertex Location" dword="2" bits="31:0" type="uint" />
+    <field name="Instance Count" dword="3" bits="31:0" type="uint">
+      <value name="UNDEFINED" value="0" />
+      <value name="'non-instanced' operation" value="1" />
+    </field>
+    <field name="Start Instance Location" dword="4" bits="31:0" type="uint" />
+    <field name="Base Vertex Location" dword="5" bits="31:0" type="int" />
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_POINTERS" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="VS Binding Table Change" dword="0" bits="8:8" type="bool" />
+    <field name="GS Binding Table Change" dword="0" bits="9:9" type="bool" />
+    <field name="PS Binding Table Change" dword="0" bits="12:12" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="1" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to VS Binding Table" dword="1" bits="31:5" type="offset" />
+    <field name="Pointer to GS Binding Table" dword="2" bits="31:5" type="offset" />
+    <field name="Pointer to PS Binding Table" dword="3" bits="31:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_CC_STATE_POINTERS" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="14" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="BLEND_STATE Change" dword="1" bits="0:0" type="bool" />
+    <field name="Pointer to BLEND_STATE" dword="1" bits="31:6" type="offset" />
+    <field name="DEPTH_STENCIL_STATE Change" dword="2" bits="0:0" type="bool" />
+    <field name="Pointer to DEPTH_STENCIL_STATE" dword="2" bits="31:6" type="offset" />
+    <field name="Color Calc State Pointer Valid" dword="3" bits="0:0" type="bool" />
+    <field name="Color Calc State Pointer" dword="3" bits="31:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_CHROMA_KEY" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="ChromaKey Table Index" dword="1" bits="31:30" type="uint" />
+    <field name="ChromaKey Low Value" dword="2" bits="31:0" type="uint" />
+    <field name="ChromaKey High Value" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_CLIP" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="18" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="1" bits="7:0" type="uint" />
+    <field name="Statistics Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Triangle Fan Provoking Vertex Select" dword="2" bits="1:0" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+      <value name="Vertex 2" value="2" />
+    </field>
+    <field name="Line Strip/List Provoking Vertex Select" dword="2" bits="3:2" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+    </field>
+    <field name="Triangle Strip/List Provoking Vertex Select" dword="2" bits="5:4" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+      <value name="Vertex 2" value="2" />
+    </field>
+    <field name="Non-Perspective Barycentric Enable" dword="2" bits="8:8" type="bool" />
+    <field name="Perspective Divide Disable" dword="2" bits="9:9" type="bool" />
+    <field name="Clip Mode" dword="2" bits="15:13" type="uint">
+      <value name="CLIPMODE_NORMAL" value="0" />
+      <value name="CLIPMODE_REJECT_ALL" value="3" />
+      <value name="CLIPMODE_ACCEPT_ALL" value="4" />
+    </field>
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="2" bits="23:16" type="uint" />
+    <field name="Guardband Clip Test Enable" dword="2" bits="26:26" type="bool" />
+    <field name="Viewport Z Clip Test Enable" dword="2" bits="27:27" type="bool" />
+    <field name="Viewport XY Clip Test Enable" dword="2" bits="28:28" type="bool" />
+    <field name="API Mode" dword="2" bits="30:30" type="uint">
+      <value name="APIMODE_OGL" value="0" />
+      <value name="APIMODE_D3D" value="1" />
+    </field>
+    <field name="Clip Enable" dword="2" bits="31:31" type="bool" />
+    <field name="Maximum VP Index" dword="3" bits="3:0" type="uint" />
+    <field name="Force Zero RTA Index Enable" dword="3" bits="5:5" type="bool" />
+    <field name="Maximum Point Width" dword="3" bits="16:6" type="u8.3" />
+    <field name="Minimum Point Width" dword="3" bits="27:17" type="u8.3" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_GS" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="MOCS" dword="0" bits="11:8" type="uint" />
+    <field name="Buffer 0 Valid" dword="0" bits="12:12" type="bool" />
+    <field name="Buffer 1 Valid" dword="0" bits="13:13" type="bool" />
+    <field name="Buffer 2 Valid" dword="0" bits="14:14" type="bool" />
+    <field name="Buffer 3 Valid" dword="0" bits="15:15" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="22" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Body" dword="1" bits="127:0" type="3DSTATE_CONSTANT_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_PS" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="MOCS" dword="0" bits="11:8" type="uint" />
+    <field name="Buffer 0 Valid" dword="0" bits="12:12" type="bool" />
+    <field name="Buffer 1 Valid" dword="0" bits="13:13" type="bool" />
+    <field name="Buffer 2 Valid" dword="0" bits="14:14" type="bool" />
+    <field name="Buffer 3 Valid" dword="0" bits="15:15" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="23" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Body" dword="1" bits="127:0" type="3DSTATE_CONSTANT_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_VS" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="MOCS" dword="0" bits="11:8" type="uint" />
+    <field name="Buffer 0 Valid" dword="0" bits="12:12" type="bool" />
+    <field name="Buffer 1 Valid" dword="0" bits="13:13" type="bool" />
+    <field name="Buffer 2 Valid" dword="0" bits="14:14" type="bool" />
+    <field name="Buffer 3 Valid" dword="0" bits="15:15" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="21" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Body" dword="1" bits="127:0" type="3DSTATE_CONSTANT_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_DEPTH_BUFFER" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="5" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="Surface Format" dword="1" bits="20:18" type="uint">
+      <value name="D32_FLOAT_S8X24_UINT" value="0" />
+      <value name="D32_FLOAT" value="1" />
+      <value name="D24_UNORM_S8_UINT" value="2" />
+      <value name="D24_UNORM_X8_UINT" value="3" />
+      <value name="D16_UNORM" value="5" />
+    </field>
+    <field name="Separate Stencil Buffer Enable" dword="1" bits="21:21" type="bool" />
+    <field name="Hierarchical Depth Buffer Enable" dword="1" bits="22:22" type="bool" />
+    <field name="Software Tiled Rendering Mode" dword="1" bits="24:23" type="uint">
+      <value name="NORMAL" value="0" />
+      <value name="STR1" value="1" />
+      <value name="STR2" value="3" />
+    </field>
+    <field name="Tile Walk" dword="1" bits="26:26" type="uint">
+      <value name="TILEWALK_YMAJOR" value="1" />
+    </field>
+    <field name="Tiled Surface" dword="1" bits="27:27" type="bool" />
+    <field name="Surface Type" dword="1" bits="31:29" type="uint">
+      <value name="SURFTYPE_1D" value="0" />
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_3D" value="2" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface Base Address" dword="2" bits="31:0" type="address" />
+    <field name="MIP Map Layout Mode" dword="3" bits="1:1" type="uint">
+      <value name="MIPLAYOUT_BELOW" value="0" />
+      <value name="MIPLAYOUT_RIGHT" value="1" />
+    </field>
+    <field name="LOD" dword="3" bits="5:2" type="uint" />
+    <field name="Width" dword="3" bits="18:6" type="uint" />
+    <field name="Height" dword="3" bits="31:19" type="uint" />
+    <field name="Render Target View Extent" dword="4" bits="9:1" type="uint" />
+    <field name="Minimum Array Element" dword="4" bits="20:10" type="uint" />
+    <field name="Depth" dword="4" bits="31:21" type="uint" />
+    <field name="Depth Coordinate Offset X" dword="5" bits="15:0" type="int" />
+    <field name="Depth Coordinate Offset Y" dword="5" bits="31:16" type="int" />
+    <field name="MOCS" dword="6" bits="31:27" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_GS" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="17" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="2" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="2" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="2" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="2" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="2" bits="17:17" type="uint">
+      <value name="Normal Priority" value="0" />
+      <value name="High Priority" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="2" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="2" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="2" bits="30:30" type="bool" />
+    <field name="Single Program Flow" dword="2" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="3" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="3" bits="31:10" type="address" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="4" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="4" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="4" bits="16:11" type="uint" />
+    <field name="Rendering Enabled" dword="5" bits="8:8" type="uint" />
+    <field name="SO Statistics Enable" dword="5" bits="9:9" type="bool" />
+    <field name="Statistics Enable" dword="5" bits="10:10" type="bool" />
+    <field name="Maximum Number of Threads" dword="5" bits="31:25" type="uint" />
+    <field name="Enable" dword="6" bits="15:15" type="bool" />
+    <field name="SVBI Post-Increment Value" dword="6" bits="25:16" type="uint" />
+    <field name="SVBI Post-Increment Enable" dword="6" bits="27:27" type="bool" />
+    <field name="SVBI Payload Enable" dword="6" bits="28:28" type="bool" />
+    <field name="Discard Adjacency" dword="6" bits="29:29" type="bool" />
+    <field name="Reorder Mode" dword="6" bits="30:30" type="uint">
+      <value name="LEADING" value="0" />
+      <value name="TRAILING" value="1" />
+    </field>
+  </instruction>
+  <instruction name="3DSTATE_GS_SVB_INDEX" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="11" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Load Internal Vertex Count" dword="1" bits="0:0" type="uint" />
+    <field name="Index Number" dword="1" bits="30:29" type="uint" />
+    <field name="Streamed Vertex Buffer Index" dword="2" bits="31:0" type="uint" />
+    <field name="Maximum Index" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_HIER_DEPTH_BUFFER" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="15" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="MOCS" dword="1" bits="28:25" type="uint" />
+    <field name="Surface Base Address" dword="2" bits="31:0" type="address" />
+  </instruction>
+  <instruction name="3DSTATE_INDEX_BUFFER" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Index Format" dword="0" bits="9:8" type="uint" prefix="INDEX">
+      <value name="BYTE" value="0" />
+      <value name="WORD" value="1" />
+      <value name="DWORD" value="2" />
+    </field>
+    <field name="Cut Index Enable" dword="0" bits="10:10" type="bool" />
+    <field name="MOCS" dword="0" bits="15:12" type="uint" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="10" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Buffer Starting Address" dword="1" bits="31:0" type="address" />
+    <field name="Buffer Ending Address" dword="2" bits="31:0" type="address" />
+  </instruction>
+  <instruction name="3DSTATE_LINE_STIPPLE" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="8" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Line Stipple Pattern" dword="1" bits="15:0" type="uint" />
+    <field name="Current Stipple Index" dword="1" bits="19:16" type="uint" />
+    <field name="Current Repeat Counter" dword="1" bits="29:21" type="uint" />
+    <field name="Modify Enable (Current Repeat Counter, Current Stipple Index)" dword="1" bits="31:31" type="bool" />
+    <field name="Line Stipple Repeat Count" dword="2" bits="8:0" type="uint" />
+    <field name="Line Stipple Inverse Repeat Count" dword="2" bits="31:16" type="u1.13" />
+  </instruction>
+  <instruction name="3DSTATE_MONOFILTER_SIZE" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="17" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Monochrome Filter Height" dword="1" bits="2:0" type="uint" />
+    <field name="Monochrome Filter Width" dword="1" bits="5:3" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_MULTISAMPLE" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="13" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Number of Multisamples" dword="1" bits="3:1" type="uint">
+      <value name="NUMSAMPLES_1" value="0" />
+      <value name="NUMSAMPLES_4" value="2" />
+    </field>
+    <field name="Pixel Location" dword="1" bits="4:4" type="uint">
+      <value name="CENTER" value="0" />
+      <value name="UL_CORNER" value="1" />
+    </field>
+    <field name="Sample0 Y Offset" dword="2" bits="3:0" type="u0.4" />
+    <field name="Sample0 X Offset" dword="2" bits="7:4" type="u0.4" />
+    <field name="Sample1 Y Offset" dword="2" bits="11:8" type="u0.4" />
+    <field name="Sample1 X Offset" dword="2" bits="15:12" type="u0.4" />
+    <field name="Sample2 Y Offset" dword="2" bits="19:16" type="u0.4" />
+    <field name="Sample2 X Offset" dword="2" bits="23:20" type="u0.4" />
+    <field name="Sample3 Y Offset" dword="2" bits="27:24" type="u0.4" />
+    <field name="Sample3 X Offset" dword="2" bits="31:28" type="u0.4" />
+  </instruction>
+  <instruction name="3DSTATE_SAMPLER_PALETTE_LOAD0" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="2" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="0" dword="1" size="32">
+      <field name="Entry" dword="0" bits="31:0" type="PALETTE_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_SAMPLER_PALETTE_LOAD1" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="12" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="0" dword="1" size="32">
+      <field name="Palette Alpha[0:N-1]" dword="0" bits="31:24" type="uint" />
+      <field name="Palette Red[0:N-1]" dword="0" bits="23:16" type="uint" />
+      <field name="Palette Green[0:N-1]" dword="0" bits="15:8" type="uint" />
+      <field name="Palette Blue[0:N-1]" dword="0" bits="7:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_SAMPLER_STATE_POINTERS" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="VS Sampler State Change" dword="0" bits="8:8" type="uint" />
+    <field name="GS Sampler State Change" dword="0" bits="9:9" type="uint" />
+    <field name="PS Sampler State Change" dword="0" bits="12:12" type="uint" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="2" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to VS Sampler State" dword="1" bits="31:5" type="offset" />
+    <field name="Pointer to GS Sampler State" dword="2" bits="31:5" type="offset" />
+    <field name="Pointer to PS Sampler State" dword="3" bits="31:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_SAMPLE_MASK" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="24" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Sample Mask" dword="1" bits="3:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_SCISSOR_STATE_POINTERS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="15" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Scissor Rect Pointer" dword="1" bits="31:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_SF" bias="2" length="20" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="18" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="19" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Vertex URB Entry Read Offset" dword="1" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="1" bits="15:11" type="uint" />
+    <field name="Point Sprite Texture Coordinate Origin" dword="1" bits="20:20" type="uint">
+      <value name="UPPERLEFT" value="0" />
+      <value name="LOWERLEFT" value="1" />
+    </field>
+    <field name="Attribute Swizzle Enable" dword="1" bits="21:21" type="bool" />
+    <field name="Number of SF Output Attributes" dword="1" bits="27:22" type="uint" />
+    <field name="Front Winding" dword="2" bits="0:0" type="uint">
+      <value name="FRONTWINDING_CW" value="0" />
+      <value name="FRONTWINDING_CCW" value="1" />
+    </field>
+    <field name="Viewport Transform Enable" dword="2" bits="1:1" type="bool" />
+    <field name="BackFace Fill Mode" dword="2" bits="4:3" type="uint" prefix="FILL_MODE">
+      <value name="SOLID" value="0" />
+      <value name="WIREFRAME" value="1" />
+      <value name="POINT" value="2" />
+    </field>
+    <field name="FrontFace Fill Mode" dword="2" bits="6:5" type="uint" prefix="FILL_MODE">
+      <value name="SOLID" value="0" />
+      <value name="WIREFRAME" value="1" />
+      <value name="POINT" value="2" />
+    </field>
+    <field name="Global Depth Offset Enable Point" dword="2" bits="7:7" type="bool" />
+    <field name="Global Depth Offset Enable Wireframe" dword="2" bits="8:8" type="bool" />
+    <field name="Global Depth Offset Enable Solid" dword="2" bits="9:9" type="bool" />
+    <field name="Statistics Enable" dword="2" bits="10:10" type="bool" />
+    <field name="Legacy Global Depth Bias Enable" dword="2" bits="11:11" type="bool" />
+    <field name="Multisample Rasterization Mode" dword="3" bits="9:8" type="uint">
+      <value name="MSRASTMODE_OFF_PIXEL" value="0" />
+      <value name="MSRASTMODE_OFF_PATTERN" value="1" />
+      <value name="MSRASTMODE_ON_PIXEL" value="2" />
+      <value name="MSRASTMODE_ON_PATTERN" value="3" />
+    </field>
+    <field name="Scissor Rectangle Enable" dword="3" bits="11:11" type="bool" />
+    <field name="Line End Cap Antialiasing Region Width" dword="3" bits="17:16" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Line Width" dword="3" bits="27:18" type="u3.7" />
+    <field name="Cull Mode" dword="3" bits="30:29" type="uint" prefix="CULLMODE">
+      <value name="BOTH" value="0" />
+      <value name="NONE" value="1" />
+      <value name="FRONT" value="2" />
+      <value name="BACK" value="3" />
+    </field>
+    <field name="Antialiasing Enable" dword="3" bits="31:31" type="bool" />
+    <field name="Point Width" dword="4" bits="10:0" type="u8.3" />
+    <field name="Point Width Source" dword="4" bits="11:11" type="uint">
+      <value name="Vertex" value="0" />
+      <value name="State" value="1" />
+    </field>
+    <field name="Vertex Sub Pixel Precision Select" dword="4" bits="12:12" type="uint">
+      <value name="8 Sub-Pixel Precision Bits" value="0" />
+      <value name="4 Sub-Pixel Precision Bits" value="1" />
+    </field>
+    <field name="AA Line Distance Mode" dword="4" bits="14:14" type="uint">
+      <value name="AALINEDISTANCE_TRUE" value="1" />
+    </field>
+    <field name="Triangle Fan Provoking Vertex Select" dword="4" bits="26:25" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+      <value name="Vertex 2" value="2" />
+    </field>
+    <field name="Line Strip/List Provoking Vertex Select" dword="4" bits="28:27" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+    </field>
+    <field name="Triangle Strip/List Provoking Vertex Select" dword="4" bits="30:29" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+      <value name="Vertex 2" value="2" />
+    </field>
+    <field name="Last Pixel Enable" dword="4" bits="31:31" type="bool" />
+    <field name="Global Depth Offset Constant" dword="5" bits="31:0" type="float" />
+    <field name="Global Depth Offset Scale" dword="6" bits="31:0" type="float" />
+    <field name="Global Depth Offset Clamp" dword="7" bits="31:0" type="float" />
+    <group count="16" dword="8" size="16">
+      <field name="Attribute" dword="0" bits="15:0" type="SF_OUTPUT_ATTRIBUTE_DETAIL" />
+    </group>
+    <field name="Point Sprite Texture Coordinate Enable" dword="16" bits="31:0" type="uint" />
+    <field name="Constant Interpolation Enable" dword="17" bits="31:0" type="uint" />
+    <field name="Attribute 0 WrapShortest Enables" dword="18" bits="3:0" type="uint" />
+    <field name="Attribute 1 WrapShortest Enables" dword="18" bits="7:4" type="uint" />
+    <field name="Attribute 2 WrapShortest Enables" dword="18" bits="11:8" type="uint" />
+    <field name="Attribute 3 WrapShortest Enables" dword="18" bits="15:12" type="uint" />
+    <field name="Attribute 4 WrapShortest Enables" dword="18" bits="19:16" type="uint" />
+    <field name="Attribute 5 WrapShortest Enables" dword="18" bits="23:20" type="uint" />
+    <field name="Attribute 6 WrapShortest Enables" dword="18" bits="27:24" type="uint" />
+    <field name="Attribute 7 WrapShortest Enables" dword="18" bits="31:28" type="uint" />
+    <field name="Attribute 8 WrapShortest Enables" dword="19" bits="3:0" type="uint" />
+    <field name="Attribute 9 WrapShortest Enables" dword="19" bits="7:4" type="uint" />
+    <field name="Attribute 10 WrapShortest Enables" dword="19" bits="11:8" type="uint" />
+    <field name="Attribute 11 WrapShortest Enables" dword="19" bits="15:12" type="uint" />
+    <field name="Attribute 12 WrapShortest Enables" dword="19" bits="19:16" type="uint" />
+    <field name="Attribute 13 WrapShortest Enables" dword="19" bits="23:20" type="uint" />
+    <field name="Attribute 14 WrapShortest Enables" dword="19" bits="27:24" type="uint" />
+    <field name="Attribute 15 WrapShortest Enables" dword="19" bits="31:28" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_STENCIL_BUFFER" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="14" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="MOCS" dword="1" bits="28:25" type="uint" />
+    <field name="Surface Base Address" dword="2" bits="31:0" type="address" />
+  </instruction>
+  <instruction name="3DSTATE_URB" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="5" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="VS Number of URB Entries" dword="1" bits="15:0" type="uint" />
+    <field name="VS URB Entry Allocation Size" dword="1" bits="23:16" type="uint" />
+    <field name="GS URB Entry Allocation Size" dword="2" bits="2:0" type="uint" />
+    <field name="GS Number of URB Entries" dword="2" bits="17:8" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_VIEWPORT_STATE_POINTERS" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="CLIP Viewport State Change" dword="0" bits="10:10" type="uint" />
+    <field name="SF Viewport State Change" dword="0" bits="11:11" type="uint" />
+    <field name="CC Viewport State Change" dword="0" bits="12:12" type="uint" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="13" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to CLIP_VIEWPORT" dword="1" bits="31:5" type="offset" />
+    <field name="Pointer to SF_VIEWPORT" dword="2" bits="31:5" type="offset" />
+    <field name="Pointer to CC_VIEWPORT" dword="3" bits="31:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_VS" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="16" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="2" bits="7:7" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="2" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="2" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="2" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="2" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="2" bits="30:30" type="bool" />
+    <field name="Single Vertex Dispatch" dword="2" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="3" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="3" bits="31:10" type="address" />
+    <field name="Vertex URB Entry Read Offset" dword="4" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="4" bits="16:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="4" bits="24:20" type="uint" />
+    <field name="Enable" dword="5" bits="0:0" type="bool" />
+    <field name="Vertex Cache Disable" dword="5" bits="1:1" type="bool" />
+    <field name="Statistics Enable" dword="5" bits="10:10" type="bool" />
+    <field name="Maximum Number of Threads" dword="5" bits="31:25" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_WM" bias="2" length="9" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="7" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="20" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer 0" dword="1" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="2" bits="7:7" type="bool" />
+    <field name="MaskStack Exception Enable" dword="2" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="2" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="2" bits="16:16" type="uint" prefix="FLOATING_POINT_MODE">
+      <value name="IEEE-745" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="2" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="2" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="2" bits="29:27" type="uint" />
+    <field name="Vector Mask Enable" dword="2" bits="30:30" type="bool" />
+    <field name="Single Program Flow" dword="2" bits="31:31" type="bool" />
+    <field name="Per Thread Scratch Space" dword="3" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="3" bits="31:10" type="address" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 2" dword="4" bits="6:0" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 1" dword="4" bits="14:8" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 0" dword="4" bits="22:16" type="uint" />
+    <field name="Hierarchical Depth Buffer Resolve Enable" dword="4" bits="27:27" type="bool" />
+    <field name="Depth Buffer Resolve Enable" dword="4" bits="28:28" type="bool" />
+    <field name="Depth Buffer Clear" dword="4" bits="30:30" type="bool" />
+    <field name="Statistics Enable" dword="4" bits="31:31" type="bool" />
+    <field name="8 Pixel Dispatch Enable" dword="5" bits="0:0" type="bool" />
+    <field name="16 Pixel Dispatch Enable" dword="5" bits="1:1" type="bool" />
+    <field name="32 Pixel Dispatch Enable" dword="5" bits="2:2" type="bool" />
+    <field name="Dual Source Blend Enable" dword="5" bits="7:7" type="bool" />
+    <field name="Pixel Shader Uses Source W" dword="5" bits="8:8" type="bool" />
+    <field name="oMask Present to RenderTarget" dword="5" bits="9:9" type="bool" />
+    <field name="Line Stipple Enable" dword="5" bits="11:11" type="bool" />
+    <field name="Polygon Stipple Enable" dword="5" bits="13:13" type="bool" />
+    <field name="Line Antialiasing Region Width" dword="5" bits="15:14" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Line End Cap Antialiasing Region Width" dword="5" bits="17:16" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Thread Dispatch Enable" dword="5" bits="19:19" type="bool" />
+    <field name="Pixel Shader Uses Source Depth" dword="5" bits="20:20" type="bool" />
+    <field name="Pixel Shader Computed Depth" dword="5" bits="21:21" type="bool" />
+    <field name="Pixel Shader Kills Pixel" dword="5" bits="22:22" type="bool" />
+    <field name="Legacy Diamond Line Rasterization" dword="5" bits="23:23" type="bool" />
+    <field name="Maximum Number of Threads" dword="5" bits="31:25" type="uint" />
+    <field name="Multisample Dispatch Mode" dword="6" bits="0:0" type="uint">
+      <value name="MSDISPMODE_PERSAMPLE" value="0" />
+      <value name="MSDISPMODE_PERPIXEL" value="1" />
+    </field>
+    <field name="Multisample Rasterization Mode" dword="6" bits="2:1" type="uint">
+      <value name="MSRASTMODE_OFF_PIXEL" value="0" />
+      <value name="MSRASTMODE_OFF_PATTERN" value="1" />
+      <value name="MSRASTMODE_ON_PIXEL" value="2" />
+      <value name="MSRASTMODE_ON_PATTERN" value="3" />
+    </field>
+    <field name="Point Rasterization Rule" dword="6" bits="9:9" type="uint">
+      <value name="RASTRULE_UPPER_LEFT" value="0" />
+      <value name="RASTRULE_UPPER_RIGHT" value="1" />
+    </field>
+    <field name="Barycentric Interpolation Mode" dword="6" bits="15:10" type="uint">
+      <value name="BIM_PERSPECTIVE_PIXEL" value="1" />
+      <value name="BIM_PERSPECTIVE_CENTROID" value="2" />
+      <value name="BIM_PERSPECTIVE_SAMPLE" value="4" />
+      <value name="BIM_LINEAR_PIXEL" value="8" />
+      <value name="BIM_LINEAR_CENTROID" value="16" />
+      <value name="BIM_LINEAR_SAMPLE" value="32" />
+    </field>
+    <field name="Position ZW Interpolation Mode" dword="6" bits="17:16" type="uint">
+      <value name="INTERP_PIXEL" value="0" />
+      <value name="INTERP_CENTROID" value="2" />
+      <value name="INTERP_SAMPLE" value="3" />
+    </field>
+    <field name="Position XY Offset Select" dword="6" bits="19:18" type="uint">
+      <value name="POSOFFSET_NONE" value="0" />
+      <value name="POSOFFSET_CENTROID" value="2" />
+      <value name="POSOFFSET_SAMPLE" value="3" />
+    </field>
+    <field name="Number of SF Output Attributes" dword="6" bits="25:20" type="uint" />
+    <field name="Kernel Start Pointer 1" dword="7" bits="31:6" type="offset" />
+    <field name="Kernel Start Pointer 2" dword="8" bits="31:6" type="offset" />
+  </instruction>
+  <instruction name="MEDIA_CURBE_LOAD" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="2" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="CURBE Total Data Length" dword="2" bits="16:0" type="uint" />
+    <field name="CURBE Data Start Address" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MEDIA_GATEWAY_STATE" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="0" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="3" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Barrier.ThreadCount" dword="1" bits="7:0" type="uint" />
+    <field name="Barrier.Byte" dword="1" bits="15:8" type="uint" />
+    <field name="BarrierID" dword="1" bits="23:16" type="uint" />
+  </instruction>
+  <instruction name="MEDIA_INTERFACE_DESCRIPTOR_LOAD" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="2" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Total Length" dword="2" bits="16:0" type="uint" />
+    <field name="Interface Descriptor Data Start Address" dword="3" bits="31:0" type="offset" />
+  </instruction>
+  <instruction name="MEDIA_OBJECT" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="4" />
+    <field name="Media Command Sub-Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Media Command Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="4:0" type="uint" />
+    <field name="Indirect Data Length" dword="2" bits="16:0" type="uint" />
+    <field name="Use Scoreboard" dword="2" bits="21:21" type="uint">
+      <value name="Not using scoreboard" value="0" />
+      <value name="Using scoreboard" value="1" />
+    </field>
+    <field name="Thread Synchronization" dword="2" bits="24:24" type="uint">
+      <value name="No thread synchronization" value="0" />
+      <value name="Thread dispatch is synchronized by the 'spawn root thread' message" value="1" />
+    </field>
+    <field name="Children Present" dword="2" bits="31:31" type="bool" />
+    <field name="Indirect Data Start Address" dword="3" bits="31:0" type="address" />
+    <field name="Scoreboard X" dword="4" bits="8:0" type="uint" />
+    <field name="Scoredboard Y" dword="4" bits="24:16" type="uint" />
+    <field name="Scoreboard Mask" dword="5" bits="7:0" type="uint" />
+    <field name="Scoreboard Color" dword="5" bits="19:16" type="uint" />
+    <group count="0" dword="6" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MEDIA_OBJECT_PRT" bias="2" length="16" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="14" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="4:0" type="uint" />
+    <field name="PRT_FenceType" dword="2" bits="22:22" type="uint">
+      <value name="Root thread queue" value="0" />
+      <value name="VFE state flush" value="1" />
+    </field>
+    <field name="PRT_Fence Needed" dword="2" bits="23:23" type="bool" />
+    <field name="Children Present" dword="2" bits="31:31" type="bool" />
+    <group count="12" dword="4" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MEDIA_OBJECT_WALKER" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="15" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="3" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="4:0" type="uint" />
+    <field name="Indirect Data Length" dword="2" bits="16:0" type="uint" />
+    <field name="Use Scoreboard" dword="2" bits="21:21" type="uint">
+      <value name="Not using scoreboard" value="0" />
+      <value name="Using scoreboard" value="1" />
+    </field>
+    <field name="Thread Synchronization" dword="2" bits="24:24" type="uint">
+      <value name="No thread synchronization" value="0" />
+      <value name="Thread dispatch is synchronized by the 'spawn root thread' message" value="1" />
+    </field>
+    <field name="Children Present" dword="2" bits="31:31" type="uint" />
+    <field name="Indirect Data Start Address" dword="3" bits="31:0" type="offset" />
+    <field name="Scoreboard Mask" dword="5" bits="7:0" type="uint" />
+    <field name="Mid-Loop Unit X" dword="6" bits="9:8" type="int" />
+    <field name="Local Mid-Loop Unit Y" dword="6" bits="13:12" type="int" />
+    <field name="Middle Loop Extra Steps" dword="6" bits="20:16" type="uint" />
+    <field name="Color Count Minus One" dword="6" bits="27:24" type="uint" />
+    <field name="Repel" dword="6" bits="30:30" type="uint" />
+    <field name="Dual Mode" dword="6" bits="31:31" type="uint" />
+    <field name="Local Loop Exec Count" dword="7" bits="9:0" type="uint" />
+    <field name="Global Loop Exec Count" dword="7" bits="25:16" type="uint" />
+    <field name="Block Resolution X" dword="8" bits="8:0" type="uint" />
+    <field name="Block Resolution Y" dword="8" bits="24:16" type="uint" />
+    <field name="Local Start X" dword="9" bits="8:0" type="uint" />
+    <field name="Local Start Y" dword="9" bits="24:16" type="uint" />
+    <field name="Local End X" dword="10" bits="8:0" type="uint" />
+    <field name="Local End Y" dword="10" bits="24:16" type="uint" />
+    <field name="Local Outer Loop Stride X" dword="11" bits="9:0" type="int" />
+    <field name="Local Outer Loop Stride Y" dword="11" bits="25:16" type="int" />
+    <field name="Local Inner Loop Unit X" dword="12" bits="9:0" type="int" />
+    <field name="Local Inner Loop Unit Y" dword="12" bits="25:16" type="int" />
+    <field name="Global Resolution X" dword="13" bits="8:0" type="uint" />
+    <field name="Global Resolution Y" dword="13" bits="24:16" type="uint" />
+    <field name="Global Start X" dword="14" bits="9:0" type="int" />
+    <field name="Global Start Y" dword="14" bits="25:16" type="int" />
+    <field name="Global Outer Loop Stride X" dword="15" bits="9:0" type="int" />
+    <field name="Global Outer Loop Stride Y" dword="15" bits="25:16" type="int" />
+    <field name="Global Inner Loop Unit X" dword="16" bits="9:0" type="int" />
+    <field name="Global Inner Loop Unit Y" dword="16" bits="25:16" type="int" />
+    <group count="0" dword="17" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MEDIA_STATE_FLUSH" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="0" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Barrier Mask" dword="1" bits="15:0" type="uint">
+      <value name="Not Waiting" value="0" />
+      <value name="Waiting" value="1" />
+    </field>
+    <field name="Thread Count WaterMark" dword="1" bits="23:16" type="uint" />
+  </instruction>
+  <instruction name="MEDIA_VFE_STATE" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="6" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Per Thread Scratch Space" dword="1" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="1" bits="31:10" type="address" />
+    <field name="Fast Preempt" dword="2" bits="5:5" type="uint">
+      <value name="Preempt only _PRT" value="0" />
+    </field>
+    <field name="Bypass Gateway Control" dword="2" bits="6:6" type="uint">
+      <value name="Maintaining OpenGateway/ForwardMsg/CloseGateway protocol (legacy mode)" value="0" />
+      <value name="Bypassing OpenGateway/CloseGateway protocol" value="1" />
+    </field>
+    <field name="Reset Gateway Timer" dword="2" bits="7:7" type="uint">
+      <value name="Maintaining the existing timestamp state" value="0" />
+      <value name="Resetting relative timer and latching the global timestamp" value="1" />
+    </field>
+    <field name="Number of URB Entries" dword="2" bits="15:8" type="uint" />
+    <field name="Maximum Number of Threads" dword="2" bits="31:16" type="uint" />
+    <field name="CURBE Allocation Size" dword="4" bits="15:0" type="uint" />
+    <field name="URB Entry Allocation Size" dword="4" bits="31:16" type="uint" />
+    <field name="Scoreboard Mask" dword="5" bits="7:0" type="uint" />
+    <field name="Scoreboard Type" dword="5" bits="30:30" type="uint">
+      <value name="Stalling Scoreboard" value="0" />
+    </field>
+    <field name="Scoreboard Enable" dword="5" bits="31:31" type="uint">
+      <value name="Scoreboard disabled" value="0" />
+      <value name="Scoreboard enabled" value="1" />
+    </field>
+    <field name="Scoreboard 0 Delta X" dword="6" bits="3:0" type="int" />
+    <field name="Scoreboard 0 Delta Y" dword="6" bits="7:4" type="int" />
+    <field name="Scoreboard 1 Delta X" dword="6" bits="11:8" type="int" />
+    <field name="Scoreboard 1 Delta Y" dword="6" bits="15:12" type="int" />
+    <field name="Scoreboard 2 Delta X" dword="6" bits="19:16" type="int" />
+    <field name="Scoreboard 2 Delta Y" dword="6" bits="23:20" type="int" />
+    <field name="Scoreboard 3 Delta X" dword="6" bits="27:24" type="int" />
+    <field name="Scoreboard 3 Delta Y" dword="6" bits="31:28" type="int" />
+    <field name="Scoreboard 4 Delta X" dword="7" bits="3:0" type="int" />
+    <field name="Scoreboard 4 Delta Y" dword="7" bits="7:4" type="int" />
+    <field name="Scoreboard 5 Delta X" dword="7" bits="11:8" type="int" />
+    <field name="Scoreboard 5 Delta Y" dword="7" bits="15:12" type="int" />
+    <field name="Scoreboard 6 Delta X" dword="7" bits="19:16" type="int" />
+    <field name="Scoreboard 6 Delta Y" dword="7" bits="23:20" type="int" />
+    <field name="Scoreboard 7 Delta X" dword="7" bits="27:24" type="int" />
+    <field name="Scoreboard 7 Delta Y" dword="7" bits="31:28" type="int" />
+  </instruction>
+  <instruction name="MFC_AVC_FQM_STATE" bias="2" length="113" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="111" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="8" dword="1" size="32">
+      <field name="Luma4x4 Intra InvWeightScale" dword="0" bits="31:0" type="uint" />
+    </group>
+    <group count="8" dword="9" size="32">
+      <field name="Cb4x4 Intra InvWeightScale" dword="0" bits="31:0" type="uint" />
+    </group>
+    <group count="8" dword="17" size="32">
+      <field name="Cr4x4 Intra InvWeightScale" dword="0" bits="31:0" type="uint" />
+    </group>
+    <group count="6" dword="25" size="32">
+      <field name="Luma4x4 Inter InvWeightScale" dword="0" bits="31:0" type="uint" />
+    </group>
+    <group count="10" dword="31" size="32">
+      <field name="Cb4x4 Inter InvWeightScale" dword="0" bits="31:0" type="uint" />
+    </group>
+    <group count="8" dword="41" size="32">
+      <field name="Cr4x4 Inter InvWeightScale" dword="0" bits="31:0" type="uint" />
+    </group>
+    <group count="32" dword="49" size="32">
+      <field name="Luma8x8 Intra InvWeightScale" dword="0" bits="31:0" type="uint" />
+    </group>
+    <group count="32" dword="81" size="32">
+      <field name="Luma8x8 Inter InvWeightScale" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFC_AVC_PAK_INSERT_OBJECT" bias="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="8" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Bitstream Start Reset" dword="1" bits="0:0" type="bool" />
+    <field name="End of Slice" dword="1" bits="1:1" type="bool" />
+    <field name="Last Header" dword="1" bits="2:2" type="bool" />
+    <field name="Emulation Byte Bits Insert Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Skip Emulation Byte Count" dword="1" bits="7:4" type="uint" />
+    <field name="Data Bits In Last DW" dword="1" bits="13:8" type="uint" />
+    <field name="Data Byte Offset" dword="1" bits="17:16" type="uint" />
+    <group count="0" dword="2" size="32">
+      <field name="Insert Data PayLoad" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFC_AVC_PAK_OBJECT" bias="2" length="11" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="9" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="9" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect PAK-MV Data Length" dword="1" bits="9:0" type="uint" />
+    <field name="Indirect PAK-MV Data Start Address Offset" dword="2" bits="28:0" type="offset" />
+    <group count="8" dword="3" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFC_STITCH_OBJECT" bias="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="10" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Last Dst Data Insert Command" dword="1" bits="1:1" type="bool" />
+    <field name="Last Src Header Data Insert Command" dword="1" bits="2:2" type="bool" />
+    <field name="SrC Data Ending Bit Inclusion" dword="1" bits="13:8" type="uint" />
+    <field name="Src Data Starting Byte Offset" dword="1" bits="17:16" type="uint" />
+    <field name="Indirect Data Length" dword="2" bits="18:0" type="uint" />
+    <field name="Indirect Data Start Address" dword="3" bits="31:0" type="address" />
+    <group count="0" dword="4" size="32">
+      <field name="Insert Data PayLoad" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFD_AVC_BSD_OBJECT" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="8" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect BSD Data Length" dword="1" bits="21:0" type="uint" />
+    <field name="Indirect BSD Data Start Address" dword="2" bits="28:0" type="address" />
+    <group count="3" dword="3" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFD_IT_OBJECT" bias="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="12" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="9" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect IT-MV Data Length" dword="1" bits="9:0" type="uint" />
+    <field name="Indirect IT-MV Data Start Address Offset" dword="2" bits="28:0" type="offset" />
+    <field name="Indirect IT-COEFF Data Length" dword="3" bits="11:0" type="uint" />
+    <field name="Indirect IT-COEFF Data Start Address Offset" dword="4" bits="28:0" type="offset" />
+    <field name="Indirect IT-DBLK Control Data Length" dword="5" bits="5:0" type="uint" />
+    <field name="Indirect IT-DBLK Control Data Start Address Offset" dword="6" bits="28:0" type="offset" />
+    <group count="0" dword="7" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFD_MPEG2_BSD_OBJECT" bias="2" length="5" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="3" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="8" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect Data Length" dword="1" bits="16:0" type="uint" />
+    <field name="Indirect Data Start Address" dword="2" bits="28:0" type="address" />
+    <group count="2" dword="3" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFD_VC1_BSD_OBJECT" bias="2" length="4" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="2" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="8" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect Data Length" dword="1" bits="21:0" type="uint" />
+    <field name="Indirect Data Start Address" dword="2" bits="28:0" type="address" />
+    <field name="First MB Bit Offset" dword="3" bits="2:0" type="uint" />
+    <field name="Next Slice Start Vertical Position" dword="3" bits="23:16" type="uint" />
+    <field name="Slice Start Vertical Position" dword="3" bits="31:24" type="uint" />
+  </instruction>
+  <instruction name="MFX_AVC_DIRECTMODE_STATE" bias="2" length="69" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="67" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="32" dword="1" size="32">
+      <field name="Direct MV Buffer - Address" dword="0" bits="31:6" type="address" />
+      <field name="Direct MV Buffer - Arbitration Priority Control" dword="0" bits="5:4" type="uint">
+        <value name="Highest priority" value="0" />
+        <value name="Second highest priority" value="1" />
+        <value name="Third highest priority" value="2" />
+        <value name="Lowest priority" value="3" />
+      </field>
+      <field name="Direct MV Buffer - Graphics Data Type" dword="0" bits="2:2" type="uint" />
+      <field name="Direct MV Buffer - Cacheability Control" dword="0" bits="1:0" type="uint">
+        <value name="GTT entry" value="0" />
+        <value name="Not in LLC or MLC" value="1" />
+        <value name="In LLC but not MLC" value="2" />
+        <value name="Both LLC and MLC" value="3" />
+      </field>
+    </group>
+    <group count="2" dword="33" size="32">
+      <field name="Direct MV Buffer (Write) - Address" dword="0" bits="31:6" type="address" />
+      <field name="Direct MV Buffer (Write) - Arbitration Priority Control" dword="0" bits="5:4" type="uint">
+        <value name="Highest priority" value="0" />
+        <value name="Second highest priority" value="1" />
+        <value name="Third highest priority" value="2" />
+        <value name="Lowest priority" value="3" />
+      </field>
+      <field name="Direct MV Buffer (Write) - Graphics Data Type" dword="0" bits="2:2" type="uint" />
+      <field name="Direct MV Buffer (Write) - Cacheability Control" dword="0" bits="1:0" type="uint">
+        <value name="GTT entry" value="0" />
+        <value name="Not in LLC or MLC" value="1" />
+        <value name="In LLC but not MLC" value="2" />
+        <value name="Both LLC and MLC" value="3" />
+      </field>
+    </group>
+    <group count="34" dword="35" size="32">
+      <field name="POC List" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFX_AVC_IMG_STATE" bias="2" length="13" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="11" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Size" dword="1" bits="15:0" type="uint" />
+    <field name="Frame Width" dword="2" bits="7:0" type="uint" />
+    <field name="Frame Height" dword="2" bits="23:16" type="uint" />
+    <field name="Current Decoded Image Frame Store ID" dword="3" bits="7:0" type="uint" />
+    <field name="Image Structure" dword="3" bits="9:8" type="uint">
+      <value name="Frame Picture" value="0" />
+      <value name="Top Field Picture" value="1" />
+      <value name="Bottom Field Picture" value="3" />
+      <value name="Invalid, not allowed" value="2" />
+    </field>
+    <field name="QM Present" dword="3" bits="10:10" type="bool" />
+    <field name="Monochrome PWT Decoding Mode" dword="3" bits="12:12" type="bool" />
+    <field name="Inter MB Conformance" dword="3" bits="13:13" type="bool" />
+    <field name="Intra MB Conformance" dword="3" bits="14:14" type="bool" />
+    <field name="Second Chroma QP Offset" dword="3" bits="28:24" type="uint" />
+    <field name="Field Picture" dword="4" bits="0:0" type="bool" />
+    <field name="MBAFF Mode" dword="4" bits="1:1" type="bool" />
+    <field name="Frame MB Only" dword="4" bits="2:2" type="bool" />
+    <field name="8x8 IDCT Transform Mode" dword="4" bits="3:3" type="bool" />
+    <field name="Direct 8x8 Inference" dword="4" bits="4:4" type="bool" />
+    <field name="Constrained Intra Prediction" dword="4" bits="5:5" type="bool" />
+    <field name="Non-Reference Picture" dword="4" bits="6:6" type="bool" />
+    <field name="Entropy Coding" dword="4" bits="7:7" type="bool" />
+    <field name="Chroma Format IDC" dword="4" bits="11:10" type="uint">
+      <value name="Monochrome picture" value="0" />
+      <value name="4:2:0 picture" value="1" />
+      <value name="4:2:2 picture (not supported)" value="2" />
+      <value name="4:4:4 picture (not supported)" value="3" />
+    </field>
+    <field name="MV Unpacked Enable" dword="4" bits="12:12" type="bool" />
+    <field name="Load Bitstream Pointer Per Slice" dword="4" bits="14:14" type="bool" />
+    <field name="MB Status Read" dword="4" bits="15:15" type="bool" />
+    <field name="Minimum Frame Size" dword="4" bits="31:16" type="uint" />
+    <field name="Intra MB Max Bit Control" dword="5" bits="0:0" type="bool" />
+    <field name="Inter MB Max Bit Control" dword="5" bits="1:1" type="bool" />
+    <field name="Frame Bitrate Max Report" dword="5" bits="2:2" type="bool" />
+    <field name="Frame Bitrate Min Report" dword="5" bits="3:3" type="bool" />
+    <field name="Force IPCM Control" dword="5" bits="7:7" type="bool" />
+    <field name="MB Level Rate Control" dword="5" bits="9:9" type="bool" />
+    <field name="Inter MB Force CBP to Zero Control" dword="5" bits="12:12" type="bool" />
+    <field name="Frame Size Rate Control" dword="5" bits="16:16" type="bool" />
+    <field name="Intra MB Conformance Max Size" dword="6" bits="11:0" type="uint" />
+    <field name="Inter MB Conformance Max Size" dword="6" bits="27:16" type="uint" />
+    <field name="Slice Delta QP Max[0]" dword="8" bits="7:0" type="int" />
+    <field name="Slice Delta QP Max[1]" dword="8" bits="15:8" type="int" />
+    <field name="Slice Delta QP Max[2]" dword="8" bits="23:16" type="int" />
+    <field name="Slice Delta QP Max[3]" dword="8" bits="31:24" type="int" />
+    <field name="Slice Delta QP Min[0]" dword="9" bits="7:0" type="int" />
+    <field name="Slice Delta QP Min[1]" dword="9" bits="15:8" type="int" />
+    <field name="Slice Delta QP Min[2]" dword="9" bits="23:16" type="int" />
+    <field name="Slice Delta QP Min[3]" dword="9" bits="31:24" type="int" />
+    <field name="Frame Bitrate Min" dword="10" bits="11:0" type="uint" />
+    <field name="Frame Bitrate Min Unit" dword="10" bits="15:15" type="uint" />
+    <field name="Frame Bitrate Max" dword="10" bits="27:16" type="uint" />
+    <field name="Frame Bitrate Max Unit" dword="10" bits="31:31" type="uint" />
+    <field name="Frame Bitrate Min Delta" dword="11" bits="11:0" type="uint" />
+    <field name="Frame Bitrate Max Delta" dword="11" bits="27:16" type="uint" />
+  </instruction>
+  <instruction name="MFX_AVC_QM_STATE" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="1" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="QM List Present Flags for the current Slice" dword="1" bits="7:0" type="uint" />
+    <field name="Use built-in Default QM Flags for the current Slice" dword="1" bits="15:8" type="uint" />
+    <group count="4" dword="2" size="32">
+      <field name="Luma4x4 Intra Weight Scale" dword="0" bits="31:0" type="uint" />
+    </group>
+    <group count="4" dword="6" size="32">
+      <field name="Cb4x4 Intra Weight Scale" dword="0" bits="31:0" type="uint" />
+    </group>
+    <group count="4" dword="10" size="32">
+      <field name="Cr4x4 Intra Weight Scale" dword="0" bits="31:0" type="uint" />
+    </group>
+    <group count="4" dword="14" size="32">
+      <field name="Luma4x4 Inter Weight Scale" dword="0" bits="31:0" type="uint" />
+    </group>
+    <group count="4" dword="18" size="32">
+      <field name="Cb4x4 Inter Weight Scale" dword="0" bits="31:0" type="uint" />
+    </group>
+    <group count="4" dword="22" size="32">
+      <field name="Cr4x4 Inter Weight Scale" dword="0" bits="31:0" type="uint" />
+    </group>
+    <group count="4" dword="26" size="128">
+      <field name="Luma8x8 Intra Weight Scale" dword="0" bits="127:0" type="uint" />
+    </group>
+    <group count="4" dword="42" size="128">
+      <field name="Luma8x8 Inter Weight Scale" dword="0" bits="127:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFX_AVC_REF_IDX_STATE" bias="2" length="10" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="8" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="4" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Reference Picture List Select" dword="1" bits="0:0" type="uint" />
+    <group count="32" dword="2" size="8">
+      <field name="Reference List Entry" dword="0" bits="7:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFX_AVC_SLICE_STATE" bias="2" length="10" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="8" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="3" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Slice Type" dword="1" bits="3:0" type="uint">
+      <value name="P Slice" value="0" />
+      <value name="B Slice" value="1" />
+      <value name="I Slice" value="2" />
+    </field>
+    <field name="Log2 Weight Denominator Luma" dword="2" bits="2:0" type="uint" />
+    <field name="Log2 Weight Denominator Chroma" dword="2" bits="10:8" type="uint" />
+    <field name="Number of Reference Pictures in Inter-prediction List 0" dword="2" bits="21:16" type="uint" />
+    <field name="Number of Reference Pictures in Inter-prediction List 1" dword="2" bits="29:24" type="uint" />
+    <field name="Slice Alpha C0 Offset Div2" dword="3" bits="3:0" type="int" />
+    <field name="Slice Beta Offset Div2" dword="3" bits="11:8" type="int" />
+    <field name="Slice Quantization Parameter" dword="3" bits="21:16" type="uint" />
+    <field name="CABAC Init IDC" dword="3" bits="25:24" type="uint" />
+    <field name="Disable Deblocking Filter Indicator" dword="3" bits="28:27" type="uint" />
+    <field name="Direct Prediction Type" dword="3" bits="29:29" type="uint">
+      <value name="Temporal" value="0" />
+      <value name="Spatial" value="1" />
+    </field>
+    <field name="Weighted Prediction Indicator" dword="3" bits="31:30" type="uint" />
+    <field name="Slice Start MB Number" dword="4" bits="14:0" type="uint" />
+    <field name="Slice Horizontal Position" dword="4" bits="23:16" type="uint" />
+    <field name="Slice Vertical Position" dword="4" bits="31:24" type="uint" />
+    <field name="Next Slice Horizontal Position" dword="5" bits="7:0" type="uint" />
+    <field name="Next Slice Vertical Position" dword="5" bits="23:16" type="uint" />
+    <field name="Stream ID" dword="6" bits="1:0" type="uint" />
+    <field name="Slice ID" dword="6" bits="7:4" type="uint" />
+    <field name="CABAC Zero Word Insertion Enable" dword="6" bits="12:12" type="bool" />
+    <field name="Emulation Byte Slice Insert Enable" dword="6" bits="13:13" type="bool" />
+    <field name="Tail Insertion Present" dword="6" bits="15:15" type="bool" />
+    <field name="Slice Data Insertion Present" dword="6" bits="16:16" type="bool" />
+    <field name="Header Insertion Present" dword="6" bits="17:17" type="bool" />
+    <field name="Last Slice Group" dword="6" bits="19:19" type="bool" />
+    <field name="MB Type Skip Conversion Disable" dword="6" bits="20:20" type="bool" />
+    <field name="MB Type Direct Conversion Disable" dword="6" bits="21:21" type="bool" />
+    <field name="Rate Control Panic Type" dword="6" bits="22:22" type="uint">
+      <value name="QP Panic" value="0" />
+      <value name="CBP Panic" value="1" />
+    </field>
+    <field name="Rate Control Panic Enable" dword="6" bits="23:23" type="bool" />
+    <field name="Rate Control Stable Tolerance" dword="6" bits="27:24" type="uint" />
+    <field name="Rate Control Triggle Mode" dword="6" bits="29:28" type="uint">
+      <value name="Always Rate Control" value="0" />
+      <value name="Gentle Rate Control" value="1" />
+      <value name="Loose Rate Control" value="2" />
+    </field>
+    <field name="Reset Rate Control Counter" dword="6" bits="30:30" type="bool" />
+    <field name="Rate Control Counter Enable" dword="6" bits="31:31" type="bool" />
+    <field name="Indirect PAK-BSE Data Start Address" dword="7" bits="28:0" type="offset" />
+    <field name="Grow Init" dword="8" bits="3:0" type="uint" />
+    <field name="Grow Resistance" dword="8" bits="7:4" type="uint" />
+    <field name="Shrink Init" dword="8" bits="11:8" type="uint" />
+    <field name="Shrink Resistance" dword="8" bits="15:12" type="uint" />
+    <field name="QP Max Positive Modifier Magnitude" dword="8" bits="23:16" type="uint" />
+    <field name="QP Max Negative Modifier Magnitude" dword="8" bits="31:24" type="uint" />
+    <field name="Correct 1" dword="9" bits="3:0" type="uint" />
+    <field name="Correct 2" dword="9" bits="7:4" type="uint" />
+    <field name="Correct 3" dword="9" bits="11:8" type="uint" />
+    <field name="Correct 4" dword="9" bits="15:12" type="uint" />
+    <field name="Correct 5" dword="9" bits="19:16" type="uint" />
+    <field name="Correct 6" dword="9" bits="23:20" type="uint" />
+    <field name="CV0" dword="10" bits="3:0" type="uint" />
+    <field name="CV1" dword="10" bits="7:4" type="uint" />
+    <field name="CV2" dword="10" bits="11:8" type="uint" />
+    <field name="CV3" dword="10" bits="15:12" type="uint" />
+    <field name="CV4" dword="10" bits="19:16" type="uint" />
+    <field name="CV5" dword="10" bits="23:20" type="uint" />
+    <field name="CV6" dword="10" bits="27:24" type="uint" />
+    <field name="CV7" dword="10" bits="31:28" type="uint" />
+  </instruction>
+  <instruction name="MFX_AVC_WEIGHTOFFSET_STATE" bias="2" length="50" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="48" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="5" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Weight and Offset Select" dword="1" bits="0:0" type="uint">
+      <value name="L0 table" value="0" />
+      <value name="L1 table" value="1" />
+    </field>
+    <group count="96" dword="2" size="32">
+      <field name="Weight Offset" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFX_BSP_BUF_BASE_ADDR_STATE" bias="2" length="4" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="2" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="4" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="BSP Row Store Scratch Buffer - Cacheability Control" dword="1" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="BSP Row Store Scratch Buffer - Graphics Data Type" dword="1" bits="2:2" type="uint" />
+    <field name="BSD/MPC Row Store Scratch Buffer - Arbitration Priority Control" dword="1" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="BSD/MPC Row Store Scratch Buffer - Address" dword="1" bits="31:6" type="address" />
+    <field name="MPR Row Store Scratch Buffer - Cacheability Control" dword="2" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="MPR Row Store Scratch Buffer - Graphics Data Type" dword="2" bits="2:2" type="uint" />
+    <field name="MPR Row Store Scratch Buffer - Arbitration Priority Control" dword="2" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MPR Row Store Scratch Buffer - Address" dword="2" bits="31:6" type="address" />
+    <field name="Bitplane Read Buffer - Cacheability Control" dword="3" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Bitplane Read Buffer - Graphics Data Type" dword="3" bits="2:2" type="uint" />
+    <field name="Bitplane Read Buffer - Arbitration Priority Control" dword="3" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Bitplane Read Buffer - Address" dword="3" bits="31:6" type="address" />
+  </instruction>
+  <instruction name="MFX_IND_OBJ_BASE_ADDR_STATE" bias="2" length="11" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="9" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="3" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="MFX Indirect Bitstream Object - Cacheability Control" dword="1" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="MFX Indirect Bitstream Object - Graphics Data Type" dword="1" bits="2:2" type="uint" />
+    <field name="MFX Indirect Bitstream Object - Arbitration Priority Control" dword="1" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MFX Indirect Bitstream Object - Address" dword="1" bits="31:12" type="address" />
+    <field name="MFX Indirect Bitstream Object - Access Upper Bound" dword="2" bits="31:12" type="address" />
+    <field name="MFX Indirect MV Object - Cacheability Control" dword="3" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="MFX Indirect MV Object - Graphics Data Type" dword="3" bits="2:2" type="uint" />
+    <field name="MFX Indirect MV Object - Arbitration Priority Control" dword="3" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MFX Indirect MV Object - Address" dword="3" bits="31:12" type="address" />
+    <field name="MFX Indirect MV Object - Access Upper Bound" dword="4" bits="31:12" type="address" />
+    <field name="MFD Indirect IT-COEFF Object - Cacheability Control" dword="5" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="MFD Indirect IT-COEFF Object - Graphics Data Type" dword="5" bits="2:2" type="uint" />
+    <field name="MFD Indirect IT-COEFF Object - Arbitration Priority Control" dword="5" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MFD Indirect IT-COEFF Object - Address" dword="5" bits="31:12" type="address" />
+    <field name="MFD Indirect IT-COEFF Object - Access Upper Bound" dword="6" bits="31:12" type="address" />
+    <field name="MFD Indirect IT-DBLK Object - Cacheability Control" dword="7" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="MFD Indirect IT-DBLK Object - Graphics Data Type" dword="7" bits="2:2" type="uint" />
+    <field name="MFD Indirect IT-DBLK Object - Arbitration Priority Control" dword="7" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MFD Indirect IT-DBLK Object - Address" dword="7" bits="31:12" type="address" />
+    <field name="MFD Indirect IT-DBLK Object - Access Upper Bound" dword="8" bits="31:12" type="address" />
+    <field name="MFC Indirect PAK-BSE Object - Cacheability Control" dword="9" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="MFC Indirect PAK-BSE Object - Graphics Data Type" dword="9" bits="2:2" type="uint" />
+    <field name="MFC Indirect PAK-BSE Object - Arbitration Priority Control" dword="9" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MFC Indirect PAK-BSE Object - Address" dword="9" bits="31:12" type="address" />
+    <field name="MFC Indirect PAK-BSE Object - Access Upper Bound" dword="10" bits="31:12" type="address" />
+  </instruction>
+  <instruction name="MFX_MPEG2_PIC_STATE" bias="2" length="3" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="1" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Scan Order" dword="1" bits="6:6" type="uint">
+      <value name="MPEG_ZIGZAG_SCAN" value="0" />
+      <value name="MPEG_ALTERNATE_VERTICAL_SCAN" value="1" />
+    </field>
+    <field name="Intra VLC Format" dword="1" bits="7:7" type="uint" />
+    <field name="Quantizer Scale Type" dword="1" bits="8:8" type="uint">
+      <value name="MPEG_QSCALE_LINEAR" value="0" />
+      <value name="MPEG_QSCALE_NONLINEAR" value="1" />
+    </field>
+    <field name="Concealment MV" dword="1" bits="9:9" type="bool" />
+    <field name="Frame Prediction Frame DCT" dword="1" bits="10:10" type="uint" />
+    <field name="Top Field First" dword="1" bits="11:11" type="bool" />
+    <field name="Picture Structure" dword="1" bits="13:12" type="uint">
+      <value name="MPEG_TOP_FIELD" value="1" />
+      <value name="MPEG_BOTTOM_FIELD" value="2" />
+      <value name="MPEG_FRAME" value="3" />
+    </field>
+    <field name="Intra DC Precision" dword="1" bits="15:14" type="uint" />
+    <field name="F_code[0][0]" dword="1" bits="19:16" type="uint" />
+    <field name="F_code[0][1]" dword="1" bits="23:20" type="uint" />
+    <field name="F_code[1][0]" dword="1" bits="27:24" type="uint" />
+    <field name="F_code[1][1]" dword="1" bits="31:28" type="uint" />
+    <field name="Picture Coding Type" dword="2" bits="10:0" type="uint">
+      <value name="MPEG_I_PICTURE" value="1" />
+      <value name="MPEG_P_PICTURE" value="2" />
+      <value name="MPEG_B_PICTURE" value="3" />
+    </field>
+    <field name="Frame Width In MBs" dword="3" bits="7:0" type="uint" />
+    <field name="Frame Height In MBs" dword="3" bits="23:16" type="uint" />
+  </instruction>
+  <instruction name="MFX_MPEG2_QM_STATE" bias="2" length="18" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="16" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="1" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="QM Type" dword="1" bits="0:0" type="uint">
+      <value name="MPEG_INTRA_QUANTIZER_MATRIX" value="0" />
+      <value name="MPEG_NON_INTRA_QUANTIZER_MATRIX" value="1" />
+    </field>
+    <group count="16" dword="2" size="32">
+      <field name="Quantizer Matrix" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFX_PIPE_BUF_ADDR_STATE" bias="2" length="24" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="22" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pre Deblocking - Cacheability Control" dword="1" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Pre Deblocking - Graphics Data Type" dword="1" bits="2:2" type="uint" />
+    <field name="Pre Deblocking - Arbitration Priority Control" dword="1" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Pre Deblocking - Address" dword="1" bits="31:6" type="address" />
+    <field name="Post Deblocking - Cacheability Control" dword="2" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Post Deblocking - Graphics Data Type" dword="2" bits="2:2" type="uint" />
+    <field name="Post Deblocking - Arbitration Priority Control" dword="2" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Post Deblocking - Address" dword="2" bits="31:6" type="address" />
+    <field name="Original Uncompressed Picture Source - Cacheability Control" dword="3" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Original Uncompressed Picture Source - Graphics Data Type" dword="3" bits="2:2" type="uint" />
+    <field name="Original Uncompressed Picture Source - Arbitration Priority Control" dword="3" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Original Uncompressed Picture Source - Address" dword="3" bits="31:6" type="address" />
+    <field name="Stream-Out Data Destination - Cacheability Control" dword="4" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Stream-Out Data Destination - Graphics Data Type" dword="4" bits="2:2" type="uint" />
+    <field name="Stream-Out Data Destination - Arbitration Priority Control" dword="4" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Stream-Out Data Destination - Address" dword="4" bits="31:6" type="offset" />
+    <field name="Intra Row Store Scratch Buffer - Cacheability Control" dword="5" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Intra Row Store Scratch Buffer - Graphics Data Type" dword="5" bits="2:2" type="uint" />
+    <field name="Intra Row Store Scratch Buffer - Arbitration Priority Control" dword="5" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Intra Row Store Scratch Buffer - Address" dword="5" bits="31:6" type="address" />
+    <field name="Deblocking Filter Row Store Scratch Buffer - Cacheability Control" dword="6" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Deblocking Filter Row Store Scratch Buffer - Graphics Data Type" dword="6" bits="2:2" type="uint" />
+    <field name="Deblocking Filter Row Store Scratch Buffer - Arbitration Priority Control" dword="6" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Deblocking Filter Row Store Scratch Buffer - Address" dword="6" bits="31:6" type="address" />
+    <group count="16" dword="7" size="32">
+      <field name="Reference Picture - Address" dword="0" bits="31:6" type="address" />
+      <field name="Reference Picture - Arbitration Priority Control" dword="0" bits="5:4" type="uint">
+        <value name="Highest priority" value="0" />
+        <value name="Second highest priority" value="1" />
+        <value name="Third highest priority" value="2" />
+        <value name="Lowest priority" value="3" />
+      </field>
+      <field name="Reference Picture - Graphics Data Type" dword="0" bits="2:2" type="uint" />
+      <field name="Reference Picture - Cacheability Control" dword="0" bits="1:0" type="uint">
+        <value name="GTT entry" value="0" />
+        <value name="Not in LLC or MLC" value="1" />
+        <value name="In LLC but not MLC" value="2" />
+        <value name="Both LLC and MLC" value="3" />
+      </field>
+    </group>
+    <field name="MB Status Buffer - Cacheability Control" dword="23" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="MB Status Buffer - Graphics Data Type" dword="23" bits="2:2" type="uint" />
+    <field name="MB Status Buffer - Arbitration Priority Control" dword="23" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MB Status Buffer - Address" dword="23" bits="31:6" type="address" />
+  </instruction>
+  <instruction name="MFX_PIPE_MODE_SELECT" bias="2" length="4" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="2" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Standard Select" dword="1" bits="1:0" type="uint" prefix="SS">
+      <value name="VC1" value="1" />
+      <value name="AVC" value="2" />
+    </field>
+    <field name="Codec Select" dword="1" bits="4:4" type="uint">
+      <value name="Decode" value="0" />
+      <value name="Encode" value="1" />
+    </field>
+    <field name="Stitch Mode" dword="1" bits="5:5" type="bool" />
+    <field name="ZLR TLB Prefetch Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Pre Deblocking Output Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Post Deblocking Output Enable" dword="1" bits="9:9" type="bool" />
+    <field name="Stream-Out Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Decoder Mode Select" dword="1" bits="16:16" type="uint">
+      <value name="VLD Mode" value="0" />
+      <value name="IT Mode" value="1" />
+    </field>
+    <field name="AVC ILDB Boundary Strength Calculation" dword="2" bits="0:0" type="uint">
+      <value name="Calculated only when post-filter is ON" value="0" />
+      <value name="Calculated all the time" value="1" />
+    </field>
+    <field name="AVC Long Field MV" dword="2" bits="1:1" type="uint">
+      <value name="13 bits precision" value="0" />
+      <value name="12 bits precision" value="1" />
+    </field>
+    <field name="AVC CABAC/CAVLC Decode Error Disable" dword="2" bits="2:2" type="uint">
+      <value name="Terminate" value="0" />
+      <value name="Will not terminate" value="1" />
+    </field>
+    <field name="AVC Mbdata Error Disable" dword="2" bits="3:3" type="uint" />
+    <field name="AVC MV/POC Table Error Disable" dword="2" bits="4:4" type="uint">
+      <value name="Terminates" value="0" />
+      <value name="Will not terminate" value="1" />
+    </field>
+    <field name="Clock Gate Enable at Slice-level" dword="2" bits="6:6" type="bool" />
+    <field name="Intra 8x8 Rounding" dword="2" bits="19:19" type="uint" />
+    <field name="Slice PB Rounding" dword="2" bits="20:20" type="uint" />
+  </instruction>
+  <instruction name="MFX_STATE_POINTER" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="6" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="State Pointer Index" dword="1" bits="1:0" type="uint">
+      <value name="Indirect state pointer 0" value="0" />
+      <value name="Indirect state pointer 1" value="1" />
+      <value name="Indirect state pointer 2" value="2" />
+      <value name="Indirect state pointer 3" value="3" />
+    </field>
+    <field name="State Pointer" dword="1" bits="31:5" type="uint" />
+  </instruction>
+  <instruction name="MFX_SURFACE_STATE" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Cr(V)/Cb(U) Pixel Offset V Direction" dword="2" bits="1:0" type="uint" />
+    <field name="Width" dword="2" bits="18:6" type="uint" />
+    <field name="Height" dword="2" bits="31:19" type="uint" />
+    <field name="Tile Walk" dword="3" bits="0:0" type="uint" prefix="TW">
+      <value name="XMAJOR" value="0" />
+      <value name="YMAJOR" value="1" />
+    </field>
+    <field name="Tiled Surface" dword="3" bits="1:1" type="bool" />
+    <field name="Half Pitch for Chroma" dword="3" bits="2:2" type="bool" />
+    <field name="Surface Pitch" dword="3" bits="19:3" type="uint" />
+    <field name="Interleave Chroma" dword="3" bits="27:27" type="bool" />
+    <field name="Surface Format" dword="3" bits="31:28" type="uint">
+      <value name="YCRCB_NORMAL" value="0" />
+      <value name="YCRCB_SWAPUVY" value="1" />
+      <value name="YCRCB_SWAPUV" value="2" />
+      <value name="YCRCB_SWAPY" value="3" />
+      <value name="PLANAR_420_8" value="4" />
+      <value name="PLANAR_411_8" value="5" />
+      <value name="PLANAR_422_8" value="6" />
+      <value name="STMM_DN_STATISTICS" value="7" />
+      <value name="R10G10B10A2_UNORM" value="8" />
+      <value name="R8G8B8A8_UNORM" value="9" />
+      <value name="R8B8_UNORM (CrCb)" value="10" />
+      <value name="R8_UNORM (Cr/Cb)" value="11" />
+      <value name="Y8_UNORM" value="12" />
+    </field>
+    <field name="Y Offset for U(Cb)" dword="4" bits="12:0" type="uint" />
+    <field name="X Offset for U(Cb)" dword="4" bits="28:16" type="uint" />
+    <field name="Y Offset for V(Cr)" dword="5" bits="12:0" type="uint" />
+    <field name="X Offset for V(Cr)" dword="5" bits="28:16" type="uint" />
+  </instruction>
+  <instruction name="MFX_VC1_DIRECTMODE_STATE" bias="2" length="3" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="1" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Direct MV Write Buffer - Cacheability Control" dword="1" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Direct MV Write Buffer - Graphics Data Type" dword="1" bits="2:2" type="uint" />
+    <field name="Direct MV Write Buffer - Arbitration Priority Control" dword="1" bits="5:4" type="uint">
+      <value name="Highest Priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest Priority" value="3" />
+    </field>
+    <field name="Direct MV Write Buffer - Address" dword="1" bits="31:6" type="address" />
+    <field name="Direct MV Read Buffer - Cacheability Control" dword="2" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Direct MV Read Buffer - Graphics Data Type" dword="2" bits="2:2" type="uint" />
+    <field name="Direct MV Read Buffer - Arbitration Priority Control" dword="2" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Direct MV Read Buffer - Address" dword="2" bits="31:6" type="address" />
+  </instruction>
+  <instruction name="MFX_VC1_PIC_STATE" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Picture Width in MBs" dword="1" bits="7:0" type="uint" />
+    <field name="Picture Height in MBs" dword="1" bits="23:16" type="uint" />
+    <field name="Frame Coding Mode" dword="2" bits="1:0" type="uint">
+      <value name="Progressive Frame Picture" value="0" />
+      <value name="Interlaced Frame Picture" value="1" />
+      <value name="Field Picture with Top Field First" value="2" />
+      <value name="Field Picture with Bottom Field First" value="3" />
+    </field>
+    <field name="Picture Type" dword="2" bits="4:2" type="uint" />
+    <field name="Second Field" dword="2" bits="5:5" type="bool" />
+    <field name="CONDOVER" dword="2" bits="7:6" type="uint" />
+    <field name="PQ Uniform" dword="2" bits="8:8" type="bool" />
+    <field name="Half QP" dword="2" bits="9:9" type="uint" />
+    <field name="Alternative PQ Configuration" dword="2" bits="11:10" type="uint" />
+    <field name="Alternative PQ Edge Mask" dword="2" bits="15:12" type="uint" />
+    <field name="PQ Value" dword="2" bits="20:16" type="uint" />
+    <field name="Implicit Quantizer" dword="2" bits="21:21" type="bool" />
+    <field name="Overlap Smoothing Enable" dword="2" bits="22:22" type="bool" />
+    <field name="Loop Filter Enable" dword="2" bits="23:23" type="bool" />
+    <field name="Alternative PQ Value" dword="2" bits="28:24" type="uint" />
+    <field name="Concealment Enable" dword="2" bits="29:29" type="bool" />
+    <field name="Sync Marker" dword="2" bits="31:31" type="bool" />
+    <field name="FRFD Reference Distance" dword="3" bits="4:0" type="uint" />
+    <field name="Number of References" dword="3" bits="5:5" type="uint">
+      <value name="One field referenced" value="0" />
+      <value name="Two fields referenced" value="1" />
+    </field>
+    <field name="Reference Field Picture Polarity" dword="3" bits="6:6" type="uint">
+      <value name="Top (even) Field" value="0" />
+      <value name="Bottom (odd) Field" value="1" />
+    </field>
+    <field name="Unified MV Mode" dword="3" bits="9:8" type="uint">
+      <value name="1-MV half-pel bilinear" value="3" />
+      <value name="1-MV" value="1" />
+      <value name="1-MV half-pel" value="2" />
+      <value name="Mixed MV" value="0" />
+    </field>
+    <field name="Fast UV Motion Compensation" dword="3" bits="10:10" type="uint">
+      <value name="No Rounding" value="0" />
+      <value name="Quarter-Pel offsets to Half/Full pel positions" value="1" />
+    </field>
+    <field name="Four MV Switch" dword="3" bits="11:11" type="uint">
+      <value name="Only 1-MV" value="0" />
+      <value name="1, 2, or 4 MVs" value="1" />
+    </field>
+    <field name="Extended MV Range" dword="3" bits="13:12" type="uint" />
+    <field name="Extended DMV Range" dword="3" bits="15:14" type="uint" />
+    <field name="FIELDTX Raw" dword="3" bits="16:16" type="bool" />
+    <field name="ACPRED Raw" dword="3" bits="17:17" type="bool" />
+    <field name="OVERFLAGS Raw" dword="3" bits="18:18" type="bool" />
+    <field name="DIRECTMB Raw" dword="3" bits="19:19" type="bool" />
+    <field name="SKIPMB Raw" dword="3" bits="20:20" type="bool" />
+    <field name="MVTYPEMB Raw" dword="3" bits="21:21" type="bool" />
+    <field name="FORWARDMB Raw" dword="3" bits="22:22" type="bool" />
+    <field name="Bitplane Buffer Present" dword="3" bits="23:23" type="bool" />
+    <field name="Coded Block Pattern Table" dword="4" bits="2:0" type="uint" />
+    <field name="Intra Transform DC Table" dword="4" bits="3:3" type="uint" />
+    <field name="Picture-level Transform Chroma AC Coding Set Index" dword="4" bits="5:4" type="uint" />
+    <field name="Picture-level Transform Luma AC Coding Set Index" dword="4" bits="7:6" type="uint" />
+    <field name="MB Mode Table" dword="4" bits="10:8" type="uint" />
+    <field name="MB Transform Type" dword="4" bits="11:11" type="uint" />
+    <field name="Picture-level Transform Type" dword="4" bits="13:12" type="uint">
+      <value name="8x8 Transform" value="0" />
+      <value name="8x4 Transform" value="1" />
+      <value name="4x8 Transform" value="2" />
+      <value name="4x4 Transform" value="3" />
+    </field>
+    <field name="2-MV Block Pattern Table" dword="4" bits="17:16" type="uint" />
+    <field name="4-MV Block Pattern Table" dword="4" bits="19:18" type="uint" />
+    <field name="MV Table" dword="4" bits="22:20" type="uint" />
+    <field name="Scale Factor" dword="4" bits="31:24" type="uint" />
+    <field name="Bitplane Buffer Pitch" dword="5" bits="7:0" type="uint" />
+    <field name="BRFD Reference Distance" dword="5" bits="12:8" type="uint" />
+    <field name="DMV Surface Valid" dword="5" bits="13:13" type="bool" />
+  </instruction>
+  <instruction name="MFX_VC1_PRED_PIPE_STATE" bias="2" length="4" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="2" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="1" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="VC1 Profile" dword="1" bits="3:2" type="uint">
+      <value name="Simple Profile" value="0" />
+      <value name="Main Profile" value="1" />
+      <value name="Advanced Profile" value="2" />
+    </field>
+    <field name="Interpolation Rounder Control" dword="1" bits="4:4" type="uint" />
+    <field name="Reference Frame Boundary Replication Mode" dword="1" bits="11:8" type="uint">
+      <value name="Progressive Frame Replication" value="0" />
+      <value name="Interlace Frame Replication" value="1" />
+    </field>
+    <field name="LumScale1 - single - FWD" dword="2" bits="5:0" type="uint" />
+    <field name="LumScale2 - single - FWD" dword="2" bits="13:8" type="uint" />
+    <field name="LumShift1 - single - FWD" dword="2" bits="21:16" type="uint" />
+    <field name="LumShift2 - single - FWD" dword="2" bits="29:24" type="uint" />
+    <field name="LumScale1 - double - FWD" dword="3" bits="5:0" type="uint" />
+    <field name="LumScale2 - double - FWD" dword="3" bits="13:8" type="uint" />
+    <field name="LumShift1 - double - FWD" dword="3" bits="21:16" type="uint" />
+    <field name="LumShift2 - double - FWD" dword="3" bits="29:24" type="uint" />
+    <field name="LumScale1 - single - BWD" dword="4" bits="5:0" type="uint" />
+    <field name="LumScale2 - single - BWD" dword="4" bits="13:8" type="uint" />
+    <field name="LumShift1 - single - BWD" dword="4" bits="21:16" type="uint" />
+    <field name="LumShift2 - single - BWD" dword="4" bits="29:24" type="uint" />
+    <field name="LumScale1 - double - BWD" dword="5" bits="5:0" type="uint" />
+    <field name="LumScale2 - double - BWD" dword="5" bits="13:8" type="uint" />
+    <field name="LumShift1 - double - BWD" dword="5" bits="21:16" type="uint" />
+    <field name="LumShift2 - double - BWD" dword="5" bits="29:24" type="uint" />
+    <field name="Vin Intensity Compensation Single Backward Enable" dword="6" bits="1:0" type="uint" />
+    <field name="Vin Intensity Compensation Single Forward Enable" dword="6" bits="3:2" type="uint" />
+    <field name="Vin Intensity Compensation Double Backward Enable" dword="6" bits="5:4" type="uint" />
+    <field name="Vin Intensity Compensation Double Forward Enable" dword="6" bits="7:6" type="uint" />
+    <field name="Range Reduction" dword="6" bits="16:16" type="bool" />
+    <field name="Range Reduction Scale" dword="6" bits="17:17" type="uint" />
+    <field name="Fast UV Compensation" dword="6" bits="18:18" type="bool" />
+    <field name="MV Mode" dword="6" bits="20:19" type="uint">
+      <value name="Half-pel bicubic" value="0" />
+      <value name="Quarter-pel bicubic" value="1" />
+    </field>
+  </instruction>
+  <instruction name="MFX_WAIT" bias="1" length="1" engine="video">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="0" />
+    <field name="MFX Sync Control Flag" dword="0" bits="8:8" type="bool" />
+    <field name="SubOpcode" dword="0" bits="26:16" type="uint" default="0" />
+    <field name="Command Subtype" dword="0" bits="28:27" type="uint" default="1" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+  </instruction>
+  <instruction name="MI_ARB_CHECK" bias="1" length="1">
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="5" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_ARB_ON_OFF" bias="1" length="1">
+    <field name="Arbitration Enable" dword="0" bits="0:0" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="8" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_BATCH_BUFFER_END" bias="1" length="1">
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="10" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_BATCH_BUFFER_START" bias="2" length="2">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="Address Space Indicator" dword="0" bits="8:8" type="uint" prefix="ASI">
+      <value name="GGTT" value="0" />
+      <value name="PPGTT" value="1" />
+    </field>
+    <field name="Clear Command Buffer Enable" dword="0" bits="11:11" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="49" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Batch Buffer Start Address" dword="1" bits="31:2" type="address" />
+  </instruction>
+  <instruction name="MI_CLFLUSH" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="0" />
+    <field name="Use Global GTT" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="39" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Starting Cacheline Offset" dword="1" bits="11:6" type="uint" />
+    <field name="Page Base Address" dword="1" bits="31:12" type="address" />
+    <group count="0" dword="2" size="32">
+      <field name="DW Representing a Half Cache Line" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MI_CONDITIONAL_BATCH_BUFFER_END" bias="2" length="2">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="Compare Semaphore" dword="0" bits="21:21" type="uint" default="0" />
+    <field name="Use Global GTT" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="54" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Compare Data Dword" dword="1" bits="31:0" type="uint" />
+    <field name="Compare Address" dword="2" bits="31:3" type="address" />
+  </instruction>
+  <instruction name="MI_FLUSH" bias="1" length="1" engine="render">
+    <field name="State/Instruction Cache Invalidate" dword="0" bits="1:1" type="uint">
+      <value name="Don't Invalidate" value="0" />
+      <value name="Invalidate" value="1" />
+    </field>
+    <field name="Render Cache Flush Inhibit" dword="0" bits="2:2" type="uint">
+      <value name="Flush" value="0" />
+      <value name="Don't Flush" value="1" />
+    </field>
+    <field name="Global Snapshot Count Reset" dword="0" bits="3:3" type="uint">
+      <value name="Don't Reset" value="0" />
+      <value name="Reset" value="1" />
+    </field>
+    <field name="Generic Media State Clear" dword="0" bits="4:4" type="bool" />
+    <field name="Indirect State Pointers Disable" dword="0" bits="5:5" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="4" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_FLUSH_DW" bias="2" length="4" engine="video">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="2" />
+    <field name="Video Pipeline Cache Invalidate" dword="0" bits="7:7" type="bool" />
+    <field name="Notify Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Post-Sync Operation" dword="0" bits="15:14" type="uint" />
+    <field name="Synchronize GFDT Surface" dword="0" bits="17:17" type="bool" />
+    <field name="TLB Invalidate" dword="0" bits="18:18" type="bool" />
+    <field name="Store Data Index" dword="0" bits="21:21" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="38" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Destination Address Type" dword="1" bits="2:2" type="uint" prefix="DAT">
+      <value name="PPGTT" value="0" />
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Address" dword="1" bits="31:3" type="address" />
+    <group count="2" dword="2" size="32">
+      <field name="Immediate Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MI_LOAD_REGISTER_IMM" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Byte Write Disables" dword="0" bits="11:8" type="uint" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="34" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Register Offset" dword="1" bits="22:2" type="offset" />
+    <field name="Data DWord" dword="2" bits="31:0" type="uint" />
+    <group count="0" dword="3" size="64">
+      <field name="Register Offset" dword="0" bits="22:2" type="offset" />
+      <field name="Data DWord" dword="1" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MI_LOAD_SCAN_LINES_EXCL" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="0" />
+    <field name="Display (Plane) Select" dword="0" bits="21:19" type="uint">
+      <value name="Display Plane A" value="0" />
+      <value name="Display Plane B" value="1" />
+      <value name="Display Plane C" value="4" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="19" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="End Scan Line Number" dword="1" bits="12:0" type="uint" />
+    <field name="Start Scan Line Number" dword="1" bits="28:16" type="uint" />
+  </instruction>
+  <instruction name="MI_NOOP" bias="1" length="1">
+    <field name="Identification Number" dword="0" bits="21:0" type="uint" />
+    <field name="Identification Number Register Write Enable" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_REPORT_HEAD" bias="1" length="1">
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="7" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_SEMAPHORE_MBOX" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Register Select" dword="0" bits="17:16" type="uint">
+      <value name="RVSYNC" value="0" />
+      <value name="RBSYNC" value="2" />
+      <value name="Use General Register Select" value="3" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="22" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Semaphore Data Dword" dword="1" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MI_SET_CONTEXT" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="24" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Restore Inhibit" dword="1" bits="0:0" type="uint" />
+    <field name="Force Restore" dword="1" bits="1:1" type="uint" />
+    <field name="Extended State Restore Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Extended State Save Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Reserved, Must be 1" dword="1" bits="8:8" type="uint" />
+    <field name="HD DVD Context" dword="1" bits="9:9" type="bool" />
+    <field name="Logical Context Address" dword="1" bits="31:12" type="address" />
+  </instruction>
+  <instruction name="MI_STORE_DATA_IMM" bias="2" length="4">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="2" />
+    <field name="Use Global GTT" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="32" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Core Mode Enable" dword="2" bits="0:0" type="uint" />
+    <field name="Address" dword="2" bits="31:2" type="address" />
+    <field name="Immediate Data" dword="3" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="MI_STORE_DATA_INDEX" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="33" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Offset" dword="1" bits="11:2" type="uint" />
+    <field name="Data DWord 0" dword="2" bits="31:0" type="uint" />
+    <field name="Data DWord 1" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MI_STORE_REGISTER_MEM" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Use Global GTT" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="36" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Register Address" dword="1" bits="22:2" type="offset" />
+    <field name="Memory Address" dword="2" bits="31:2" type="address" />
+  </instruction>
+  <instruction name="MI_SUSPEND_FLUSH" bias="1" length="1">
+    <field name="Suspend Flush" dword="0" bits="0:0" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="11" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_URB_CLEAR" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="25" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="URB Address" dword="1" bits="13:0" type="offset" />
+    <field name="URB Clear Length" dword="1" bits="28:16" type="uint" />
+  </instruction>
+  <instruction name="MI_USER_INTERRUPT" bias="1" length="1">
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_WAIT_FOR_EVENT" bias="1" length="1" engine="render|blitter|video">
+    <field name="Display Pipe A Scan Line Wait Enable" dword="0" bits="0:0" type="bool" />
+    <field name="Display Plane A Flip Pending Wait Enable" dword="0" bits="1:1" type="bool" />
+    <field name="Display Sprite A Flip Pending Wait Enable" dword="0" bits="2:2" type="bool" />
+    <field name="Display Pipe A Vertical Blank Wait Enable" dword="0" bits="3:3" type="bool" />
+    <field name="Display Pipe A Horizontal Blank Wait Enable" dword="0" bits="5:5" type="bool" />
+    <field name="Display Pipe B Scan Line Wait Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Display Plane B Flip Pending Wait Enable" dword="0" bits="9:9" type="bool" />
+    <field name="Display Sprite B Flip Pending Wait Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Display Pipe B Vertical Blank Wait Enable" dword="0" bits="11:11" type="bool" />
+    <field name="Display Pipe B Horizontal Blank Wait Enable" dword="0" bits="13:13" type="bool" />
+    <field name="Condition Code Wait Select" dword="0" bits="19:16" type="uint">
+      <value name="Not enabled" value="0" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="PIPELINE_SELECT" bias="1" length="1" engine="render">
+    <field name="Pipeline Selection" dword="0" bits="1:0" type="uint">
+      <value name="3D" value="0" />
+      <value name="Media" value="1" />
+    </field>
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="1" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+  </instruction>
+  <instruction name="PIPE_CONTROL" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Depth Cache Flush Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Stall At Pixel Scoreboard" dword="1" bits="1:1" type="bool" />
+    <field name="State Cache Invalidation Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Constant Cache Invalidation Enable" dword="1" bits="3:3" type="bool" />
+    <field name="VF Cache Invalidation Enable" dword="1" bits="4:4" type="bool" />
+    <field name="Notify Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Indirect State Pointers Disable" dword="1" bits="9:9" type="bool" />
+    <field name="Texture Cache Invalidation Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Instruction Cache Invalidate Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Render Target Cache Flush Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Depth Stall Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Post Sync Operation" dword="1" bits="15:14" type="uint">
+      <value name="No Write" value="0" />
+      <value name="Write Immediate Data" value="1" />
+      <value name="Write PS Depth Count" value="2" />
+      <value name="Write Timestamp" value="3" />
+    </field>
+    <field name="Generic Media State Clear" dword="1" bits="16:16" type="bool" />
+    <field name="Synchronize GFDT Surface" dword="1" bits="17:17" type="bool" />
+    <field name="TLB Invalidate" dword="1" bits="18:18" type="bool" />
+    <field name="Global Snapshot Count Reset" dword="1" bits="19:19" type="bool" />
+    <field name="Command Streamer Stall Enable" dword="1" bits="20:20" type="bool" />
+    <field name="Store Data Index" dword="1" bits="21:21" type="uint" />
+    <field name="Destination Address Type" dword="2" bits="2:2" type="uint" prefix="DAT">
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Address" dword="2" bits="31:3" type="address" />
+    <field name="Immediate Data" dword="3" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="STATE_BASE_ADDRESS" bias="2" length="10" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="8" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="1" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="General State Base Address Modify Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Stateless Data Port Access Force Write Thru" dword="1" bits="3:3" type="uint" />
+    <field name="Stateless Data Port Access MOCS" dword="1" bits="7:4" type="uint" />
+    <field name="General State MOCS" dword="1" bits="11:8" type="uint" />
+    <field name="General State Base Address" dword="1" bits="31:12" type="address" />
+    <field name="Surface State Base Address Modify Enable" dword="2" bits="0:0" type="bool" />
+    <field name="Surface State MOCS" dword="2" bits="11:8" type="uint" />
+    <field name="Surface State Base Address" dword="2" bits="31:12" type="address" />
+    <field name="Dynamic State Base Address Modify Enable" dword="3" bits="0:0" type="bool" />
+    <field name="Dynamic State MOCS" dword="3" bits="11:8" type="uint" />
+    <field name="Dynamic State Base Address" dword="3" bits="31:12" type="address" />
+    <field name="Indirect Object Base Address Modify Enable" dword="4" bits="0:0" type="bool" />
+    <field name="Indirect Object MOCS" dword="4" bits="11:8" type="uint" />
+    <field name="Indirect Object Base Address" dword="4" bits="31:12" type="address" />
+    <field name="Instruction Base Address Modify Enable" dword="5" bits="0:0" type="bool" />
+    <field name="Instruction MOCS" dword="5" bits="11:8" type="uint" />
+    <field name="Instruction Base Address" dword="5" bits="31:12" type="address" />
+    <field name="General State Access Upper Bound Modify Enable" dword="6" bits="0:0" type="bool" />
+    <field name="General State Access Upper Bound" dword="6" bits="31:12" type="address" />
+    <field name="Dynamic State Access Upper Bound Modify Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Dynamic State Access Upper Bound" dword="7" bits="31:12" type="address" />
+    <field name="Indirect Object Access Upper Bound Modify Enable" dword="8" bits="0:0" type="bool" />
+    <field name="Indirect Object Access Upper Bound" dword="8" bits="31:12" type="address" />
+    <field name="Instruction Access Upper Bound Modify Enable" dword="9" bits="0:0" type="bool" />
+    <field name="Instruction Access Upper Bound" dword="9" bits="31:12" type="address" />
+  </instruction>
+  <instruction name="STATE_PREFETCH" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="3" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Prefetch Count" dword="1" bits="2:0" type="uint" />
+    <field name="Prefetch Pointer" dword="1" bits="31:6" type="address" />
+  </instruction>
+  <register name="BCS_FAULT_REG" length="1" num="0x4294">
+    <field name="Valid Bit" dword="0" bits="0:0" type="bool" />
+    <field name="Fault Type" dword="0" bits="2:1" type="uint">
+      <value name="Page Fault" value="0" />
+      <value name="Invalid PD Fault" value="1" />
+      <value name="Unloaded PD Fault" value="2" />
+      <value name="Invalid and Unloaded PD fault" value="3" />
+    </field>
+    <field name="SRCID of Fault" dword="0" bits="10:3" type="uint" />
+    <field name="GTTSEL" dword="0" bits="11:11" type="uint">
+      <value name="PPGTT" value="0" />
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Virtual Address of Fault" dword="0" bits="31:12" type="address" />
+  </register>
+  <register name="BCS_INSTDONE" length="1" num="0x2206c">
+    <field name="Ring Enable" dword="0" bits="0:0" type="bool" />
+    <field name="Blitter IDLE" dword="0" bits="1:1" type="bool" default="1" />
+    <field name="GAB IDLE" dword="0" bits="2:2" type="bool" default="1" />
+    <field name="BCS Done" dword="0" bits="3:3" type="bool" default="1" />
+  </register>
+  <register name="BCS_RING_BUFFER_CTL" length="1" num="0x2203c">
+    <field name="Ring Buffer Enable" dword="0" bits="0:0" type="bool" />
+    <field name="Automatic Report Head Pointer" dword="0" bits="2:1" type="uint">
+      <value name="MI_AUTOREPORT_OFF" value="0" />
+      <value name="MI_AUTOREPORT_64KB" value="1" />
+      <value name="MI_AUTOREPORT_4KB" value="2" />
+      <value name="MI_AUTOREPORT_128KB" value="3" />
+    </field>
+    <field name="Disable Register Accesses" dword="0" bits="8:8" type="bool" />
+    <field name="Semaphore Wait" dword="0" bits="10:10" type="bool" />
+    <field name="RBWait" dword="0" bits="11:11" type="bool" />
+    <field name="Buffer Length (in pages - 1)" dword="0" bits="20:12" type="uint" />
+  </register>
+  <register name="GFX_ARB_ERROR_RPT" length="1" num="0x40a0">
+    <field name="TLB Page Fault Error" dword="0" bits="0:0" type="bool" />
+    <field name="Context Page Fault Error" dword="0" bits="1:1" type="bool" />
+    <field name="Invalid Page Directory entry error" dword="0" bits="2:2" type="bool" />
+    <field name="Hardware Status Page Fault Error" dword="0" bits="3:3" type="bool" />
+    <field name="TLB Page VTD Translation Error" dword="0" bits="4:4" type="bool" />
+    <field name="Context Page VTD Translation Error" dword="0" bits="5:5" type="bool" />
+    <field name="Page Directory Entry VTD Translation Error" dword="0" bits="6:6" type="bool" />
+    <field name="Hardware Status Page VTD Translation Error" dword="0" bits="7:7" type="bool" />
+    <field name="Unloaded PD Error" dword="0" bits="8:8" type="bool" />
+  </register>
+  <register name="INSTDONE_1" length="1" num="0x206c">
+    <field name="PRB0 Ring Enable" dword="0" bits="0:0" type="bool" />
+    <field name="AVS Done" dword="0" bits="1:1" type="bool" />
+    <field name="HIZ Done" dword="0" bits="2:2" type="bool" />
+    <field name="GW Done" dword="0" bits="3:3" type="bool" />
+    <field name="TS Done" dword="0" bits="4:4" type="bool" />
+    <field name="TD Done" dword="0" bits="6:6" type="bool" />
+    <field name="VFE Done" dword="0" bits="7:7" type="bool" />
+    <field name="IEF Done" dword="0" bits="8:8" type="bool" />
+    <field name="VSC Done" dword="0" bits="9:9" type="bool" />
+    <field name="ISC2/3 Done" dword="0" bits="10:10" type="bool" />
+    <field name="ISC1/0 Done" dword="0" bits="11:11" type="bool" />
+    <field name="IC0 Done" dword="0" bits="12:12" type="bool" />
+    <field name="IC1 Done" dword="0" bits="13:13" type="bool" />
+    <field name="IC2 Done" dword="0" bits="14:14" type="bool" />
+    <field name="IC3 Done" dword="0" bits="15:15" type="bool" />
+    <field name="EU00 Done" dword="0" bits="16:16" type="bool" />
+    <field name="EU01 Done" dword="0" bits="17:17" type="bool" />
+    <field name="EU02 Done" dword="0" bits="18:18" type="bool" />
+    <field name="MA0 Done" dword="0" bits="19:19" type="bool" />
+    <field name="EU10 Done" dword="0" bits="20:20" type="bool" />
+    <field name="EU11 Done" dword="0" bits="21:21" type="bool" />
+    <field name="EU12 Done" dword="0" bits="22:22" type="bool" />
+    <field name="MA1 Done" dword="0" bits="23:23" type="bool" />
+    <field name="EU20 Done" dword="0" bits="24:24" type="bool" />
+    <field name="EU21 Done" dword="0" bits="25:25" type="bool" />
+    <field name="EU22 Done" dword="0" bits="26:26" type="bool" />
+    <field name="MA2 Done" dword="0" bits="27:27" type="bool" />
+    <field name="EU30 Done" dword="0" bits="28:28" type="bool" />
+    <field name="EU31 Done" dword="0" bits="29:29" type="bool" />
+    <field name="EU32 Done" dword="0" bits="30:30" type="bool" />
+    <field name="MA3 Done" dword="0" bits="31:31" type="bool" />
+  </register>
+  <register name="INSTDONE_2" length="1" num="0x207c">
+    <field name="VF Done" dword="0" bits="0:0" type="bool" />
+    <field name="VS0 Done" dword="0" bits="1:1" type="bool" />
+    <field name="GS Done" dword="0" bits="2:2" type="bool" />
+    <field name="CL Done" dword="0" bits="3:3" type="bool" />
+    <field name="SF Done" dword="0" bits="4:4" type="bool" />
+    <field name="VME Done" dword="0" bits="5:5" type="bool" />
+    <field name="PL Done" dword="0" bits="6:6" type="bool" />
+    <field name="SO Done" dword="0" bits="7:7" type="bool" />
+    <field name="SI Done" dword="0" bits="8:8" type="bool" />
+    <field name="DG Done" dword="0" bits="9:9" type="bool" />
+    <field name="FT Done" dword="0" bits="10:10" type="bool" />
+    <field name="DM Done" dword="0" bits="11:11" type="bool" />
+    <field name="SC Done" dword="0" bits="12:12" type="bool" />
+    <field name="FL Done" dword="0" bits="13:13" type="bool" />
+    <field name="QC Done" dword="0" bits="14:14" type="bool" />
+    <field name="SVSM Done" dword="0" bits="15:15" type="bool" />
+    <field name="WMFE Done" dword="0" bits="16:16" type="bool" />
+    <field name="IZ Done" dword="0" bits="17:17" type="bool" />
+    <field name="PSD Done" dword="0" bits="18:18" type="bool" />
+    <field name="DAP Done" dword="0" bits="19:19" type="bool" />
+    <field name="RCZ Done" dword="0" bits="20:20" type="bool" />
+    <field name="VDI Done" dword="0" bits="21:21" type="bool" />
+    <field name="RCPBE Done" dword="0" bits="22:22" type="bool" />
+    <field name="RCPFE Done" dword="0" bits="23:23" type="bool" />
+    <field name="MT Done" dword="0" bits="24:24" type="bool" />
+    <field name="ISC Done" dword="0" bits="25:25" type="bool" />
+    <field name="SVG Done" dword="0" bits="26:26" type="bool" />
+    <field name="RCC Done" dword="0" bits="27:27" type="bool" />
+    <field name="SVRW Done" dword="0" bits="28:28" type="bool" />
+    <field name="WMBE Done" dword="0" bits="29:29" type="bool" />
+    <field name="CS Done" dword="0" bits="30:30" type="bool" />
+    <field name="GAM Done" dword="0" bits="31:31" type="bool" />
+  </register>
+  <register name="INSTPM" length="1" num="0x20c0">
+    <field name="3D State Instruction Disable" dword="0" bits="1:1" type="bool" />
+    <field name="3D Rendering Instruction Disable" dword="0" bits="2:2" type="bool" />
+    <field name="Media Instruction Disable" dword="0" bits="3:3" type="bool" />
+    <field name="CONSTANT_BUFFER Address Offset Disable" dword="0" bits="6:6" type="bool" />
+    <field name="3D State Instruction Disable Mask" dword="0" bits="17:17" type="bool" />
+    <field name="3D Rendering Instruction Disable Mask" dword="0" bits="18:18" type="bool" />
+    <field name="Media Instruction Disable Mask" dword="0" bits="19:19" type="bool" />
+    <field name="CONSTANT_BUFFER Address Offset Disable Mask" dword="0" bits="22:22" type="bool" />
+  </register>
+  <register name="RCS_FAULT_REG" length="1" num="0x4094">
+    <field name="Valid Bit" dword="0" bits="0:0" type="bool" />
+    <field name="Fault Type" dword="0" bits="2:1" type="uint">
+      <value name="Page Fault" value="0" />
+      <value name="Invalid PD Fault" value="1" />
+      <value name="Unloaded PD Fault" value="2" />
+      <value name="Invalid and Unloaded PD fault" value="3" />
+    </field>
+    <field name="SRCID of Fault" dword="0" bits="10:3" type="uint" />
+    <field name="GTTSEL" dword="0" bits="11:11" type="uint">
+      <value name="PPGTT" value="0" />
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Virtual Address of Fault" dword="0" bits="31:12" type="address" />
+  </register>
+  <register name="RCS_RING_BUFFER_CTL" length="1" num="0x203c">
+    <field name="Ring Buffer Enable" dword="0" bits="0:0" type="bool" />
+    <field name="Automatic Report Head Pointer" dword="0" bits="2:1" type="uint">
+      <value name="MI_AUTOREPORT_OFF" value="0" />
+      <value name="MI_AUTOREPORT_64KBMI_AUTOREPORT_4KB" value="1" />
+      <value name="MI_AUTOREPORT_128KB" value="3" />
+    </field>
+    <field name="Semaphore Wait" dword="0" bits="10:10" type="bool" />
+    <field name="RBWait" dword="0" bits="11:11" type="bool" />
+    <field name="Buffer Length (in pages - 1)" dword="0" bits="20:12" type="uint" />
+  </register>
+  <register name="RPSTAT1" length="1" num="0xa01c">
+    <field name="Previous GT Frequency" dword="0" bits="6:0" type="uint" />
+    <field name="Current GT Frequency" dword="0" bits="14:7" type="uint" />
+  </register>
+  <register name="VCS_FAULT_REG" length="1" num="0x4194">
+    <field name="Valid Bit" dword="0" bits="0:0" type="bool" />
+    <field name="Fault Type" dword="0" bits="2:1" type="uint">
+      <value name="Page Fault" value="0" />
+      <value name="Invalid PD Fault" value="1" />
+      <value name="Unloaded PD Fault" value="2" />
+      <value name="Invalid and Unloaded PD fault" value="3" />
+    </field>
+    <field name="SRCID of Fault" dword="0" bits="10:3" type="uint" />
+    <field name="GTTSEL" dword="0" bits="11:11" type="uint">
+      <value name="PPGTT" value="0" />
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Virtual Address of Fault" dword="0" bits="31:12" type="address" />
+  </register>
+  <register name="VCS_INSTDONE" length="1" num="0x1206c">
+    <field name="Ring Enable" dword="0" bits="0:0" type="bool" />
+    <field name="USB Done" dword="0" bits="1:1" type="bool" />
+    <field name="QRC Done" dword="0" bits="2:2" type="bool" />
+    <field name="SEC Done" dword="0" bits="3:3" type="bool" />
+    <field name="MPC Done" dword="0" bits="4:4" type="bool" />
+    <field name="VFT Done" dword="0" bits="5:5" type="bool" />
+    <field name="BSP Done" dword="0" bits="6:6" type="bool" />
+    <field name="VLF Done" dword="0" bits="7:7" type="bool" />
+    <field name="VOP Done" dword="0" bits="8:8" type="bool" />
+    <field name="VMC Done" dword="0" bits="9:9" type="bool" />
+    <field name="VIP Done" dword="0" bits="10:10" type="bool" />
+    <field name="VIT Done" dword="0" bits="11:11" type="bool" />
+    <field name="VDS Done" dword="0" bits="12:12" type="bool" />
+    <field name="VMX Done" dword="0" bits="13:13" type="bool" />
+    <field name="VCP Done" dword="0" bits="14:14" type="bool" />
+    <field name="VCD Done" dword="0" bits="15:15" type="bool" />
+    <field name="VAD Done" dword="0" bits="16:16" type="bool" />
+    <field name="VMD Done" dword="0" bits="17:17" type="bool" />
+    <field name="VIS Done" dword="0" bits="18:18" type="bool" />
+    <field name="VAC Done" dword="0" bits="19:19" type="bool" />
+    <field name="VAM Done" dword="0" bits="20:20" type="bool" />
+    <field name="JPG Done" dword="0" bits="21:21" type="bool" />
+    <field name="VBP Done" dword="0" bits="22:22" type="bool" />
+    <field name="VHR Done" dword="0" bits="23:23" type="bool" />
+    <field name="VCI Done" dword="0" bits="24:24" type="bool" />
+    <field name="VCR Done" dword="0" bits="25:25" type="bool" />
+    <field name="VIN Done" dword="0" bits="26:26" type="bool" />
+    <field name="VPR Done" dword="0" bits="27:27" type="bool" />
+    <field name="VTQ Done" dword="0" bits="28:28" type="bool" />
+    <field name="VCS Done" dword="0" bits="30:30" type="bool" />
+    <field name="GAC Done" dword="0" bits="31:31" type="bool" />
+  </register>
+  <register name="VCS_RING_BUFFER_CTL" length="1" num="0x1203c">
+    <field name="Ring Buffer Enable" dword="0" bits="0:0" type="bool" />
+    <field name="Automatic Report Head Pointer" dword="0" bits="2:1" type="uint">
+      <value name="MI_AUTOREPORT_OFF" value="0" />
+      <value name="MI_AUTOREPORT_64KB" value="1" />
+      <value name="MI_AUTOREPORT_4KB" value="2" />
+      <value name="MI_AUTOREPORT_128KB" value="3" />
+    </field>
+    <field name="Disable Register Accesses" dword="0" bits="8:8" type="bool" />
+    <field name="Semaphore Wait" dword="0" bits="10:10" type="bool" />
+    <field name="RBWait" dword="0" bits="11:11" type="bool" />
+    <field name="Buffer Length (in pages - 1)" dword="0" bits="20:12" type="uint" />
+  </register>
+</genxml>
diff --git a/lib/genxml/gen70.xml b/lib/genxml/gen70.xml
new file mode 100644
index 000000000..ff0340c05
--- /dev/null
+++ b/lib/genxml/gen70.xml
@@ -0,0 +1,3067 @@
+<?xml version='1.0' encoding='utf-8'?>
+<genxml name="IVB" gen="7">
+  <import name="gen60.xml">
+    <exclude name="3DSTATE_BINDING_TABLE_POINTERS" />
+    <exclude name="3DSTATE_GS_SVB_INDEX" />
+    <exclude name="3DSTATE_SAMPLER_STATE_POINTERS" />
+    <exclude name="3DSTATE_URB" />
+    <exclude name="3DSTATE_VIEWPORT_STATE_POINTERS" />
+    <exclude name="CLIP_VIEWPORT" />
+    <exclude name="INSTDONE_2" />
+    <exclude name="MEDIA_GATEWAY_STATE" />
+    <exclude name="MFC_AVC_FQM_STATE" />
+    <exclude name="MFC_AVC_PAK_INSERT_OBJECT" />
+    <exclude name="MFC_STITCH_OBJECT" />
+    <exclude name="MFX_AVC_QM_STATE" />
+    <exclude name="MFX_MPEG2_QM_STATE" />
+    <exclude name="MFX_VC1_PIC_STATE" />
+    <exclude name="MI_LOAD_SCAN_LINES_EXCL" />
+    <exclude name="SF_VIEWPORT" />
+  </import>
+  <enum name="3D_Prim_Topo_Type" prefix="3DPRIM">
+    <value name="POINTLIST" value="1" />
+    <value name="LINELIST" value="2" />
+    <value name="LINESTRIP" value="3" />
+    <value name="TRILIST" value="4" />
+    <value name="TRISTRIP" value="5" />
+    <value name="TRIFAN" value="6" />
+    <value name="QUADLIST" value="7" />
+    <value name="QUADSTRIP" value="8" />
+    <value name="LINELIST_ADJ" value="9" />
+    <value name="LINESTRIP_ADJ" value="10" />
+    <value name="TRILIST_ADJ" value="11" />
+    <value name="TRISTRIP_ADJ" value="12" />
+    <value name="TRISTRIP_REVERSE" value="13" />
+    <value name="POLYGON" value="14" />
+    <value name="RECTLIST" value="15" />
+    <value name="LINELOOP" value="16" />
+    <value name="POINTLIST _BF" value="17" />
+    <value name="LINESTRIP_CONT" value="18" />
+    <value name="LINESTRIP_BF" value="19" />
+    <value name="LINESTRIP_CONT_BF" value="20" />
+    <value name="TRIFAN_NOSTIPPLE" value="22" />
+    <value name="PATCHLIST_1" value="32" />
+    <value name="PATCHLIST_2" value="33" />
+    <value name="PATCHLIST_3" value="34" />
+    <value name="PATCHLIST_4" value="35" />
+    <value name="PATCHLIST_5" value="36" />
+    <value name="PATCHLIST_6" value="37" />
+    <value name="PATCHLIST_7" value="38" />
+    <value name="PATCHLIST_8" value="39" />
+    <value name="PATCHLIST_9" value="40" />
+    <value name="PATCHLIST_10" value="41" />
+    <value name="PATCHLIST_11" value="42" />
+    <value name="PATCHLIST_12" value="43" />
+    <value name="PATCHLIST_13" value="44" />
+    <value name="PATCHLIST_14" value="45" />
+    <value name="PATCHLIST_15" value="46" />
+    <value name="PATCHLIST_16" value="47" />
+    <value name="PATCHLIST_17" value="48" />
+    <value name="PATCHLIST_18" value="49" />
+    <value name="PATCHLIST_19" value="50" />
+    <value name="PATCHLIST_20" value="51" />
+    <value name="PATCHLIST_21" value="52" />
+    <value name="PATCHLIST_22" value="53" />
+    <value name="PATCHLIST_23" value="54" />
+    <value name="PATCHLIST_24" value="55" />
+    <value name="PATCHLIST_25" value="56" />
+    <value name="PATCHLIST_26" value="57" />
+    <value name="PATCHLIST_27" value="58" />
+    <value name="PATCHLIST_28" value="59" />
+    <value name="PATCHLIST_29" value="60" />
+    <value name="PATCHLIST_30" value="61" />
+    <value name="PATCHLIST_31" value="62" />
+    <value name="PATCHLIST_32" value="63" />
+  </enum>
+  <struct name="3DSTATE_CONSTANT_BODY" length="6">
+    <group count="4" dword="0" size="16">
+      <field name="Read Length" dword="0" bits="15:0" type="uint" />
+    </group>
+    <field name="MOCS" dword="2" bits="4:0" type="uint" nonzero="true" />
+    <group count="4" dword="2" size="32">
+      <field name="Buffer" dword="0" bits="31:5" type="address" />
+    </group>
+  </struct>
+  <struct name="INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT" length="2">
+    <field name="MB Error Concealment P Slice Weight Prediction Disable" dword="0" bits="0:0" type="bool" />
+    <field name="MB Error Concealment P Slice Motion Vectors Override Disable" dword="0" bits="1:1" type="bool" />
+    <field name="MB Error Concealment P Slice Reference Index Override Disable" dword="0" bits="2:2" type="bool" />
+    <field name="MB Error Concealment B Spatial Weight Prediction Disable" dword="0" bits="3:3" type="bool" />
+    <field name="MB Error Concealment B Spatial Motion Vectors Override Disable" dword="0" bits="4:4" type="bool" />
+    <field name="MB Error Concealment B Spatial Reference Index Override Disable" dword="0" bits="5:5" type="bool" />
+    <field name="MB Error Concealment B Spatial Prediction Mode" dword="0" bits="7:6" type="uint" default="0" />
+    <field name="MB Header Error Handling" dword="0" bits="8:8" type="bool" />
+    <field name="Entropy Error Handling" dword="0" bits="10:10" type="bool" />
+    <field name="MPR Error Handling" dword="0" bits="12:12" type="bool" />
+    <field name="BSD Premature Complete Error Handling" dword="0" bits="14:14" type="bool" />
+    <field name="Concealment Picture ID" dword="0" bits="21:16" type="uint" />
+    <field name="MB Error Concealment B Temporal Weight Prediction Disable" dword="0" bits="24:24" type="bool" />
+    <field name="MB Error Concealment B Temporal Motion Vectors Override Enable" dword="0" bits="25:25" type="bool" />
+    <field name="MB Error Concealment B Temporal Reference Index Override Enable" dword="0" bits="26:26" type="bool" />
+    <field name="MB Error Concealment B Temporal Prediction Mode" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Init Current MB Number" dword="0" bits="30:30" type="bool" />
+    <field name="Concealment Method" dword="0" bits="31:31" type="uint" />
+    <field name="First MB Bit Offset" dword="1" bits="2:0" type="uint" />
+    <field name="Last Slice" dword="1" bits="3:3" type="bool" />
+    <field name="Emulation Prevention Byte Present" dword="1" bits="4:4" type="bool" />
+    <field name="Fix Prev MB Skipped" dword="1" bits="7:7" type="bool" />
+    <field name="First MB Byte Offset of Slice Data or Slice Header" dword="1" bits="31:16" type="uint" />
+  </struct>
+  <struct name="INTERFACE_DESCRIPTOR_DATA" length="8">
+    <field name="Kernel Start Pointer" dword="0" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="1" bits="17:17" type="uint">
+      <value name="Normal Priority" value="0" />
+      <value name="High Priority" value="1" />
+    </field>
+    <field name="Single Program Flow" dword="1" bits="18:18" type="bool" />
+    <field name="Sampler Count" dword="2" bits="4:2" type="uint">
+      <value name="No samplers used" value="0" />
+      <value name="Between 1 and 4 samplers used" value="1" />
+      <value name="Between 5 and 8 samplers used" value="2" />
+      <value name="Between 9 and 12 samplers used" value="3" />
+      <value name="Between 13 and 16 samplers used" value="4" />
+    </field>
+    <field name="Sampler State Pointer" dword="2" bits="31:5" type="offset" />
+    <field name="Binding Table Entry Count" dword="3" bits="4:0" type="uint" />
+    <field name="Binding Table Pointer" dword="3" bits="15:5" type="offset" />
+    <field name="Constant URB Entry Read Offset" dword="4" bits="15:0" type="uint" />
+    <field name="Constant URB Entry Read Length" dword="4" bits="31:16" type="uint" />
+    <field name="Number of Threads in GPGPU Thread Group" dword="5" bits="7:0" type="uint" />
+    <field name="Shared Local Memory Size" dword="5" bits="20:16" type="uint" />
+    <field name="Barrier Enable" dword="5" bits="21:21" type="bool" />
+    <field name="Rounding Mode" dword="5" bits="23:22" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+  </struct>
+  <struct name="MEMORY_OBJECT_CONTROL_STATE" length="1">
+    <field name="L3 Cacheability Control (L3CC)" dword="0" bits="0:0" type="uint" />
+    <field name="LLC Cacheability Control (LLCCC)" dword="0" bits="1:1" type="uint" />
+    <field name="Graphics Data Type (GFDT)" dword="0" bits="2:2" type="uint" />
+  </struct>
+  <struct name="MFD_MPEG2_BSD_OBJECT_INLINE_DATA_DESCRIPTION" length="2">
+    <field name="First MB Bit Offset" dword="0" bits="2:0" type="uint" />
+    <field name="Last MB" dword="0" bits="3:3" type="bool" />
+    <field name="Last Pic Slice" dword="0" bits="5:5" type="bool" />
+    <field name="MB Count" dword="0" bits="14:8" type="uint" />
+    <field name="Slice Vertical Position" dword="0" bits="22:16" type="uint" />
+    <field name="Slice Horizontal Position" dword="0" bits="30:24" type="uint" />
+    <field name="Quantizer Scale Code" dword="1" bits="28:24" type="uint" />
+  </struct>
+  <struct name="RENDER_SURFACE_STATE" length="8">
+    <field name="Cube Face Enable - Positive Z" dword="0" bits="0:0" type="bool" />
+    <field name="Cube Face Enable - Negative Z" dword="0" bits="1:1" type="bool" />
+    <field name="Cube Face Enable - Positive Y" dword="0" bits="2:2" type="bool" />
+    <field name="Cube Face Enable - Negative Y" dword="0" bits="3:3" type="bool" />
+    <field name="Cube Face Enable - Positive X" dword="0" bits="4:4" type="bool" />
+    <field name="Cube Face Enable - Negative X" dword="0" bits="5:5" type="bool" />
+    <field name="Media Boundary Pixel Mode" dword="0" bits="7:6" type="uint">
+      <value name="NORMAL_MODE" value="0" />
+      <value name="PROGRESSIVE_FRAME" value="2" />
+      <value name="INTERLACED_FRAME" value="3" />
+    </field>
+    <field name="Render Cache Read Write Mode" dword="0" bits="8:8" type="uint" />
+    <field name="Surface Array Spacing" dword="0" bits="10:10" type="uint">
+      <value name="ARYSPC_FULL" value="0" />
+      <value name="ARYSPC_LOD0" value="1" />
+    </field>
+    <field name="Vertical Line Stride Offset" dword="0" bits="11:11" type="uint" />
+    <field name="Vertical Line Stride" dword="0" bits="12:12" type="uint" />
+    <field name="Tile Walk" dword="0" bits="13:13" type="uint">
+      <value name="TILEWALK_XMAJOR" value="0" />
+      <value name="TILEWALK_YMAJOR" value="1" />
+    </field>
+    <field name="Tiled Surface" dword="0" bits="14:14" type="bool" />
+    <field name="Surface Horizontal Alignment" dword="0" bits="15:15" type="uint">
+      <value name="HALIGN_4" value="0" />
+      <value name="HALIGN_8" value="1" />
+    </field>
+    <field name="Surface Vertical Alignment" dword="0" bits="17:16" type="uint">
+      <value name="VALIGN_2" value="0" />
+      <value name="VALIGN_4" value="1" />
+    </field>
+    <field name="Surface Format" dword="0" bits="26:18" type="uint" />
+    <field name="Surface Array" dword="0" bits="28:28" type="bool" />
+    <field name="Surface Type" dword="0" bits="31:29" type="uint">
+      <value name="SURFTYPE_1D" value="0" />
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_3D" value="2" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_BUFFER" value="4" />
+      <value name="SURFTYPE_STRBUF" value="5" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface Base Address" dword="1" bits="31:0" type="address" />
+    <field name="Width" dword="2" bits="13:0" type="uint" />
+    <field name="Height" dword="2" bits="29:16" type="uint" />
+    <field name="Surface Pitch" dword="3" bits="17:0" type="uint" />
+    <field name="Depth" dword="3" bits="31:21" type="uint" />
+    <field name="Multisample Position Palette Index" dword="4" bits="2:0" type="uint" />
+    <field name="Strbuf Minimum Array Element" dword="4" bits="26:0" type="uint" />
+    <field name="Number of Multisamples" dword="4" bits="5:3" type="uint">
+      <value name="MULTISAMPLECOUNT_1" value="0" />
+      <value name="MULTISAMPLECOUNT_4" value="2" />
+      <value name="MULTISAMPLECOUNT_8" value="3" />
+    </field>
+    <field name="Multisampled Surface Storage Format" dword="4" bits="6:6" type="uint">
+      <value name="MSFMT_MSS" value="0" />
+      <value name="MSFMT_DEPTH_STENCIL" value="1" />
+    </field>
+    <field name="Render Target View Extent" dword="4" bits="17:7" type="uint" />
+    <field name="Minimum Array Element" dword="4" bits="28:18" type="uint" />
+    <field name="Render Target Rotation" dword="4" bits="30:29" type="uint">
+      <value name="RTROTATE_0DEG" value="0" />
+      <value name="RTROTATE_90DEG" value="1" />
+      <value name="RTROTATE_270DEG" value="3" />
+    </field>
+    <field name="MIP Count / LOD" dword="5" bits="3:0" type="uint" />
+    <field name="Surface Min LOD" dword="5" bits="7:4" type="uint" />
+    <field name="MOCS" dword="5" bits="19:16" type="uint" nonzero="true" />
+    <field name="Y Offset" dword="5" bits="23:20" type="uint" />
+    <field name="X Offset" dword="5" bits="31:25" type="uint" />
+    <field name="MCS Enable" dword="6" bits="0:0" type="bool" />
+    <field name="Y Offset for UV Plane" dword="6" bits="13:0" type="uint" />
+    <field name="Append Counter Enable" dword="6" bits="1:1" type="bool" />
+    <field name="Auxiliary Surface Pitch" dword="6" bits="11:3" type="uint" />
+    <field name="Append Counter Address" dword="6" bits="31:6" type="address" />
+    <field name="Auxiliary Surface Base Address" dword="6" bits="31:12" type="address" />
+    <field name="X Offset for UV Plane" dword="6" bits="29:16" type="uint" />
+    <field name="Reserved: MBZ" dword="6" bits="31:30" type="uint" />
+    <field name="Resource Min LOD" dword="7" bits="11:0" type="u4.8" />
+    <field name="Alpha Clear Color" dword="7" bits="28:28" type="uint">
+      <value name="CC_ZERO" value="0" />
+      <value name="CC_ONE" value="1" />
+    </field>
+    <field name="Blue Clear Color" dword="7" bits="29:29" type="uint">
+      <value name="CC_ZERO" value="0" />
+      <value name="CC_ONE" value="1" />
+    </field>
+    <field name="Green Clear Color" dword="7" bits="30:30" type="uint">
+      <value name="CC_ZERO" value="0" />
+      <value name="CC_ONE" value="1" />
+    </field>
+    <field name="Red Clear Color" dword="7" bits="31:31" type="uint">
+      <value name="CC_ZERO" value="0" />
+      <value name="CC_ONE" value="1" />
+    </field>
+  </struct>
+  <struct name="SAMPLER_BORDER_COLOR_STATE" length="4">
+    <field name="Border Color Unorm Red" dword="0" bits="7:0" type="uint" />
+    <field name="Border Color Float Red" dword="0" bits="31:0" type="float" />
+    <field name="Border Color Unorm Green" dword="0" bits="15:8" type="uint" />
+    <field name="Border Color Unorm Blue" dword="0" bits="23:16" type="uint" />
+    <field name="Border Color Unorm Alpha" dword="0" bits="31:24" type="uint" />
+    <field name="Border Color Float Green" dword="1" bits="31:0" type="float" />
+    <field name="Border Color Float Blue" dword="2" bits="31:0" type="float" />
+    <field name="Border Color Float Alpha" dword="3" bits="31:0" type="float" />
+  </struct>
+  <struct name="SAMPLER_STATE" length="4">
+    <field name="Anisotropic Algorithm" dword="0" bits="0:0" type="uint">
+      <value name="LEGACY" value="0" />
+      <value name="EWA Approximation" value="1" />
+    </field>
+    <field name="Texture LOD Bias" dword="0" bits="13:1" type="s4.8" />
+    <field name="Min Mode Filter" dword="0" bits="16:14" type="uint" prefix="MAPFILTER">
+      <value name="NEAREST" value="0" />
+      <value name="LINEAR" value="1" />
+      <value name="ANISOTROPIC" value="2" />
+      <value name="MONO" value="6" />
+    </field>
+    <field name="Mag Mode Filter" dword="0" bits="19:17" type="uint" prefix="MAPFILTER">
+      <value name="NEAREST" value="0" />
+      <value name="LINEAR" value="1" />
+      <value name="ANISOTROPIC" value="2" />
+      <value name="MONO" value="6" />
+    </field>
+    <field name="Mip Mode Filter" dword="0" bits="21:20" type="uint" prefix="MIPFILTER">
+      <value name="NONE" value="0" />
+      <value name="NEAREST" value="1" />
+      <value name="LINEAR" value="3" />
+    </field>
+    <field name="Base Mip Level" dword="0" bits="26:22" type="u4.1" />
+    <field name="LOD PreClamp Enable" dword="0" bits="28:28" type="uint" prefix="CLAMP_ENABLE">
+      <value name="OGL" value="1" />
+    </field>
+    <field name="Texture Border Color Mode" dword="0" bits="29:29" type="uint">
+      <value name="DX10/OGL" value="0" />
+      <value name="DX9" value="1" />
+    </field>
+    <field name="Sampler Disable" dword="0" bits="31:31" type="bool" />
+    <field name="Cube Surface Control Mode" dword="1" bits="0:0" type="uint">
+      <value name="PROGRAMMED" value="0" />
+      <value name="OVERRIDE" value="1" />
+    </field>
+    <field name="Shadow Function" dword="1" bits="3:1" type="uint" prefix="PREFILTEROP">
+      <value name="ALWAYS" value="0" />
+      <value name="NEVER" value="1" />
+      <value name="LESS" value="2" />
+      <value name="EQUAL" value="3" />
+      <value name="LEQUAL" value="4" />
+      <value name="GREATER" value="5" />
+      <value name="NOTEQUAL" value="6" />
+      <value name="GEQUAL" value="7" />
+    </field>
+    <field name="Max LOD" dword="1" bits="19:8" type="u4.8" />
+    <field name="Min LOD" dword="1" bits="31:20" type="u4.8" />
+    <field name="Border Color Pointer" dword="2" bits="31:5" type="offset" />
+    <field name="TCZ Address Control Mode" dword="3" bits="2:0" type="Texture Coordinate Mode" />
+    <field name="TCY Address Control Mode" dword="3" bits="5:3" type="Texture Coordinate Mode" />
+    <field name="TCX Address Control Mode" dword="3" bits="8:6" type="Texture Coordinate Mode" />
+    <field name="Non-normalized Coordinate Enable" dword="3" bits="10:10" type="bool" />
+    <field name="Trilinear Filter Quality" dword="3" bits="12:11" type="uint">
+      <value name="FULL" value="0" />
+      <value name="MED" value="2" />
+      <value name="LOW" value="3" />
+    </field>
+    <field name="R Address Min Filter Rounding Enable" dword="3" bits="13:13" type="bool" />
+    <field name="R Address Mag Filter Rounding Enable" dword="3" bits="14:14" type="bool" />
+    <field name="V Address Min Filter Rounding Enable" dword="3" bits="15:15" type="bool" />
+    <field name="V Address Mag Filter Rounding Enable" dword="3" bits="16:16" type="bool" />
+    <field name="U Address Min Filter Rounding Enable" dword="3" bits="17:17" type="bool" />
+    <field name="U Address Mag Filter Rounding Enable" dword="3" bits="18:18" type="bool" />
+    <field name="Maximum Anisotropy" dword="3" bits="21:19" type="uint">
+      <value name="RATIO 2:1" value="0" />
+      <value name="RATIO 4:1" value="1" />
+      <value name="RATIO 6:1" value="2" />
+      <value name="RATIO 8:1" value="3" />
+      <value name="RATIO 10:1" value="4" />
+      <value name="RATIO 12:1" value="5" />
+      <value name="RATIO 14:1" value="6" />
+      <value name="RATIO 16:1" value="7" />
+    </field>
+    <field name="ChromaKey Mode" dword="3" bits="22:22" type="uint">
+      <value name="KEYFILTER_KILL_ON_ANY_MATCH" value="0" />
+      <value name="KEYFILTER_REPLACE_BLACK" value="1" />
+    </field>
+    <field name="ChromaKey Index" dword="3" bits="24:23" type="uint" />
+    <field name="ChromaKey Enable" dword="3" bits="25:25" type="bool" />
+  </struct>
+  <struct name="SF_CLIP_VIEWPORT" length="16">
+    <field name="Viewport Matrix Element m00" dword="0" bits="31:0" type="float" />
+    <field name="Viewport Matrix Element m11" dword="1" bits="31:0" type="float" />
+    <field name="Viewport Matrix Element m22" dword="2" bits="31:0" type="float" />
+    <field name="Viewport Matrix Element m30" dword="3" bits="31:0" type="float" />
+    <field name="Viewport Matrix Element m31" dword="4" bits="31:0" type="float" />
+    <field name="Viewport Matrix Element m32" dword="5" bits="31:0" type="float" />
+    <field name="X Min Clip Guardband" dword="8" bits="31:0" type="float" />
+    <field name="X Max Clip Guardband" dword="9" bits="31:0" type="float" />
+    <field name="Y Min Clip Guardband" dword="10" bits="31:0" type="float" />
+    <field name="Y Max Clip Guardband" dword="11" bits="31:0" type="float" />
+  </struct>
+  <struct name="SO_DECL" length="1">
+    <field name="Component Mask" dword="0" bits="3:0" type="uint" default="0" />
+    <field name="Register Index" dword="0" bits="9:4" type="uint" />
+    <field name="Hole Flag" dword="0" bits="11:11" type="bool" />
+    <field name="Output Buffer Slot" dword="0" bits="13:12" type="uint" />
+  </struct>
+  <struct name="SO_DECL_ENTRY" length="2">
+    <field name="Stream 0 Decl" dword="0" bits="15:0" type="SO_DECL" />
+    <field name="Stream 1 Decl" dword="0" bits="31:16" type="SO_DECL" />
+    <field name="Stream 2 Decl" dword="1" bits="15:0" type="SO_DECL" />
+    <field name="Stream 3 Decl" dword="1" bits="31:16" type="SO_DECL" />
+  </struct>
+  <struct name="VERTEX_BUFFER_STATE" length="4">
+    <field name="Buffer Pitch" dword="0" bits="11:0" type="uint" />
+    <field name="Vertex Fetch Invalidate" dword="0" bits="12:12" type="bool" default="0" />
+    <field name="Null Vertex Buffer" dword="0" bits="13:13" type="bool" />
+    <field name="Address Modify Enable" dword="0" bits="14:14" type="bool" />
+    <field name="MOCS" dword="0" bits="19:16" type="uint" nonzero="true" />
+    <field name="Buffer Access Type" dword="0" bits="20:20" type="uint">
+      <value name="VERTEXDATA" value="0" />
+      <value name="INSTANCEDATA" value="1" />
+    </field>
+    <field name="Vertex Buffer Index" dword="0" bits="31:26" type="uint" />
+    <field name="Buffer Starting Address" dword="1" bits="31:0" type="address" />
+    <field name="End Address" dword="2" bits="31:0" type="address" />
+    <field name="Instance Data Step Rate" dword="3" bits="31:0" type="uint" />
+  </struct>
+  <instruction name="3DPRIMITIVE" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Indirect Parameter Enable" dword="0" bits="10:10" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Primitive Topology Type" dword="1" bits="5:0" type="3D_Prim_Topo_Type" />
+    <field name="Vertex Access Type" dword="1" bits="8:8" type="uint">
+      <value name="SEQUENTIAL" value="0" />
+      <value name="RANDOM" value="1" />
+    </field>
+    <field name="End Offset Enable" dword="1" bits="9:9" type="bool" />
+    <field name="Vertex Count Per Instance" dword="2" bits="31:0" type="uint" />
+    <field name="Start Vertex Location" dword="3" bits="31:0" type="uint" />
+    <field name="Instance Count" dword="4" bits="31:0" type="uint" />
+    <field name="Start Instance Location" dword="5" bits="31:0" type="uint" />
+    <field name="Base Vertex Location" dword="6" bits="31:0" type="int" />
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_POINTERS_DS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="40" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to DS Binding Table" dword="1" bits="15:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_POINTERS_GS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="41" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to GS Binding Table" dword="1" bits="15:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_POINTERS_HS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="39" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to HS Binding Table" dword="1" bits="15:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_POINTERS_PS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="42" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to PS Binding Table" dword="1" bits="15:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_POINTERS_VS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="38" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to VS Binding Table" dword="1" bits="15:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_BLEND_STATE_POINTERS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="36" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field dword="1" bits="0:0" type="mbo" />
+    <field name="Blend State Pointer" dword="1" bits="31:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_CC_STATE_POINTERS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="14" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field dword="1" bits="0:0" type="mbo" />
+    <field name="Color Calc State Pointer" dword="1" bits="31:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_CLEAR_PARAMS" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Depth Clear Value" dword="1" bits="31:0" type="uint" />
+    <field name="Depth Clear Value Valid" dword="2" bits="0:0" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_CLIP" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="18" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="1" bits="7:0" type="uint" />
+    <field name="Statistics Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Cull Mode" dword="1" bits="17:16" type="uint" prefix="CULLMODE">
+      <value name="BOTH" value="0" />
+      <value name="NONE" value="1" />
+      <value name="FRONT" value="2" />
+      <value name="BACK" value="3" />
+    </field>
+    <field name="Early Cull Enable" dword="1" bits="18:18" type="bool" />
+    <field name="Vertex Sub Pixel Precision Select" dword="1" bits="19:19" type="uint" />
+    <field name="Front Winding" dword="1" bits="20:20" type="uint" />
+    <field name="Triangle Fan Provoking Vertex Select" dword="2" bits="1:0" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+      <value name="Vertex 2" value="2" />
+    </field>
+    <field name="Line Strip/List Provoking Vertex Select" dword="2" bits="3:2" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+    </field>
+    <field name="Triangle Strip/List Provoking Vertex Select" dword="2" bits="5:4" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+      <value name="Vertex 2" value="2" />
+    </field>
+    <field name="Non-Perspective Barycentric Enable" dword="2" bits="8:8" type="bool" />
+    <field name="Perspective Divide Disable" dword="2" bits="9:9" type="bool" />
+    <field name="Clip Mode" dword="2" bits="15:13" type="uint">
+      <value name="CLIPMODE_NORMAL" value="0" />
+      <value name="CLIPMODE_REJECT_ALL" value="3" />
+      <value name="CLIPMODE_ACCEPT_ALL" value="4" />
+    </field>
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="2" bits="23:16" type="uint" />
+    <field name="Guardband Clip Test Enable" dword="2" bits="26:26" type="bool" />
+    <field name="Viewport Z Clip Test Enable" dword="2" bits="27:27" type="bool" />
+    <field name="Viewport XY Clip Test Enable" dword="2" bits="28:28" type="bool" />
+    <field name="API Mode" dword="2" bits="30:30" type="uint">
+      <value name="APIMODE_OGL" value="0" />
+      <value name="APIMODE_D3D" value="1" />
+    </field>
+    <field name="Clip Enable" dword="2" bits="31:31" type="bool" />
+    <field name="Maximum VP Index" dword="3" bits="3:0" type="uint" />
+    <field name="Force Zero RTA Index Enable" dword="3" bits="5:5" type="bool" />
+    <field name="Maximum Point Width" dword="3" bits="16:6" type="u8.3" />
+    <field name="Minimum Point Width" dword="3" bits="27:17" type="u8.3" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_DS" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="26" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Body" dword="1" bits="191:0" type="3DSTATE_CONSTANT_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_GS" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="22" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Body" dword="1" bits="191:0" type="3DSTATE_CONSTANT_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_HS" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="25" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Body" dword="1" bits="191:0" type="3DSTATE_CONSTANT_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_PS" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="23" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Body" dword="1" bits="191:0" type="3DSTATE_CONSTANT_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_VS" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="21" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Body" dword="1" bits="191:0" type="3DSTATE_CONSTANT_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_DEPTH_BUFFER" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="5" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="17:0" type="uint" />
+    <field name="Surface Format" dword="1" bits="20:18" type="uint">
+      <value name="D32_FLOAT" value="1" />
+      <value name="D24_UNORM_X8_UINT" value="3" />
+      <value name="D16_UNORM" value="5" />
+    </field>
+    <field name="Hierarchical Depth Buffer Enable" dword="1" bits="22:22" type="bool" />
+    <field name="Stencil Write Enable" dword="1" bits="27:27" type="bool" />
+    <field name="Depth Write Enable" dword="1" bits="28:28" type="bool" />
+    <field name="Surface Type" dword="1" bits="31:29" type="uint">
+      <value name="SURFTYPE_1D" value="0" />
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_3D" value="2" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface Base Address" dword="2" bits="31:0" type="address" />
+    <field name="LOD" dword="3" bits="3:0" type="uint" />
+    <field name="Width" dword="3" bits="17:4" type="uint" />
+    <field name="Height" dword="3" bits="31:18" type="uint" />
+    <field name="MOCS" dword="4" bits="3:0" type="uint" nonzero="true" />
+    <field name="Minimum Array Element" dword="4" bits="20:10" type="uint" />
+    <field name="Depth" dword="4" bits="31:21" type="uint">
+      <value name="SURFTYPE_CUBE (must be zero)" value="0" />
+    </field>
+    <field name="Depth Coordinate Offset X" dword="5" bits="15:0" type="int" />
+    <field name="Depth Coordinate Offset Y" dword="5" bits="31:16" type="int" />
+    <field name="Render Target View Extent" dword="6" bits="31:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_DEPTH_STENCIL_STATE_POINTERS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="37" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field dword="1" bits="0:0" type="mbo" />
+    <field name="Pointer to DEPTH_STENCIL_STATE" dword="1" bits="31:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_DS" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="29" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="2" bits="7:7" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="2" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="2" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="2" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="2" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="2" bits="30:30" type="bool" />
+    <field name="Single Domain Point Dispatch" dword="2" bits="31:31" type="uint" />
+    <field name="Per-Thread Scratch Space" dword="3" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="3" bits="31:10" type="address" />
+    <field name="Patch URB Entry Read Offset" dword="4" bits="9:4" type="uint" />
+    <field name="Patch URB Entry Read Length" dword="4" bits="17:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="4" bits="24:20" type="uint" />
+    <field name="Enable" dword="5" bits="0:0" type="bool" />
+    <field name="DS Cache Disable" dword="5" bits="1:1" type="bool" />
+    <field name="Compute W Coordinate Enable" dword="5" bits="2:2" type="bool" />
+    <field name="Statistics Enable" dword="5" bits="10:10" type="bool" />
+    <field name="Maximum Number of Threads" dword="5" bits="31:25" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_GS" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="17" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="2" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="2" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="2" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="2" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="2" bits="17:17" type="uint">
+      <value name="Normal Priority" value="0" />
+      <value name="High Priority" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="2" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="2" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="2" bits="30:30" type="bool" />
+    <field name="Single Program Flow" dword="2" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="3" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="3" bits="31:10" type="address" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="4" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="4" bits="9:4" type="uint" />
+    <field name="Include Vertex Handles" dword="4" bits="10:10" type="bool" />
+    <field name="Vertex URB Entry Read Length" dword="4" bits="16:11" type="uint" />
+    <field name="Output Topology" dword="4" bits="22:17" type="3D_Prim_Topo_Type" />
+    <field name="Output Vertex Size" dword="4" bits="28:23" type="uint" />
+    <field name="Enable" dword="5" bits="0:0" type="bool" />
+    <field name="Discard Adjacency" dword="5" bits="1:1" type="bool" />
+    <field name="Reorder Mode" dword="5" bits="2:2" type="uint">
+      <value name="LEADING" value="0" />
+      <value name="TRAILING" value="1" />
+    </field>
+    <field name="Hint" dword="5" bits="3:3" type="uint" />
+    <field name="Include Primitive ID" dword="5" bits="4:4" type="bool" />
+    <field name="GS Invocations Increment Value" dword="5" bits="9:5" type="uint" />
+    <field name="Statistics Enable" dword="5" bits="10:10" type="uint" />
+    <field name="Dispatch Mode" dword="5" bits="12:11" type="uint" prefix="DISPATCH_MODE">
+      <value name="SINGLE" value="0" />
+      <value name="DUAL_INSTANCE" value="1" />
+      <value name="DUAL_OBJECT" value="2" />
+    </field>
+    <field name="Default StreamID" dword="5" bits="14:13" type="uint" />
+    <field name="Instance Control" dword="5" bits="19:15" type="uint" />
+    <field name="Control Data Header Size" dword="5" bits="23:20" type="uint" />
+    <field name="Control Data Format" dword="5" bits="24:24" type="uint">
+      <value name="GSCTL_CUT" value="0" />
+      <value name="GSCTL_SID" value="1" />
+    </field>
+    <field name="Maximum Number of Threads" dword="5" bits="31:25" type="uint" />
+    <field name="Semaphore Handle" dword="6" bits="11:0" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_HIER_DEPTH_BUFFER" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="7" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="MOCS" dword="1" bits="28:25" type="uint" nonzero="true" />
+    <field name="Surface Base Address" dword="2" bits="31:0" type="address" />
+  </instruction>
+  <instruction name="3DSTATE_HS" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="27" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Maximum Number of Threads" dword="1" bits="6:0" type="uint" />
+    <field name="Software Exception Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="alternate" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="1" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Instance Count" dword="2" bits="3:0" type="uint" />
+    <field name="Statistics Enable" dword="2" bits="29:29" type="bool" />
+    <field name="Enable" dword="2" bits="31:31" type="bool" />
+    <field name="Kernel Start Pointer" dword="3" bits="31:6" type="offset" />
+    <field name="Per-Thread Scratch Space" dword="4" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="4" bits="31:10" type="address" />
+    <field name="Vertex URB Entry Read Offset" dword="5" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="5" bits="16:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="5" bits="23:19" type="uint" />
+    <field name="Include Vertex Handles" dword="5" bits="24:24" type="bool" />
+    <field name="Vector Mask Enable" dword="5" bits="26:26" type="bool" />
+    <field name="Single Program Flow" dword="5" bits="27:27" type="bool" />
+    <field name="Semaphore Handle" dword="6" bits="11:0" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_INDEX_BUFFER" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Index Format" dword="0" bits="9:8" type="uint" prefix="INDEX">
+      <value name="BYTE" value="0" />
+      <value name="WORD" value="1" />
+      <value name="DWORD" value="2" />
+    </field>
+    <field name="Cut Index Enable" dword="0" bits="10:10" type="bool" />
+    <field name="MOCS" dword="0" bits="15:12" type="uint" nonzero="true" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="10" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Buffer Starting Address" dword="1" bits="31:0" type="address" />
+    <field name="Buffer Ending Address" dword="2" bits="31:0" type="address" />
+  </instruction>
+  <instruction name="3DSTATE_LINE_STIPPLE" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="8" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Line Stipple Pattern" dword="1" bits="15:0" type="uint" />
+    <field name="Current Stipple Index" dword="1" bits="19:16" type="uint" />
+    <field name="Current Repeat Counter" dword="1" bits="29:21" type="uint" />
+    <field name="Modify Enable (Current Repeat Counter, Current Stipple Index)" dword="1" bits="31:31" type="bool" />
+    <field name="Line Stipple Repeat Count" dword="2" bits="8:0" type="uint" />
+    <field name="Line Stipple Inverse Repeat Count" dword="2" bits="31:15" type="u1.16" />
+  </instruction>
+  <instruction name="3DSTATE_MULTISAMPLE" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="13" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Number of Multisamples" dword="1" bits="3:1" type="uint">
+      <value name="NUMSAMPLES_1" value="0" />
+      <value name="NUMSAMPLES_4" value="2" />
+      <value name="NUMSAMPLES_8" value="3" />
+    </field>
+    <field name="Pixel Location" dword="1" bits="4:4" type="uint">
+      <value name="CENTER" value="0" />
+      <value name="UL_CORNER" value="1" />
+    </field>
+    <field name="Sample0 Y Offset" dword="2" bits="3:0" type="u0.4" />
+    <field name="Sample0 X Offset" dword="2" bits="7:4" type="u0.4" />
+    <field name="Sample1 Y Offset" dword="2" bits="11:8" type="u0.4" />
+    <field name="Sample1 X Offset" dword="2" bits="15:12" type="u0.4" />
+    <field name="Sample2 Y Offset" dword="2" bits="19:16" type="u0.4" />
+    <field name="Sample2 X Offset" dword="2" bits="23:20" type="u0.4" />
+    <field name="Sample3 Y Offset" dword="2" bits="27:24" type="u0.4" />
+    <field name="Sample3 X Offset" dword="2" bits="31:28" type="u0.4" />
+    <field name="Sample4 Y Offset" dword="3" bits="3:0" type="u0.4" />
+    <field name="Sample4 X Offset" dword="3" bits="7:4" type="u0.4" />
+    <field name="Sample5 Y Offset" dword="3" bits="11:8" type="u0.4" />
+    <field name="Sample5 X Offset" dword="3" bits="15:12" type="u0.4" />
+    <field name="Sample6 Y Offset" dword="3" bits="19:16" type="u0.4" />
+    <field name="Sample6 X Offset" dword="3" bits="23:20" type="u0.4" />
+    <field name="Sample7 Y Offset" dword="3" bits="27:24" type="u0.4" />
+    <field name="Sample7 X Offset" dword="3" bits="31:28" type="u0.4" />
+  </instruction>
+  <instruction name="3DSTATE_PS" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="32" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer 0" dword="1" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="2" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="2" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="2" bits="13:13" type="bool" />
+    <field name="Rounding Mode" dword="2" bits="15:14" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Floating Point Mode" dword="2" bits="16:16" type="uint">
+      <value name="IEEE-745" value="0" />
+      <value name="Alt" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="2" bits="25:18" type="uint" />
+    <field name="Denormal Mode" dword="2" bits="26:26" type="uint">
+      <value name="FTZ" value="0" />
+      <value name="RET" value="1" />
+    </field>
+    <field name="Sampler Count" dword="2" bits="29:27" type="uint" />
+    <field name="Vector Mask Enable" dword="2" bits="30:30" type="bool" />
+    <field name="Single Program Flow" dword="2" bits="31:31" type="bool" />
+    <field name="Per Thread Scratch Space" dword="3" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="3" bits="31:10" type="address" />
+    <field name="8 Pixel Dispatch Enable" dword="4" bits="0:0" type="bool" />
+    <field name="16 Pixel Dispatch Enable" dword="4" bits="1:1" type="bool" />
+    <field name="32 Pixel Dispatch Enable" dword="4" bits="2:2" type="bool" />
+    <field name="Position XY Offset Select" dword="4" bits="4:3" type="uint">
+      <value name="POSOFFSET_NONE" value="0" />
+      <value name="POSOFFSET_CENTROID" value="2" />
+      <value name="POSOFFSET_SAMPLE" value="3" />
+    </field>
+    <field name="Render Target Resolve Enable" dword="4" bits="6:6" type="bool" />
+    <field name="Dual Source Blend Enable" dword="4" bits="7:7" type="bool" />
+    <field name="Render Target Fast Clear Enable" dword="4" bits="8:8" type="bool" />
+    <field name="oMask Present to RenderTarget" dword="4" bits="9:9" type="bool" />
+    <field name="Attribute Enable" dword="4" bits="10:10" type="bool" />
+    <field name="Push Constant Enable" dword="4" bits="11:11" type="bool" />
+    <field name="Maximum Number of Threads" dword="4" bits="31:24" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 2" dword="5" bits="6:0" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 1" dword="5" bits="14:8" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 0" dword="5" bits="22:16" type="uint" />
+    <field name="Kernel Start Pointer 1" dword="6" bits="31:6" type="offset" />
+    <field name="Kernel Start Pointer 2" dword="7" bits="31:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_PUSH_CONSTANT_ALLOC_DS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="20" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Size" dword="1" bits="4:0" type="uint">
+      <value name="0KB" value="0" />
+    </field>
+    <field name="Constant Buffer Offset" dword="1" bits="19:16" type="uint">
+      <value name="0KB" value="0" />
+    </field>
+  </instruction>
+  <instruction name="3DSTATE_PUSH_CONSTANT_ALLOC_GS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="21" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Size" dword="1" bits="4:0" type="uint">
+      <value name="0KB" value="0" />
+    </field>
+    <field name="Constant Buffer Offset" dword="1" bits="19:16" type="uint">
+      <value name="0KB" value="0" />
+    </field>
+  </instruction>
+  <instruction name="3DSTATE_PUSH_CONSTANT_ALLOC_HS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="19" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Size" dword="1" bits="4:0" type="uint">
+      <value name="0KB" value="0" />
+    </field>
+    <field name="Constant Buffer Offset" dword="1" bits="19:16" type="uint">
+      <value name="0KB" value="0" />
+    </field>
+  </instruction>
+  <instruction name="3DSTATE_PUSH_CONSTANT_ALLOC_PS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="22" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Size" dword="1" bits="4:0" type="uint">
+      <value name="0KB" value="0" />
+    </field>
+    <field name="Constant Buffer Offset" dword="1" bits="19:16" type="uint">
+      <value name="0KB" value="0" />
+    </field>
+  </instruction>
+  <instruction name="3DSTATE_PUSH_CONSTANT_ALLOC_VS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="18" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Size" dword="1" bits="4:0" type="uint">
+      <value name="0KB" value="0" />
+    </field>
+    <field name="Constant Buffer Offset" dword="1" bits="19:16" type="uint">
+      <value name="0KB" value="0" />
+    </field>
+  </instruction>
+  <instruction name="3DSTATE_SAMPLER_STATE_POINTERS_DS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="45" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to DS Sampler State" dword="1" bits="31:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_SAMPLER_STATE_POINTERS_GS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="46" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to GS Sampler State" dword="1" bits="31:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_SAMPLER_STATE_POINTERS_HS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="44" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to HS Sampler State" dword="1" bits="31:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_SAMPLER_STATE_POINTERS_PS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="47" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to PS Sampler State" dword="1" bits="31:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_SAMPLER_STATE_POINTERS_VS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="43" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pointer to VS Sampler State" dword="1" bits="31:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_SAMPLE_MASK" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="24" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Sample Mask" dword="1" bits="7:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_SBE" bias="2" length="14" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="12" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="31" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Vertex URB Entry Read Offset" dword="1" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="1" bits="15:11" type="uint" />
+    <field name="Point Sprite Texture Coordinate Origin" dword="1" bits="20:20" type="uint">
+      <value name="UPPERLEFT" value="0" />
+      <value name="LOWERLEFT" value="1" />
+    </field>
+    <field name="Attribute Swizzle Enable" dword="1" bits="21:21" type="bool" />
+    <field name="Number of SF Output Attributes" dword="1" bits="27:22" type="uint" />
+    <field name="Attribute Swizzle Control Mode" dword="1" bits="28:28" type="uint">
+      <value name="SWIZ_0_15" value="0" />
+      <value name="SWIZ_16_31" value="1" />
+    </field>
+    <group count="16" dword="2" size="16">
+      <field name="Attribute" dword="0" bits="15:0" type="SF_OUTPUT_ATTRIBUTE_DETAIL" />
+    </group>
+    <field name="Point Sprite Texture Coordinate Enable" dword="10" bits="31:0" type="uint" />
+    <field name="Constant Interpolation Enable" dword="11" bits="31:0" type="uint" />
+    <field name="Attribute 0 WrapShortest Enables" dword="12" bits="3:0" type="uint" />
+    <field name="Attribute 1 WrapShortest Enables" dword="12" bits="7:4" type="uint" />
+    <field name="Attribute 2 WrapShortest Enables" dword="12" bits="11:8" type="uint" />
+    <field name="Attribute 3 WrapShortest Enables" dword="12" bits="15:12" type="uint" />
+    <field name="Attribute 4 WrapShortest Enables" dword="12" bits="19:16" type="uint" />
+    <field name="Attribute 5 WrapShortest Enables" dword="12" bits="23:20" type="uint" />
+    <field name="Attribute 6 WrapShortest Enables" dword="12" bits="27:24" type="uint" />
+    <field name="Attribute 7 WrapShortest Enables" dword="12" bits="31:28" type="uint" />
+    <field name="Attribute 8 WrapShortest Enables" dword="13" bits="3:0" type="uint" />
+    <field name="Attribute 9 WrapShortest Enables" dword="13" bits="7:4" type="uint" />
+    <field name="Attribute 10 WrapShortest Enables" dword="13" bits="11:8" type="uint" />
+    <field name="Attribute 11 WrapShortest Enables" dword="13" bits="15:12" type="uint" />
+    <field name="Attribute 12 WrapShortest Enables" dword="13" bits="19:16" type="uint" />
+    <field name="Attribute 13 WrapShortest Enables" dword="13" bits="23:20" type="uint" />
+    <field name="Attribute 14 WrapShortest Enables" dword="13" bits="27:24" type="uint" />
+    <field name="Attribute 15 WrapShortest Enables" dword="13" bits="31:28" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_SF" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="19" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Front Winding" dword="1" bits="0:0" type="uint" />
+    <field name="Viewport Transform Enable" dword="1" bits="1:1" type="bool" />
+    <field name="BackFace Fill Mode" dword="1" bits="4:3" type="uint" prefix="FILL_MODE">
+      <value name="SOLID" value="0" />
+      <value name="WIREFRAME" value="1" />
+      <value name="POINT" value="2" />
+    </field>
+    <field name="FrontFace Fill Mode" dword="1" bits="6:5" type="uint" prefix="FILL_MODE">
+      <value name="SOLID" value="0" />
+      <value name="WIREFRAME" value="1" />
+      <value name="POINT" value="2" />
+    </field>
+    <field name="Global Depth Offset Enable Point" dword="1" bits="7:7" type="bool" />
+    <field name="Global Depth Offset Enable Wireframe" dword="1" bits="8:8" type="bool" />
+    <field name="Global Depth Offset Enable Solid" dword="1" bits="9:9" type="bool" />
+    <field name="Statistics Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Legacy Global Depth Bias Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Depth Buffer Surface Format" dword="1" bits="14:12" type="uint">
+      <value name="D32_FLOAT_S8X24_UINT" value="0" />
+      <value name="D32_FLOAT" value="1" />
+      <value name="D24_UNORM_S8_UINT" value="2" />
+      <value name="D24_UNORM_X8_UINT" value="3" />
+      <value name="D16_UNORM" value="5" />
+    </field>
+    <field name="Multisample Rasterization Mode" dword="2" bits="9:8" type="uint">
+      <value name="MSRASTMODE_OFF_PIXEL" value="0" />
+      <value name="MSRASTMODE_OFF_PATTERN" value="1" />
+      <value name="MSRASTMODE_ON_PIXEL" value="2" />
+      <value name="MSRASTMODE_ON_PATTERN" value="3" />
+    </field>
+    <field name="Scissor Rectangle Enable" dword="2" bits="11:11" type="bool" />
+    <field name="Line End Cap Antialiasing Region Width" dword="2" bits="17:16" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Line Width" dword="2" bits="27:18" type="u3.7" />
+    <field name="Cull Mode" dword="2" bits="30:29" type="uint" prefix="CULLMODE">
+      <value name="BOTH" value="0" />
+      <value name="NONE" value="1" />
+      <value name="FRONT" value="2" />
+      <value name="BACK" value="3" />
+    </field>
+    <field name="Antialiasing Enable" dword="2" bits="31:31" type="bool" />
+    <field name="Point Width" dword="3" bits="10:0" type="u8.3" />
+    <field name="Point Width Source" dword="3" bits="11:11" type="uint">
+      <value name="Vertex" value="0" />
+      <value name="State" value="1" />
+    </field>
+    <field name="Vertex Sub Pixel Precision Select" dword="3" bits="12:12" type="uint">
+      <value name="8 Bit" value="0" />
+      <value name="4 Bit" value="1" />
+    </field>
+    <field name="AA Line Distance Mode" dword="3" bits="14:14" type="uint">
+      <value name="AALINEDISTANCE_TRUE" value="1" />
+    </field>
+    <field name="Triangle Fan Provoking Vertex Select" dword="3" bits="26:25" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+      <value name="Vertex 2" value="2" />
+    </field>
+    <field name="Line Strip/List Provoking Vertex Select" dword="3" bits="28:27" type="uint" />
+    <field name="Triangle Strip/List Provoking Vertex Select" dword="3" bits="30:29" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+      <value name="Vertex 2" value="2" />
+    </field>
+    <field name="Last Pixel Enable" dword="3" bits="31:31" type="bool" />
+    <field name="Global Depth Offset Constant" dword="4" bits="31:0" type="float" />
+    <field name="Global Depth Offset Scale" dword="5" bits="31:0" type="float" />
+    <field name="Global Depth Offset Clamp" dword="6" bits="31:0" type="float" />
+  </instruction>
+  <instruction name="3DSTATE_SO_BUFFER" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="24" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="11:0" type="uint" />
+    <field name="MOCS" dword="1" bits="28:25" type="uint" nonzero="true" />
+    <field name="SO Buffer Index" dword="1" bits="30:29" type="uint" />
+    <field name="Surface Base Address" dword="2" bits="31:2" type="address" />
+    <field name="Surface End Address" dword="3" bits="31:2" type="address" />
+  </instruction>
+  <instruction name="3DSTATE_SO_DECL_LIST" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="8:0" type="uint" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="23" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Stream to Buffer Selects [0]" dword="1" bits="3:0" type="uint" />
+    <field name="Stream to Buffer Selects [1]" dword="1" bits="7:4" type="uint" />
+    <field name="Stream to Buffer Selects [2]" dword="1" bits="11:8" type="uint" />
+    <field name="Stream to Buffer Selects [3]" dword="1" bits="15:12" type="uint" />
+    <field name="Num Entries [0]" dword="2" bits="7:0" type="uint" />
+    <field name="Num Entries [1]" dword="2" bits="15:8" type="uint" />
+    <field name="Num Entries [2]" dword="2" bits="23:16" type="uint" />
+    <field name="Num Entries [3]" dword="2" bits="31:24" type="uint" />
+    <group count="0" dword="3" size="64">
+      <field name="Entry" dword="0" bits="63:0" type="SO_DECL_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_STENCIL_BUFFER" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="6" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="MOCS" dword="1" bits="28:25" type="uint" nonzero="true" />
+    <field name="Surface Base Address" dword="2" bits="31:0" type="address" />
+  </instruction>
+  <instruction name="3DSTATE_STREAMOUT" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="30" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="SO Buffer Enable [0]" dword="1" bits="8:8" type="bool" />
+    <field name="SO Buffer Enable [1]" dword="1" bits="9:9" type="bool" />
+    <field name="SO Buffer Enable [2]" dword="1" bits="10:10" type="bool" />
+    <field name="SO Buffer Enable [3]" dword="1" bits="11:11" type="bool" />
+    <field name="SO Statistics Enable" dword="1" bits="25:25" type="bool" />
+    <field name="Reorder Mode" dword="1" bits="26:26" type="uint">
+      <value name="LEADING" value="0" />
+      <value name="TRAILING" value="1" />
+    </field>
+    <field name="Render Stream Select" dword="1" bits="28:27" type="uint" />
+    <field name="Rendering Disable" dword="1" bits="30:30" type="bool" />
+    <field name="SO Function Enable" dword="1" bits="31:31" type="bool" />
+    <field name="Stream 0 Vertex Read Length" dword="2" bits="4:0" type="uint" />
+    <field name="Stream 0 Vertex Read Offset" dword="2" bits="5:5" type="uint" />
+    <field name="Stream 1 Vertex Read Length" dword="2" bits="12:8" type="uint" />
+    <field name="Stream 1 Vertex Read Offset" dword="2" bits="13:13" type="uint" />
+    <field name="Stream 2 Vertex Read Length" dword="2" bits="20:16" type="uint" />
+    <field name="Stream 2 Vertex Read Offset" dword="2" bits="21:21" type="uint" />
+    <field name="Stream 3 Vertex Read Length" dword="2" bits="28:24" type="uint" />
+    <field name="Stream 3 Vertex Read Offset" dword="2" bits="29:29" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_TE" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="28" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="TE Enable" dword="1" bits="0:0" type="bool" />
+    <field name="TE Mode" dword="1" bits="2:1" type="uint">
+      <value name="HW_TESS" value="0" />
+      <value name="SW_TESS" value="1" />
+    </field>
+    <field name="TE Domain" dword="1" bits="5:4" type="uint">
+      <value name="QUAD" value="0" />
+      <value name="TRI" value="1" />
+      <value name="ISOLINE" value="2" />
+    </field>
+    <field name="Output Topology" dword="1" bits="9:8" type="uint" prefix="OUTPUT">
+      <value name="POINT" value="0" />
+      <value name="LINE" value="1" />
+      <value name="TRI_CW" value="2" />
+      <value name="TRI_CCW" value="3" />
+    </field>
+    <field name="Partitioning" dword="1" bits="13:12" type="uint">
+      <value name="INTEGER" value="0" />
+      <value name="ODD_FRACTIONAL" value="1" />
+      <value name="EVEN_FRACTIONAL" value="2" />
+    </field>
+    <field name="Maximum Tessellation Factor Odd" dword="2" bits="31:0" type="float" />
+    <field name="Maximum Tessellation Factor Not Odd" dword="3" bits="31:0" type="float" />
+  </instruction>
+  <instruction name="3DSTATE_URB_DS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="50" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="DS Number of URB Entries" dword="1" bits="15:0" type="uint" />
+    <field name="DS URB Entry Allocation Size" dword="1" bits="24:16" type="uint" />
+    <field name="DS URB Starting Address" dword="1" bits="29:25" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_URB_GS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="51" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="GS Number of URB Entries" dword="1" bits="15:0" type="uint" />
+    <field name="GS URB Entry Allocation Size" dword="1" bits="24:16" type="uint" />
+    <field name="GS URB Starting Address" dword="1" bits="29:25" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_URB_HS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="49" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="HS Number of URB Entries" dword="1" bits="15:0" type="uint" />
+    <field name="HS URB Entry Allocation Size" dword="1" bits="24:16" type="uint" />
+    <field name="HS URB Starting Address" dword="1" bits="29:25" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_URB_VS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="48" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="VS Number of URB Entries" dword="1" bits="15:0" type="uint" />
+    <field name="VS URB Entry Allocation Size" dword="1" bits="24:16" type="uint" />
+    <field name="VS URB Starting Address" dword="1" bits="29:25" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_VIEWPORT_STATE_POINTERS_CC" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="35" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="CC Viewport Pointer" dword="1" bits="31:5" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="33" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="SF Clip Viewport Pointer" dword="1" bits="31:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_WM" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="20" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Multisample Rasterization Mode" dword="1" bits="1:0" type="uint">
+      <value name="MSRASTMODE_OFF_PIXEL" value="0" />
+      <value name="MSRASTMODE_OFF_PATTERN" value="1" />
+      <value name="MSRASTMODE_ON_PIXEL" value="2" />
+      <value name="MSRASTMODE_ON_PATTERN" value="3" />
+    </field>
+    <field name="Point Rasterization Rule" dword="1" bits="2:2" type="uint">
+      <value name="RASTRULE_UPPER_LEFT" value="0" />
+      <value name="RASTRULE_UPPER_RIGHT" value="1" />
+    </field>
+    <field name="Line Stipple Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Polygon Stipple Enable" dword="1" bits="4:4" type="bool" />
+    <field name="Line Antialiasing Region Width" dword="1" bits="7:6" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Line End Cap Antialiasing Region Width" dword="1" bits="9:8" type="uint" />
+    <field name="Pixel Shader Uses Input Coverage Mask" dword="1" bits="10:10" type="bool" />
+    <field name="Barycentric Interpolation Mode" dword="1" bits="16:11" type="uint">
+      <value name="BIM_PERSPECTIVE_PIXEL" value="1" />
+      <value name="BIM_PERSPECTIVE_CENTROID" value="2" />
+      <value name="BIM_PERSPECTIVE_SAMPLE" value="4" />
+      <value name="BIM_LINEAR_PIXEL" value="8" />
+      <value name="BIM_LINEAR_CENTROID" value="16" />
+      <value name="BIM_LINEAR_SAMPLE" value="32" />
+    </field>
+    <field name="Position ZW Interpolation Mode" dword="1" bits="18:17" type="uint">
+      <value name="INTERP_PIXEL" value="0" />
+      <value name="INTERP_CENTROID" value="2" />
+      <value name="INTERP_SAMPLE" value="3" />
+    </field>
+    <field name="Pixel Shader Uses Source W" dword="1" bits="19:19" type="bool" />
+    <field name="Pixel Shader Uses Source Depth" dword="1" bits="20:20" type="bool" />
+    <field name="Early Depth/Stencil Control" dword="1" bits="22:21" type="uint">
+      <value name="EDSC_NORMAL" value="0" />
+      <value name="EDSC_PSEXEC" value="1" />
+      <value name="EDSC_PREPS" value="2" />
+    </field>
+    <field name="Pixel Shader Computed Depth Mode" dword="1" bits="24:23" type="uint">
+      <value name="PSCDEPTH_OFF" value="0" />
+      <value name="PSCDEPTH_ON" value="1" />
+      <value name="PSCDEPTH_ON_GE" value="2" />
+      <value name="PSCDEPTH_ON_LE" value="3" />
+    </field>
+    <field name="Pixel Shader Kills Pixel" dword="1" bits="25:25" type="bool" />
+    <field name="Legacy Diamond Line Rasterization" dword="1" bits="26:26" type="bool" />
+    <field name="Hierarchical Depth Buffer Resolve Enable" dword="1" bits="27:27" type="bool" />
+    <field name="Depth Buffer Resolve Enable" dword="1" bits="28:28" type="bool" />
+    <field name="Thread Dispatch Enable" dword="1" bits="29:29" type="bool" />
+    <field name="Depth Buffer Clear" dword="1" bits="30:30" type="bool" />
+    <field name="Statistics Enable" dword="1" bits="31:31" type="bool" />
+    <field name="Multisample Dispatch Mode" dword="2" bits="31:31" type="uint">
+      <value name="MSDISPMODE_PERSAMPLE" value="0" />
+      <value name="MSDISPMODE_PERPIXEL" value="1" />
+    </field>
+  </instruction>
+  <instruction name="GPGPU_OBJECT" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="4:0" type="uint" />
+    <field name="Shared Local Memory Fixed Offset" dword="1" bits="7:7" type="uint" />
+    <field name="Indirect Data Length" dword="2" bits="16:0" type="uint" />
+    <field name="Half-Slice Destination Select" dword="2" bits="18:17" type="uint">
+      <value name="Half-Slice 1" value="2" />
+      <value name="Half-Slice 0" value="1" />
+      <value name="Either Half-Slice" value="0" />
+    </field>
+    <field name="End of Thread Group" dword="2" bits="24:24" type="uint" />
+    <field name="Shared Local Memory Offset" dword="2" bits="31:28" type="uint" />
+    <field name="Indirect Data Start Address" dword="3" bits="31:0" type="offset" />
+    <field name="Thread Group ID X" dword="4" bits="31:0" type="uint" />
+    <field name="Thread Group ID Y" dword="5" bits="31:0" type="uint" />
+    <field name="Thread Group ID Z" dword="6" bits="31:0" type="uint" />
+    <field name="Execution Mask" dword="7" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="GPGPU_WALKER" bias="2" length="11" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Indirect Parameter Enable" dword="0" bits="10:10" type="bool" />
+    <field name="SubOpcode A" dword="0" bits="23:16" type="uint" default="5" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="4:0" type="uint" />
+    <field name="Thread Width Counter Maximum" dword="2" bits="5:0" type="uint" />
+    <field name="Thread Height Counter Maximum" dword="2" bits="13:8" type="uint" />
+    <field name="Thread Depth Counter Maximum" dword="2" bits="21:16" type="uint" />
+    <field name="SIMD Size" dword="2" bits="31:30" type="uint">
+      <value name="SIMD8" value="0" />
+      <value name="SIMD16" value="1" />
+      <value name="SIMD32" value="2" />
+    </field>
+    <field name="Thread Group ID Starting X" dword="3" bits="31:0" type="uint" />
+    <field name="Thread Group ID X Dimension" dword="4" bits="31:0" type="uint" />
+    <field name="Thread Group ID Starting Y" dword="5" bits="31:0" type="uint" />
+    <field name="Thread Group ID Y Dimension" dword="6" bits="31:0" type="uint" />
+    <field name="Thread Group ID Starting Z" dword="7" bits="31:0" type="uint" />
+    <field name="Thread Group ID Z Dimension" dword="8" bits="31:0" type="uint" />
+    <field name="Right Execution Mask" dword="9" bits="31:0" type="uint" />
+    <field name="Bottom Execution Mask" dword="10" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MEDIA_OBJECT" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="4" />
+    <field name="Media Command Sub-Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Media Command Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="4:0" type="uint" />
+    <field name="Indirect Data Length" dword="2" bits="16:0" type="uint" />
+    <field name="Half-Slice Destination Select" dword="2" bits="18:17" type="uint">
+      <value name="Half-Slice 1" value="2" />
+      <value name="Half-Slice 0" value="1" />
+      <value name="Either half-slice" value="0" />
+    </field>
+    <field name="Use Scoreboard" dword="2" bits="21:21" type="uint">
+      <value name="Not using scoreboard" value="0" />
+      <value name="Using scoreboard" value="1" />
+    </field>
+    <field name="Thread Synchronization" dword="2" bits="24:24" type="uint">
+      <value name="No thread synchronization" value="0" />
+      <value name="Thread dispatch is synchronized by the 'spawn root thread' message" value="1" />
+    </field>
+    <field name="Children Present" dword="2" bits="31:31" type="bool" />
+    <field name="Indirect Data Start Address" dword="3" bits="31:0" type="address" />
+    <field name="Scoreboard X" dword="4" bits="8:0" type="uint" />
+    <field name="Scoredboard Y" dword="4" bits="24:16" type="uint" />
+    <field name="Scoreboard Mask" dword="5" bits="7:0" type="uint" />
+    <field name="Scoreboard Color" dword="5" bits="19:16" type="uint" />
+    <group count="0" dword="6" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MEDIA_STATE_FLUSH" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="0" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="Watermark Required" dword="1" bits="6:6" type="uint" />
+  </instruction>
+  <instruction name="MEDIA_VFE_STATE" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="6" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Per Thread Scratch Space" dword="1" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="1" bits="31:10" type="address" />
+    <field name="GPGPU Mode" dword="2" bits="2:2" type="bool" />
+    <field name="Gateway MMIO Access Control" dword="2" bits="4:3" type="uint">
+      <value name="No MMIO read/write allowed" value="0" />
+      <value name="MMIO read/write to any address" value="2" />
+    </field>
+    <field name="Bypass Gateway Control" dword="2" bits="6:6" type="uint">
+      <value name="Maintaining OpenGateway/ForwardMsg/CloseGateway protocol (legacy mode)" value="0" />
+      <value name="Bypassing OpenGateway/CloseGateway protocol" value="1" />
+    </field>
+    <field name="Reset Gateway Timer" dword="2" bits="7:7" type="uint">
+      <value name="Maintaining the existing timestamp state" value="0" />
+      <value name="Resetting relative timer and latching the global timestamp" value="1" />
+    </field>
+    <field name="Number of URB Entries" dword="2" bits="15:8" type="uint" />
+    <field name="Maximum Number of Threads" dword="2" bits="31:16" type="uint" />
+    <field name="CURBE Allocation Size" dword="4" bits="15:0" type="uint" />
+    <field name="URB Entry Allocation Size" dword="4" bits="31:16" type="uint" />
+    <field name="Scoreboard Mask" dword="5" bits="7:0" type="uint" />
+    <field name="Scoreboard Type" dword="5" bits="30:30" type="uint">
+      <value name="Stalling Scoreboard" value="0" />
+      <value name="Non-Stalling Scoreboard" value="1" />
+    </field>
+    <field name="Scoreboard Enable" dword="5" bits="31:31" type="uint">
+      <value name="Scoreboard disabled" value="0" />
+      <value name="Scoreboard enabled" value="1" />
+    </field>
+    <field name="Scoreboard 0 Delta X" dword="6" bits="3:0" type="int" />
+    <field name="Scoreboard 0 Delta Y" dword="6" bits="7:4" type="int" />
+    <field name="Scoreboard 1 Delta X" dword="6" bits="11:8" type="int" />
+    <field name="Scoreboard 1 Delta Y" dword="6" bits="15:12" type="int" />
+    <field name="Scoreboard 2 Delta X" dword="6" bits="19:16" type="int" />
+    <field name="Scoreboard 2 Delta Y" dword="6" bits="23:20" type="int" />
+    <field name="Scoreboard 3 Delta X" dword="6" bits="27:24" type="int" />
+    <field name="Scoreboard 3 Delta Y" dword="6" bits="31:28" type="int" />
+    <field name="Scoreboard 4 Delta X" dword="7" bits="3:0" type="int" />
+    <field name="Scoreboard 4 Delta Y" dword="7" bits="7:4" type="int" />
+    <field name="Scoreboard 5 Delta X" dword="7" bits="11:8" type="int" />
+    <field name="Scoreboard 5 Delta Y" dword="7" bits="15:12" type="int" />
+    <field name="Scoreboard 6 Delta X" dword="7" bits="19:16" type="int" />
+    <field name="Scoreboard 6 Delta Y" dword="7" bits="23:20" type="int" />
+    <field name="Scoreboard 7 Delta X" dword="7" bits="27:24" type="int" />
+    <field name="Scoreboard 7 Delta Y" dword="7" bits="31:28" type="int" />
+  </instruction>
+  <instruction name="MFC_AVC_PAK_OBJECT" bias="2" length="11" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="9" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="9" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect PAK-MV Data Length" dword="1" bits="9:0" type="uint" />
+    <field name="Indirect PAK-MV Data Start Address Offset" dword="2" bits="28:0" type="offset" />
+    <group count="8" dword="3" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+    <group count="12" dword="11" size="32">
+      <field name="VDEnc Mode Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFC_MPEG2_PAK_OBJECT" bias="2" length="9" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="7" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="9" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="8" dword="1" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFC_MPEG2_SLICEGROUP_STATE" bias="2" length="8" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="6" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="3" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Stream ID" dword="1" bits="1:0" type="uint" />
+    <field name="Slice ID" dword="1" bits="7:4" type="uint" />
+    <field name="Intra Slice Flag" dword="1" bits="12:12" type="bool" />
+    <field name="Intra Slice" dword="1" bits="13:13" type="bool" />
+    <field name="First Slice Header Disable" dword="1" bits="14:14" type="bool" />
+    <field name="Tail Insertion Present" dword="1" bits="15:15" type="bool" />
+    <field name="Slice Data Insertion Present" dword="1" bits="16:16" type="bool" />
+    <field name="Header Insertion Present" dword="1" bits="17:17" type="bool" />
+    <field name="Compressed BitStream Output Disable" dword="1" bits="18:18" type="bool" />
+    <field name="Last Slice" dword="1" bits="19:19" type="bool" />
+    <field name="MB Type Skip Conversion Disable" dword="1" bits="20:20" type="bool" />
+    <field name="Rate Control Panic Type" dword="1" bits="22:22" type="uint">
+      <value name="QP Panic" value="0" />
+      <value name="CBP Panic" value="1" />
+    </field>
+    <field name="Rate Control Panic Enable" dword="1" bits="23:23" type="bool" />
+    <field name="Rate Control Stable Tolerance" dword="1" bits="27:24" type="uint" />
+    <field name="Rate Control Triggle Mode" dword="1" bits="29:28" type="uint">
+      <value name="Always Rate Control" value="0" />
+      <value name="Gentle Rate Control" value="1" />
+      <value name="Loose Rate Control" value="2" />
+    </field>
+    <field name="Reset Rate Control Counter" dword="1" bits="30:30" type="bool" />
+    <field name="Rate Control Counter Enable" dword="1" bits="31:31" type="bool" />
+    <field name="First MB X Count" dword="2" bits="7:0" type="uint" />
+    <field name="First MB Y Count" dword="2" bits="15:8" type="uint" />
+    <field name="Next Slice Group MB X Count" dword="2" bits="23:16" type="uint" />
+    <field name="Next Slice Group MB Y Count" dword="2" bits="31:24" type="uint" />
+    <field name="Slice Group QP" dword="3" bits="5:0" type="uint" />
+    <field name="Slice Group Skip" dword="3" bits="8:8" type="bool" />
+    <field name="Indirect PAK-BSE Data Start Address" dword="4" bits="28:0" type="offset" />
+    <field name="Grow Init" dword="5" bits="3:0" type="uint" />
+    <field name="Grow Resistance" dword="5" bits="7:4" type="uint" />
+    <field name="Shrink Init" dword="5" bits="11:8" type="uint" />
+    <field name="Shrink Resistance" dword="5" bits="15:12" type="uint" />
+    <field name="QP Max Positive Modifier Magnitude" dword="5" bits="23:16" type="uint" />
+    <field name="QP Max Negative Modifier Magnitude" dword="5" bits="31:24" type="uint" />
+    <field name="Correct 1" dword="6" bits="3:0" type="uint" />
+    <field name="Correct 2" dword="6" bits="7:4" type="uint" />
+    <field name="Correct 3" dword="6" bits="11:8" type="uint" />
+    <field name="Correct 4" dword="6" bits="15:12" type="uint" />
+    <field name="Correct 5" dword="6" bits="19:16" type="uint" />
+    <field name="Correct 6" dword="6" bits="23:20" type="uint" />
+    <field name="CV0" dword="7" bits="3:0" type="uint" />
+    <field name="CV1" dword="7" bits="7:4" type="uint" />
+    <field name="CV2" dword="7" bits="11:8" type="uint" />
+    <field name="CV3" dword="7" bits="15:12" type="uint" />
+    <field name="CV4" dword="7" bits="19:16" type="uint" />
+    <field name="CV5" dword="7" bits="23:20" type="uint" />
+    <field name="CV6" dword="7" bits="27:24" type="uint" />
+    <field name="CV7" dword="7" bits="31:28" type="uint" />
+  </instruction>
+  <instruction name="MFD_AVC_BSD_OBJECT" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="8" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect BSD Data Length" dword="1" bits="31:0" type="uint" />
+    <field name="Indirect BSD Data Start Address" dword="2" bits="28:0" type="address" />
+    <field name="Inline Data" dword="3" bits="95:0" type="INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT" />
+  </instruction>
+  <instruction name="MFD_AVC_DPB_STATE" bias="2" length="11" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="9" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="6" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="16" dword="1" size="1">
+      <field name="Non-Existing Frame" dword="0" bits="0:0" type="uint">
+        <value name="INVALID" value="1" />
+        <value name="VALID" value="0" />
+      </field>
+    </group>
+    <group count="16" dword="1" offset_bits="16" size="1">
+      <field name="Long Term Frame" dword="0" bits="0:0" type="uint" />
+    </group>
+    <group count="16" dword="2" size="2">
+      <field name="Used for Reference" dword="0" bits="1:0" type="uint">
+        <value name="NOT_REFERENCE" value="0" />
+        <value name="TOP_FIELD" value="1" />
+        <value name="BOTTOM_FIELD" value="2" />
+        <value name="FRAME" value="3" />
+      </field>
+    </group>
+    <group count="16" dword="3" size="16">
+      <field name="LTST Frame Number List" dword="0" bits="15:0" type="uint" prefix="LTST">
+        <value name="Long Term Frame" value="1" />
+        <value name="Short Term Frame" value="0" />
+      </field>
+    </group>
+  </instruction>
+  <instruction name="MFD_AVC_SLICEADDR" bias="2" length="3" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="1" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="7" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect BSD Data Length" dword="1" bits="31:0" type="uint" />
+    <field name="Indirect BSD Data Start Address" dword="2" bits="28:0" type="address" />
+  </instruction>
+  <instruction name="MFD_IT_OBJECT" bias="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="6" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="9" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect IT-MV Data Length" dword="1" bits="9:0" type="uint" />
+    <field name="Indirect IT-MV Data Start Address Offset" dword="2" bits="28:0" type="offset" />
+    <field name="Indirect IT-COEFF Data Length" dword="3" bits="11:0" type="uint" />
+    <field name="Indirect IT-COEFF Data Start Address Offset" dword="4" bits="28:0" type="offset" />
+    <field name="Indirect IT-DBLK Control Data Length" dword="5" bits="5:0" type="uint" />
+    <field name="Indirect IT-DBLK Control Data Start Address Offset" dword="6" bits="28:0" type="offset" />
+    <group count="0" dword="7" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFD_JPEG_BSD_OBJECT" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="8" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect Data Length" dword="1" bits="31:0" type="uint" />
+    <field name="Indirect Data Start Address" dword="2" bits="28:0" type="offset" />
+    <field name="Scan Vertical Position" dword="3" bits="12:0" type="uint" />
+    <field name="Scan Horizontal Position" dword="3" bits="28:16" type="uint" />
+    <field name="MCU Count" dword="4" bits="25:0" type="uint" />
+    <field name="Scan Components" dword="4" bits="29:27" type="uint" />
+    <field name="Interleaved" dword="4" bits="30:30" type="bool" />
+    <field name="Restart Interval" dword="5" bits="15:0" type="uint" />
+  </instruction>
+  <instruction name="MFD_MPEG2_BSD_OBJECT" bias="2" length="5" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="3" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="8" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect BSD Data Length" dword="1" bits="31:0" type="uint" />
+    <field name="Indirect BSD Data Start Address" dword="2" bits="28:0" type="offset" />
+    <field name="Inline Data" dword="3" bits="63:0" type="MFD_MPEG2_BSD_OBJECT_INLINE_DATA_DESCRIPTION" />
+  </instruction>
+  <instruction name="MFD_VC1_BSD_OBJECT" bias="2" length="5" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="3" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="8" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect BSD Data Length" dword="1" bits="23:0" type="uint" />
+    <field name="Indirect BSD Data Start Address" dword="2" bits="28:0" type="offset" />
+    <field name="Next Slice Vertical Position" dword="3" bits="8:0" type="uint" />
+    <field name="Slice Start Vertical Position" dword="3" bits="23:16" type="uint" />
+    <field name="First MB Bit Offset" dword="4" bits="2:0" type="uint" />
+    <field name="Emulation Prevention Byte Present" dword="4" bits="4:4" type="bool" />
+    <field name="First MB Byte Offset of Slice Data or Slice Header" dword="4" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="MFD_VC1_LONG_PIC_STATE" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="1" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Picture Width In MBs" dword="1" bits="7:0" type="uint" />
+    <field name="Picture Height In MBs" dword="1" bits="23:16" type="uint" />
+    <field name="VC1 Profile" dword="2" bits="0:0" type="uint">
+      <value name="Simple/Main Profile" value="0" />
+      <value name="Advanced Profile" value="1" />
+    </field>
+    <field name="Second Field" dword="2" bits="3:3" type="bool" />
+    <field name="Overlap Smoothing Enable" dword="2" bits="4:4" type="bool" />
+    <field name="Loop Filter Enable" dword="2" bits="5:5" type="bool" />
+    <field name="Range Reduction Enable" dword="2" bits="6:6" type="bool" />
+    <field name="Range Reduction Scale" dword="2" bits="7:7" type="uint" />
+    <field name="MV Mode" dword="2" bits="11:8" type="uint" />
+    <field name="Sync Marker" dword="2" bits="12:12" type="bool" />
+    <field name="Interpolation Rounder Control" dword="2" bits="13:13" type="bool" />
+    <field name="Implicit Quantizer" dword="2" bits="14:14" type="bool" />
+    <field name="DMV Surface Valid" dword="2" bits="15:15" type="bool" />
+    <field name="Bitplane Buffer Pitch" dword="2" bits="31:24" type="uint" />
+    <field name="B Scale Factor" dword="3" bits="7:0" type="uint" />
+    <field name="PQ Value" dword="3" bits="12:8" type="uint" />
+    <field name="Alternative PQ Value" dword="3" bits="20:16" type="uint" />
+    <field name="Frame Coding Mode" dword="3" bits="25:24" type="uint">
+      <value name="Progressive Frame Picture" value="0" />
+      <value name="Interlaced Frame Picture" value="1" />
+      <value name="Field Picture with Top Field First" value="2" />
+      <value name="Field Picture with Bottom Field First" value="3" />
+    </field>
+    <field name="Picture Type" dword="3" bits="28:26" type="uint" />
+    <field name="CONDOVER" dword="3" bits="30:29" type="uint" />
+    <field name="PQ Uniform" dword="4" bits="0:0" type="bool" />
+    <field name="Half QP" dword="4" bits="1:1" type="bool" />
+    <field name="Alternative PQ Configuration" dword="4" bits="3:2" type="uint" />
+    <field name="Alternative PQ Edge Mask" dword="4" bits="7:4" type="uint" />
+    <field name="Extended MV Range" dword="4" bits="9:8" type="uint" />
+    <field name="Extended DMV Range" dword="4" bits="11:10" type="uint" />
+    <field name="Forward Reference Distance" dword="4" bits="19:16" type="uint" />
+    <field name="Backward Reference Distance" dword="4" bits="23:20" type="uint" />
+    <field name="Number of References" dword="4" bits="24:24" type="uint">
+      <value name="One field referenced" value="0" />
+      <value name="Two fields referenced" value="1" />
+    </field>
+    <field name="Reference Field Picture Polarity" dword="4" bits="25:25" type="uint">
+      <value name="Top (even) Field" value="0" />
+      <value name="Bottom (odd) Field" value="1" />
+    </field>
+    <field name="Fast UV Motion Compensation" dword="4" bits="26:26" type="uint">
+      <value name="No Rounding" value="0" />
+      <value name="Quarter-Pel offsets to Half/Full pel positions" value="1" />
+    </field>
+    <field name="Four MV Switch" dword="4" bits="27:27" type="uint">
+      <value name="Only 1-MV" value="0" />
+      <value name="1, 2, or 4 MVs" value="1" />
+    </field>
+    <field name="Unified MV Mode" dword="4" bits="29:28" type="uint">
+      <value name="1-MV half-pel bilinear" value="3" />
+      <value name="1-MV" value="1" />
+      <value name="1-MV half-pel" value="2" />
+      <value name="Mixed MV" value="0" />
+    </field>
+    <field name="Coded Block Pattern Table" dword="5" bits="2:0" type="uint" />
+    <field name="Intra Transform DC Table" dword="5" bits="3:3" type="uint" />
+    <field name="Picture-level Transform Chroma AC Coding Set Index" dword="5" bits="5:4" type="uint" />
+    <field name="Picture-level Transform Luma AC Coding Set Index" dword="5" bits="7:6" type="uint" />
+    <field name="MB Mode Table" dword="5" bits="10:8" type="uint" />
+    <field name="MB Transform Type" dword="5" bits="11:11" type="bool" />
+    <field name="Picture-level Transform Type" dword="5" bits="13:12" type="uint">
+      <value name="8x8 Transform" value="0" />
+      <value name="8x4 Transform" value="1" />
+      <value name="4x8 Transform" value="2" />
+      <value name="4x4 Transform" value="3" />
+    </field>
+    <field name="2-MV Block Pattern Table" dword="5" bits="17:16" type="uint" />
+    <field name="4-MV Block Pattern Table" dword="5" bits="19:18" type="uint" />
+    <field name="MV Table" dword="5" bits="22:20" type="uint" />
+    <field name="FIELDTX Raw" dword="5" bits="24:24" type="bool" />
+    <field name="ACPRED Raw" dword="5" bits="25:25" type="bool" />
+    <field name="OVERFLAGS Raw" dword="5" bits="26:26" type="bool" />
+    <field name="DIRECTMB Raw" dword="5" bits="27:27" type="bool" />
+    <field name="SKIPMB Raw" dword="5" bits="28:28" type="bool" />
+    <field name="MVTYPEMB Raw" dword="5" bits="29:29" type="bool" />
+    <field name="FORWARDMB Raw" dword="5" bits="30:30" type="bool" />
+    <field name="Bitplane Buffer Present" dword="5" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="MFD_VC1_SHORT_PIC_STATE" bias="2" length="5" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="3" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Picture Width" dword="1" bits="7:0" type="uint" />
+    <field name="Picture Height" dword="1" bits="23:16" type="uint" />
+    <field name="Picture Structure" dword="2" bits="1:0" type="uint" />
+    <field name="Second Field" dword="2" bits="3:3" type="bool" />
+    <field name="Intra Picture" dword="2" bits="4:4" type="bool" />
+    <field name="Backward Prediction Present" dword="2" bits="5:5" type="bool" />
+    <field name="VC1 Profile" dword="2" bits="11:11" type="uint">
+      <value name="Simple/Main Profile" value="0" />
+      <value name="Advanced Profile" value="1" />
+    </field>
+    <field name="DMV Surface Valid" dword="2" bits="15:15" type="bool" />
+    <field name="MV Mode" dword="2" bits="19:16" type="uint" />
+    <field name="Interpolation Rounder Control" dword="2" bits="23:23" type="bool" />
+    <field name="Bitplane Buffer Pitch" dword="2" bits="31:24" type="uint" />
+    <field name="variable-sized transform coding" dword="3" bits="0:0" type="bool" />
+    <field name="DQUANT" dword="3" bits="2:1" type="uint" />
+    <field name="EXTENDED_MV Present" dword="3" bits="3:3" type="bool" />
+    <field name="Fast UV Motion Compensation" dword="3" bits="4:4" type="uint">
+      <value name="No Rounding" value="0" />
+      <value name="Quarter-Pel offsets to Half/Full pel positions" value="1" />
+    </field>
+    <field name="Loop Filter Enable" dword="3" bits="5:5" type="bool" />
+    <field name="REFDIST_FLAG" dword="3" bits="6:6" type="bool" />
+    <field name="PANSCAN Present" dword="3" bits="7:7" type="bool" />
+    <field name="MAXBFRAMES" dword="3" bits="10:8" type="uint" />
+    <field name="RANGERED Present" dword="3" bits="11:11" type="bool" />
+    <field name="SYNCMARKER Present" dword="3" bits="12:12" type="bool" />
+    <field name="MULTIRES Present" dword="3" bits="13:13" type="bool" />
+    <field name="QUANTIZER" dword="3" bits="15:14" type="uint" />
+    <field name="P-Pic Ref Distance" dword="3" bits="20:16" type="uint" />
+    <field name="Progressive Pic Type" dword="3" bits="23:22" type="uint" />
+    <field name="Range Reduction Enable" dword="3" bits="28:28" type="uint" />
+    <field name="Range Reduction Scale" dword="3" bits="29:29" type="uint" />
+    <field name="Overlap Smoothing Enable" dword="3" bits="30:30" type="bool" />
+    <field name="EXTENDED_DMV Present" dword="4" bits="0:0" type="bool" />
+    <field name="PSF" dword="4" bits="1:1" type="bool" />
+    <field name="REFPIC" dword="4" bits="2:2" type="bool" />
+    <field name="FINTERFLAG" dword="4" bits="3:3" type="bool" />
+    <field name="TFCNTRFLAG" dword="4" bits="4:4" type="bool" />
+    <field name="INTERLACE" dword="4" bits="5:5" type="bool" />
+    <field name="PULLDOWN" dword="4" bits="6:6" type="bool" />
+    <field name="POSTPROC" dword="4" bits="7:7" type="bool" />
+    <field name="4-MV Allowed" dword="4" bits="8:8" type="bool" />
+    <field name="BFraction Enumeration" dword="4" bits="28:24" type="uint" />
+  </instruction>
+  <instruction name="MFX_AVC_DIRECTMODE_STATE" bias="2" length="69" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="67" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="32" dword="33" size="32">
+      <field name="Direct MV Buffer - Address" dword="0" bits="31:6" type="address" />
+      <field name="Direct MV Buffer - Arbitration Priority Control" dword="0" bits="5:4" type="uint">
+        <value name="Highest priority" value="0" />
+        <value name="Second highest priority" value="1" />
+        <value name="Third highest priority" value="2" />
+        <value name="Lowest priority" value="3" />
+      </field>
+      <field name="Direct MV Buffer - Graphics Data Type" dword="0" bits="2:2" type="uint" />
+      <field name="Direct MV Buffer - Cacheability Control" dword="0" bits="1:0" type="uint">
+        <value name="GTT entry" value="0" />
+        <value name="Not in LLC or MLC" value="1" />
+        <value name="In LLC but not MLC" value="2" />
+        <value name="Both LLC and MLC" value="3" />
+      </field>
+    </group>
+    <group count="2" dword="33" size="32">
+      <field name="Direct MV Buffer (Write) - Address" dword="0" bits="31:6" type="address" />
+      <field name="Direct MV Buffer (Write) - Arbitration Priority Control" dword="0" bits="5:4" type="uint">
+        <value name="Highest priority" value="0" />
+        <value name="Second highest priority" value="1" />
+        <value name="Third highest priority" value="2" />
+        <value name="Lowest priority" value="3" />
+      </field>
+      <field name="Direct MV Buffer (Write) - Graphics Data Type" dword="0" bits="2:2" type="uint" />
+      <field name="Direct MV Buffer (Write) - Cacheability Control" dword="0" bits="1:0" type="uint">
+        <value name="GTT entry" value="0" />
+        <value name="Not in LLC or MLC" value="1" />
+        <value name="In LLC but not MLC" value="2" />
+        <value name="Both LLC and MLC" value="3" />
+      </field>
+    </group>
+    <group count="34" dword="35" size="32">
+      <field name="POC List" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFX_AVC_IMG_STATE" bias="2" length="14" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="12" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Size" dword="1" bits="15:0" type="uint" />
+    <field name="Frame Width" dword="2" bits="7:0" type="uint" />
+    <field name="Frame Height" dword="2" bits="23:16" type="uint" />
+    <field name="Image Structure" dword="3" bits="9:8" type="uint">
+      <value name="Frame Picture" value="0" />
+      <value name="Top Field Picture" value="1" />
+      <value name="Bottom Field Picture" value="3" />
+      <value name="Invalid, not allowed." value="2" />
+    </field>
+    <field name="Weighted BiPrediction IDC" dword="3" bits="11:10" type="uint">
+      <value name="DEFAULT" value="0" />
+      <value name="EXPLICIT" value="1" />
+      <value name="IMPLICIT" value="2" />
+    </field>
+    <field name="Weighted Prediction Enable" dword="3" bits="12:12" type="bool" />
+    <field name="First Chroma QP Offset" dword="3" bits="20:16" type="int" />
+    <field name="Second Chroma QP Offset" dword="3" bits="28:24" type="int" />
+    <field name="Field Picture" dword="4" bits="0:0" type="bool" />
+    <field name="MBAFF Mode" dword="4" bits="1:1" type="bool" />
+    <field name="Frame MB Only" dword="4" bits="2:2" type="bool" />
+    <field name="8x8 IDCT Transform Mode" dword="4" bits="3:3" type="bool" />
+    <field name="Direct 8x8 Inference" dword="4" bits="4:4" type="bool" />
+    <field name="Constrained Intra Prediction" dword="4" bits="5:5" type="bool" />
+    <field name="Non-Reference Picture" dword="4" bits="6:6" type="bool" />
+    <field name="Entropy Coding Sync Enable" dword="4" bits="7:7" type="bool" />
+    <field name="MB MV Format" dword="4" bits="8:8" type="uint">
+      <value name="IGNORE" value="0" />
+      <value name="FOLLOW" value="1" />
+    </field>
+    <field name="Chroma Format IDC" dword="4" bits="11:10" type="uint">
+      <value name="Monochrome picture" value="0" />
+      <value name="4:2:0 picture" value="1" />
+      <value name="4:2:2 picture (not supported)" value="2" />
+      <value name="4:4:4 picture (not supported)" value="3" />
+    </field>
+    <field name="MV Unpacked Enable" dword="4" bits="12:12" type="bool" />
+    <field name="Load Bitstream Pointer Per Slice" dword="4" bits="14:14" type="bool" />
+    <field name="MB Status Read" dword="4" bits="15:15" type="bool" />
+    <field name="Minimum Frame Size" dword="4" bits="31:16" type="uint" />
+    <field name="Intra MB Max Bit Control" dword="5" bits="0:0" type="bool" />
+    <field name="Inter MB Max Bit Control" dword="5" bits="1:1" type="bool" />
+    <field name="Frame Bitrate Max Report" dword="5" bits="2:2" type="bool" />
+    <field name="Frame Bitrate Min Report" dword="5" bits="3:3" type="bool" />
+    <field name="Force IPCM Control" dword="5" bits="7:7" type="bool" />
+    <field name="MB Level Rate Control" dword="5" bits="9:9" type="bool" />
+    <field name="Minimum Frame Size Units" dword="5" bits="11:10" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="16 bytes" value="1" />
+      <value name="4Kb" value="2" />
+      <value name="16Kb" value="3" />
+    </field>
+    <field name="Inter MB Force CBP to Zero Control" dword="5" bits="12:12" type="bool" />
+    <field name="Non First Pass" dword="5" bits="16:16" type="uint" />
+    <field name="Trellis Quantization Chroma Disable" dword="5" bits="27:27" type="bool" />
+    <field name="Trellis Quantization Rounding" dword="5" bits="30:28" type="uint" />
+    <field name="Trellis Quantization Enable" dword="5" bits="31:31" type="bool" />
+    <field name="Intra MB Conformance Max Size" dword="6" bits="11:0" type="uint" />
+    <field name="Inter MB Conformance Max Size" dword="6" bits="27:16" type="uint" />
+    <field name="Slice Delta QP Max[0]" dword="8" bits="7:0" type="int" />
+    <field name="Slice Delta QP Max[1]" dword="8" bits="15:8" type="int" />
+    <field name="Slice Delta QP Max[2]" dword="8" bits="23:16" type="uint" />
+    <field name="Slice Delta QP Max[3]" dword="8" bits="31:24" type="int" />
+    <field name="Slice Delta QP Min[0]" dword="9" bits="7:0" type="int" />
+    <field name="Slice Delta QP Min[1]" dword="9" bits="15:8" type="int" />
+    <field name="Slice Delta QP Min[2]" dword="9" bits="23:16" type="int" />
+    <field name="Slice Delta QP Min[3]" dword="9" bits="31:24" type="int" />
+    <field name="Frame Bitrate Min" dword="10" bits="13:0" type="uint" />
+    <field name="Frame Bitrate Min Unit Mode" dword="10" bits="14:14" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Min Unit" dword="10" bits="15:15" type="uint" />
+    <field name="Frame Bitrate Max" dword="10" bits="29:16" type="uint" />
+    <field name="Frame Bitrate Max Unit Mode" dword="10" bits="30:30" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Max Unit" dword="10" bits="31:31" type="uint" />
+    <field name="Frame Bitrate Min Delta" dword="11" bits="14:0" type="uint" />
+    <field name="Frame Bitrate Max Delta" dword="11" bits="30:16" type="uint" />
+    <field name="Slice Stats Stream-Out Enable" dword="11" bits="31:31" type="bool" />
+    <field name="Initial QP Value" dword="13" bits="7:0" type="int" />
+    <field name="Number of Active Reference Pictures from L0" dword="13" bits="13:8" type="uint" />
+    <field name="Number of Active Reference Pictures from L1" dword="13" bits="21:16" type="uint" />
+    <field name="Number of Reference Frames" dword="13" bits="28:24" type="uint" />
+    <field name="Current Picture Has Performed MMCO5" dword="13" bits="29:29" type="bool" />
+    <field name="Pic Order Present" dword="14" bits="0:0" type="bool" />
+    <field name="Delta Pic Order Always Zero" dword="14" bits="1:1" type="bool" />
+    <field name="Pic Order Count Type" dword="14" bits="3:2" type="uint" />
+    <field name="Slice Group Map Type" dword="14" bits="10:8" type="uint" />
+    <field name="Redundant Pic Count Present" dword="14" bits="11:11" type="bool" />
+    <field name="Number of Slice Groups" dword="14" bits="14:12" type="uint" />
+    <field name="Deblocking Filter Control Present" dword="14" bits="15:15" type="bool" />
+    <field name="Log2 Max Frame Number" dword="14" bits="23:16" type="uint" />
+    <field name="Log2 Max Pic Order Count LSB" dword="14" bits="31:24" type="uint" />
+    <field name="Slice Group Change Rate" dword="15" bits="15:0" type="uint" />
+    <field name="Current Picture Frame Number" dword="15" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="MFX_AVC_SLICE_STATE" bias="2" length="10" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="8" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="3" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Slice Type" dword="1" bits="3:0" type="uint">
+      <value name="P Slice" value="0" />
+      <value name="B Slice" value="1" />
+      <value name="I Slice" value="2" />
+    </field>
+    <field name="Log2 Weight Denominator Luma" dword="2" bits="2:0" type="uint" />
+    <field name="Log2 Weight Denominator Chroma" dword="2" bits="10:8" type="uint" />
+    <field name="Number of Reference Pictures in Inter-prediction List 0" dword="2" bits="21:16" type="uint" />
+    <field name="Number of Reference Pictures in Inter-prediction List 1" dword="2" bits="29:24" type="uint" />
+    <field name="Slice Alpha C0 Offset Div2" dword="3" bits="3:0" type="int" />
+    <field name="Slice Beta Offset Div2" dword="3" bits="11:8" type="int" />
+    <field name="Slice Quantization Parameter" dword="3" bits="21:16" type="uint" />
+    <field name="CABAC Init IDC" dword="3" bits="25:24" type="uint" />
+    <field name="Disable Deblocking Filter Indicator" dword="3" bits="28:27" type="uint" />
+    <field name="Direct Prediction Type" dword="3" bits="29:29" type="uint">
+      <value name="Temporal" value="0" />
+      <value name="Spatial" value="1" />
+    </field>
+    <field name="Weighted Prediction Indicator" dword="3" bits="31:30" type="uint" />
+    <field name="Slice Start MB Number" dword="4" bits="14:0" type="uint" />
+    <field name="Slice Horizontal Position" dword="4" bits="23:16" type="uint" />
+    <field name="Slice Vertical Position" dword="4" bits="31:24" type="uint" />
+    <field name="Next Slice Horizontal Position" dword="5" bits="7:0" type="uint" />
+    <field name="Next Slice Vertical Position" dword="5" bits="23:16" type="uint" />
+    <field name="Stream ID" dword="6" bits="1:0" type="uint" />
+    <field name="Slice ID" dword="6" bits="7:4" type="uint" />
+    <field name="CABAC Zero Word Insertion Enable" dword="6" bits="12:12" type="bool" />
+    <field name="Emulation Byte Slice Insert Enable" dword="6" bits="13:13" type="bool" />
+    <field name="Tail Insertion Present" dword="6" bits="15:15" type="bool" />
+    <field name="Slice Data Insertion Present" dword="6" bits="16:16" type="bool" />
+    <field name="Header Insertion Present" dword="6" bits="17:17" type="bool" />
+    <field name="Last Slice Group" dword="6" bits="19:19" type="bool" />
+    <field name="MB Type Skip Conversion Disable" dword="6" bits="20:20" type="bool" />
+    <field name="MB Type Direct Conversion Disable" dword="6" bits="21:21" type="bool" />
+    <field name="Rate Control Panic Type" dword="6" bits="22:22" type="uint">
+      <value name="QP Panic" value="0" />
+      <value name="CBP Panic" value="1" />
+    </field>
+    <field name="Rate Control Panic Enable" dword="6" bits="23:23" type="bool" />
+    <field name="Rate Control Stable Tolerance" dword="6" bits="27:24" type="uint" />
+    <field name="Rate Control Triggle Mode" dword="6" bits="29:28" type="uint">
+      <value name="Always Rate Control" value="0" />
+      <value name="Gentle Rate Control" value="1" />
+      <value name="Loose Rate Control" value="2" />
+    </field>
+    <field name="Reset Rate Control Counter" dword="6" bits="30:30" type="bool" />
+    <field name="Rate Control Counter Enable" dword="6" bits="31:31" type="uint" />
+    <field name="Indirect PAK-BSE Data Start Address" dword="7" bits="28:0" type="offset" />
+    <field name="Grow Init" dword="8" bits="3:0" type="uint" />
+    <field name="Grow Resistance" dword="8" bits="7:4" type="uint" />
+    <field name="Shrink Init" dword="8" bits="11:8" type="uint" />
+    <field name="Shrink Resistance" dword="8" bits="15:12" type="uint" />
+    <field name="QP Max Positive Modifier Magnitude" dword="8" bits="23:16" type="uint" />
+    <field name="QP Max Negative Modifier Magnitude" dword="8" bits="31:24" type="uint" />
+    <field name="Correct 1" dword="9" bits="3:0" type="uint" />
+    <field name="Correct 2" dword="9" bits="7:4" type="uint" />
+    <field name="Correct 3" dword="9" bits="11:8" type="uint" />
+    <field name="Correct 4" dword="9" bits="15:12" type="uint" />
+    <field name="Correct 5" dword="9" bits="19:16" type="uint" />
+    <field name="Correct 6" dword="9" bits="23:20" type="uint" />
+    <field name="Round Intra" dword="9" bits="26:24" type="uint">
+      <value name="+1/16" value="0" />
+      <value name="+2/16" value="1" />
+      <value name="+3/16" value="2" />
+      <value name="+4/16" value="3" />
+      <value name="+5/16" value="4" />
+      <value name="+6/16" value="5" />
+      <value name="+7/16" value="6" />
+      <value name="+8/16" value="7" />
+    </field>
+    <field name="Round Intra Enable" dword="9" bits="27:27" type="bool" />
+    <field name="Round Inter" dword="9" bits="30:28" type="uint">
+      <value name="+1/16" value="0" />
+      <value name="+2/16" value="1" />
+      <value name="+3/16" value="2" />
+      <value name="+4/16" value="3" />
+      <value name="+5/16" value="4" />
+      <value name="+6/16" value="5" />
+      <value name="+7/16" value="6" />
+      <value name="+8/16" value="7" />
+    </field>
+    <field name="Round Inter Enable" dword="9" bits="31:31" type="bool" />
+    <field name="CV0" dword="10" bits="3:0" type="uint" />
+    <field name="CV1" dword="10" bits="7:4" type="uint" />
+    <field name="CV2" dword="10" bits="11:8" type="uint" />
+    <field name="CV3" dword="10" bits="15:12" type="uint" />
+    <field name="CV4" dword="10" bits="19:16" type="uint" />
+    <field name="CV5" dword="10" bits="23:20" type="uint" />
+    <field name="CV6" dword="10" bits="27:24" type="uint" />
+    <field name="CV7" dword="10" bits="31:28" type="uint" />
+  </instruction>
+  <instruction name="MFX_AVC_WEIGHTOFFSET_STATE" bias="2" length="98" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="96" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="5" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Weight and Offset Select" dword="1" bits="0:0" type="uint">
+      <value name="L0 table" value="0" />
+      <value name="L1 table" value="1" />
+    </field>
+    <group count="96" dword="2" size="32">
+      <field name="Weight Offset" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFX_BSP_BUF_BASE_ADDR_STATE" bias="2" length="4" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="2" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="4" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="BSD/MPC Row Store Scratch Buffer - Arbitration Priority Control" dword="1" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second Highest priority" value="1" />
+      <value name="Third Highest Priority" value="2" />
+      <value name="Lowest Priority" value="3" />
+    </field>
+    <field name="BSD/MPC Row Store Scratch Buffer - Address" dword="1" bits="31:6" type="address" />
+    <field name="MPR Row Store Scratch Buffer - Arbitration Priority Control" dword="2" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MPR Row Store Scratch Buffer - Address" dword="2" bits="31:6" type="address" />
+    <field name="Bitplane Read Buffer - Arbitration Priority Control" dword="3" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Bitplane Read Buffer - Address" dword="3" bits="31:6" type="address" />
+  </instruction>
+  <instruction name="MFX_DBK_OBJECT" bias="2" length="5" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="3" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="9" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pre Deblocking Source - Cacheability Control" dword="1" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Pre Deblocking Source - Graphics Data Type" dword="1" bits="2:2" type="uint" />
+    <field name="Pre Deblocking Source - Arbitration Priority Control" dword="1" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Pre Deblocking Source - Address" dword="1" bits="31:6" type="address" />
+    <field name="Deblocking Control - Cacheability Control" dword="2" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Deblocking Control - Graphics Data Type" dword="2" bits="2:2" type="uint" />
+    <field name="Deblocking Control - Arbitration Priority Control" dword="2" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Deblocking Control - Address" dword="2" bits="31:6" type="address" />
+    <field name="Deblocking - Cacheability Control" dword="3" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Deblocking - Graphics Data Type" dword="3" bits="2:2" type="uint" />
+    <field name="Deblocking - Arbitration Priority Control" dword="3" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Deblocking - Address" dword="3" bits="31:6" type="address" />
+    <field name="Deblock Row Store - Cacheability Control" dword="4" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Deblock Row Store - Graphics Data Type" dword="4" bits="2:2" type="uint" />
+    <field name="Deblock Row Store - Arbitration Priority Control" dword="4" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Deblock Row Store - Address" dword="4" bits="31:6" type="address" />
+  </instruction>
+  <instruction name="MFX_FQM_STATE" bias="2" length="34" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="32" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="8" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="AVC" dword="1" bits="1:0" type="uint">
+      <value name="AVC_4x4_Intra_MATRIX" value="0" />
+      <value name="AVC_4x4_Inter_MATRIX" value="1" />
+      <value name="AVC_8x8_Intra_MATRIX" value="2" />
+      <value name="AVC_8x8_Inter_MATRIX" value="3" />
+    </field>
+    <field name="MPEG2" dword="1" bits="1:0" type="uint">
+      <value name="MPEG_INTRA_QUANTIZER_MATRIX" value="0" />
+      <value name="MPEG_NON_INTRA_QUANTIZER_MATRIX" value="1" />
+    </field>
+    <field name="Forward Quantizer Matrix" dword="2" bits="1023:0" type="uint" />
+  </instruction>
+  <instruction name="MFX_IND_OBJ_BASE_ADDR_STATE" bias="2" length="11" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="9" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="3" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="MFX Indirect Bitstream Object - Cacheability Control" dword="1" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="MFX Indirect Bitstream Object - Graphics Data Type" dword="1" bits="2:2" type="uint" />
+    <field name="MFX Indirect Bitstream Object - Arbitration Priority Control" dword="1" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MFX Indirect Bitstream Object - Address" dword="1" bits="31:12" type="address" />
+    <field name="MFX Indirect Bitstream Object - Access Upper Bound" dword="2" bits="31:12" type="address" />
+    <field name="MFX Indirect MV Object - Cacheability Control" dword="3" bits="1:0" type="uint">
+      <value name="From GTT entry" value="0" />
+      <value name="Not cached in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="MFX Indirect MV Object - Graphics Data Type" dword="3" bits="2:2" type="uint" />
+    <field name="MFX Indirect MV Object - Arbitration Priority Control" dword="3" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MFX Indirect MV Object - Address" dword="3" bits="31:12" type="address" />
+    <field name="MFX Indirect MV Object - Access Upper Bound" dword="4" bits="31:12" type="address" />
+    <field name="MFD Indirect IT-COEFF Object - Cacheability Control" dword="5" bits="1:0" type="uint">
+      <value name="From GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="MFD Indirect IT-COEFF Object - Graphics Data Type" dword="5" bits="2:2" type="uint" />
+    <field name="MFD Indirect IT-COEFF Object - Arbitration Priority Control" dword="5" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MFD Indirect IT-COEFF Object - Address" dword="5" bits="31:12" type="address" />
+    <field name="MFD Indirect IT-COEFF Object - Access Upper Bound" dword="6" bits="31:12" type="address" />
+    <field name="MFD Indirect IT-DBLK Object - Cacheability Control" dword="7" bits="1:0" type="uint">
+      <value name="From GTT entry" value="0" />
+      <value name="Not cached in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="MFD Indirect IT-DBLK Object - Graphics Data Type" dword="7" bits="2:2" type="uint" />
+    <field name="MFD Indirect IT-DBLK Object - Arbitration Priority Control" dword="7" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MFD Indirect IT-DBLK Object - Address" dword="7" bits="31:12" type="address" />
+    <field name="MFD Indirect IT-DBLK Object - Access Upper Bound" dword="8" bits="31:12" type="address" />
+    <field name="MFC Indirect PAK-BSE Object - Cacheability Control" dword="9" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="MFC Indirect PAK-BSE Object - Graphics Data Type" dword="9" bits="2:2" type="uint" />
+    <field name="MFC Indirect PAK-BSE Object - Arbitration Priority Control" dword="9" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MFC Indirect PAK-BSE Object - Address" dword="9" bits="31:12" type="address" />
+    <field name="MFC Indirect PAK-BSE Object - Access Upper Bound" dword="10" bits="31:12" type="address" />
+  </instruction>
+  <instruction name="MFX_JPEG_HUFF_TABLE_STATE" bias="2" length="831" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="829" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Huffman Table ID" dword="1" bits="0:0" type="uint" />
+    <group count="12" dword="2" size="8">
+      <field name="DC_BITS" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="12" dword="5" size="8">
+      <field name="DC_HUFFVAL" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="16" dword="8" size="8">
+      <field name="AC_BITS" dword="0" bits="15:0" type="uint" />
+    </group>
+    <group count="160" dword="12" size="8">
+      <field name="AC_HUFFVAL" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="2" dword="52" size="8">
+      <field name="AC_HUFFVAL2" dword="0" bits="7:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFX_JPEG_PIC_STATE" bias="2" length="3" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="1" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Input Format YUV" dword="1" bits="2:0" type="uint" />
+    <field name="Rotation" dword="1" bits="5:4" type="uint" />
+    <field name="Frame Width In Blocks" dword="2" bits="12:0" type="uint" />
+    <field name="Frame Height In Blocks" dword="2" bits="28:16" type="uint" />
+  </instruction>
+  <instruction name="MFX_MPEG2_PIC_STATE" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Scan Order" dword="1" bits="6:6" type="uint">
+      <value name="MPEG_ZIGZAG_SCAN" value="0" />
+      <value name="MPEG_ALTERNATE_VERTICAL_SCAN" value="1" />
+    </field>
+    <field name="Intra VLC Format" dword="1" bits="7:7" type="uint" />
+    <field name="Quantizer Scale Type" dword="1" bits="8:8" type="uint">
+      <value name="MPEG_QSCALE_LINEAR" value="0" />
+      <value name="MPEG_QSCALE_NONLINEAR" value="1" />
+    </field>
+    <field name="Concealment MV" dword="1" bits="9:9" type="bool" />
+    <field name="Frame Prediction Frame DCT" dword="1" bits="10:10" type="uint" />
+    <field name="Top Field First" dword="1" bits="11:11" type="bool" />
+    <field name="Picture Structure" dword="1" bits="13:12" type="uint">
+      <value name="MPEG_TOP_FIELD" value="1" />
+      <value name="MPEG_BOTTOM_FIELD" value="2" />
+      <value name="MPEG_FRAME" value="3" />
+    </field>
+    <field name="Intra DC Precision" dword="1" bits="15:14" type="uint" />
+    <field name="F_code[0][0]" dword="1" bits="19:16" type="uint" />
+    <field name="F_code[0][1]" dword="1" bits="23:20" type="uint" />
+    <field name="F_code[1][0]" dword="1" bits="27:24" type="uint" />
+    <field name="F_code[1][1]" dword="1" bits="31:28" type="uint" />
+    <field name="Disable Mismatch" dword="2" bits="0:0" type="bool" />
+    <field name="Mismatch Control Disable" dword="2" bits="1:1" type="bool" />
+    <field name="Picture Coding Type" dword="2" bits="10:9" type="uint">
+      <value name="MPEG_I_PICTURE" value="1" />
+      <value name="MPEG_P_PICTURE" value="2" />
+      <value name="MPEG_B_PICTURE" value="3" />
+    </field>
+    <field name="Load Bitstream Pointer Per Slice" dword="2" bits="14:14" type="bool" />
+    <field name="Frame Width In MBs" dword="3" bits="7:0" type="uint" />
+    <field name="Frame Height In MBs" dword="3" bits="23:16" type="uint" />
+    <field name="Round Intra DC" dword="4" bits="2:1" type="uint" />
+    <field name="Round Inter DC" dword="4" bits="6:4" type="uint" />
+    <field name="Round Intra AC" dword="4" bits="10:8" type="uint" />
+    <field name="Round Inter AC," dword="4" bits="14:12" type="uint" />
+    <field name="Minimum Frame Size" dword="4" bits="31:16" type="uint" />
+    <field name="Intra MB Max Bit Control" dword="5" bits="0:0" type="uint" />
+    <field name="Inter MB Max Bit Control" dword="5" bits="1:1" type="uint" />
+    <field name="Frame Bitrate Max Report" dword="5" bits="2:2" type="uint" />
+    <field name="Frame Bitrate Min Report" dword="5" bits="3:3" type="uint" />
+    <field name="MBRateControlMask" dword="5" bits="9:9" type="uint" />
+    <field name="Minimum Frame Size Units" dword="5" bits="11:10" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="16 bytes" value="1" />
+      <value name="4Kb" value="2" />
+      <value name="16Kb" value="3" />
+    </field>
+    <field name="Inter MB Force CBP to Zero Control" dword="5" bits="12:12" type="uint" />
+    <field name="Frame Size Control" dword="5" bits="16:16" type="uint" />
+    <field name="Intra MB Conformance Max Size" dword="6" bits="11:0" type="uint" />
+    <field name="Inter MB Conformance Max Size" dword="6" bits="27:16" type="uint" />
+    <field name="Slice Delta QP Max[0]" dword="8" bits="7:0" type="int" />
+    <field name="Slice Delta QP Max[1]" dword="8" bits="15:8" type="int" />
+    <field name="Slice Delta QP Max[2]" dword="8" bits="23:16" type="int" />
+    <field name="Slice Delta QP Max[3]" dword="8" bits="31:24" type="int" />
+    <field name="Slice Delta QP Min[0]" dword="9" bits="7:0" type="int" />
+    <field name="Slice Delta QP Min[1]" dword="9" bits="15:8" type="int" />
+    <field name="Slice Delta QP Min[2]" dword="9" bits="23:16" type="int" />
+    <field name="Slice Delta QP Min[3]" dword="9" bits="31:24" type="int" />
+    <field name="Frame Bitrate Min" dword="10" bits="13:0" type="uint" />
+    <field name="Frame Bitrate Min Unit Mode" dword="10" bits="14:14" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New Mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Min Unit" dword="10" bits="15:15" type="uint" />
+    <field name="Frame Bitrate Max" dword="10" bits="29:16" type="uint" />
+    <field name="Frame Bitrate Max Unit Mode" dword="10" bits="30:30" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Max Unit" dword="10" bits="31:31" type="uint" />
+    <field name="Frame Bitrate Min Delta" dword="11" bits="14:0" type="uint" />
+    <field name="Frame Bitrate Max Delta" dword="11" bits="30:16" type="uint" />
+  </instruction>
+  <instruction name="MFX_PAK_INSERT_OBJECT" bias="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="8" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Bitstream Start Reset" dword="1" bits="0:0" type="bool" />
+    <field name="End of Slice" dword="1" bits="1:1" type="bool" />
+    <field name="Last Header" dword="1" bits="2:2" type="bool" />
+    <field name="Emulation Byte Bits Insert Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Skip Emulation Byte Count" dword="1" bits="7:4" type="uint" />
+    <field name="Data Bits In Last DW" dword="1" bits="13:8" type="uint" />
+    <field name="Slice Header Indicator" dword="1" bits="14:14" type="uint">
+      <value name="SLICE_HEADER" value="1" />
+      <value name="LEGACY" value="0" />
+    </field>
+    <field name="Header Length Excluded From Size" dword="1" bits="15:15" type="uint">
+      <value name="NO_ACCUMULATION" value="1" />
+      <value name="ACCUMULATE" value="0" />
+    </field>
+    <field name="Data Byte Offset" dword="1" bits="17:16" type="uint" />
+    <group count="0" dword="2" size="32">
+      <field name="Insert Data PayLoad" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFX_PIPE_BUF_ADDR_STATE" bias="2" length="24" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="22" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pre Deblocking Destination - Arbitration Priority Control" dword="1" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Pre Deblocking Destination - Address" dword="1" bits="31:6" type="address" />
+    <field name="Post Deblocking Destination - Cacheability Control" dword="2" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Post Deblocking Destination - Graphics Data Type" dword="2" bits="2:2" type="uint" />
+    <field name="Post Deblocking Destination - Arbitration Priority Control" dword="2" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Post Deblocking Destination - Address" dword="2" bits="31:6" type="address" />
+    <field name="Original Uncompressed Picture Source - Cacheability Control" dword="3" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Original Uncompressed Picture Source - Graphics Data Type" dword="3" bits="2:2" type="uint" />
+    <field name="Original Uncompressed Picture Source - Arbitration Priority Control" dword="3" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Original Uncompressed Picture Source - Address" dword="3" bits="31:6" type="address" />
+    <field name="Stream-Out Data Destination - Cacheability Control" dword="4" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Stream-Out Data Destination - Graphics Data Type" dword="4" bits="2:2" type="uint" />
+    <field name="Stream-Out Data Destination - Arbitration Priority Control" dword="4" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Stream-Out Data Destination - Address" dword="4" bits="31:6" type="address" />
+    <field name="Intra Row Store Scratch Buffer - Cacheability Control" dword="5" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Intra Row Store Scratch Buffer - Graphics Data Type" dword="5" bits="2:2" type="uint" />
+    <field name="Intra Row Store Scratch Buffer - Arbitration Priority Control" dword="5" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Intra Row Store Scratch Buffer - Address" dword="5" bits="31:6" type="address" />
+    <field name="Deblocking Filter Row Store Scratch Buffer - Cacheability Control" dword="6" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Deblocking Filter Row Store Scratch Buffer - Graphics Data Type" dword="6" bits="2:2" type="uint" />
+    <field name="Deblocking Filter Row Store Scratch Buffer - Arbitration Priority Control" dword="6" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Deblocking Filter Row Store Scratch Buffer - Address" dword="6" bits="31:6" type="address" />
+    <group count="16" dword="7" size="32">
+      <field name="Reference Picture - Address" dword="0" bits="31:6" type="address" />
+      <field name="Reference Picture - Arbitration Priority Control" dword="0" bits="5:4" type="uint">
+        <value name="Highest priority" value="0" />
+        <value name="Second highest priority" value="1" />
+        <value name="Third highest priority" value="2" />
+        <value name="Lowest priority" value="3" />
+      </field>
+      <field name="Reference Picture - Graphics Data Type" dword="0" bits="2:2" type="uint" />
+      <field name="Reference Picture - Cacheability Control" dword="0" bits="1:0" type="uint">
+        <value name="GTT entry" value="0" />
+        <value name="Not in LLC or MLC" value="1" />
+        <value name="In LLC but not MLC" value="2" />
+        <value name="Both LLC and MLC" value="3" />
+      </field>
+    </group>
+    <field name="MB Status Buffer - Cacheability Control" dword="23" bits="1:0" type="uint">
+      <value name="GTT" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="MB Status Buffer - Graphics Data Type" dword="23" bits="2:2" type="uint" />
+    <field name="MB Status Buffer - Arbitration Priority Control" dword="23" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MB Status Buffer - Address" dword="23" bits="31:6" type="address" />
+  </instruction>
+  <instruction name="MFX_PIPE_MODE_SELECT" bias="2" length="5" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="3" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Standard Select" dword="1" bits="3:0" type="uint" prefix="SS">
+      <value name="MPEG2" value="0" />
+      <value name="VC1" value="1" />
+      <value name="AVC" value="2" />
+      <value name="JPEG" value="3" />
+    </field>
+    <field name="Codec Select" dword="1" bits="4:4" type="uint">
+      <value name="Decode" value="0" />
+      <value name="Encode" value="1" />
+    </field>
+    <field name="Stitch Mode" dword="1" bits="5:5" type="bool" />
+    <field name="Pre Deblocking Output Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Post Deblocking Output Enable" dword="1" bits="9:9" type="bool" />
+    <field name="Stream-Out Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Pic Error/Status Report Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Decoder Mode Select" dword="1" bits="16:15" type="uint">
+      <value name="VLD Mode" value="0" />
+      <value name="IT Mode" value="1" />
+      <value name="Deblocker Mode" value="2" />
+      <value name="Interlayer Mode" value="3" />
+    </field>
+    <field name="Decoder Short Format Mode" dword="1" bits="17:17" type="uint">
+      <value name="Short Format Driver Interface" value="0" />
+      <value name="Long Format Driver Interface" value="1" />
+    </field>
+    <field name="Extended Stream-Out Enable" dword="1" bits="18:18" type="bool" />
+    <field name="Pic Status/Error Report ID" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MFX_QM_STATE" bias="2" length="34" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="32" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="7" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="AVC" dword="1" bits="1:0" type="uint">
+      <value name="AVC_4x4_Intra_MATRIX" value="0" />
+      <value name="AVC_4x4_Inter_MATRIX" value="1" />
+      <value name="AVC_8x8_Intra_MATRIX" value="2" />
+      <value name="AVC_8x8_Inter_MATRIX" value="3" />
+    </field>
+    <field name="MPEG2" dword="1" bits="1:0" type="uint">
+      <value name="MPEG_INTRA_QUANTIZER_MATRIX" value="0" />
+      <value name="MPEG_NON_INTRA_QUANTIZER_MATRIX" value="1" />
+    </field>
+    <group count="64" dword="2" size="8">
+      <field name="Forward Quantizer Matrix" dword="0" bits="7:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFX_STATE_POINTER" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="6" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="State Pointer Index" dword="1" bits="1:0" type="uint" />
+    <field name="State Pointer" dword="1" bits="31:5" type="uint" />
+  </instruction>
+  <instruction name="MFX_STITCH_OBJECT" bias="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="10" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="End of Slice" dword="1" bits="1:1" type="bool" />
+    <field name="Last Header" dword="1" bits="2:2" type="bool" />
+    <field name="Source Data Ending Bit Inclusion" dword="1" bits="13:8" type="uint" />
+    <field name="Source Data Starting Byte Offset" dword="1" bits="17:16" type="uint" />
+    <field name="Indirect Data Length" dword="2" bits="18:0" type="uint" />
+    <field name="Indirect Data Start Address" dword="3" bits="31:0" type="offset" />
+    <group count="0" dword="4" size="32">
+      <field name="Insert Data PayLoad" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFX_SURFACE_STATE" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="1" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Cr(V)/Cb(U) Pixel Offset V Direction" dword="2" bits="1:0" type="uint" />
+    <field name="Width" dword="2" bits="17:4" type="uint" />
+    <field name="Height" dword="2" bits="31:18" type="uint" />
+    <field name="Tile Walk" dword="3" bits="0:0" type="uint" prefix="TW">
+      <value name="XMAJOR" value="0" />
+      <value name="YMAJOR" value="1" />
+    </field>
+    <field name="Tiled Surface" dword="3" bits="1:1" type="bool" />
+    <field name="Half Pitch for Chroma" dword="3" bits="2:2" type="bool" />
+    <field name="Surface Pitch" dword="3" bits="19:3" type="uint" />
+    <field name="Interleave Chroma" dword="3" bits="27:27" type="bool" />
+    <field name="Surface Format" dword="3" bits="31:28" type="uint">
+      <value name="YCRCB_NORMAL" value="0" />
+      <value name="YCRCB_SWAPUVY" value="1" />
+      <value name="YCRCB_SWAPUV" value="2" />
+      <value name="YCRCB_SWAPY" value="3" />
+      <value name="PLANAR_420_8" value="4" />
+      <value name="PLANAR_411_8" value="5" />
+      <value name="PLANAR_422_8" value="6" />
+      <value name="STMM_DN_STATISTICS" value="7" />
+      <value name="R10G10B10A2_UNORM" value="8" />
+      <value name="R8G8B8A8_UNORM" value="9" />
+      <value name="R8B8_UNORM (CrCb)" value="10" />
+      <value name="R8_UNORM (Cr/Cb)" value="11" />
+      <value name="Y8_UNORM" value="12" />
+    </field>
+    <field name="Y Offset for U(Cb)" dword="4" bits="14:0" type="uint" />
+    <field name="X Offset for U(Cb)" dword="4" bits="30:16" type="uint" />
+    <field name="Y Offset for V(Cr)" dword="5" bits="15:0" type="uint" />
+    <field name="X Offset for V(Cr)" dword="5" bits="28:16" type="uint" />
+  </instruction>
+  <instruction name="MFX_VC1_DIRECTMODE_STATE" bias="2" length="3" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="1" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Direct MV Write Buffer - Cacheability Control" dword="1" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Direct MV Write Buffer - Graphics Data Type" dword="1" bits="2:2" type="uint" />
+    <field name="Direct MV Write Buffer - Arbitration Priority Control" dword="1" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Direct MV Write Buffer - Address" dword="1" bits="31:6" type="address" />
+    <field name="Direct MV Read Buffer - Cacheability Control" dword="2" bits="1:0" type="uint">
+      <value name="GTT entry" value="0" />
+      <value name="Not in LLC or MLC" value="1" />
+      <value name="In LLC but not MLC" value="2" />
+      <value name="Both LLC and MLC" value="3" />
+    </field>
+    <field name="Direct MV Read Buffer - Graphics Data Type" dword="2" bits="2:2" type="uint" />
+    <field name="Direct MV Read Buffer - Arbitration Priority Control" dword="2" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Direct MV Read Buffer - Address" dword="2" bits="31:6" type="address" />
+  </instruction>
+  <instruction name="MFX_VC1_PRED_PIPE_STATE" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="1" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Reference Frame Boundary Replication Mode" dword="1" bits="7:4" type="uint" />
+    <field name="Vin_intensitycomp_Single_BWDen" dword="1" bits="9:8" type="uint" />
+    <field name="Vin_intensitycomp_Single_FWDen" dword="1" bits="11:10" type="uint" />
+    <field name="Vin_intensitycomp_Double_BWDen" dword="1" bits="13:12" type="uint" />
+    <field name="Vin_intensitycomp_Double_FWDen" dword="1" bits="15:14" type="uint" />
+    <field name="LumScale1 - single - FWD" dword="2" bits="5:0" type="uint" />
+    <field name="LumScale2 - single - FWD" dword="2" bits="13:8" type="uint" />
+    <field name="LumShift1 - single - FWD" dword="2" bits="21:16" type="uint" />
+    <field name="LumShift2 - single - FWD" dword="2" bits="29:24" type="uint" />
+    <field name="LumScale1 - double - FWD" dword="3" bits="5:0" type="uint" />
+    <field name="LumScale2 - double - FWD" dword="3" bits="13:8" type="uint" />
+    <field name="LumShift1 - double - FWD" dword="3" bits="21:16" type="uint" />
+    <field name="LumShift2 - double - FWD" dword="3" bits="29:24" type="uint" />
+    <field name="LumScale1 - single - BWD" dword="4" bits="5:0" type="uint" />
+    <field name="LumScale2 - single - BWD" dword="4" bits="13:8" type="uint" />
+    <field name="LumShift1 - single - BWD" dword="4" bits="21:16" type="uint" />
+    <field name="LumShift2 - single - BWD" dword="4" bits="29:24" type="uint" />
+    <field name="LumScale1 - double - BWD" dword="5" bits="5:0" type="uint" />
+    <field name="LumScale2 - double - BWD" dword="5" bits="13:8" type="uint" />
+    <field name="LumShift1 - double - BWD" dword="5" bits="21:16" type="uint" />
+    <field name="LumShift2 - double - BWD" dword="5" bits="29:24" type="uint" />
+  </instruction>
+  <instruction name="MI_CLFLUSH" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="9:0" type="uint" default="1" />
+    <field name="Use Global GTT" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="39" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Starting Cacheline Offset" dword="1" bits="11:6" type="uint" />
+    <field name="Page Base Address" dword="1" bits="31:12" type="address" />
+    <field name="Page Base Address High" dword="2" bits="15:0" type="address" />
+    <group count="0" dword="3" size="32">
+      <field name="DW Representing a Half Cache Line" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MI_LOAD_REGISTER_MEM" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Async Mode Enable" dword="0" bits="21:21" type="bool" />
+    <field name="Use Global GTT" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="41" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Register Address" dword="1" bits="22:2" type="offset" />
+    <field name="Memory Address" dword="2" bits="31:2" type="address" />
+  </instruction>
+  <instruction name="MI_PREDICATE" bias="1" length="1">
+    <field name="Compare Operation" dword="0" bits="1:0" type="uint" prefix="COMPARE">
+      <value name="TRUE" value="0" />
+      <value name="FALSE" value="1" />
+      <value name="SRCS_EQUAL" value="2" />
+      <value name="DELTAS_EQUAL" value="3" />
+    </field>
+    <field name="Combine Operation" dword="0" bits="4:3" type="uint" prefix="COMBINE">
+      <value name="SET" value="0" />
+      <value name="AND" value="1" />
+      <value name="OR" value="2" />
+      <value name="XOR" value="3" />
+    </field>
+    <field name="Load Operation" dword="0" bits="7:6" type="uint" prefix="LOAD">
+      <value name="KEEP" value="0" />
+      <value name="LOAD" value="2" />
+      <value name="LOADINV" value="3" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="12" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_REPORT_PERF_COUNT" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="1" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="40" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Use Global GTT" dword="1" bits="0:0" type="bool" />
+    <field name="Memory Address" dword="1" bits="31:6" type="address" />
+    <field name="Report ID" dword="2" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MI_SET_CONTEXT" bias="2" length="2">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="24" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Restore Inhibit" dword="1" bits="0:0" type="uint" />
+    <field name="Force Restore" dword="1" bits="1:1" type="uint" />
+    <field name="Extended State Restore Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Extended State Save Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Reserved, Must be 1" dword="1" bits="8:8" type="uint" />
+    <field name="Logical Context Address" dword="1" bits="31:12" type="address" />
+  </instruction>
+  <instruction name="MI_TOPOLOGY_FILTER" bias="1" length="1">
+    <field name="Topology Filter Value" dword="0" bits="5:0" type="3D_Prim_Topo_Type" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="13" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_WAIT_FOR_EVENT" bias="1" length="1" engine="render|blitter|video">
+    <field name="Display Pipe A Scan Line Wait Enable" dword="0" bits="0:0" type="bool" />
+    <field name="Display Plane A Flip Pending Wait Enable" dword="0" bits="1:1" type="bool" />
+    <field name="Display Sprite A Flip Pending Wait Enable" dword="0" bits="2:2" type="bool" />
+    <field name="Display Pipe A Vertical Blank Wait Enable" dword="0" bits="3:3" type="bool" />
+    <field name="Display Pipe A Horizontal Blank Wait Enable" dword="0" bits="5:5" type="bool" />
+    <field name="Display Pipe B Scan Line Wait Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Display Plane B Flip Pending Wait Enable" dword="0" bits="9:9" type="bool" />
+    <field name="Display Sprite B Flip Pending Wait Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Display Pipe B Vertical Blank Wait Enable" dword="0" bits="11:11" type="bool" />
+    <field name="Display Pipe B Horizontal Blank Wait Enable" dword="0" bits="13:13" type="bool" />
+    <field name="Display Pipe C Scan Line Wait Enable" dword="0" bits="14:14" type="bool" />
+    <field name="Display Plane C Flip Pending Wait Enable" dword="0" bits="15:15" type="bool" />
+    <field name="Condition Code Wait Select" dword="0" bits="19:16" type="uint">
+      <value name="Not enabled" value="0" />
+    </field>
+    <field name="Display Sprite C Flip Pending Wait Enable" dword="0" bits="20:20" type="bool" />
+    <field name="Display Pipe C Vertical Blank Wait Enable" dword="0" bits="21:21" type="bool" />
+    <field name="Display Pipe C Horizontal Blank Wait Enable" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="PIPELINE_SELECT" bias="1" length="1" engine="render">
+    <field name="Pipeline Selection" dword="0" bits="1:0" type="uint">
+      <value name="3D" value="0" />
+      <value name="Media" value="1" />
+      <value name="GPGPU" value="2" />
+    </field>
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="1" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+  </instruction>
+  <instruction name="PIPE_CONTROL" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Depth Cache Flush Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Stall At Pixel Scoreboard" dword="1" bits="1:1" type="bool" />
+    <field name="State Cache Invalidation Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Constant Cache Invalidation Enable" dword="1" bits="3:3" type="bool" />
+    <field name="VF Cache Invalidation Enable" dword="1" bits="4:4" type="bool" />
+    <field name="DC Flush Enable" dword="1" bits="5:5" type="bool" />
+    <field name="Pipe Control Flush Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Notify Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Indirect State Pointers Disable" dword="1" bits="9:9" type="bool" />
+    <field name="Texture Cache Invalidation Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Instruction Cache Invalidate Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Render Target Cache Flush Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Depth Stall Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Post Sync Operation" dword="1" bits="15:14" type="uint">
+      <value name="No Write" value="0" />
+      <value name="Write Immediate Data" value="1" />
+      <value name="Write PS Depth Count" value="2" />
+      <value name="Write Timestamp" value="3" />
+    </field>
+    <field name="Generic Media State Clear" dword="1" bits="16:16" type="bool" />
+    <field name="TLB Invalidate" dword="1" bits="18:18" type="bool" />
+    <field name="Global Snapshot Count Reset" dword="1" bits="19:19" type="bool" />
+    <field name="Command Streamer Stall Enable" dword="1" bits="20:20" type="bool" />
+    <field name="Store Data Index" dword="1" bits="21:21" type="uint" />
+    <field name="LRI Post Sync Operation" dword="1" bits="23:23" type="uint">
+      <value name="No LRI Operation" value="0" />
+      <value name="MMIO Write Immediate Data" value="1" />
+    </field>
+    <field name="Destination Address Type" dword="1" bits="24:24" type="uint" prefix="DAT">
+      <value name="PPGTT" value="0" />
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Address" dword="2" bits="31:2" type="address" />
+    <field name="Immediate Data" dword="3" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="STATE_BASE_ADDRESS" bias="2" length="10" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="8" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="1" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="General State Base Address Modify Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Stateless Data Port Access Force Write Thru" dword="1" bits="3:3" type="uint" />
+    <field name="Stateless Data Port Access MOCS" dword="1" bits="7:4" type="uint" nonzero="true" />
+    <field name="General State MOCS" dword="1" bits="11:8" type="uint" nonzero="true" />
+    <field name="General State Base Address" dword="1" bits="31:12" type="address" />
+    <field name="Surface State Base Address Modify Enable" dword="2" bits="0:0" type="bool" />
+    <field name="Surface State MOCS" dword="2" bits="11:8" type="uint" nonzero="true" />
+    <field name="Surface State Base Address" dword="2" bits="31:12" type="address" />
+    <field name="Dynamic State Base Address Modify Enable" dword="3" bits="0:0" type="bool" />
+    <field name="Dynamic State MOCS" dword="3" bits="11:8" type="uint" nonzero="true" />
+    <field name="Dynamic State Base Address" dword="3" bits="31:12" type="address" />
+    <field name="Indirect Object Base Address Modify Enable" dword="4" bits="0:0" type="bool" />
+    <field name="Indirect Object MOCS" dword="4" bits="11:8" type="uint" nonzero="true" />
+    <field name="Indirect Object Base Address" dword="4" bits="31:12" type="address" />
+    <field name="Instruction Base Address Modify Enable" dword="5" bits="0:0" type="bool" />
+    <field name="Instruction MOCS" dword="5" bits="11:8" type="uint" nonzero="true" />
+    <field name="Instruction Base Address" dword="5" bits="31:12" type="address" />
+    <field name="General State Access Upper Bound Modify Enable" dword="6" bits="0:0" type="bool" />
+    <field name="General State Access Upper Bound" dword="6" bits="31:12" type="address" />
+    <field name="Dynamic State Access Upper Bound Modify Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Dynamic State Access Upper Bound" dword="7" bits="31:12" type="address" />
+    <field name="Indirect Object Access Upper Bound Modify Enable" dword="8" bits="0:0" type="bool" />
+    <field name="Indirect Object Access Upper Bound" dword="8" bits="31:12" type="address" />
+    <field name="Instruction Access Upper Bound Modify Enable" dword="9" bits="0:0" type="bool" />
+    <field name="Instruction Access Upper Bound" dword="9" bits="31:12" type="address" />
+  </instruction>
+  <instruction name="SWTESS_BASE_ADDRESS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="3" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="SW Tessellation MOCS" dword="1" bits="11:8" type="uint" nonzero="true" />
+    <field name="SW Tessellation Base Address" dword="1" bits="31:12" type="address" />
+  </instruction>
+  <register name="BCS_INSTDONE" length="1" num="0x2206c">
+    <field name="Ring Enable" dword="0" bits="0:0" type="bool" />
+    <field name="Blitter IDLE" dword="0" bits="1:1" type="bool" />
+    <field name="GAB IDLE" dword="0" bits="2:2" type="bool" />
+    <field name="BCS Done" dword="0" bits="3:3" type="bool" />
+  </register>
+  <register name="CL_INVOCATION_COUNT" length="2" num="0x2338">
+    <field name="CL Invocation Count Report" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="CL_PRIMITIVES_COUNT" length="2" num="0x2340">
+    <field name="CL Primitives Count Report" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="CS_INVOCATION_COUNT" length="2" num="0x2290">
+    <field name="CS Invocation Count Report" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="DS_INVOCATION_COUNT" length="2" num="0x2308">
+    <field name="DS Invocation Count Report" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="ERR_INT" length="1" num="0x44040">
+    <field name="Primary A GTT Fault Status" dword="0" bits="0:0" type="bool" />
+    <field name="Primary B GTT Fault Status" dword="0" bits="1:1" type="bool" />
+    <field name="Sprite A GTT Fault Status" dword="0" bits="2:2" type="bool" />
+    <field name="Sprite B GTT Fault Status" dword="0" bits="3:3" type="bool" />
+    <field name="Cursor A GTT Fault Status" dword="0" bits="4:4" type="bool" />
+    <field name="Cursor B GTT Fault Status" dword="0" bits="5:5" type="bool" />
+    <field name="Invalid page table entry data" dword="0" bits="6:6" type="bool" />
+    <field name="Invalid GTT page table entry" dword="0" bits="7:7" type="bool" />
+  </register>
+  <register name="GS_INVOCATION_COUNT" length="2" num="0x2328">
+    <field name="GS Invocation Count Report" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="GS_PRIMITIVES_COUNT" length="2" num="0x2330">
+    <field name="GS Primitives Count Report" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="HS_INVOCATION_COUNT" length="2" num="0x2300">
+    <field name="HS Invocation Count Report" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="IA_PRIMITIVES_COUNT" length="2" num="0x2318">
+    <field name="IA Primitives Count Report" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="IA_VERTICES_COUNT" length="2" num="0x2310">
+    <field name="IA Vertices Count Report" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="INSTDONE_1" length="1" num="0x206c">
+    <field name="PRB0 Ring Enable" dword="0" bits="0:0" type="bool" />
+    <field name="VFG Done" dword="0" bits="1:1" type="bool" />
+    <field name="VS Done" dword="0" bits="2:2" type="bool" />
+    <field name="HS Done" dword="0" bits="3:3" type="bool" />
+    <field name="TE Done" dword="0" bits="4:4" type="bool" />
+    <field name="DS Done" dword="0" bits="5:5" type="bool" />
+    <field name="GS Done" dword="0" bits="6:6" type="bool" />
+    <field name="SOL Done" dword="0" bits="7:7" type="bool" />
+    <field name="CL Done" dword="0" bits="8:8" type="bool" />
+    <field name="SF Done" dword="0" bits="9:9" type="bool" />
+    <field name="TDG Done" dword="0" bits="12:12" type="bool" />
+    <field name="URBM Done" dword="0" bits="13:13" type="bool" />
+    <field name="SVG Done" dword="0" bits="14:14" type="bool" />
+    <field name="GAFS Done" dword="0" bits="15:15" type="bool" />
+    <field name="VFE Done" dword="0" bits="16:16" type="bool" />
+    <field name="TSG Done" dword="0" bits="17:17" type="bool" />
+    <field name="GAFM Done" dword="0" bits="18:18" type="bool" />
+    <field name="GAM Done" dword="0" bits="19:19" type="bool" />
+    <field name="SDE Done" dword="0" bits="22:22" type="bool" />
+    <field name="RCCFBC CS Done" dword="0" bits="23:23" type="bool" />
+  </register>
+  <register name="L3CNTLREG2" length="1" num="0xb020">
+    <field name="SLM Enable" dword="0" bits="0:0" type="bool" />
+    <field name="URB Allocation" dword="0" bits="6:1" type="uint" />
+    <field name="URB Low Bandwidth" dword="0" bits="7:7" type="bool" />
+    <field name="ALL Allocation" dword="0" bits="13:8" type="uint" />
+    <field name="RO Allocation" dword="0" bits="19:14" type="uint" />
+    <field name="RO Low Bandwidth" dword="0" bits="20:20" type="bool" />
+    <field name="DC Allocation" dword="0" bits="26:21" type="uint" />
+    <field name="DC Low Bandwidth" dword="0" bits="27:27" type="bool" />
+  </register>
+  <register name="L3CNTLREG3" length="1" num="0xb024">
+    <field name="IS Allocation" dword="0" bits="6:1" type="uint" />
+    <field name="IS Low Bandwidth" dword="0" bits="7:7" type="bool" />
+    <field name="C Allocation" dword="0" bits="13:8" type="uint" />
+    <field name="C Low Bandwidth" dword="0" bits="14:14" type="bool" />
+    <field name="T Allocation" dword="0" bits="20:15" type="uint" />
+    <field name="T Low Bandwidth" dword="0" bits="21:21" type="bool" />
+  </register>
+  <register name="L3SQCREG1" length="1" num="0xb010">
+    <field name="L3SQ High Priority Credit Initialization" dword="0" bits="19:16" type="uint">
+      <value name="SQHPCI_DEFAULT" value="0x3" />
+    </field>
+    <field name="L3SQ General Priority Credit Initialization" dword="0" bits="23:20" type="uint">
+      <value name="SQGPCI_DEFAULT" value="0x7" />
+      <value name="BYT_SQGPCI_DEFAULT" value="0xd" />
+    </field>
+    <field name="Convert DC_UC" dword="0" bits="24:24" type="bool" />
+    <field name="Convert IS_UC" dword="0" bits="25:25" type="bool" />
+    <field name="Convert C_UC" dword="0" bits="26:26" type="bool" />
+    <field name="Convert T_UC" dword="0" bits="27:27" type="bool" />
+  </register>
+  <register name="PS_INVOCATION_COUNT" length="2" num="0x2348">
+    <field name="PS Invocation Count Report" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="ROW_INSTDONE" length="1" num="0xe164">
+    <field name="BC Done" dword="0" bits="0:0" type="bool" />
+    <field name="PSD Done" dword="0" bits="1:1" type="bool" />
+    <field name="DC Done" dword="0" bits="2:2" type="bool" />
+    <field name="DAPR Done" dword="0" bits="3:3" type="bool" />
+    <field name="TDL Done" dword="0" bits="6:6" type="bool" />
+    <field name="GW Done" dword="0" bits="8:8" type="bool" />
+    <field name="IC Done" dword="0" bits="12:12" type="bool" />
+    <field name="EU00 Done SS0" dword="0" bits="16:16" type="bool" />
+    <field name="EU01 Done SS0" dword="0" bits="17:17" type="bool" />
+    <field name="EU02 Done SS0" dword="0" bits="18:18" type="bool" />
+    <field name="EU03 Done SS0" dword="0" bits="19:19" type="bool" />
+    <field name="MA0 Done SS0" dword="0" bits="20:20" type="bool" />
+    <field name="EU10 Done SS0" dword="0" bits="21:21" type="bool" />
+    <field name="EU11 Done SS0" dword="0" bits="22:22" type="bool" />
+    <field name="EU12 Done SS0" dword="0" bits="23:23" type="bool" />
+    <field name="EU13 Done SS0" dword="0" bits="24:24" type="bool" />
+    <field name="MA1 Done" dword="0" bits="25:25" type="bool" />
+  </register>
+  <register name="SAMPLER_INSTDONE" length="1" num="0xe160">
+    <field name="VME Done" dword="0" bits="0:0" type="bool" />
+    <field name="PL0 Done" dword="0" bits="1:1" type="bool" />
+    <field name="SO0 Done" dword="0" bits="2:2" type="bool" />
+    <field name="DG0 Done" dword="0" bits="3:3" type="bool" />
+    <field name="FT0 Done" dword="0" bits="4:4" type="bool" />
+    <field name="DM0 Done" dword="0" bits="5:5" type="bool" />
+    <field name="SC Done" dword="0" bits="6:6" type="bool" />
+    <field name="FL0 Done" dword="0" bits="7:7" type="bool" />
+    <field name="QC Done" dword="0" bits="8:8" type="bool" />
+    <field name="SVSM Done" dword="0" bits="9:9" type="bool" />
+    <field name="SI0 Done" dword="0" bits="10:10" type="bool" />
+    <field name="MT0 Done" dword="0" bits="11:11" type="bool" />
+    <field name="AVS Done" dword="0" bits="12:12" type="bool" />
+    <field name="IEF Done" dword="0" bits="13:13" type="bool" />
+    <field name="VDI Done" dword="0" bits="14:14" type="bool" />
+    <field name="SVSM ARB3" dword="0" bits="15:15" type="bool" />
+    <field name="SVSM ARB2" dword="0" bits="16:16" type="bool" />
+    <field name="SVSM ARB1" dword="0" bits="17:17" type="bool" />
+    <field name="SVSM Adapter" dword="0" bits="18:18" type="bool" />
+  </register>
+  <register name="SC_INSTDONE" length="1" num="0x7100">
+    <field name="SVL Done" dword="0" bits="0:0" type="bool" />
+    <field name="WMFE Done" dword="0" bits="1:1" type="bool" />
+    <field name="WMBE Done" dword="0" bits="2:2" type="bool" />
+    <field name="HIZ Done" dword="0" bits="3:3" type="bool" />
+    <field name="STC Done" dword="0" bits="4:4" type="bool" />
+    <field name="IZ Done" dword="0" bits="5:5" type="bool" />
+    <field name="SBE Done" dword="0" bits="6:6" type="bool" />
+    <field name="RCZ Done" dword="0" bits="8:8" type="bool" />
+    <field name="RCC Done" dword="0" bits="9:9" type="bool" />
+    <field name="RCPBE Done" dword="0" bits="10:10" type="bool" />
+    <field name="RCPFE Done" dword="0" bits="11:11" type="bool" />
+    <field name="DAPB Done" dword="0" bits="12:12" type="bool" />
+    <field name="DAPRBE Done" dword="0" bits="13:13" type="bool" />
+    <field name="IECP Done" dword="0" bits="14:14" type="bool" />
+    <field name="SARB Done" dword="0" bits="15:15" type="bool" />
+    <field name="VSC Done" dword="0" bits="16:16" type="bool" />
+  </register>
+  <register name="SO_NUM_PRIMS_WRITTEN0" length="2" num="0x5200">
+    <field name="Num Prims Written Count" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="SO_NUM_PRIMS_WRITTEN1" length="2" num="0x5208">
+    <field name="Num Prims Written Count" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="SO_NUM_PRIMS_WRITTEN2" length="2" num="0x5210">
+    <field name="Num Prims Written Count" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="SO_NUM_PRIMS_WRITTEN3" length="2" num="0x5218">
+    <field name="Num Prims Written Count" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="SO_PRIM_STORAGE_NEEDED0" length="2" num="0x5240">
+    <field name="Prim Storage Needed Count" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="SO_PRIM_STORAGE_NEEDED1" length="2" num="0x5248">
+    <field name="Prim Storage Needed Count" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="SO_PRIM_STORAGE_NEEDED2" length="2" num="0x5250">
+    <field name="Prim Storage Needed Count" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="SO_PRIM_STORAGE_NEEDED3" length="2" num="0x5258">
+    <field name="Prim Storage Needed Count" dword="0" bits="63:0" type="uint" />
+  </register>
+  <register name="SO_WRITE_OFFSET0" length="1" num="0x5280">
+    <field name="Write Offset" dword="0" bits="31:2" type="offset" />
+  </register>
+  <register name="SO_WRITE_OFFSET1" length="1" num="0x5284">
+    <field name="Write Offset" dword="0" bits="31:2" type="offset" />
+  </register>
+  <register name="SO_WRITE_OFFSET2" length="1" num="0x5288">
+    <field name="Write Offset" dword="0" bits="31:2" type="offset" />
+  </register>
+  <register name="SO_WRITE_OFFSET3" length="1" num="0x528c">
+    <field name="Write Offset" dword="0" bits="31:2" type="offset" />
+  </register>
+  <register name="VS_INVOCATION_COUNT" length="2" num="0x2320">
+    <field name="VS Invocation Count Report" dword="0" bits="63:0" type="uint" />
+  </register>
+</genxml>
diff --git a/lib/genxml/gen75.xml b/lib/genxml/gen75.xml
new file mode 100644
index 000000000..ffef158f8
--- /dev/null
+++ b/lib/genxml/gen75.xml
@@ -0,0 +1,2424 @@
+<?xml version='1.0' encoding='utf-8'?>
+<genxml name="HSW" gen="7.5">
+  <import name="gen70.xml" />
+  <enum name="Shader Channel Select" prefix="SCS">
+    <value name="ZERO" value="0" />
+    <value name="ONE" value="1" />
+    <value name="RED" value="4" />
+    <value name="GREEN" value="5" />
+    <value name="BLUE" value="6" />
+    <value name="ALPHA" value="7" />
+  </enum>
+  <struct name="BINDING_TABLE_EDIT_ENTRY" length="1">
+    <field name="Surface State Pointer" dword="0" bits="15:0" type="offset" />
+    <field name="Binding Table Index" dword="0" bits="23:16" type="uint" />
+  </struct>
+  <struct name="GATHER_CONSTANT_ENTRY" length="1">
+    <field name="Binding Table Index Offset" dword="0" bits="3:0" type="uint" />
+    <field name="Channel Mask" dword="0" bits="7:4" type="uint" />
+    <field name="Constant Buffer Offset" dword="0" bits="15:8" type="offset" />
+  </struct>
+  <struct name="INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT" length="3">
+    <field name="MB Error Concealment P Slice Weight Prediction Disable" dword="0" bits="0:0" type="bool" />
+    <field name="MB Error Concealment P Slice Motion Vectors Override Disable" dword="0" bits="1:1" type="bool" />
+    <field name="MB Error Concealment B Spatial Weight Prediction Disable" dword="0" bits="3:3" type="bool" />
+    <field name="MB Error Concealment B Spatial Motion Vectors Override Disable" dword="0" bits="4:4" type="bool" />
+    <field name="MB Error Concealment B Spatial Prediction Mode" dword="0" bits="7:6" type="uint" />
+    <field name="MB Header Error Handling" dword="0" bits="8:8" type="bool" />
+    <field name="Entropy Error Handling" dword="0" bits="10:10" type="bool" />
+    <field name="MPR Error Handling" dword="0" bits="12:12" type="bool" />
+    <field name="BSD Premature Complete Error Handling" dword="0" bits="14:14" type="bool" />
+    <field name="Concealment Picture ID" dword="0" bits="21:16" type="uint" />
+    <field name="MB Error Concealment B Temporal Weight Prediction Disable" dword="0" bits="24:24" type="bool" />
+    <field name="MB Error Concealment B Temporal Motion Vectors Override Enable" dword="0" bits="25:25" type="bool" />
+    <field name="MB Error Concealment B Temporal Prediction Mode" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Intra PredMode (4x4/8x8 Luma) Error Control" dword="0" bits="29:29" type="bool" />
+    <field name="Init Current MB Number" dword="0" bits="30:30" type="uint" />
+    <field name="Concealment Method" dword="0" bits="31:31" type="uint" />
+    <field name="First MB Bit Offset" dword="1" bits="2:0" type="uint" />
+    <field name="Last Slice" dword="1" bits="3:3" type="bool" />
+    <field name="Emulation Prevention Byte Present" dword="1" bits="4:4" type="bool" />
+    <field name="Fix Prev MB Skipped" dword="1" bits="7:7" type="bool" />
+    <field name="First MB Byte Offset of Slice Data or Slice Header" dword="1" bits="31:16" type="uint" />
+    <field name="Intra Prediction Error Control" dword="2" bits="0:0" type="bool" />
+    <field name="Intra 8x8/4x4 Prediction Error Concealment Control" dword="2" bits="1:1" type="bool" />
+    <field name="B Slice Temporal Inter Concealment Mode" dword="2" bits="6:4" type="uint" />
+    <field name="B Slice Spatial Inter Concealment Mode" dword="2" bits="10:8" type="uint" />
+    <field name="B Slice Inter Direct Type Concealment Mode" dword="2" bits="13:12" type="uint" />
+    <field name="B Slice Concealment Mode" dword="2" bits="15:15" type="uint">
+      <value name="Intra Concealment" value="1" />
+      <value name="Inter Concealment" value="0" />
+    </field>
+    <field name="P Slice Inter Concealment Mode" dword="2" bits="18:16" type="uint" />
+    <field name="P Slice Concealment Mode" dword="2" bits="23:23" type="uint">
+      <value name="Intra Concealment" value="1" />
+      <value name="Inter Concealment" value="0" />
+    </field>
+    <field name="Concealment Reference Picture + Field Bit" dword="2" bits="29:24" type="uint" />
+    <field name="I Slice Concealment Mode" dword="2" bits="31:31" type="uint">
+      <value name="Intra Concealment" value="1" />
+      <value name="Inter Concealment" value="0" />
+    </field>
+  </struct>
+  <struct name="INTERFACE_DESCRIPTOR_DATA" length="8">
+    <field name="Kernel Start Pointer" dword="0" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="1" bits="17:17" type="uint">
+      <value name="Normal Priority" value="0" />
+      <value name="High Priority" value="1" />
+    </field>
+    <field name="Single Program Flow" dword="1" bits="18:18" type="bool" />
+    <field name="Sampler Count" dword="2" bits="4:2" type="uint">
+      <value name="No samplers used" value="0" />
+      <value name="Between 1 and 4 samplers used" value="1" />
+      <value name="Between 5 and 8 samplers used" value="2" />
+      <value name="Between 9 and 12 samplers used" value="3" />
+      <value name="Between 13 and 16 samplers used" value="4" />
+    </field>
+    <field name="Sampler State Pointer" dword="2" bits="31:5" type="offset" />
+    <field name="Binding Table Entry Count" dword="3" bits="4:0" type="uint" />
+    <field name="Binding Table Pointer" dword="3" bits="15:5" type="offset" />
+    <field name="Constant URB Entry Read Length" dword="4" bits="31:16" type="uint" />
+    <field name="Number of Threads in GPGPU Thread Group" dword="5" bits="7:0" type="uint" />
+    <field name="Shared Local Memory Size" dword="5" bits="20:16" type="uint" />
+    <field name="Barrier Enable" dword="5" bits="21:21" type="bool" />
+    <field name="Rounding Mode" dword="5" bits="23:22" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Cross-Thread Constant Data Read Length" dword="6" bits="7:0" type="uint" />
+  </struct>
+  <struct name="MEMORY_OBJECT_CONTROL_STATE" length="1">
+    <field name="L3 Cacheability Control (L3CC)" dword="0" bits="0:0" type="uint" />
+    <field name="LLC/eLLC Cacheability Control (LLCCC)" dword="0" bits="2:1" type="uint">
+      <value name="Use PTE values" value="0" />
+      <value name="UC - uncacheable" value="1" />
+      <value name="LLC/eLLC WB cacheable" value="2" />
+      <value name="eLLC WB cacheable (UC in LLC)" value="3" />
+    </field>
+  </struct>
+  <struct name="MFD_MPEG2_BSD_OBJECT_INLINE_DATA_DESCRIPTION" length="2">
+    <field name="First MB Bit Offset" dword="0" bits="2:0" type="uint" />
+    <field name="Last MB" dword="0" bits="3:3" type="bool" />
+    <field name="Last Pic Slice" dword="0" bits="5:5" type="bool" />
+    <field name="Slice Concealment Type" dword="0" bits="6:6" type="uint" />
+    <field name="Slice Concealment Override" dword="0" bits="7:7" type="uint" />
+    <field name="MB Count" dword="0" bits="15:8" type="uint" />
+    <field name="Slice Vertical Position" dword="0" bits="23:16" type="uint" />
+    <field name="Slice Horizontal Position" dword="0" bits="31:24" type="uint" />
+    <field name="Next Slice Horizontal Position" dword="1" bits="7:0" type="uint" />
+    <field name="Next Slice Vertical Position" dword="1" bits="16:8" type="uint" />
+    <field name="Quantizer Scale Code" dword="1" bits="28:24" type="uint" />
+  </struct>
+  <struct name="MI_MATH_ALU_INSTRUCTION" length="1">
+    <field name="Operand 2" dword="0" bits="9:0" type="uint" prefix="MI_ALU">
+      <value name="REG0" value="0x00" />
+      <value name="REG1" value="0x01" />
+      <value name="REG2" value="0x02" />
+      <value name="REG3" value="0x03" />
+      <value name="REG4" value="0x04" />
+      <value name="REG5" value="0x05" />
+      <value name="REG6" value="0x06" />
+      <value name="REG7" value="0x07" />
+      <value name="REG8" value="0x08" />
+      <value name="REG9" value="0x09" />
+      <value name="REG10" value="0x0a" />
+      <value name="REG11" value="0x0b" />
+      <value name="REG12" value="0x0c" />
+      <value name="REG13" value="0x0d" />
+      <value name="REG14" value="0x0e" />
+      <value name="REG15" value="0x0f" />
+      <value name="SRCA" value="0x20" />
+      <value name="SRCB" value="0x21" />
+      <value name="ACCU" value="0x31" />
+      <value name="ZF" value="0x32" />
+      <value name="CF" value="0x33" />
+    </field>
+    <field name="Operand 1" dword="0" bits="19:10" type="uint" prefix="MI_ALU">
+      <value name="REG0" value="0x00" />
+      <value name="REG1" value="0x01" />
+      <value name="REG2" value="0x02" />
+      <value name="REG3" value="0x03" />
+      <value name="REG4" value="0x04" />
+      <value name="REG5" value="0x05" />
+      <value name="REG6" value="0x06" />
+      <value name="REG7" value="0x07" />
+      <value name="REG8" value="0x08" />
+      <value name="REG9" value="0x09" />
+      <value name="REG10" value="0x0a" />
+      <value name="REG11" value="0x0b" />
+      <value name="REG12" value="0x0c" />
+      <value name="REG13" value="0x0d" />
+      <value name="REG14" value="0x0e" />
+      <value name="REG15" value="0x0f" />
+      <value name="SRCA" value="0x20" />
+      <value name="SRCB" value="0x21" />
+      <value name="ACCU" value="0x31" />
+      <value name="ZF" value="0x32" />
+      <value name="CF" value="0x33" />
+    </field>
+    <field name="ALU Opcode" dword="0" bits="31:20" type="uint" prefix="MI_ALU">
+      <value name="NOOP" value="0x000" />
+      <value name="LOAD" value="0x080" />
+      <value name="LOADINV" value="0x480" />
+      <value name="LOAD0" value="0x081" />
+      <value name="LOAD1" value="0x481" />
+      <value name="ADD" value="0x100" />
+      <value name="SUB" value="0x101" />
+      <value name="AND" value="0x102" />
+      <value name="OR" value="0x103" />
+      <value name="XOR" value="0x104" />
+      <value name="STORE" value="0x180" />
+      <value name="STOREINV" value="0x580" />
+    </field>
+  </struct>
+  <struct name="RENDER_SURFACE_STATE" length="8">
+    <field name="Cube Face Enable - Positive Z" dword="0" bits="0:0" type="bool" />
+    <field name="Cube Face Enable - Negative Z" dword="0" bits="1:1" type="bool" />
+    <field name="Cube Face Enable - Positive Y" dword="0" bits="2:2" type="bool" />
+    <field name="Cube Face Enable - Negative Y" dword="0" bits="3:3" type="bool" />
+    <field name="Cube Face Enable - Positive X" dword="0" bits="4:4" type="bool" />
+    <field name="Cube Face Enable - Negative X" dword="0" bits="5:5" type="bool" />
+    <field name="Media Boundary Pixel Mode" dword="0" bits="7:6" type="uint">
+      <value name="NORMAL_MODE" value="0" />
+      <value name="PROGRESSIVE_FRAME" value="2" />
+      <value name="INTERLACED_FRAME" value="3" />
+    </field>
+    <field name="Render Cache Read Write Mode" dword="0" bits="8:8" type="uint" />
+    <field name="Surface Array Spacing" dword="0" bits="10:10" type="uint">
+      <value name="ARYSPC_FULL" value="0" />
+      <value name="ARYSPC_LOD0" value="1" />
+    </field>
+    <field name="Vertical Line Stride Offset" dword="0" bits="11:11" type="uint" />
+    <field name="Vertical Line Stride" dword="0" bits="12:12" type="uint" />
+    <field name="Tile Walk" dword="0" bits="13:13" type="uint">
+      <value name="TILEWALK_XMAJOR" value="0" />
+      <value name="TILEWALK_YMAJOR" value="1" />
+    </field>
+    <field name="Tiled Surface" dword="0" bits="14:14" type="bool" />
+    <field name="Surface Horizontal Alignment" dword="0" bits="15:15" type="uint">
+      <value name="HALIGN_4" value="0" />
+      <value name="HALIGN_8" value="1" />
+    </field>
+    <field name="Surface Vertical Alignment" dword="0" bits="17:16" type="uint">
+      <value name="VALIGN_2" value="0" />
+      <value name="VALIGN_4" value="1" />
+    </field>
+    <field name="Surface Format" dword="0" bits="26:18" type="uint" />
+    <field name="Surface Array" dword="0" bits="28:28" type="bool" />
+    <field name="Surface Type" dword="0" bits="31:29" type="uint">
+      <value name="SURFTYPE_1D" value="0" />
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_3D" value="2" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_BUFFER" value="4" />
+      <value name="SURFTYPE_STRBUF" value="5" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface Base Address" dword="1" bits="31:0" type="address" />
+    <field name="Width" dword="2" bits="13:0" type="uint" />
+    <field name="Height" dword="2" bits="29:16" type="uint" />
+    <field name="Surface Pitch" dword="3" bits="17:0" type="uint" />
+    <field name="Integer Surface Format" dword="3" bits="20:18" type="uint" />
+    <field name="Depth" dword="3" bits="31:21" type="uint" />
+    <field name="Multisample Position Palette Index" dword="4" bits="2:0" type="uint" />
+    <field name="Strbuf Minimum Array Element" dword="4" bits="26:0" type="uint" />
+    <field name="Number of Multisamples" dword="4" bits="5:3" type="uint">
+      <value name="MULTISAMPLECOUNT_1" value="0" />
+      <value name="MULTISAMPLECOUNT_4" value="2" />
+      <value name="MULTISAMPLECOUNT_8" value="3" />
+    </field>
+    <field name="Multisampled Surface Storage Format" dword="4" bits="6:6" type="uint">
+      <value name="MSFMT_MSS" value="0" />
+      <value name="MSFMT_DEPTH_STENCIL" value="1" />
+    </field>
+    <field name="Render Target View Extent" dword="4" bits="17:7" type="uint" />
+    <field name="Minimum Array Element" dword="4" bits="28:18" type="uint" />
+    <field name="Render Target Rotation" dword="4" bits="30:29" type="uint">
+      <value name="RTROTATE_0DEG" value="0" />
+      <value name="RTROTATE_90DEG" value="1" />
+      <value name="RTROTATE_270DEG" value="3" />
+    </field>
+    <field name="MIP Count / LOD" dword="5" bits="3:0" type="uint" />
+    <field name="Surface Min LOD" dword="5" bits="7:4" type="uint" />
+    <field name="MOCS" dword="5" bits="19:16" type="uint" nonzero="true" />
+    <field name="Y Offset" dword="5" bits="23:20" type="uint" />
+    <field name="X Offset" dword="5" bits="31:25" type="uint" />
+    <field name="MCS Enable" dword="6" bits="0:0" type="bool" />
+    <field name="Y Offset for UV Plane" dword="6" bits="13:0" type="uint" />
+    <field name="Append Counter Enable" dword="6" bits="1:1" type="bool" />
+    <field name="Auxiliary Surface Pitch" dword="6" bits="11:3" type="uint" />
+    <field name="Append Counter Address" dword="6" bits="31:6" type="address" />
+    <field name="Auxiliary Surface Base Address" dword="6" bits="31:12" type="address" />
+    <field name="X Offset for UV Plane" dword="6" bits="29:16" type="uint" />
+    <field name="Reserved: MBZ" dword="6" bits="31:30" type="uint" />
+    <field name="Resource Min LOD" dword="7" bits="11:0" type="u4.8" />
+    <field name="Shader Channel Select Alpha" dword="7" bits="18:16" type="Shader Channel Select" />
+    <field name="Shader Channel Select Blue" dword="7" bits="21:19" type="Shader Channel Select" />
+    <field name="Shader Channel Select Green" dword="7" bits="24:22" type="Shader Channel Select" />
+    <field name="Shader Channel Select Red" dword="7" bits="27:25" type="Shader Channel Select" />
+    <field name="Alpha Clear Color" dword="7" bits="28:28" type="uint" />
+    <field name="Blue Clear Color" dword="7" bits="29:29" type="uint" />
+    <field name="Green Clear Color" dword="7" bits="30:30" type="uint" />
+    <field name="Red Clear Color" dword="7" bits="31:31" type="uint" />
+  </struct>
+  <struct name="SAMPLER_BORDER_COLOR_STATE" length="20">
+    <field name="Border Color Float Red" dword="0" bits="31:0" type="float" />
+    <field name="Border Color Float Green" dword="1" bits="31:0" type="float" />
+    <field name="Border Color Float Blue" dword="2" bits="31:0" type="float" />
+    <field name="Border Color Float Alpha" dword="3" bits="31:0" type="float" />
+    <field name="Border Color 8bit Red" dword="16" bits="7:0" type="uint" />
+    <field name="Border Color 16bit Red" dword="16" bits="15:0" type="uint" />
+    <field name="Border Color 32bit Red" dword="16" bits="31:0" type="uint" />
+    <field name="Border Color 8bit Green" dword="16" bits="15:8" type="uint" />
+    <field name="Border Color 8bit Blue" dword="16" bits="23:16" type="uint" />
+    <field name="Border Color 16bit Green" dword="16" bits="31:16" type="uint" />
+    <field name="Border Color 8bit Alpha" dword="16" bits="31:24" type="uint" />
+    <field name="Border Color 32bit Green" dword="17" bits="31:0" type="uint" />
+    <field name="Border Color 16bit Blue" dword="18" bits="15:0" type="uint" />
+    <field name="Border Color 32bit Blue" dword="18" bits="31:0" type="uint" />
+    <field name="Border Color 16bit Alpha" dword="18" bits="31:16" type="uint" />
+    <field name="Border Color 32bit Alpha" dword="19" bits="31:0" type="uint" />
+  </struct>
+  <struct name="SAMPLER_STATE" length="4">
+    <field name="Anisotropic Algorithm" dword="0" bits="0:0" type="uint">
+      <value name="LEGACY" value="0" />
+      <value name="EWA Approximation" value="1" />
+    </field>
+    <field name="Texture LOD Bias" dword="0" bits="13:1" type="s4.8" />
+    <field name="Min Mode Filter" dword="0" bits="16:14" type="uint" prefix="MAPFILTER">
+      <value name="NEAREST" value="0" />
+      <value name="LINEAR" value="1" />
+      <value name="ANISOTROPIC" value="2" />
+      <value name="MONO" value="6" />
+    </field>
+    <field name="Mag Mode Filter" dword="0" bits="19:17" type="uint" prefix="MAPFILTER">
+      <value name="NEAREST" value="0" />
+      <value name="LINEAR" value="1" />
+      <value name="ANISOTROPIC" value="2" />
+      <value name="MONO" value="6" />
+    </field>
+    <field name="Mip Mode Filter" dword="0" bits="21:20" type="uint" prefix="MIPFILTER">
+      <value name="NONE" value="0" />
+      <value name="NEAREST" value="1" />
+      <value name="LINEAR" value="3" />
+    </field>
+    <field name="Base Mip Level" dword="0" bits="26:22" type="u4.1" />
+    <field name="LOD PreClamp Enable" dword="0" bits="28:28" type="uint" prefix="CLAMP_ENABLE">
+      <value name="OGL" value="1" />
+    </field>
+    <field name="Texture Border Color Mode" dword="0" bits="29:29" type="uint">
+      <value name="DX10/OGL" value="0" />
+      <value name="DX9" value="1" />
+    </field>
+    <field name="Sampler Disable" dword="0" bits="31:31" type="bool" />
+    <field name="Cube Surface Control Mode" dword="1" bits="0:0" type="uint">
+      <value name="PROGRAMMED" value="0" />
+      <value name="OVERRIDE" value="1" />
+    </field>
+    <field name="Shadow Function" dword="1" bits="3:1" type="uint" prefix="PREFILTEROP">
+      <value name="ALWAYS" value="0" />
+      <value name="NEVER" value="1" />
+      <value name="LESS" value="2" />
+      <value name="EQUAL" value="3" />
+      <value name="LEQUAL" value="4" />
+      <value name="GREATER" value="5" />
+      <value name="NOTEQUAL" value="6" />
+      <value name="GEQUAL" value="7" />
+    </field>
+    <field name="Max LOD" dword="1" bits="19:8" type="u4.8" />
+    <field name="Min LOD" dword="1" bits="31:20" type="u4.8" />
+    <field name="Border Color Pointer" dword="2" bits="31:5" type="offset" />
+    <field name="TCZ Address Control Mode" dword="3" bits="2:0" type="Texture Coordinate Mode" />
+    <field name="TCY Address Control Mode" dword="3" bits="5:3" type="Texture Coordinate Mode" />
+    <field name="TCX Address Control Mode" dword="3" bits="8:6" type="Texture Coordinate Mode" />
+    <field name="Non-normalized Coordinate Enable" dword="3" bits="10:10" type="bool" />
+    <field name="Trilinear Filter Quality" dword="3" bits="12:11" type="uint">
+      <value name="FULL" value="0" />
+      <value name="TRIQUAL_HIGH/MAG_CLAMP_MIPFILTER" value="1" />
+      <value name="MED" value="2" />
+      <value name="LOW" value="3" />
+    </field>
+    <field name="R Address Min Filter Rounding Enable" dword="3" bits="13:13" type="bool" />
+    <field name="R Address Mag Filter Rounding Enable" dword="3" bits="14:14" type="bool" />
+    <field name="V Address Min Filter Rounding Enable" dword="3" bits="15:15" type="bool" />
+    <field name="V Address Mag Filter Rounding Enable" dword="3" bits="16:16" type="bool" />
+    <field name="U Address Min Filter Rounding Enable" dword="3" bits="17:17" type="bool" />
+    <field name="U Address Mag Filter Rounding Enable" dword="3" bits="18:18" type="bool" />
+    <field name="Maximum Anisotropy" dword="3" bits="21:19" type="uint">
+      <value name="RATIO 2:1" value="0" />
+      <value name="RATIO 4:1" value="1" />
+      <value name="RATIO 6:1" value="2" />
+      <value name="RATIO 8:1" value="3" />
+      <value name="RATIO 10:1" value="4" />
+      <value name="RATIO 12:1" value="5" />
+      <value name="RATIO 14:1" value="6" />
+      <value name="RATIO 16:1" value="7" />
+    </field>
+    <field name="ChromaKey Mode" dword="3" bits="22:22" type="uint">
+      <value name="KEYFILTER_KILL_ON_ANY_MATCH" value="0" />
+      <value name="KEYFILTER_REPLACE_BLACK" value="1" />
+    </field>
+    <field name="ChromaKey Index" dword="3" bits="24:23" type="uint" />
+    <field name="ChromaKey Enable" dword="3" bits="25:25" type="bool" />
+  </struct>
+  <instruction name="3DPRIMITIVE" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="UAV Coherency Required" dword="0" bits="9:9" type="bool" />
+    <field name="Indirect Parameter Enable" dword="0" bits="10:10" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Primitive Topology Type" dword="1" bits="5:0" type="3D_Prim_Topo_Type" />
+    <field name="Vertex Access Type" dword="1" bits="8:8" type="uint">
+      <value name="SEQUENTIAL" value="0" />
+      <value name="RANDOM" value="1" />
+    </field>
+    <field name="End Offset Enable" dword="1" bits="9:9" type="bool" />
+    <field name="Vertex Count Per Instance" dword="2" bits="31:0" type="uint" />
+    <field name="Start Vertex Location" dword="3" bits="31:0" type="uint" />
+    <field name="Instance Count" dword="4" bits="31:0" type="uint" />
+    <field name="Start Instance Location" dword="5" bits="31:0" type="uint" />
+    <field name="Base Vertex Location" dword="6" bits="31:0" type="int" />
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_EDIT_DS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="8:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="70" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Binding Table Edit Target" dword="1" bits="1:0" type="uint">
+      <value name="All Cores" value="3" />
+      <value name="Core 1" value="2" />
+      <value name="Core 0" value="1" />
+    </field>
+    <field name="Binding Table Block Clear" dword="1" bits="31:16" type="uint" />
+    <group count="0" dword="2" size="32">
+      <field name="Entry [n]" dword="0" bits="31:0" type="BINDING_TABLE_EDIT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_EDIT_GS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="8:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="68" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Binding Table Edit Target" dword="1" bits="1:0" type="uint">
+      <value name="All Cores" value="3" />
+      <value name="Core 1" value="2" />
+      <value name="Core 0" value="1" />
+    </field>
+    <field name="Binding Table Block Clear" dword="1" bits="31:16" type="uint" />
+    <group count="0" dword="2" size="32">
+      <field name="Entry [n]" dword="0" bits="31:0" type="BINDING_TABLE_EDIT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_EDIT_HS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="8:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="69" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Binding Table Edit Target" dword="1" bits="1:0" type="uint">
+      <value name="All Cores" value="3" />
+      <value name="Core 1" value="2" />
+      <value name="Core 0" value="1" />
+    </field>
+    <field name="Binding Table Block Clear" dword="1" bits="31:16" type="uint" />
+    <group count="0" dword="2" size="32">
+      <field name="Entry [n]" dword="0" bits="31:0" type="BINDING_TABLE_EDIT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_EDIT_PS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="8:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="71" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Binding Table Edit Target" dword="1" bits="1:0" type="uint">
+      <value name="All Cores" value="3" />
+      <value name="Core 1" value="2" />
+      <value name="Core 0" value="1" />
+    </field>
+    <field name="Binding Table Block Clear" dword="1" bits="31:16" type="uint" />
+    <group count="0" dword="2" size="32">
+      <field name="Entry [n]" dword="0" bits="31:0" type="BINDING_TABLE_EDIT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_EDIT_VS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="8:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="67" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Binding Table Edit Target" dword="1" bits="1:0" type="uint">
+      <value name="All Cores" value="3" />
+      <value name="Core 1" value="2" />
+      <value name="Core 0" value="1" />
+    </field>
+    <field name="Binding Table Block Clear" dword="1" bits="31:16" type="uint" />
+    <group count="0" dword="2" size="32">
+      <field name="Entry [n]" dword="0" bits="31:0" type="BINDING_TABLE_EDIT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_POOL_ALLOC" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="25" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="MOCS" dword="1" bits="10:7" type="uint" nonzero="true" />
+    <field name="Binding Table Pool Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Binding Table Pool Base Address" dword="1" bits="31:12" type="address" />
+    <field name="Binding Table Pool Upper Bound" dword="2" bits="31:12" type="address" />
+  </instruction>
+  <instruction name="3DSTATE_DRAWING_RECTANGLE" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="Core Mode Select" dword="0" bits="15:14" type="uint">
+      <value name="Legacy" value="0" />
+      <value name="Core 0 Enabled" value="1" />
+      <value name="Core 1 Enabled" value="2" />
+    </field>
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Clipped Drawing Rectangle X Min" dword="1" bits="15:0" type="uint" />
+    <field name="Clipped Drawing Rectangle Y Min" dword="1" bits="31:16" type="uint" />
+    <field name="Clipped Drawing Rectangle X Max" dword="2" bits="15:0" type="uint" />
+    <field name="Clipped Drawing Rectangle Y Max" dword="2" bits="31:16" type="uint" />
+    <field name="Drawing Rectangle Origin X" dword="3" bits="15:0" type="int" />
+    <field name="Drawing Rectangle Origin Y" dword="3" bits="31:16" type="int" />
+  </instruction>
+  <instruction name="3DSTATE_DS" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="29" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="2" bits="7:7" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="2" bits="13:13" type="bool" />
+    <field name="Accesses UAV" dword="2" bits="14:14" type="bool" />
+    <field name="Floating Point Mode" dword="2" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="2" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="2" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="2" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="2" bits="30:30" type="bool" />
+    <field name="Single Domain Point Dispatch" dword="2" bits="31:31" type="uint" />
+    <field name="Per-Thread Scratch Space" dword="3" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="3" bits="31:10" type="address" />
+    <field name="Patch URB Entry Read Offset" dword="4" bits="9:4" type="uint" />
+    <field name="Patch URB Entry Read Length" dword="4" bits="17:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="4" bits="24:20" type="uint" />
+    <field name="Enable" dword="5" bits="0:0" type="bool" />
+    <field name="DS Cache Disable" dword="5" bits="1:1" type="bool" />
+    <field name="Compute W Coordinate Enable" dword="5" bits="2:2" type="bool" />
+    <field name="Statistics Enable" dword="5" bits="10:10" type="bool" />
+    <field name="Maximum Number of Threads" dword="5" bits="29:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_GATHER_CONSTANT_DS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="55" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Binding Table Block" dword="1" bits="15:12" type="uint" />
+    <field name="Constant Buffer Valid" dword="1" bits="31:16" type="uint" />
+    <field name="Gather Buffer Offset" dword="2" bits="22:6" type="offset" />
+    <group count="0" dword="3" size="32">
+      <field name="Entry_0" dword="0" bits="15:0" type="GATHER_CONSTANT_ENTRY" />
+      <field name="Entry_1" dword="0" bits="31:16" type="GATHER_CONSTANT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_GATHER_CONSTANT_GS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="53" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Binding Table Block" dword="1" bits="15:12" type="uint" />
+    <field name="Constant Buffer Valid" dword="1" bits="31:16" type="uint" />
+    <field name="Gather Buffer Offset" dword="2" bits="22:6" type="offset" />
+    <group count="0" dword="3" size="32">
+      <field name="Entry_0" dword="0" bits="15:0" type="GATHER_CONSTANT_ENTRY" />
+      <field name="Entry_1" dword="0" bits="31:16" type="GATHER_CONSTANT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_GATHER_CONSTANT_HS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="54" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Binding Table Block" dword="1" bits="15:12" type="uint" />
+    <field name="Constant Buffer Valid" dword="1" bits="31:16" type="uint" />
+    <field name="Gather Buffer Offset" dword="2" bits="22:6" type="offset" />
+    <group count="0" dword="3" size="32">
+      <field name="Entry_0" dword="0" bits="15:0" type="GATHER_CONSTANT_ENTRY" />
+      <field name="Entry_1" dword="0" bits="31:16" type="GATHER_CONSTANT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_GATHER_CONSTANT_PS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="56" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Binding Table Block" dword="1" bits="15:12" type="uint" />
+    <field name="Constant Buffer Valid" dword="1" bits="31:16" type="uint" />
+    <field name="Constant Buffer Dx9 Enable" dword="2" bits="4:4" type="bool" />
+    <field name="Gather Buffer Offset" dword="2" bits="22:6" type="offset" />
+    <group count="0" dword="3" size="32">
+      <field name="Entry_0" dword="0" bits="15:0" type="GATHER_CONSTANT_ENTRY" />
+      <field name="Entry_1" dword="0" bits="31:16" type="GATHER_CONSTANT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_GATHER_CONSTANT_VS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="52" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Binding Table Block" dword="1" bits="15:12" type="uint" />
+    <field name="Constant Buffer Valid" dword="1" bits="31:16" type="uint" />
+    <field name="Constant Buffer Dx9 Enable" dword="2" bits="4:4" type="bool" />
+    <field name="Gather Buffer Offset" dword="2" bits="22:6" type="offset" />
+    <group count="0" dword="3" size="32">
+      <field name="Entry_0" dword="0" bits="15:0" type="GATHER_CONSTANT_ENTRY" />
+      <field name="Entry_1" dword="0" bits="31:16" type="GATHER_CONSTANT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_GATHER_POOL_ALLOC" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="26" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="MOCS" dword="1" bits="3:0" type="uint" nonzero="true" />
+    <field dword="1" bits="5:4" type="mbo" />
+    <field name="Gather Pool Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Gather Pool Base Address" dword="1" bits="31:12" type="address" />
+    <field name="Gather Pool Upper Bound" dword="2" bits="31:12" type="address" />
+  </instruction>
+  <instruction name="3DSTATE_GS" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="17" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="2" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="2" bits="11:11" type="bool" />
+    <field name="GS accesses UAV" dword="2" bits="12:12" type="uint" />
+    <field name="Illegal Opcode Exception Enable" dword="2" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="2" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="2" bits="17:17" type="uint">
+      <value name="Normal Priority" value="0" />
+      <value name="High Priority" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="2" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="2" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="2" bits="30:30" type="bool" />
+    <field name="Single Program Flow" dword="2" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="3" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="3" bits="31:10" type="address" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="4" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="4" bits="9:4" type="uint" />
+    <field name="Include Vertex Handles" dword="4" bits="10:10" type="bool" />
+    <field name="Vertex URB Entry Read Length" dword="4" bits="16:11" type="uint" />
+    <field name="Output Topology" dword="4" bits="22:17" type="3D_Prim_Topo_Type" />
+    <field name="Output Vertex Size" dword="4" bits="28:23" type="uint" />
+    <field name="Enable" dword="5" bits="0:0" type="bool" />
+    <field name="Discard Adjacency" dword="5" bits="1:1" type="bool" />
+    <field name="Reorder Mode" dword="5" bits="2:2" type="uint">
+      <value name="LEADING" value="0" />
+      <value name="TRAILING" value="1" />
+    </field>
+    <field name="Hint" dword="5" bits="3:3" type="uint" />
+    <field name="Include Primitive ID" dword="5" bits="4:4" type="bool" />
+    <field name="GS Invocations Increment Value" dword="5" bits="9:5" type="uint" />
+    <field name="Statistics Enable" dword="5" bits="10:10" type="uint" />
+    <field name="Dispatch Mode" dword="5" bits="12:11" type="uint" prefix="DISPATCH_MODE">
+      <value name="SINGLE" value="0" />
+      <value name="DUAL_INSTANCE" value="1" />
+      <value name="DUAL_OBJECT" value="2" />
+    </field>
+    <field name="Default StreamID" dword="5" bits="14:13" type="uint" />
+    <field name="Instance Control" dword="5" bits="19:15" type="uint" />
+    <field name="Control Data Header Size" dword="5" bits="23:20" type="uint" />
+    <field name="Maximum Number of Threads" dword="5" bits="31:24" type="uint" />
+    <field name="Semaphore Handle" dword="6" bits="12:0" type="offset" />
+    <field name="Control Data Format" dword="6" bits="31:31" type="uint">
+      <value name="GSCTL_CUT" value="0" />
+      <value name="GSCTL_SID" value="1" />
+    </field>
+  </instruction>
+  <instruction name="3DSTATE_HS" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="27" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Maximum Number of Threads" dword="1" bits="7:0" type="uint" />
+    <field name="Software Exception Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="1" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="1" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Instance Count" dword="2" bits="3:0" type="uint" />
+    <field name="Statistics Enable" dword="2" bits="29:29" type="bool" />
+    <field name="Enable" dword="2" bits="31:31" type="bool" />
+    <field name="Kernel Start Pointer" dword="3" bits="31:6" type="offset" />
+    <field name="Per-Thread Scratch Space" dword="4" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="4" bits="31:10" type="address" />
+    <field name="Vertex URB Entry Read Offset" dword="5" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="5" bits="16:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="5" bits="23:19" type="uint" />
+    <field name="Include Vertex Handles" dword="5" bits="24:24" type="bool" />
+    <field name="HS accesses UAV" dword="5" bits="25:25" type="bool" />
+    <field name="Vector Mask Enable" dword="5" bits="26:26" type="bool" />
+    <field name="Single Program Flow" dword="5" bits="27:27" type="bool" />
+    <field name="Semaphore Handle" dword="6" bits="12:0" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_INDEX_BUFFER" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Index Format" dword="0" bits="9:8" type="uint" prefix="INDEX">
+      <value name="BYTE" value="0" />
+      <value name="WORD" value="1" />
+      <value name="DWORD" value="2" />
+    </field>
+    <field name="MOCS" dword="0" bits="15:12" type="uint" nonzero="true" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="10" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Buffer Starting Address" dword="1" bits="31:0" type="address" />
+    <field name="Buffer Ending Address" dword="2" bits="31:0" type="address" />
+  </instruction>
+  <instruction name="3DSTATE_MULTISAMPLE" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="13" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Number of Multisamples" dword="1" bits="3:1" type="uint">
+      <value name="NUMSAMPLES_1" value="0" />
+      <value name="NUMSAMPLES_4" value="2" />
+      <value name="NUMSAMPLES_8" value="3" />
+    </field>
+    <field name="Pixel Location" dword="1" bits="4:4" type="uint">
+      <value name="CENTER" value="0" />
+      <value name="UL_CORNER" value="1" />
+    </field>
+    <field name="Multi Sample Enable" dword="1" bits="5:5" type="bool" />
+    <field name="Sample0 Y Offset" dword="2" bits="3:0" type="u0.4" />
+    <field name="Sample0 X Offset" dword="2" bits="7:4" type="u0.4" />
+    <field name="Sample1 Y Offset" dword="2" bits="11:8" type="u0.4" />
+    <field name="Sample1 X Offset" dword="2" bits="15:12" type="u0.4" />
+    <field name="Sample2 Y Offset" dword="2" bits="19:16" type="u0.4" />
+    <field name="Sample2 X Offset" dword="2" bits="23:20" type="u0.4" />
+    <field name="Sample3 Y Offset" dword="2" bits="27:24" type="u0.4" />
+    <field name="Sample3 X Offset" dword="2" bits="31:28" type="u0.4" />
+    <field name="Sample4 Y Offset" dword="3" bits="3:0" type="u0.4" />
+    <field name="Sample4 X Offset" dword="3" bits="7:4" type="u0.4" />
+    <field name="Sample5 Y Offset" dword="3" bits="11:8" type="u0.4" />
+    <field name="Sample5 X Offset" dword="3" bits="15:12" type="u0.4" />
+    <field name="Sample6 Y Offset" dword="3" bits="19:16" type="u0.4" />
+    <field name="Sample6 X Offset" dword="3" bits="23:20" type="u0.4" />
+    <field name="Sample7 Y Offset" dword="3" bits="27:24" type="u0.4" />
+    <field name="Sample7 X Offset" dword="3" bits="31:28" type="u0.4" />
+  </instruction>
+  <instruction name="3DSTATE_PS" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="32" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer 0" dword="1" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="2" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="2" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="2" bits="13:13" type="bool" />
+    <field name="Rounding Mode" dword="2" bits="15:14" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Floating Point Mode" dword="2" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="2" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="2" bits="25:18" type="uint" />
+    <field name="Denormal Mode" dword="2" bits="26:26" type="uint">
+      <value name="FTZ" value="0" />
+      <value name="RET" value="1" />
+    </field>
+    <field name="Sampler Count" dword="2" bits="29:27" type="uint" />
+    <field name="Vector Mask Enable" dword="2" bits="30:30" type="bool" />
+    <field name="Single Program Flow" dword="2" bits="31:31" type="bool" />
+    <field name="Per Thread Scratch Space" dword="3" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="3" bits="31:10" type="address" />
+    <field name="8 Pixel Dispatch Enable" dword="4" bits="0:0" type="bool" />
+    <field name="16 Pixel Dispatch Enable" dword="4" bits="1:1" type="bool" />
+    <field name="32 Pixel Dispatch Enable" dword="4" bits="2:2" type="bool" />
+    <field name="Position XY Offset Select" dword="4" bits="4:3" type="uint">
+      <value name="POSOFFSET_NONE" value="0" />
+      <value name="POSOFFSET_CENTROID" value="2" />
+      <value name="POSOFFSET_SAMPLE" value="3" />
+    </field>
+    <field name="PS Accesses UAV" dword="4" bits="5:5" type="bool" />
+    <field name="Render Target Resolve Enable" dword="4" bits="6:6" type="bool" />
+    <field name="Dual Source Blend Enable" dword="4" bits="7:7" type="bool" />
+    <field name="Render Target Fast Clear Enable" dword="4" bits="8:8" type="bool" />
+    <field name="oMask Present to RenderTarget" dword="4" bits="9:9" type="bool" />
+    <field name="Attribute Enable" dword="4" bits="10:10" type="bool" />
+    <field name="Push Constant Enable" dword="4" bits="11:11" type="bool" />
+    <field name="Sample Mask" dword="4" bits="19:12" type="uint" />
+    <field name="Maximum Number of Threads" dword="4" bits="31:23" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 2" dword="5" bits="6:0" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 1" dword="5" bits="14:8" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 0" dword="5" bits="22:16" type="uint" />
+    <field name="Kernel Start Pointer 1" dword="6" bits="31:6" type="offset" />
+    <field name="Kernel Start Pointer 2" dword="7" bits="31:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_PUSH_CONSTANT_ALLOC_DS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="20" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Size" dword="1" bits="5:0" type="uint" />
+    <field name="Constant Buffer Offset" dword="1" bits="20:16" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_PUSH_CONSTANT_ALLOC_GS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="21" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Size" dword="1" bits="5:0" type="uint" />
+    <field name="Constant Buffer Offset" dword="1" bits="20:16" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_PUSH_CONSTANT_ALLOC_HS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="19" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Size" dword="1" bits="5:0" type="uint" />
+    <field name="Constant Buffer Offset" dword="1" bits="20:16" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_PUSH_CONSTANT_ALLOC_PS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="22" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Size" dword="1" bits="5:0" type="uint" />
+    <field name="Constant Buffer Offset" dword="1" bits="20:16" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_PUSH_CONSTANT_ALLOC_VS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="18" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Size" dword="1" bits="5:0" type="uint" />
+    <field name="Constant Buffer Offset" dword="1" bits="20:16" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_RAST_MULTISAMPLE" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="14" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Number of Rasterization Multisamples" dword="1" bits="3:1" type="uint" prefix="NRM">
+      <value name="NUMRASTSAMPLES_1" value="0" />
+      <value name="NUMRASTSAMPLES_2" value="1" />
+      <value name="NUMRASTSAMPLES_4" value="2" />
+      <value name="NUMRASTSAMPLES_8" value="3" />
+      <value name="NUMRASTSAMPLES_16" value="4" />
+    </field>
+    <field name="Sample0 Y Offset" dword="2" bits="3:0" type="u0.4" />
+    <field name="Sample0 X Offset" dword="2" bits="7:4" type="u0.4" />
+    <field name="Sample1 Y Offset" dword="2" bits="11:8" type="u0.4" />
+    <field name="Sample1 X Offset" dword="2" bits="15:12" type="u0.4" />
+    <field name="Sample2 Y Offset" dword="2" bits="19:16" type="u0.4" />
+    <field name="Sample2 X Offset" dword="2" bits="23:20" type="u0.4" />
+    <field name="Sample3 Y Offset" dword="2" bits="27:24" type="u0.4" />
+    <field name="Sample3 X Offset" dword="2" bits="31:28" type="u0.4" />
+    <field name="Sample4 Y Offset" dword="3" bits="3:0" type="u0.4" />
+    <field name="Sample4 X Offset" dword="3" bits="7:4" type="u0.4" />
+    <field name="Sample5 Y Offset" dword="3" bits="11:8" type="u0.4" />
+    <field name="Sample5 X Offset" dword="3" bits="15:12" type="u0.4" />
+    <field name="Sample6 Y Offset" dword="3" bits="19:16" type="u0.4" />
+    <field name="Sample6 X Offset" dword="3" bits="23:20" type="u0.4" />
+    <field name="Sample7 Y Offset" dword="3" bits="27:24" type="u0.4" />
+    <field name="Sample7 X Offset" dword="3" bits="31:28" type="u0.4" />
+    <field name="Sample8 Y Offset" dword="4" bits="3:0" type="u0.4" />
+    <field name="Sample8 X Offset" dword="4" bits="7:4" type="u0.4" />
+    <field name="Sample9 Y Offset" dword="4" bits="11:8" type="u0.4" />
+    <field name="Sample9 X Offset" dword="4" bits="15:12" type="u0.4" />
+    <field name="Sample10 Y Offset" dword="4" bits="19:16" type="u0.4" />
+    <field name="Sample10 X Offset" dword="4" bits="23:20" type="u0.4" />
+    <field name="Sample11 Y Offset" dword="4" bits="27:24" type="u0.4" />
+    <field name="Sample11 X Offset" dword="4" bits="31:28" type="u0.4" />
+    <field name="Sample12 Y Offset" dword="5" bits="3:0" type="u0.4" />
+    <field name="Sample12 X Offset" dword="5" bits="7:4" type="u0.4" />
+    <field name="Sample13 Y Offset" dword="5" bits="11:8" type="u0.4" />
+    <field name="Sample13 X Offset" dword="5" bits="15:12" type="u0.4" />
+    <field name="Sample14 Y Offset" dword="5" bits="19:16" type="u0.4" />
+    <field name="Sample14 X Offset" dword="5" bits="23:20" type="u0.4" />
+    <field name="Sample15 Y Offset" dword="5" bits="27:24" type="u0.4" />
+    <field name="Sample15 X Offset" dword="5" bits="31:28" type="u0.4" />
+  </instruction>
+  <instruction name="3DSTATE_SBE" bias="2" length="14" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="12" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="31" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Vertex URB Entry Read Offset" dword="1" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="1" bits="15:11" type="uint" />
+    <field name="Point Sprite Texture Coordinate Origin" dword="1" bits="20:20" type="uint">
+      <value name="UPPERLEFT" value="0" />
+      <value name="LOWERLEFT" value="1" />
+    </field>
+    <field name="Attribute Swizzle Enable" dword="1" bits="21:21" type="bool" />
+    <field name="Number of SF Output Attributes" dword="1" bits="27:22" type="uint" />
+    <field name="Attribute Swizzle Control Mode" dword="1" bits="28:28" type="uint" />
+    <group count="16" dword="2" size="16">
+      <field name="Attribute" dword="0" bits="15:0" type="SF_OUTPUT_ATTRIBUTE_DETAIL" />
+    </group>
+    <field name="Point Sprite Texture Coordinate Enable" dword="10" bits="31:0" type="uint" />
+    <field name="Constant Interpolation Enable" dword="11" bits="31:0" type="uint" />
+    <field name="Attribute 0 WrapShortest Enables" dword="12" bits="3:0" type="uint" />
+    <field name="Attribute 1 WrapShortest Enables" dword="12" bits="7:4" type="uint" />
+    <field name="Attribute 2 WrapShortest Enables" dword="12" bits="11:8" type="uint" />
+    <field name="Attribute 3 WrapShortest Enables" dword="12" bits="15:12" type="uint" />
+    <field name="Attribute 4 WrapShortest Enables" dword="12" bits="19:16" type="uint" />
+    <field name="Attribute 5 WrapShortest Enables" dword="12" bits="23:20" type="uint" />
+    <field name="Attribute 6 WrapShortest Enables" dword="12" bits="27:24" type="uint" />
+    <field name="Attribute 7 WrapShortest Enables" dword="12" bits="31:28" type="uint" />
+    <field name="Attribute 8 WrapShortest Enables" dword="13" bits="3:0" type="uint" />
+    <field name="Attribute 9 WrapShortest Enables" dword="13" bits="7:4" type="uint" />
+    <field name="Attribute 10 WrapShortest Enables" dword="13" bits="11:8" type="uint" />
+    <field name="Attribute 11 WrapShortest Enables" dword="13" bits="15:12" type="uint" />
+    <field name="Attribute 12 WrapShortest Enables" dword="13" bits="19:16" type="uint" />
+    <field name="Attribute 13 WrapShortest Enables" dword="13" bits="23:20" type="uint" />
+    <field name="Attribute 14 WrapShortest Enables" dword="13" bits="27:24" type="uint" />
+    <field name="Attribute 15 WrapShortest Enables" dword="13" bits="31:28" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_SF" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="19" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Front Winding" dword="1" bits="0:0" type="uint" />
+    <field name="Viewport Transform Enable" dword="1" bits="1:1" type="bool" />
+    <field name="BackFace Fill Mode" dword="1" bits="4:3" type="uint" prefix="FILL_MODE">
+      <value name="SOLID" value="0" />
+      <value name="WIREFRAME" value="1" />
+      <value name="POINT" value="2" />
+    </field>
+    <field name="FrontFace Fill Mode" dword="1" bits="6:5" type="uint" prefix="FILL_MODE">
+      <value name="SOLID" value="0" />
+      <value name="WIREFRAME" value="1" />
+      <value name="POINT" value="2" />
+    </field>
+    <field name="Global Depth Offset Enable Point" dword="1" bits="7:7" type="bool" />
+    <field name="Global Depth Offset Enable Wireframe" dword="1" bits="8:8" type="bool" />
+    <field name="Global Depth Offset Enable Solid" dword="1" bits="9:9" type="bool" />
+    <field name="Statistics Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Legacy Global Depth Bias Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Depth Buffer Surface Format" dword="1" bits="14:12" type="uint">
+      <value name="D32_FLOAT_S8X24_UINT" value="0" />
+      <value name="D32_FLOAT" value="1" />
+      <value name="D24_UNORM_S8_UINT" value="2" />
+      <value name="D24_UNORM_X8_UINT" value="3" />
+      <value name="D16_UNORM" value="5" />
+    </field>
+    <field name="Multisample Rasterization Mode" dword="2" bits="9:8" type="uint" />
+    <field name="RT Independent Rasterization Enable" dword="2" bits="10:10" type="bool" />
+    <field name="Scissor Rectangle Enable" dword="2" bits="11:11" type="bool" />
+    <field name="Line Stipple Enable" dword="2" bits="14:14" type="bool" />
+    <field name="Line End Cap Antialiasing Region Width" dword="2" bits="17:16" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Line Width" dword="2" bits="27:18" type="u3.7" />
+    <field name="Cull Mode" dword="2" bits="30:29" type="uint" prefix="CULLMODE">
+      <value name="BOTH" value="0" />
+      <value name="NONE" value="1" />
+      <value name="FRONT" value="2" />
+      <value name="BACK" value="3" />
+    </field>
+    <field name="Antialiasing Enable" dword="2" bits="31:31" type="bool" />
+    <field name="Point Width" dword="3" bits="10:0" type="u8.3" />
+    <field name="Point Width Source" dword="3" bits="11:11" type="uint">
+      <value name="Vertex" value="0" />
+      <value name="State" value="1" />
+    </field>
+    <field name="Vertex Sub Pixel Precision Select" dword="3" bits="12:12" type="uint">
+      <value name="8 Bit" value="0" />
+      <value name="4 Bit" value="1" />
+    </field>
+    <field name="AA Line Distance Mode" dword="3" bits="14:14" type="uint">
+      <value name="AALINEDISTANCE_TRUE" value="1" />
+    </field>
+    <field name="Triangle Fan Provoking Vertex Select" dword="3" bits="26:25" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+      <value name="Vertex 2" value="2" />
+    </field>
+    <field name="Line Strip/List Provoking Vertex Select" dword="3" bits="28:27" type="uint" />
+    <field name="Triangle Strip/List Provoking Vertex Select" dword="3" bits="30:29" type="uint">
+      <value name="Vertex 0" value="0" />
+      <value name="Vertex 1" value="1" />
+      <value name="Vertex 2" value="2" />
+    </field>
+    <field name="Last Pixel Enable" dword="3" bits="31:31" type="bool" />
+    <field name="Global Depth Offset Constant" dword="4" bits="31:0" type="float" />
+    <field name="Global Depth Offset Scale" dword="5" bits="31:0" type="float" />
+    <field name="Global Depth Offset Clamp" dword="6" bits="31:0" type="float" />
+  </instruction>
+  <instruction name="3DSTATE_STENCIL_BUFFER" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="6" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="MOCS" dword="1" bits="28:25" type="uint" nonzero="true" />
+    <field name="Stencil Buffer Enable" dword="1" bits="31:31" type="bool" />
+    <field name="Surface Base Address" dword="2" bits="31:0" type="address" />
+  </instruction>
+  <instruction name="3DSTATE_URB_DS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="50" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="DS Number of URB Entries" dword="1" bits="15:0" type="uint" />
+    <field name="DS URB Entry Allocation Size" dword="1" bits="24:16" type="uint" />
+    <field name="DS URB Starting Address" dword="1" bits="30:25" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_URB_GS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="51" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="GS Number of URB Entries" dword="1" bits="15:0" type="uint" />
+    <field name="GS URB Entry Allocation Size" dword="1" bits="24:16" type="uint" />
+    <field name="GS URB Starting Address" dword="1" bits="30:25" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_URB_HS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="49" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="HS Number of URB Entries" dword="1" bits="15:0" type="uint" />
+    <field name="HS URB Entry Allocation Size" dword="1" bits="24:16" type="uint" />
+    <field name="HS URB Starting Address" dword="1" bits="30:25" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_URB_VS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="48" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="VS Number of URB Entries" dword="1" bits="15:0" type="uint" />
+    <field name="VS URB Entry Allocation Size" dword="1" bits="24:16" type="uint" />
+    <field name="VS URB Starting Address" dword="1" bits="30:25" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_VF" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="Indexed Draw Cut Index Enable" dword="0" bits="8:8" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="12" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Cut Index" dword="1" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_VS" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="16" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="2" bits="7:7" type="bool" />
+    <field name="VS accesses UAV" dword="2" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="2" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="2" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="2" bits="17:17" type="uint">
+      <value name="Normal Priority" value="0" />
+      <value name="High Priority" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="2" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="2" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="2" bits="30:30" type="bool" />
+    <field name="Single Vertex Dispatch" dword="2" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="3" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="3" bits="31:10" type="address" />
+    <field name="Vertex URB Entry Read Offset" dword="4" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="4" bits="16:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="4" bits="24:20" type="uint" />
+    <field name="Enable" dword="5" bits="0:0" type="bool" />
+    <field name="Vertex Cache Disable" dword="5" bits="1:1" type="bool" />
+    <field name="Statistics Enable" dword="5" bits="10:10" type="bool" />
+    <field name="Maximum Number of Threads" dword="5" bits="31:23" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_WM" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="20" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Multisample Rasterization Mode" dword="1" bits="1:0" type="uint">
+      <value name="MSRASTMODE_OFF_PIXEL" value="0" />
+      <value name="MSRASTMODE_OFF_PATTERN" value="1" />
+      <value name="MSRASTMODE_ON_PIXEL" value="2" />
+      <value name="MSRASTMODE_ON_PATTERN" value="3" />
+    </field>
+    <field name="Point Rasterization Rule" dword="1" bits="2:2" type="uint">
+      <value name="RASTRULE_UPPER_LEFT" value="0" />
+      <value name="RASTRULE_UPPER_RIGHT" value="1" />
+    </field>
+    <field name="Line Stipple Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Polygon Stipple Enable" dword="1" bits="4:4" type="bool" />
+    <field name="RT Independent Rasterization Enable" dword="1" bits="5:5" type="bool" />
+    <field name="Line Antialiasing Region Width" dword="1" bits="7:6" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Line End Cap Antialiasing Region Width" dword="1" bits="9:8" type="uint" />
+    <field name="Pixel Shader Uses Input Coverage Mask" dword="1" bits="10:10" type="bool" />
+    <field name="Barycentric Interpolation Mode" dword="1" bits="16:11" type="uint">
+      <value name="BIM_PERSPECTIVE_PIXEL" value="1" />
+      <value name="BIM_PERSPECTIVE_CENTROID" value="2" />
+      <value name="BIM_PERSPECTIVE_SAMPLE" value="4" />
+      <value name="BIM_LINEAR_PIXEL" value="8" />
+      <value name="BIM_LINEAR_CENTROID" value="16" />
+      <value name="BIM_LINEAR_SAMPLE" value="32" />
+    </field>
+    <field name="Position ZW Interpolation Mode" dword="1" bits="18:17" type="uint">
+      <value name="INTERP_PIXEL" value="0" />
+      <value name="INTERP_CENTROID" value="2" />
+      <value name="INTERP_SAMPLE" value="3" />
+    </field>
+    <field name="Pixel Shader Uses Source W" dword="1" bits="19:19" type="bool" />
+    <field name="Pixel Shader Uses Source Depth" dword="1" bits="20:20" type="bool" />
+    <field name="Early Depth/Stencil Control" dword="1" bits="22:21" type="uint">
+      <value name="EDSC_NORMAL" value="0" />
+      <value name="EDSC_PSEXEC" value="1" />
+      <value name="EDSC_PREPS" value="2" />
+    </field>
+    <field name="Pixel Shader Computed Depth Mode" dword="1" bits="24:23" type="uint">
+      <value name="PSCDEPTH_OFF" value="0" />
+      <value name="PSCDEPTH_ON" value="1" />
+      <value name="PSCDEPTH_ON_GE" value="2" />
+      <value name="PSCDEPTH_ON_LE" value="3" />
+    </field>
+    <field name="Pixel Shader Kills Pixel" dword="1" bits="25:25" type="bool" />
+    <field name="Legacy Diamond Line Rasterization" dword="1" bits="26:26" type="bool" />
+    <field name="Hierarchical Depth Buffer Resolve Enable" dword="1" bits="27:27" type="bool" />
+    <field name="Depth Buffer Resolve Enable" dword="1" bits="28:28" type="bool" />
+    <field name="Thread Dispatch Enable" dword="1" bits="29:29" type="bool" />
+    <field name="Depth Buffer Clear" dword="1" bits="30:30" type="bool" />
+    <field name="Statistics Enable" dword="1" bits="31:31" type="bool" />
+    <field name="PS UAV-only" dword="2" bits="30:30" type="uint">
+      <value name="OFF" value="0" />
+      <value name="ON" value="1" />
+    </field>
+    <field name="Multisample Dispatch Mode" dword="2" bits="31:31" type="uint">
+      <value name="MSDISPMODE_PERSAMPLE" value="0" />
+      <value name="MSDISPMODE_PERPIXEL" value="1" />
+    </field>
+  </instruction>
+  <instruction name="GPGPU_CSR_BASE_ADDRESS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="GPGPU CSR Base Address" dword="1" bits="31:12" type="address" />
+  </instruction>
+  <instruction name="GPGPU_OBJECT" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="Shared Local Memory Fixed Offset" dword="1" bits="7:7" type="uint" />
+    <field name="Indirect Data Length" dword="2" bits="16:0" type="uint" />
+    <field name="Half-Slice Destination Select" dword="2" bits="18:17" type="uint">
+      <value name="Half-Slice 1" value="2" />
+      <value name="Half-Slice 0" value="1" />
+      <value name="Either Half-Slice" value="0" />
+    </field>
+    <field name="Slice Destination Select" dword="2" bits="19:19" type="uint">
+      <value name="Slice 0" value="0" />
+      <value name="Slice 1" value="1" />
+    </field>
+    <field name="End of Thread Group" dword="2" bits="24:24" type="uint" />
+    <field name="Shared Local Memory Offset" dword="2" bits="31:28" type="uint" />
+    <field name="Indirect Data Start Address" dword="3" bits="31:0" type="offset" />
+    <field name="Thread Group ID X" dword="4" bits="31:0" type="uint" />
+    <field name="Thread Group ID Y" dword="5" bits="31:0" type="uint" />
+    <field name="Thread Group ID Z" dword="6" bits="31:0" type="uint" />
+    <field name="Execution Mask" dword="7" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="GPGPU_WALKER" bias="2" length="11" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Indirect Parameter Enable" dword="0" bits="10:10" type="bool" />
+    <field name="SubOpcode A" dword="0" bits="23:16" type="uint" default="5" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="Thread Width Counter Maximum" dword="2" bits="5:0" type="uint" />
+    <field name="Thread Height Counter Maximum" dword="2" bits="13:8" type="uint" />
+    <field name="Thread Depth Counter Maximum" dword="2" bits="21:16" type="uint" />
+    <field name="SIMD Size" dword="2" bits="31:30" type="uint">
+      <value name="SIMD8" value="0" />
+      <value name="SIMD16" value="1" />
+      <value name="SIMD32" value="2" />
+    </field>
+    <field name="Thread Group ID Starting X" dword="3" bits="31:0" type="uint" />
+    <field name="Thread Group ID X Dimension" dword="4" bits="31:0" type="uint" />
+    <field name="Thread Group ID Starting Y" dword="5" bits="31:0" type="uint" />
+    <field name="Thread Group ID Y Dimension" dword="6" bits="31:0" type="uint" />
+    <field name="Thread Group ID Starting Z" dword="7" bits="31:0" type="uint" />
+    <field name="Thread Group ID Z Dimension" dword="8" bits="31:0" type="uint" />
+    <field name="Right Execution Mask" dword="9" bits="31:0" type="uint" />
+    <field name="Bottom Execution Mask" dword="10" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MEDIA_OBJECT" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="4" />
+    <field name="Media Command Sub-Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Media Command Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="Indirect Data Length" dword="2" bits="16:0" type="uint" />
+    <field name="Half-Slice Destination Select" dword="2" bits="18:17" type="uint">
+      <value name="Half-Slice 1" value="2" />
+      <value name="Half-Slice 0" value="1" />
+      <value name="Either half-slice" value="0" />
+    </field>
+    <field name="Slice Destination Select" dword="2" bits="19:19" type="uint">
+      <value name="Slice 0" value="0" />
+      <value name="Slice 1" value="1" />
+      <value name="Either Slice" value="0" />
+    </field>
+    <field name="Use Scoreboard" dword="2" bits="21:21" type="uint">
+      <value name="Not using scoreboard" value="0" />
+      <value name="Using scoreboard" value="1" />
+    </field>
+    <field name="Thread Synchronization" dword="2" bits="24:24" type="uint">
+      <value name="No thread synchronization" value="0" />
+      <value name="Thread dispatch is synchronized by the 'spawn root thread' message" value="1" />
+    </field>
+    <field name="Children Present" dword="2" bits="31:31" type="bool" />
+    <field name="Indirect Data Start Address" dword="3" bits="31:0" type="address" />
+    <field name="Scoreboard X" dword="4" bits="8:0" type="uint" />
+    <field name="Scoredboard Y" dword="4" bits="24:16" type="uint" />
+    <field name="Scoreboard Mask" dword="5" bits="7:0" type="uint" />
+    <field name="Scoreboard Color" dword="5" bits="19:16" type="uint" />
+    <group count="0" dword="6" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MEDIA_OBJECT_PRT" bias="2" length="16" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="14" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="PRT_FenceType" dword="2" bits="22:22" type="uint">
+      <value name="Root thread queue" value="0" />
+      <value name="VFE state flush" value="1" />
+    </field>
+    <field name="PRT_Fence Needed" dword="2" bits="23:23" type="bool" />
+    <field name="Children Present" dword="2" bits="31:31" type="bool" />
+    <group count="12" dword="4" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MEDIA_OBJECT_WALKER" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="15" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="3" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="Indirect Data Length" dword="2" bits="16:0" type="uint" />
+    <field name="Use Scoreboard" dword="2" bits="21:21" type="uint">
+      <value name="Not using scoreboard" value="0" />
+      <value name="Using scoreboard" value="1" />
+    </field>
+    <field name="Thread Synchronization" dword="2" bits="24:24" type="uint">
+      <value name="No thread synchronization" value="0" />
+      <value name="Thread dispatch is synchronized by the 'spawn root thread' message" value="1" />
+    </field>
+    <field name="Children Present" dword="2" bits="31:31" type="uint" />
+    <field name="Indirect Data Start Address" dword="3" bits="31:0" type="offset" />
+    <field name="Scoreboard Mask" dword="5" bits="7:0" type="uint" />
+    <field name="Mid-Loop Unit X" dword="6" bits="9:8" type="int" />
+    <field name="Local Mid-Loop Unit Y" dword="6" bits="13:12" type="int" />
+    <field name="Middle Loop Extra Steps" dword="6" bits="20:16" type="uint" />
+    <field name="Color Count Minus One" dword="6" bits="27:24" type="uint" />
+    <field name="Quad Mode" dword="6" bits="29:29" type="uint" />
+    <field name="Repel" dword="6" bits="30:30" type="uint" />
+    <field name="Dual Mode" dword="6" bits="31:31" type="uint" />
+    <field name="Local Loop Exec Count" dword="7" bits="9:0" type="uint" />
+    <field name="Global Loop Exec Count" dword="7" bits="25:16" type="uint" />
+    <field name="Block Resolution X" dword="8" bits="8:0" type="uint" />
+    <field name="Block Resolution Y" dword="8" bits="24:16" type="uint" />
+    <field name="Local Start X" dword="9" bits="8:0" type="uint" />
+    <field name="Local Start Y" dword="9" bits="24:16" type="uint" />
+    <field name="Local Outer Loop Stride X" dword="11" bits="9:0" type="int" />
+    <field name="Local Outer Loop Stride Y" dword="11" bits="25:16" type="int" />
+    <field name="Local Inner Loop Unit X" dword="12" bits="9:0" type="int" />
+    <field name="Local Inner Loop Unit Y" dword="12" bits="25:16" type="int" />
+    <field name="Global Resolution X" dword="13" bits="8:0" type="uint" />
+    <field name="Global Resolution Y" dword="13" bits="24:16" type="uint" />
+    <field name="Global Start X" dword="14" bits="9:0" type="int" />
+    <field name="Global Start Y" dword="14" bits="25:16" type="int" />
+    <field name="Global Outer Loop Stride X" dword="15" bits="9:0" type="int" />
+    <field name="Global Outer Loop Stride Y" dword="15" bits="25:16" type="int" />
+    <field name="Global Inner Loop Unit X" dword="16" bits="9:0" type="int" />
+    <field name="Global Inner Loop Unit Y" dword="16" bits="25:16" type="int" />
+    <group count="0" dword="17" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MEDIA_STATE_FLUSH" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="0" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="Watermark Required" dword="1" bits="6:6" type="uint" />
+    <field name="Flush to GO" dword="1" bits="7:7" type="bool" />
+    <field name="Disable Preemption" dword="1" bits="8:8" type="bool" />
+  </instruction>
+  <instruction name="MEDIA_VFE_STATE" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="6" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Per Thread Scratch Space" dword="1" bits="3:0" type="uint" />
+    <field name="Stack Size" dword="1" bits="7:4" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="1" bits="31:10" type="address" />
+    <field name="GPGPU Mode" dword="2" bits="2:2" type="bool" />
+    <field name="Bypass Gateway Control" dword="2" bits="6:6" type="uint">
+      <value name="Maintaining OpenGateway/ForwardMsg/CloseGateway protocol (legacy mode)" value="0" />
+      <value name="Bypassing OpenGateway/CloseGateway protocol" value="1" />
+    </field>
+    <field name="Reset Gateway Timer" dword="2" bits="7:7" type="uint">
+      <value name="Maintaining the existing timestamp state" value="0" />
+      <value name="Resetting relative timer and latching the global timestamp" value="1" />
+    </field>
+    <field name="Number of URB Entries" dword="2" bits="15:8" type="uint" />
+    <field name="Maximum Number of Threads" dword="2" bits="31:16" type="uint" />
+    <field name="Half-Slice Disable" dword="3" bits="1:0" type="uint" />
+    <field name="CURBE Allocation Size" dword="4" bits="15:0" type="uint" />
+    <field name="URB Entry Allocation Size" dword="4" bits="31:16" type="uint" />
+    <field name="Scoreboard Mask" dword="5" bits="7:0" type="uint" />
+    <field name="Scoreboard Type" dword="5" bits="30:30" type="uint">
+      <value name="Stalling Scoreboard" value="0" />
+      <value name="Non-Stalling Scoreboard" value="1" />
+    </field>
+    <field name="Scoreboard Enable" dword="5" bits="31:31" type="uint">
+      <value name="Scoreboard disabled" value="0" />
+      <value name="Scoreboard enabled" value="1" />
+    </field>
+    <field name="Scoreboard 0 Delta X" dword="6" bits="3:0" type="int" />
+    <field name="Scoreboard 0 Delta Y" dword="6" bits="7:4" type="int" />
+    <field name="Scoreboard 1 Delta X" dword="6" bits="11:8" type="int" />
+    <field name="Scoreboard 1 Delta Y" dword="6" bits="15:12" type="int" />
+    <field name="Scoreboard 2 Delta X" dword="6" bits="19:16" type="int" />
+    <field name="Scoreboard 2 Delta Y" dword="6" bits="23:20" type="int" />
+    <field name="Scoreboard 3 Delta X" dword="6" bits="27:24" type="int" />
+    <field name="Scoreboard 3 Delta Y" dword="6" bits="31:28" type="int" />
+    <field name="Scoreboard 4 Delta X" dword="7" bits="3:0" type="int" />
+    <field name="Scoreboard 4 Delta Y" dword="7" bits="7:4" type="int" />
+    <field name="Scoreboard 5 Delta X" dword="7" bits="11:8" type="int" />
+    <field name="Scoreboard 5 Delta Y" dword="7" bits="15:12" type="int" />
+    <field name="Scoreboard 6 Delta X" dword="7" bits="19:16" type="int" />
+    <field name="Scoreboard 6 Delta Y" dword="7" bits="23:20" type="int" />
+    <field name="Scoreboard 7 Delta X" dword="7" bits="27:24" type="int" />
+    <field name="Scoreboard 7 Delta Y" dword="7" bits="31:28" type="int" />
+  </instruction>
+  <instruction name="MFC_AVC_PAK_OBJECT" bias="2" length="12" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="10" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="9" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect PAK-MV Data Length" dword="1" bits="9:0" type="uint" />
+    <field name="Indirect PAK-MV Data Start Address Offset" dword="2" bits="28:0" type="offset" />
+    <group count="8" dword="3" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFD_AVC_DPB_STATE" bias="2" length="27" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="9" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="6" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="16" dword="1" size="1">
+      <field name="Non-Existing Frame" dword="0" bits="0:0" type="uint">
+        <value name="INVALID" value="1" />
+        <value name="VALID" value="0" />
+      </field>
+    </group>
+    <group count="16" dword="1" offset_bits="16" size="1">
+      <field name="Long Term Frame" dword="0" bits="0:0" type="uint" />
+    </group>
+    <group count="16" dword="2" size="2">
+      <field name="Used for Reference" dword="0" bits="1:0" type="uint">
+        <value name="NOT_REFERENCE" value="0" />
+        <value name="TOP_FIELD" value="1" />
+        <value name="BOTTOM_FIELD" value="2" />
+        <value name="FRAME" value="3" />
+      </field>
+    </group>
+    <group count="16" dword="3" size="16">
+      <field name="LTST Frame Number List" dword="0" bits="15:0" type="uint" prefix="LTST">
+        <value name="Long Term Frame" value="1" />
+        <value name="Short Term Frame" value="0" />
+      </field>
+    </group>
+    <group count="16" dword="11" size="16">
+      <field name="View ID" dword="0" bits="15:0" type="uint" />
+    </group>
+    <group count="16" dword="19" size="8">
+      <field name="L0 View Order" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="16" dword="23" size="8">
+      <field name="L1 View Order" dword="0" bits="7:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFD_AVC_PICID_STATE" bias="2" length="10" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="8" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="5" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="PictureID Remapping Disable" dword="1" bits="0:0" type="uint">
+      <value name="Use 16 bits Picture ID" value="0" />
+      <value name="Use 4 bits FrameStoreID" value="1" />
+    </field>
+    <group count="16" dword="2" size="16">
+      <field name="Picture ID" dword="0" bits="15:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFD_VC1_BSD_OBJECT" bias="2" length="5" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="3" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="8" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect BSD Data Length" dword="1" bits="23:0" type="uint" />
+    <field name="Indirect BSD Data Start Address" dword="2" bits="28:0" type="offset" />
+    <field name="Next Slice Vertical Position" dword="3" bits="8:0" type="uint" />
+    <field name="Slice Start Vertical Position" dword="3" bits="23:16" type="uint" />
+    <field name="First MB Bit Offset" dword="4" bits="2:0" type="uint" />
+    <field name="Emulation Prevention Byte Present" dword="4" bits="4:4" type="uint" />
+    <field name="First MB Byte Offset of Slice Data or Slice Header" dword="4" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="MFX_AVC_DIRECTMODE_STATE" bias="2" length="71" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="69" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="16" dword="1" size="64">
+      <field name="Direct MV Buffer - Address" dword="0" bits="63:0" type="address" />
+    </group>
+    <field name="Direct MV Buffer (Write) - Address" dword="34" bits="63:0" type="address" />
+    <group count="34" dword="37" size="32">
+      <field name="POC List" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFX_AVC_IMG_STATE" bias="2" length="14" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="12" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Size" dword="1" bits="15:0" type="uint" />
+    <field name="Frame Width" dword="2" bits="7:0" type="uint" />
+    <field name="Frame Height" dword="2" bits="23:16" type="uint" />
+    <field name="Image Structure" dword="3" bits="9:8" type="uint">
+      <value name="Frame Picture" value="0" />
+      <value name="Top Field Picture" value="1" />
+      <value name="Bottom Field Picture" value="3" />
+      <value name="Invalid, not allowed." value="2" />
+    </field>
+    <field name="Weighted BiPrediction IDC" dword="3" bits="11:10" type="uint">
+      <value name="DEFAULT" value="0" />
+      <value name="EXPLICIT" value="1" />
+      <value name="IMPLICIT" value="2" />
+    </field>
+    <field name="Weighted Prediction Enable" dword="3" bits="12:12" type="bool" />
+    <field name="First Chroma QP Offset" dword="3" bits="20:16" type="int" />
+    <field name="Second Chroma QP Offset" dword="3" bits="28:24" type="int" />
+    <field name="Field Picture" dword="4" bits="0:0" type="bool" />
+    <field name="MBAFF Mode" dword="4" bits="1:1" type="bool" />
+    <field name="Frame MB Only" dword="4" bits="2:2" type="bool" />
+    <field name="8x8 IDCT Transform Mode" dword="4" bits="3:3" type="bool" />
+    <field name="Direct 8x8 Inference" dword="4" bits="4:4" type="bool" />
+    <field name="Constrained Intra Prediction" dword="4" bits="5:5" type="bool" />
+    <field name="Non-Reference Picture" dword="4" bits="6:6" type="bool" />
+    <field name="Entropy Coding Sync Enable" dword="4" bits="7:7" type="bool" />
+    <field name="MB MV Format" dword="4" bits="8:8" type="uint">
+      <value name="IGNORE" value="0" />
+      <value name="FOLLOW" value="1" />
+    </field>
+    <field name="Chroma Format IDC" dword="4" bits="11:10" type="uint">
+      <value name="Monochrome picture" value="0" />
+      <value name="4:2:0 picture" value="1" />
+      <value name="4:2:2 picture (not supported)" value="2" />
+      <value name="4:4:4 picture (not supported)" value="3" />
+    </field>
+    <field name="MV Unpacked Enable" dword="4" bits="12:12" type="bool" />
+    <field name="Load Bitstream Pointer Per Slice" dword="4" bits="14:14" type="bool" />
+    <field name="MB Status Read" dword="4" bits="15:15" type="bool" />
+    <field name="Minimum Frame Size" dword="4" bits="31:16" type="uint" />
+    <field name="Intra MB Max Bit Control" dword="5" bits="0:0" type="bool" />
+    <field name="Inter MB Max Bit Control" dword="5" bits="1:1" type="bool" />
+    <field name="Frame Bitrate Max Report" dword="5" bits="2:2" type="bool" />
+    <field name="Frame Bitrate Min Report" dword="5" bits="3:3" type="bool" />
+    <field name="Force IPCM Control" dword="5" bits="7:7" type="bool" />
+    <field name="MB Level Rate Control" dword="5" bits="9:9" type="bool" />
+    <field name="Minimum Frame Size Units" dword="5" bits="11:10" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="16 bytes" value="1" />
+      <value name="4Kb" value="2" />
+      <value name="16Kb" value="3" />
+    </field>
+    <field name="Inter MB Force CBP to Zero Control" dword="5" bits="12:12" type="bool" />
+    <field name="Non First Pass" dword="5" bits="16:16" type="uint" />
+    <field name="Trellis Quantization Chroma Disable" dword="5" bits="27:27" type="bool" />
+    <field name="Trellis Quantization Rounding" dword="5" bits="30:28" type="uint" />
+    <field name="Trellis Quantization Enable" dword="5" bits="31:31" type="bool" />
+    <field name="Intra MB Conformance Max Size" dword="6" bits="11:0" type="uint" />
+    <field name="Inter MB Conformance Max Size" dword="6" bits="27:16" type="uint" />
+    <field name="Slice Delta QP Max[0]" dword="8" bits="7:0" type="int" />
+    <field name="Slice Delta QP Max[1]" dword="8" bits="15:8" type="int" />
+    <field name="Slice Delta QP Max[2]" dword="8" bits="23:16" type="uint" />
+    <field name="Slice Delta QP Max[3]" dword="8" bits="31:24" type="int" />
+    <field name="Slice Delta QP Min[0]" dword="9" bits="7:0" type="int" />
+    <field name="Slice Delta QP Min[1]" dword="9" bits="15:8" type="int" />
+    <field name="Slice Delta QP Min[2]" dword="9" bits="23:16" type="int" />
+    <field name="Slice Delta QP Min[3]" dword="9" bits="31:24" type="int" />
+    <field name="Frame Bitrate Min" dword="10" bits="13:0" type="uint" />
+    <field name="Frame Bitrate Min Unit Mode" dword="10" bits="14:14" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Min Unit" dword="10" bits="15:15" type="uint" />
+    <field name="Frame Bitrate Max" dword="10" bits="29:16" type="uint" />
+    <field name="Frame Bitrate Max Unit Mode" dword="10" bits="30:30" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Max Unit" dword="10" bits="31:31" type="uint" />
+    <field name="Frame Bitrate Min Delta" dword="11" bits="14:0" type="uint" />
+    <field name="Frame Bitrate Max Delta" dword="11" bits="30:16" type="uint" />
+    <field name="Slice Stats Stream-Out Enable" dword="11" bits="31:31" type="bool" />
+    <field name="Initial QP Value" dword="13" bits="7:0" type="int" />
+    <field name="Number of Active Reference Pictures from L0" dword="13" bits="13:8" type="uint" />
+    <field name="Number of Active Reference Pictures from L1" dword="13" bits="21:16" type="uint" />
+    <field name="Number of Reference Frames" dword="13" bits="28:24" type="uint" />
+    <field name="Current Picture Has Performed MMCO5" dword="13" bits="29:29" type="bool" />
+    <field name="Pic Order Present" dword="14" bits="0:0" type="bool" />
+    <field name="Delta Pic Order Always Zero" dword="14" bits="1:1" type="bool" />
+    <field name="Pic Order Count Type" dword="14" bits="3:2" type="uint" />
+    <field name="Slice Group Map Type" dword="14" bits="10:8" type="uint" />
+    <field name="Redundant Pic Count Present" dword="14" bits="11:11" type="bool" />
+    <field name="Number of Slice Groups" dword="14" bits="14:12" type="uint" />
+    <field name="Deblocking Filter Control Present" dword="14" bits="15:15" type="bool" />
+    <field name="Log2 Max Frame Number" dword="14" bits="23:16" type="uint" />
+    <field name="Log2 Max Pic Order Count LSB" dword="14" bits="31:24" type="uint" />
+    <field name="Slice Group Change Rate" dword="15" bits="15:0" type="uint" />
+    <field name="Current Picture Frame Number" dword="15" bits="31:16" type="uint" />
+    <field name="Current Frame View ID" dword="16" bits="9:0" type="uint" />
+    <field name="Max View IDXL0" dword="16" bits="15:12" type="uint" />
+    <field name="Max View IDXL1" dword="16" bits="21:18" type="uint" />
+    <field name="Inter View Order Disable" dword="16" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="MFX_BSP_BUF_BASE_ADDR_STATE" bias="2" length="10" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="8" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="4" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="BSD/MPC Row Store Scratch Buffer - MOCS" dword="1" bits="3:0" type="uint" nonzero="true" />
+    <field name="BSD/MPC Row Store Scratch Buffer - Arbitration Priority Control" dword="1" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second Highest priority" value="1" />
+      <value name="Third Highest Priority" value="2" />
+      <value name="Lowest Priority" value="3" />
+    </field>
+    <field name="BSD/MPC Row Store Scratch Buffer - Address" dword="1" bits="31:6" type="address" />
+    <field name="MPR Row Store Scratch Buffer - MOCS" dword="4" bits="3:0" type="uint" nonzero="true" />
+    <field name="MPR Row Store Scratch Buffer - Arbitration Priority Control" dword="4" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MPR Row Store Scratch Buffer - Address" dword="4" bits="31:6" type="address" />
+    <field name="Bitplane Read Buffer - MOCS" dword="7" bits="3:0" type="uint" nonzero="true" />
+    <field name="Bitplane Read Buffer - Arbitration Priority Control" dword="7" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Bitplane Read Buffer - Address" dword="7" bits="31:6" type="uint" />
+  </instruction>
+  <instruction name="MFX_DBK_OBJECT" bias="2" length="13" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="11" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="9" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pre Deblocking Source - MOCS" dword="1" bits="3:0" type="uint" nonzero="true" />
+    <field name="Pre Deblocking Source - Arbitration Priority Control" dword="1" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Pre Deblocking Source - Address" dword="1" bits="31:6" type="address" />
+    <field name="Deblocking Control - MOCS" dword="4" bits="3:0" type="uint" nonzero="true" />
+    <field name="Deblocking Control - Arbitration Priority Control" dword="4" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Deblocking Control - Address" dword="4" bits="31:6" type="address" />
+    <field name="Deblocking Destination - MOCS" dword="7" bits="3:0" type="uint" nonzero="true" />
+    <field name="Deblocking Destination - Arbitration Priority Control" dword="7" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Deblocking Destination - Address" dword="7" bits="31:6" type="address" />
+    <field name="Deblock Row Store - MOCS" dword="10" bits="3:0" type="uint" nonzero="true" />
+    <field name="Deblock Row Store - Arbitration Priority Control" dword="10" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Deblock Row Store - Address" dword="10" bits="31:6" type="address" />
+  </instruction>
+  <instruction name="MFX_IND_OBJ_BASE_ADDR_STATE" bias="2" length="26" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="24" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="3" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="MFX Indirect Bitstream Object - MOCS" dword="1" bits="3:0" type="uint" nonzero="true" />
+    <field name="MFX Indirect Bitstream Object - Arbitration Priority Control" dword="1" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MFX Indirect Bitstream Object - Address" dword="1" bits="31:12" type="address" />
+    <field name="MFX Indirect Bitstream Object - Access Upper Bound" dword="4" bits="31:12" type="address" />
+    <field name="MFX Indirect MV Object - MOCS" dword="6" bits="3:0" type="uint" nonzero="true" />
+    <field name="MFX Indirect MV Object - Arbitration Priority Control" dword="6" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MFX Indirect MV Object - Address" dword="6" bits="31:12" type="address" />
+    <field name="MFX Indirect MV Object - Access Upper Bound" dword="9" bits="31:12" type="address" />
+    <field name="MFD Indirect IT-COEFF Object - MOCS" dword="11" bits="3:0" type="uint" nonzero="true" />
+    <field name="MFD Indirect IT-COEFF Object - Arbitration Priority Control" dword="11" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MFD Indirect IT-COEFF Object - Address" dword="11" bits="31:12" type="address" />
+    <field name="MFD Indirect IT-COEFF Object - Access Upper Bound" dword="14" bits="31:12" type="address" />
+    <field name="MFD Indirect IT-DBLK Object - MOCS" dword="16" bits="3:0" type="uint" nonzero="true" />
+    <field name="MFD Indirect IT-DBLK Object - Arbitration Priority Control" dword="16" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MFD Indirect IT-DBLK Object - Address" dword="16" bits="31:12" type="address" />
+    <field name="MFD Indirect IT-DBLK Object - Access Upper Bound" dword="19" bits="31:12" type="address" />
+    <field name="MFC Indirect PAK-BSE Object - MOCS" dword="21" bits="3:0" type="uint" nonzero="true" />
+    <field name="MFC Indirect PAK-BSE Object - Arbitration Priority Control" dword="21" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MFC Indirect PAK-BSE Object - Address" dword="21" bits="31:12" type="address" />
+  </instruction>
+  <instruction name="MFX_JPEG_PIC_STATE" bias="2" length="3" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="1" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Input Format YUV" dword="1" bits="2:0" type="uint" />
+    <field name="Rotation" dword="1" bits="5:4" type="uint" />
+    <field name="Output Format YUV" dword="1" bits="11:8" type="uint" />
+    <field name="Average Down Sampling" dword="1" bits="16:16" type="uint" />
+    <field name="Vertical Down-Sampling Enable" dword="1" bits="17:17" type="bool" />
+    <field name="Vertical Up-Sampling Enable" dword="1" bits="20:20" type="bool" />
+    <field name="Frame Width In Blocks" dword="2" bits="12:0" type="uint" />
+    <field name="Frame Height In Blocks" dword="2" bits="28:16" type="uint" />
+  </instruction>
+  <instruction name="MFX_MPEG2_PIC_STATE" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Scan Order" dword="1" bits="6:6" type="uint">
+      <value name="MPEG_ZIGZAG_SCAN" value="0" />
+      <value name="MPEG_ALTERNATE_VERTICAL_SCAN" value="1" />
+    </field>
+    <field name="Intra VLC Format" dword="1" bits="7:7" type="uint" />
+    <field name="Quantizer Scale Type" dword="1" bits="8:8" type="uint">
+      <value name="MPEG_QSCALE_LINEAR" value="0" />
+      <value name="MPEG_QSCALE_NONLINEAR" value="1" />
+    </field>
+    <field name="Concealment MV" dword="1" bits="9:9" type="bool" />
+    <field name="Frame Prediction Frame DCT" dword="1" bits="10:10" type="uint" />
+    <field name="Top Field First" dword="1" bits="11:11" type="bool" />
+    <field name="Picture Structure" dword="1" bits="13:12" type="uint">
+      <value name="MPEG_TOP_FIELD" value="1" />
+      <value name="MPEG_BOTTOM_FIELD" value="2" />
+      <value name="MPEG_FRAME" value="3" />
+    </field>
+    <field name="Intra DC Precision" dword="1" bits="15:14" type="uint" />
+    <field name="F_code[0][0]" dword="1" bits="19:16" type="uint" />
+    <field name="F_code[0][1]" dword="1" bits="23:20" type="uint" />
+    <field name="F_code[1][0]" dword="1" bits="27:24" type="uint" />
+    <field name="F_code[1][1]" dword="1" bits="31:28" type="uint" />
+    <field name="Disable Mismatch" dword="2" bits="0:0" type="bool" />
+    <field name="Mismatch Control Disable" dword="2" bits="1:1" type="bool" />
+    <field name="Picture Coding Type" dword="2" bits="10:9" type="uint">
+      <value name="MPEG_I_PICTURE" value="1" />
+      <value name="MPEG_P_PICTURE" value="2" />
+      <value name="MPEG_B_PICTURE" value="3" />
+    </field>
+    <field name="Load Bitstream Pointer Per Slice" dword="2" bits="14:14" type="bool" />
+    <field name="P/B Slice Predicted MV Override" dword="2" bits="24:24" type="uint">
+      <value name="Predicted" value="0" />
+      <value name="ZERO" value="1" />
+    </field>
+    <field name="P/B Slice Predicted Bi-direction MV Type Override" dword="2" bits="26:25" type="uint" prefix="MPEG2_MVTO">
+      <value name="BID" value="0" />
+      <value name="RESERVED" value="1" />
+      <value name="FWD" value="2" />
+      <value name="BWD" value="3" />
+    </field>
+    <field name="P/B Slice Concealment Mode" dword="2" bits="29:28" type="uint" prefix="MPEG2_CM">
+      <value name="INTER" value="0" />
+      <value name="LEFT" value="1" />
+      <value name="ZERO" value="2" />
+      <value name="INTRA" value="3" />
+    </field>
+    <field name="I Slice Concealment Mode" dword="2" bits="31:31" type="uint" prefix="MPEG2_CM">
+      <value name="Intra Concealment" value="0" />
+      <value name="Inter Concealment" value="1" />
+    </field>
+    <field name="Frame Width In MBs" dword="3" bits="7:0" type="uint" />
+    <field name="Frame Height In MBs" dword="3" bits="23:16" type="uint" />
+    <field name="Slice Concealment Disable" dword="3" bits="31:31" type="bool" />
+    <field name="Round Intra DC" dword="4" bits="2:1" type="uint" />
+    <field name="Round Inter DC" dword="4" bits="6:4" type="uint" />
+    <field name="Round Intra AC" dword="4" bits="10:8" type="uint" />
+    <field name="Round Inter AC," dword="4" bits="14:12" type="uint" />
+    <field name="Minimum Frame Size" dword="4" bits="31:16" type="uint" />
+    <field name="Intra MB Max Bit Control" dword="5" bits="0:0" type="uint" />
+    <field name="Inter MB Max Bit Control" dword="5" bits="1:1" type="uint" />
+    <field name="Frame Bitrate Max Report" dword="5" bits="2:2" type="uint" />
+    <field name="Frame Bitrate Min Report" dword="5" bits="3:3" type="uint" />
+    <field name="MBRateControlMask" dword="5" bits="9:9" type="uint" />
+    <field name="Minimum Frame Size Units" dword="5" bits="11:10" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="16 bytes" value="1" />
+      <value name="4Kb" value="2" />
+      <value name="16Kb" value="3" />
+    </field>
+    <field name="Inter MB Force CBP to Zero Control" dword="5" bits="12:12" type="uint" />
+    <field name="Frame Size Control" dword="5" bits="16:16" type="uint" />
+    <field name="Intra MB Conformance Max Size" dword="6" bits="11:0" type="uint" />
+    <field name="Inter MB Conformance Max Size" dword="6" bits="27:16" type="uint" />
+    <field name="Slice Delta QP Max[0]" dword="8" bits="7:0" type="int" />
+    <field name="Slice Delta QP Max[1]" dword="8" bits="15:8" type="int" />
+    <field name="Slice Delta QP Max[2]" dword="8" bits="23:16" type="int" />
+    <field name="Slice Delta QP Max[3]" dword="8" bits="31:24" type="int" />
+    <field name="Slice Delta QP Min[0]" dword="9" bits="7:0" type="int" />
+    <field name="Slice Delta QP Min[1]" dword="9" bits="15:8" type="int" />
+    <field name="Slice Delta QP Min[2]" dword="9" bits="23:16" type="int" />
+    <field name="Slice Delta QP Min[3]" dword="9" bits="31:24" type="int" />
+    <field name="Frame Bitrate Min" dword="10" bits="13:0" type="uint" />
+    <field name="Frame Bitrate Min Unit Mode" dword="10" bits="14:14" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New Mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Min Unit" dword="10" bits="15:15" type="uint" />
+    <field name="Frame Bitrate Max" dword="10" bits="29:16" type="uint" />
+    <field name="Frame Bitrate Max Unit Mode" dword="10" bits="30:30" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Max Unit" dword="10" bits="31:31" type="uint" />
+    <field name="Frame Bitrate Min Delta" dword="11" bits="14:0" type="uint" />
+    <field name="Frame Bitrate Max Delta" dword="11" bits="30:16" type="uint" />
+  </instruction>
+  <instruction name="MFX_PIPE_BUF_ADDR_STATE" bias="2" length="61" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="59" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pre Deblocking Destination - MOCS" dword="1" bits="3:0" type="uint" nonzero="true" />
+    <field name="Pre Deblocking Destination - Arbitration Priority Control" dword="1" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Pre Deblocking Destination - Address" dword="1" bits="31:6" type="address" />
+    <field name="Post Deblocking Destination - MOCS" dword="4" bits="3:0" type="uint" nonzero="true" />
+    <field name="Post Deblocking Destination - Arbitration Priority Control" dword="4" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Post Deblocking Destination - Address" dword="4" bits="31:6" type="address" />
+    <field name="Original Uncompressed Picture Source - MOCS" dword="7" bits="3:0" type="uint" nonzero="true" />
+    <field name="Original Uncompressed Picture Source - Arbitration Priority Control" dword="7" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Original Uncompressed Picture Source - Address" dword="7" bits="31:6" type="address" />
+    <field name="Stream-Out Data Destination - MOCS" dword="10" bits="3:0" type="uint" nonzero="true" />
+    <field name="Stream-Out Data Destination - Arbitration Priority Control" dword="10" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Stream-Out Data Destination - Address" dword="10" bits="31:6" type="address" />
+    <field name="Intra Row Store Scratch Buffer - MOCS" dword="13" bits="3:0" type="uint" nonzero="true" />
+    <field name="Intra Row Store Scratch Buffer - Arbitration Priority Control" dword="13" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Intra Row Store Scratch Buffer - Address" dword="13" bits="31:6" type="address" />
+    <field name="Deblocking Filter Row Store Scratch - MOCS" dword="16" bits="3:0" type="uint" nonzero="true" />
+    <field name="Deblocking Filter Row Store Scratch - Arbitration Priority Control" dword="16" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Deblocking Filter Row Store Scratch - Address" dword="16" bits="31:6" type="address" />
+    <group count="16" dword="19" size="64">
+      <field name="Reference Picture - Address" dword="0" bits="63:0" type="address" />
+    </group>
+    <field name="MB Status Buffer - MOCS" dword="52" bits="3:0" type="uint" nonzero="true" />
+    <field name="MB Status Buffer - Arbitration Priority Control" dword="52" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MB Status Buffer - Address" dword="52" bits="31:6" type="address" />
+    <field name="MB ILDB Stream-Out Buffer - MOCS" dword="55" bits="3:0" type="uint" nonzero="true" />
+    <field name="MB ILDB Stream-Out Buffer - Arbitration Priority Control" dword="55" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MB ILDB Stream-Out Buffer - Address" dword="55" bits="31:6" type="address" />
+    <field name="Second MB ILDB Stream-Out Buffer - Arbitration Priority Control" dword="58" bits="5:4" type="uint">
+      <value name="Highest Priority" value="0" />
+      <value name="Second Highest Priority" value="1" />
+      <value name="Third Highest Priority" value="2" />
+      <value name="Lowest Priority" value="3" />
+    </field>
+    <field name="Second MB ILDB Stream-Out Buffer - Address" dword="58" bits="31:6" type="address" />
+  </instruction>
+  <instruction name="MFX_PIPE_MODE_SELECT" bias="2" length="5" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="3" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Standard Select" dword="1" bits="3:0" type="uint" prefix="SS">
+      <value name="MPEG2" value="0" />
+      <value name="VC1" value="1" />
+      <value name="AVC" value="2" />
+      <value name="JPEG" value="3" />
+    </field>
+    <field name="Codec Select" dword="1" bits="4:4" type="uint">
+      <value name="Decode" value="0" />
+      <value name="Encode" value="1" />
+    </field>
+    <field name="Stitch Mode" dword="1" bits="5:5" type="bool" />
+    <field name="Pre Deblocking Output Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Post Deblocking Output Enable" dword="1" bits="9:9" type="bool" />
+    <field name="Stream-Out Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Pic Error/Status Report Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Deblocker Stream-Out Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Decoder Mode Select" dword="1" bits="16:15" type="uint">
+      <value name="VLD Mode" value="0" />
+      <value name="IT Mode" value="1" />
+      <value name="Deblocker Mode" value="2" />
+      <value name="Interlayer Mode" value="3" />
+    </field>
+    <field name="Decoder Short Format Mode" dword="1" bits="17:17" type="uint">
+      <value name="Short Format Driver Interface" value="0" />
+      <value name="Long Format Driver Interface" value="1" />
+    </field>
+    <field name="Extended Stream-Out Enable" dword="1" bits="18:18" type="bool" />
+    <field name="Pic Status/Error Report ID" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MFX_VC1_DIRECTMODE_STATE" bias="2" length="7" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="5" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Direct MV Write Buffer - MOCS" dword="1" bits="3:0" type="uint" nonzero="true" />
+    <field name="Direct MV Write Buffer - Arbitration Priority Control" dword="1" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Direct MV Write Buffer - Address" dword="1" bits="31:6" type="address" />
+    <field name="Direct MV Read Buffer - MOCS" dword="4" bits="3:0" type="uint" nonzero="true" />
+    <field name="Direct MV Read Buffer - Arbitration Priority Control" dword="4" bits="5:4" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Direct MV Read Buffer - Address" dword="4" bits="31:6" type="address" />
+  </instruction>
+  <instruction name="MFX_WAIT" bias="1" length="1" engine="video">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="0" />
+    <field name="MFX Sync Control Flag" dword="0" bits="8:8" type="uint" />
+    <field name="SubOpcode" dword="0" bits="26:16" type="uint" default="0" />
+    <field name="Command Subtype" dword="0" bits="28:27" type="uint" default="1" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+  </instruction>
+  <instruction name="MI_BATCH_BUFFER_START" bias="2" length="2">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="Address Space Indicator" dword="0" bits="8:8" type="uint" prefix="ASI">
+      <value name="GGTT" value="0" />
+      <value name="PPGTT" value="1" />
+    </field>
+    <field name="Resource Streamer Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Clear Command Buffer Enable" dword="0" bits="11:11" type="bool" />
+    <field name="Non-Privileged" dword="0" bits="13:13" type="bool" />
+    <field name="Predication Enable" dword="0" bits="15:15" type="bool" />
+    <field name="Add Offset Enable" dword="0" bits="16:16" type="bool" />
+    <field name="Second Level Batch Buffer" dword="0" bits="22:22" type="uint">
+      <value name="First level batch" value="0" />
+      <value name="Second level batch" value="1" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="49" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Batch Buffer Start Address" dword="1" bits="31:2" type="address" />
+  </instruction>
+  <instruction name="MI_LOAD_REGISTER_REG" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="42" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Source Register Address" dword="1" bits="22:2" type="offset" />
+    <field name="Destination Register Address" dword="2" bits="22:2" type="offset" />
+  </instruction>
+  <instruction name="MI_LOAD_SCAN_LINES_EXCL" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="0" />
+    <field name="Display (Plane) Select" dword="0" bits="21:19" type="uint">
+      <value name="Display Plane A" value="0" />
+      <value name="Display Plane B" value="1" />
+      <value name="Display Plane C" value="4" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="19" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="End Scan Line Number" dword="1" bits="12:0" type="uint" />
+    <field name="Start Scan Line Number" dword="1" bits="28:16" type="uint" />
+  </instruction>
+  <instruction name="MI_LOAD_SCAN_LINES_INCL" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="0" />
+    <field name="Display (Plane) Select" dword="0" bits="21:19" type="uint">
+      <value name="Display Plane A" value="0" />
+      <value name="Display Plane B" value="1" />
+      <value name="Display Plane C" value="4" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="18" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="End Scan Line Number" dword="1" bits="12:0" type="uint" />
+    <field name="Start Scan Line Number" dword="1" bits="28:16" type="uint" />
+  </instruction>
+  <instruction name="MI_LOAD_URB_MEM" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="44" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="URB Address" dword="1" bits="14:2" type="uint" />
+    <field name="Memory Address" dword="2" bits="31:6" type="address" />
+  </instruction>
+  <instruction name="MI_MATH" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="0" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="26" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <group count="0" dword="1" size="32">
+      <field name="Instruction" dword="0" bits="31:0" type="MI_MATH_ALU_INSTRUCTION" />
+    </group>
+  </instruction>
+  <instruction name="MI_REPORT_PERF_COUNT" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="1" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="40" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Use Global GTT" dword="1" bits="0:0" type="bool" />
+    <field name="Core Mode Enable" dword="1" bits="4:4" type="uint" />
+    <field name="Memory Address" dword="1" bits="31:6" type="address" />
+    <field name="Report ID" dword="2" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MI_RS_CONTEXT" bias="1" length="1" engine="render">
+    <field name="Resource Streamer Save" dword="0" bits="0:0" type="uint" prefix="RS">
+      <value name="Restore" value="0" />
+      <value name="Save" value="1" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="15" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_RS_CONTROL" bias="1" length="1" engine="render">
+    <field name="Resource Streamer Control" dword="0" bits="0:0" type="uint" prefix="RS">
+      <value name="Stop" value="0" />
+      <value name="Start" value="1" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="6" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_RS_STORE_DATA_IMM" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="43" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Core Mode Enable" dword="2" bits="0:0" type="uint" />
+    <field name="Destination Address" dword="2" bits="31:2" type="address" />
+    <field name="Data DWord 0" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MI_SEMAPHORE_MBOX" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="General Register Select" dword="0" bits="13:8" type="uint" />
+    <field name="Register Select" dword="0" bits="17:16" type="uint">
+      <value name="RVSYNC" value="0" />
+      <value name="RVESYNC" value="1" />
+      <value name="RBSYNC" value="2" />
+      <value name="Use General Register Select" value="3" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="22" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Semaphore Data Dword" dword="1" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MI_SET_CONTEXT" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="24" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Restore Inhibit" dword="1" bits="0:0" type="uint" />
+    <field name="Force Restore" dword="1" bits="1:1" type="uint" />
+    <field name="Resource Streamer State Restore Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Resource Streamer State Save Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Core Mode Enable" dword="1" bits="4:4" type="bool" />
+    <field name="Reserved, Must be 1" dword="1" bits="8:8" type="uint" />
+    <field name="Logical Context Address" dword="1" bits="31:12" type="address" />
+  </instruction>
+  <instruction name="MI_SET_PREDICATE" bias="1" length="1">
+    <field name="PREDICATE ENABLE" dword="0" bits="1:0" type="uint" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="1" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_STORE_REGISTER_MEM" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Predicate Enable" dword="0" bits="21:21" type="bool" />
+    <field name="Use Global GTT" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="36" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Register Address" dword="1" bits="22:2" type="offset" />
+    <field name="Memory Address" dword="2" bits="31:2" type="address" />
+  </instruction>
+  <instruction name="MI_STORE_URB_MEM" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="45" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="URB Address" dword="1" bits="14:2" type="uint" />
+    <field name="Memory Address" dword="2" bits="31:6" type="address" />
+  </instruction>
+  <instruction name="MI_URB_ATOMIC_ALLOC" bias="1" length="1" engine="render">
+    <field name="URB Atomic Storage Size" dword="0" bits="8:0" type="uint" />
+    <field name="URB Atomic Storage Offset" dword="0" bits="19:12" type="uint" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="9" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_URB_CLEAR" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="25" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="URB Address" dword="1" bits="14:0" type="offset" />
+    <field name="URB Clear Length" dword="1" bits="29:16" type="uint" />
+  </instruction>
+  <instruction name="STATE_BASE_ADDRESS" bias="2" length="10" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="8" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="1" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="General State Base Address Modify Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Stateless Data Port Access MOCS" dword="1" bits="7:4" type="uint" nonzero="true" />
+    <field name="General State MOCS" dword="1" bits="11:8" type="uint" nonzero="true" />
+    <field name="General State Base Address" dword="1" bits="31:12" type="address" />
+    <field name="Surface State Base Address Modify Enable" dword="2" bits="0:0" type="bool" />
+    <field name="Surface State MOCS" dword="2" bits="11:8" type="uint" nonzero="true" />
+    <field name="Surface State Base Address" dword="2" bits="31:12" type="address" />
+    <field name="Dynamic State Base Address Modify Enable" dword="3" bits="0:0" type="bool" />
+    <field name="Dynamic State MOCS" dword="3" bits="11:8" type="uint" nonzero="true" />
+    <field name="Dynamic State Base Address" dword="3" bits="31:12" type="address" />
+    <field name="Indirect Object Base Address Modify Enable" dword="4" bits="0:0" type="bool" />
+    <field name="Indirect Object MOCS" dword="4" bits="11:8" type="uint" nonzero="true" />
+    <field name="Indirect Object Base Address" dword="4" bits="31:12" type="address" />
+    <field name="Instruction Base Address Modify Enable" dword="5" bits="0:0" type="bool" />
+    <field name="Instruction MOCS" dword="5" bits="11:8" type="uint" nonzero="true" />
+    <field name="Instruction Base Address" dword="5" bits="31:12" type="address" />
+    <field name="General State Access Upper Bound Modify Enable" dword="6" bits="0:0" type="bool" />
+    <field name="General State Access Upper Bound" dword="6" bits="31:12" type="address" />
+    <field name="Dynamic State Access Upper Bound Modify Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Dynamic State Access Upper Bound" dword="7" bits="31:12" type="address" />
+    <field name="Indirect Object Access Upper Bound Modify Enable" dword="8" bits="0:0" type="bool" />
+    <field name="Indirect Object Access Upper Bound" dword="8" bits="31:12" type="address" />
+    <field name="Instruction Access Upper Bound Modify Enable" dword="9" bits="0:0" type="bool" />
+    <field name="Instruction Access Upper Bound" dword="9" bits="31:12" type="address" />
+  </instruction>
+  <register name="BCS_INSTDONE" length="1" num="0x2206c">
+    <field name="Ring Enable" dword="0" bits="0:0" type="bool" />
+    <field name="Blitter IDLE" dword="0" bits="1:1" type="bool" default="1" />
+    <field name="GAB IDLE" dword="0" bits="2:2" type="bool" default="1" />
+    <field name="BCS Done" dword="0" bits="3:3" type="bool" default="1" />
+  </register>
+  <register name="CHICKEN3" length="1" num="0xe49c">
+    <field name="L3 Atomic Disable" dword="0" bits="6:6" type="uint" />
+    <field name="L3 Atomic Disable Mask" dword="0" bits="22:22" type="uint" />
+  </register>
+  <register name="GFX_ARB_ERROR_RPT" length="1" num="0x40a0">
+    <field name="TLB Page Fault Error" dword="0" bits="0:0" type="bool" />
+    <field name="Context Page Fault Error" dword="0" bits="1:1" type="bool" />
+    <field name="Invalid Page Directory entry error" dword="0" bits="2:2" type="bool" />
+    <field name="Hardware Status Page Fault Error" dword="0" bits="3:3" type="bool" />
+    <field name="TLB Page VTD Translation Error" dword="0" bits="4:4" type="bool" />
+    <field name="Context Page VTD Translation Error" dword="0" bits="5:5" type="bool" />
+    <field name="Page Directory Entry VTD Translation Error" dword="0" bits="6:6" type="bool" />
+    <field name="Hardware Status Page VTD Translation Error" dword="0" bits="7:7" type="bool" />
+    <field name="Unloaded PD Error" dword="0" bits="8:8" type="bool" />
+    <field name="Pending Page Faults" dword="0" bits="15:9" type="uint" />
+  </register>
+  <register name="INSTDONE_1" length="1" num="0x206c">
+    <field name="PRB0 Ring Enable" dword="0" bits="0:0" type="bool" />
+    <field name="VFG Done" dword="0" bits="1:1" type="bool" />
+    <field name="VS Done" dword="0" bits="2:2" type="bool" />
+    <field name="HS Done" dword="0" bits="3:3" type="bool" />
+    <field name="TE Done" dword="0" bits="4:4" type="bool" />
+    <field name="DS Done" dword="0" bits="5:5" type="bool" />
+    <field name="GS Done" dword="0" bits="6:6" type="bool" />
+    <field name="SOL Done" dword="0" bits="7:7" type="bool" />
+    <field name="CL Done" dword="0" bits="8:8" type="bool" />
+    <field name="SF Done" dword="0" bits="9:9" type="bool" />
+    <field name="TDG Done" dword="0" bits="12:12" type="bool" />
+    <field name="URBM Done" dword="0" bits="13:13" type="bool" />
+    <field name="SVG Done" dword="0" bits="14:14" type="bool" />
+    <field name="GAFS Done" dword="0" bits="15:15" type="bool" />
+    <field name="VFE Done" dword="0" bits="16:16" type="bool" />
+    <field name="TSG Done" dword="0" bits="17:17" type="bool" />
+    <field name="GAFM Done" dword="0" bits="18:18" type="bool" />
+    <field name="GAM Done" dword="0" bits="19:19" type="bool" />
+    <field name="RS Done" dword="0" bits="20:20" type="bool" />
+    <field name="CS Done" dword="0" bits="21:21" type="bool" />
+    <field name="SDE Done" dword="0" bits="22:22" type="bool" />
+    <field name="RCCFBC CS Done" dword="0" bits="23:23" type="bool" />
+  </register>
+  <register name="L3CNTLREG2" length="1" num="0xb020">
+    <field name="SLM Enable" dword="0" bits="0:0" type="bool" />
+    <field name="URB Allocation" dword="0" bits="6:1" type="uint" />
+    <field name="URB Low Bandwidth" dword="0" bits="7:7" type="bool" />
+    <field name="RO Allocation" dword="0" bits="19:14" type="uint" />
+    <field name="RO Low Bandwidth" dword="0" bits="20:20" type="bool" />
+    <field name="DC Allocation" dword="0" bits="26:21" type="uint" />
+    <field name="DC Low Bandwidth" dword="0" bits="27:27" type="bool" />
+  </register>
+  <register name="L3SQCREG1" length="1" num="0xb010">
+    <field name="L3SQ High Priority Credit Initialization" dword="0" bits="18:14" type="uint">
+      <value name="SQHPCI_DEFAULT" value="0x4" />
+    </field>
+    <field name="L3SQ General Priority Credit Initialization" dword="0" bits="23:19" type="uint">
+      <value name="SQGPCI_DEFAULT" value="0xc" />
+    </field>
+    <field name="Convert DC_UC" dword="0" bits="24:24" type="bool" />
+    <field name="Convert IS_UC" dword="0" bits="25:25" type="bool" />
+    <field name="Convert C_UC" dword="0" bits="26:26" type="bool" />
+    <field name="Convert T_UC" dword="0" bits="27:27" type="bool" />
+  </register>
+  <register name="PERFCNT1" length="2" num="0x91b8">
+    <field name="Value" dword="0" bits="43:0" type="uint" />
+    <field name="Event Selection" dword="1" bits="27:20" type="uint" />
+    <field name="Counter Clear" dword="1" bits="28:28" type="bool" />
+    <field name="Edge Detect" dword="1" bits="29:29" type="bool" />
+    <field name="Overflow Enable" dword="1" bits="30:30" type="bool" />
+    <field name="Counter Enable" dword="1" bits="31:31" type="bool" />
+  </register>
+  <register name="PERFCNT2" length="2" num="0x91c0">
+    <field name="Value" dword="0" bits="43:0" type="uint" />
+    <field name="Event Selection" dword="1" bits="27:20" type="uint" />
+    <field name="Counter Clear" dword="1" bits="28:28" type="bool" />
+    <field name="Edge Detect" dword="1" bits="29:29" type="bool" />
+    <field name="Overflow Enable" dword="1" bits="30:30" type="bool" />
+    <field name="Counter Enable" dword="1" bits="31:31" type="bool" />
+  </register>
+  <register name="ROW_INSTDONE" length="1" num="0xe164">
+    <field name="BC Done" dword="0" bits="0:0" type="bool" />
+    <field name="PSD Done" dword="0" bits="1:1" type="bool" />
+    <field name="DC Done" dword="0" bits="2:2" type="bool" />
+    <field name="DAPR Done" dword="0" bits="3:3" type="bool" />
+    <field name="TDL Done" dword="0" bits="6:6" type="bool" />
+    <field name="GW Done" dword="0" bits="8:8" type="bool" />
+    <field name="IC Done" dword="0" bits="12:12" type="bool" />
+    <field name="MA0 Done" dword="0" bits="15:15" type="bool" />
+    <field name="EU00 Done SS0" dword="0" bits="16:16" type="bool" />
+    <field name="EU01 Done SS0" dword="0" bits="17:17" type="bool" />
+    <field name="EU02 Done SS0" dword="0" bits="18:18" type="bool" />
+    <field name="EU03 Done SS0" dword="0" bits="19:19" type="bool" />
+    <field name="EU04 Done SS0" dword="0" bits="20:20" type="bool" />
+    <field name="EU10 Done SS0" dword="0" bits="21:21" type="bool" />
+    <field name="EU11 Done SS0" dword="0" bits="22:22" type="bool" />
+    <field name="EU12 Done SS0" dword="0" bits="23:23" type="bool" />
+    <field name="EU13 Done SS0" dword="0" bits="24:24" type="bool" />
+    <field name="EU14 Done SS0" dword="0" bits="25:25" type="bool" />
+    <field name="MA1 Done SS0" dword="0" bits="26:26" type="bool" />
+  </register>
+  <register name="SAMPLER_INSTDONE" length="1" num="0xe160">
+    <field name="IME Done" dword="0" bits="0:0" type="bool" />
+    <field name="PL0 Done" dword="0" bits="1:1" type="bool" />
+    <field name="SO0 Done" dword="0" bits="2:2" type="bool" />
+    <field name="DG0 Done" dword="0" bits="3:3" type="bool" />
+    <field name="FT0 Done" dword="0" bits="4:4" type="bool" />
+    <field name="DM0 Done" dword="0" bits="5:5" type="bool" />
+    <field name="SC Done" dword="0" bits="6:6" type="bool" />
+    <field name="FL0 Done" dword="0" bits="7:7" type="bool" />
+    <field name="QC Done" dword="0" bits="8:8" type="bool" />
+    <field name="SVSM Done" dword="0" bits="9:9" type="bool" />
+    <field name="SI0 Done" dword="0" bits="10:10" type="bool" />
+    <field name="MT0 Done" dword="0" bits="11:11" type="bool" />
+    <field name="AVS Done" dword="0" bits="12:12" type="bool" />
+    <field name="IEF Done" dword="0" bits="13:13" type="bool" />
+    <field name="CRE Done" dword="0" bits="14:14" type="bool" />
+    <field name="SVSM ARB3" dword="0" bits="15:15" type="bool" />
+    <field name="SVSM ARB2" dword="0" bits="16:16" type="bool" />
+    <field name="SVSM ARB1" dword="0" bits="17:17" type="bool" />
+    <field name="SVSM Adapter" dword="0" bits="18:18" type="bool" />
+    <field name="FT1 Done" dword="0" bits="19:19" type="bool" />
+    <field name="DM1 Done" dword="0" bits="20:20" type="bool" />
+    <field name="MT1 Done" dword="0" bits="21:21" type="bool" />
+  </register>
+  <register name="SCRATCH1" length="1" num="0xb038">
+    <field name="L3 Atomic Disable" dword="0" bits="27:27" type="uint" />
+  </register>
+  <register name="SC_INSTDONE" length="1" num="0x7100">
+    <field name="SVL Done" dword="0" bits="0:0" type="bool" />
+    <field name="WMFE Done" dword="0" bits="1:1" type="bool" />
+    <field name="WMBE Done" dword="0" bits="2:2" type="bool" />
+    <field name="HIZ Done" dword="0" bits="3:3" type="bool" />
+    <field name="STC Done" dword="0" bits="4:4" type="bool" />
+    <field name="IZ Done" dword="0" bits="5:5" type="bool" />
+    <field name="SBE Done" dword="0" bits="6:6" type="bool" />
+    <field name="RCZ Done" dword="0" bits="8:8" type="bool" />
+    <field name="RCC Done" dword="0" bits="9:9" type="bool" />
+    <field name="RCPBE Done" dword="0" bits="10:10" type="bool" />
+    <field name="RCPFE Done" dword="0" bits="11:11" type="bool" />
+    <field name="DAPB Done" dword="0" bits="12:12" type="bool" />
+    <field name="DAPRBE Done" dword="0" bits="13:13" type="bool" />
+    <field name="SARB Done" dword="0" bits="15:15" type="bool" />
+  </register>
+  <register name="VCS_INSTDONE" length="1" num="0x1206c">
+    <field name="Ring Enable" dword="0" bits="0:0" type="bool" />
+    <field name="USB Done" dword="0" bits="1:1" type="uint" default="1" />
+    <field name="QRC Done" dword="0" bits="2:2" type="uint" default="1" />
+    <field name="SEC Done" dword="0" bits="3:3" type="uint" default="1" />
+    <field name="MPC Done" dword="0" bits="4:4" type="uint" default="1" />
+    <field name="VFT Done" dword="0" bits="5:5" type="uint" default="1" />
+    <field name="BSP Done" dword="0" bits="6:6" type="uint" default="1" />
+    <field name="VLF Done" dword="0" bits="7:7" type="uint" default="1" />
+    <field name="VOP Done" dword="0" bits="8:8" type="uint" default="1" />
+    <field name="VMC Done" dword="0" bits="9:9" type="uint" default="1" />
+    <field name="VIP Done" dword="0" bits="10:10" type="uint" default="1" />
+    <field name="VIT Done" dword="0" bits="11:11" type="uint" default="1" />
+    <field name="VDS Done" dword="0" bits="12:12" type="uint" default="1" />
+    <field name="VMX Done" dword="0" bits="13:13" type="uint" default="1" />
+    <field name="VCP Done" dword="0" bits="14:14" type="uint" default="1" />
+    <field name="VCD Done" dword="0" bits="15:15" type="uint" default="1" />
+    <field name="VAD Done" dword="0" bits="16:16" type="uint" default="1" />
+    <field name="VMD Done" dword="0" bits="17:17" type="uint" default="1" />
+    <field name="VIS Done" dword="0" bits="18:18" type="uint" default="1" />
+    <field name="VAC Done" dword="0" bits="19:19" type="uint" default="1" />
+    <field name="VAM Done" dword="0" bits="20:20" type="uint" default="1" />
+    <field name="JPG Done" dword="0" bits="21:21" type="uint" default="1" />
+    <field name="VBP Done" dword="0" bits="22:22" type="uint" default="1" />
+    <field name="VHR Done" dword="0" bits="23:23" type="uint" default="1" />
+    <field name="VCI Done" dword="0" bits="24:24" type="uint" default="1" />
+    <field name="VCR Done" dword="0" bits="25:25" type="uint" default="1" />
+    <field name="VIN Done" dword="0" bits="26:26" type="uint" default="1" />
+    <field name="VPR Done" dword="0" bits="27:27" type="uint" default="1" />
+    <field name="VTQ Done" dword="0" bits="28:28" type="uint" default="1" />
+    <field name="Reserved" dword="0" bits="29:29" type="uint" default="1" />
+    <field name="VCS Done" dword="0" bits="30:30" type="uint" default="1" />
+    <field name="GAC Done" dword="0" bits="31:31" type="uint" default="1" />
+  </register>
+  <register name="VECS_FAULT_REG" length="1" num="0x4394">
+    <field name="Valid Bit" dword="0" bits="0:0" type="bool" />
+    <field name="Fault Type" dword="0" bits="2:1" type="uint">
+      <value name="Page Fault" value="0" />
+      <value name="Invalid PD Fault" value="1" />
+      <value name="Unloaded PD Fault" value="2" />
+      <value name="Invalid and Unloaded PD fault" value="3" />
+    </field>
+    <field name="SRCID of Fault" dword="0" bits="10:3" type="uint" />
+    <field name="GTTSEL" dword="0" bits="11:11" type="uint">
+      <value name="PPGTT" value="0" />
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Virtual Address of Fault" dword="0" bits="31:12" type="address" />
+  </register>
+  <register name="VECS_INSTDONE" length="1" num="0x1a06c">
+    <field name="Ring Enable" dword="0" bits="0:0" type="bool" />
+    <field name="VECS Done" dword="0" bits="30:30" type="uint" default="1" />
+    <field name="GAM Done" dword="0" bits="31:31" type="uint" default="1" />
+  </register>
+  <register name="VECS_RING_BUFFER_CTL" length="1" num="0x1A03c">
+    <field name="Ring Buffer Enable" dword="0" bits="0:0" type="bool" />
+    <field name="Automatic Report Head Pointer" dword="0" bits="2:1" type="uint">
+      <value name="MI_AUTOREPORT_OFF" value="0" />
+      <value name="MI_AUTOREPORT_64KB" value="1" />
+      <value name="MI_AUTOREPORT_4KB" value="2" />
+      <value name="MI_AUTOREPORT_128KB" value="3" />
+    </field>
+    <field name="Disable Register Accesses" dword="0" bits="8:8" type="bool" />
+    <field name="Semaphore Wait" dword="0" bits="10:10" type="bool" />
+    <field name="RBWait" dword="0" bits="11:11" type="bool" />
+    <field name="Buffer Length (in pages - 1)" dword="0" bits="20:12" type="uint" />
+  </register>
+</genxml>
diff --git a/lib/genxml/gen80.xml b/lib/genxml/gen80.xml
new file mode 100644
index 000000000..059c889cc
--- /dev/null
+++ b/lib/genxml/gen80.xml
@@ -0,0 +1,2993 @@
+<?xml version='1.0' encoding='utf-8'?>
+<genxml name="BDW" gen="8">
+  <import name="gen75.xml">
+    <exclude name="3DSTATE_DEPTH_STENCIL_STATE_POINTERS" />
+    <exclude name="3DSTATE_RAST_MULTISAMPLE" />
+    <exclude name="BCS_FAULT_REG" />
+    <exclude name="CHICKEN3" />
+    <exclude name="DEPTH_STENCIL_STATE" />
+    <exclude name="ERR_INT" />
+    <exclude name="GPGPU_OBJECT" />
+    <exclude name="L3CNTLREG2" />
+    <exclude name="L3CNTLREG3" />
+    <exclude name="L3SQCREG1" />
+    <exclude name="MI_FLUSH" />
+    <exclude name="MI_SEMAPHORE_MBOX" />
+    <exclude name="RCS_FAULT_REG" />
+    <exclude name="SCRATCH1" />
+    <exclude name="VCS_FAULT_REG" />
+    <exclude name="VECS_FAULT_REG" />
+  </import>
+  <enum name="3D_Vertex_Component_Control" prefix="VFCOMP">
+    <value name="NOSTORE" value="0" />
+    <value name="STORE_SRC" value="1" />
+    <value name="STORE_0" value="2" />
+    <value name="STORE_1_FP" value="3" />
+    <value name="STORE_1_INT" value="4" />
+    <value name="STORE_PID" value="7" />
+  </enum>
+  <enum name="Clear Color">
+    <value name="CC_ZERO" value="0" />
+    <value name="CC_ONE" value="1" />
+  </enum>
+  <enum name="Texture Coordinate Mode" prefix="TCM">
+    <value name="WRAP" value="0" />
+    <value name="MIRROR" value="1" />
+    <value name="CLAMP" value="2" />
+    <value name="CUBE" value="3" />
+    <value name="CLAMP_BORDER" value="4" />
+    <value name="MIRROR_ONCE" value="5" />
+    <value name="HALF_BORDER" value="6" />
+  </enum>
+  <enum name="WRAP_SHORTEST_ENABLE" prefix="WSE">
+    <value name="X" value="1" />
+    <value name="Y" value="2" />
+    <value name="XY" value="3" />
+    <value name="Z" value="4" />
+    <value name="XZ" value="5" />
+    <value name="YZ" value="6" />
+    <value name="XYZ" value="7" />
+    <value name="W" value="8" />
+    <value name="XW" value="9" />
+    <value name="YW" value="10" />
+    <value name="XYW" value="11" />
+    <value name="ZW" value="12" />
+    <value name="XZW" value="13" />
+    <value name="YZW" value="14" />
+    <value name="XYZW" value="15" />
+  </enum>
+  <struct name="3DSTATE_CONSTANT_BODY" length="10">
+    <group count="4" dword="0" size="16">
+      <field name="Read Length" dword="0" bits="15:0" type="uint" />
+    </group>
+    <group count="4" dword="2" size="64">
+      <field name="Buffer" dword="0" bits="63:5" type="address" />
+    </group>
+  </struct>
+  <struct name="BINDING_TABLE_STATE" length="1">
+    <field name="Surface State Pointer" dword="0" bits="31:6" type="offset" />
+  </struct>
+  <struct name="BLEND_STATE_ENTRY" length="2">
+    <field name="Write Disable Blue" dword="0" bits="0:0" type="bool" />
+    <field name="Write Disable Green" dword="0" bits="1:1" type="bool" />
+    <field name="Write Disable Red" dword="0" bits="2:2" type="bool" />
+    <field name="Write Disable Alpha" dword="0" bits="3:3" type="bool" />
+    <field name="Alpha Blend Function" dword="0" bits="7:5" type="3D_Color_Buffer_Blend_Function" />
+    <field name="Destination Alpha Blend Factor" dword="0" bits="12:8" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Source Alpha Blend Factor" dword="0" bits="17:13" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Color Blend Function" dword="0" bits="20:18" type="3D_Color_Buffer_Blend_Function" />
+    <field name="Destination Blend Factor" dword="0" bits="25:21" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Source Blend Factor" dword="0" bits="30:26" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Color Buffer Blend Enable" dword="0" bits="31:31" type="bool" />
+    <field name="Post-Blend Color Clamp Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Pre-Blend Color Clamp Enable" dword="1" bits="1:1" type="bool" />
+    <field name="Color Clamp Range" dword="1" bits="3:2" type="uint">
+      <value name="COLORCLAMP_UNORM" value="0" />
+      <value name="COLORCLAMP_SNORM" value="1" />
+      <value name="COLORCLAMP_RTFORMAT" value="2" />
+    </field>
+    <field name="Pre-Blend Source Only Clamp Enable" dword="1" bits="4:4" type="bool" />
+    <field name="Logic Op Function" dword="1" bits="30:27" type="3D_Logic_Op_Function" />
+    <field name="Logic Op Enable" dword="1" bits="31:31" type="bool" />
+  </struct>
+  <struct name="BLEND_STATE" length="1">
+    <field name="Y Dither Offset" dword="0" bits="20:19" type="uint" />
+    <field name="X Dither Offset" dword="0" bits="22:21" type="uint" />
+    <field name="Color Dither Enable" dword="0" bits="23:23" type="bool" />
+    <field name="Alpha Test Function" dword="0" bits="26:24" type="3D_Compare_Function" />
+    <field name="Alpha Test Enable" dword="0" bits="27:27" type="bool" />
+    <field name="Alpha To Coverage Dither Enable" dword="0" bits="28:28" type="bool" />
+    <field name="Alpha To One Enable" dword="0" bits="29:29" type="bool" />
+    <field name="Independent Alpha Blend Enable" dword="0" bits="30:30" type="bool" />
+    <field name="Alpha To Coverage Enable" dword="0" bits="31:31" type="bool" />
+    <group count="0" dword="1" size="64">
+      <field name="Entry" dword="0" bits="63:0" type="BLEND_STATE_ENTRY" />
+    </group>
+  </struct>
+  <struct name="FILTER_COEFFICIENT" length="1">
+    <field name="Filter Coefficient" dword="0" bits="7:0" type="s1.6" />
+  </struct>
+  <struct name="INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT" length="3">
+    <field name="MB Error Concealment P Slice Weight Prediction Disable" dword="0" bits="0:0" type="bool" />
+    <field name="MB Error Concealment P Slice Motion Vectors Override Disable" dword="0" bits="1:1" type="bool" />
+    <field name="MB Error Concealment B Spatial Weight Prediction Disable" dword="0" bits="3:3" type="bool" />
+    <field name="MB Error Concealment B Spatial Motion Vectors Override Disable" dword="0" bits="4:4" type="bool" />
+    <field name="MB Error Concealment B Spatial Prediction Mode" dword="0" bits="7:6" type="uint" />
+    <field name="MB Header Error Handling" dword="0" bits="8:8" type="bool" />
+    <field name="Entropy Error Handling" dword="0" bits="10:10" type="bool" />
+    <field name="MPR Error Handling" dword="0" bits="12:12" type="bool" />
+    <field name="BSD Premature Complete Error Handling" dword="0" bits="14:14" type="bool" />
+    <field name="Concealment Picture ID" dword="0" bits="21:16" type="uint" />
+    <field name="MB Error Concealment B Temporal Weight Prediction Disable" dword="0" bits="24:24" type="bool" />
+    <field name="MB Error Concealment B Temporal Motion Vectors Override Enable" dword="0" bits="25:25" type="bool" />
+    <field name="MB Error Concealment B Temporal Prediction Mode" dword="0" bits="28:27" type="uint" />
+    <field name="Intra PredMode (4x4/8x8 Luma) Error Control" dword="0" bits="29:29" type="bool" />
+    <field name="Init Current MB Number" dword="0" bits="30:30" type="bool" />
+    <field name="Concealment Method" dword="0" bits="31:31" type="uint" />
+    <field name="First MB Bit Offset" dword="1" bits="2:0" type="uint" />
+    <field name="Last Slice" dword="1" bits="3:3" type="bool" />
+    <field name="Emulation Prevention Byte Present" dword="1" bits="4:4" type="bool" />
+    <field name="Fix Prev MB Skipped" dword="1" bits="7:7" type="bool" />
+    <field name="First MB Byte Offset of Slice Data or Slice Header" dword="1" bits="31:16" type="uint" />
+    <field name="Intra Prediction Error Control" dword="2" bits="0:0" type="bool" />
+    <field name="Intra 8x8/4x4 Prediction Error Concealment Control" dword="2" bits="1:1" type="bool" />
+    <field name="B Slice Temporal Inter Concealment Mode" dword="2" bits="6:4" type="uint" />
+    <field name="B Slice Spatial Inter Concealment Mode" dword="2" bits="10:8" type="uint" />
+    <field name="B Slice Inter Direct Type Concealment Mode" dword="2" bits="13:12" type="uint" />
+    <field name="B Slice Concealment Mode" dword="2" bits="15:15" type="uint">
+      <value name="Intra Concealment" value="1" />
+      <value name="Inter Concealment" value="0" />
+    </field>
+    <field name="P Slice Inter Concealment Mode" dword="2" bits="18:16" type="uint" />
+    <field name="P Slice Concealment Mode" dword="2" bits="23:23" type="uint">
+      <value name="Intra Concealment" value="1" />
+      <value name="Inter Concealment" value="0" />
+    </field>
+    <field name="Concealment Reference Picture + Field Bit" dword="2" bits="29:24" type="uint" />
+    <field name="I Slice Concealment Mode" dword="2" bits="31:31" type="uint">
+      <value name="Intra Concealment" value="1" />
+      <value name="Inter Concealment" value="0" />
+    </field>
+  </struct>
+  <struct name="INTERFACE_DESCRIPTOR_DATA" length="8">
+    <field name="Kernel Start Pointer" dword="0" bits="47:6" type="offset" />
+    <field name="Software Exception Enable" dword="2" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="2" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="2" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="2" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="2" bits="17:17" type="uint">
+      <value name="Normal Priority" value="0" />
+      <value name="High Priority" value="1" />
+    </field>
+    <field name="Single Program Flow" dword="2" bits="18:18" type="bool" />
+    <field name="Denorm Mode" dword="2" bits="19:19" type="uint">
+      <value name="Ftz" value="0" />
+      <value name="SetByKernel" value="1" />
+    </field>
+    <field name="Sampler Count" dword="3" bits="4:2" type="uint">
+      <value name="No samplers used" value="0" />
+      <value name="Between 1 and 4 samplers used" value="1" />
+      <value name="Between 5 and 8 samplers used" value="2" />
+      <value name="Between 9 and 12 samplers used" value="3" />
+      <value name="Between 13 and 16 samplers used" value="4" />
+    </field>
+    <field name="Sampler State Pointer" dword="3" bits="31:5" type="offset" />
+    <field name="Binding Table Entry Count" dword="4" bits="4:0" type="uint" />
+    <field name="Binding Table Pointer" dword="4" bits="15:5" type="offset" />
+    <field name="Constant URB Entry Read Offset" dword="5" bits="15:0" type="uint" />
+    <field name="Constant URB Entry Read Length" dword="5" bits="31:16" type="uint" />
+    <field name="Number of Threads in GPGPU Thread Group" dword="6" bits="9:0" type="uint" />
+    <field name="Shared Local Memory Size" dword="6" bits="20:16" type="uint">
+      <value name="Encodes 0k" value="0" />
+      <value name="Encodes 4k" value="1" />
+      <value name="Encodes 8k" value="2" />
+      <value name="Encodes 16k" value="4" />
+      <value name="Encodes 32k" value="8" />
+      <value name="Encodes 64k" value="16" />
+    </field>
+    <field name="Barrier Enable" dword="6" bits="21:21" type="bool" />
+    <field name="Rounding Mode" dword="6" bits="23:22" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Cross-Thread Constant Data Read Length" dword="7" bits="7:0" type="uint" />
+  </struct>
+  <struct name="MEMORYADDRESSATTRIBUTES" length="1">
+    <field name="Age for QUADLRU" dword="0" bits="1:0" type="uint" />
+    <field name="Target Cache" dword="0" bits="4:3" type="uint">
+      <value name="eLLC Only" value="0" />
+      <value name="LLC Only" value="1" />
+      <value name="LLC/eLLC" value="2" />
+      <value name="L3, LLC, eLLC" value="3" />
+    </field>
+    <field name="Arbitration Priority Control" dword="0" bits="8:7" type="uint" />
+  </struct>
+  <struct name="MEMORY_OBJECT_CONTROL_STATE" length="1">
+    <field name="Age for QUADLRU" dword="0" bits="1:0" type="uint" />
+    <field name="Target Cache" dword="0" bits="4:3" type="uint">
+      <value name="eLLC Only (when eDRAM is present, else gets allocated in LLC)" value="0" />
+      <value name="LLC Only" value="1" />
+      <value name="LLC/eLLC Allowed" value="2" />
+      <value name="L3 + Defer to PAT for LLC/eLLC selection" value="3" />
+    </field>
+    <field name="Memory Type:LLC/eLLC Cacheability Control" dword="0" bits="6:5" type="uint">
+      <value name=" UC with Fence (if coherent cycle)" value="0" />
+      <value name="UC (Uncacheable)" value="1" />
+      <value name="WT" value="2" />
+      <value name="WB" value="3" />
+    </field>
+  </struct>
+  <struct name="MEMORY_OBJECT_CONTROL_STATE_CHV" length="1">
+    <field name="Target Cache" dword="0" bits="4:3" type="uint">
+      <value name="No Caching" value="0" />
+      <value name="No Caching 1" value="1" />
+      <value name="No Caching 2" value="2" />
+      <value name="L3 Cache Allowed" value="3" />
+    </field>
+    <field name="Memory Type" dword="0" bits="6:5" type="uint">
+      <value name="UC" value="0" />
+      <value name="WB" value="3" />
+    </field>
+  </struct>
+  <struct name="RENDER_SURFACE_STATE" length="16">
+    <field name="Cube Face Enable - Positive Z" dword="0" bits="0:0" type="bool" />
+    <field name="Cube Face Enable - Negative Z" dword="0" bits="1:1" type="bool" />
+    <field name="Cube Face Enable - Positive Y" dword="0" bits="2:2" type="bool" />
+    <field name="Cube Face Enable - Negative Y" dword="0" bits="3:3" type="bool" />
+    <field name="Cube Face Enable - Positive X" dword="0" bits="4:4" type="bool" />
+    <field name="Cube Face Enable - Negative X" dword="0" bits="5:5" type="bool" />
+    <field name="Media Boundary Pixel Mode" dword="0" bits="7:6" type="uint">
+      <value name="NORMAL_MODE" value="0" />
+      <value name="PROGRESSIVE_FRAME" value="2" />
+      <value name="INTERLACED_FRAME" value="3" />
+    </field>
+    <field name="Render Cache Read Write Mode" dword="0" bits="8:8" type="uint">
+      <value name="Write-Only Cache" value="0" />
+      <value name="Read-Write Cache" value="1" />
+    </field>
+    <field name="Sampler L2 Bypass Mode Disable" dword="0" bits="9:9" type="bool" />
+    <field name="Vertical Line Stride Offset" dword="0" bits="10:10" type="uint" />
+    <field name="Vertical Line Stride" dword="0" bits="11:11" type="uint" />
+    <field name="Tile Mode" dword="0" bits="13:12" type="uint">
+      <value name="LINEAR" value="0" />
+      <value name="WMAJOR" value="1" />
+      <value name="XMAJOR" value="2" />
+      <value name="YMAJOR" value="3" />
+    </field>
+    <field name="Surface Horizontal Alignment" dword="0" bits="15:14" type="uint">
+      <value name="HALIGN_4" value="1" />
+      <value name="HALIGN_8" value="2" />
+      <value name="HALIGN_16" value="3" />
+    </field>
+    <field name="Surface Vertical Alignment" dword="0" bits="17:16" type="uint">
+      <value name="VALIGN_4" value="1" />
+      <value name="VALIGN_8" value="2" />
+      <value name="VALIGN_16" value="3" />
+    </field>
+    <field name="Surface Format" dword="0" bits="26:18" type="uint" />
+    <field name="Surface Array" dword="0" bits="28:28" type="bool" />
+    <field name="Surface Type" dword="0" bits="31:29" type="uint">
+      <value name="SURFTYPE_1D" value="0" />
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_3D" value="2" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_BUFFER" value="4" />
+      <value name="SURFTYPE_STRBUF" value="5" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface QPitch" dword="1" bits="14:0" type="uint" />
+    <field name="Base Mip Level" dword="1" bits="23:19" type="u4.1" />
+    <field name="MOCS" dword="1" bits="30:24" type="uint" nonzero="true" />
+    <field name="Width" dword="2" bits="13:0" type="uint" />
+    <field name="Height" dword="2" bits="29:16" type="uint" />
+    <field name="Surface Pitch" dword="3" bits="17:0" type="uint" />
+    <field name="Depth" dword="3" bits="31:21" type="uint" />
+    <field name="Multisample Position Palette Index" dword="4" bits="2:0" type="uint" />
+    <field name="Number of Multisamples" dword="4" bits="5:3" type="uint">
+      <value name="MULTISAMPLECOUNT_1" value="0" />
+      <value name="MULTISAMPLECOUNT_2" value="1" />
+      <value name="MULTISAMPLECOUNT_4" value="2" />
+      <value name="MULTISAMPLECOUNT_8" value="3" />
+    </field>
+    <field name="Multisampled Surface Storage Format" dword="4" bits="6:6" type="uint">
+      <value name="MSFMT_MSS" value="0" />
+      <value name="MSFMT_DEPTH_STENCIL" value="1" />
+    </field>
+    <field name="Render Target View Extent" dword="4" bits="17:7" type="uint" />
+    <field name="Minimum Array Element" dword="4" bits="28:18" type="uint" />
+    <field name="Render Target And Sample Unorm Rotation" dword="4" bits="30:29" type="uint">
+      <value name="0DEG" value="0" />
+      <value name="90DEG" value="1" />
+      <value name="270DEG" value="3" />
+    </field>
+    <field name="MIP Count / LOD" dword="5" bits="3:0" type="uint" />
+    <field name="Surface Min LOD" dword="5" bits="7:4" type="uint" />
+    <field name="Coherency Type" dword="5" bits="14:14" type="uint">
+      <value name="GPU coherent" value="0" />
+      <value name="IA coherent" value="1" />
+    </field>
+    <field name="EWA Disable For Cube" dword="5" bits="20:20" type="bool" />
+    <field name="Y Offset" dword="5" bits="23:21" type="uint" />
+    <field name="X Offset" dword="5" bits="31:25" type="uint" />
+    <field name="Auxiliary Surface Mode" dword="6" bits="2:0" type="uint">
+      <value name="AUX_NONE" value="0" />
+      <value name="AUX_MCS" value="1" />
+      <value name="AUX_APPEND" value="2" />
+      <value name="AUX_HIZ" value="3" />
+    </field>
+    <field name="Y Offset for U or UV Plane" dword="6" bits="13:0" type="uint" />
+    <field name="Auxiliary Surface Pitch" dword="6" bits="11:3" type="uint" />
+    <field name="Auxiliary Surface QPitch" dword="6" bits="30:16" type="uint" />
+    <field name="X Offset for U or UV Plane" dword="6" bits="29:16" type="uint" />
+    <field name="Separate UV Plane Enable" dword="6" bits="31:31" type="bool" />
+    <field name="Resource Min LOD" dword="7" bits="11:0" type="u4.8" />
+    <field name="Shader Channel Select Alpha" dword="7" bits="18:16" type="Shader Channel Select" />
+    <field name="Shader Channel Select Blue" dword="7" bits="21:19" type="Shader Channel Select" />
+    <field name="Shader Channel Select Green" dword="7" bits="24:22" type="Shader Channel Select" />
+    <field name="Shader Channel Select Red" dword="7" bits="27:25" type="Shader Channel Select" />
+    <field name="Alpha Clear Color" dword="7" bits="28:28" type="Clear Color" />
+    <field name="Blue Clear Color" dword="7" bits="29:29" type="Clear Color" />
+    <field name="Green Clear Color" dword="7" bits="30:30" type="Clear Color" />
+    <field name="Red Clear Color" dword="7" bits="31:31" type="Clear Color" />
+    <field name="Surface Base Address" dword="8" bits="63:0" type="address" />
+    <field name="Auxiliary Surface Base Address" dword="10" bits="63:12" type="address" />
+    <field name="Auxiliary Table Index for Media Compressed Surface" dword="10" bits="31:21" type="uint" />
+    <field name="Y Offset for V Plane" dword="11" bits="13:0" type="uint" />
+    <field name="X Offset for V Plane" dword="11" bits="29:16" type="uint" />
+  </struct>
+  <struct name="SAMPLER_BORDER_COLOR_STATE" length="4">
+    <field name="Border Color Float Red" dword="0" bits="31:0" type="float" />
+    <field name="Border Color 32bit Red" dword="0" bits="31:0" type="uint" />
+    <field name="Border Color Float Green" dword="1" bits="31:0" type="float" />
+    <field name="Border Color 32bit Green" dword="1" bits="31:0" type="uint" />
+    <field name="Border Color Float Blue" dword="2" bits="31:0" type="float" />
+    <field name="Border Color 32bit Blue" dword="2" bits="31:0" type="uint" />
+    <field name="Border Color Float Alpha" dword="3" bits="31:0" type="float" />
+    <field name="Border Color 32bit Alpha" dword="3" bits="31:0" type="uint" />
+  </struct>
+  <struct name="SAMPLER_STATE" length="4">
+    <field name="Anisotropic Algorithm" dword="0" bits="0:0" type="uint">
+      <value name="LEGACY" value="0" />
+      <value name="EWA Approximation" value="1" />
+    </field>
+    <field name="Texture LOD Bias" dword="0" bits="13:1" type="s4.8" />
+    <field name="Min Mode Filter" dword="0" bits="16:14" type="uint" prefix="MAPFILTER">
+      <value name="NEAREST" value="0" />
+      <value name="LINEAR" value="1" />
+      <value name="ANISOTROPIC" value="2" />
+      <value name="MONO" value="6" />
+    </field>
+    <field name="Mag Mode Filter" dword="0" bits="19:17" type="uint" prefix="MAPFILTER">
+      <value name="NEAREST" value="0" />
+      <value name="LINEAR" value="1" />
+      <value name="ANISOTROPIC" value="2" />
+      <value name="MONO" value="6" />
+    </field>
+    <field name="Mip Mode Filter" dword="0" bits="21:20" type="uint" prefix="MIPFILTER">
+      <value name="NONE" value="0" />
+      <value name="NEAREST" value="1" />
+      <value name="LINEAR" value="3" />
+    </field>
+    <field name="Base Mip Level" dword="0" bits="26:22" type="u4.1" />
+    <field name="LOD PreClamp Mode" dword="0" bits="28:27" type="uint" prefix="CLAMP_MODE">
+      <value name="NONE" value="0" />
+      <value name="OGL" value="2" />
+    </field>
+    <field name="Texture Border Color Mode" dword="0" bits="29:29" type="uint">
+      <value name="DX10/OGL" value="0" />
+      <value name="DX9" value="1" />
+    </field>
+    <field name="Sampler Disable" dword="0" bits="31:31" type="bool" />
+    <field name="Cube Surface Control Mode" dword="1" bits="0:0" type="uint">
+      <value name="PROGRAMMED" value="0" />
+      <value name="OVERRIDE" value="1" />
+    </field>
+    <field name="Shadow Function" dword="1" bits="3:1" type="uint" prefix="PREFILTEROP">
+      <value name="ALWAYS" value="0" />
+      <value name="NEVER" value="1" />
+      <value name="LESS" value="2" />
+      <value name="EQUAL" value="3" />
+      <value name="LEQUAL" value="4" />
+      <value name="GREATER" value="5" />
+      <value name="NOTEQUAL" value="6" />
+      <value name="GEQUAL" value="7" />
+    </field>
+    <field name="ChromaKey Mode" dword="1" bits="4:4" type="uint">
+      <value name="KEYFILTER_KILL_ON_ANY_MATCH" value="0" />
+      <value name="KEYFILTER_REPLACE_BLACK" value="1" />
+    </field>
+    <field name="ChromaKey Index" dword="1" bits="6:5" type="uint" />
+    <field name="ChromaKey Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Max LOD" dword="1" bits="19:8" type="u4.8" />
+    <field name="Min LOD" dword="1" bits="31:20" type="u4.8" />
+    <field name="LOD Clamp Magnification Mode" dword="2" bits="0:0" type="uint">
+      <value name="MIPNONE" value="0" />
+      <value name="MIPFILTER" value="1" />
+    </field>
+    <field name="Border Color Pointer" dword="2" bits="23:6" type="offset" />
+    <field name="TCZ Address Control Mode" dword="3" bits="2:0" type="Texture Coordinate Mode" />
+    <field name="TCY Address Control Mode" dword="3" bits="5:3" type="Texture Coordinate Mode" />
+    <field name="TCX Address Control Mode" dword="3" bits="8:6" type="Texture Coordinate Mode" />
+    <field name="Non-normalized Coordinate Enable" dword="3" bits="10:10" type="bool" />
+    <field name="Trilinear Filter Quality" dword="3" bits="12:11" type="uint">
+      <value name="FULL" value="0" />
+      <value name="HIGH" value="1" />
+      <value name="MED" value="2" />
+      <value name="LOW" value="3" />
+    </field>
+    <field name="R Address Min Filter Rounding Enable" dword="3" bits="13:13" type="bool" />
+    <field name="R Address Mag Filter Rounding Enable" dword="3" bits="14:14" type="bool" />
+    <field name="V Address Min Filter Rounding Enable" dword="3" bits="15:15" type="bool" />
+    <field name="V Address Mag Filter Rounding Enable" dword="3" bits="16:16" type="bool" />
+    <field name="U Address Min Filter Rounding Enable" dword="3" bits="17:17" type="bool" />
+    <field name="U Address Mag Filter Rounding Enable" dword="3" bits="18:18" type="bool" />
+    <field name="Maximum Anisotropy" dword="3" bits="21:19" type="uint">
+      <value name="RATIO 2:1" value="0" />
+      <value name="RATIO 4:1" value="1" />
+      <value name="RATIO 6:1" value="2" />
+      <value name="RATIO 8:1" value="3" />
+      <value name="RATIO 10:1" value="4" />
+      <value name="RATIO 12:1" value="5" />
+      <value name="RATIO 14:1" value="6" />
+      <value name="RATIO 16:1" value="7" />
+    </field>
+  </struct>
+  <struct name="SAMPLER_STATE_8X8_AVS_COEFFICIENTS" length="8">
+    <field name="Table 0X Filter Coefficient[n,0]" dword="0" bits="7:0" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[n,0]" dword="0" bits="15:8" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[n,1]" dword="0" bits="23:16" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[n,1]" dword="0" bits="31:24" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[n,2]" dword="1" bits="7:0" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[n,2]" dword="1" bits="15:8" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[n,3]" dword="1" bits="23:16" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[n,3]" dword="1" bits="31:24" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[n,4]" dword="2" bits="7:0" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[n,4]" dword="2" bits="15:8" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[n,5]" dword="2" bits="23:16" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[n,5]" dword="2" bits="31:24" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[n,6]" dword="3" bits="7:0" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[n,6]" dword="3" bits="15:8" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[n,7]" dword="3" bits="23:16" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[n,7]" dword="3" bits="31:24" type="s1.6" />
+    <field name="Table 1X Filter Coefficient[n,2]" dword="4" bits="23:16" type="s1.6" />
+    <field name="Table 1X Filter Coefficient[n,3]" dword="4" bits="31:24" type="s1.6" />
+    <field name="Table 1X Filter Coefficient[n,4]" dword="5" bits="7:0" type="s1.6" />
+    <field name="Table 1X Filter Coefficient[n,5]" dword="5" bits="15:8" type="s1.6" />
+    <field name="Table 1Y Filter Coefficient[n,2]" dword="6" bits="23:16" type="s1.6" />
+    <field name="Table 1Y Filter Coefficient[n,3]" dword="6" bits="31:24" type="s1.6" />
+    <field name="Table 1Y Filter Coefficient[n,4]" dword="7" bits="7:0" type="s1.6" />
+    <field name="Table 1Y Filter Coefficient[n,5]" dword="7" bits="15:8" type="s1.6" />
+  </struct>
+  <struct name="SF_CLIP_VIEWPORT" length="16">
+    <field name="Viewport Matrix Element m00" dword="0" bits="31:0" type="float" />
+    <field name="Viewport Matrix Element m11" dword="1" bits="31:0" type="float" />
+    <field name="Viewport Matrix Element m22" dword="2" bits="31:0" type="float" />
+    <field name="Viewport Matrix Element m30" dword="3" bits="31:0" type="float" />
+    <field name="Viewport Matrix Element m31" dword="4" bits="31:0" type="float" />
+    <field name="Viewport Matrix Element m32" dword="5" bits="31:0" type="float" />
+    <field name="X Min Clip Guardband" dword="8" bits="31:0" type="float" />
+    <field name="X Max Clip Guardband" dword="9" bits="31:0" type="float" />
+    <field name="Y Min Clip Guardband" dword="10" bits="31:0" type="float" />
+    <field name="Y Max Clip Guardband" dword="11" bits="31:0" type="float" />
+    <field name="X Min ViewPort" dword="12" bits="31:0" type="float" />
+    <field name="X Max ViewPort" dword="13" bits="31:0" type="float" />
+    <field name="Y Min ViewPort" dword="14" bits="31:0" type="float" />
+    <field name="Y Max ViewPort" dword="15" bits="31:0" type="float" />
+  </struct>
+  <struct name="VERTEX_BUFFER_STATE" length="4">
+    <field name="Buffer Pitch" dword="0" bits="11:0" type="uint" />
+    <field name="Null Vertex Buffer" dword="0" bits="13:13" type="bool" />
+    <field name="Address Modify Enable" dword="0" bits="14:14" type="bool" />
+    <field name="MOCS" dword="0" bits="22:16" type="uint" nonzero="true" />
+    <field name="Vertex Buffer Index" dword="0" bits="31:26" type="uint" />
+    <field name="Buffer Starting Address" dword="1" bits="63:0" type="address" />
+    <field name="Buffer Size" dword="3" bits="31:0" type="uint" />
+  </struct>
+  <instruction name="3DSTATE_AA_LINE_PARAMETERS" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="10" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="AA Coverage Slope" dword="1" bits="7:0" type="u0.8" />
+    <field name="AA Point Coverage Slope" dword="1" bits="15:8" type="u0.8" />
+    <field name="AA Coverage Bias" dword="1" bits="23:16" type="u0.8" />
+    <field name="AA Point Coverage Bias" dword="1" bits="31:24" type="u0.8" />
+    <field name="AA Coverage EndCap Slope" dword="2" bits="7:0" type="u0.8" />
+    <field name="AA Point Coverage EndCap Slope" dword="2" bits="15:8" type="u0.8" />
+    <field name="AA Coverage EndCap Bias" dword="2" bits="23:16" type="u0.8" />
+    <field name="AA Point Coverage EndCap Bias" dword="2" bits="31:24" type="u0.8" />
+  </instruction>
+  <instruction name="3DSTATE_BINDING_TABLE_POOL_ALLOC" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="25" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="MOCS" dword="1" bits="6:0" type="uint" nonzero="true" />
+    <field name="Binding Table Pool Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Binding Table Pool Base Address" dword="1" bits="63:12" type="address" />
+    <field name="Binding Table Pool Buffer Size" dword="3" bits="31:12" type="uint">
+      <value name="No Valid Data" value="0" />
+    </field>
+  </instruction>
+  <instruction name="3DSTATE_BLEND_STATE_POINTERS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="36" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Blend State Pointer Valid" dword="1" bits="0:0" type="bool" />
+    <field name="Blend State Pointer" dword="1" bits="31:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_CC_STATE_POINTERS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="14" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Color Calc State Pointer Valid" dword="1" bits="0:0" type="bool" />
+    <field name="Color Calc State Pointer" dword="1" bits="31:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_CLEAR_PARAMS" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Depth Clear Value" dword="1" bits="31:0" type="float" />
+    <field name="Depth Clear Value Valid" dword="2" bits="0:0" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_CLIP" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="18" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="1" bits="7:0" type="uint" />
+    <field name="Statistics Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Force Clip Mode" dword="1" bits="16:16" type="bool" />
+    <field name="Force User Clip Distance Clip Test Enable Bitmask" dword="1" bits="17:17" type="bool" />
+    <field name="Early Cull Enable" dword="1" bits="18:18" type="bool" />
+    <field name="Vertex Sub Pixel Precision Select" dword="1" bits="19:19" type="uint">
+      <value name="8 Bit" value="0" />
+      <value name="4 Bit" value="1" />
+    </field>
+    <field name="Force User Clip Distance Cull Test Enable Bitmask" dword="1" bits="20:20" type="bool" />
+    <field name="Triangle Fan Provoking Vertex Select" dword="2" bits="1:0" type="uint" />
+    <field name="Line Strip/List Provoking Vertex Select" dword="2" bits="3:2" type="uint" />
+    <field name="Triangle Strip/List Provoking Vertex Select" dword="2" bits="5:4" type="uint" />
+    <field name="Non-Perspective Barycentric Enable" dword="2" bits="8:8" type="bool" />
+    <field name="Perspective Divide Disable" dword="2" bits="9:9" type="bool" />
+    <field name="Clip Mode" dword="2" bits="15:13" type="uint">
+      <value name="CLIPMODE_NORMAL" value="0" />
+      <value name="CLIPMODE_REJECT_ALL" value="3" />
+      <value name="CLIPMODE_ACCEPT_ALL" value="4" />
+    </field>
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="2" bits="23:16" type="uint" />
+    <field name="Guardband Clip Test Enable" dword="2" bits="26:26" type="bool" />
+    <field name="Viewport XY Clip Test Enable" dword="2" bits="28:28" type="bool" />
+    <field name="API Mode" dword="2" bits="30:30" type="uint">
+      <value name="APIMODE_OGL" value="0" />
+      <value name="APIMODE_D3D" value="1" />
+    </field>
+    <field name="Clip Enable" dword="2" bits="31:31" type="bool" />
+    <field name="Maximum VP Index" dword="3" bits="3:0" type="uint" />
+    <field name="Force Zero RTA Index Enable" dword="3" bits="5:5" type="bool" />
+    <field name="Maximum Point Width" dword="3" bits="16:6" type="u8.3" />
+    <field name="Minimum Point Width" dword="3" bits="27:17" type="u8.3" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_DS" bias="2" length="11" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="MOCS" dword="0" bits="14:8" type="mbz" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="26" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Body" dword="1" bits="319:0" type="3DSTATE_CONSTANT_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_GS" bias="2" length="11" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="MOCS" dword="0" bits="14:8" type="mbz" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="22" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Body" dword="1" bits="319:0" type="3DSTATE_CONSTANT_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_HS" bias="2" length="11" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="MOCS" dword="0" bits="14:8" type="mbz" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="25" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Body" dword="1" bits="319:0" type="3DSTATE_CONSTANT_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_PS" bias="2" length="11" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="MOCS" dword="0" bits="14:8" type="mbz" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="23" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Body" dword="1" bits="319:0" type="3DSTATE_CONSTANT_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_VS" bias="2" length="11" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="MOCS" dword="0" bits="14:8" type="mbz" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="21" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Body" dword="1" bits="319:0" type="3DSTATE_CONSTANT_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_DEPTH_BUFFER" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="5" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="17:0" type="uint" />
+    <field name="Surface Format" dword="1" bits="20:18" type="uint">
+      <value name="D32_FLOAT" value="1" />
+      <value name="D24_UNORM_X8_UINT" value="3" />
+      <value name="D16_UNORM" value="5" />
+    </field>
+    <field name="Hierarchical Depth Buffer Enable" dword="1" bits="22:22" type="bool" />
+    <field name="Stencil Write Enable" dword="1" bits="27:27" type="bool" />
+    <field name="Depth Write Enable" dword="1" bits="28:28" type="bool" />
+    <field name="Surface Type" dword="1" bits="31:29" type="uint">
+      <value name="SURFTYPE_1D" value="0" />
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_3D" value="2" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface Base Address" dword="2" bits="63:0" type="address" />
+    <field name="LOD" dword="4" bits="3:0" type="uint" />
+    <field name="Width" dword="4" bits="17:4" type="uint" />
+    <field name="Height" dword="4" bits="31:18" type="uint" />
+    <field name="MOCS" dword="5" bits="6:0" type="uint" nonzero="true" />
+    <field name="Minimum Array Element" dword="5" bits="20:10" type="uint" />
+    <field name="Depth" dword="5" bits="31:21" type="uint" />
+    <field name="Surface QPitch" dword="7" bits="14:0" type="uint" />
+    <field name="Render Target View Extent" dword="7" bits="31:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_DS" bias="2" length="9" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="7" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="29" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Accesses UAV" dword="3" bits="14:14" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="bool" />
+    <field name="Single Domain Point Dispatch" dword="3" bits="31:31" type="uint" />
+    <field name="Per-Thread Scratch Space" dword="4" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="4" bits="63:10" type="address" />
+    <field name="Patch URB Entry Read Offset" dword="6" bits="9:4" type="uint" />
+    <field name="Patch URB Entry Read Length" dword="6" bits="17:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="6" bits="24:20" type="uint" />
+    <field name="Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Cache Disable" dword="7" bits="1:1" type="bool" />
+    <field name="Compute W Coordinate Enable" dword="7" bits="2:2" type="bool" />
+    <field name="Dispatch Mode" dword="7" bits="3:3" type="uint" prefix="DISPATCH_MODE">
+      <value name="SIMD4X2" value="0" />
+      <value name="SIMD8_SINGLE_PATCH" value="1" />
+    </field>
+    <field name="Statistics Enable" dword="7" bits="10:10" type="bool" />
+    <field name="Maximum Number of Threads" dword="7" bits="29:21" type="uint" />
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="8" bits="7:0" type="uint" />
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="8" bits="15:8" type="uint" />
+    <field name="Vertex URB Entry Output Length" dword="8" bits="20:16" type="uint" />
+    <field name="Vertex URB Entry Output Read Offset" dword="8" bits="26:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_GATHER_CONSTANT_DS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="55" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Binding Table Block" dword="1" bits="15:12" type="uint" />
+    <field name="Constant Buffer Valid" dword="1" bits="31:16" type="uint" />
+    <field name="Constant Buffer Dx9 Generate Stall" dword="2" bits="5:5" type="bool" />
+    <field name="Gather Buffer Offset" dword="2" bits="22:6" type="offset" />
+    <group count="0" dword="3" size="32">
+      <field name="Entry_0" dword="0" bits="15:0" type="GATHER_CONSTANT_ENTRY" />
+      <field name="Entry_1" dword="0" bits="31:16" type="GATHER_CONSTANT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_GATHER_CONSTANT_GS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="53" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Binding Table Block" dword="1" bits="15:12" type="uint" />
+    <field name="Constant Buffer Valid" dword="1" bits="31:16" type="uint" />
+    <field name="Constant Buffer Dx9 Generate Stall" dword="2" bits="5:5" type="bool" />
+    <field name="Gather Buffer Offset" dword="2" bits="22:6" type="offset" />
+    <group count="0" dword="3" size="32">
+      <field name="Entry_0" dword="0" bits="15:0" type="GATHER_CONSTANT_ENTRY" />
+      <field name="Entry_1" dword="0" bits="31:16" type="GATHER_CONSTANT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_GATHER_CONSTANT_HS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="54" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Binding Table Block" dword="1" bits="15:12" type="uint" />
+    <field name="Constant Buffer Valid" dword="1" bits="31:16" type="uint" />
+    <field name="Constant Buffer Dx9 Generate Stall" dword="2" bits="5:5" type="bool" />
+    <field name="Gather Buffer Offset" dword="2" bits="22:6" type="offset" />
+    <group count="0" dword="3" size="32">
+      <field name="Entry_0" dword="0" bits="15:0" type="GATHER_CONSTANT_ENTRY" />
+      <field name="Entry_1" dword="0" bits="31:16" type="GATHER_CONSTANT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_GATHER_CONSTANT_PS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="56" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Binding Table Block" dword="1" bits="15:12" type="uint" />
+    <field name="Constant Buffer Valid" dword="1" bits="31:16" type="uint" />
+    <field name="Constant Buffer Dx9 Enable" dword="2" bits="4:4" type="bool" />
+    <field name="Constant Buffer Dx9 Generate Stall" dword="2" bits="5:5" type="bool" />
+    <field name="Gather Buffer Offset" dword="2" bits="22:6" type="offset" />
+    <group count="0" dword="3" size="32">
+      <field name="Entry_0" dword="0" bits="15:0" type="GATHER_CONSTANT_ENTRY" />
+      <field name="Entry_1" dword="0" bits="31:16" type="GATHER_CONSTANT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_GATHER_CONSTANT_VS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="52" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Buffer Binding Table Block" dword="1" bits="15:12" type="uint" />
+    <field name="Constant Buffer Valid" dword="1" bits="31:16" type="uint" />
+    <field name="Constant Buffer Dx9 Enable" dword="2" bits="4:4" type="bool" />
+    <field name="Constant Buffer Dx9 Generate Stall" dword="2" bits="5:5" type="bool" />
+    <field name="Gather Buffer Offset" dword="2" bits="22:6" type="offset" />
+    <group count="0" dword="3" size="32">
+      <field name="Entry_0" dword="0" bits="15:0" type="GATHER_CONSTANT_ENTRY" />
+      <field name="Entry_1" dword="0" bits="31:16" type="GATHER_CONSTANT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_GATHER_POOL_ALLOC" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="26" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="MOCS" dword="1" bits="6:0" type="uint" nonzero="true" />
+    <field name="Gather Pool Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Gather Pool Base Address" dword="1" bits="63:12" type="address" />
+    <field name="Gather Pool Buffer Size" dword="3" bits="31:12" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_GS" bias="2" length="10" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="8" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="17" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Expected Vertex Count" dword="3" bits="5:0" type="uint" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="3" bits="11:11" type="bool" />
+    <field name="Accesses UAV" dword="3" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="bool" />
+    <field name="Single Program Flow" dword="3" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="4" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="4" bits="63:10" type="address" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="6" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="6" bits="9:4" type="uint" />
+    <field name="Include Vertex Handles" dword="6" bits="10:10" type="bool" />
+    <field name="Vertex URB Entry Read Length" dword="6" bits="16:11" type="uint" />
+    <field name="Output Topology" dword="6" bits="22:17" type="3D_Prim_Topo_Type" />
+    <field name="Output Vertex Size" dword="6" bits="28:23" type="uint" />
+    <field name="Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Discard Adjacency" dword="7" bits="1:1" type="bool" />
+    <field name="Reorder Mode" dword="7" bits="2:2" type="uint">
+      <value name="LEADING" value="0" />
+      <value name="TRAILING" value="1" />
+    </field>
+    <field name="Hint" dword="7" bits="3:3" type="uint" />
+    <field name="Include Primitive ID" dword="7" bits="4:4" type="bool" />
+    <field name="Invocations Increment Value" dword="7" bits="9:5" type="uint" />
+    <field name="Statistics Enable" dword="7" bits="10:10" type="bool" />
+    <field name="Dispatch Mode" dword="7" bits="12:11" type="uint" prefix="DISPATCH_MODE">
+      <value name="Dual Instance" value="1" />
+      <value name="Dual Object" value="2" />
+      <value name="SIMD8" value="3" />
+    </field>
+    <field name="Default Stream Id" dword="7" bits="14:13" type="uint" />
+    <field name="Instance Control" dword="7" bits="19:15" type="uint" />
+    <field name="Control Data Header Size" dword="7" bits="23:20" type="uint" />
+    <field name="Maximum Number of Threads" dword="7" bits="31:24" type="uint" />
+    <field name="Static Output Vertex Count" dword="8" bits="26:16" type="uint" />
+    <field name="Static Output" dword="8" bits="30:30" type="bool" />
+    <field name="Control Data Format" dword="8" bits="31:31" type="uint">
+      <value name="CUT" value="0" />
+      <value name="SID" value="1" />
+    </field>
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="9" bits="7:0" type="uint" />
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="9" bits="15:8" type="uint" />
+    <field name="Vertex URB Entry Output Length" dword="9" bits="20:16" type="uint" />
+    <field name="Vertex URB Entry Output Read Offset" dword="9" bits="26:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_HIER_DEPTH_BUFFER" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="7" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="MOCS" dword="1" bits="31:25" type="uint" nonzero="true" />
+    <field name="Surface Base Address" dword="2" bits="63:0" type="address" />
+    <field name="Surface QPitch" dword="4" bits="14:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_HS" bias="2" length="9" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="7" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="27" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Software Exception Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="1" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="1" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Instance Count" dword="2" bits="3:0" type="uint" />
+    <field name="Maximum Number of Threads" dword="2" bits="16:8" type="uint" />
+    <field name="Statistics Enable" dword="2" bits="29:29" type="bool" />
+    <field name="Enable" dword="2" bits="31:31" type="bool" />
+    <field name="Kernel Start Pointer" dword="3" bits="63:6" type="offset" />
+    <field name="Per-Thread Scratch Space" dword="5" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="5" bits="63:10" type="address" />
+    <field name="Vertex URB Entry Read Offset" dword="7" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="7" bits="16:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="7" bits="23:19" type="uint" />
+    <field name="Include Vertex Handles" dword="7" bits="24:24" type="bool" />
+    <field name="Accesses UAV" dword="7" bits="25:25" type="bool" />
+    <field name="Vector Mask Enable" dword="7" bits="26:26" type="bool" />
+    <field name="Single Program Flow" dword="7" bits="27:27" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_INDEX_BUFFER" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="10" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="MOCS" dword="1" bits="6:0" type="uint" nonzero="true" />
+    <field name="Index Format" dword="1" bits="9:8" type="uint" prefix="INDEX">
+      <value name="BYTE" value="0" />
+      <value name="WORD" value="1" />
+      <value name="DWORD" value="2" />
+    </field>
+    <field name="Buffer Starting Address" dword="2" bits="63:0" type="address" />
+    <field name="Buffer Size" dword="4" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_MULTISAMPLE" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="13" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Number of Multisamples" dword="1" bits="3:1" type="uint" />
+    <field name="Pixel Location" dword="1" bits="4:4" type="uint">
+      <value name="CENTER" value="0" />
+      <value name="UL_CORNER" value="1" />
+    </field>
+    <field name="Pixel Position Offset Enable" dword="1" bits="5:5" type="bool" default="0" />
+  </instruction>
+  <instruction name="3DSTATE_PS" bias="2" length="12" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="10" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="32" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer 0" dword="1" bits="63:6" type="offset" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="3" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Rounding Mode" dword="3" bits="15:14" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Single Precision Denormal Mode" dword="3" bits="26:26" type="uint">
+      <value name="Flushed to Zero" value="0" />
+      <value name="Retained" value="1" />
+    </field>
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="bool" />
+    <field name="Single Program Flow" dword="3" bits="31:31" type="bool" />
+    <field name="Per Thread Scratch Space" dword="4" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="4" bits="63:10" type="address" />
+    <field name="8 Pixel Dispatch Enable" dword="6" bits="0:0" type="bool" />
+    <field name="16 Pixel Dispatch Enable" dword="6" bits="1:1" type="bool" />
+    <field name="32 Pixel Dispatch Enable" dword="6" bits="2:2" type="bool" />
+    <field name="Position XY Offset Select" dword="6" bits="4:3" type="uint">
+      <value name="POSOFFSET_NONE" value="0" />
+      <value name="POSOFFSET_CENTROID" value="2" />
+      <value name="POSOFFSET_SAMPLE" value="3" />
+    </field>
+    <field name="Render Target Resolve Enable" dword="6" bits="6:6" type="bool" />
+    <field name="Render Target Fast Clear Enable" dword="6" bits="8:8" type="bool" />
+    <field name="Push Constant Enable" dword="6" bits="11:11" type="bool" />
+    <field name="Maximum Number of Threads Per PSD" dword="6" bits="31:23" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 2" dword="7" bits="6:0" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 1" dword="7" bits="14:8" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 0" dword="7" bits="22:16" type="uint" />
+    <field name="Kernel Start Pointer 1" dword="8" bits="63:6" type="offset" />
+    <field name="Kernel Start Pointer 2" dword="10" bits="63:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_PS_BLEND" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="77" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Independent Alpha Blend Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Alpha Test Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Destination Blend Factor" dword="1" bits="13:9" type="uint" />
+    <field name="Source Blend Factor" dword="1" bits="18:14" type="uint" />
+    <field name="Destination Alpha Blend Factor" dword="1" bits="23:19" type="uint" />
+    <field name="Source Alpha Blend Factor" dword="1" bits="28:24" type="uint" />
+    <field name="Color Buffer Blend Enable" dword="1" bits="29:29" type="bool" />
+    <field name="Has Writeable RT" dword="1" bits="30:30" type="bool" />
+    <field name="Alpha To Coverage Enable" dword="1" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_PS_EXTRA" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="79" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pixel Shader Uses Input Coverage Mask" dword="1" bits="1:1" type="bool" />
+    <field name="Pixel Shader Has UAV" dword="1" bits="2:2" type="bool" />
+    <field name="Pixel Shader Is Per Sample" dword="1" bits="6:6" type="bool" />
+    <field name="Pixel Shader Disables Alpha To Coverage" dword="1" bits="7:7" type="bool" />
+    <field name="Attribute Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Pixel Shader Uses Source W" dword="1" bits="23:23" type="bool" />
+    <field name="Pixel Shader Uses Source Depth" dword="1" bits="24:24" type="bool" />
+    <field name="Force Computed Depth" dword="1" bits="25:25" type="bool" />
+    <field name="Pixel Shader Computed Depth Mode" dword="1" bits="27:26" type="uint">
+      <value name="PSCDEPTH_OFF" value="0" />
+      <value name="PSCDEPTH_ON" value="1" />
+      <value name="PSCDEPTH_ON_GE" value="2" />
+      <value name="PSCDEPTH_ON_LE" value="3" />
+    </field>
+    <field name="Pixel Shader Kills Pixel" dword="1" bits="28:28" type="bool" />
+    <field name="oMask Present to Render Target" dword="1" bits="29:29" type="bool" />
+    <field name="Pixel Shader Does not write to RT" dword="1" bits="30:30" type="mbz" />
+    <field name="Pixel Shader Valid" dword="1" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_RASTER" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="80" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Viewport Z Clip Test Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Scissor Rectangle Enable" dword="1" bits="1:1" type="bool" />
+    <field name="Antialiasing Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Back Face Fill Mode" dword="1" bits="4:3" type="uint" prefix="FILL_MODE">
+      <value name="SOLID" value="0" />
+      <value name="WIREFRAME" value="1" />
+      <value name="POINT" value="2" />
+    </field>
+    <field name="Front Face Fill Mode" dword="1" bits="6:5" type="uint" prefix="FILL_MODE">
+      <value name="SOLID" value="0" />
+      <value name="WIREFRAME" value="1" />
+      <value name="POINT" value="2" />
+    </field>
+    <field name="Global Depth Offset Enable Point" dword="1" bits="7:7" type="bool" />
+    <field name="Global Depth Offset Enable Wireframe" dword="1" bits="8:8" type="bool" />
+    <field name="Global Depth Offset Enable Solid" dword="1" bits="9:9" type="bool" />
+    <field name="DX Multisample Rasterization Mode" dword="1" bits="11:10" type="uint">
+      <value name="MSRASTMODE_ OFF_PIXEL" value="0" />
+      <value name="MSRASTMODE_ OFF_PATTERN" value="1" />
+      <value name="MSRASTMODE_ ON_PIXEL" value="2" />
+      <value name="MSRASTMODE_ ON_PATTERN" value="3" />
+    </field>
+    <field name="DX Multisample Rasterization Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Smooth Point Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Force Multisampling" dword="1" bits="14:14" type="uint" />
+    <field name="Cull Mode" dword="1" bits="17:16" type="uint" prefix="CULLMODE">
+      <value name="BOTH" value="0" />
+      <value name="NONE" value="1" />
+      <value name="FRONT" value="2" />
+      <value name="BACK" value="3" />
+    </field>
+    <field name="Forced Sample Count" dword="1" bits="20:18" type="uint" prefix="FSC">
+      <value name="NUMRASTSAMPLES_0" value="0" />
+      <value name="NUMRASTSAMPLES_1" value="1" />
+      <value name="NUMRASTSAMPLES_2" value="2" />
+      <value name="NUMRASTSAMPLES_4" value="3" />
+      <value name="NUMRASTSAMPLES_8" value="4" />
+      <value name="NUMRASTSAMPLES_16" value="5" />
+    </field>
+    <field name="Front Winding" dword="1" bits="21:21" type="uint">
+      <value name="Clockwise" value="0" />
+      <value name="Counter Clockwise" value="1" />
+    </field>
+    <field name="API Mode" dword="1" bits="23:22" type="uint">
+      <value name="DX9/OGL" value="0" />
+      <value name="DX10.0" value="1" />
+      <value name="DX10.1+" value="2" />
+    </field>
+    <field name="Global Depth Offset Constant" dword="2" bits="31:0" type="float" />
+    <field name="Global Depth Offset Scale" dword="3" bits="31:0" type="float" />
+    <field name="Global Depth Offset Clamp" dword="4" bits="31:0" type="float" />
+  </instruction>
+  <instruction name="3DSTATE_SAMPLE_MASK" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="24" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Sample Mask" dword="1" bits="15:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_SAMPLE_PATTERN" bias="2" length="9" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="7" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="28" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="8x Sample4 Y Offset" dword="5" bits="3:0" type="u0.4" />
+    <field name="8x Sample4 X Offset" dword="5" bits="7:4" type="u0.4" />
+    <field name="8x Sample5 Y Offset" dword="5" bits="11:8" type="u0.4" />
+    <field name="8x Sample5 X Offset" dword="5" bits="15:12" type="u0.4" />
+    <field name="8x Sample6 Y Offset" dword="5" bits="19:16" type="u0.4" />
+    <field name="8x Sample6 X Offset" dword="5" bits="23:20" type="u0.4" />
+    <field name="8x Sample7 Y Offset" dword="5" bits="27:24" type="u0.4" />
+    <field name="8x Sample7 X Offset" dword="5" bits="31:28" type="u0.4" />
+    <field name="8x Sample0 Y Offset" dword="6" bits="3:0" type="u0.4" />
+    <field name="8x Sample0 X Offset" dword="6" bits="7:4" type="u0.4" />
+    <field name="8x Sample1 Y Offset" dword="6" bits="11:8" type="u0.4" />
+    <field name="8x Sample1 X Offset" dword="6" bits="15:12" type="u0.4" />
+    <field name="8x Sample2 Y Offset" dword="6" bits="19:16" type="u0.4" />
+    <field name="8x Sample2 X Offset" dword="6" bits="23:20" type="u0.4" />
+    <field name="8x Sample3 Y Offset" dword="6" bits="27:24" type="u0.4" />
+    <field name="8x Sample3 X Offset" dword="6" bits="31:28" type="u0.4" />
+    <field name="4x Sample0 Y Offset" dword="7" bits="3:0" type="u0.4" />
+    <field name="4x Sample0 X Offset" dword="7" bits="7:4" type="u0.4" />
+    <field name="4x Sample1 Y Offset" dword="7" bits="11:8" type="u0.4" />
+    <field name="4x Sample1 X Offset" dword="7" bits="15:12" type="u0.4" />
+    <field name="4x Sample2 Y Offset" dword="7" bits="19:16" type="u0.4" />
+    <field name="4x Sample2 X Offset" dword="7" bits="23:20" type="u0.4" />
+    <field name="4x Sample3 Y Offset" dword="7" bits="27:24" type="u0.4" />
+    <field name="4x Sample3 X Offset" dword="7" bits="31:28" type="u0.4" />
+    <field name="2x Sample0 Y Offset" dword="8" bits="3:0" type="u0.4" />
+    <field name="2x Sample0 X Offset" dword="8" bits="7:4" type="u0.4" />
+    <field name="2x Sample1 Y Offset" dword="8" bits="11:8" type="u0.4" />
+    <field name="2x Sample1 X Offset" dword="8" bits="15:12" type="u0.4" />
+    <field name="1x Sample0 Y Offset" dword="8" bits="19:16" type="u0.4" />
+    <field name="1x Sample0 X Offset" dword="8" bits="23:20" type="u0.4" />
+  </instruction>
+  <instruction name="3DSTATE_SBE" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="31" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Primitive ID Override Attribute Select" dword="1" bits="4:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="1" bits="10:5" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="1" bits="15:11" type="uint" />
+    <field name="Primitive ID Override Component X" dword="1" bits="16:16" type="bool" />
+    <field name="Primitive ID Override Component Y" dword="1" bits="17:17" type="bool" />
+    <field name="Primitive ID Override Component Z" dword="1" bits="18:18" type="bool" />
+    <field name="Primitive ID Override Component W" dword="1" bits="19:19" type="bool" />
+    <field name="Point Sprite Texture Coordinate Origin" dword="1" bits="20:20" type="uint">
+      <value name="UPPERLEFT" value="0" />
+      <value name="LOWERLEFT" value="1" />
+    </field>
+    <field name="Attribute Swizzle Enable" dword="1" bits="21:21" type="bool" />
+    <field name="Number of SF Output Attributes" dword="1" bits="27:22" type="uint" />
+    <field name="Force Vertex URB Entry Read Offset" dword="1" bits="28:28" type="bool" />
+    <field name="Force Vertex URB Entry Read Length" dword="1" bits="29:29" type="bool" />
+    <field name="Point Sprite Texture Coordinate Enable" dword="2" bits="31:0" type="uint" />
+    <field name="Constant Interpolation Enable" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_SBE_SWIZ" bias="2" length="11" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="81" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="16" dword="1" size="16">
+      <field name="Attribute" dword="0" bits="15:0" type="SF_OUTPUT_ATTRIBUTE_DETAIL" />
+    </group>
+    <group count="16" dword="9" size="4">
+      <field name="Attribute Wrap Shortest Enables" dword="0" bits="3:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_SF" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="19" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Viewport Transform Enable" dword="1" bits="1:1" type="bool" />
+    <field name="Statistics Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Legacy Global Depth Bias Enable" dword="1" bits="11:11" type="bool" />
+    <field name="CHV Line Width" dword="1" bits="29:12" type="u11.7" />
+    <field name="Line End Cap Antialiasing Region Width" dword="2" bits="17:16" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Line Width" dword="2" bits="27:18" type="u3.7" />
+    <field name="Point Width" dword="3" bits="10:0" type="u8.3" />
+    <field name="Point Width Source" dword="3" bits="11:11" type="uint">
+      <value name="Vertex" value="0" />
+      <value name="State" value="1" />
+    </field>
+    <field name="Vertex Sub Pixel Precision Select" dword="3" bits="12:12" type="uint">
+      <value name="8 Bit" value="0" />
+      <value name="4 Bit" value="1" />
+    </field>
+    <field name="Smooth Point Enable" dword="3" bits="13:13" type="bool" />
+    <field name="AA Line Distance Mode" dword="3" bits="14:14" type="uint">
+      <value name="AALINEDISTANCE_TRUE" value="1" />
+    </field>
+    <field name="Triangle Fan Provoking Vertex Select" dword="3" bits="26:25" type="uint" />
+    <field name="Line Strip/List Provoking Vertex Select" dword="3" bits="28:27" type="uint" />
+    <field name="Triangle Strip/List Provoking Vertex Select" dword="3" bits="30:29" type="uint" />
+    <field name="Last Pixel Enable" dword="3" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_SO_BUFFER" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="24" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Stream Output Buffer Offset Address Enable" dword="1" bits="20:20" type="bool" />
+    <field name="Stream Offset Write Enable" dword="1" bits="21:21" type="bool" />
+    <field name="MOCS" dword="1" bits="28:22" type="uint" nonzero="true" />
+    <field name="SO Buffer Index" dword="1" bits="30:29" type="uint" />
+    <field name="SO Buffer Enable" dword="1" bits="31:31" type="bool" />
+    <field name="Surface Base Address" dword="2" bits="47:2" type="address" />
+    <field name="Surface Size" dword="4" bits="29:0" type="uint" />
+    <field name="Stream Output Buffer Offset Address" dword="5" bits="47:2" type="address" />
+    <field name="Stream Offset" dword="7" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_STENCIL_BUFFER" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="6" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="MOCS" dword="1" bits="28:22" type="uint" nonzero="true" />
+    <field name="Stencil Buffer Enable" dword="1" bits="31:31" type="bool" />
+    <field name="Surface Base Address" dword="2" bits="63:0" type="address" />
+    <field name="Surface QPitch" dword="4" bits="14:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_STREAMOUT" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="30" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Force Rendering" dword="1" bits="24:23" type="uint">
+      <value name="Resreved" value="1" />
+      <value name="Force_Off" value="2" />
+      <value name="Force_on" value="3" />
+    </field>
+    <field name="SO Statistics Enable" dword="1" bits="25:25" type="bool" />
+    <field name="Reorder Mode" dword="1" bits="26:26" type="uint">
+      <value name="LEADING" value="0" />
+      <value name="TRAILING" value="1" />
+    </field>
+    <field name="Render Stream Select" dword="1" bits="28:27" type="uint" />
+    <field name="Rendering Disable" dword="1" bits="30:30" type="bool" />
+    <field name="SO Function Enable" dword="1" bits="31:31" type="bool" />
+    <field name="Stream 0 Vertex Read Length" dword="2" bits="4:0" type="uint" />
+    <field name="Stream 0 Vertex Read Offset" dword="2" bits="5:5" type="uint" />
+    <field name="Stream 1 Vertex Read Length" dword="2" bits="12:8" type="uint" />
+    <field name="Stream 1 Vertex Read Offset" dword="2" bits="13:13" type="uint" />
+    <field name="Stream 2 Vertex Read Length" dword="2" bits="20:16" type="uint" />
+    <field name="Stream 2 Vertex Read Offset" dword="2" bits="21:21" type="uint" />
+    <field name="Stream 3 Vertex Read Length" dword="2" bits="28:24" type="uint" />
+    <field name="Stream 3 Vertex Read Offset" dword="2" bits="29:29" type="uint" />
+    <field name="Buffer 0 Surface Pitch" dword="3" bits="11:0" type="uint" />
+    <field name="Buffer 1 Surface Pitch" dword="3" bits="27:16" type="uint" />
+    <field name="Buffer 2 Surface Pitch" dword="4" bits="11:0" type="uint" />
+    <field name="Buffer 3 Surface Pitch" dword="4" bits="27:16" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_URB_DS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="50" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="DS Number of URB Entries" dword="1" bits="15:0" type="uint" />
+    <field name="DS URB Entry Allocation Size" dword="1" bits="24:16" type="uint" />
+    <field name="DS URB Starting Address" dword="1" bits="31:25" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_URB_GS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="51" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="GS Number of URB Entries" dword="1" bits="15:0" type="uint" />
+    <field name="GS URB Entry Allocation Size" dword="1" bits="24:16" type="uint" />
+    <field name="GS URB Starting Address" dword="1" bits="31:25" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_URB_HS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="49" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="HS Number of URB Entries" dword="1" bits="15:0" type="uint" />
+    <field name="HS URB Entry Allocation Size" dword="1" bits="24:16" type="uint" />
+    <field name="HS URB Starting Address" dword="1" bits="31:25" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_URB_VS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="48" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="VS Number of URB Entries" dword="1" bits="15:0" type="uint" />
+    <field name="VS URB Entry Allocation Size" dword="1" bits="24:16" type="uint" />
+    <field name="VS URB Starting Address" dword="1" bits="31:25" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_VF_INSTANCING" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="73" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Vertex Element Index" dword="1" bits="5:0" type="uint" />
+    <field name="Instancing Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Instance Data Step Rate" dword="2" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_VF_SGVS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="74" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="VertexID Element Offset" dword="1" bits="5:0" type="uint" />
+    <field name="VertexID Component Number" dword="1" bits="14:13" type="uint">
+      <value name="COMP_0" value="0" />
+      <value name="COMP_1" value="1" />
+      <value name="COMP_2" value="2" />
+      <value name="COMP_3" value="3" />
+    </field>
+    <field name="VertexID Enable" dword="1" bits="15:15" type="bool" />
+    <field name="InstanceID Element Offset" dword="1" bits="21:16" type="uint" />
+    <field name="InstanceID Component Number" dword="1" bits="30:29" type="uint">
+      <value name="COMP_0" value="0" />
+      <value name="COMP_1" value="1" />
+      <value name="COMP_2" value="2" />
+      <value name="COMP_3" value="3" />
+    </field>
+    <field name="InstanceID Enable" dword="1" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_VF_TOPOLOGY" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="75" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Primitive Topology Type" dword="1" bits="5:0" type="3D_Prim_Topo_Type" />
+  </instruction>
+  <instruction name="3DSTATE_VS" bias="2" length="9" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="7" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="16" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Accesses UAV" dword="3" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="bool" />
+    <field name="Single Vertex Dispatch" dword="3" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="4" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="4" bits="63:10" type="address" />
+    <field name="Vertex URB Entry Read Offset" dword="6" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="6" bits="16:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="6" bits="24:20" type="uint" />
+    <field name="Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Vertex Cache Disable" dword="7" bits="1:1" type="bool" />
+    <field name="SIMD8 Dispatch Enable" dword="7" bits="2:2" type="bool" />
+    <field name="Statistics Enable" dword="7" bits="10:10" type="bool" />
+    <field name="Maximum Number of Threads" dword="7" bits="31:23" type="uint" />
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="8" bits="7:0" type="uint" />
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="8" bits="15:8" type="uint" />
+    <field name="Vertex URB Entry Output Length" dword="8" bits="20:16" type="uint" />
+    <field name="Vertex URB Entry Output Read Offset" dword="8" bits="26:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_WM" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="20" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Force Kill Pixel Enable" dword="1" bits="1:0" type="uint">
+      <value name="ForceOff" value="1" />
+      <value name="ForceON" value="2" />
+    </field>
+    <field name="Point Rasterization Rule" dword="1" bits="2:2" type="uint">
+      <value name="RASTRULE_UPPER_LEFT" value="0" />
+      <value name="RASTRULE_UPPER_RIGHT" value="1" />
+    </field>
+    <field name="Line Stipple Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Polygon Stipple Enable" dword="1" bits="4:4" type="bool" />
+    <field name="Line Antialiasing Region Width" dword="1" bits="7:6" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Line End Cap Antialiasing Region Width" dword="1" bits="9:8" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Barycentric Interpolation Mode" dword="1" bits="16:11" type="uint">
+      <value name="BIM_PERSPECTIVE_PIXEL" value="1" />
+      <value name="BIM_PERSPECTIVE_CENTROID" value="2" />
+      <value name="BIM_PERSPECTIVE_SAMPLE" value="4" />
+      <value name="BIM_LINEAR_PIXEL" value="8" />
+      <value name="BIM_LINEAR_CENTROID" value="16" />
+      <value name="BIM_LINEAR_SAMPLE" value="32" />
+    </field>
+    <field name="Position ZW Interpolation Mode" dword="1" bits="18:17" type="uint">
+      <value name="INTERP_PIXEL" value="0" />
+      <value name="INTERP_CENTROID" value="2" />
+      <value name="INTERP_SAMPLE" value="3" />
+    </field>
+    <field name="Force Thread Dispatch Enable" dword="1" bits="20:19" type="uint">
+      <value name="ForceOff" value="1" />
+      <value name="ForceON" value="2" />
+    </field>
+    <field name="Early Depth/Stencil Control" dword="1" bits="22:21" type="uint">
+      <value name="EDSC_NORMAL" value="0" />
+      <value name="EDSC_PSEXEC" value="1" />
+      <value name="EDSC_PREPS" value="2" />
+    </field>
+    <field name="Legacy Diamond Line Rasterization" dword="1" bits="26:26" type="bool" />
+    <field name="Legacy Hierarchical Depth Buffer Resolve Enable" dword="1" bits="27:27" type="bool" />
+    <field name="Legacy Depth Buffer Resolve Enable" dword="1" bits="28:28" type="bool" />
+    <field name="Legacy Depth Buffer Clear Enable" dword="1" bits="30:30" type="bool" />
+    <field name="Statistics Enable" dword="1" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_WM_CHROMAKEY" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="76" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="ChromaKey Kill Enable" dword="1" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_WM_DEPTH_STENCIL" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="78" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Depth Buffer Write Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Depth Test Enable" dword="1" bits="1:1" type="bool" />
+    <field name="Stencil Buffer Write Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Stencil Test Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Double Sided Stencil Enable" dword="1" bits="4:4" type="bool" />
+    <field name="Depth Test Function" dword="1" bits="7:5" type="3D_Compare_Function" />
+    <field name="Stencil Test Function" dword="1" bits="10:8" type="3D_Compare_Function" />
+    <field name="Backface Stencil Pass Depth Pass Op" dword="1" bits="13:11" type="3D_Stencil_Operation" />
+    <field name="Backface Stencil Pass Depth Fail Op" dword="1" bits="16:14" type="3D_Stencil_Operation" />
+    <field name="Backface Stencil Fail Op" dword="1" bits="19:17" type="3D_Stencil_Operation" />
+    <field name="Backface Stencil Test Function" dword="1" bits="22:20" type="3D_Compare_Function" />
+    <field name="Stencil Pass Depth Pass Op" dword="1" bits="25:23" type="3D_Stencil_Operation" />
+    <field name="Stencil Pass Depth Fail Op" dword="1" bits="28:26" type="3D_Stencil_Operation" />
+    <field name="Stencil Fail Op" dword="1" bits="31:29" type="3D_Stencil_Operation" />
+    <field name="Backface Stencil Write Mask" dword="2" bits="7:0" type="uint" />
+    <field name="Backface Stencil Test Mask" dword="2" bits="15:8" type="uint" />
+    <field name="Stencil Write Mask" dword="2" bits="23:16" type="uint" />
+    <field name="Stencil Test Mask" dword="2" bits="31:24" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_WM_HZ_OP" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="82" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Number of Multisamples" dword="1" bits="15:13" type="uint" />
+    <field name="Stencil Clear Value" dword="1" bits="23:16" type="uint" />
+    <field name="Full Surface Depth and Stencil Clear" dword="1" bits="25:25" type="bool" />
+    <field name="Pixel Position Offset Enable" dword="1" bits="26:26" type="bool" />
+    <field name="Hierarchical Depth Buffer Resolve Enable" dword="1" bits="27:27" type="bool" />
+    <field name="Depth Buffer Resolve Enable" dword="1" bits="28:28" type="bool" />
+    <field name="Scissor Rectangle Enable" dword="1" bits="29:29" type="bool" />
+    <field name="Depth Buffer Clear Enable" dword="1" bits="30:30" type="bool" />
+    <field name="Stencil Buffer Clear Enable" dword="1" bits="31:31" type="bool" />
+    <field name="Clear Rectangle X Min" dword="2" bits="15:0" type="uint" />
+    <field name="Clear Rectangle Y Min" dword="2" bits="31:16" type="uint" />
+    <field name="Clear Rectangle X Max" dword="3" bits="15:0" type="uint" />
+    <field name="Clear Rectangle Y Max" dword="3" bits="31:16" type="uint" />
+    <field name="Sample Mask" dword="4" bits="15:0" type="uint" />
+  </instruction>
+  <instruction name="GPGPU_CSR_BASE_ADDRESS" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="GPGPU CSR Base Address" dword="1" bits="63:12" type="address" />
+  </instruction>
+  <instruction name="GPGPU_WALKER" bias="2" length="15" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="13" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Indirect Parameter Enable" dword="0" bits="10:10" type="bool" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="5" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="Indirect Data Length" dword="2" bits="16:0" type="uint" />
+    <field name="Indirect Data Start Address" dword="3" bits="31:6" type="offset" />
+    <field name="Thread Width Counter Maximum" dword="4" bits="5:0" type="uint" />
+    <field name="Thread Height Counter Maximum" dword="4" bits="13:8" type="uint" />
+    <field name="Thread Depth Counter Maximum" dword="4" bits="21:16" type="uint" />
+    <field name="SIMD Size" dword="4" bits="31:30" type="uint">
+      <value name="SIMD8" value="0" />
+      <value name="SIMD16" value="1" />
+      <value name="SIMD32" value="2" />
+    </field>
+    <field name="Thread Group ID Starting X" dword="5" bits="31:0" type="uint" />
+    <field name="Thread Group ID X Dimension" dword="7" bits="31:0" type="uint" />
+    <field name="Thread Group ID Starting Y" dword="8" bits="31:0" type="uint" />
+    <field name="Thread Group ID Y Dimension" dword="10" bits="31:0" type="uint" />
+    <field name="Thread Group ID Starting/Resume Z" dword="11" bits="31:0" type="uint" />
+    <field name="Thread Group ID Z Dimension" dword="12" bits="31:0" type="uint" />
+    <field name="Right Execution Mask" dword="13" bits="31:0" type="uint" />
+    <field name="Bottom Execution Mask" dword="14" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MEDIA_OBJECT" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="4" />
+    <field name="Media Command Sub-Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Media Command Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="Indirect Data Length" dword="2" bits="16:0" type="uint" />
+    <field name="SubSlice Destination Select" dword="2" bits="18:17" type="uint">
+      <value name="SubSlice 2" value="2" />
+      <value name="SubSlice 1" value="1" />
+      <value name="SubSlice 0" value="0" />
+    </field>
+    <field name="Slice Destination Select" dword="2" bits="20:19" type="uint">
+      <value name="Slice 0" value="0" />
+      <value name="Slice 1" value="1" />
+      <value name="Slice 2" value="2" />
+    </field>
+    <field name="Use Scoreboard" dword="2" bits="21:21" type="uint">
+      <value name="Not using scoreboard" value="0" />
+      <value name="Using scoreboard" value="1" />
+    </field>
+    <field name="Force Destination" dword="2" bits="22:22" type="uint" />
+    <field name="Thread Synchronization" dword="2" bits="24:24" type="uint">
+      <value name="No thread synchronization" value="0" />
+      <value name="Thread dispatch is synchronized by the 'spawn root thread' message" value="1" />
+    </field>
+    <field name="Children Present" dword="2" bits="31:31" type="bool" />
+    <field name="Indirect Data Start Address" dword="3" bits="31:0" type="address" />
+    <field name="Scoreboard X" dword="4" bits="8:0" type="uint" />
+    <field name="Scoredboard Y" dword="4" bits="24:16" type="uint" />
+    <field name="Scoreboard Mask" dword="5" bits="7:0" type="uint" />
+    <field name="Scoreboard Color" dword="5" bits="19:16" type="uint" />
+    <group count="0" dword="6" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MEDIA_OBJECT_GRPID" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="5" />
+    <field name="Media Command Sub-Opcode" dword="0" bits="23:16" type="uint" default="6" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Media Command Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="Indirect Data Length" dword="2" bits="16:0" type="uint" />
+    <field name="SubSlice Destination Select" dword="2" bits="18:17" type="uint">
+      <value name="SubSlice 2" value="2" />
+      <value name="SubSlice 1" value="1" />
+      <value name="SubSlice 0" value="0" />
+    </field>
+    <field name="Slice Destination Select" dword="2" bits="20:19" type="uint">
+      <value name="Slice 0" value="0" />
+      <value name="Slice 1" value="1" />
+      <value name="Slice 2" value="2" />
+    </field>
+    <field name="Use Scoreboard" dword="2" bits="21:21" type="uint">
+      <value name="Not using scoreboard" value="0" />
+      <value name="Using scoreboard" value="1" />
+    </field>
+    <field name="Force Destination" dword="2" bits="22:22" type="uint" />
+    <field name="End of Thread Group" dword="2" bits="23:23" type="uint" />
+    <field name="Indirect Data Start Address" dword="3" bits="31:0" type="address" />
+    <field name="Scoreboard X" dword="4" bits="8:0" type="uint" />
+    <field name="Scoreboard Y" dword="4" bits="24:16" type="uint" />
+    <field name="Scoreboard Mask" dword="5" bits="7:0" type="uint" />
+    <field name="Scoreboard Color" dword="5" bits="19:16" type="uint" />
+    <field name="GroupID" dword="6" bits="31:0" type="uint" />
+    <group count="0" dword="7" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MEDIA_OBJECT_WALKER" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="15" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="3" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="Indirect Data Length" dword="2" bits="16:0" type="uint" />
+    <field name="Use Scoreboard" dword="2" bits="21:21" type="uint">
+      <value name="Not using scoreboard" value="0" />
+      <value name="Using scoreboard" value="1" />
+    </field>
+    <field name="Thread Synchronization" dword="2" bits="24:24" type="uint">
+      <value name="No thread synchronization" value="0" />
+      <value name="Thread dispatch is synchronized by the 'spawn root thread' message" value="1" />
+    </field>
+    <field name="Children Present" dword="2" bits="31:31" type="uint" />
+    <field name="Indirect Data Start Address" dword="3" bits="31:0" type="offset" />
+    <field name="Scoreboard Mask" dword="5" bits="7:0" type="uint" />
+    <field name="Group ID Loop Select" dword="5" bits="31:8" type="uint" />
+    <field name="Mid-Loop Unit X" dword="6" bits="9:8" type="int" />
+    <field name="Local Mid-Loop Unit Y" dword="6" bits="13:12" type="int" />
+    <field name="Middle Loop Extra Steps" dword="6" bits="20:16" type="uint" />
+    <field name="Color Count Minus One" dword="6" bits="27:24" type="uint" />
+    <field name="Local Loop Exec Count" dword="7" bits="9:0" type="uint" />
+    <field name="Global Loop Exec Count" dword="7" bits="25:16" type="uint" />
+    <field name="Block Resolution X" dword="8" bits="8:0" type="uint" />
+    <field name="Block Resolution Y" dword="8" bits="24:16" type="uint" />
+    <field name="Local Start X" dword="9" bits="8:0" type="uint" />
+    <field name="Local Start Y" dword="9" bits="24:16" type="uint" />
+    <field name="Local Outer Loop Stride X" dword="11" bits="9:0" type="int" />
+    <field name="Local Outer Loop Stride Y" dword="11" bits="25:16" type="int" />
+    <field name="Local Inner Loop Unit X" dword="12" bits="9:0" type="int" />
+    <field name="Local Inner Loop Unit Y" dword="12" bits="25:16" type="int" />
+    <field name="Global Resolution X" dword="13" bits="8:0" type="uint" />
+    <field name="Global Resolution Y" dword="13" bits="24:16" type="uint" />
+    <field name="Global Start X" dword="14" bits="9:0" type="int" />
+    <field name="Global Start Y" dword="14" bits="25:16" type="int" />
+    <field name="Global Outer Loop Stride X" dword="15" bits="9:0" type="int" />
+    <field name="Global Outer Loop Stride Y" dword="15" bits="25:16" type="int" />
+    <field name="Global Inner Loop Unit X" dword="16" bits="9:0" type="int" />
+    <field name="Global Inner Loop Unit Y" dword="16" bits="25:16" type="int" />
+    <group count="0" dword="17" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MEDIA_STATE_FLUSH" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="0" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="Watermark Required" dword="1" bits="6:6" type="uint" />
+    <field name="Flush to GO" dword="1" bits="7:7" type="bool" />
+  </instruction>
+  <instruction name="MEDIA_VFE_STATE" bias="2" length="9" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="7" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Per Thread Scratch Space" dword="1" bits="3:0" type="uint" />
+    <field name="Stack Size" dword="1" bits="7:4" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="1" bits="47:10" type="address" />
+    <field name="Bypass Gateway Control" dword="3" bits="6:6" type="uint">
+      <value name="Maintaining OpenGateway/ForwardMsg/CloseGateway protocol (legacy mode)" value="0" />
+      <value name="Bypassing OpenGateway/CloseGateway protocol" value="1" />
+    </field>
+    <field name="Reset Gateway Timer" dword="3" bits="7:7" type="uint">
+      <value name="Maintaining the existing timestamp state" value="0" />
+      <value name="Resetting relative timer and latching the global timestamp" value="1" />
+    </field>
+    <field name="Number of URB Entries" dword="3" bits="15:8" type="uint" />
+    <field name="Maximum Number of Threads" dword="3" bits="31:16" type="uint" />
+    <field name="Slice Disable" dword="4" bits="1:0" type="uint">
+      <value name="All Subslices Enabled" value="0" />
+      <value name="Only Slice 0 Enabled" value="1" />
+      <value name="Only Slice 0 Subslice 0 Enabled" value="3" />
+    </field>
+    <field name="CURBE Allocation Size" dword="5" bits="15:0" type="uint" />
+    <field name="URB Entry Allocation Size" dword="5" bits="31:16" type="uint" />
+    <field name="Scoreboard Mask" dword="6" bits="7:0" type="uint" />
+    <field name="Scoreboard Type" dword="6" bits="30:30" type="uint">
+      <value name="Stalling Scoreboard" value="0" />
+      <value name="Non-Stalling Scoreboard" value="1" />
+    </field>
+    <field name="Scoreboard Enable" dword="6" bits="31:31" type="bool" />
+    <field name="Scoreboard 0 Delta X" dword="7" bits="3:0" type="int" />
+    <field name="Scoreboard 0 Delta Y" dword="7" bits="7:4" type="int" />
+    <field name="Scoreboard 1 Delta X" dword="7" bits="11:8" type="int" />
+    <field name="Scoreboard 1 Delta Y" dword="7" bits="15:12" type="int" />
+    <field name="Scoreboard 2 Delta X" dword="7" bits="19:16" type="int" />
+    <field name="Scoreboard 2 Delta Y" dword="7" bits="23:20" type="int" />
+    <field name="Scoreboard 3 Delta X" dword="7" bits="27:24" type="int" />
+    <field name="Scoreboard 3 Delta Y" dword="7" bits="31:28" type="int" />
+    <field name="Scoreboard 4 Delta X" dword="8" bits="3:0" type="int" />
+    <field name="Scoreboard 4 Delta Y" dword="8" bits="7:4" type="int" />
+    <field name="Scoreboard 5 Delta X" dword="8" bits="11:8" type="int" />
+    <field name="Scoreboard 5 Delta Y" dword="8" bits="15:12" type="int" />
+    <field name="Scoreboard 6 Delta X" dword="8" bits="19:16" type="int" />
+    <field name="Scoreboard 6 Delta Y" dword="8" bits="23:20" type="int" />
+    <field name="Scoreboard 7 Delta X" dword="8" bits="27:24" type="int" />
+    <field name="Scoreboard 7 Delta Y" dword="8" bits="31:28" type="int" />
+  </instruction>
+  <instruction name="MFD_VP8_BSD_OBJECT" bias="2" length="22" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="20" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="8" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command OpCode" dword="0" bits="26:24" type="uint" default="4" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Partition0 First MB Bit Offset from Frame Header" dword="1" bits="2:0" type="uint" />
+    <field name="Coded Num of Coeff Token Partitions" dword="1" bits="5:4" type="uint" />
+    <field name="Partition0 CPBAC Entropy Range" dword="1" bits="15:8" type="uint" />
+    <field name="Partition0 CPBAC Entropy Count" dword="1" bits="20:16" type="uint" />
+    <field name="Partition0 CPBAC Entropy Value" dword="2" bits="31:24" type="uint" />
+    <field name="Indirect Partition0 Data Length" dword="3" bits="23:0" type="uint" />
+    <field name="Indirect Partition0 Data Start Offset" dword="4" bits="31:0" type="uint" />
+    <field name="Indirect Partition1 Data Length" dword="5" bits="23:0" type="uint" />
+    <field name="Indirect Partition1 Data Start Offset" dword="6" bits="31:0" type="uint" />
+    <field name="Indirect Partition2 Data Length" dword="7" bits="23:0" type="uint" />
+    <field name="Indirect Partition2 Data Start Offset" dword="8" bits="31:0" type="uint" />
+    <field name="Indirect Partition3 Data Length" dword="9" bits="23:0" type="uint" />
+    <field name="Indirect Partition3 Data Start Offset" dword="10" bits="31:0" type="uint" />
+    <field name="Indirect Partition4 Data Length" dword="11" bits="23:0" type="uint" />
+    <field name="Indirect Partition4 Data Start Offset" dword="12" bits="31:0" type="uint" />
+    <field name="Indirect Partition5 Data Length" dword="13" bits="23:0" type="uint" />
+    <field name="Indirect Partition5 Data Start Offset" dword="14" bits="31:0" type="uint" />
+    <field name="Indirect Partition6 Data Length" dword="15" bits="23:0" type="uint" />
+    <field name="Indirect Partition6 Data Start Offset" dword="16" bits="31:0" type="uint" />
+    <field name="Indirect Partition7 Data Length" dword="17" bits="23:0" type="uint" />
+    <field name="Indirect Partition7 Data Start Offset" dword="18" bits="31:0" type="uint" />
+    <field name="Indirect Partition8 Data Length" dword="19" bits="23:0" type="uint" />
+    <field name="Indirect Partition8 Data Start Offset" dword="20" bits="31:0" type="uint" />
+    <field name="MB Header Error Handling" dword="21" bits="8:8" type="uint" />
+    <field name="Entropy Error Handling" dword="21" bits="10:10" type="uint" />
+    <field name="MPR Error (MV out of range) Handling" dword="21" bits="12:12" type="uint" />
+    <field name="BSD Premature Complete Error Handling" dword="21" bits="14:14" type="uint" />
+    <field name="Concealment Picture ID" dword="21" bits="17:16" type="uint" />
+    <field name="Concealment Method" dword="21" bits="31:31" type="uint">
+      <value name="Intra 16x16 Prediction" value="0" />
+      <value name="Inter P Copy" value="1" />
+    </field>
+  </instruction>
+  <instruction name="MFX_AVC_DIRECTMODE_STATE" bias="2" length="71" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="69" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="16" dword="1" size="64">
+      <field name="Direct MV Buffer - Address" dword="0" bits="63:0" type="address" />
+    </group>
+    <field name="Direct MV Buffer - Attributes" dword="33" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Direct MV Buffer (Write) - Address" dword="34" bits="63:0" type="address" />
+    <field name="Direct MV Buffer (Write) - Attributes" dword="36" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <group count="34" dword="37" size="32">
+      <field name="POC List" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFX_AVC_IMG_STATE" bias="2" length="14" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="12" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Size" dword="1" bits="15:0" type="uint" />
+    <field name="Frame Width" dword="2" bits="7:0" type="uint" />
+    <field name="Frame Height" dword="2" bits="23:16" type="uint" />
+    <field name="Image Structure" dword="3" bits="9:8" type="uint">
+      <value name="Frame Picture" value="0" />
+      <value name="Top Field Picture" value="1" />
+      <value name="Bottom Field Picture" value="3" />
+      <value name="Invalid, not allowed." value="2" />
+    </field>
+    <field name="Weighted BiPrediction IDC" dword="3" bits="11:10" type="uint">
+      <value name="DEFAULT" value="0" />
+      <value name="EXPLICIT" value="1" />
+      <value name="IMPLICIT" value="2" />
+    </field>
+    <field name="Weighted Prediction Enable" dword="3" bits="12:12" type="bool" />
+    <field name="First Chroma QP Offset" dword="3" bits="20:16" type="int" />
+    <field name="Second Chroma QP Offset" dword="3" bits="28:24" type="int" />
+    <field name="Field Picture" dword="4" bits="0:0" type="bool" />
+    <field name="MBAFF Mode" dword="4" bits="1:1" type="bool" />
+    <field name="Frame MB Only" dword="4" bits="2:2" type="bool" />
+    <field name="8x8 IDCT Transform Mode" dword="4" bits="3:3" type="bool" />
+    <field name="Direct 8x8 Inference" dword="4" bits="4:4" type="bool" />
+    <field name="Constrained Intra Prediction" dword="4" bits="5:5" type="bool" />
+    <field name="Non-Reference Picture" dword="4" bits="6:6" type="bool" />
+    <field name="Entropy Coding Sync Enable" dword="4" bits="7:7" type="bool" />
+    <field name="MB MV Format" dword="4" bits="8:8" type="uint">
+      <value name="IGNORE" value="0" />
+      <value name="FOLLOW" value="1" />
+    </field>
+    <field name="Chroma Format IDC" dword="4" bits="11:10" type="uint">
+      <value name="Monochrome picture" value="0" />
+      <value name="4:2:0 picture" value="1" />
+      <value name="4:2:2 picture (not supported)" value="2" />
+      <value name="4:4:4 picture (not supported)" value="3" />
+    </field>
+    <field name="MV Unpacked Enable" dword="4" bits="12:12" type="bool" />
+    <field name="Load Bitstream Pointer Per Slice" dword="4" bits="14:14" type="bool" />
+    <field name="MB Status Read" dword="4" bits="15:15" type="bool" />
+    <field name="Minimum Frame Size" dword="4" bits="31:16" type="uint" />
+    <field name="Intra MB Max Bit Control" dword="5" bits="0:0" type="bool" />
+    <field name="Inter MB Max Bit Control" dword="5" bits="1:1" type="bool" />
+    <field name="Frame Bitrate Max Report" dword="5" bits="2:2" type="bool" />
+    <field name="Frame Bitrate Min Report" dword="5" bits="3:3" type="bool" />
+    <field name="Force IPCM Control" dword="5" bits="7:7" type="bool" />
+    <field name="MB Level Rate Control" dword="5" bits="9:9" type="bool" />
+    <field name="Minimum Frame Size Units" dword="5" bits="11:10" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="16 bytes" value="1" />
+      <value name="4Kb" value="2" />
+      <value name="16Kb" value="3" />
+    </field>
+    <field name="Non First Pass" dword="5" bits="16:16" type="uint" />
+    <field name="Trellis Quantization Chroma Disable" dword="5" bits="27:27" type="bool" />
+    <field name="Trellis Quantization Rounding" dword="5" bits="30:28" type="uint" />
+    <field name="Trellis Quantization Enable" dword="5" bits="31:31" type="bool" />
+    <field name="Intra MB Conformance Max Size" dword="6" bits="11:0" type="uint" />
+    <field name="Inter MB Conformance Max Size" dword="6" bits="27:16" type="uint" />
+    <field name="Slice Delta QP Max[0]" dword="8" bits="7:0" type="int" />
+    <field name="Slice Delta QP Max[1]" dword="8" bits="15:8" type="int" />
+    <field name="Slice Delta QP Max[2]" dword="8" bits="23:16" type="uint" />
+    <field name="Slice Delta QP Max[3]" dword="8" bits="31:24" type="int" />
+    <field name="Slice Delta QP Min[0]" dword="9" bits="7:0" type="int" />
+    <field name="Slice Delta QP Min[1]" dword="9" bits="15:8" type="int" />
+    <field name="Slice Delta QP Min[2]" dword="9" bits="23:16" type="int" />
+    <field name="Slice Delta QP Min[3]" dword="9" bits="31:24" type="int" />
+    <field name="Frame Bitrate Min" dword="10" bits="13:0" type="uint" />
+    <field name="Frame Bitrate Min Unit Mode" dword="10" bits="14:14" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Min Unit" dword="10" bits="15:15" type="uint" />
+    <field name="Frame Bitrate Max" dword="10" bits="29:16" type="uint" />
+    <field name="Frame Bitrate Max Unit Mode" dword="10" bits="30:30" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Max Unit" dword="10" bits="31:31" type="uint" />
+    <field name="Frame Bitrate Min Delta" dword="11" bits="14:0" type="uint" />
+    <field name="Frame Bitrate Max Delta" dword="11" bits="30:16" type="uint" />
+    <field name="Slice Stats Stream-Out Enable" dword="11" bits="31:31" type="bool" />
+    <field name="Initial QP Value" dword="13" bits="7:0" type="int" />
+    <field name="Number of Active Reference Pictures from L0" dword="13" bits="13:8" type="uint" />
+    <field name="Number of Active Reference Pictures from L1" dword="13" bits="21:16" type="uint" />
+    <field name="Number of Reference Frames" dword="13" bits="28:24" type="uint" />
+    <field name="Current Picture Has Performed MMCO5" dword="13" bits="29:29" type="bool" />
+    <field name="Pic Order Present" dword="14" bits="0:0" type="bool" />
+    <field name="Delta Pic Order Always Zero" dword="14" bits="1:1" type="bool" />
+    <field name="Pic Order Count Type" dword="14" bits="3:2" type="uint" />
+    <field name="Slice Group Map Type" dword="14" bits="10:8" type="uint" />
+    <field name="Redundant Pic Count Present" dword="14" bits="11:11" type="bool" />
+    <field name="Number of Slice Groups" dword="14" bits="14:12" type="uint" />
+    <field name="Deblocking Filter Control Present" dword="14" bits="15:15" type="bool" />
+    <field name="Log2 Max Frame Number" dword="14" bits="23:16" type="uint" />
+    <field name="Log2 Max Pic Order Count LSB" dword="14" bits="31:24" type="uint" />
+    <field name="Slice Group Change Rate" dword="15" bits="15:0" type="uint" />
+    <field name="Current Picture Frame Number" dword="15" bits="31:16" type="uint" />
+    <field name="Current Frame View ID" dword="16" bits="9:0" type="uint" />
+    <field name="Max View IDXL0" dword="16" bits="15:12" type="uint" />
+    <field name="Max View IDXL1" dword="16" bits="21:18" type="uint" />
+    <field name="Inter View Order Disable" dword="16" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="MFX_BSP_BUF_BASE_ADDR_STATE" bias="2" length="10" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="8" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="4" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="BSD/MPC Row Store Scratch Buffer - Address" dword="1" bits="47:6" type="address" />
+    <field name="BSD/MPC Row Store Scratch Buffer - Age for QUADLRU" dword="3" bits="1:0" type="uint" />
+    <field name="BSD/MPC Row Store Scratch Buffer - Target Cache" dword="3" bits="4:3" type="uint">
+      <value name="eLLC Only" value="0" />
+      <value name="LLC Only" value="1" />
+      <value name="LLC/eLLC" value="2" />
+      <value name="L3, LLC, eLLC" value="3" />
+    </field>
+    <field name="BSD/MPC Row Store Scratch Buffer - Cacheability Control" dword="3" bits="6:5" type="uint">
+      <value name="Use Cacheability Controls From Page Table / UC with Fence" value="0" />
+      <value name="Uncacheable" value="1" />
+      <value name="Writethrough" value="2" />
+      <value name="Writeback" value="3" />
+    </field>
+    <field name="BSD/MPC Row Store Scratch Buffer - Arbitration Priority Control" dword="3" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MPR Row Store Scratch Buffer - Address" dword="4" bits="47:6" type="address" />
+    <field name="MPR Row Store Scratch Buffer - Age for QUADLRU" dword="6" bits="1:0" type="uint" />
+    <field name="MPR Row Store Scratch Buffer - Target Cache" dword="6" bits="4:3" type="uint">
+      <value name="eLLC Only" value="0" />
+      <value name="LLC Only" value="1" />
+      <value name="LLC/eLLC" value="2" />
+      <value name="L3, LLC, eLLC" value="3" />
+    </field>
+    <field name="MPR Row Store Scratch Buffer - Cacheability Control" dword="6" bits="6:5" type="uint">
+      <value name="Use Cacheability Controls From Page Table / UC with Fence" value="0" />
+      <value name="Uncacheable" value="1" />
+      <value name="Writethrough" value="2" />
+      <value name="Writeback" value="3" />
+    </field>
+    <field name="MPR Row Store Scratch Buffer - Arbitration Priority Control" dword="6" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Bitplane Read Buffer - Address" dword="7" bits="47:6" type="uint" />
+    <field name="Bitplane Read Buffer - Age for QUADLRU" dword="9" bits="1:0" type="uint" />
+    <field name="Bitplane Read Buffer - Target Cache" dword="9" bits="4:3" type="uint">
+      <value name="eLLC Only" value="0" />
+      <value name="LLC Only" value="1" />
+      <value name="LLC/eLLC" value="2" />
+      <value name="L3, LLC, eLLC" value="3" />
+    </field>
+    <field name="Bitplane Read Buffer - Cacheability Control" dword="9" bits="6:5" type="uint">
+      <value name="Use Cacheability Controls From Page Table / UC with Fence (if coherent cycle)" value="0" />
+      <value name="Uncacheable" value="1" />
+      <value name="Writethrough" value="2" />
+      <value name="Writeback" value="3" />
+    </field>
+    <field name="Bitplane Read Buffer - Arbitration Priority Control" dword="9" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+  </instruction>
+  <instruction name="MFX_DBK_OBJECT" bias="2" length="13" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="11" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="9" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pre Deblocking Source - Address" dword="1" bits="47:6" type="address" />
+    <field name="Pre Deblocking Source - Age for QUADLRU" dword="3" bits="1:0" type="uint" />
+    <field name="Pre Deblocking Source - Target Cache" dword="3" bits="4:3" type="uint">
+      <value name="eLLC Only" value="0" />
+      <value name="LLC Only" value="1" />
+      <value name="LLC/eLLC" value="2" />
+      <value name="L3, LLC, eLLC" value="3" />
+    </field>
+    <field name="Pre Deblocking Source - Cacheability Control" dword="3" bits="6:5" type="uint">
+      <value name="Use Cacheability Controls From Page Table / UC with Fence" value="0" />
+      <value name="Uncacheable" value="1" />
+      <value name="Writethrough" value="2" />
+      <value name="Writeback" value="3" />
+    </field>
+    <field name="Pre Deblocking Source - Arbitration Priority Control" dword="3" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Deblocking Control - Address" dword="4" bits="47:6" type="address" />
+    <field name="Deblocking Control - Age for QUADLRU" dword="6" bits="1:0" type="uint" />
+    <field name="Deblocking Control - Target Cache" dword="6" bits="4:3" type="uint">
+      <value name="eLLC Only" value="0" />
+      <value name="LLC Only" value="1" />
+      <value name="LLC/eLLC" value="2" />
+      <value name="L3, LLC, eLLC" value="3" />
+    </field>
+    <field name="Deblocking Control - Cacheability Control" dword="6" bits="6:5" type="uint">
+      <value name="Use Cacheability Controls From Page Table / UC with Fence" value="0" />
+      <value name="Uncacheable" value="1" />
+      <value name="Writethrough" value="2" />
+      <value name="Writeback" value="3" />
+    </field>
+    <field name="Deblocking Control - Arbitration Priority Control" dword="6" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Deblocking Destination - Address" dword="7" bits="47:6" type="address" />
+    <field name="Deblocking Destination - Age for QUADLRU" dword="9" bits="1:0" type="uint" />
+    <field name="Deblocking Destination - Target Cache" dword="9" bits="4:3" type="uint">
+      <value name="eLLC Only" value="0" />
+      <value name="LLC Only" value="1" />
+      <value name="LLC/eLLC" value="2" />
+      <value name="L3, LLC, eLLC" value="3" />
+    </field>
+    <field name="Deblocking Destination - Cacheability Control" dword="9" bits="6:5" type="uint">
+      <value name="Use Cacheability Controls From Page Table / UC with Fence" value="0" />
+      <value name="Uncacheable" value="1" />
+      <value name="Writethrough" value="2" />
+      <value name="Writeback" value="3" />
+    </field>
+    <field name="Deblocking Destination - Arbitration Priority Control" dword="9" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Deblock Row Store - Address" dword="10" bits="47:6" type="address" />
+    <field name="Deblock Row Store - Age for QUADLRU" dword="12" bits="1:0" type="uint" />
+    <field name="Deblock Row Store - Target Cache" dword="12" bits="4:3" type="uint">
+      <value name="eLLC Only" value="0" />
+      <value name="LLC Only" value="1" />
+      <value name="LLC/eLLC" value="2" />
+      <value name="L3, LLC, eLLC" value="3" />
+    </field>
+    <field name="Deblock Row Store - Cacheability Control" dword="12" bits="6:5" type="uint">
+      <value name="Use Cacheability Controls From Page Table / UC with Fence" value="0" />
+      <value name="Uncacheable" value="1" />
+      <value name="Writethrough" value="2" />
+      <value name="Writeback" value="3" />
+    </field>
+    <field name="Deblock Row Store - Arbitration Priority Control" dword="12" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+  </instruction>
+  <instruction name="MFX_IND_OBJ_BASE_ADDR_STATE" bias="2" length="26" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="24" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="3" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="MFX Indirect Bitstream Object - Address" dword="1" bits="63:0" type="address" />
+    <field name="MFX Indirect Bitstream Object - Attributes" dword="3" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="MFX Indirect Bitstream Object - Upper Bound" dword="4" bits="63:0" type="address" />
+    <field name="MFX Indirect MV Object - Address" dword="6" bits="63:0" type="address" />
+    <field name="MFX Indirect MV Object - Attributes" dword="8" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="MFX Indirect MV Object - Upper Bound" dword="9" bits="63:0" type="address" />
+    <field name="MFD Indirect IT-COEFF Object - Address" dword="11" bits="63:0" type="address" />
+    <field name="MFD Indirect IT-COEFF Object - Attributes" dword="13" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="MFD Indirect IT-COEFF Object - Upper Bound" dword="14" bits="63:0" type="address" />
+    <field name="MFD Indirect IT-DBLK Object - Address" dword="16" bits="63:0" type="address" />
+    <field name="MFD Indirect IT-DBLK Object - Attributes" dword="18" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="MFD Indirect IT-DBLK Object - Upper Bound" dword="19" bits="63:0" type="address" />
+    <field name="MFC Indirect PAK-BSE Object - Address" dword="21" bits="63:0" type="address" />
+    <field name="MFC Indirect PAK-BSE Object - Attributes" dword="23" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="MFC Indirect PAK-BSE Object - Upper Bound" dword="24" bits="63:0" type="address" />
+  </instruction>
+  <instruction name="MFX_JPEG_PIC_STATE" bias="2" length="3" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="1" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Input Format YUV" dword="1" bits="2:0" type="uint" />
+    <field name="Rotation" dword="1" bits="5:4" type="uint" />
+    <field name="Output Format YUV" dword="1" bits="11:8" type="uint" />
+    <field name="Average Down Sampling" dword="1" bits="16:16" type="uint" />
+    <field name="Vertical Down-Sampling Enable" dword="1" bits="17:17" type="bool" />
+    <field name="Horizontal Down-Sampling Enable" dword="1" bits="18:18" type="bool" />
+    <field name="Vertical Up-Sampling Enable" dword="1" bits="20:20" type="bool" />
+    <field name="Frame Width In Blocks" dword="2" bits="12:0" type="uint" />
+    <field name="Frame Height In Blocks" dword="2" bits="28:16" type="uint" />
+  </instruction>
+  <instruction name="MFX_PIPE_BUF_ADDR_STATE" bias="2" length="61" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="59" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pre Deblocking Destination - Address" dword="1" bits="47:6" type="address" />
+    <field name="Pre Deblocking Destination - MOCS" dword="3" bits="6:0" type="uint" nonzero="true" />
+    <field name="Pre Deblocking Destination - Arbitration Priority Control" dword="3" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Post Deblocking Destination - Address" dword="4" bits="47:6" type="address" />
+    <field name="Post Deblocking Destination - MOCS" dword="6" bits="6:0" type="uint" nonzero="true" />
+    <field name="Post Deblocking Destination - Arbitration Priority Control" dword="6" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Original Uncompressed Picture Source - Address" dword="7" bits="47:6" type="address" />
+    <field name="Original Uncompressed Picture Source - MOCS" dword="9" bits="6:0" type="uint" nonzero="true" />
+    <field name="Original Uncompressed Picture Source - Arbitration Priority Control" dword="9" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Stream-Out Data Destination - Address" dword="10" bits="47:6" type="address" />
+    <field name="Stream-Out Data Destination - MOCS" dword="12" bits="6:0" type="uint" nonzero="true" />
+    <field name="Stream-Out Data Destination - Arbitration Priority Control" dword="12" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Intra Row Store Scratch Buffer - Address High" dword="13" bits="47:6" type="address" />
+    <field name="Intra Row Store Scratch Buffer - MOCS" dword="15" bits="6:0" type="uint" nonzero="true" />
+    <field name="Intra Row Store Scratch Buffer - Arbitration Priority Control" dword="15" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Deblocking Filter Row Store Scratch - Address High" dword="16" bits="47:6" type="address" />
+    <field name="Deblocking Filter Row Store Scratch - MOCS" dword="18" bits="6:0" type="uint" nonzero="true" />
+    <field name="Deblocking Filter Row Store Scratch - Arbitration Priority Control" dword="18" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <group count="16" dword="19" size="64">
+      <field name="Reference Picture - Address" dword="0" bits="63:0" type="address" />
+    </group>
+    <field name="Reference Picture - MOCS" dword="51" bits="6:0" type="uint" nonzero="true" />
+    <field name="Reference Picture - Arbitration Priority Control" dword="51" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MB Status Buffer - Address" dword="52" bits="47:6" type="address" />
+    <field name="MB Status Buffer - MOCS" dword="54" bits="6:0" type="uint" nonzero="true" />
+    <field name="MB Status Buffer - Arbitration Priority Control" dword="54" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MB ILDB Stream-Out Buffer - Address" dword="55" bits="47:6" type="address" />
+    <field name="MB ILDB Stream-Out Buffer - MOCS" dword="57" bits="6:0" type="uint" nonzero="true" />
+    <field name="MB ILDB Stream-Out Buffer - Arbitration Priority Control" dword="57" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Second MB ILDB Stream-Out Buffer - Address High" dword="58" bits="47:6" type="address" />
+    <field name="Second MB ILDB Stream-Out Buffer - MOCS" dword="60" bits="6:0" type="uint" nonzero="true" />
+    <field name="Second MB ILDB Stream-Out Buffer - Arbitration Priority Control" dword="60" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+  </instruction>
+  <instruction name="MFX_PIPE_MODE_SELECT" bias="2" length="5" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="3" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Standard Select" dword="1" bits="3:0" type="uint" prefix="SS">
+      <value name="MPEG2" value="0" />
+      <value name="VC1" value="1" />
+      <value name="AVC" value="2" />
+      <value name="JPEG" value="3" />
+      <value name="VP8" value="5" />
+      <value name="UVLD" value="15" />
+    </field>
+    <field name="Codec Select" dword="1" bits="4:4" type="uint">
+      <value name="Decode" value="0" />
+      <value name="Encode" value="1" />
+    </field>
+    <field name="Stitch Mode" dword="1" bits="5:5" type="bool" />
+    <field name="Pre Deblocking Output Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Post Deblocking Output Enable" dword="1" bits="9:9" type="bool" />
+    <field name="Stream-Out Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Pic Error/Status Report Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Deblocker Stream-Out Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Decoder Mode Select" dword="1" bits="16:15" type="uint">
+      <value name="VLD Mode" value="0" />
+      <value name="IT Mode" value="1" />
+      <value name="Deblocker Mode" value="2" />
+      <value name="Interlayer Mode" value="3" />
+    </field>
+    <field name="Decoder Short Format Mode" dword="1" bits="17:17" type="uint">
+      <value name="Short Format Driver Interface" value="0" />
+      <value name="Long Format Driver Interface" value="1" />
+    </field>
+    <field name="Extended Stream-Out Enable" dword="1" bits="18:18" type="bool" />
+    <field name="Pic Status/Error Report ID" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MFX_SURFACE_STATE" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="1" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface ID" dword="1" bits="3:0" type="uint">
+      <value name="Source Input Picture" value="4" />
+      <value name="Reconstructed Scaled Reference Picture" value="5" />
+    </field>
+    <field name="Cr(V)/Cb(U) Pixel Offset V Direction" dword="2" bits="1:0" type="u0.2" />
+    <field name="Width" dword="2" bits="17:4" type="uint" />
+    <field name="Height" dword="2" bits="31:18" type="uint" />
+    <field name="Tile Walk" dword="3" bits="0:0" type="uint" prefix="TW">
+      <value name="XMAJOR" value="0" />
+      <value name="YMAJOR" value="1" />
+    </field>
+    <field name="Tiled Surface" dword="3" bits="1:1" type="bool" />
+    <field name="Half Pitch for Chroma" dword="3" bits="2:2" type="bool" />
+    <field name="Surface Pitch" dword="3" bits="19:3" type="uint" />
+    <field name="Interleave Chroma" dword="3" bits="27:27" type="bool" />
+    <field name="Surface Format" dword="3" bits="31:28" type="uint">
+      <value name="YCRCB_NORMAL" value="0" />
+      <value name="YCRCB_SWAPUVY" value="1" />
+      <value name="YCRCB_SWAPUV" value="2" />
+      <value name="YCRCB_SWAPY" value="3" />
+      <value name="PLANAR_420_8" value="4" />
+      <value name="PLANAR_411_8" value="5" />
+      <value name="PLANAR_422_8" value="6" />
+      <value name="STMM_DN_STATISTICS" value="7" />
+      <value name="R10G10B10A2_UNORM" value="8" />
+      <value name="R8G8B8A8_UNORM" value="9" />
+      <value name="R8B8_UNORM (CrCb)" value="10" />
+      <value name="R8_UNORM (Cr/Cb)" value="11" />
+      <value name="Y8_UNORM" value="12" />
+    </field>
+    <field name="Y Offset for U(Cb)" dword="4" bits="14:0" type="uint" />
+    <field name="X Offset for U(Cb)" dword="4" bits="30:16" type="uint" />
+    <field name="Y Offset for V(Cr)" dword="5" bits="15:0" type="uint" />
+    <field name="X Offset for V(Cr)" dword="5" bits="28:16" type="uint" />
+  </instruction>
+  <instruction name="MFX_VC1_DIRECTMODE_STATE" bias="2" length="7" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="5" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Direct MV Write Buffer - Address" dword="1" bits="63:0" type="address" />
+    <field name="Direct MV Write Buffer - Attributes" dword="3" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Direct MV Read Buffer - Address" dword="4" bits="63:0" type="address" />
+    <field name="Direct MV Read Buffer - Attributes" dword="6" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+  </instruction>
+  <instruction name="MFX_VP8_PAK_OBJECT" bias="2" length="7" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="5" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="9" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="4" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect PAK-MV Data Length" dword="1" bits="9:0" type="uint" />
+    <field name="Indirect PAK-MV Data Start Address Offset" dword="2" bits="28:0" type="offset" />
+    <field name="Inline Data" dword="3" bits="127:0" type="uint" />
+  </instruction>
+  <instruction name="MFX_VP8_PIC_STATE" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command OpCode" dword="0" bits="26:24" type="uint" default="4" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Width" dword="1" bits="7:0" type="uint" />
+    <field name="Frame Height" dword="1" bits="23:16" type="uint" />
+    <field name="MC Filter Select" dword="2" bits="0:0" type="uint" />
+    <field name="Chroma Full Pixel MC Filter Mode" dword="2" bits="1:1" type="uint" />
+    <field name="DBLK Filter Type" dword="2" bits="4:4" type="uint" />
+    <field name="Key Frame" dword="2" bits="5:5" type="bool" />
+    <field name="Segmentation ID Stream-Out Enable" dword="2" bits="6:6" type="bool" />
+    <field name="Segmentation ID Stream-In Enable" dword="2" bits="7:7" type="bool" />
+    <field name="Segment Enable" dword="2" bits="8:8" type="bool" />
+    <field name="Update MB Segment Map" dword="2" bits="9:9" type="bool" />
+    <field name="MB NoCoeff Skip" dword="2" bits="10:10" type="bool" />
+    <field name="Mode Reference Loop Filter Delta Enable" dword="2" bits="11:11" type="bool" />
+    <field name="Golden Ref Picture MV Sign Bias" dword="2" bits="12:12" type="bool" />
+    <field name="Alternate Ref Pic MV Sign Bias" dword="2" bits="13:13" type="bool" />
+    <field name="Deblock Sharpness Level" dword="2" bits="18:16" type="uint" />
+    <field name="Log2 Num of Partition" dword="2" bits="25:24" type="uint">
+      <value name="1 Token partition" value="0" />
+      <value name="2 Token partition" value="1" />
+      <value name="4 Token partition" value="2" />
+      <value name="8 Token partition" value="3" />
+    </field>
+    <field name="DBLK Filter Level for Segment0" dword="3" bits="5:0" type="uint" />
+    <field name="DBLK Filter Level for Segment1" dword="3" bits="13:8" type="uint" />
+    <field name="DBLK Filter Level for Segment2" dword="3" bits="21:16" type="uint" />
+    <field name="DBLK Filter Level for Segment3" dword="3" bits="29:24" type="uint" />
+    <field name="Quantizer Value [0][Y1DC]" dword="4" bits="8:0" type="uint" />
+    <field name="Quantizer Value [0][Y1AC]" dword="4" bits="24:16" type="uint" />
+    <field name="Quantizer Value [0][UVDC]" dword="5" bits="8:0" type="uint" />
+    <field name="Quantizer Value [0][UVAC]" dword="5" bits="24:16" type="uint" />
+    <field name="Quantizer Value [0][Y2DC]" dword="6" bits="8:0" type="uint" />
+    <field name="Quantizer Value [0][Y2AC]" dword="6" bits="24:16" type="uint" />
+    <field name="Quantizer Value [1][Y1DC]" dword="7" bits="8:0" type="uint" />
+    <field name="Quantizer Value [1][Y1AC]" dword="7" bits="24:16" type="uint" />
+    <field name="Quantizer Value [1][UVDC]" dword="8" bits="8:0" type="uint" />
+    <field name="Quantizer Value [1][UVAC]" dword="8" bits="24:16" type="uint" />
+    <field name="Quantizer Value [1][Y2DC]" dword="9" bits="8:0" type="uint" />
+    <field name="Quantizer Value [1][Y2AC]" dword="9" bits="24:16" type="uint" />
+    <field name="Quantizer Value [2][Y1DC]" dword="10" bits="8:0" type="uint" />
+    <field name="Quantizer Value [2][Y1AC]" dword="10" bits="24:16" type="uint" />
+    <field name="Quantizer Value [2][UVDC]" dword="11" bits="8:0" type="uint" />
+    <field name="Quantizer Value [2][UVAC]" dword="11" bits="24:16" type="uint" />
+    <field name="Quantizer Value [2][Y2DC]" dword="12" bits="8:0" type="uint" />
+    <field name="Quantizer Value [2][Y2AC]" dword="12" bits="24:16" type="uint" />
+    <field name="Quantizer Value [3][Y1DC]" dword="13" bits="8:0" type="uint" />
+    <field name="Quantizer Value [3][Y1AC]" dword="13" bits="24:16" type="uint" />
+    <field name="Quantizer Value [3][UVDC]" dword="14" bits="8:0" type="uint" />
+    <field name="Quantizer Value [3][UVAC]" dword="14" bits="24:16" type="uint" />
+    <field name="Quantizer Value [3][Y2DC]" dword="15" bits="8:0" type="uint" />
+    <field name="Quantizer Value [3][Y2AC]" dword="15" bits="24:16" type="uint" />
+    <field name="CoeffProbability Stream-In - Address" dword="16" bits="47:6" type="address" />
+    <field name="CoeffProbability Stream-In - Age for QUADLRU" dword="18" bits="1:0" type="uint" />
+    <field name="CoeffProbability Stream-In - Target Cache" dword="18" bits="4:3" type="uint">
+      <value name="eLLC Only" value="0" />
+      <value name="LLC Only" value="1" />
+      <value name="LLC/eLLC" value="2" />
+      <value name="L3, LLC, eLLC" value="3" />
+    </field>
+    <field name="CoeffProbability Stream-In - Cacheability Control" dword="18" bits="6:5" type="uint">
+      <value name="Use Cacheability Controls From Page Table / UC with Fence" value="0" />
+      <value name="Uncacheable" value="1" />
+      <value name="Writethrough" value="2" />
+      <value name="Writeback" value="3" />
+    </field>
+    <field name="CoeffProbability Stream-In - Arbitration Priority Control" dword="18" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="MBSegmentIDTreeProbs[0]" dword="19" bits="7:0" type="uint" />
+    <field name="MBSegmentIDTreeProbs[1]" dword="19" bits="15:8" type="uint" />
+    <field name="MBSegmentIDTreeProbs[2]" dword="19" bits="23:16" type="uint" />
+    <field name="InterPredFromGRefRefProb" dword="20" bits="7:0" type="uint" />
+    <field name="InterPredFromLastRefProb" dword="20" bits="15:8" type="uint" />
+    <field name="IntraMBProb" dword="20" bits="23:16" type="uint" />
+    <field name="MBNoCoeffSkipFalseProb" dword="20" bits="31:24" type="uint" />
+    <field name="YModeProb[0]" dword="21" bits="7:0" type="uint" />
+    <field name="YModeProb[1]" dword="21" bits="15:8" type="uint" />
+    <field name="YModeProb[2]" dword="21" bits="23:16" type="uint" />
+    <field name="YModeProb[3]" dword="21" bits="31:24" type="uint" />
+    <field name="UVModeProb[0]" dword="22" bits="7:0" type="uint" />
+    <field name="UVModeProb[1]" dword="22" bits="15:8" type="uint" />
+    <field name="UVModeProb[2]" dword="22" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[0][0]" dword="23" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[0][1]" dword="23" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[0][2]" dword="23" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[0][3]" dword="23" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[0][4]" dword="24" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[0][5]" dword="24" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[0][6]" dword="24" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[0][7]" dword="24" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[0][8]" dword="25" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[0][9]" dword="25" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[0][10]" dword="25" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[0][11]" dword="25" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[0][12]" dword="26" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[0][13]" dword="26" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[0][14]" dword="26" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[0][15]" dword="26" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[0][16]" dword="27" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[0][17]" dword="27" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[0][18]" dword="27" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[1][0]" dword="28" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[1][1]" dword="28" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[1][2]" dword="28" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[1][3]" dword="28" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[1][4]" dword="29" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[1][5]" dword="29" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[1][6]" dword="29" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[1][7]" dword="29" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[1][8]" dword="30" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[1][9]" dword="30" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[1][10]" dword="30" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[1][11]" dword="30" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[1][12]" dword="31" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[1][13]" dword="31" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[1][14]" dword="31" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[1][15]" dword="31" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[1][16]" dword="32" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[1][17]" dword="32" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[1][18]" dword="32" bits="23:16" type="uint" />
+    <field name="RefLFDelta0" dword="33" bits="6:0" type="int" />
+    <field name="RefLFDelta1" dword="33" bits="14:8" type="int" />
+    <field name="RefLFDelta2" dword="33" bits="22:16" type="int" />
+    <field name="RefLFDelta3" dword="33" bits="30:24" type="int" />
+    <field name="ModeLFDelta0" dword="34" bits="6:0" type="int" />
+    <field name="ModeLFDelta1" dword="34" bits="14:8" type="int" />
+    <field name="ModeLFDelta2" dword="34" bits="22:16" type="int" />
+    <field name="ModeLFDelta3" dword="34" bits="30:24" type="int" />
+    <field name="Segmentation ID Stream - Address" dword="35" bits="47:0" type="uint" />
+    <field name="Segmentation ID Stream - Age for QUADLRU" dword="37" bits="1:0" type="uint" />
+    <field name="Segmentation ID Stream - Target Cache" dword="37" bits="4:3" type="uint">
+      <value name="Use Cacheability Controls From Page Table / UC with Fence" value="0" />
+      <value name="Uncacheable" value="1" />
+      <value name="Writethrough" value="2" />
+      <value name="Writeback" value="3" />
+    </field>
+    <field name="Segmentation ID Stream - Cacheability Control" dword="37" bits="6:5" type="uint">
+      <value name="Use Cacheability Controls From Page Table / UC with Fence" value="0" />
+      <value name="Uncacheable" value="1" />
+      <value name="Writethrough" value="2" />
+      <value name="Writeback" value="3" />
+    </field>
+    <field name="Segmentation ID Stream - Arbitration Priority Control" dword="37" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+  </instruction>
+  <instruction name="MI_ARB_ON_OFF" bias="1" length="1">
+    <field name="Arbitration Enable" dword="0" bits="0:0" type="bool" default="1" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="8" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_ATOMIC" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="ATOMIC OPCODE" dword="0" bits="15:8" type="uint" />
+    <field name="Return Data Control" dword="0" bits="16:16" type="uint" />
+    <field name="CS STALL" dword="0" bits="17:17" type="uint" />
+    <field name="Inline Data" dword="0" bits="18:18" type="uint" />
+    <field name="Data Size" dword="0" bits="20:19" type="uint">
+      <value name="DWORD" value="0" />
+      <value name="QWORD" value="1" />
+      <value name="OCTWORD" value="2" />
+      <value name="RESERVED" value="3" />
+    </field>
+    <field name="Post-Sync Operation" dword="0" bits="21:21" type="bool" />
+    <field name="Memory Type" dword="0" bits="22:22" type="uint">
+      <value name="Per Process Graphics Address" value="0" />
+      <value name="Global Graphics Address" value="1" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="47" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Memory Address" dword="1" bits="47:2" type="address" />
+    <field name="Operand1 Data Dword 0" dword="3" bits="31:0" type="uint" />
+    <field name="Operand2 Data Dword 0" dword="4" bits="31:0" type="uint" />
+    <field name="Operand1 Data Dword 1" dword="5" bits="31:0" type="uint" />
+    <field name="Operand2 Data Dword 1" dword="6" bits="31:0" type="uint" />
+    <field name="Operand1 Data Dword 2" dword="7" bits="31:0" type="uint" />
+    <field name="Operand2 Data Dword 2" dword="8" bits="31:0" type="uint" />
+    <field name="Operand1 Data Dword 3" dword="9" bits="31:0" type="uint" />
+    <field name="Operand2 Data Dword 3" dword="10" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MI_BATCH_BUFFER_START" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Address Space Indicator" dword="0" bits="8:8" type="uint" prefix="ASI">
+      <value name="GGTT" value="0" />
+      <value name="PPGTT" value="1" />
+    </field>
+    <field name="Resource Streamer Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Predication Enable" dword="0" bits="15:15" type="bool" />
+    <field name="Add Offset Enable" dword="0" bits="16:16" type="bool" />
+    <field name="Second Level Batch Buffer" dword="0" bits="22:22" type="uint">
+      <value name="First level batch" value="0" />
+      <value name="Second level batch" value="1" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="49" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Batch Buffer Start Address" dword="1" bits="47:2" type="address" />
+  </instruction>
+  <instruction name="MI_CLFLUSH" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="9:0" type="uint" default="1" />
+    <field name="Use Global GTT" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="39" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Starting Cacheline Offset" dword="1" bits="11:6" type="uint" />
+    <field name="Page Base Address" dword="1" bits="47:12" type="address" />
+    <group count="0" dword="3" size="32">
+      <field name="DW Representing a Half Cache Line" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MI_CONDITIONAL_BATCH_BUFFER_END" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Compare Semaphore" dword="0" bits="21:21" type="uint" default="0" />
+    <field name="Use Global GTT" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="54" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Compare Data Dword" dword="1" bits="31:0" type="uint" />
+    <field name="Compare Address" dword="2" bits="47:3" type="address" />
+  </instruction>
+  <instruction name="MI_COPY_MEM_MEM" bias="2" length="5">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="Use Global GTT Destination" dword="0" bits="21:21" type="bool" />
+    <field name="Use Global GTT Source" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="46" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Destination Memory Address" dword="1" bits="63:2" type="address" />
+    <field name="Source Memory Address" dword="3" bits="63:2" type="address" />
+  </instruction>
+  <instruction name="MI_FLUSH_DW" bias="2" length="5" engine="blitter|video">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="3" />
+    <field name="Video Pipeline Cache Invalidate" dword="0" bits="7:7" type="bool" />
+    <field name="Notify Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Post-Sync Operation" dword="0" bits="15:14" type="uint" />
+    <field name="TLB Invalidate" dword="0" bits="18:18" type="bool" />
+    <field name="Store Data Index" dword="0" bits="21:21" type="uint" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="38" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Destination Address Type" dword="1" bits="2:2" type="uint" prefix="DAT">
+      <value name="PPGTT" value="0" />
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Address" dword="1" bits="47:3" type="address" />
+    <field name="Immediate Data" dword="3" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="MI_LOAD_REGISTER_IMM" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Byte Write Disables" dword="0" bits="11:8" type="uint" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="34" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Register Offset" dword="1" bits="22:2" type="offset" />
+    <field name="Data DWord" dword="2" bits="31:0" type="uint" />
+    <group count="0" dword="2" size="64">
+      <field name="Register Offset" dword="0" bits="22:2" type="offset" />
+      <field name="Data DWord" dword="1" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MI_LOAD_REGISTER_MEM" bias="2" length="4">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="Async Mode Enable" dword="0" bits="21:21" type="bool" />
+    <field name="Use Global GTT" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="41" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Register Address" dword="1" bits="22:2" type="offset" />
+    <field name="Memory Address" dword="2" bits="63:2" type="address" />
+  </instruction>
+  <instruction name="MI_LOAD_SCAN_LINES_INCL" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="0" />
+    <field name="Scan Line Event Done Forward" dword="0" bits="18:17" type="uint" />
+    <field name="Display (Plane) Select" dword="0" bits="21:19" type="uint">
+      <value name="Display Plane A" value="0" />
+      <value name="Display Plane B" value="1" />
+      <value name="Display Plane C" value="4" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="18" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="End Scan Line Number" dword="1" bits="12:0" type="uint" />
+    <field name="Start Scan Line Number" dword="1" bits="28:16" type="uint" />
+  </instruction>
+  <instruction name="MI_LOAD_URB_MEM" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="44" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="URB Address" dword="1" bits="14:2" type="uint" />
+    <field name="Memory Address" dword="2" bits="63:6" type="address" />
+  </instruction>
+  <instruction name="MI_MATH" bias="2">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="0" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="26" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <group count="0" dword="1" size="32">
+      <field name="Instruction" dword="0" bits="31:0" type="MI_MATH_ALU_INSTRUCTION" />
+    </group>
+  </instruction>
+  <instruction name="MI_REPORT_PERF_COUNT" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="2" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="40" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Use Global GTT" dword="1" bits="0:0" type="bool" />
+    <field name="Core Mode Enable" dword="1" bits="4:4" type="uint" />
+    <field name="Memory Address" dword="1" bits="63:6" type="address" />
+    <field name="Report ID" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MI_RS_STORE_DATA_IMM" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="43" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Core Mode Enable" dword="1" bits="0:0" type="uint" />
+    <field name="Destination Address" dword="1" bits="63:2" type="address" />
+    <field name="Data DWord 0" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MI_SEMAPHORE_SIGNAL" bias="2" length="2">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="Target Engine Select" dword="0" bits="17:15" type="uint">
+      <value name="RCS" value="0" />
+      <value name="VCS0" value="1" />
+      <value name="BCS" value="2" />
+      <value name="VECS" value="3" />
+      <value name="VCS1" value="4" />
+    </field>
+    <field name="Post-Sync Operation" dword="0" bits="21:21" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="27" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Target Context ID" dword="1" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MI_SEMAPHORE_WAIT" bias="2" length="4">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="Compare Operation" dword="0" bits="14:12" type="uint" prefix="COMPARE">
+      <value name="SAD_GREATER_THAN_SDD" value="0" />
+      <value name="SAD_GREATER_THAN_OR_EQUAL_SDD" value="1" />
+      <value name="SAD_LESS_THAN_SDD" value="2" />
+      <value name="SAD_LESS_THAN_OR_EQUAL_SDD" value="3" />
+      <value name="SAD_EQUAL_SDD" value="4" />
+      <value name="SAD_NOT_EQUAL_SDD" value="5" />
+    </field>
+    <field name="Wait Mode" dword="0" bits="15:15" type="uint">
+      <value name="Polling Mode" value="1" />
+      <value name="Signal Mode" value="0" />
+    </field>
+    <field name="Memory Type" dword="0" bits="22:22" type="uint">
+      <value name="Per Process Graphics Address" value="0" />
+      <value name="Global Graphics Address" value="1" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="28" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Semaphore Data Dword" dword="1" bits="31:0" type="uint" />
+    <field name="Semaphore Address" dword="2" bits="31:2" type="address" />
+    <field name="Semaphore Address High" dword="3" bits="15:0" type="address" />
+  </instruction>
+  <instruction name="MI_SET_PREDICATE" bias="1" length="1">
+    <field name="Predicate Enable" dword="0" bits="3:0" type="uint">
+      <value name="NOOP Never" value="0" />
+      <value name="NOOP On Result2 Clear" value="1" />
+      <value name="NOOP On Result2 Set" value="2" />
+      <value name="NOOP On Result Clear" value="3" />
+      <value name="NOOP On Result Set" value="4" />
+      <value name="Execute when one slice enabled." value="5" />
+      <value name="Execute when two slices are enabled." value="6" />
+      <value name="Execute when three slices are enabled." value="7" />
+      <value name="NOOP Always" value="15" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="1" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_STORE_DATA_IMM" bias="2" length="4">
+    <field name="DWord Length" dword="0" bits="9:0" type="uint" default="2" />
+    <field name="Store Qword" dword="0" bits="21:21" type="uint" />
+    <field name="Use Global GTT" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="32" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Core Mode Enable" dword="1" bits="0:0" type="uint" />
+    <field name="Address" dword="1" bits="47:2" type="address" />
+    <field name="Immediate Data" dword="3" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="MI_STORE_DATA_INDEX" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Use Per-Process Hardware Status Page" dword="0" bits="21:21" type="uint" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="33" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Offset" dword="1" bits="11:2" type="uint" />
+    <field name="Data DWord 0" dword="2" bits="31:0" type="uint" />
+    <field name="Data DWord 1" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MI_STORE_REGISTER_MEM" bias="2" length="4">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="Predicate Enable" dword="0" bits="21:21" type="bool" />
+    <field name="Use Global GTT" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="36" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Register Address" dword="1" bits="22:2" type="offset" />
+    <field name="Memory Address" dword="2" bits="63:2" type="address" />
+  </instruction>
+  <instruction name="MI_STORE_URB_MEM" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="45" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="URB Address" dword="1" bits="14:2" type="uint" />
+    <field name="Memory Address" dword="2" bits="63:6" type="address" />
+  </instruction>
+  <instruction name="MI_TOPOLOGY_FILTER" bias="1" length="1" engine="render">
+    <field name="Topology Filter Value" dword="0" bits="5:0" type="3D_Prim_Topo_Type" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="13" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_WAIT_FOR_EVENT" bias="1" length="1" engine="render|blitter">
+    <field name="Display Pipe A Scan Line Wait Enable" dword="0" bits="0:0" type="bool" />
+    <field name="Display Plane A Flip Pending Wait Enable" dword="0" bits="1:1" type="bool" />
+    <field name="Display Sprite A Flip Pending Wait Enable" dword="0" bits="2:2" type="bool" />
+    <field name="Display Pipe A Vertical Blank Wait Enable" dword="0" bits="3:3" type="bool" />
+    <field name="Display Pipe B Scan Line Wait Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Display Plane B Flip Pending Wait Enable" dword="0" bits="9:9" type="bool" />
+    <field name="Display Sprite B Flip Pending Wait Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Display Pipe B Vertical Blank Wait Enable" dword="0" bits="11:11" type="bool" />
+    <field name="Display Pipe C Scan Line Wait Enable" dword="0" bits="14:14" type="bool" />
+    <field name="Display Plane C Flip Pending Wait Enable" dword="0" bits="15:15" type="bool" />
+    <field name="Display Sprite C Flip Pending Wait Enable" dword="0" bits="20:20" type="bool" />
+    <field name="Display Pipe C Vertical Blank Wait Enable" dword="0" bits="21:21" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="PIPE_CONTROL" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Depth Cache Flush Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Stall At Pixel Scoreboard" dword="1" bits="1:1" type="bool" />
+    <field name="State Cache Invalidation Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Constant Cache Invalidation Enable" dword="1" bits="3:3" type="bool" />
+    <field name="VF Cache Invalidation Enable" dword="1" bits="4:4" type="bool" />
+    <field name="DC Flush Enable" dword="1" bits="5:5" type="bool" />
+    <field name="Pipe Control Flush Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Notify Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Indirect State Pointers Disable" dword="1" bits="9:9" type="bool" />
+    <field name="Texture Cache Invalidation Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Instruction Cache Invalidate Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Render Target Cache Flush Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Depth Stall Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Post Sync Operation" dword="1" bits="15:14" type="uint">
+      <value name="No Write" value="0" />
+      <value name="Write Immediate Data" value="1" />
+      <value name="Write PS Depth Count" value="2" />
+      <value name="Write Timestamp" value="3" />
+    </field>
+    <field name="Generic Media State Clear" dword="1" bits="16:16" type="bool" />
+    <field name="TLB Invalidate" dword="1" bits="18:18" type="bool" />
+    <field name="Global Snapshot Count Reset" dword="1" bits="19:19" type="bool" />
+    <field name="Command Streamer Stall Enable" dword="1" bits="20:20" type="bool" />
+    <field name="Store Data Index" dword="1" bits="21:21" type="uint" />
+    <field name="LRI Post Sync Operation" dword="1" bits="23:23" type="uint">
+      <value name="No LRI Operation" value="0" />
+      <value name="MMIO Write Immediate Data" value="1" />
+    </field>
+    <field name="Destination Address Type" dword="1" bits="24:24" type="uint" prefix="DAT">
+      <value name="PPGTT" value="0" />
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Address" dword="2" bits="47:2" type="address" />
+    <field name="Immediate Data" dword="4" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="STATE_BASE_ADDRESS" bias="2" length="16" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="14" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="1" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="General State Base Address Modify Enable" dword="1" bits="0:0" type="bool" />
+    <field name="General State MOCS" dword="1" bits="10:4" type="uint" nonzero="true" />
+    <field name="General State Base Address" dword="1" bits="63:12" type="address" />
+    <field name="Stateless Data Port Access MOCS" dword="3" bits="22:16" type="uint" nonzero="true" />
+    <field name="Surface State Base Address Modify Enable" dword="4" bits="0:0" type="bool" />
+    <field name="Surface State MOCS" dword="4" bits="10:4" type="uint" nonzero="true" />
+    <field name="Surface State Base Address" dword="4" bits="63:12" type="address" />
+    <field name="Dynamic State Base Address Modify Enable" dword="6" bits="0:0" type="bool" />
+    <field name="Dynamic State MOCS" dword="6" bits="10:4" type="uint" nonzero="true" />
+    <field name="Dynamic State Base Address" dword="6" bits="63:12" type="address" />
+    <field name="Indirect Object Base Address Modify Enable" dword="8" bits="0:0" type="bool" />
+    <field name="Indirect Object MOCS" dword="8" bits="10:4" type="uint" nonzero="true" />
+    <field name="Indirect Object Base Address" dword="8" bits="63:12" type="address" />
+    <field name="Instruction Base Address Modify Enable" dword="10" bits="0:0" type="bool" />
+    <field name="Instruction MOCS" dword="10" bits="10:4" type="uint" nonzero="true" />
+    <field name="Instruction Base Address" dword="10" bits="63:12" type="address" />
+    <field name="General State Buffer Size Modify Enable" dword="12" bits="0:0" type="bool" />
+    <field name="General State Buffer Size" dword="12" bits="31:12" type="uint" />
+    <field name="Dynamic State Buffer Size Modify Enable" dword="13" bits="0:0" type="bool" />
+    <field name="Dynamic State Buffer Size" dword="13" bits="31:12" type="uint" />
+    <field name="Indirect Object Buffer Size Modify Enable" dword="14" bits="0:0" type="bool" />
+    <field name="Indirect Object Buffer Size" dword="14" bits="31:12" type="uint" />
+    <field name="Instruction Buffer size Modify Enable" dword="15" bits="0:0" type="bool" />
+    <field name="Instruction Buffer Size" dword="15" bits="31:12" type="uint" />
+  </instruction>
+  <instruction name="STATE_SIP" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="2" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="System Instruction Pointer" dword="1" bits="63:4" type="offset" />
+  </instruction>
+  <instruction name="SWTESS_BASE_ADDRESS" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="3" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="SW Tessellation MOCS" dword="1" bits="11:8" type="uint" nonzero="true" />
+    <field name="SW Tessellation Base Address" dword="1" bits="47:12" type="address" />
+  </instruction>
+  <register name="ACTHD_UDW" length="1" num="0x205c">
+    <field name="Head Pointer Upper DWORD" dword="0" bits="15:0" type="uint" default="0" />
+  </register>
+  <register name="BCS_ACTHD_UDW" length="1" num="0x2205c">
+    <field name="Head Pointer Upper DWORD" dword="0" bits="15:0" type="uint" default="0" />
+  </register>
+  <register name="CACHE_MODE_1" length="1" num="0x7004">
+    <field name="RCZ Read after expansion control fix 2" dword="0" bits="2:2" type="bool" />
+    <field name="Depth Read Hit Write-Only Optimization Disable" dword="0" bits="3:3" type="bool" />
+    <field name="MCS Cache Disable" dword="0" bits="5:5" type="bool" />
+    <field name="4X4 RCPFE-STC Optimization Disable" dword="0" bits="6:6" type="bool" />
+    <field name="Sampler Cache Set XOR selection" dword="0" bits="8:7" type="uint" />
+    <field name="NP PMA Fix Enable" dword="0" bits="11:11" type="uint" />
+    <field name="HIZ Eviction Policy" dword="0" bits="12:12" type="uint" />
+    <field name="NP Early Z Fails Disable" dword="0" bits="13:13" type="uint" />
+    <field name="MSC Resolve Optimization Disable" dword="0" bits="14:14" type="uint" />
+    <field name="RCZ Read after expansion control fix 2 Mask" dword="0" bits="18:18" type="bool" />
+    <field name="Depth Read Hit Write-Only Optimization Disable Mask" dword="0" bits="19:19" type="bool" />
+    <field name="MCS Cache Disable Mask" dword="0" bits="21:21" type="bool" />
+    <field name="4X4 RCPFE-STC Optimization Disable Mask" dword="0" bits="22:22" type="bool" />
+    <field name="Sampler Cache Set XOR selection Mask" dword="0" bits="24:23" type="uint" />
+    <field name="NP PMA Fix Enable Mask" dword="0" bits="27:27" type="uint" />
+    <field name="HIZ Eviction Policy Mask" dword="0" bits="28:28" type="uint" />
+    <field name="NP Early Z Fails Disable Mask" dword="0" bits="29:29" type="uint" />
+    <field name="MSC Resolve Optimization Disable Mask" dword="0" bits="30:30" type="uint" />
+  </register>
+  <register name="FAULT_REG" length="1" num="0x4094">
+    <field name="Valid Bit" dword="0" bits="0:0" type="bool" />
+    <field name="Fault Type" dword="0" bits="2:1" type="uint">
+      <value name="Invalid PTE Fault" value="0" />
+      <value name="Invalid PDE Fault" value="1" />
+      <value name="Invalid PDPE Fault" value="2" />
+      <value name="Invalid PML4E Fault" value="3" />
+    </field>
+    <field name="SRCID of Fault" dword="0" bits="10:3" type="uint" />
+    <field name="GTTSEL" dword="0" bits="11:11" type="uint">
+      <value name="PPGTT" value="0" />
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Engine ID" dword="0" bits="14:12" type="uint">
+      <value name="GFX" value="0" />
+      <value name="MFX0" value="1" />
+      <value name="MFX1" value="2" />
+      <value name="VEBX" value="3" />
+      <value name="BLT" value="4" />
+      <value name="GUC" value="5" />
+    </field>
+  </register>
+  <register name="GFX_ARB_ERROR_RPT" length="1" num="0x40a0">
+    <field name="TLB Page Fault Error" dword="0" bits="0:0" type="bool" />
+    <field name="RSTRM PAVP Read Invalid" dword="0" bits="1:1" type="bool" />
+    <field name="Invalid Page Directory Entry Error" dword="0" bits="2:2" type="bool" />
+    <field name="ROSTRM PAVP Invalid Physical Address" dword="0" bits="3:3" type="bool" />
+    <field name="TLB Page VTD Translation Error" dword="0" bits="4:4" type="bool" />
+    <field name="WRDP PAVP Invalid" dword="0" bits="5:5" type="bool" />
+    <field name="Page Directory Entry VTD Translation Error" dword="0" bits="6:6" type="bool" />
+    <field name="Unloaded PD Error" dword="0" bits="8:8" type="bool" />
+    <field name="GuC VTd translation Page Fault 2nd level (Undefined doorbell)" dword="0" bits="9:9" type="bool" />
+    <field name="Non WB memory type for Advanced Context" dword="0" bits="10:10" type="bool" />
+    <field name="PASID Not Enabled" dword="0" bits="11:11" type="bool" />
+    <field name="PASID Boundary Violation" dword="0" bits="12:12" type="bool" />
+    <field name="PASID Not Valid" dword="0" bits="13:13" type="bool" />
+    <field name="PASID Was Zero For Untranslated Request" dword="0" bits="14:14" type="bool" />
+    <field name="Context Was Not Marked As Present When Doing DMA" dword="0" bits="15:15" type="bool" />
+  </register>
+  <register name="L3CNTLREG" length="1" num="0x7034">
+    <field name="SLM Enable" dword="0" bits="0:0" type="bool" />
+    <field name="URB Allocation" dword="0" bits="7:1" type="uint" />
+    <field name="RO Allocation" dword="0" bits="17:11" type="uint" />
+    <field name="DC Allocation" dword="0" bits="24:18" type="uint" />
+    <field name="All Allocation" dword="0" bits="31:25" type="uint" />
+  </register>
+  <register name="RCS_RING_BUFFER_CTL" length="1" num="0x203c">
+    <field name="Ring Buffer Enable" dword="0" bits="0:0" type="bool" />
+    <field name="Automatic Report Head Pointer" dword="0" bits="2:1" type="uint">
+      <value name="MI_AUTOREPORT_OFF" value="0" />
+      <value name="MI_AUTOREPORT_64KB" value="1" />
+      <value name="MI_AUTOREPORT_4KB" value="2" />
+      <value name="MI_AUTOREPORT_128KB" value="3" />
+    </field>
+    <field name="Semaphore Wait" dword="0" bits="10:10" type="bool" />
+    <field name="RBWait" dword="0" bits="11:11" type="bool" />
+    <field name="Buffer Length (in pages - 1)" dword="0" bits="20:12" type="uint" />
+  </register>
+  <register name="ROW_INSTDONE" length="1" num="0xe164">
+    <field name="BC Done" dword="0" bits="0:0" type="bool" />
+    <field name="PSD Done" dword="0" bits="1:1" type="bool" />
+    <field name="DAPR Done" dword="0" bits="3:3" type="bool" />
+    <field name="TDL Done" dword="0" bits="6:6" type="bool" />
+    <field name="IC Done" dword="0" bits="12:12" type="bool" />
+    <field name="MA0 Done" dword="0" bits="15:15" type="bool" />
+    <field name="EU00 Done SS0" dword="0" bits="16:16" type="bool" />
+    <field name="EU01 Done SS0" dword="0" bits="17:17" type="bool" />
+    <field name="EU02 Done SS0" dword="0" bits="18:18" type="bool" />
+    <field name="EU03 Done SS0" dword="0" bits="19:19" type="bool" />
+    <field name="EU10 Done SS0" dword="0" bits="21:21" type="bool" />
+    <field name="EU11 Done SS0" dword="0" bits="22:22" type="bool" />
+    <field name="EU12 Done SS0" dword="0" bits="23:23" type="bool" />
+    <field name="EU13 Done SS0" dword="0" bits="24:24" type="bool" />
+    <field name="MA1 Done SS0" dword="0" bits="26:26" type="bool" />
+  </register>
+  <register name="SAMPLER_INSTDONE" length="1" num="0xe160">
+    <field name="IME Done" dword="0" bits="0:0" type="bool" />
+    <field name="PL0 Done" dword="0" bits="1:1" type="bool" />
+    <field name="SO0 Done" dword="0" bits="2:2" type="bool" />
+    <field name="DG0 Done" dword="0" bits="3:3" type="bool" />
+    <field name="FT0 Done" dword="0" bits="4:4" type="bool" />
+    <field name="DM0 Done" dword="0" bits="5:5" type="bool" />
+    <field name="SC Done" dword="0" bits="6:6" type="bool" />
+    <field name="FL0 Done" dword="0" bits="7:7" type="bool" />
+    <field name="QC Done" dword="0" bits="8:8" type="bool" />
+    <field name="SVSM Done" dword="0" bits="9:9" type="bool" />
+    <field name="SI0 Done" dword="0" bits="10:10" type="bool" />
+    <field name="MT0 Done" dword="0" bits="11:11" type="bool" />
+    <field name="AVS Done" dword="0" bits="12:12" type="bool" />
+    <field name="IEF Done" dword="0" bits="13:13" type="bool" />
+    <field name="CRE Done" dword="0" bits="14:14" type="bool" />
+    <field name="SVSM ARB3" dword="0" bits="15:15" type="bool" />
+    <field name="SVSM ARB2" dword="0" bits="16:16" type="bool" />
+    <field name="SVSM ARB1" dword="0" bits="17:17" type="bool" />
+    <field name="SVSM Adapter" dword="0" bits="18:18" type="bool" />
+    <field name="BDM Done" dword="0" bits="19:19" type="bool" />
+  </register>
+  <register name="SC_INSTDONE" length="1" num="0x7100">
+    <field name="SVL Done" dword="0" bits="0:0" type="bool" />
+    <field name="WMFE Done" dword="0" bits="1:1" type="bool" />
+    <field name="WMBE Done" dword="0" bits="2:2" type="bool" />
+    <field name="HIZ Done" dword="0" bits="3:3" type="bool" />
+    <field name="STC Done" dword="0" bits="4:4" type="bool" />
+    <field name="IZ Done" dword="0" bits="5:5" type="bool" />
+    <field name="SBE Done" dword="0" bits="6:6" type="bool" />
+    <field name="RCZ Done" dword="0" bits="8:8" type="bool" />
+    <field name="RCC Done" dword="0" bits="9:9" type="bool" />
+    <field name="RCPBE Done" dword="0" bits="10:10" type="bool" />
+    <field name="RCPFE Done" dword="0" bits="11:11" type="bool" />
+    <field name="DAPB Done" dword="0" bits="12:12" type="bool" />
+    <field name="DAPRBE Done" dword="0" bits="13:13" type="bool" />
+    <field name="SARB Done" dword="0" bits="15:15" type="bool" />
+    <field name="DC0 Done" dword="0" bits="16:16" type="bool" />
+    <field name="DC1 Done" dword="0" bits="17:17" type="bool" />
+    <field name="DC2 Done" dword="0" bits="18:18" type="bool" />
+    <field name="GW0 Done" dword="0" bits="20:20" type="bool" />
+    <field name="GW1 Done" dword="0" bits="21:21" type="bool" />
+    <field name="GW2 Done" dword="0" bits="22:22" type="bool" />
+    <field name="TDC Done" dword="0" bits="24:24" type="bool" />
+  </register>
+  <register name="VCS2_RING_BUFFER_CTL" length="1" num="0x1203c">
+    <field name="Ring Buffer Enable" dword="0" bits="0:0" type="bool" />
+    <field name="Automatic Report Head Pointer" dword="0" bits="2:1" type="uint">
+      <value name="MI_AUTOREPORT_OFF" value="0" />
+      <value name="MI_AUTOREPORT_64KB" value="1" />
+      <value name="MI_AUTOREPORT_4KB" value="2" />
+      <value name="MI_AUTOREPORT_128KB" value="3" />
+    </field>
+    <field name="Disable Register Accesses" dword="0" bits="8:8" type="bool" />
+    <field name="Semaphore Wait" dword="0" bits="10:10" type="bool" />
+    <field name="RBWait" dword="0" bits="11:11" type="bool" />
+    <field name="Buffer Length (in pages - 1)" dword="0" bits="20:12" type="uint" />
+  </register>
+  <register name="VCS_ACTHD_UDW" length="1" num="0x1205c">
+    <field name="Head Pointer Upper DWORD" dword="0" bits="15:0" type="uint" default="0" />
+  </register>
+  <register name="VCS_INSTDONE" length="1" num="0x1206c">
+    <field name="Ring Enable" dword="0" bits="0:0" type="bool" />
+    <field name="USB Done" dword="0" bits="1:1" type="bool" />
+    <field name="QRC Done" dword="0" bits="2:2" type="bool" />
+    <field name="SEC Done" dword="0" bits="3:3" type="bool" />
+    <field name="MPC Done" dword="0" bits="4:4" type="bool" />
+    <field name="VFT Done" dword="0" bits="5:5" type="bool" />
+    <field name="BSP Done" dword="0" bits="6:6" type="bool" />
+    <field name="VLF Done" dword="0" bits="7:7" type="bool" />
+    <field name="VOP Done" dword="0" bits="8:8" type="bool" />
+    <field name="VMC Done" dword="0" bits="9:9" type="bool" />
+    <field name="VIP Done" dword="0" bits="10:10" type="bool" />
+    <field name="VIT Done" dword="0" bits="11:11" type="bool" />
+    <field name="VDS Done" dword="0" bits="12:12" type="bool" />
+    <field name="VMX Done" dword="0" bits="13:13" type="bool" />
+    <field name="VCP Done" dword="0" bits="14:14" type="bool" />
+    <field name="VCD Done" dword="0" bits="15:15" type="bool" />
+    <field name="VAD Done" dword="0" bits="16:16" type="bool" />
+    <field name="VMD Done" dword="0" bits="17:17" type="bool" />
+    <field name="VIS Done" dword="0" bits="18:18" type="bool" />
+    <field name="VAC Done" dword="0" bits="19:19" type="bool" />
+    <field name="VAM Done" dword="0" bits="20:20" type="bool" />
+    <field name="JPG Done" dword="0" bits="21:21" type="bool" />
+    <field name="VBP Done" dword="0" bits="22:22" type="bool" />
+    <field name="VHR Done" dword="0" bits="23:23" type="bool" />
+    <field name="VCI Done" dword="0" bits="24:24" type="bool" />
+    <field name="VCR Done" dword="0" bits="25:25" type="bool" />
+    <field name="VIN Done" dword="0" bits="26:26" type="bool" />
+    <field name="VPR Done" dword="0" bits="27:27" type="bool" />
+    <field name="VTQ Done" dword="0" bits="28:28" type="bool" />
+    <field name="Reserved" dword="0" bits="29:29" type="bool" />
+    <field name="VCS Done" dword="0" bits="30:30" type="bool" />
+    <field name="GAC Done" dword="0" bits="31:31" type="bool" />
+  </register>
+  <register name="VECS_ACTHD_UDW" length="1" num="0x1a05c">
+    <field name="Head Pointer Upper DWORD" dword="0" bits="15:0" type="uint" default="0" />
+  </register>
+  <register name="VECS_INSTDONE" length="1" num="0x1a06c">
+    <field name="Ring Enable" dword="0" bits="0:0" type="bool" />
+    <field name="VECS Done" dword="0" bits="30:30" type="bool" />
+    <field name="GAM Done" dword="0" bits="31:31" type="bool" />
+  </register>
+</genxml>
diff --git a/lib/genxml/gen90.xml b/lib/genxml/gen90.xml
new file mode 100644
index 000000000..6af7c2b19
--- /dev/null
+++ b/lib/genxml/gen90.xml
@@ -0,0 +1,4192 @@
+<?xml version='1.0' encoding='utf-8'?>
+<genxml name="SKL" gen="9">
+  <import name="gen80.xml">
+    <exclude name="Clear Color" />
+    <exclude name="INSTPM" />
+    <exclude name="MEMORY_OBJECT_CONTROL_STATE" />
+    <exclude name="MEMORY_OBJECT_CONTROL_STATE_CHV" />
+    <exclude name="MI_URB_CLEAR" />
+    <exclude name="RPSTAT1" />
+    <exclude name="SWTESS_BASE_ADDRESS" />
+  </import>
+  <enum name="Atomic_OPCODE" prefix="MI_ATOMIC_OP">
+    <value name="AND" value="0x01" />
+    <value name="OR" value="0x02" />
+    <value name="XOR" value="0x03" />
+    <value name="MOVE" value="0x04" />
+    <value name="INC" value="0x05" />
+    <value name="DEC" value="0x06" />
+    <value name="ADD" value="0x07" />
+    <value name="SUB" value="0x08" />
+    <value name="RSUB" value="0x09" />
+    <value name="IMAX" value="0x0a" />
+    <value name="IMIN" value="0x0b" />
+    <value name="UMAX" value="0x0c" />
+    <value name="UMIN" value="0x0d" />
+    <value name="CMP_WR" value="0x0e" />
+    <value name="PREDEC" value="0x0f" />
+    <value name="AND8B" value="0x21" />
+    <value name="OR8B" value="0x22" />
+    <value name="XOR8B" value="0x23" />
+    <value name="MOVE8B" value="0x24" />
+    <value name="INC8B" value="0x25" />
+    <value name="DEC8B" value="0x26" />
+    <value name="ADD8B" value="0x27" />
+    <value name="SUB8B" value="0x28" />
+    <value name="RSUB8B" value="0x29" />
+    <value name="IMAX8B" value="0x2a" />
+    <value name="IMIN8B" value="0x2b" />
+    <value name="UMAX8B" value="0x2c" />
+    <value name="UMIN8B" value="0x2d" />
+    <value name="CMP_WR8B" value="0x2e" />
+    <value name="PREDEC8B" value="0x2f" />
+    <value name="CMP_WR16B" value="0x4e" />
+  </enum>
+  <enum name="Attribute_Component_Format" prefix="ACF">
+    <value name="disabled" value="0" />
+    <value name=".xy" value="1" />
+    <value name=".xyz" value="2" />
+    <value name=".xyzw" value="3" />
+  </enum>
+  <struct name="COLOR_CALC_STATE" length="6">
+    <field name="Alpha Test Format" dword="0" bits="0:0" type="uint">
+      <value name="ALPHATEST_UNORM8" value="0" />
+      <value name="ALPHATEST_FLOAT32" value="1" />
+    </field>
+    <field name="Round Disable Function Disable" dword="0" bits="15:15" type="bool" />
+    <field name="Alpha Reference Value As UNORM8" dword="1" bits="31:0" type="uint" />
+    <field name="Alpha Reference Value As FLOAT32" dword="1" bits="31:0" type="float" />
+    <field name="Blend Constant Color Red" dword="2" bits="31:0" type="float" />
+    <field name="Blend Constant Color Green" dword="3" bits="31:0" type="float" />
+    <field name="Blend Constant Color Blue" dword="4" bits="31:0" type="float" />
+    <field name="Blend Constant Color Alpha" dword="5" bits="31:0" type="float" />
+  </struct>
+  <struct name="FRAMEDELTAQP" length="2">
+    <group count="8" dword="0" size="8">
+      <field name="Frame Delta QP" dword="0" bits="7:0" type="int" />
+    </group>
+  </struct>
+  <struct name="FRAMEDELTAQPRANGE" length="2">
+    <group count="8" dword="0" size="8">
+      <field name="Frame Delta QP Range" dword="0" bits="7:0" type="uint" />
+    </group>
+  </struct>
+  <struct name="HEVC_ARBITRATION_PRIORITY" length="1">
+    <field name="Priority" dword="0" bits="1:0" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+  </struct>
+  <struct name="MEMORYADDRESSATTRIBUTES" length="1">
+    <field name="MOCS" dword="0" bits="6:0" type="uint" nonzero="true" />
+    <field name="Arbitration Priority Control" dword="0" bits="8:7" type="HEVC_ARBITRATION_PRIORITY" />
+    <field name="Memory Compression Enable" dword="0" bits="9:9" type="bool" />
+    <field name="Memory Compression Mode" dword="0" bits="10:10" type="uint" />
+    <field name="Row Store Scratch Buffer Cache Select" dword="0" bits="12:12" type="uint">
+      <value name="LLC" value="0" />
+      <value name="Internal Media Storage" value="1" />
+    </field>
+    <field name="Tiled Resource Mode" dword="0" bits="14:13" type="uint">
+      <value name="TRMODE_NONE" value="0" />
+      <value name="TRMODE_TILEYF" value="1" />
+      <value name="TRMODE_TILEYS" value="2" />
+    </field>
+  </struct>
+  <struct name="HCP_PAK_INSERT_OBJECT_INDIRECT_PAYLOAD" length="4">
+    <field name="Indirect Payload Data Size in bits" dword="0" bits="31:0" type="uint" />
+    <field name="Indirect Payload Base Address" dword="1" bits="63:0" type="address" />
+    <field name="Indirect Payload Base Address2" dword="3" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+  </struct>
+  <struct name="HCP_REF_LIST_ENTRY" length="1">
+    <field name="Reference Picture tb Value" dword="0" bits="7:0" type="uint" />
+    <field name="List Entry" dword="0" bits="10:8" type="uint" />
+    <field name="Chroma Weighted Prediction" dword="0" bits="11:11" type="uint">
+      <value name="Default" value="0" />
+      <value name="Explicit" value="1" />
+    </field>
+    <field name="Luma Weighted Prediction" dword="0" bits="12:12" type="uint">
+      <value name="Default" value="0" />
+      <value name="Explicit" value="1" />
+    </field>
+    <field name="Long Term Reference" dword="0" bits="13:13" type="bool" />
+    <field name="Field Pic" dword="0" bits="14:14" type="bool" />
+    <field name="Top Field" dword="0" bits="15:15" type="bool" />
+  </struct>
+  <struct name="HCP_TILE_POSITION_IN_CTB" length="1">
+    <field name="CtbPos0+i" dword="0" bits="7:0" type="uint" />
+    <field name="CtbPos1+i" dword="0" bits="15:8" type="uint" />
+    <field name="CtbPos2+i" dword="0" bits="23:16" type="uint" />
+    <field name="CtbPos3+i" dword="0" bits="31:24" type="uint" />
+  </struct>
+  <struct name="HCP_WEIGHTOFFSET_CHROMA_ENTRY" length="1">
+    <field name="Delta Chroma Weight LX[0]" dword="0" bits="7:0" type="uint" />
+    <field name="Chroma Offset LX[0]" dword="0" bits="15:8" type="uint" />
+    <field name="Delta Chroma Weight LX[1]" dword="0" bits="23:16" type="uint" />
+    <field name="Chroma Offset LX[1]" dword="0" bits="31:24" type="uint" />
+  </struct>
+  <struct name="HCP_WEIGHTOFFSET_LUMA_ENTRY" length="1">
+    <field name="Delta Luma Weight LX" dword="0" bits="7:0" type="uint" />
+    <field name="Luma Offset LX" dword="0" bits="15:8" type="uint" />
+  </struct>
+  <struct name="HEVC_VP9_RDOQ_LAMBDA_FIELDS" length="1">
+    <field name="Lambda Value 0" dword="0" bits="15:0" type="uint" />
+    <field name="Lambda Value 1" dword="0" bits="31:16" type="uint" />
+  </struct>
+  <struct name="HUC_VIRTUAL_ADDR_REGION" length="3">
+    <field name="Address" dword="0" bits="63:0" type="address" />
+    <field name="Memory Address Attributes" dword="2" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+  </struct>
+  <struct name="IMAGE_STATE_COST" length="2">
+    <field name="MV 0 Cost" dword="0" bits="7:0" type="uint" />
+    <field name="MV 1 Cost" dword="0" bits="15:8" type="uint" />
+    <field name="MV 2 Cost" dword="0" bits="23:16" type="uint" />
+    <field name="MV 3 Cost" dword="0" bits="31:24" type="uint" />
+    <field name="MV 4 Cost" dword="1" bits="7:0" type="uint" />
+    <field name="MV 5 Cost" dword="1" bits="15:8" type="uint" />
+    <field name="MV 6 Cost" dword="1" bits="23:16" type="uint" />
+    <field name="MV 7 Cost" dword="1" bits="31:24" type="uint" />
+  </struct>
+  <struct name="INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT" length="3">
+    <field name="MB Error Concealment P Slice Weight Prediction Disable" dword="0" bits="0:0" type="bool" />
+    <field name="MB Error Concealment P Slice Motion Vectors Override Disable" dword="0" bits="1:1" type="bool" />
+    <field name="MB Error Concealment B Spatial Weight Prediction Disable" dword="0" bits="3:3" type="bool" />
+    <field name="MB Error Concealment B Spatial Motion Vectors Override Disable" dword="0" bits="4:4" type="bool" />
+    <field name="MB Error Concealment B Spatial Prediction Mode" dword="0" bits="7:6" type="uint" />
+    <field name="MB Header Error Handling" dword="0" bits="8:8" type="bool" />
+    <field name="Entropy Error Handling" dword="0" bits="10:10" type="bool" />
+    <field name="MPR Error Handling" dword="0" bits="12:12" type="bool" />
+    <field name="BSD Premature Complete Error Handling" dword="0" bits="14:14" type="bool" />
+    <field name="Concealment Picture ID" dword="0" bits="21:16" type="uint" />
+    <field name="MB Error Concealment B Temporal Weight Prediction Disable" dword="0" bits="24:24" type="bool" />
+    <field name="MB Error Concealment B Temporal Motion Vectors Override Enable" dword="0" bits="25:25" type="bool" />
+    <field name="MB Error Concealment B Temporal Prediction Mode" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Intra PredMode (4x4/8x8 Luma) Error Control" dword="0" bits="29:29" type="uint" />
+    <field name="Init Current MB Number" dword="0" bits="30:30" type="bool" />
+    <field name="Concealment Method" dword="0" bits="31:31" type="uint" />
+    <field name="First MB Bit Offset" dword="1" bits="2:0" type="uint" />
+    <field name="Last Slice" dword="1" bits="3:3" type="bool" />
+    <field name="Emulation Prevention Byte Present" dword="1" bits="4:4" type="bool" />
+    <field name="Fix Prev MB Skipped" dword="1" bits="7:7" type="bool" />
+    <field name="First MB Byte Offset of Slice Data or Slice Header" dword="1" bits="31:16" type="uint" />
+    <field name="Intra Prediction Error Control" dword="2" bits="0:0" type="bool" />
+    <field name="Intra 8x8/4x4 Prediction Error Concealment Control" dword="2" bits="1:1" type="bool" />
+    <field name="B Slice Temporal Inter Concealment Mode" dword="2" bits="6:4" type="uint" />
+    <field name="B Slice Spatial Inter Concealment Mode" dword="2" bits="10:8" type="uint" />
+    <field name="B Slice Inter Direct Type Concealment Mode" dword="2" bits="13:12" type="uint" />
+    <field name="B Slice Concealment Mode" dword="2" bits="15:15" type="uint">
+      <value name="Intra Concealment" value="1" />
+      <value name="Inter Concealment" value="0" />
+    </field>
+    <field name="P Slice Inter Concealment Mode" dword="2" bits="18:16" type="uint" />
+    <field name="P Slice Concealment Mode" dword="2" bits="23:23" type="uint">
+      <value name="Intra Concealment" value="1" />
+      <value name="Inter Concealment" value="0" />
+    </field>
+    <field name="Concealment Reference Picture + Field Bit" dword="2" bits="29:24" type="uint" />
+    <field name="I Slice Concealment Mode" dword="2" bits="31:31" type="uint">
+      <value name="Intra Concealment" value="1" />
+      <value name="Inter Concealment" value="0" />
+    </field>
+  </struct>
+  <struct name="INTERFACE_DESCRIPTOR_DATA" length="8">
+    <field name="Kernel Start Pointer" dword="0" bits="47:6" type="offset" />
+    <field name="Software Exception Enable" dword="2" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="2" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="2" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="2" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Priority" dword="2" bits="17:17" type="uint">
+      <value name="Normal Priority" value="0" />
+      <value name="High Priority" value="1" />
+    </field>
+    <field name="Single Program Flow" dword="2" bits="18:18" type="bool" />
+    <field name="Denorm Mode" dword="2" bits="19:19" type="uint">
+      <value name="Ftz" value="0" />
+      <value name="SetByKernel" value="1" />
+    </field>
+    <field name="Sampler Count" dword="3" bits="4:2" type="uint">
+      <value name="No samplers used" value="0" />
+      <value name="Between 1 and 4 samplers used" value="1" />
+      <value name="Between 5 and 8 samplers used" value="2" />
+      <value name="Between 9 and 12 samplers used" value="3" />
+      <value name="Between 13 and 16 samplers used" value="4" />
+    </field>
+    <field name="Sampler State Pointer" dword="3" bits="31:5" type="offset" />
+    <field name="Binding Table Entry Count" dword="4" bits="4:0" type="uint" />
+    <field name="Binding Table Pointer" dword="4" bits="15:5" type="offset" />
+    <field name="Constant URB Entry Read Offset" dword="5" bits="15:0" type="uint" />
+    <field name="Constant URB Entry Read Length" dword="5" bits="31:16" type="uint" />
+    <field name="Number of Threads in GPGPU Thread Group" dword="6" bits="9:0" type="uint" />
+    <field name="Global Barrier Enable" dword="6" bits="15:15" type="bool" />
+    <field name="Shared Local Memory Size" dword="6" bits="20:16" type="uint">
+      <value name="Encodes 0K" value="0" />
+      <value name="Encodes 1K" value="1" />
+      <value name="Encodes 2K" value="2" />
+      <value name="Encodes 4K" value="3" />
+      <value name="Encodes 8K" value="4" />
+      <value name="Encodes 16K" value="5" />
+      <value name="Encodes 32K" value="6" />
+      <value name="Encodes 64K" value="7" />
+    </field>
+    <field name="Barrier Enable" dword="6" bits="21:21" type="bool" />
+    <field name="Rounding Mode" dword="6" bits="23:22" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Cross-Thread Constant Data Read Length" dword="7" bits="7:0" type="uint" />
+  </struct>
+  <struct name="RENDER_SURFACE_STATE" length="16">
+    <field name="Cube Face Enable - Positive Z" dword="0" bits="0:0" type="bool" />
+    <field name="Cube Face Enable - Negative Z" dword="0" bits="1:1" type="bool" />
+    <field name="Cube Face Enable - Positive Y" dword="0" bits="2:2" type="bool" />
+    <field name="Cube Face Enable - Negative Y" dword="0" bits="3:3" type="bool" />
+    <field name="Cube Face Enable - Positive X" dword="0" bits="4:4" type="bool" />
+    <field name="Cube Face Enable - Negative X" dword="0" bits="5:5" type="bool" />
+    <field name="Media Boundary Pixel Mode" dword="0" bits="7:6" type="uint">
+      <value name="NORMAL_MODE" value="0" />
+      <value name="PROGRESSIVE_FRAME" value="2" />
+      <value name="INTERLACED_FRAME" value="3" />
+    </field>
+    <field name="Render Cache Read Write Mode" dword="0" bits="8:8" type="uint">
+      <value name="Write-Only Cache" value="0" />
+      <value name="Read-Write Cache" value="1" />
+    </field>
+    <field name="Sampler L2 Bypass Mode Disable" dword="0" bits="9:9" type="bool" />
+    <field name="Vertical Line Stride Offset" dword="0" bits="10:10" type="uint" />
+    <field name="Vertical Line Stride" dword="0" bits="11:11" type="uint" />
+    <field name="Tile Mode" dword="0" bits="13:12" type="uint">
+      <value name="LINEAR" value="0" />
+      <value name="WMAJOR" value="1" />
+      <value name="XMAJOR" value="2" />
+      <value name="YMAJOR" value="3" />
+    </field>
+    <field name="Surface Horizontal Alignment" dword="0" bits="15:14" type="uint">
+      <value name="HALIGN_4" value="1" />
+      <value name="HALIGN_8" value="2" />
+      <value name="HALIGN_16" value="3" />
+    </field>
+    <field name="Surface Vertical Alignment" dword="0" bits="17:16" type="uint">
+      <value name="VALIGN_4" value="1" />
+      <value name="VALIGN_8" value="2" />
+      <value name="VALIGN_16" value="3" />
+    </field>
+    <field name="Surface Format" dword="0" bits="27:18" type="uint" />
+    <field name="Surface Array" dword="0" bits="28:28" type="bool" />
+    <field name="Surface Type" dword="0" bits="31:29" type="uint">
+      <value name="SURFTYPE_1D" value="0" />
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_3D" value="2" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_BUFFER" value="4" />
+      <value name="SURFTYPE_STRBUF" value="5" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface QPitch" dword="1" bits="14:0" type="uint" />
+    <field name="Base Mip Level" dword="1" bits="23:19" type="u4.1" />
+    <field name="MOCS" dword="1" bits="30:24" type="uint" nonzero="true" />
+    <field name="Width" dword="2" bits="13:0" type="uint" />
+    <field name="Height" dword="2" bits="29:16" type="uint" />
+    <field name="Surface Pitch" dword="3" bits="17:0" type="uint" />
+    <field name="Depth" dword="3" bits="31:21" type="uint" />
+    <field name="Multisample Position Palette Index" dword="4" bits="2:0" type="uint" />
+    <field name="Number of Multisamples" dword="4" bits="5:3" type="uint">
+      <value name="MULTISAMPLECOUNT_1" value="0" />
+      <value name="MULTISAMPLECOUNT_2" value="1" />
+      <value name="MULTISAMPLECOUNT_4" value="2" />
+      <value name="MULTISAMPLECOUNT_8" value="3" />
+      <value name="MULTISAMPLECOUNT_16" value="4" />
+    </field>
+    <field name="Multisampled Surface Storage Format" dword="4" bits="6:6" type="uint">
+      <value name="MSFMT_MSS" value="0" />
+      <value name="MSFMT_DEPTH_STENCIL" value="1" />
+    </field>
+    <field name="Render Target View Extent" dword="4" bits="17:7" type="uint" />
+    <field name="Minimum Array Element" dword="4" bits="28:18" type="uint" />
+    <field name="Render Target And Sample Unorm Rotation" dword="4" bits="30:29" type="uint">
+      <value name="0DEG" value="0" />
+      <value name="90DEG" value="1" />
+      <value name="180DEG" value="2" />
+      <value name="270DEG" value="3" />
+    </field>
+    <field name="MIP Count / LOD" dword="5" bits="3:0" type="uint" />
+    <field name="Surface Min LOD" dword="5" bits="7:4" type="uint" />
+    <field name="Mip Tail Start LOD" dword="5" bits="11:8" type="uint" />
+    <field name="Coherency Type" dword="5" bits="14:14" type="uint">
+      <value name="GPU coherent" value="0" />
+      <value name="IA coherent" value="1" />
+    </field>
+    <field name="Tiled Resource Mode" dword="5" bits="19:18" type="uint">
+      <value name="NONE" value="0" />
+      <value name="4KB" value="1" />
+      <value name="64KB" value="2" />
+      <value name="TILEYF" value="1" />
+      <value name="TILEYS" value="2" />
+    </field>
+    <field name="EWA Disable For Cube" dword="5" bits="20:20" type="bool" />
+    <field name="Y Offset" dword="5" bits="23:21" type="uint" />
+    <field name="X Offset" dword="5" bits="31:25" type="uint" />
+    <field name="Auxiliary Surface Mode" dword="6" bits="2:0" type="uint">
+      <value name="AUX_NONE" value="0" />
+      <value name="AUX_CCS_D" value="1" />
+      <value name="AUX_APPEND" value="2" />
+      <value name="AUX_HIZ" value="3" />
+      <value name="AUX_CCS_E" value="5" />
+    </field>
+    <field name="Y Offset for U or UV Plane" dword="6" bits="13:0" type="uint" />
+    <field name="Auxiliary Surface Pitch" dword="6" bits="11:3" type="uint" />
+    <field name="Auxiliary Surface QPitch" dword="6" bits="30:16" type="uint" />
+    <field name="X Offset for U or UV Plane" dword="6" bits="29:16" type="uint" />
+    <field name="Separate UV Plane Enable" dword="6" bits="31:31" type="bool" />
+    <field name="Resource Min LOD" dword="7" bits="11:0" type="u4.8" />
+    <field name="Shader Channel Select Alpha" dword="7" bits="18:16" type="Shader Channel Select" />
+    <field name="Shader Channel Select Blue" dword="7" bits="21:19" type="Shader Channel Select" />
+    <field name="Shader Channel Select Green" dword="7" bits="24:22" type="Shader Channel Select" />
+    <field name="Shader Channel Select Red" dword="7" bits="27:25" type="Shader Channel Select" />
+    <field name="Memory Compression Enable" dword="7" bits="30:30" type="bool" />
+    <field name="Memory Compression Mode" dword="7" bits="31:31" type="uint">
+      <value name="Horizontal" value="0" />
+      <value name="Vertical" value="1" />
+    </field>
+    <field name="Surface Base Address" dword="8" bits="63:0" type="address" />
+    <field name="Quilt Width" dword="10" bits="4:0" type="uint" />
+    <field name="Quilt Height" dword="10" bits="9:5" type="uint" />
+    <field name="Auxiliary Surface Base Address" dword="10" bits="63:12" type="address" />
+    <field name="Auxiliary Table Index for Media Compressed Surface" dword="10" bits="31:21" type="uint" />
+    <field name="Y Offset for V Plane" dword="11" bits="13:0" type="uint" />
+    <field name="X Offset for V Plane" dword="11" bits="29:16" type="uint" />
+    <field name="Hierarchical Depth Clear Value" dword="12" bits="31:0" type="float" />
+    <field name="Red Clear Color" dword="12" bits="31:0" type="int" />
+    <field name="Green Clear Color" dword="13" bits="31:0" type="int" />
+    <field name="Blue Clear Color" dword="14" bits="31:0" type="int" />
+    <field name="Alpha Clear Color" dword="15" bits="31:0" type="int" />
+  </struct>
+  <struct name="ROUNDINGPRECISIONTABLE_3_BITS" length="1">
+    <field name="Rounding Precision" dword="0" bits="2:0" type="uint">
+      <value name="+1/16" value="0" />
+      <value name="+2/16" value="1" />
+      <value name="+3/16" value="2" />
+      <value name="+4/16" value="3" />
+      <value name="+5/16" value="4" />
+      <value name="+6/16" value="5" />
+      <value name="+7/16" value="6" />
+      <value name="+8/16" value="7" />
+    </field>
+  </struct>
+  <struct name="SAMPLER_STATE" length="4">
+    <field name="Anisotropic Algorithm" dword="0" bits="0:0" type="uint">
+      <value name="LEGACY" value="0" />
+      <value name="EWA Approximation" value="1" />
+    </field>
+    <field name="Texture LOD Bias" dword="0" bits="13:1" type="s4.8" />
+    <field name="Min Mode Filter" dword="0" bits="16:14" type="uint" prefix="MAPFILTER">
+      <value name="NEAREST" value="0" />
+      <value name="LINEAR" value="1" />
+      <value name="ANISOTROPIC" value="2" />
+      <value name="MONO" value="6" />
+    </field>
+    <field name="Mag Mode Filter" dword="0" bits="19:17" type="uint" prefix="MAPFILTER">
+      <value name="NEAREST" value="0" />
+      <value name="LINEAR" value="1" />
+      <value name="ANISOTROPIC" value="2" />
+      <value name="MONO" value="6" />
+    </field>
+    <field name="Mip Mode Filter" dword="0" bits="21:20" type="uint" prefix="MIPFILTER">
+      <value name="NONE" value="0" />
+      <value name="NEAREST" value="1" />
+      <value name="LINEAR" value="3" />
+    </field>
+    <field name="Coarse LOD Quality Mode" dword="0" bits="26:22" type="uint" />
+    <field name="LOD PreClamp Mode" dword="0" bits="28:27" type="uint" prefix="CLAMP_MODE">
+      <value name="NONE" value="0" />
+      <value name="OGL" value="2" />
+    </field>
+    <field name="Texture Border Color Mode" dword="0" bits="29:29" type="uint">
+      <value name="DX10/OGL" value="0" />
+      <value name="DX9" value="1" />
+    </field>
+    <field name="Sampler Disable" dword="0" bits="31:31" type="bool" />
+    <field name="Cube Surface Control Mode" dword="1" bits="0:0" type="uint">
+      <value name="PROGRAMMED" value="0" />
+      <value name="OVERRIDE" value="1" />
+    </field>
+    <field name="Shadow Function" dword="1" bits="3:1" type="uint" prefix="PREFILTEROP">
+      <value name="ALWAYS" value="0" />
+      <value name="NEVER" value="1" />
+      <value name="LESS" value="2" />
+      <value name="EQUAL" value="3" />
+      <value name="LEQUAL" value="4" />
+      <value name="GREATER" value="5" />
+      <value name="NOTEQUAL" value="6" />
+      <value name="GEQUAL" value="7" />
+    </field>
+    <field name="ChromaKey Mode" dword="1" bits="4:4" type="uint">
+      <value name="KEYFILTER_KILL_ON_ANY_MATCH" value="0" />
+      <value name="KEYFILTER_REPLACE_BLACK" value="1" />
+    </field>
+    <field name="ChromaKey Index" dword="1" bits="6:5" type="uint" />
+    <field name="ChromaKey Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Max LOD" dword="1" bits="19:8" type="u4.8" />
+    <field name="Min LOD" dword="1" bits="31:20" type="u4.8" />
+    <field name="LOD Clamp Magnification Mode" dword="2" bits="0:0" type="uint">
+      <value name="MIPNONE" value="0" />
+      <value name="MIPFILTER" value="1" />
+    </field>
+    <field name="Border Color Pointer" dword="2" bits="23:6" type="offset" />
+    <field name="TCZ Address Control Mode" dword="3" bits="2:0" type="Texture Coordinate Mode" />
+    <field name="TCY Address Control Mode" dword="3" bits="5:3" type="Texture Coordinate Mode" />
+    <field name="TCX Address Control Mode" dword="3" bits="8:6" type="Texture Coordinate Mode" />
+    <field name="Reduction Type Enable" dword="3" bits="9:9" type="bool" />
+    <field name="Non-normalized Coordinate Enable" dword="3" bits="10:10" type="bool" />
+    <field name="Trilinear Filter Quality" dword="3" bits="12:11" type="uint">
+      <value name="FULL" value="0" />
+      <value name="HIGH" value="1" />
+      <value name="MED" value="2" />
+      <value name="LOW" value="3" />
+    </field>
+    <field name="R Address Min Filter Rounding Enable" dword="3" bits="13:13" type="bool" />
+    <field name="R Address Mag Filter Rounding Enable" dword="3" bits="14:14" type="bool" />
+    <field name="V Address Min Filter Rounding Enable" dword="3" bits="15:15" type="bool" />
+    <field name="V Address Mag Filter Rounding Enable" dword="3" bits="16:16" type="bool" />
+    <field name="U Address Min Filter Rounding Enable" dword="3" bits="17:17" type="bool" />
+    <field name="U Address Mag Filter Rounding Enable" dword="3" bits="18:18" type="bool" />
+    <field name="Maximum Anisotropy" dword="3" bits="21:19" type="uint">
+      <value name="RATIO 2:1" value="0" />
+      <value name="RATIO 4:1" value="1" />
+      <value name="RATIO 6:1" value="2" />
+      <value name="RATIO 8:1" value="3" />
+      <value name="RATIO 10:1" value="4" />
+      <value name="RATIO 12:1" value="5" />
+      <value name="RATIO 14:1" value="6" />
+      <value name="RATIO 16:1" value="7" />
+    </field>
+    <field name="Reduction Type" dword="3" bits="23:22" type="uint">
+      <value name="STD_FILTER" value="0" />
+      <value name="COMPARISON" value="1" />
+      <value name="MINIMUM" value="2" />
+      <value name="MAXIMUM" value="3" />
+    </field>
+  </struct>
+  <struct name="SAMPLER_STATE_8X8_AVS_COEFFICIENTS" length="8">
+    <group count="4" dword="0" size="8">
+      <field name="Table 0 Filter Coefficient" dword="0" bits="7:0" type="s1.6" />
+    </group>
+    <group count="4" dword="0" size="32">
+      <field name="Table 1 Filter Coefficient0" dword="0" bits="7:0" type="s1.6" />
+      <field name="Table 1 Filter Coefficient1" dword="0" bits="15:8" type="s1.6" />
+    </group>
+  </struct>
+  <struct name="SFC_AVS_CHROMA_COEFF_TABLE_BODY" length="64">
+    <field name="Table 1X Filter Coefficient[[n],2]" dword="0" bits="7:0" type="s1.6" />
+    <field name="Table 1Y Filter Coefficient[[n],2]" dword="0" bits="15:8" type="s1.6" />
+    <field name="Table 1X Filter Coefficient[[n],3]" dword="0" bits="23:16" type="s1.6" />
+    <field name="Table 1Y Filter Coefficient[[n],3]" dword="0" bits="31:24" type="s1.6" />
+    <field name="Table 1X Filter Coefficient[[n],4]" dword="1" bits="7:0" type="s1.6" />
+    <field name="Table 1Y Filter Coefficient[[n],4]" dword="1" bits="15:8" type="s1.6" />
+    <field name="Table 1X Filter Coefficient[[n],5]" dword="1" bits="23:16" type="s1.6" />
+    <field name="Table 1Y Filter Coefficient[[n],5]" dword="1" bits="31:24" type="s1.6" />
+    <group count="31" dword="2" size="64">
+      <field name="Filter Coefficients" dword="0" bits="63:0" type="uint" />
+    </group>
+  </struct>
+  <struct name="SFC_AVS_LUMA_COEFF_TABLE_BODY" length="128">
+    <field name="Table 0X Filter Coefficient[[n],0]" dword="0" bits="7:0" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],0]" dword="0" bits="15:8" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],1]" dword="0" bits="23:16" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],1]" dword="0" bits="31:24" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],2]" dword="1" bits="7:0" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],2]" dword="1" bits="15:8" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],3]" dword="1" bits="23:16" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],3]" dword="1" bits="31:24" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],4]" dword="2" bits="7:0" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],4]" dword="2" bits="15:8" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],5]" dword="2" bits="23:16" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],5]" dword="2" bits="31:24" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],6]" dword="3" bits="7:0" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],6]" dword="3" bits="15:8" type="s1.6" />
+    <field name="Table 0X Filter Coefficient[[n],7]" dword="3" bits="23:16" type="s1.6" />
+    <field name="Table 0Y Filter Coefficient[[n],7]" dword="3" bits="31:24" type="s1.6" />
+    <group count="31" dword="4" size="128">
+      <field name="Filter Coefficients" dword="0" bits="127:0" type="uint" />
+    </group>
+  </struct>
+  <struct name="SFC_AVS_STATE_BODY" length="2">
+    <field name="Transition Area with 8 Pixels" dword="0" bits="2:0" type="uint" />
+    <field name="Transition Area with 4 Pixels" dword="0" bits="6:4" type="uint" />
+    <field name="Sharpness Level" dword="0" bits="31:24" type="uint" />
+    <field name="Max Derivative 8 Pixels" dword="1" bits="7:0" type="uint" />
+    <field name="Max Derivative 4 Pixels" dword="1" bits="23:16" type="uint" />
+  </struct>
+  <struct name="SFC_IEF_STATE_BODY" length="23">
+    <field name="Gain Factor" dword="0" bits="5:0" type="uint" default="44" />
+    <field name="Weak Edge Threshold" dword="0" bits="11:6" type="uint" default="1" />
+    <field name="Strong Edge Threshold" dword="0" bits="17:12" type="uint" default="8" />
+    <field name="R3x Coefficient" dword="0" bits="22:18" type="u0.5" default="5" />
+    <field name="R3c Coefficient" dword="0" bits="27:23" type="u0.5" default="5" />
+    <field name="Global Noise Estimation" dword="1" bits="7:0" type="uint" />
+    <field name="Non Edge Weight" dword="1" bits="10:8" type="uint" />
+    <field name="Regular Weight" dword="1" bits="13:11" type="uint" />
+    <field name="Strong Edge Weight" dword="1" bits="16:14" type="uint" />
+    <field name="R5x Coefficient" dword="1" bits="21:17" type="u0.5" />
+    <field name="R5cx Coefficient" dword="1" bits="26:22" type="u0.5" />
+    <field name="R5c Coefficient" dword="1" bits="31:27" type="u0.5" />
+    <field name="STD Sin(alpha)" dword="2" bits="7:0" type="s0.7" />
+    <field name="STD Cos(alpha)" dword="2" bits="15:8" type="s0.7" />
+    <field name="Sat_Max" dword="2" bits="21:16" type="uint" />
+    <field name="Hue_Max" dword="2" bits="27:22" type="uint" />
+    <field name="S3U" dword="3" bits="10:0" type="s2.8" />
+    <field name="Diamond Margin" dword="3" bits="14:12" type="uint" />
+    <field name="VY_STD_Enable" dword="3" bits="15:15" type="bool" />
+    <field name="U_Mid" dword="3" bits="23:16" type="uint" />
+    <field name="V_Mid" dword="3" bits="31:24" type="uint" />
+    <field name="Diamond_dv" dword="4" bits="6:0" type="int" />
+    <field name="Diamond_Th" dword="4" bits="12:7" type="uint" />
+    <field name="Diamond_alpha" dword="4" bits="20:13" type="u2.6" />
+    <field name="HS_margin" dword="4" bits="23:21" type="uint" />
+    <field name="Diamond_du" dword="4" bits="30:24" type="int" />
+    <field name="Skin Detail Factor" dword="4" bits="31:31" type="uint">
+      <value name="Detail Revealed" value="0" />
+      <value name="Not Detail Revealed" value="1" />
+    </field>
+    <field name="Y_point_1" dword="5" bits="7:0" type="uint" />
+    <field name="Y_point_2" dword="5" bits="15:8" type="uint" />
+    <field name="Y_point_3" dword="5" bits="23:16" type="uint" />
+    <field name="Y_point_4" dword="5" bits="31:24" type="uint" />
+    <field name="INV_Margin_VYL" dword="6" bits="15:0" type="u0.16" />
+    <field name="INV_Margin_VYU" dword="7" bits="15:0" type="u0.16" />
+    <field name="P0L" dword="7" bits="23:16" type="uint" />
+    <field name="P1L" dword="7" bits="31:24" type="uint" />
+    <field name="P2L" dword="8" bits="7:0" type="uint" />
+    <field name="P3L" dword="8" bits="15:8" type="uint" />
+    <field name="B0L" dword="8" bits="23:16" type="uint" />
+    <field name="B1L" dword="8" bits="31:24" type="uint" />
+    <field name="B2L" dword="9" bits="7:0" type="uint" />
+    <field name="B3L" dword="9" bits="15:8" type="uint" />
+    <field name="S0L" dword="9" bits="26:16" type="s2.8" />
+    <field name="Y_Slope_2" dword="9" bits="31:27" type="u2.3" />
+    <field name="S1L" dword="10" bits="10:0" type="s2.8" />
+    <field name="S2L" dword="10" bits="21:11" type="s2.8" />
+    <field name="S3L" dword="11" bits="10:0" type="s2.8" />
+    <field name="P0U" dword="11" bits="18:11" type="uint" />
+    <field name="P1U" dword="11" bits="26:19" type="uint" />
+    <field name="Y_Slope1" dword="11" bits="31:27" type="u2.3" />
+    <field name="P2U" dword="12" bits="7:0" type="uint" />
+    <field name="P3U" dword="12" bits="15:8" type="uint" />
+    <field name="B0U" dword="12" bits="23:16" type="uint" />
+    <field name="B1U" dword="12" bits="31:24" type="uint" />
+    <field name="B2U" dword="13" bits="7:0" type="uint" />
+    <field name="B3U" dword="13" bits="15:8" type="uint" />
+    <field name="S0U" dword="13" bits="26:16" type="s2.8" />
+    <field name="S1U" dword="14" bits="10:0" type="s2.8" />
+    <field name="S2U" dword="14" bits="21:11" type="s2.8" />
+    <field name="Transform Enable" dword="15" bits="0:0" type="bool" />
+    <field name="YUV Channel Swap" dword="15" bits="1:1" type="bool" />
+    <field name="C0" dword="15" bits="15:3" type="s2.10" />
+    <field name="C1" dword="15" bits="28:16" type="s2.10" />
+    <field name="C2" dword="16" bits="12:0" type="s2.10" />
+    <field name="C3" dword="16" bits="25:13" type="s2.10" />
+    <field name="C4" dword="17" bits="12:0" type="s2.10" />
+    <field name="C5" dword="17" bits="25:13" type="s2.10" />
+    <field name="C6" dword="18" bits="12:0" type="s2.10" />
+    <field name="C7" dword="18" bits="25:13" type="s2.10" />
+    <field name="C8" dword="19" bits="12:0" type="s2.10" />
+    <field name="Offset In 1" dword="20" bits="10:0" type="s2.8" />
+    <field name="Offset Out 1" dword="20" bits="21:11" type="s2.8" />
+    <field name="Offset In 2" dword="21" bits="10:0" type="s2.8" />
+    <field name="Offset Out 2" dword="21" bits="21:11" type="s2.8" />
+    <field name="Offset In 3" dword="22" bits="10:0" type="s2.8" />
+    <field name="Offset Out 3" dword="22" bits="21:11" type="s2.8" />
+  </struct>
+  <struct name="SFC_LOCK_BODY" length="1">
+    <field name="VE-SFC Pipe Select" dword="0" bits="0:0" type="uint" />
+    <field name="Pre-Scaled Output Surface Output Enable" dword="0" bits="1:1" type="bool" />
+  </struct>
+  <struct name="VDENC_SURFACE_CONTROL_BITS" length="1">
+    <field name="MOCS" dword="0" bits="6:0" type="uint" nonzero="true" />
+    <field name="Arbitration Priority Control" dword="0" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Memory Compression Enable" dword="0" bits="9:9" type="bool" />
+    <field name="Memory Compression Mode" dword="0" bits="10:10" type="uint" />
+    <field name="Cache Select" dword="0" bits="12:12" type="uint" />
+    <field name="Tiled Resource Mode" dword="0" bits="14:13" type="uint">
+      <value name="TRMODE_NONE" value="0" />
+      <value name="TRMODE_TILEYF" value="1" />
+      <value name="TRMODE_TILEYS" value="2" />
+    </field>
+  </struct>
+  <struct name="VDENC_PICTURE" length="3">
+    <field name="Address" dword="0" bits="63:0" type="address" />
+    <field name="Picture Fields" dword="2" bits="31:0" type="VDENC_SURFACE_CONTROL_BITS" />
+  </struct>
+  <struct name="VDENC_SURFACE_STATE_FIELDS" length="4">
+    <field name="Cr(V)/Cb(U) Pixel Offset V Direction" dword="0" bits="1:0" type="u0.2" />
+    <field name="Surface Format Byte Swizzle" dword="0" bits="2:2" type="bool" />
+    <field name="Color space selection" dword="0" bits="3:3" type="uint" />
+    <field name="Width" dword="0" bits="17:4" type="uint" />
+    <field name="Height" dword="0" bits="31:18" type="uint" />
+    <field name="Tile Walk" dword="1" bits="0:0" type="uint" prefix="TW">
+      <value name="XMAJOR" value="0" />
+      <value name="YMAJOR" value="1" />
+    </field>
+    <field name="Tiled Surface" dword="1" bits="1:1" type="uint" />
+    <field name="Half Pitch for Chroma" dword="1" bits="2:2" type="bool" />
+    <field name="Surface Pitch" dword="1" bits="19:3" type="uint" />
+    <field name="Interleave Chroma" dword="1" bits="27:27" type="uint" />
+    <field name="Surface Format" dword="1" bits="31:28" type="uint" prefix="VDENC">
+      <value name="YUV 4:2:2" value="0" />
+      <value name="RGBA 4:4:4:4" value="1" />
+      <value name="YUV 4:4:4" value="2" />
+      <value name="Y8_UNORM" value="3" />
+      <value name="PLANAR_420_8" value="4" />
+    </field>
+    <field name="Y Offset for U(Cb)" dword="2" bits="14:0" type="uint" />
+    <field name="X Offset for U(Cb)" dword="2" bits="30:16" type="uint" />
+    <field name="Y Offset for V(Cr)" dword="3" bits="15:0" type="uint" />
+    <field name="X Offset for V(Cr)" dword="3" bits="28:16" type="uint" />
+  </struct>
+  <instruction name="3DSTATE_CONSTANT_DS" bias="2" length="11" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="MOCS" dword="0" bits="14:8" type="uint" nonzero="true" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="26" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Body" dword="1" bits="319:0" type="3DSTATE_CONSTANT_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_GS" bias="2" length="11" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="MOCS" dword="0" bits="14:8" type="uint" nonzero="true" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="22" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Body" dword="1" bits="319:0" type="3DSTATE_CONSTANT_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_HS" bias="2" length="11" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="MOCS" dword="0" bits="14:8" type="uint" nonzero="true" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="25" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Body" dword="1" bits="319:0" type="3DSTATE_CONSTANT_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_PS" bias="2" length="11" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="MOCS" dword="0" bits="14:8" type="uint" nonzero="true" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="23" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Body" dword="1" bits="319:0" type="3DSTATE_CONSTANT_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_CONSTANT_VS" bias="2" length="11" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="MOCS" dword="0" bits="14:8" type="uint" nonzero="true" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="21" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Constant Body" dword="1" bits="319:0" type="3DSTATE_CONSTANT_BODY" />
+  </instruction>
+  <instruction name="3DSTATE_DEPTH_BUFFER" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="5" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="17:0" type="uint" />
+    <field name="Surface Format" dword="1" bits="20:18" type="uint">
+      <value name="D32_FLOAT" value="1" />
+      <value name="D24_UNORM_X8_UINT" value="3" />
+      <value name="D16_UNORM" value="5" />
+    </field>
+    <field name="Hierarchical Depth Buffer Enable" dword="1" bits="22:22" type="bool" />
+    <field name="Stencil Write Enable" dword="1" bits="27:27" type="bool" />
+    <field name="Depth Write Enable" dword="1" bits="28:28" type="bool" />
+    <field name="Surface Type" dword="1" bits="31:29" type="uint">
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface Base Address" dword="2" bits="63:0" type="address" />
+    <field name="LOD" dword="4" bits="3:0" type="uint" />
+    <field name="Width" dword="4" bits="17:4" type="uint" />
+    <field name="Height" dword="4" bits="31:18" type="uint" />
+    <field name="MOCS" dword="5" bits="6:0" type="uint" nonzero="true" />
+    <field name="Minimum Array Element" dword="5" bits="20:10" type="uint" />
+    <field name="Depth" dword="5" bits="31:21" type="uint" />
+    <field name="Mip Tail Start LOD" dword="6" bits="29:26" type="uint" />
+    <field name="Tiled Resource Mode" dword="6" bits="31:30" type="uint">
+      <value name="NONE" value="0" />
+      <value name="TILEYF" value="1" />
+      <value name="TILEYS" value="2" />
+    </field>
+    <field name="Surface QPitch" dword="7" bits="14:0" type="uint" />
+    <field name="Render Target View Extent" dword="7" bits="31:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_DS" bias="2" length="11" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="29" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Accesses UAV" dword="3" bits="14:14" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="4" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="4" bits="63:10" type="address" />
+    <field name="Patch URB Entry Read Offset" dword="6" bits="9:4" type="uint" />
+    <field name="Patch URB Entry Read Length" dword="6" bits="17:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="6" bits="24:20" type="uint" />
+    <field name="Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Cache Disable" dword="7" bits="1:1" type="bool" />
+    <field name="Compute W Coordinate Enable" dword="7" bits="2:2" type="bool" />
+    <field name="Dispatch Mode" dword="7" bits="4:3" type="uint" prefix="DISPATCH_MODE">
+      <value name="SIMD4X2" value="0" />
+      <value name="SIMD8_SINGLE_PATCH" value="1" />
+      <value name="SIMD8_SINGLE_OR_DUAL_PATCH" value="2" />
+    </field>
+    <field name="Statistics Enable" dword="7" bits="10:10" type="bool" />
+    <field name="Maximum Number of Threads" dword="7" bits="29:21" type="uint" />
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="8" bits="7:0" type="uint" />
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="8" bits="15:8" type="uint" />
+    <field name="Vertex URB Entry Output Length" dword="8" bits="20:16" type="uint" />
+    <field name="Vertex URB Entry Output Read Offset" dword="8" bits="26:21" type="uint" />
+    <field name="DUAL_PATCH Kernel Start Pointer" dword="9" bits="63:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_GATHER_CONSTANT_DS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="55" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Update Gather Table Only" dword="1" bits="1:1" type="uint">
+      <value name="Commit Gather" value="0" />
+      <value name="Non-Commit Gather" value="1" />
+    </field>
+    <field name="Constant Buffer Binding Table Block" dword="1" bits="15:12" type="uint" />
+    <field name="Constant Buffer Valid" dword="1" bits="31:16" type="uint" />
+    <field name="On-Die Table" dword="2" bits="3:3" type="uint">
+      <value name="Load" value="0" />
+      <value name="Read" value="1" />
+    </field>
+    <field name="Constant Buffer Dx9 Generate Stall" dword="2" bits="5:5" type="bool" />
+    <field name="Gather Buffer Offset" dword="2" bits="22:6" type="offset" />
+    <group count="0" dword="3" size="32">
+      <field name="Entry_0" dword="0" bits="15:0" type="GATHER_CONSTANT_ENTRY" />
+      <field name="Entry_1" dword="0" bits="31:16" type="GATHER_CONSTANT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_GATHER_CONSTANT_GS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="53" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Update Gather Table Only" dword="1" bits="1:1" type="uint">
+      <value name="Commit Gather" value="0" />
+      <value name="Non-Commit Gather" value="1" />
+    </field>
+    <field name="Constant Buffer Binding Table Block" dword="1" bits="15:12" type="uint" />
+    <field name="Constant Buffer Valid" dword="1" bits="31:16" type="uint" />
+    <field name="On-Die Table" dword="2" bits="3:3" type="uint">
+      <value name="Load" value="0" />
+      <value name="Read" value="1" />
+    </field>
+    <field name="Constant Buffer Dx9 Generate Stall" dword="2" bits="5:5" type="bool" />
+    <field name="Gather Buffer Offset" dword="2" bits="22:6" type="offset" />
+    <group count="0" dword="3" size="32">
+      <field name="Entry_0" dword="0" bits="15:0" type="GATHER_CONSTANT_ENTRY" />
+      <field name="Entry_1" dword="0" bits="31:16" type="GATHER_CONSTANT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_GATHER_CONSTANT_HS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="54" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Update Gather Table Only" dword="1" bits="1:1" type="uint">
+      <value name="Commit Gather" value="0" />
+      <value name="Non-Commit Gather" value="1" />
+    </field>
+    <field name="Constant Buffer Binding Table Block" dword="1" bits="15:12" type="uint" />
+    <field name="Constant Buffer Valid" dword="1" bits="31:16" type="uint" />
+    <field name="On-Die Table" dword="2" bits="3:3" type="uint">
+      <value name="Load" value="0" />
+      <value name="Read" value="1" />
+    </field>
+    <field name="Constant Buffer Dx9 Generate Stall" dword="2" bits="5:5" type="bool" />
+    <field name="Gather Buffer Offset" dword="2" bits="22:6" type="offset" />
+    <group count="0" dword="3" size="32">
+      <field name="Entry_0" dword="0" bits="15:0" type="GATHER_CONSTANT_ENTRY" />
+      <field name="Entry_1" dword="0" bits="31:16" type="GATHER_CONSTANT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_GATHER_CONSTANT_PS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="56" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="DX9 On-Die Register Read Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Update Gather Table Only" dword="1" bits="1:1" type="uint">
+      <value name="Commit Gather" value="0" />
+      <value name="Non-Commit Gather" value="1" />
+    </field>
+    <field name="Constant Buffer Binding Table Block" dword="1" bits="15:12" type="uint" />
+    <field name="Constant Buffer Valid" dword="1" bits="31:16" type="uint" />
+    <field name="On-Die Table" dword="2" bits="3:3" type="uint">
+      <value name="Load" value="0" />
+      <value name="Read" value="1" />
+    </field>
+    <field name="Constant Buffer Dx9 Enable" dword="2" bits="4:4" type="bool" />
+    <field name="Constant Buffer Dx9 Generate Stall" dword="2" bits="5:5" type="bool" />
+    <field name="Gather Buffer Offset" dword="2" bits="22:6" type="offset" />
+    <group count="0" dword="3" size="32">
+      <field name="Entry_0" dword="0" bits="15:0" type="GATHER_CONSTANT_ENTRY" />
+      <field name="Entry_1" dword="0" bits="31:16" type="GATHER_CONSTANT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_GATHER_CONSTANT_VS" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="52" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="DX9 On-Die Register Read Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Update Gather Table Only" dword="1" bits="1:1" type="uint">
+      <value name="Commit Gather" value="0" />
+      <value name="Non-Commit Gather" value="1" />
+    </field>
+    <field name="Constant Buffer Binding Table Block" dword="1" bits="15:12" type="uint" />
+    <field name="Constant Buffer Valid" dword="1" bits="31:16" type="uint" />
+    <field name="On-Die Table" dword="2" bits="3:3" type="uint">
+      <value name="Load" value="0" />
+      <value name="Read" value="1" />
+    </field>
+    <field name="Constant Buffer Dx9 Enable" dword="2" bits="4:4" type="bool" />
+    <field name="Constant Buffer Dx9 Generate Stall" dword="2" bits="5:5" type="bool" />
+    <field name="Gather Buffer Offset" dword="2" bits="22:6" type="offset" />
+    <group count="0" dword="3" size="32">
+      <field name="Entry_0" dword="0" bits="15:0" type="GATHER_CONSTANT_ENTRY" />
+      <field name="Entry_1" dword="0" bits="31:16" type="GATHER_CONSTANT_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_GS" bias="2" length="10" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="8" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="17" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Expected Vertex Count" dword="3" bits="5:0" type="uint" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="3" bits="11:11" type="bool" />
+    <field name="Accesses UAV" dword="3" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="bool" />
+    <field name="Single Program Flow" dword="3" bits="31:31" type="bool" />
+    <field name="Per-Thread Scratch Space" dword="4" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="4" bits="63:10" type="address" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="6" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="6" bits="9:4" type="uint" />
+    <field name="Include Vertex Handles" dword="6" bits="10:10" type="bool" />
+    <field name="Vertex URB Entry Read Length" dword="6" bits="16:11" type="uint" />
+    <field name="Output Topology" dword="6" bits="22:17" type="3D_Prim_Topo_Type" />
+    <field name="Output Vertex Size" dword="6" bits="28:23" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data [5:4]" dword="6" bits="30:29" type="uint" />
+    <field name="Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Discard Adjacency" dword="7" bits="1:1" type="bool" />
+    <field name="Reorder Mode" dword="7" bits="2:2" type="uint">
+      <value name="LEADING" value="0" />
+      <value name="TRAILING" value="1" />
+    </field>
+    <field name="Hint" dword="7" bits="3:3" type="uint" />
+    <field name="Include Primitive ID" dword="7" bits="4:4" type="bool" />
+    <field name="Invocations Increment Value" dword="7" bits="9:5" type="uint" />
+    <field name="Statistics Enable" dword="7" bits="10:10" type="bool" />
+    <field name="Dispatch Mode" dword="7" bits="12:11" type="uint" prefix="DISPATCH_MODE">
+      <value name="Dual Instance" value="1" />
+      <value name="Dual Object" value="2" />
+      <value name="SIMD8" value="3" />
+    </field>
+    <field name="Default Stream Id" dword="7" bits="14:13" type="uint" />
+    <field name="Instance Control" dword="7" bits="19:15" type="uint" />
+    <field name="Control Data Header Size" dword="7" bits="23:20" type="uint" />
+    <field name="Maximum Number of Threads" dword="8" bits="8:0" type="uint" />
+    <field name="Static Output Vertex Count" dword="8" bits="26:16" type="uint" />
+    <field name="Static Output" dword="8" bits="30:30" type="bool" />
+    <field name="Control Data Format" dword="8" bits="31:31" type="uint">
+      <value name="CUT" value="0" />
+      <value name="SID" value="1" />
+    </field>
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="9" bits="7:0" type="uint" />
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="9" bits="15:8" type="uint" />
+    <field name="Vertex URB Entry Output Length" dword="9" bits="20:16" type="uint" />
+    <field name="Vertex URB Entry Output Read Offset" dword="9" bits="26:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_HS" bias="2" length="9" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="7" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="27" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Software Exception Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="1" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="1" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Instance Count" dword="2" bits="3:0" type="uint" />
+    <field name="Maximum Number of Threads" dword="2" bits="16:8" type="uint" />
+    <field name="Statistics Enable" dword="2" bits="29:29" type="bool" />
+    <field name="Enable" dword="2" bits="31:31" type="bool" />
+    <field name="Kernel Start Pointer" dword="3" bits="63:6" type="offset" />
+    <field name="Per-Thread Scratch Space" dword="5" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="5" bits="63:10" type="address" />
+    <field name="Include Primitive ID" dword="7" bits="0:0" type="bool" />
+    <field name="Vertex URB Entry Read Offset" dword="7" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="7" bits="16:11" type="uint" />
+    <field name="Dispatch Mode" dword="7" bits="18:17" type="uint" prefix="DISPATCH_MODE">
+      <value name="SINGLE_PATCH" value="0" />
+      <value name="DUAL_PATCH" value="1" />
+      <value name="8_PATCH" value="2" />
+    </field>
+    <field name="Dispatch GRF Start Register For URB Data" dword="7" bits="23:19" type="uint" />
+    <field name="Include Vertex Handles" dword="7" bits="24:24" type="bool" />
+    <field name="Accesses UAV" dword="7" bits="25:25" type="bool" />
+    <field name="Vector Mask Enable" dword="7" bits="26:26" type="bool" />
+    <field name="Single Program Flow" dword="7" bits="27:27" type="bool" />
+    <field name="Dispatch GRF Start Register For URB Data [5]" dword="7" bits="28:28" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_PS" bias="2" length="12" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="10" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="32" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer 0" dword="1" bits="63:6" type="offset" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="3" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Rounding Mode" dword="3" bits="15:14" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Single Precision Denormal Mode" dword="3" bits="26:26" type="uint">
+      <value name="Flushed to Zero" value="0" />
+      <value name="Retained" value="1" />
+    </field>
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="bool" />
+    <field name="Single Program Flow" dword="3" bits="31:31" type="bool" />
+    <field name="Per Thread Scratch Space" dword="4" bits="3:0" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="4" bits="63:10" type="address" />
+    <field name="8 Pixel Dispatch Enable" dword="6" bits="0:0" type="bool" />
+    <field name="16 Pixel Dispatch Enable" dword="6" bits="1:1" type="bool" />
+    <field name="32 Pixel Dispatch Enable" dword="6" bits="2:2" type="bool" />
+    <field name="Position XY Offset Select" dword="6" bits="4:3" type="uint">
+      <value name="POSOFFSET_NONE" value="0" />
+      <value name="POSOFFSET_CENTROID" value="2" />
+      <value name="POSOFFSET_SAMPLE" value="3" />
+    </field>
+    <field name="Render Target Resolve Type" dword="6" bits="7:6" type="uint">
+      <value name="RESOLVE_DISABLED" value="0" />
+      <value name="RESOLVE_PARTIAL" value="1" />
+      <value name="RESOLVE_FULL" value="3" />
+    </field>
+    <field name="Render Target Fast Clear Enable" dword="6" bits="8:8" type="bool" />
+    <field name="Push Constant Enable" dword="6" bits="11:11" type="bool" />
+    <field name="Maximum Number of Threads Per PSD" dword="6" bits="31:23" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 2" dword="7" bits="6:0" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 1" dword="7" bits="14:8" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 0" dword="7" bits="22:16" type="uint" />
+    <field name="Kernel Start Pointer 1" dword="8" bits="63:6" type="offset" />
+    <field name="Kernel Start Pointer 2" dword="10" bits="63:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_PS_BLEND" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="77" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Independent Alpha Blend Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Alpha Test Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Destination Blend Factor" dword="1" bits="13:9" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Source Blend Factor" dword="1" bits="18:14" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Destination Alpha Blend Factor" dword="1" bits="23:19" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Source Alpha Blend Factor" dword="1" bits="28:24" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Color Buffer Blend Enable" dword="1" bits="29:29" type="bool" />
+    <field name="Has Writeable RT" dword="1" bits="30:30" type="bool" />
+    <field name="Alpha To Coverage Enable" dword="1" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_PS_EXTRA" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="79" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Input Coverage Mask State" dword="1" bits="1:0" type="uint" prefix="ICMS">
+      <value name="NONE" value="0" />
+      <value name="NORMAL" value="1" />
+      <value name="INNER_CONSERVATIVE" value="2" />
+      <value name="DEPTH_COVERAGE" value="3" />
+    </field>
+    <field name="Pixel Shader Has UAV" dword="1" bits="2:2" type="bool" />
+    <field name="Pixel Shader Pulls Bary" dword="1" bits="3:3" type="bool" />
+    <field name="Pixel Shader Computes Stencil" dword="1" bits="5:5" type="bool" />
+    <field name="Pixel Shader Is Per Sample" dword="1" bits="6:6" type="bool" />
+    <field name="Pixel Shader Disables Alpha To Coverage" dword="1" bits="7:7" type="bool" />
+    <field name="Attribute Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Pixel Shader Uses Source W" dword="1" bits="23:23" type="bool" />
+    <field name="Pixel Shader Uses Source Depth" dword="1" bits="24:24" type="bool" />
+    <field name="Force Computed Depth" dword="1" bits="25:25" type="bool" />
+    <field name="Pixel Shader Computed Depth Mode" dword="1" bits="27:26" type="uint">
+      <value name="PSCDEPTH_OFF" value="0" />
+      <value name="PSCDEPTH_ON" value="1" />
+      <value name="PSCDEPTH_ON_GE" value="2" />
+      <value name="PSCDEPTH_ON_LE" value="3" />
+    </field>
+    <field name="Pixel Shader Kills Pixel" dword="1" bits="28:28" type="bool" />
+    <field name="oMask Present to Render Target" dword="1" bits="29:29" type="bool" />
+    <field name="Pixel Shader Does not write to RT" dword="1" bits="30:30" type="mbz" />
+    <field name="Pixel Shader Valid" dword="1" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_RASTER" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="80" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Viewport Z Near Clip Test Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Scissor Rectangle Enable" dword="1" bits="1:1" type="bool" />
+    <field name="Antialiasing Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Back Face Fill Mode" dword="1" bits="4:3" type="uint" prefix="FILL_MODE">
+      <value name="SOLID" value="0" />
+      <value name="WIREFRAME" value="1" />
+      <value name="POINT" value="2" />
+    </field>
+    <field name="Front Face Fill Mode" dword="1" bits="6:5" type="uint" prefix="FILL_MODE">
+      <value name="SOLID" value="0" />
+      <value name="WIREFRAME" value="1" />
+      <value name="POINT" value="2" />
+    </field>
+    <field name="Global Depth Offset Enable Point" dword="1" bits="7:7" type="bool" />
+    <field name="Global Depth Offset Enable Wireframe" dword="1" bits="8:8" type="bool" />
+    <field name="Global Depth Offset Enable Solid" dword="1" bits="9:9" type="bool" />
+    <field name="DX Multisample Rasterization Mode" dword="1" bits="11:10" type="uint">
+      <value name="MSRASTMODE_ OFF_PIXEL" value="0" />
+      <value name="MSRASTMODE_ OFF_PATTERN" value="1" />
+      <value name="MSRASTMODE_ ON_PIXEL" value="2" />
+      <value name="MSRASTMODE_ ON_PATTERN" value="3" />
+    </field>
+    <field name="DX Multisample Rasterization Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Smooth Point Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Force Multisampling" dword="1" bits="14:14" type="uint" />
+    <field name="Cull Mode" dword="1" bits="17:16" type="uint" prefix="CULLMODE">
+      <value name="BOTH" value="0" />
+      <value name="NONE" value="1" />
+      <value name="FRONT" value="2" />
+      <value name="BACK" value="3" />
+    </field>
+    <field name="Forced Sample Count" dword="1" bits="20:18" type="uint" prefix="FSC">
+      <value name="NUMRASTSAMPLES_0" value="0" />
+      <value name="NUMRASTSAMPLES_1" value="1" />
+      <value name="NUMRASTSAMPLES_2" value="2" />
+      <value name="NUMRASTSAMPLES_4" value="3" />
+      <value name="NUMRASTSAMPLES_8" value="4" />
+      <value name="NUMRASTSAMPLES_16" value="5" />
+    </field>
+    <field name="Front Winding" dword="1" bits="21:21" type="uint">
+      <value name="Clockwise" value="0" />
+      <value name="Counter Clockwise" value="1" />
+    </field>
+    <field name="API Mode" dword="1" bits="23:22" type="uint">
+      <value name="DX9/OGL" value="0" />
+      <value name="DX10.0" value="1" />
+      <value name="DX10.1+" value="2" />
+    </field>
+    <field name="Conservative Rasterization Enable" dword="1" bits="24:24" type="bool" />
+    <field name="Viewport Z Far Clip Test Enable" dword="1" bits="26:26" type="bool" />
+    <field name="Global Depth Offset Constant" dword="2" bits="31:0" type="float" />
+    <field name="Global Depth Offset Scale" dword="3" bits="31:0" type="float" />
+    <field name="Global Depth Offset Clamp" dword="4" bits="31:0" type="float" />
+  </instruction>
+  <instruction name="3DSTATE_RS_CONSTANT_POINTER" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="84" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Operation Load or Store" dword="1" bits="12:12" type="uint" prefix="RS">
+      <value name="Store" value="0" />
+      <value name="Load" value="1" />
+    </field>
+    <field name="Shader Select" dword="1" bits="30:28" type="uint">
+      <value name="VS" value="0" />
+      <value name="PS" value="4" />
+    </field>
+    <field name="Global Constant Buffer Address" dword="2" bits="31:6" type="address" />
+    <field name="Global Constant Buffer Address High" dword="3" bits="31:0" type="address" />
+  </instruction>
+  <instruction name="3DSTATE_SAMPLE_PATTERN" bias="2" length="9" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="7" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="28" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="16x Sample0 Y Offset" dword="1" bits="3:0" type="u0.4" />
+    <field name="16x Sample0 X Offset" dword="1" bits="7:4" type="u0.4" />
+    <field name="16x Sample1 Y Offset" dword="1" bits="11:8" type="u0.4" />
+    <field name="16x Sample1 X Offset" dword="1" bits="15:12" type="u0.4" />
+    <field name="16x Sample2 Y Offset" dword="1" bits="19:16" type="u0.4" />
+    <field name="16x Sample2 X Offset" dword="1" bits="23:20" type="u0.4" />
+    <field name="16x Sample3 Y Offset" dword="1" bits="27:24" type="u0.4" />
+    <field name="16x Sample3 X Offset" dword="1" bits="31:28" type="u0.4" />
+    <field name="16x Sample4 Y Offset" dword="2" bits="3:0" type="u0.4" />
+    <field name="16x Sample4 X Offset" dword="2" bits="7:4" type="u0.4" />
+    <field name="16x Sample5 Y Offset" dword="2" bits="11:8" type="u0.4" />
+    <field name="16x Sample5 X Offset" dword="2" bits="15:12" type="u0.4" />
+    <field name="16x Sample6 Y Offset" dword="2" bits="19:16" type="u0.4" />
+    <field name="16x Sample6 X Offset" dword="2" bits="23:20" type="u0.4" />
+    <field name="16x Sample7 Y Offset" dword="2" bits="27:24" type="u0.4" />
+    <field name="16x Sample7 X Offset" dword="2" bits="31:28" type="u0.4" />
+    <field name="16x Sample8 Y Offset" dword="3" bits="3:0" type="u0.4" />
+    <field name="16x Sample8 X Offset" dword="3" bits="7:4" type="u0.4" />
+    <field name="16x Sample9 Y Offset" dword="3" bits="11:8" type="u0.4" />
+    <field name="16x Sample9 X Offset" dword="3" bits="15:12" type="u0.4" />
+    <field name="16x Sample10 Y Offset" dword="3" bits="19:16" type="u0.4" />
+    <field name="16x Sample10 X Offset" dword="3" bits="23:20" type="u0.4" />
+    <field name="16x Sample11 Y Offset" dword="3" bits="27:24" type="u0.4" />
+    <field name="16x Sample11 X Offset" dword="3" bits="31:28" type="u0.4" />
+    <field name="16x Sample12 Y Offset" dword="4" bits="3:0" type="u0.4" />
+    <field name="16x Sample12 X Offset" dword="4" bits="7:4" type="u0.4" />
+    <field name="16x Sample13 Y Offset" dword="4" bits="11:8" type="u0.4" />
+    <field name="16x Sample13 X Offset" dword="4" bits="15:12" type="u0.4" />
+    <field name="16x Sample14 Y Offset" dword="4" bits="19:16" type="u0.4" />
+    <field name="16x Sample14 X Offset" dword="4" bits="23:20" type="u0.4" />
+    <field name="16x Sample15 Y Offset" dword="4" bits="27:24" type="u0.4" />
+    <field name="16x Sample15 X Offset" dword="4" bits="31:28" type="u0.4" />
+    <field name="8x Sample4 Y Offset" dword="5" bits="3:0" type="u0.4" />
+    <field name="8x Sample4 X Offset" dword="5" bits="7:4" type="u0.4" />
+    <field name="8x Sample5 Y Offset" dword="5" bits="11:8" type="u0.4" />
+    <field name="8x Sample5 X Offset" dword="5" bits="15:12" type="u0.4" />
+    <field name="8x Sample6 Y Offset" dword="5" bits="19:16" type="u0.4" />
+    <field name="8x Sample6 X Offset" dword="5" bits="23:20" type="u0.4" />
+    <field name="8x Sample7 Y Offset" dword="5" bits="27:24" type="u0.4" />
+    <field name="8x Sample7 X Offset" dword="5" bits="31:28" type="u0.4" />
+    <field name="8x Sample0 Y Offset" dword="6" bits="3:0" type="u0.4" />
+    <field name="8x Sample0 X Offset" dword="6" bits="7:4" type="u0.4" />
+    <field name="8x Sample1 Y Offset" dword="6" bits="11:8" type="u0.4" />
+    <field name="8x Sample1 X Offset" dword="6" bits="15:12" type="u0.4" />
+    <field name="8x Sample2 Y Offset" dword="6" bits="19:16" type="u0.4" />
+    <field name="8x Sample2 X Offset" dword="6" bits="23:20" type="u0.4" />
+    <field name="8x Sample3 Y Offset" dword="6" bits="27:24" type="u0.4" />
+    <field name="8x Sample3 X Offset" dword="6" bits="31:28" type="u0.4" />
+    <field name="4x Sample0 Y Offset" dword="7" bits="3:0" type="u0.4" />
+    <field name="4x Sample0 X Offset" dword="7" bits="7:4" type="u0.4" />
+    <field name="4x Sample1 Y Offset" dword="7" bits="11:8" type="u0.4" />
+    <field name="4x Sample1 X Offset" dword="7" bits="15:12" type="u0.4" />
+    <field name="4x Sample2 Y Offset" dword="7" bits="19:16" type="u0.4" />
+    <field name="4x Sample2 X Offset" dword="7" bits="23:20" type="u0.4" />
+    <field name="4x Sample3 Y Offset" dword="7" bits="27:24" type="u0.4" />
+    <field name="4x Sample3 X Offset" dword="7" bits="31:28" type="u0.4" />
+    <field name="2x Sample0 Y Offset" dword="8" bits="3:0" type="u0.4" />
+    <field name="2x Sample0 X Offset" dword="8" bits="7:4" type="u0.4" />
+    <field name="2x Sample1 Y Offset" dword="8" bits="11:8" type="u0.4" />
+    <field name="2x Sample1 X Offset" dword="8" bits="15:12" type="u0.4" />
+    <field name="1x Sample0 Y Offset" dword="8" bits="19:16" type="u0.4" />
+    <field name="1x Sample0 X Offset" dword="8" bits="23:20" type="u0.4" />
+  </instruction>
+  <instruction name="3DSTATE_SBE" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="31" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Primitive ID Override Attribute Select" dword="1" bits="4:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="1" bits="10:5" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="1" bits="15:11" type="uint" />
+    <field name="Primitive ID Override Component X" dword="1" bits="16:16" type="bool" />
+    <field name="Primitive ID Override Component Y" dword="1" bits="17:17" type="bool" />
+    <field name="Primitive ID Override Component Z" dword="1" bits="18:18" type="bool" />
+    <field name="Primitive ID Override Component W" dword="1" bits="19:19" type="bool" />
+    <field name="Point Sprite Texture Coordinate Origin" dword="1" bits="20:20" type="uint">
+      <value name="UPPERLEFT" value="0" />
+      <value name="LOWERLEFT" value="1" />
+    </field>
+    <field name="Attribute Swizzle Enable" dword="1" bits="21:21" type="bool" />
+    <field name="Number of SF Output Attributes" dword="1" bits="27:22" type="uint" />
+    <field name="Force Vertex URB Entry Read Offset" dword="1" bits="28:28" type="bool" />
+    <field name="Force Vertex URB Entry Read Length" dword="1" bits="29:29" type="bool" />
+    <field name="Point Sprite Texture Coordinate Enable" dword="2" bits="31:0" type="uint" />
+    <field name="Constant Interpolation Enable" dword="3" bits="31:0" type="uint" />
+    <group count="32" dword="4" size="2">
+      <field name="Attribute Active Component Format" dword="0" bits="1:0" type="uint" prefix="ACTIVE_COMPONENT">
+        <value name="DISABLED" value="0" />
+        <value name="XY" value="1" />
+        <value name="XYZ" value="2" />
+        <value name="XYZW" value="3" />
+      </field>
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_SF" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="19" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Viewport Transform Enable" dword="1" bits="1:1" type="bool" />
+    <field name="Statistics Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Legacy Global Depth Bias Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Line Width" dword="1" bits="29:12" type="u11.7" />
+    <field name="Line End Cap Antialiasing Region Width" dword="2" bits="17:16" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Point Width" dword="3" bits="10:0" type="u8.3" />
+    <field name="Point Width Source" dword="3" bits="11:11" type="uint">
+      <value name="Vertex" value="0" />
+      <value name="State" value="1" />
+    </field>
+    <field name="Vertex Sub Pixel Precision Select" dword="3" bits="12:12" type="uint">
+      <value name="8 Bit" value="0" />
+      <value name="4 Bit" value="1" />
+    </field>
+    <field name="Smooth Point Enable" dword="3" bits="13:13" type="bool" />
+    <field name="AA Line Distance Mode" dword="3" bits="14:14" type="uint">
+      <value name="AALINEDISTANCE_TRUE" value="1" />
+    </field>
+    <field name="Triangle Fan Provoking Vertex Select" dword="3" bits="26:25" type="uint" />
+    <field name="Line Strip/List Provoking Vertex Select" dword="3" bits="28:27" type="uint" />
+    <field name="Triangle Strip/List Provoking Vertex Select" dword="3" bits="30:29" type="uint" />
+    <field name="Last Pixel Enable" dword="3" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_TE" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="28" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="TE Enable" dword="1" bits="0:0" type="bool" />
+    <field name="TE Mode" dword="1" bits="2:1" type="uint">
+      <value name="HW_TESS" value="0" />
+    </field>
+    <field name="TE Domain" dword="1" bits="5:4" type="uint">
+      <value name="QUAD" value="0" />
+      <value name="TRI" value="1" />
+      <value name="ISOLINE" value="2" />
+    </field>
+    <field name="Output Topology" dword="1" bits="9:8" type="uint" prefix="OUTPUT">
+      <value name="POINT" value="0" />
+      <value name="LINE" value="1" />
+      <value name="TRI_CW" value="2" />
+      <value name="TRI_CCW" value="3" />
+    </field>
+    <field name="Partitioning" dword="1" bits="13:12" type="uint">
+      <value name="INTEGER" value="0" />
+      <value name="ODD_FRACTIONAL" value="1" />
+      <value name="EVEN_FRACTIONAL" value="2" />
+    </field>
+    <field name="Maximum Tessellation Factor Odd" dword="2" bits="31:0" type="float" />
+    <field name="Maximum Tessellation Factor Not Odd" dword="3" bits="31:0" type="float" />
+  </instruction>
+  <instruction name="3DSTATE_URB_CLEAR" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="29" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="URB Address" dword="1" bits="14:0" type="offset" />
+    <field name="URB Clear Length" dword="1" bits="29:16" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_VF" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="Indexed Draw Cut Index Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Component Packing Enable" dword="0" bits="9:9" type="bool" />
+    <field name="Sequential Draw Cut Index Enable" dword="0" bits="10:10" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="12" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Cut Index" dword="1" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_VF_COMPONENT_PACKING" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="85" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="32" dword="1" size="4">
+      <field name="Vertex Element Enables" dword="0" bits="3:0" type="uint" />
+    </group>
+    <group count="4" dword="1" size="32">
+      <field name="Vertex Element Enables DW" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_WM_DEPTH_STENCIL" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="78" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Depth Buffer Write Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Depth Test Enable" dword="1" bits="1:1" type="bool" />
+    <field name="Stencil Buffer Write Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Stencil Test Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Double Sided Stencil Enable" dword="1" bits="4:4" type="bool" />
+    <field name="Depth Test Function" dword="1" bits="7:5" type="3D_Compare_Function" />
+    <field name="Stencil Test Function" dword="1" bits="10:8" type="3D_Compare_Function" />
+    <field name="Backface Stencil Pass Depth Pass Op" dword="1" bits="13:11" type="3D_Stencil_Operation" />
+    <field name="Backface Stencil Pass Depth Fail Op" dword="1" bits="16:14" type="3D_Stencil_Operation" />
+    <field name="Backface Stencil Fail Op" dword="1" bits="19:17" type="3D_Stencil_Operation" />
+    <field name="Backface Stencil Test Function" dword="1" bits="22:20" type="3D_Compare_Function" />
+    <field name="Stencil Pass Depth Pass Op" dword="1" bits="25:23" type="3D_Stencil_Operation" />
+    <field name="Stencil Pass Depth Fail Op" dword="1" bits="28:26" type="3D_Stencil_Operation" />
+    <field name="Stencil Fail Op" dword="1" bits="31:29" type="3D_Stencil_Operation" />
+    <field name="Backface Stencil Write Mask" dword="2" bits="7:0" type="uint" />
+    <field name="Backface Stencil Test Mask" dword="2" bits="15:8" type="uint" />
+    <field name="Stencil Write Mask" dword="2" bits="23:16" type="uint" />
+    <field name="Stencil Test Mask" dword="2" bits="31:24" type="uint" />
+    <field name="Backface Stencil Reference Value" dword="3" bits="7:0" type="uint" />
+    <field name="Stencil Reference Value" dword="3" bits="15:8" type="uint" />
+  </instruction>
+  <instruction name="HCP_BSD_OBJECT" bias="2" length="3" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="1" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="32" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect BSD Data Length" dword="1" bits="31:0" type="uint" />
+    <field name="Indirect BSD Data Start Address" dword="2" bits="28:0" type="offset" />
+  </instruction>
+  <instruction name="HCP_FQM_STATE" bias="2" length="34" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="32" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="5" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Intra/Inter" dword="1" bits="0:0" type="uint">
+      <value name="Intra" value="0" />
+      <value name="Inter" value="1" />
+    </field>
+    <field name="SizeID" dword="1" bits="2:1" type="uint" prefix="SZ">
+      <value name="4x4" value="0" />
+      <value name="8x8" value="1" />
+      <value name="16x16" value="2" />
+      <value name="32x32" value="3" />
+    </field>
+    <field name="Color Component" dword="1" bits="4:3" type="uint">
+      <value name="Luma" value="0" />
+      <value name="Chroma Cb" value="1" />
+      <value name="Chroma Cr" value="2" />
+    </field>
+    <field name="FQM DC Value" dword="1" bits="31:16" type="uint" />
+    <group count="128" dword="2" size="8">
+      <field name="Quantizer Matrix 8x8" dword="0" bits="7:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="HCP_IND_OBJ_BASE_ADDR_STATE" bias="2" length="14" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="12" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="3" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="HCP Indirect Bitstream Object - Base Address" dword="1" bits="63:0" type="address" />
+    <field name="HCP Indirect Bitstream Object - Memory Address Attributes" dword="3" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="HCP Indirect Bitstream Object - Access Upper Bound" dword="4" bits="63:0" type="address" />
+    <field name="HCP Indirect CU Object - Base Address" dword="6" bits="63:0" type="address" />
+    <field name="HCP Indirect CU Object - Memory Address Attributes" dword="8" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="HCP PAK-BSE Object - Base Address" dword="9" bits="63:0" type="address" />
+    <field name="HCP PAK-BSE Object - Memory Address Attributes" dword="11" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="HCP PAK-BSE Object - Access Upper Bound" dword="12" bits="63:0" type="address" />
+  </instruction>
+  <instruction name="HCP_PAK_INSERT_OBJECT" bias="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="34" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="End of Slice" dword="1" bits="1:1" type="bool" />
+    <field name="Last Header" dword="1" bits="2:2" type="bool" />
+    <field name="Emulation Byte Bits Insert Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Skip Emulation Byte Count" dword="1" bits="7:4" type="uint" />
+    <field name="Data Bits In Last DW" dword="1" bits="13:8" type="uint" />
+    <field name="Header Length Excluded From Size" dword="1" bits="15:15" type="uint">
+      <value name="ACCUMULATE" value="0" />
+      <value name="NO_ACCUMULATION" value="1" />
+    </field>
+    <field name="Data Byte Offset" dword="1" bits="17:16" type="uint" />
+    <field name="Indirect Payload Enable" dword="1" bits="31:31" type="bool" />
+    <group count="0" dword="2" size="128">
+      <field name="Indirect Payload" dword="0" bits="127:0" type="HCP_PAK_INSERT_OBJECT_INDIRECT_PAYLOAD" />
+      <field name="Inline PayLoad" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="HCP_PAK_OBJECT" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="33" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Split Level 2 Part 0" dword="1" bits="3:0" type="uint" />
+    <field name="Split Level 2 Part 1" dword="1" bits="7:4" type="uint" />
+    <field name="Split Level 2 Part 2" dword="1" bits="11:8" type="uint" />
+    <field name="Split Level 2 Part 3" dword="1" bits="15:12" type="uint" />
+    <field name="Split Level 1" dword="1" bits="19:16" type="uint" />
+    <field name="Split Level 0" dword="1" bits="20:20" type="uint" />
+    <field name="CU Count" dword="1" bits="29:24" type="uint" />
+    <field name="Last LCU of Tile" dword="1" bits="30:30" type="bool" />
+    <field name="Last LCU of Slice" dword="1" bits="31:31" type="bool" />
+    <field name="Current LCU X Address" dword="2" bits="15:0" type="uint" />
+    <field name="Current LCU Y Address" dword="2" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="HCP_PIC_STATE" bias="2" length="32" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="30" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="16" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Width In Minimum Coding Block Size" dword="1" bits="9:0" type="uint" />
+    <field name="PAK Transform Skip Enable" dword="1" bits="15:15" type="bool" />
+    <field name="Frame Height In Minimum Coding Block Size" dword="1" bits="25:16" type="uint" />
+    <field name="Min CU Size" dword="2" bits="1:0" type="uint" prefix="LCU">
+      <value name="64x64" value="3" />
+      <value name="32x32" value="2" />
+      <value name="16x16" value="1" />
+      <value name="8x8" value="0" />
+    </field>
+    <field name="LCU Size" dword="2" bits="3:2" type="uint" prefix="LCU">
+      <value name="64x64" value="3" />
+      <value name="32x32" value="2" />
+      <value name="16x16" value="1" />
+      <value name="Illegal/reserved" value="0" />
+    </field>
+    <field name="Min TU Size" dword="2" bits="5:4" type="uint" prefix="TU">
+      <value name="32x32" value="3" />
+      <value name="16x16" value="2" />
+      <value name="8x8" value="1" />
+      <value name="4x4" value="0" />
+    </field>
+    <field name="Max TU Size" dword="2" bits="7:6" type="uint" prefix="TU">
+      <value name="32x32" value="3" />
+      <value name="16x16" value="2" />
+      <value name="8x8" value="1" />
+      <value name="4x4" value="0" />
+    </field>
+    <field name="Min PCM Size" dword="2" bits="9:8" type="uint" prefix="PCM">
+      <value name="32x32" value="2" />
+      <value name="16x16" value="1" />
+      <value name="8x8" value="0" />
+    </field>
+    <field name="Max PCM Size" dword="2" bits="11:10" type="uint" prefix="PCM">
+      <value name="32x32" value="2" />
+      <value name="16x16" value="1" />
+      <value name="8x8" value="0" />
+    </field>
+    <field name="Collocated Picture Is I Slice" dword="3" bits="0:0" type="bool" />
+    <field name="Current Picture Is I Slice" dword="3" bits="1:1" type="bool" />
+    <field name="CABAC Zero Word Insertion Test Enable" dword="3" bits="2:2" type="bool" />
+    <field name="Sample Adaptive Offset Enable" dword="4" bits="3:3" type="bool" />
+    <field name="PCM Enable" dword="4" bits="4:4" type="bool" />
+    <field name="CU QP Delta Enable" dword="4" bits="5:5" type="bool" />
+    <field name="Max DQP Depth" dword="4" bits="7:6" type="uint" />
+    <field name="PCM Loop Filter Disable" dword="4" bits="8:8" type="bool" />
+    <field name="Constrained Intra Prediction" dword="4" bits="9:9" type="bool" />
+    <field name="Log2 Parallel Merge Level" dword="4" bits="12:10" type="uint" />
+    <field name="Sign Data Hiding" dword="4" bits="13:13" type="bool" />
+    <field name="Loop Filter Enable" dword="4" bits="15:15" type="bool" />
+    <field name="Entropy Coding Sync Enable" dword="4" bits="16:16" type="bool" />
+    <field name="Tiling Enable" dword="4" bits="17:17" type="bool" />
+    <field name="Weighted BiPredication Enable" dword="4" bits="18:18" type="bool" />
+    <field name="Weighted Predication Enable" dword="4" bits="19:19" type="bool" />
+    <field name="Field Pic" dword="4" bits="20:20" type="bool" />
+    <field name="Top Field" dword="4" bits="21:21" type="bool" />
+    <field name="Transform Skip Enable" dword="4" bits="22:22" type="bool" />
+    <field name="AMP Enable" dword="4" bits="23:23" type="bool" />
+    <field name="Transquant Bypass Enable" dword="4" bits="25:25" type="bool" />
+    <field name="Strong Intra Smoothing Enable" dword="4" bits="26:26" type="bool" />
+    <field name="CU Packet Structure" dword="4" bits="27:27" type="uint">
+      <value name="VME" value="0" />
+      <value name="ExtEnc" value="1" />
+    </field>
+    <field name="Picture Cb QP Offset" dword="5" bits="4:0" type="int" />
+    <field name="Picture Cr QP Offset" dword="5" bits="9:5" type="int" />
+    <field name="Intra Max Transform Hierarchy Depth" dword="5" bits="12:10" type="uint" />
+    <field name="Inter Max Transform Hierarchy Depth" dword="5" bits="15:13" type="uint" />
+    <field name="Chroma PCM Sample Bit Depth" dword="5" bits="19:16" type="uint" />
+    <field name="Luma PCM Sample Bit Depth" dword="5" bits="23:20" type="uint" />
+    <field name="Chroma Bit Depth" dword="5" bits="26:24" type="uint">
+      <value name="8-bit" value="0" />
+      <value name="9-bit" value="1" />
+      <value name="10-bit" value="2" />
+      <value name="11-bit" value="3" />
+      <value name="12-bit" value="4" />
+    </field>
+    <field name="Luma Bit Depth" dword="5" bits="29:27" type="uint">
+      <value name="8-bit" value="0" />
+      <value name="9-bit" value="1" />
+      <value name="10-bit" value="2" />
+      <value name="11-bit" value="3" />
+      <value name="12-bit" value="4" />
+    </field>
+    <field name="LCU Max Bit Size Allowed" dword="6" bits="15:0" type="uint" />
+    <field name="Non First Pass" dword="6" bits="16:16" type="bool" />
+    <field name="LCU Max Size Report" dword="6" bits="24:24" type="bool" />
+    <field name="Frame Bitrate Max Report" dword="6" bits="25:25" type="bool" />
+    <field name="Frame Bitrate Min Report" dword="6" bits="26:26" type="bool" />
+    <field name="Load Bitstream Pointer Per Slice" dword="6" bits="29:29" type="bool" />
+    <field name="Frame Bitrate Max" dword="7" bits="13:0" type="uint" />
+    <field name="Frame Bitrate Max Unit" dword="7" bits="31:31" type="uint" />
+    <field name="Frame Bitrate Min" dword="8" bits="13:0" type="uint" />
+    <field name="Frame Bitrate Min Unit" dword="8" bits="31:31" type="uint" />
+    <field name="Frame Bitrate Min Delta" dword="9" bits="14:0" type="uint" />
+    <field name="Frame Bitrate Max Delta" dword="9" bits="30:16" type="uint" />
+    <field name="Frame Delta QP Max" dword="10" bits="63:0" type="FRAMEDELTAQP" />
+    <field name="Frame Delta QP Min" dword="12" bits="63:0" type="FRAMEDELTAQP" />
+    <field name="Frame Delta QP Max Range" dword="14" bits="63:0" type="FRAMEDELTAQPRANGE" />
+    <field name="Frame Delta QP Min Range" dword="16" bits="63:0" type="FRAMEDELTAQPRANGE" />
+    <field name="Minimum Frame Size" dword="18" bits="15:0" type="uint" />
+    <field name="Minimum Frame Size Units" dword="18" bits="31:30" type="uint" prefix="HCP_MFSU">
+      <value name="4Kb" value="0" />
+      <value name="16Kb" value="1" />
+    </field>
+  </instruction>
+  <instruction name="HCP_PIPE_BUF_ADDR_STATE" bias="2" length="104" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="102" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Decoded Picture - Address" dword="1" bits="63:0" type="address" />
+    <field name="Decoded Picture - Memory Address Attributes" dword="3" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocking Filter Line Buffer - Address" dword="4" bits="63:0" type="address" />
+    <field name="Deblocking Filter Line Buffer - Memory Address Attributes" dword="6" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocking Filter Tile Line Buffer - Address" dword="7" bits="63:0" type="address" />
+    <field name="Deblocking Filter Tile Line Buffer - Memory Address Attributes" dword="9" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocking Filter Tile Column Buffer - Address" dword="10" bits="63:0" type="address" />
+    <field name="Deblocking Filter Tile Column Buffer - Memory Address Attributes" dword="12" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Metadata Line Buffer - Address" dword="13" bits="63:0" type="address" />
+    <field name="Metadata Line Buffer - Memory Address Attributes" dword="15" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Metadata Tile Line Buffer - Address" dword="16" bits="63:0" type="address" />
+    <field name="Metadata Tile Line Buffer - Memory Address Attributes" dword="18" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Metadata Tile Column Buffer - Address" dword="19" bits="63:0" type="address" />
+    <field name="Metadata Tile Column Buffer - Memory Address Attributes" dword="21" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="SAO Line Buffer - Address" dword="22" bits="63:0" type="address" />
+    <field name="SAO Line Buffer - Memory Address Attributes" dword="24" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="SAO Tile Line Buffer - Address" dword="25" bits="63:0" type="address" />
+    <field name="SAO Tile Line Buffer - Memory Address Attributes" dword="27" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="SAO Tile Column Buffer - Address" dword="28" bits="63:0" type="address" />
+    <field name="SAO Tile Column Buffer - Memory Address Attributes" dword="30" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Current MV Temporal Buffer - Address" dword="31" bits="63:0" type="address" />
+    <field name="Current MV Temporal Buffer - Memory Address Attributes" dword="33" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <group count="8" dword="37" size="64">
+      <field name="Reference Picture - Address" dword="0" bits="63:0" type="address" />
+    </group>
+    <field name="Reference Picture - Memory Address Attributes" dword="53" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Original Uncompressed Picture Source - Address" dword="54" bits="63:0" type="address" />
+    <field name="Original Uncompressed Picture Source - Memory Address Attributes" dword="56" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Stream-Out Data Destination - Address" dword="57" bits="63:0" type="address" />
+    <field name="Stream-Out Data Destination - Memory Address Attributes" dword="59" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Decoded Picture Status Buffer - Address" dword="60" bits="63:0" type="address" />
+    <field name="Decoded Picture Status Buffer - Memory Address Attributes" dword="62" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="LCU ILDB Stream-Out Buffer - Address" dword="63" bits="63:0" type="address" />
+    <field name="LCU ILDB Stream-Out Buffer - Memory Address Attributes" dword="65" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <group count="8" dword="66" size="64">
+      <field name="Collocated MV Temporal Buffer - Address" dword="0" bits="63:0" type="address" />
+    </group>
+    <field name="Collocated MV Temporal Buffer - Memory Address Attributes" dword="82" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="VP9 Probability Buffer - Address" dword="83" bits="63:0" type="address" />
+    <field name="VP9 Probability Buffer - Memory Address Attributes" dword="85" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="VP9 Segment ID Buffer - Address" dword="86" bits="63:0" type="address" />
+    <field name="VP9 Segment ID Buffer - Memory Address Attributes" dword="88" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="VP9 HVD Line Row Store Buffer - Address" dword="89" bits="63:0" type="address" />
+    <field name="VP9 HVD Line Row Store Buffer - Memory Address Attributes" dword="91" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="VP9 HVD Tile Row Store Buffer - Address" dword="92" bits="63:0" type="address" />
+    <field name="VP9 HVD Tile Row Store Buffer - Memory Address Attributes" dword="94" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+  </instruction>
+  <instruction name="HCP_PIPE_MODE_SELECT" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Codec Select" dword="1" bits="0:0" type="uint">
+      <value name="Decode" value="0" />
+      <value name="Encode" value="1" />
+    </field>
+    <field name="Deblocker Stream-Out Enable" dword="1" bits="1:1" type="bool" />
+    <field name="PAK Pipeline Stream-Out Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Pic Status/Error Report Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Codec Standard Select" dword="1" bits="7:5" type="uint">
+      <value name="HEVC" value="0" />
+      <value name="VP9" value="1" />
+    </field>
+    <field name="Advanced Rate Control Enable" dword="1" bits="9:9" type="bool" />
+    <field name="PAK Frame Level Stream-Out Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Media Soft-Reset Counter" dword="2" bits="31:0" type="uint" />
+    <field name="Pic Status/Error Report ID" dword="3" bits="31:0" type="uint" />
+    <field name="HprVp9ModeSwitchEcoDisable" dword="4" bits="6:6" type="bool" />
+  </instruction>
+  <instruction name="HCP_QM_STATE" bias="2" length="18" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="16" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="4" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Prediction Type" dword="1" bits="0:0" type="uint">
+      <value name="Intra" value="0" />
+      <value name="Inter" value="1" />
+    </field>
+    <field name="SizeID" dword="1" bits="2:1" type="uint" prefix="SZ">
+      <value name="4x4" value="0" />
+      <value name="8x8" value="1" />
+      <value name="16x16" value="2" />
+      <value name="32x32" value="3" />
+    </field>
+    <field name="Color Component" dword="1" bits="4:3" type="uint">
+      <value name="Luma" value="0" />
+      <value name="Chroma Cb" value="1" />
+      <value name="Chroma Cr" value="2" />
+    </field>
+    <field name="DC Coefficient" dword="1" bits="12:5" type="uint" />
+    <group count="64" dword="2" size="8">
+      <field name="Quantizer Matrix 8x8" dword="0" bits="7:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="HCP_REF_IDX_STATE" bias="2" length="18" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="16" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="18" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Reference Picture List Select" dword="1" bits="0:0" type="uint" />
+    <field name="Number of Reference Indexes Active" dword="1" bits="4:1" type="uint" />
+    <group count="16" dword="2" size="32">
+      <field name="Reference List Entry" dword="0" bits="31:0" type="HCP_REF_LIST_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="HCP_SLICE_STATE" bias="2" length="11" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="9" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="20" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Slice Horizontal Position" dword="1" bits="8:0" type="uint" />
+    <field name="Slice Vertical Position" dword="1" bits="24:16" type="uint" />
+    <field name="Next Slice Horizontal Position" dword="2" bits="8:0" type="uint" />
+    <field name="Next Slice Vertical Position" dword="2" bits="24:16" type="uint" />
+    <field name="Slice Type" dword="3" bits="1:0" type="uint" prefix="HCP_ST">
+      <value name="B Slice" value="0" />
+      <value name="P Slice" value="1" />
+      <value name="I Slice" value="2" />
+    </field>
+    <field name="Last Slice" dword="3" bits="2:2" type="bool" />
+    <field name="Slice QP Sign" dword="3" bits="3:3" type="uint" />
+    <field name="Dependent Slice" dword="3" bits="4:4" type="bool" />
+    <field name="Slice Temporal MVP Enable" dword="3" bits="5:5" type="bool" />
+    <field name="Slice QP" dword="3" bits="11:6" type="uint" />
+    <field name="Slice Cb QP Offset" dword="3" bits="16:12" type="int">
+      <value name="-12" value="20" />
+      <value name="-11" value="21" />
+      <value name="-10" value="22" />
+      <value name="-9" value="23" />
+      <value name="-8" value="24" />
+      <value name="-7" value="25" />
+      <value name="-6" value="26" />
+      <value name="-5" value="27" />
+      <value name="-4" value="28" />
+      <value name="-3" value="29" />
+      <value name="-2" value="30" />
+      <value name="-1" value="31" />
+    </field>
+    <field name="Slice Cr QP Offset" dword="3" bits="21:17" type="int">
+      <value name="-12" value="20" />
+      <value name="-11" value="21" />
+      <value name="-10" value="22" />
+      <value name="-9" value="23" />
+      <value name="-8" value="24" />
+      <value name="-7" value="25" />
+      <value name="-6" value="26" />
+      <value name="-5" value="27" />
+      <value name="-4" value="28" />
+      <value name="-3" value="29" />
+      <value name="-2" value="30" />
+      <value name="-1" value="31" />
+    </field>
+    <field name="Slice Header Disable Deblocking Filter" dword="4" bits="0:0" type="bool" />
+    <field name="Slice TC Offset Div2" dword="4" bits="4:1" type="int" />
+    <field name="Slice Beta Offset Div2" dword="4" bits="8:5" type="int" />
+    <field name="Slice Loop Filter Enable" dword="4" bits="10:10" type="bool" />
+    <field name="Slice SAO Chroma" dword="4" bits="11:11" type="bool" />
+    <field name="Slice SAO Luma" dword="4" bits="12:12" type="bool" />
+    <field name="MVD L1 Zero" dword="4" bits="13:13" type="bool" />
+    <field name="Low Delay" dword="4" bits="14:14" type="bool" />
+    <field name="Collocated From L0" dword="4" bits="15:15" type="bool" />
+    <field name="Log2 Weight Denominator Chroma" dword="4" bits="18:16" type="uint" />
+    <field name="Log2 Weight Denominator Luma" dword="4" bits="21:19" type="uint" />
+    <field name="CABAC Init" dword="4" bits="22:22" type="bool" />
+    <field name="Max Merge Index" dword="4" bits="25:23" type="uint" />
+    <field name="Collocated MV Temporal Buffer Index" dword="4" bits="28:26" type="uint" />
+    <field name="Slice Header Length" dword="5" bits="15:0" type="uint" />
+    <field name="Round Intra" dword="6" bits="23:20" type="uint">
+      <value name="+1/32" value="0" />
+      <value name="+2/32" value="1" />
+      <value name="+3/32" value="2" />
+      <value name="+4/32" value="3" />
+      <value name="+5/32" value="4" />
+      <value name="+6/32" value="5" />
+      <value name="+7/32" value="6" />
+      <value name="+8/32" value="7" />
+      <value name="+9/32" value="8" />
+      <value name="+10/32" value="9" />
+      <value name="+11/32" value="10" />
+      <value name="+12/32" value="11" />
+      <value name="+13/32" value="12" />
+      <value name="+14/32" value="13" />
+      <value name="+15/32" value="14" />
+      <value name="+16/32" value="15" />
+    </field>
+    <field name="Round Inter" dword="6" bits="29:26" type="uint">
+      <value name="+1/32" value="0" />
+      <value name="+2/32" value="1" />
+      <value name="+3/32" value="2" />
+      <value name="+4/32" value="3" />
+      <value name="+5/32" value="4" />
+      <value name="+6/32" value="5" />
+      <value name="+7/32" value="6" />
+      <value name="+8/32" value="7" />
+      <value name="+9/32" value="8" />
+      <value name="+10/32" value="9" />
+      <value name="+11/32" value="10" />
+      <value name="+12/32" value="11" />
+      <value name="+13/32" value="12" />
+      <value name="+14/32" value="13" />
+      <value name="+15/32" value="14" />
+      <value name="+16/32" value="15" />
+    </field>
+    <field name="CABAC Zero Word Insertion Enable" dword="7" bits="1:1" type="bool" />
+    <field name="Emulation Byte Slice Insert Enable" dword="7" bits="2:2" type="bool" />
+    <field name="Tail Insertion Present" dword="7" bits="8:8" type="bool" />
+    <field name="Slice Data Insertion Present" dword="7" bits="9:9" type="bool" />
+    <field name="Header Insertion Present" dword="7" bits="10:10" type="bool" />
+    <field name="Indirect PAK-BSE Data Start Offset" dword="8" bits="28:6" type="offset" />
+    <field name="Transform Skip Lambda" dword="9" bits="15:0" type="uint" />
+    <field name="Transform Skip Number of Zero Coeffs Factor0" dword="10" bits="7:0" type="uint" />
+    <field name="Transform Skip Number of Non-Zero Coeffs Factor0" dword="10" bits="15:8" type="uint" />
+    <field name="Transform Skip Number of Zero Coeffs Factor1" dword="10" bits="23:16" type="uint" />
+    <field name="Transform Skip Number of Non-Zero Coeffs Factor1" dword="10" bits="31:24" type="uint" />
+  </instruction>
+  <instruction name="HCP_SURFACE_STATE" bias="2" length="3" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="1" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="Surface ID" dword="1" bits="31:28" type="uint" prefix="HCP">
+      <value name="Current Decoded Picture" value="0" />
+      <value name="Source Input Picture" value="1" />
+      <value name="Prev Reference Picture" value="2" />
+      <value name="Golden Reference Picture" value="3" />
+      <value name="AltRef Reference Picture" value="4" />
+      <value name="Reference Picture" value="5" />
+    </field>
+    <field name="Y Offset for U(Cb)" dword="2" bits="14:0" type="uint" />
+    <field name="Surface Format" dword="2" bits="31:28" type="uint">
+      <value name="PLANAR_420_8" value="4" />
+      <value name="P010" value="13" />
+    </field>
+  </instruction>
+  <instruction name="HCP_TILE_CODING" bias="1" length="1" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="21" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="SAO Parameter Offset" dword="4" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="HCP_TILE_STATE" bias="2" length="13" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="11" />
+    <field name="Media Instruction Command" dword="0" bits="22:16" type="uint" default="17" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Number of Tile Rows" dword="1" bits="4:0" type="uint" />
+    <field name="Number of Tile Columns" dword="1" bits="9:5" type="uint" />
+    <group count="5" dword="2" size="32">
+      <field name="Column Position" dword="0" bits="31:0" type="HCP_TILE_POSITION_IN_CTB" />
+    </group>
+    <group count="6" dword="7" size="32">
+      <field name="Row position" dword="0" bits="31:0" type="HCP_TILE_POSITION_IN_CTB" />
+    </group>
+  </instruction>
+  <instruction name="HCP_VP9_PIC_STATE" bias="2" length="12" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="10" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="48" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Width" dword="1" bits="13:0" type="uint" />
+    <field name="Frame Height" dword="1" bits="29:16" type="uint" />
+    <field name="Frame Type" dword="2" bits="0:0" type="uint" prefix="VP9">
+      <value name="Key Frame" value="0" />
+      <value name="Inter Frame" value="1" />
+    </field>
+    <field name="Adapt Probabilities" dword="2" bits="1:1" type="bool" />
+    <field name="Intra Only" dword="2" bits="2:2" type="bool" />
+    <field name="Allow Hi Precision MV" dword="2" bits="3:3" type="bool" />
+    <field name="Motion Compensation Filter Type" dword="2" bits="6:4" type="uint">
+      <value name="Eight-tap" value="0" />
+      <value name="Eight-tap-Smooth" value="1" />
+      <value name="Eight-tap-Sharp" value="2" />
+      <value name="Bilinear" value="3" />
+      <value name="Switchable" value="4" />
+    </field>
+    <field name="Reference Frame Sign Bias" dword="2" bits="9:7" type="uint" />
+    <field name="Use Prev in Find MV References" dword="2" bits="10:10" type="bool" />
+    <field name="Hybrid Prediction Mode" dword="2" bits="11:11" type="uint" />
+    <field name="Selectable TX Mode" dword="2" bits="12:12" type="uint" />
+    <field name="Last Frame Type" dword="2" bits="13:13" type="uint" prefix="VP9">
+      <value name="Key Frame" value="0" />
+      <value name="Non Key Frame" value="1" />
+    </field>
+    <field name="Refresh Frame Context Enable" dword="2" bits="14:14" type="bool" />
+    <field name="Error Resilient Mode Enable" dword="2" bits="15:15" type="bool" />
+    <field name="Frame Parallel Decoding Mode Enable" dword="2" bits="16:16" type="bool" />
+    <field name="Filter Level" dword="2" bits="22:17" type="uint" />
+    <field name="Sharpness Level" dword="2" bits="25:23" type="uint" />
+    <field name="Segmentation Enable" dword="2" bits="26:26" type="bool" />
+    <field name="Segmentation Update Map" dword="2" bits="27:27" type="bool" />
+    <field name="Segmentation Temporal Update" dword="2" bits="28:28" type="bool" />
+    <field name="Lossless Mode" dword="2" bits="29:29" type="bool" />
+    <field name="Segment ID Stream-Out Enable" dword="2" bits="30:30" type="bool" />
+    <field name="Segment ID Stream-In Enable" dword="2" bits="31:31" type="bool" />
+    <field name="Log2 Tile Column" dword="3" bits="3:0" type="uint">
+      <value name="1 Tile Column" value="0" />
+      <value name="2 Tile Column" value="1" />
+      <value name="4 Tile Column" value="2" />
+      <value name="8 Tile Column" value="3" />
+      <value name="16 Tile Column" value="4" />
+      <value name="32 Tile Column" value="5" />
+      <value name="64 Tile Column" value="6" />
+    </field>
+    <field name="Log2 Tile Row" dword="3" bits="9:8" type="uint">
+      <value name="1 Tile Row" value="0" />
+      <value name="2 Tile Row" value="1" />
+      <value name="4 Tile Row" value="2" />
+    </field>
+    <field name="Chroma Sampling Format" dword="3" bits="23:22" type="uint">
+      <value name="Format_420" value="0" />
+      <value name="Format_422" value="1" />
+      <value name="Format_444" value="2" />
+    </field>
+    <field name="Bit Depth" dword="3" bits="27:24" type="uint">
+      <value name="8-bit" value="0" />
+      <value name="10-bit" value="2" />
+      <value name="12-bit" value="4" />
+    </field>
+    <field name="Profile Level" dword="3" bits="31:28" type="uint">
+      <value name="Profile_0" value="0" />
+      <value name="Profile_2" value="2" />
+    </field>
+    <field name="Vertical Scale Factor for LAST" dword="4" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor for LAST" dword="4" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor for GOLDEN" dword="5" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor for GOLDEN" dword="5" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor for ALTREF" dword="6" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor for ALTREF" dword="6" bits="31:16" type="uint" />
+    <field name="Last Frame Width" dword="7" bits="13:0" type="uint" />
+    <field name="Last Frame Height" dword="7" bits="29:16" type="uint" />
+    <field name="Golden Frame Width" dword="8" bits="13:0" type="uint" />
+    <field name="Golden Frame Height" dword="8" bits="29:16" type="uint" />
+    <field name="Altref Frame Width" dword="9" bits="13:0" type="uint" />
+    <field name="Altref Frame Height" dword="9" bits="29:16" type="uint" />
+    <field name="Uncompressed Header Length" dword="10" bits="7:0" type="uint" />
+    <field name="First Partition Size" dword="10" bits="31:16" type="uint" />
+    <field name="Motion Comp Scaling Enable" dword="11" bits="1:1" type="bool" />
+    <field name="Compressed Header BIN count" dword="13" bits="15:0" type="uint" />
+    <field name="Luma AC Q Index Delta" dword="13" bits="23:16" type="uint" />
+    <field name="Chroma AC Q Index Delta" dword="14" bits="4:0" type="int" />
+    <field name="Chroma DC Q Index Delta" dword="14" bits="12:8" type="int" />
+    <field name="Luma DC Q Index Delta" dword="14" bits="20:16" type="int" />
+    <field name="LF Ref Delta 0" dword="15" bits="6:0" type="int" />
+    <field name="LF Ref Delta 1" dword="15" bits="14:8" type="int" />
+    <field name="LF Ref Delta 2" dword="15" bits="22:16" type="int" />
+    <field name="LF Ref Delta 3" dword="15" bits="30:24" type="int" />
+    <field name="LF Mode Delta 0" dword="16" bits="6:0" type="int" />
+    <field name="LF Mode Delta 1" dword="16" bits="14:8" type="int" />
+    <field name="Bit Offset for LF Ref Delta" dword="17" bits="15:0" type="uint" />
+    <field name="Bit Offset for LF Mode Delta" dword="17" bits="31:16" type="uint" />
+    <field name="Bit Offset for Q index" dword="18" bits="15:0" type="uint" />
+    <field name="Bit Offset for LF Level" dword="18" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="HCP_VP9_SEGMENT_STATE" bias="2" length="7" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="5" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="50" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Segment ID" dword="1" bits="2:0" type="uint" />
+    <field name="Segment Skipped" dword="2" bits="0:0" type="bool" />
+    <field name="Segment Reference" dword="2" bits="2:1" type="uint" />
+    <field name="Segment Reference Enable" dword="2" bits="3:3" type="bool" />
+    <field name="Filter Level Ref0 Mode 0" dword="3" bits="5:0" type="uint" />
+    <field name="Filter Level Ref0 Mode 1" dword="3" bits="13:8" type="uint" />
+    <field name="Filter Level Ref1 Mode 0" dword="3" bits="21:16" type="uint" />
+    <field name="Filter Level Ref1 Mode 1" dword="3" bits="29:24" type="uint" />
+    <field name="Filter Level Ref2 Mode 0" dword="4" bits="5:0" type="uint" />
+    <field name="Filter Level Ref2 Mode 1" dword="4" bits="13:8" type="uint" />
+    <field name="Filter Level Ref3 Mode 0" dword="4" bits="21:16" type="uint" />
+    <field name="Filter Level Ref3 Mode 1" dword="4" bits="29:24" type="uint" />
+    <field name="Luma DC Quant Scale" dword="5" bits="14:0" type="uint" />
+    <field name="Luma AC Quant Scale" dword="5" bits="30:16" type="uint" />
+    <field name="Chroma DC Quant Scale" dword="6" bits="14:0" type="uint" />
+    <field name="Chroma AC Quant Scale" dword="6" bits="30:16" type="uint" />
+  </instruction>
+  <instruction name="HCP_WEIGHTOFFSET_STATE" bias="2" length="34" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="32" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="19" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Reference Picture List Select" dword="1" bits="0:0" type="uint" />
+    <group count="16" dword="2" size="32">
+      <field name="Luma Offsets" dword="0" bits="31:0" type="HCP_WEIGHTOFFSET_LUMA_ENTRY" />
+    </group>
+    <group count="16" dword="18" size="32">
+      <field name="Chroma Offsets" dword="0" bits="31:0" type="HCP_WEIGHTOFFSET_CHROMA_ENTRY" />
+    </group>
+  </instruction>
+  <instruction name="HEVC_VP9_RDOQ_STATE" bias="2" length="62" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="60" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="8" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="HTQ Performance Fix 1 Disable" dword="1" bits="30:30" type="bool" />
+    <field name="HTQ Performance Fix 0 Disable" dword="1" bits="31:31" type="bool" />
+    <group count="32" dword="2" size="32">
+      <field name="Intra Luma Lambda" dword="0" bits="31:0" type="HEVC_VP9_RDOQ_LAMBDA_FIELDS" />
+    </group>
+    <group count="32" dword="34" size="32">
+      <field name="Intra Chroma Lambda" dword="0" bits="31:0" type="HEVC_VP9_RDOQ_LAMBDA_FIELDS" />
+    </group>
+    <group count="32" dword="66" size="32">
+      <field name="Inter Luma Lambda" dword="0" bits="31:0" type="HEVC_VP9_RDOQ_LAMBDA_FIELDS" />
+    </group>
+    <group count="32" dword="98" size="32">
+      <field name="Inter Chroma Lambda" dword="0" bits="31:0" type="HEVC_VP9_RDOQ_LAMBDA_FIELDS" />
+    </group>
+  </instruction>
+  <instruction name="HUC_CFG_STATE" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="3" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="11" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="P24C" dword="1" bits="0:0" type="uint">
+      <value name="Normal operation" value="0" />
+      <value name="Force reset" value="1" />
+    </field>
+  </instruction>
+  <instruction name="HUC_DMEM_STATE" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="11" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="HUC Data Source - Address" dword="1" bits="63:0" type="address" />
+    <field name="HUC Data Source - Memory Address Attributes" dword="3" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="HUC Data Destination - Address" dword="4" bits="16:6" type="address" />
+    <field name="HUC Data Length" dword="5" bits="16:6" type="uint" />
+  </instruction>
+  <instruction name="HUC_IMEM_STATE" bias="2" length="5" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="11" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="HUC Firmware Descriptor" dword="4" bits="7:0" type="uint" />
+  </instruction>
+  <instruction name="HUC_IND_OBJ_BASE_ADDR_STATE" bias="2" length="11" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="5" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="11" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="HUC Indirect Stream-In Object - Address" dword="1" bits="63:0" type="address" />
+    <field name="HUC Indirect Stream-In Object - Memory Address Attributes" dword="3" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="HUC Indirect Stream-In Object - Access Upper Bound" dword="4" bits="63:0" type="address" />
+    <field name="HUC Indirect Stream-Out Object - Address" dword="6" bits="63:0" type="address" />
+    <field name="HUC Indirect Stream-Out Object - Memory Address Attributes" dword="8" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="HUC Indirect Stream-Out Object - Access Upper Bound" dword="9" bits="63:0" type="address" />
+  </instruction>
+  <instruction name="HUC_PIPE_MODE_SELECT" bias="2" length="3" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="11" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect Stream-Out Enable" dword="1" bits="4:4" type="bool" />
+    <field name="Media Soft-Reset Counter" dword="2" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="HUC_START" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="33" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="11" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Last Stream Object" dword="1" bits="0:0" type="bool" />
+  </instruction>
+  <instruction name="HUC_STREAM_OBJECT" bias="2" length="5" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="32" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="11" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect Stream-In Data Length" dword="1" bits="31:0" type="uint" />
+    <field name="Indirect Stream-In - Address" dword="2" bits="28:0" type="address" />
+    <field name="HUC Processing" dword="2" bits="31:31" type="bool" />
+    <field name="Indirect Stream-Out - Address" dword="3" bits="28:0" type="address" />
+    <field name="Start Code Byte [0]" dword="4" bits="7:0" type="uint" />
+    <field name="Start Code Byte [1]" dword="4" bits="15:8" type="uint" />
+    <field name="Start Code Byte [2]" dword="4" bits="23:16" type="uint" />
+    <field name="Start Code Search Engine" dword="4" bits="24:24" type="bool" />
+    <field name="Emulation Prevention Byte Removal" dword="4" bits="25:25" type="bool" />
+    <field name="Stream-Out" dword="4" bits="26:26" type="bool" />
+    <field name="DRM Length Mode" dword="4" bits="28:27" type="uint">
+      <value name="Start Code Mode" value="0" />
+      <value name="Length Mode" value="1" />
+    </field>
+    <field name="HUC Bitstream Enable" dword="4" bits="29:29" type="bool" />
+  </instruction>
+  <instruction name="HUC_VIRTUAL_ADDR_STATE" bias="2" length="49" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="4" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="11" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="16" dword="1" size="96">
+      <field name="HUC Virtual Address Region" dword="0" bits="95:0" type="HUC_VIRTUAL_ADDR_REGION" />
+    </group>
+  </instruction>
+  <instruction name="MEDIA_OBJECT" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="4" />
+    <field name="Media Command Sub-Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Media Command Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="Indirect Data Length" dword="2" bits="16:0" type="uint" />
+    <field name="SubSlice Destination Select" dword="2" bits="18:17" type="uint">
+      <value name="Subslice 3" value="3" />
+      <value name="SubSlice 2" value="2" />
+      <value name="SubSlice 1" value="1" />
+      <value name="SubSlice 0" value="0" />
+    </field>
+    <field name="Slice Destination Select" dword="2" bits="20:19" type="uint">
+      <value name="Slice 0" value="0" />
+      <value name="Slice 1" value="1" />
+      <value name="Slice 2" value="2" />
+    </field>
+    <field name="Use Scoreboard" dword="2" bits="21:21" type="uint">
+      <value name="Not using scoreboard" value="0" />
+      <value name="Using scoreboard" value="1" />
+    </field>
+    <field name="Force Destination" dword="2" bits="22:22" type="uint" />
+    <field name="Thread Synchronization" dword="2" bits="24:24" type="uint">
+      <value name="No thread synchronization" value="0" />
+      <value name="Thread dispatch is synchronized by the 'spawn root thread' message" value="1" />
+    </field>
+    <field name="Slice Destination Select MSBs" dword="2" bits="26:25" type="uint" />
+    <field name="Children Present" dword="2" bits="31:31" type="bool" />
+    <field name="Indirect Data Start Address" dword="3" bits="31:0" type="address" />
+    <field name="Scoreboard X" dword="4" bits="8:0" type="uint" />
+    <field name="Scoredboard Y" dword="4" bits="24:16" type="uint" />
+    <field name="Scoreboard Mask" dword="5" bits="7:0" type="uint" />
+    <field name="Scoreboard Color" dword="5" bits="19:16" type="uint" />
+    <group count="0" dword="6" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MEDIA_OBJECT_GRPID" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="5" />
+    <field name="Media Command Sub-Opcode" dword="0" bits="23:16" type="uint" default="6" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Media Command Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="Indirect Data Length" dword="2" bits="16:0" type="uint" />
+    <field name="SubSlice Destination Select" dword="2" bits="18:17" type="uint">
+      <value name="Subslice3" value="3" />
+      <value name="SubSlice 2" value="2" />
+      <value name="SubSlice 1" value="1" />
+      <value name="SubSlice 0" value="0" />
+    </field>
+    <field name="Slice Destination Select" dword="2" bits="20:19" type="uint">
+      <value name="Slice 0" value="0" />
+      <value name="Slice 1" value="1" />
+      <value name="Slice 2" value="2" />
+    </field>
+    <field name="Use Scoreboard" dword="2" bits="21:21" type="uint">
+      <value name="Not using scoreboard" value="0" />
+      <value name="Using scoreboard" value="1" />
+    </field>
+    <field name="Force Destination" dword="2" bits="22:22" type="uint" />
+    <field name="End of Thread Group" dword="2" bits="23:23" type="uint" />
+    <field name="Slice Destination Select MSB" dword="2" bits="24:24" type="uint" />
+    <field name="Indirect Data Start Address" dword="3" bits="31:0" type="address" />
+    <field name="Scoreboard X" dword="4" bits="8:0" type="uint" />
+    <field name="Scoreboard Y" dword="4" bits="24:16" type="uint" />
+    <field name="Scoreboard Mask" dword="5" bits="7:0" type="uint" />
+    <field name="Scoreboard Color" dword="5" bits="19:16" type="uint" />
+    <field name="GroupID" dword="6" bits="31:0" type="uint" />
+    <group count="0" dword="7" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MEDIA_OBJECT_WALKER" bias="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="15" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="3" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Interface Descriptor Offset" dword="1" bits="5:0" type="uint" />
+    <field name="Indirect Data Length" dword="2" bits="16:0" type="uint" />
+    <field name="Use Scoreboard" dword="2" bits="21:21" type="uint">
+      <value name="Not using scoreboard" value="0" />
+      <value name="Using scoreboard" value="1" />
+    </field>
+    <field name="Masked Dispatch" dword="2" bits="23:22" type="uint" />
+    <field name="Thread Synchronization" dword="2" bits="24:24" type="uint">
+      <value name="No thread synchronization" value="0" />
+      <value name="Thread dispatch is synchronized by the 'spawn root thread' message" value="1" />
+    </field>
+    <field name="Indirect Data Start Address" dword="3" bits="31:0" type="uint" />
+    <field name="Scoreboard Mask" dword="5" bits="7:0" type="uint" />
+    <field name="Group ID Loop Select" dword="5" bits="31:8" type="uint">
+      <value name="No_Groups" value="0" />
+      <value name="Color_Groups" value="1" />
+      <value name="InnerLocal_Groups" value="2" />
+      <value name="MidLocal_Groups" value="3" />
+      <value name="OuterLocal_Groups" value="4" />
+      <value name="InnerGlobal_Groups" value="5" />
+    </field>
+    <field name="Mid-Loop Unit X" dword="6" bits="9:8" type="int" />
+    <field name="Local Mid-Loop Unit Y" dword="6" bits="13:12" type="int" />
+    <field name="Middle Loop Extra Steps" dword="6" bits="20:16" type="uint" />
+    <field name="Color Count Minus One" dword="6" bits="27:24" type="uint" />
+    <field name="Local Loop Exec Count" dword="7" bits="11:0" type="uint" />
+    <field name="Global Loop Exec Count" dword="7" bits="27:16" type="uint" />
+    <field name="Block Resolution X" dword="8" bits="10:0" type="uint" />
+    <field name="Block Resolution Y" dword="8" bits="26:16" type="uint" />
+    <field name="Local Start X" dword="9" bits="10:0" type="uint" />
+    <field name="Local Start Y" dword="9" bits="26:16" type="uint" />
+    <field name="Local Outer Loop Stride X" dword="11" bits="11:0" type="int" />
+    <field name="Local Outer Loop Stride Y" dword="11" bits="27:16" type="int" />
+    <field name="Local Inner Loop Unit X" dword="12" bits="11:0" type="int" />
+    <field name="Local Inner Loop Unit Y" dword="12" bits="27:16" type="int" />
+    <field name="Global Resolution X" dword="13" bits="10:0" type="uint" />
+    <field name="Global Resolution Y" dword="13" bits="26:16" type="uint" />
+    <field name="Global Start X" dword="14" bits="11:0" type="int" />
+    <field name="Global Start Y" dword="14" bits="27:16" type="int" />
+    <field name="Global Outer Loop Stride X" dword="15" bits="11:0" type="int" />
+    <field name="Global Outer Loop Stride Y" dword="15" bits="27:16" type="int" />
+    <field name="Global Inner Loop Unit X" dword="16" bits="11:0" type="int" />
+    <field name="Global Inner Loop Unit Y" dword="16" bits="27:16" type="int" />
+    <group count="0" dword="17" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MEDIA_VFE_STATE" bias="2" length="9" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="7" />
+    <field name="SubOpcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Per Thread Scratch Space" dword="1" bits="3:0" type="uint" />
+    <field name="Stack Size" dword="1" bits="7:4" type="uint" />
+    <field name="Scratch Space Base Pointer" dword="1" bits="47:10" type="address" />
+    <field name="Reset Gateway Timer" dword="3" bits="7:7" type="uint">
+      <value name="Maintaining the existing timestamp state" value="0" />
+      <value name="Resetting relative timer and latching the global timestamp" value="1" />
+    </field>
+    <field name="Number of URB Entries" dword="3" bits="15:8" type="uint" />
+    <field name="Maximum Number of Threads" dword="3" bits="31:16" type="uint" />
+    <field name="Slice Disable" dword="4" bits="1:0" type="uint">
+      <value name="All Subslices Enabled" value="0" />
+      <value name="Only Slice 0 Enabled" value="1" />
+      <value name="Only Slice 0 Subslice 0 Enabled" value="3" />
+    </field>
+    <field name="CURBE Allocation Size" dword="5" bits="15:0" type="uint" />
+    <field name="URB Entry Allocation Size" dword="5" bits="31:16" type="uint" />
+    <field name="Scoreboard Mask" dword="6" bits="7:0" type="uint" />
+    <field name="Scoreboard Type" dword="6" bits="30:30" type="uint">
+      <value name="Stalling Scoreboard" value="0" />
+      <value name="Non-Stalling Scoreboard" value="1" />
+    </field>
+    <field name="Scoreboard Enable" dword="6" bits="31:31" type="bool" />
+    <field name="Scoreboard 0 Delta X" dword="7" bits="3:0" type="int" />
+    <field name="Scoreboard 0 Delta Y" dword="7" bits="7:4" type="int" />
+    <field name="Scoreboard 1 Delta X" dword="7" bits="11:8" type="int" />
+    <field name="Scoreboard 1 Delta Y" dword="7" bits="15:12" type="int" />
+    <field name="Scoreboard 2 Delta X" dword="7" bits="19:16" type="int" />
+    <field name="Scoreboard 2 Delta Y" dword="7" bits="23:20" type="int" />
+    <field name="Scoreboard 3 Delta X" dword="7" bits="27:24" type="int" />
+    <field name="Scoreboard 3 Delta Y" dword="7" bits="31:28" type="int" />
+    <field name="Scoreboard 4 Delta X" dword="8" bits="3:0" type="int" />
+    <field name="Scoreboard 4 Delta Y" dword="8" bits="7:4" type="int" />
+    <field name="Scoreboard 5 Delta X" dword="8" bits="11:8" type="int" />
+    <field name="Scoreboard 5 Delta Y" dword="8" bits="15:12" type="int" />
+    <field name="Scoreboard 6 Delta X" dword="8" bits="19:16" type="int" />
+    <field name="Scoreboard 6 Delta Y" dword="8" bits="23:20" type="int" />
+    <field name="Scoreboard 7 Delta X" dword="8" bits="27:24" type="int" />
+    <field name="Scoreboard 7 Delta Y" dword="8" bits="31:28" type="int" />
+  </instruction>
+  <instruction name="MFC_AVC_PAK_OBJECT" bias="2" length="12" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="10" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="9" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect PAK-MV Data Length" dword="1" bits="9:0" type="uint" />
+    <field name="Indirect PAK-MV Data Start Address Offset" dword="2" bits="28:0" type="offset" />
+    <group count="8" dword="3" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+    <group count="12" dword="12" size="32">
+      <field name="VDEnc Mode Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFC_JPEG_HUFF_TABLE_STATE" bias="2" length="176" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="174" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="3" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Huff Table ID" dword="1" bits="0:0" type="uint" />
+    <field name="DC_TABLE" dword="2" bits="383:0" type="uint" />
+    <field name="AC_TABLE" dword="14" bits="5183:0" type="uint" />
+  </instruction>
+  <instruction name="MFC_JPEG_SCAN_OBJECT" bias="2" length="3" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="1" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="9" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="MCU Count" dword="1" bits="25:0" type="uint" />
+    <field name="Restart Interval" dword="2" bits="15:0" type="uint" />
+    <field name="Last Scan" dword="2" bits="16:16" type="bool" />
+    <field name="Head Present" dword="2" bits="17:17" type="bool" />
+    <field name="Huffman DC Table" dword="2" bits="20:18" type="uint" />
+    <field name="Huffman AC Table" dword="2" bits="24:22" type="uint" />
+  </instruction>
+  <instruction name="MFD_AVC_BSD_OBJECT" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="8" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect BSD Data Length" dword="1" bits="31:0" type="uint" />
+    <field name="Indirect BSD Data Start Address" dword="2" bits="28:0" type="offset" />
+    <field name="Inline Data" dword="3" bits="95:0" type="INLINE_DATA_DESCRIPTION_FOR_MFD_AVC_BSD_OBJECT" />
+  </instruction>
+  <instruction name="MFD_AVC_DPB_STATE" bias="2" length="27" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="25" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="6" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="16" dword="1" size="1">
+      <field name="Non-Existing Frame" dword="0" bits="0:0" type="uint">
+        <value name="INVALID" value="1" />
+        <value name="VALID" value="0" />
+      </field>
+    </group>
+    <group count="16" dword="1" offset_bits="16" size="1">
+      <field name="Long Term Frame" dword="0" bits="0:0" type="uint" />
+    </group>
+    <group count="16" dword="2" size="2">
+      <field name="Used for Reference" dword="0" bits="1:0" type="uint">
+        <value name="NOT_REFERENCE" value="0" />
+        <value name="TOP_FIELD" value="1" />
+        <value name="BOTTOM_FIELD" value="2" />
+        <value name="FRAME" value="3" />
+      </field>
+    </group>
+    <group count="16" dword="3" size="16">
+      <field name="LTST Frame Number List" dword="0" bits="15:0" type="uint" />
+    </group>
+    <group count="16" dword="11" size="16">
+      <field name="View ID" dword="0" bits="15:0" type="uint" />
+    </group>
+    <group count="16" dword="19" size="8">
+      <field name="L0 View Order" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="16" dword="23" size="8">
+      <field name="L1 View Order" dword="0" bits="7:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFD_AVC_SLICEADDR" bias="2" length="3" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="1" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="7" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="1" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect BSD Data Length" dword="1" bits="31:0" type="uint" />
+    <field name="Indirect BSD Data Start Address" dword="2" bits="28:0" type="offset" />
+  </instruction>
+  <instruction name="MFX_AVC_IMG_STATE" bias="2" length="21" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="19" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Size" dword="1" bits="15:0" type="uint" />
+    <field name="Frame Width" dword="2" bits="7:0" type="uint" />
+    <field name="Frame Height" dword="2" bits="23:16" type="uint" />
+    <field name="Image Structure" dword="3" bits="9:8" type="uint">
+      <value name="Frame Picture" value="0" />
+      <value name="Top Field Picture" value="1" />
+      <value name="Bottom Field Picture" value="3" />
+      <value name="Invalid, not allowed." value="2" />
+    </field>
+    <field name="Weighted BiPrediction IDC" dword="3" bits="11:10" type="uint">
+      <value name="DEFAULT" value="0" />
+      <value name="EXPLICIT" value="1" />
+      <value name="IMPLICIT" value="2" />
+    </field>
+    <field name="Weighted Prediction Enable" dword="3" bits="12:12" type="bool" />
+    <field name="Rho Domain Rate Control Enable" dword="3" bits="13:13" type="bool" />
+    <field name="First Chroma QP Offset" dword="3" bits="20:16" type="int" />
+    <field name="Second Chroma QP Offset" dword="3" bits="28:24" type="int" />
+    <field name="Field Picture" dword="4" bits="0:0" type="bool" />
+    <field name="MBAFF Mode" dword="4" bits="1:1" type="bool" />
+    <field name="Frame MB Only" dword="4" bits="2:2" type="bool" />
+    <field name="8x8 IDCT Transform Mode" dword="4" bits="3:3" type="bool" />
+    <field name="Direct 8x8 Inference" dword="4" bits="4:4" type="bool" />
+    <field name="Constrained Intra Prediction" dword="4" bits="5:5" type="bool" />
+    <field name="Non-Reference Picture" dword="4" bits="6:6" type="bool" />
+    <field name="Entropy Coding Sync Enable" dword="4" bits="7:7" type="bool" />
+    <field name="MB MV Format" dword="4" bits="8:8" type="uint">
+      <value name="IGNORE" value="0" />
+      <value name="FOLLOW" value="1" />
+    </field>
+    <field name="Chroma Format IDC" dword="4" bits="11:10" type="uint">
+      <value name="Monochrome picture" value="0" />
+      <value name="4:2:0 picture" value="1" />
+      <value name="4:2:2 picture (not supported)" value="2" />
+      <value name="4:4:4 picture (not supported)" value="3" />
+    </field>
+    <field name="MV Unpacked Enable" dword="4" bits="12:12" type="bool" />
+    <field name="Load Bitstream Pointer Per Slice" dword="4" bits="14:14" type="bool" />
+    <field name="MB Status Read" dword="4" bits="15:15" type="bool" />
+    <field name="Minimum Frame Size" dword="4" bits="31:16" type="uint" />
+    <field name="Intra MB Max Bit Control" dword="5" bits="0:0" type="bool" />
+    <field name="Inter MB Max Bit Control" dword="5" bits="1:1" type="bool" />
+    <field name="Frame Bitrate Max Report" dword="5" bits="2:2" type="bool" />
+    <field name="Frame Bitrate Min Report" dword="5" bits="3:3" type="bool" />
+    <field name="Force IPCM Control" dword="5" bits="7:7" type="bool" />
+    <field name="MB Level Rate Control" dword="5" bits="9:9" type="bool" />
+    <field name="Minimum Frame Size Units" dword="5" bits="11:10" type="uint" prefix="AVC_MFSU">
+      <value name="Compatibility mode" value="0" />
+      <value name="16 bytes" value="1" />
+      <value name="4Kb" value="2" />
+      <value name="16Kb" value="3" />
+    </field>
+    <field name="Non First Pass" dword="5" bits="16:16" type="uint" />
+    <field name="Trellis Quantization Chroma Disable" dword="5" bits="27:27" type="bool" />
+    <field name="Trellis Quantization Rounding" dword="5" bits="30:28" type="uint" />
+    <field name="Trellis Quantization Enable" dword="5" bits="31:31" type="bool" />
+    <field name="Intra MB Conformance Max Size" dword="6" bits="11:0" type="uint" />
+    <field name="Inter MB Conformance Max Size" dword="6" bits="27:16" type="uint" />
+    <field name="Slice Delta QP Max[0]" dword="8" bits="7:0" type="int" />
+    <field name="Slice Delta QP Max[1]" dword="8" bits="15:8" type="int" />
+    <field name="Slice Delta QP Max[2]" dword="8" bits="23:16" type="uint" />
+    <field name="Slice Delta QP Max[3]" dword="8" bits="31:24" type="int" />
+    <field name="Slice Delta QP Min[0]" dword="9" bits="7:0" type="int" />
+    <field name="Slice Delta QP Min[1]" dword="9" bits="15:8" type="int" />
+    <field name="Slice Delta QP Min[2]" dword="9" bits="23:16" type="int" />
+    <field name="Slice Delta QP Min[3]" dword="9" bits="31:24" type="int" />
+    <field name="Frame Bitrate Min" dword="10" bits="13:0" type="uint" />
+    <field name="Frame Bitrate Min Unit Mode" dword="10" bits="14:14" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Min Unit" dword="10" bits="15:15" type="uint" />
+    <field name="Frame Bitrate Max" dword="10" bits="29:16" type="uint" />
+    <field name="Frame Bitrate Max Unit Mode" dword="10" bits="30:30" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Max Unit" dword="10" bits="31:31" type="uint" />
+    <field name="Frame Bitrate Min Delta" dword="11" bits="14:0" type="uint" />
+    <field name="Frame Bitrate Max Delta" dword="11" bits="30:16" type="uint" />
+    <field name="Slice Stats Stream-Out Enable" dword="11" bits="31:31" type="bool" />
+    <field name="Initial QP Value" dword="13" bits="7:0" type="int" />
+    <field name="Number of Active Reference Pictures from L0" dword="13" bits="13:8" type="uint" />
+    <field name="Number of Active Reference Pictures from L1" dword="13" bits="21:16" type="uint" />
+    <field name="Number of Reference Frames" dword="13" bits="28:24" type="uint" />
+    <field name="Current Picture Has Performed MMCO5" dword="13" bits="29:29" type="bool" />
+    <field name="Pic Order Present" dword="14" bits="0:0" type="bool" />
+    <field name="Delta Pic Order Always Zero" dword="14" bits="1:1" type="bool" />
+    <field name="Pic Order Count Type" dword="14" bits="3:2" type="uint" />
+    <field name="Slice Group Map Type" dword="14" bits="10:8" type="uint" />
+    <field name="Redundant Pic Count Present" dword="14" bits="11:11" type="bool" />
+    <field name="Number of Slice Groups" dword="14" bits="14:12" type="uint" />
+    <field name="Deblocking Filter Control Present" dword="14" bits="15:15" type="bool" />
+    <field name="Log2 Max Frame Number" dword="14" bits="23:16" type="uint" />
+    <field name="Log2 Max Pic Order Count LSB" dword="14" bits="31:24" type="uint" />
+    <field name="Slice Group Change Rate" dword="15" bits="15:0" type="uint" />
+    <field name="Current Picture Frame Number" dword="15" bits="31:16" type="uint" />
+    <field name="Current Frame View ID" dword="16" bits="9:0" type="uint" />
+    <field name="Max View IDXL0" dword="16" bits="15:12" type="uint" />
+    <field name="Max View IDXL1" dword="16" bits="21:18" type="uint" />
+    <field name="Inter View Order Disable" dword="16" bits="31:31" type="bool" />
+    <field name="Rho Domain Average MB QP" dword="17" bits="21:16" type="uint" />
+    <field name="Threshold Size" dword="19" bits="31:0" type="uint" />
+    <field name="Target Slice Size" dword="20" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MFX_AVC_SLICE_STATE" bias="2" length="10" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="8" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="3" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Slice Type" dword="1" bits="3:0" type="uint" prefix="AVC_ST">
+      <value name="P Slice" value="0" />
+      <value name="B Slice" value="1" />
+      <value name="I Slice" value="2" />
+    </field>
+    <field name="Log2 Weight Denominator Luma" dword="2" bits="2:0" type="uint" />
+    <field name="Log2 Weight Denominator Chroma" dword="2" bits="10:8" type="uint" />
+    <field name="Number of Reference Pictures in Inter-prediction List 0" dword="2" bits="21:16" type="uint" />
+    <field name="Number of Reference Pictures in Inter-prediction List 1" dword="2" bits="29:24" type="uint" />
+    <field name="Slice Alpha C0 Offset Div2" dword="3" bits="3:0" type="int" />
+    <field name="Slice Beta Offset Div2" dword="3" bits="11:8" type="int" />
+    <field name="Slice Quantization Parameter" dword="3" bits="21:16" type="uint" />
+    <field name="CABAC Init IDC" dword="3" bits="25:24" type="uint" />
+    <field name="Disable Deblocking Filter Indicator" dword="3" bits="28:27" type="uint" />
+    <field name="Direct Prediction Type" dword="3" bits="29:29" type="uint">
+      <value name="Temporal" value="0" />
+      <value name="Spatial" value="1" />
+    </field>
+    <field name="Weighted Prediction Indicator" dword="3" bits="31:30" type="uint" />
+    <field name="Slice Start MB Number" dword="4" bits="14:0" type="uint" />
+    <field name="Slice Horizontal Position" dword="4" bits="23:16" type="uint" />
+    <field name="Slice Vertical Position" dword="4" bits="31:24" type="uint" />
+    <field name="Next Slice Horizontal Position" dword="5" bits="7:0" type="uint" />
+    <field name="Next Slice Vertical Position" dword="5" bits="23:16" type="uint" />
+    <field name="Stream ID" dword="6" bits="1:0" type="uint" />
+    <field name="Slice ID" dword="6" bits="7:4" type="uint" />
+    <field name="CABAC Zero Word Insertion Enable" dword="6" bits="12:12" type="bool" />
+    <field name="Emulation Byte Slice Insert Enable" dword="6" bits="13:13" type="bool" />
+    <field name="Tail Insertion Present" dword="6" bits="15:15" type="bool" />
+    <field name="Slice Data Insertion Present" dword="6" bits="16:16" type="bool" />
+    <field name="Header Insertion Present" dword="6" bits="17:17" type="bool" />
+    <field name="Last Slice Group" dword="6" bits="19:19" type="bool" />
+    <field name="MB Type Skip Conversion Disable" dword="6" bits="20:20" type="bool" />
+    <field name="MB Type Direct Conversion Disable" dword="6" bits="21:21" type="bool" />
+    <field name="Rate Control Panic Type" dword="6" bits="22:22" type="uint">
+      <value name="QP Panic" value="0" />
+      <value name="CBP Panic" value="1" />
+    </field>
+    <field name="Rate Control Panic Enable" dword="6" bits="23:23" type="bool" />
+    <field name="Rate Control Stable Tolerance" dword="6" bits="27:24" type="uint" />
+    <field name="Rate Control Triggle Mode" dword="6" bits="29:28" type="uint">
+      <value name="Always Rate Control" value="0" />
+      <value name="Gentle Rate Control" value="1" />
+      <value name="Loose Rate Control" value="2" />
+    </field>
+    <field name="Reset Rate Control Counter" dword="6" bits="30:30" type="bool" />
+    <field name="Rate Control Counter Enable" dword="6" bits="31:31" type="uint" />
+    <field name="Indirect PAK-BSE Data Start Address" dword="7" bits="28:0" type="offset" />
+    <field name="Grow Init" dword="8" bits="3:0" type="uint" />
+    <field name="Grow Resistance" dword="8" bits="7:4" type="uint" />
+    <field name="Shrink Init" dword="8" bits="11:8" type="uint" />
+    <field name="Shrink Resistance" dword="8" bits="15:12" type="uint" />
+    <field name="QP Max Positive Modifier Magnitude" dword="8" bits="23:16" type="uint" />
+    <field name="QP Max Negative Modifier Magnitude" dword="8" bits="31:24" type="uint" />
+    <field name="Correct 1" dword="9" bits="3:0" type="uint" />
+    <field name="Correct 2" dword="9" bits="7:4" type="uint" />
+    <field name="Correct 3" dword="9" bits="11:8" type="uint" />
+    <field name="Correct 4" dword="9" bits="15:12" type="uint" />
+    <field name="Correct 5" dword="9" bits="19:16" type="uint" />
+    <field name="Correct 6" dword="9" bits="23:20" type="uint" />
+    <field name="Round Intra" dword="9" bits="26:24" type="uint">
+      <value name="+1/16" value="0" />
+      <value name="+2/16" value="1" />
+      <value name="+3/16" value="2" />
+      <value name="+4/16" value="3" />
+      <value name="+5/16" value="4" />
+      <value name="+6/16" value="5" />
+      <value name="+7/16" value="6" />
+      <value name="+8/16" value="7" />
+    </field>
+    <field name="Round Intra Enable" dword="9" bits="27:27" type="bool" />
+    <field name="Round Inter" dword="9" bits="30:28" type="uint">
+      <value name="+1/16" value="0" />
+      <value name="+2/16" value="1" />
+      <value name="+3/16" value="2" />
+      <value name="+4/16" value="3" />
+      <value name="+5/16" value="4" />
+      <value name="+6/16" value="5" />
+      <value name="+7/16" value="6" />
+      <value name="+8/16" value="7" />
+    </field>
+    <field name="Round Inter Enable" dword="9" bits="31:31" type="bool" />
+    <field name="CV0" dword="10" bits="3:0" type="uint" />
+    <field name="CV1" dword="10" bits="7:4" type="uint" />
+    <field name="CV2" dword="10" bits="11:8" type="uint" />
+    <field name="CV3" dword="10" bits="15:12" type="uint" />
+    <field name="CV4" dword="10" bits="19:16" type="uint" />
+    <field name="CV5" dword="10" bits="23:20" type="uint" />
+    <field name="CV6" dword="10" bits="27:24" type="uint" />
+    <field name="CV7" dword="10" bits="31:28" type="uint" />
+  </instruction>
+  <instruction name="MFX_BSP_BUF_BASE_ADDR_STATE" bias="2" length="10" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="8" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="4" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="BSD/MPC Row Store Scratch Buffer - Address" dword="1" bits="47:6" type="address" />
+    <field name="BSD/MPC Row Store Scratch Buffer - Attributes" dword="3" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="MPR Row Store Scratch Buffer - Address" dword="4" bits="47:6" type="address" />
+    <field name="MPR Row Store Scratch Buffer - Attributes" dword="6" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Bitplane Read Buffer - Address" dword="7" bits="47:6" type="address" />
+    <field name="Bitplane Read Buffer - Attributes" dword="9" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+  </instruction>
+  <instruction name="MFX_DBK_OBJECT" bias="2" length="13" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="11" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="9" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pre Deblocking Source - Address" dword="1" bits="47:6" type="address" />
+    <field name="Pre Deblocking Source - MOCS" dword="3" bits="6:0" type="uint" nonzero="true" />
+    <field name="Pre Deblocking Source - Arbitration Priority Control" dword="3" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Pre Deblocking Source - Memory Compression Enable" dword="3" bits="9:9" type="bool" />
+    <field name="Pre Deblocking Source - Memory Compression Mode" dword="3" bits="10:10" type="uint" />
+    <field name="Pre Deblocking Source - Tiled Resource Mode" dword="3" bits="14:13" type="uint">
+      <value name="TRMODE_NONE" value="0" />
+      <value name="TRMODE_TILEYF" value="1" />
+      <value name="TRMODE_TILEYS" value="2" />
+    </field>
+    <field name="Deblocking Control - Address" dword="4" bits="47:6" type="address" />
+    <field name="Deblocking Control - MOCS" dword="6" bits="6:0" type="uint" nonzero="true" />
+    <field name="Deblocking Control - Arbitration Priority Control" dword="6" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Deblocking Control - Memory Compression Enable" dword="6" bits="9:9" type="bool" />
+    <field name="Deblocking Control - Memory Compression Mode" dword="6" bits="10:10" type="uint" />
+    <field name="Deblocking Control - Tiled Resource Mode" dword="6" bits="14:13" type="uint">
+      <value name="TRMODE_NONE" value="0" />
+      <value name="TRMODE_TILEYF" value="1" />
+      <value name="TRMODE_TILEYS" value="2" />
+    </field>
+    <field name="Deblocking Destination - Address High" dword="7" bits="47:6" type="address" />
+    <field name="Deblocking Destination - MOCS" dword="9" bits="6:0" type="uint" nonzero="true" />
+    <field name="Deblocking Destination - Arbitration Priority Control" dword="9" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Deblocking Destination - Memory Compression Enable" dword="9" bits="9:9" type="bool" />
+    <field name="Deblocking Destination - Memory Compression Mode" dword="9" bits="10:10" type="uint" />
+    <field name="Deblocking Destination - Tiled Resource Mode" dword="9" bits="14:13" type="uint">
+      <value name="TRMODE_NONE" value="0" />
+      <value name="TRMODE_TILEYF" value="1" />
+      <value name="TRMODE_TILEYS" value="2" />
+    </field>
+    <field name="Deblock Row Store - Address" dword="10" bits="47:6" type="address" />
+    <field name="CoeffProbability Stream-In - MOCS" dword="12" bits="6:0" type="uint" nonzero="true" />
+    <field name="Deblock Row Store - Arbitration Priority Control" dword="12" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Deblock Row Store - Memory Compression Enable" dword="12" bits="9:9" type="bool" />
+    <field name="Deblock Row Store - Memory Compression Mode" dword="12" bits="10:10" type="uint" />
+    <field name="Deblock Row Store - Tiled Resource Mode" dword="12" bits="14:13" type="uint">
+      <value name="TRMODE_NONE" value="0" />
+      <value name="TRMODE_TILEYF" value="1" />
+      <value name="TRMODE_TILEYS" value="2" />
+    </field>
+  </instruction>
+  <instruction name="MFX_FQM_STATE" bias="2" length="34" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="32" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="8" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="AVC" dword="1" bits="1:0" type="uint">
+      <value name="AVC_4x4_Intra_MATRIX" value="0" />
+      <value name="AVC_4x4_Inter_MATRIX" value="1" />
+      <value name="AVC_8x8_Intra_MATRIX" value="2" />
+      <value name="AVC_8x8_Inter_MATRIX" value="3" />
+    </field>
+    <field name="MPEG2" dword="1" bits="1:0" type="uint">
+      <value name="MPEG_INTRA_QUANTIZER_MATRIX" value="0" />
+      <value name="MPEG_NON_INTRA_QUANTIZER_MATRIX" value="1" />
+    </field>
+    <field name="JPEG" dword="1" bits="1:0" type="uint">
+      <value name="JPEG_Luma_Y_QUANTIZER_MATRIX (or R)" value="0" />
+      <value name="JPEG_Chroma_Cb_QUANTIZER_MATRIX (or G)" value="1" />
+      <value name="JPEG_Chroma_Cr_QUANTIZER_MATRIX (or B)" value="2" />
+    </field>
+    <group count="64" dword="2" size="8">
+      <field name="Quantizer Matrix 8x8" dword="0" bits="7:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFX_JPEG_PIC_STATE" bias="2" length="3" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="1" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="7" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Input Format YUV" dword="1" bits="2:0" type="uint" />
+    <field name="Output MCU Structure" dword="1" bits="2:0" type="uint" prefix="MCU">
+      <value name="YUV400" value="0" />
+      <value name="YUV420" value="1" />
+      <value name="YUV422H_2Y" value="2" />
+      <value name="RGB" value="3" />
+    </field>
+    <field name="Rotation" dword="1" bits="5:4" type="uint" />
+    <field name="Output Format YUV" dword="1" bits="11:8" type="uint" />
+    <field name="Input Surface Format YUV" dword="1" bits="11:8" type="uint" prefix="IS">
+      <value name="NV12" value="1" />
+      <value name="UYVY" value="2" />
+      <value name="YUY2" value="3" />
+      <value name="Y8" value="4" />
+      <value name="RGB" value="5" />
+    </field>
+    <field name="Average Down Sampling" dword="1" bits="16:16" type="uint" />
+    <field name="Vertical Down-Sampling Enable" dword="1" bits="17:17" type="bool" />
+    <field name="Horizontal Down-Sampling Enable" dword="1" bits="18:18" type="bool" />
+    <field name="Vertical Up-Sampling Enable" dword="1" bits="20:20" type="bool" />
+    <field name="Pixels In Vertical Last MCU" dword="1" bits="25:21" type="uint" />
+    <field name="Pixels In Horizontal Last MCU" dword="1" bits="30:26" type="uint" />
+    <field name="Frame Width In Blocks" dword="2" bits="12:0" type="uint" />
+    <field name="Rounding Quant" dword="2" bits="15:13" type="uint" />
+    <field name="Frame Height In Blocks" dword="2" bits="28:16" type="uint" />
+    <field name="Output Pixel Normalize" dword="2" bits="29:29" type="uint" />
+  </instruction>
+  <instruction name="MFX_MPEG2_PIC_STATE" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Scan Order" dword="1" bits="6:6" type="uint">
+      <value name="MPEG_ZIGZAG_SCAN" value="0" />
+      <value name="MPEG_ALTERNATE_VERTICAL_SCAN" value="1" />
+    </field>
+    <field name="Intra VLC Format" dword="1" bits="7:7" type="uint" />
+    <field name="Quantizer Scale Type" dword="1" bits="8:8" type="uint">
+      <value name="MPEG_QSCALE_LINEAR" value="0" />
+      <value name="MPEG_QSCALE_NONLINEAR" value="1" />
+    </field>
+    <field name="Concealment MV" dword="1" bits="9:9" type="bool" />
+    <field name="Frame Prediction Frame DCT" dword="1" bits="10:10" type="uint" />
+    <field name="Top Field First" dword="1" bits="11:11" type="bool" />
+    <field name="Picture Structure" dword="1" bits="13:12" type="uint">
+      <value name="MPEG_TOP_FIELD" value="1" />
+      <value name="MPEG_BOTTOM_FIELD" value="2" />
+      <value name="MPEG_FRAME" value="3" />
+    </field>
+    <field name="Intra DC Precision" dword="1" bits="15:14" type="uint" />
+    <field name="F_code[0][0]" dword="1" bits="19:16" type="uint" />
+    <field name="F_code[0][1]" dword="1" bits="23:20" type="uint" />
+    <field name="F_code[1][0]" dword="1" bits="27:24" type="uint" />
+    <field name="F_code[1][1]" dword="1" bits="31:28" type="uint" />
+    <field name="Disable Mismatch" dword="2" bits="0:0" type="bool" />
+    <field name="Mismatch Control Disable" dword="2" bits="1:1" type="bool" />
+    <field name="Picture Coding Type" dword="2" bits="10:9" type="uint">
+      <value name="MPEG_I_PICTURE" value="1" />
+      <value name="MPEG_P_PICTURE" value="2" />
+      <value name="MPEG_B_PICTURE" value="3" />
+    </field>
+    <field name="Load Bitstream Pointer Per Slice" dword="2" bits="14:14" type="bool" />
+    <field name="P/B Slice Predicted MV Override" dword="2" bits="24:24" type="uint">
+      <value name="Predicted" value="0" />
+      <value name="ZERO" value="1" />
+    </field>
+    <field name="P/B Slice Predicted Bi-direction MV Type Override" dword="2" bits="26:25" type="uint" prefix="MPEG2_MVTO">
+      <value name="BID" value="0" />
+      <value name="RESERVED" value="1" />
+      <value name="FWD" value="2" />
+      <value name="BWD" value="3" />
+    </field>
+    <field name="P/B Slice Concealment Mode" dword="2" bits="29:28" type="uint" prefix="MPEG2_CM">
+      <value name="INTER" value="0" />
+      <value name="LEFT" value="1" />
+      <value name="ZERO" value="2" />
+      <value name="INTRA" value="3" />
+    </field>
+    <field name="I Slice Concealment Mode" dword="2" bits="31:31" type="uint" prefix="MPEG2_CM">
+      <value name="Intra Concealment" value="0" />
+      <value name="Inter Concealment" value="1" />
+    </field>
+    <field name="Frame Width In MBs" dword="3" bits="7:0" type="uint" />
+    <field name="Frame Height In MBs" dword="3" bits="23:16" type="uint" />
+    <field name="Slice Concealment Disable" dword="3" bits="31:31" type="bool" />
+    <field name="Round Intra DC" dword="4" bits="2:1" type="uint" />
+    <field name="Round Inter DC" dword="4" bits="6:4" type="uint" />
+    <field name="Round Intra AC" dword="4" bits="10:8" type="uint" />
+    <field name="Round Inter AC," dword="4" bits="14:12" type="uint" />
+    <field name="Minimum Frame Size" dword="4" bits="31:16" type="uint" />
+    <field name="Intra MB Max Bit Control" dword="5" bits="0:0" type="uint" />
+    <field name="Inter MB Max Bit Control" dword="5" bits="1:1" type="uint" />
+    <field name="Frame Bitrate Max Report" dword="5" bits="2:2" type="uint" />
+    <field name="Frame Bitrate Min Report" dword="5" bits="3:3" type="uint" />
+    <field name="MBRateControlMask" dword="5" bits="9:9" type="uint" />
+    <field name="Minimum Frame Size Units" dword="5" bits="11:10" type="uint" prefix="MPEG2_MFSU">
+      <value name="Compatibility mode" value="0" />
+      <value name="16 bytes" value="1" />
+      <value name="4Kb" value="2" />
+      <value name="16Kb" value="3" />
+    </field>
+    <field name="Inter MB Force CBP to Zero Control" dword="5" bits="12:12" type="uint" />
+    <field name="Frame Size Control" dword="5" bits="16:16" type="uint" />
+    <field name="Intra MB Conformance Max Size" dword="6" bits="11:0" type="uint" />
+    <field name="Inter MB Conformance Max Size" dword="6" bits="27:16" type="uint" />
+    <field name="Slice Delta QP Max[0]" dword="8" bits="7:0" type="int" />
+    <field name="Slice Delta QP Max[1]" dword="8" bits="15:8" type="int" />
+    <field name="Slice Delta QP Max[2]" dword="8" bits="23:16" type="int" />
+    <field name="Slice Delta QP Max[3]" dword="8" bits="31:24" type="int" />
+    <field name="Slice Delta QP Min[0]" dword="9" bits="7:0" type="int" />
+    <field name="Slice Delta QP Min[1]" dword="9" bits="15:8" type="int" />
+    <field name="Slice Delta QP Min[2]" dword="9" bits="23:16" type="int" />
+    <field name="Slice Delta QP Min[3]" dword="9" bits="31:24" type="int" />
+    <field name="Frame Bitrate Min" dword="10" bits="13:0" type="uint" />
+    <field name="Frame Bitrate Min Unit Mode" dword="10" bits="14:14" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New Mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Min Unit" dword="10" bits="15:15" type="uint" />
+    <field name="Frame Bitrate Max" dword="10" bits="29:16" type="uint" />
+    <field name="Frame Bitrate Max Unit Mode" dword="10" bits="30:30" type="uint">
+      <value name="Compatibility mode" value="0" />
+      <value name="New mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Max Unit" dword="10" bits="31:31" type="uint" />
+    <field name="Frame Bitrate Min Delta" dword="11" bits="14:0" type="uint" />
+    <field name="Frame Bitrate Max Delta" dword="11" bits="30:16" type="uint" />
+  </instruction>
+  <instruction name="MFX_MPEG_TS_CONTROL command" bias="2" length="5" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="3" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="11" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Video PacketID Header Parameter" dword="1" bits="12:0" type="uint" />
+    <field name="StreamID Lower Nibble" dword="1" bits="23:20" type="uint" />
+    <field name="Output TS Packet Grouping Select" dword="1" bits="24:24" type="uint" />
+    <field name="Copy Right Flag In PES Header" dword="1" bits="25:25" type="uint" />
+    <field name="Original Or Flag In PES Header" dword="1" bits="26:26" type="uint" />
+    <field name="DSM Trick Mode Flag In PES Header" dword="1" bits="27:27" type="uint" />
+    <field name="Additional Copy Info Flag In PES Header" dword="1" bits="28:28" type="bool" />
+    <field name="Payload Unit Start Indicator Control" dword="1" bits="29:29" type="uint" />
+    <field name="PCR 90 KHz Component Least Significant Bits" dword="2" bits="31:0" type="uint" />
+    <field name="90KHz counter MSB" dword="3" bits="0:0" type="uint" />
+    <field name="27MHz Counter" dword="3" bits="31:23" type="uint" />
+    <field name="PTS Delta" dword="4" bits="31:0" type="uint" />
+    <field name="MPEGTS Packet Count" dword="5" bits="15:0" type="uint" />
+    <field name="Continuity Counter" dword="5" bits="31:28" type="uint" />
+  </instruction>
+  <instruction name="MFX_PIPE_BUF_ADDR_STATE" bias="2" length="65" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="63" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Pre Deblocking Destination - Address" dword="1" bits="47:6" type="address" />
+    <field name="Pre Deblocking Destination - Attributes" dword="3" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Post Deblocking Destination - Address" dword="4" bits="47:6" type="address" />
+    <field name="Post Deblocking Destination - Attributes" dword="6" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Original Uncompressed Picture Source - Address" dword="7" bits="47:6" type="address" />
+    <field name="Original Uncompressed Picture Source - Attributes" dword="9" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Stream-Out Data Destination - Address" dword="10" bits="47:6" type="address" />
+    <field name="Stream-Out Data Destination - Attributes" dword="12" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Intra Row Store Scratch Buffer - Address" dword="13" bits="47:6" type="address" />
+    <field name="Intra Row Store Scratch Buffer - Attributes" dword="15" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocking Filter Row Store Scratch - Address" dword="16" bits="47:6" type="address" />
+    <field name="Deblocking Filter Row Store Scratch - Attributes" dword="18" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <group count="16" dword="19" size="64">
+      <field name="Reference Picture - Address" dword="0" bits="63:0" type="address" />
+    </group>
+    <field name="Reference Picture - Attributes" dword="51" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="MB Status Buffer - Address" dword="52" bits="47:6" type="address" />
+    <field name="MB Status Buffer - Attributes" dword="54" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="MB ILDB Stream-Out Buffer - Address" dword="55" bits="47:6" type="address" />
+    <field name="MB ILDB Stream-Out Buffer - Attributes" dword="57" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Second MB ILDB Stream-Out Buffer - Address" dword="58" bits="47:6" type="address" />
+    <field name="Second MB ILDB Stream-Out Buffer - Attributes" dword="60" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <group count="16" dword="61" size="2">
+      <field name="Reference Picture - Memory Compression Mode" dword="0" bits="1:1" type="uint" />
+      <field name="Reference Picture - Memory Compression Enable" dword="0" bits="0:0" type="bool" />
+    </group>
+    <field name="Scaled Reference Surface - Address" dword="62" bits="47:6" type="address" />
+    <field name="Scaled Reference Surface - Attributes" dword="64" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="SliceSize Stream-Out Data Destination - Address" dword="65" bits="47:6" type="address" />
+    <field name="SliceSize Stream-Out Data Destination - Attributes" dword="67" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+  </instruction>
+  <instruction name="MFX_PIPE_MODE_SELECT" bias="2" length="5" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="3" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Standard Select" dword="1" bits="3:0" type="uint" prefix="SS">
+      <value name="MPEG2" value="0" />
+      <value name="VC1" value="1" />
+      <value name="AVC" value="2" />
+      <value name="JPEG" value="3" />
+      <value name="VP8" value="5" />
+      <value name="UVLD" value="15" />
+    </field>
+    <field name="Codec Select" dword="1" bits="4:4" type="uint">
+      <value name="Decode" value="0" />
+      <value name="Encode" value="1" />
+    </field>
+    <field name="Stitch Mode" dword="1" bits="5:5" type="bool" />
+    <field name="Frame Statistics Stream-Out Enable" dword="1" bits="6:6" type="bool" />
+    <field name="Scaled Surface Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Pre Deblocking Output Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Post Deblocking Output Enable" dword="1" bits="9:9" type="bool" />
+    <field name="Stream-Out Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Pic Error/Status Report Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Deblocker Stream-Out Enable" dword="1" bits="12:12" type="bool" />
+    <field name="VDEnc Mode" dword="1" bits="13:13" type="uint" prefix="VM">
+      <value name="MBEnc Mode" value="0" />
+      <value name="VDEnc Mode" value="1" />
+    </field>
+    <field name="Standalone VDEnc Mode Enable" dword="1" bits="14:14" type="bool" />
+    <field name="Decoder Mode Select" dword="1" bits="16:15" type="uint">
+      <value name="VLD Mode" value="0" />
+      <value name="IT Mode" value="1" />
+      <value name="Deblocker Mode" value="2" />
+      <value name="Interlayer Mode" value="3" />
+    </field>
+    <field name="Decoder Short Format Mode" dword="1" bits="17:17" type="uint">
+      <value name="Short Format Driver Interface" value="0" />
+      <value name="Long Format Driver Interface" value="1" />
+    </field>
+    <field name="Extended Stream-Out Enable" dword="1" bits="18:18" type="bool" />
+    <field name="Pic Status/Error Report ID" dword="3" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MFX_QM_STATE" bias="2" length="18" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="16" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="7" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="AVC" dword="1" bits="1:0" type="uint">
+      <value name="AVC_4x4_Intra_MATRIX" value="0" />
+      <value name="AVC_4x4_Inter_MATRIX" value="1" />
+      <value name="AVC_8x8_Intra_MATRIX" value="2" />
+      <value name="AVC_8x8_Inter_MATRIX" value="3" />
+    </field>
+    <field name="MPEG2" dword="1" bits="1:0" type="uint">
+      <value name="MPEG_INTRA_QUANTIZER_MATRIX" value="0" />
+      <value name="MPEG_NON_INTRA_QUANTIZER_MATRIX" value="1" />
+    </field>
+    <field name="JPEG" dword="1" bits="1:0" type="uint">
+      <value name="JPEG_Luma_Y_QUANTIZER_MATRIX (or R)" value="0" />
+      <value name="JPEG_Chroma_Cb_QUANTIZER_MATRIX (or G)" value="1" />
+      <value name="JPEG_Chroma_Cr_QUANTIZER_MATRIX (or B)" value="2" />
+    </field>
+    <group count="64" dword="2" size="8">
+      <field name="Forward Quantizer Matrix" dword="0" bits="7:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MFX_SURFACE_STATE" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="1" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface ID" dword="1" bits="3:0" type="uint" prefix="MFX">
+      <value name="Reference Picture" value="0" />
+      <value name="Source Input Picture" value="4" />
+      <value name="Reconstructed Scaled Reference Picture" value="5" />
+    </field>
+    <field name="Cr(V)/Cb(U) Pixel Offset V Direction" dword="2" bits="1:0" type="u0.2" />
+    <field name="Width" dword="2" bits="17:4" type="uint" />
+    <field name="Height" dword="2" bits="31:18" type="uint" />
+    <field name="Tile Walk" dword="3" bits="0:0" type="uint" prefix="TW">
+      <value name="XMAJOR" value="0" />
+      <value name="YMAJOR" value="1" />
+    </field>
+    <field name="Tiled Surface" dword="3" bits="1:1" type="bool" />
+    <field name="Half Pitch for Chroma" dword="3" bits="2:2" type="bool" />
+    <field name="Surface Pitch" dword="3" bits="19:3" type="uint" />
+    <field name="Interleave Chroma" dword="3" bits="27:27" type="bool" />
+    <field name="Surface Format" dword="3" bits="31:28" type="uint" prefix="MFX">
+      <value name="YCRCB_NORMAL" value="0" />
+      <value name="YCRCB_SWAPUVY" value="1" />
+      <value name="YCRCB_SWAPUV" value="2" />
+      <value name="YCRCB_SWAPY" value="3" />
+      <value name="PLANAR_420_8" value="4" />
+      <value name="PLANAR_411_8" value="5" />
+      <value name="PLANAR_422_8" value="6" />
+      <value name="STMM_DN_STATISTICS" value="7" />
+      <value name="R10G10B10A2_UNORM" value="8" />
+      <value name="R8G8B8A8_UNORM" value="9" />
+      <value name="R8B8_UNORM (CrCb)" value="10" />
+      <value name="R8_UNORM (Cr/Cb)" value="11" />
+      <value name="Y8_UNORM" value="12" />
+    </field>
+    <field name="Y Offset for U(Cb)" dword="4" bits="14:0" type="uint" />
+    <field name="X Offset for U(Cb)" dword="4" bits="30:16" type="uint" />
+    <field name="Y Offset for V(Cr)" dword="5" bits="15:0" type="uint" />
+    <field name="X Offset for V(Cr)" dword="5" bits="28:16" type="uint" />
+  </instruction>
+  <instruction name="MFX_VP8_BSP_BUF_BASE_ADDR_STATE" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="3" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="4" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Header - Address" dword="1" bits="63:0" type="address" />
+    <field name="Frame Header - Attributes" dword="3" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Intermediate Buffer - Address" dword="4" bits="63:0" type="address" />
+    <field name="Intermediate Buffer - Attributes" dword="6" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Intermediate Buffer Partition Offset" dword="7" bits="255:0" type="uint" />
+    <field name="Intermediate Buffer Max Size" dword="15" bits="31:0" type="uint" />
+    <field name="Final Frame - Address" dword="16" bits="63:0" type="address" />
+    <field name="Final Frame - Attributes" dword="18" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Final Frame Byte Offset" dword="19" bits="5:0" type="uint" />
+    <field name="Stream-Out - Address" dword="20" bits="63:0" type="address" />
+    <field name="Stream-Out - Attributes" dword="22" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Coeff Probs Stream-In Surface - Address" dword="23" bits="63:0" type="address" />
+    <field name="Coeff Probs Stream-In Surface - Attributes" dword="25" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Token Statistics Surface - Address" dword="26" bits="63:0" type="address" />
+    <field name="Token Statistics Surface - Attributes" dword="28" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="MPC Row Store Surface - Address" dword="29" bits="63:0" type="address" />
+    <field name="MPC Row Store Surface - Attributes" dword="31" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+  </instruction>
+  <instruction name="MFX_VP8_ENCODER_CFG" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="1" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="4" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Performance Counter Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Final Bitstream Output Disable" dword="1" bits="1:1" type="bool" />
+    <field name="Token Statistics Output Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Bitstream Statistics Output Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Update Segment Feature Data Flag" dword="1" bits="4:4" type="bool" />
+    <field name="Skip Final Bitstream when Over/Underflow" dword="1" bits="5:5" type="bool" />
+    <field name="Rate Control Initial Pass" dword="1" bits="6:6" type="bool" />
+    <field name="Per Segment Delta Qindex / LoopFilter Disable" dword="1" bits="7:7" type="bool" />
+    <field name="Finer BRC Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Compressed Bitstream Output Disable" dword="1" bits="9:9" type="bool" />
+    <field name="VBSP Unit Power Clock Gating Disable" dword="1" bits="10:10" type="bool" />
+    <field name="Max Frame Bit count Rate Control Enable" dword="2" bits="0:0" type="bool" />
+    <field name="Min Frame Bit Count Rate Control Enable" dword="2" bits="1:1" type="bool" />
+    <field name="Max Inter MB Bit Count Check Enable" dword="2" bits="2:2" type="bool" />
+    <field name="Max Intra MB Bit Count Check Enable" dword="2" bits="3:3" type="bool" />
+    <field name="Intermediate Bit Buffer Overrun Enable" dword="2" bits="4:4" type="bool" />
+    <field name="Final Bitstream Buffer Overrun Enable" dword="2" bits="5:5" type="bool" />
+    <field name="QIndex Clamp High for Underflow" dword="2" bits="6:6" type="bool" />
+    <field name="QIndex Clamp High for Overflow" dword="2" bits="7:7" type="bool" />
+    <field name="Max Inter MB Bit Count" dword="3" bits="11:0" type="uint" />
+    <field name="Max Intra MB Bit Count Limit" dword="3" bits="27:16" type="uint" />
+    <field name="Frame Bitrate Max" dword="4" bits="13:0" type="uint" />
+    <field name="Frame Bitrate Max Unit" dword="4" bits="14:14" type="uint" />
+    <field name="Frame Bitrate Max Unit Mode" dword="4" bits="15:15" type="uint">
+      <value name="Compatibility Mode" value="0" />
+      <value name="New Mode" value="1" />
+    </field>
+    <field name="Frame Bitrate Min" dword="4" bits="29:16" type="uint" />
+    <field name="Frame Bitrate Min Unit" dword="4" bits="30:30" type="uint" />
+    <field name="Frame Bitrate Min Unit Mode" dword="4" bits="31:31" type="uint">
+      <value name="Compatibility Mode" value="0" />
+      <value name="New Mode" value="1" />
+    </field>
+    <field name="Frame Delta QIndex Max[0]" dword="5" bits="7:0" type="uint" />
+    <field name="Frame Delta QIndex Max[1]" dword="5" bits="15:8" type="uint" />
+    <field name="Frame Delta QIndex Max[2]" dword="5" bits="23:16" type="uint" />
+    <field name="Frame Delta QIndex Max[3]" dword="5" bits="31:24" type="uint" />
+    <field name="Frame Delta QIndex Min[0]" dword="6" bits="7:0" type="uint" />
+    <field name="Frame Delta QIndex Min[1]" dword="6" bits="15:8" type="uint" />
+    <field name="Frame Delta QIndex Min[2]" dword="6" bits="23:16" type="uint" />
+    <field name="Frame Delta QIndex Min[3]" dword="6" bits="31:24" type="uint" />
+    <field name="Per Segment Frame Delta QIndex Max[1]" dword="7" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta QIndex Min[1]" dword="8" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta QIndex Max[2]" dword="9" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta QIndex Min[2]" dword="10" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta QIndex Max[3]" dword="11" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta QIndex Min[3]" dword="12" bits="31:0" type="uint" />
+    <field name="Frame Delta Loop Filter Max[0]" dword="13" bits="7:0" type="uint" />
+    <field name="Frame Delta Loop Filter Max[1]" dword="13" bits="15:8" type="uint" />
+    <field name="Frame Delta Loop Filter Max[2]" dword="13" bits="23:16" type="uint" />
+    <field name="Frame Delta Loop Filter Max[3]" dword="13" bits="31:24" type="uint" />
+    <field name="Frame Delta Loop Filter Min[0]" dword="14" bits="7:0" type="uint" />
+    <field name="Frame Delta Loop Filter Min[1]" dword="14" bits="15:8" type="uint" />
+    <field name="Frame Delta Loop Filter Min[2]" dword="14" bits="23:16" type="uint" />
+    <field name="Frame Delta Loop Filter Min[3]" dword="14" bits="31:24" type="uint" />
+    <field name="Per Segment Frame Delta Loop Filter Max[1]" dword="15" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta Loop Filter Min[1]" dword="16" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta Loop Filter Max[2]" dword="17" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta Loop Filter Min[2]" dword="18" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta Loop Filter Max[3]" dword="19" bits="31:0" type="uint" />
+    <field name="Per Segment Frame Delta Loop Filter Min[3]" dword="20" bits="31:0" type="uint" />
+    <field name="Frame Bitrate Max Delta" dword="21" bits="14:0" type="uint" />
+    <field name="Frame Bitrate Min Delta" dword="21" bits="30:16" type="uint" />
+    <field name="Minimum Frame Size" dword="22" bits="15:0" type="uint" />
+    <field name="Minimum Frame Size Unit" dword="22" bits="17:16" type="uint">
+      <value name="Compatibility Mode" value="0" />
+      <value name="New Mode" value="1" />
+    </field>
+    <field name="Bitstream Format Version" dword="22" bits="22:20" type="uint" />
+    <field name="Show Frame" dword="22" bits="23:23" type="uint" />
+    <field name="Horizontal_Size_Code" dword="23" bits="15:0" type="uint" />
+    <field name="Vertical_Size_Code" dword="23" bits="31:16" type="uint" />
+    <field name="Frame Header Bit Count" dword="24" bits="31:0" type="uint" />
+    <field name="Frame Header Bin Buffer QIndex Update Pointer" dword="25" bits="31:0" type="uint" />
+    <field name="Frame Header Bin Buffer Loop Filter Update Pointer" dword="26" bits="31:0" type="uint" />
+    <field name="Frame Header Bin Buffer Token Update Pointer" dword="27" bits="31:0" type="uint" />
+    <field name="Frame Header Bin Buffer MV Update Pointer" dword="28" bits="31:0" type="uint" />
+    <field name="CV0" dword="29" bits="3:0" type="uint" />
+    <field name="CV1" dword="29" bits="7:4" type="uint" />
+    <field name="CV2" dword="29" bits="11:8" type="uint" />
+    <field name="CV3" dword="29" bits="15:12" type="uint" />
+    <field name="CV4" dword="29" bits="19:16" type="uint" />
+    <field name="CV5" dword="29" bits="23:20" type="uint" />
+    <field name="CV6" dword="29" bits="27:24" type="uint" />
+    <field name="CV7" dword="29" bits="31:28" type="uint" />
+  </instruction>
+  <instruction name="MFX_VP8_PAK_OBJECT" bias="2" length="7" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="5" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="9" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:24" type="uint" default="4" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Indirect PAK-MV Data Length" dword="1" bits="9:0" type="uint" />
+    <field name="Enable Inline MV data" dword="1" bits="29:29" type="bool" />
+    <field name="Indirect PAK-MV Data Start Address Offset" dword="2" bits="28:0" type="offset" />
+    <field name="Inline Data" dword="3" bits="127:0" type="uint" />
+  </instruction>
+  <instruction name="MFX_VP8_PIC_STATE" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="23:21" type="uint" default="0" />
+    <field name="Media Command OpCode" dword="0" bits="26:24" type="uint" default="4" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Width" dword="1" bits="7:0" type="uint" />
+    <field name="Frame Height" dword="1" bits="23:16" type="uint" />
+    <field name="MC Filter Select" dword="2" bits="0:0" type="uint" />
+    <field name="Chroma Full Pixel MC Filter Mode" dword="2" bits="1:1" type="uint" />
+    <field name="DBLK Filter Type" dword="2" bits="4:4" type="uint" />
+    <field name="Key Frame" dword="2" bits="5:5" type="bool" />
+    <field name="Segmentation ID Stream-Out Enable" dword="2" bits="6:6" type="bool" />
+    <field name="Segmentation ID Stream-In Enable" dword="2" bits="7:7" type="bool" />
+    <field name="Segment Enable" dword="2" bits="8:8" type="bool" />
+    <field name="Update MB Segment Map" dword="2" bits="9:9" type="bool" />
+    <field name="MB NoCoeff Skip" dword="2" bits="10:10" type="bool" />
+    <field name="Mode Reference Loop Filter Delta Enable" dword="2" bits="11:11" type="bool" />
+    <field name="Golden Ref Picture MV Sign Bias" dword="2" bits="12:12" type="bool" />
+    <field name="Alternate Ref Pic MV Sign Bias" dword="2" bits="13:13" type="bool" />
+    <field name="Deblock Sharpness Level" dword="2" bits="18:16" type="uint" />
+    <field name="Log2 Num of Partition" dword="2" bits="25:24" type="uint">
+      <value name="1 Token partition" value="0" />
+      <value name="2 Token partition" value="1" />
+      <value name="4 Token partition" value="2" />
+      <value name="8 Token partition" value="3" />
+    </field>
+    <field name="DBLK Filter Level for Segment0" dword="3" bits="5:0" type="uint" />
+    <field name="DBLK Filter Level for Segment1" dword="3" bits="13:8" type="uint" />
+    <field name="DBLK Filter Level for Segment2" dword="3" bits="21:16" type="uint" />
+    <field name="DBLK Filter Level for Segment3" dword="3" bits="29:24" type="uint" />
+    <field name="Segment0 QIndex" dword="4" bits="6:0" type="uint" />
+    <field name="Segment1 QIndex" dword="4" bits="14:8" type="uint" />
+    <field name="Segment2 QIndex" dword="4" bits="22:16" type="uint" />
+    <field name="Segment3 QIndex" dword="4" bits="30:24" type="uint" />
+    <field name="Y2DC QIndex Delta" dword="5" bits="3:0" type="uint" />
+    <field name="Y2AC QIndex Delta Sign" dword="5" bits="4:4" type="uint" />
+    <field name="Y2AC QIndex Delta" dword="5" bits="11:8" type="uint" />
+    <field name="Y2AC QIndex Sign" dword="5" bits="12:12" type="uint" />
+    <field name="UVDC QIndex Delta" dword="5" bits="19:16" type="uint" />
+    <field name="UVDC QIndex Delta Sign" dword="5" bits="20:20" type="uint" />
+    <field name="UVAC QIndex Delta" dword="5" bits="27:24" type="uint" />
+    <field name="UVAC QIndex Delta Sign" dword="5" bits="28:28" type="uint" />
+    <field name="Y1DC QIndex Delta" dword="6" bits="3:0" type="uint" />
+    <field name="Y1DC QIndex Delta Sign" dword="6" bits="4:4" type="uint" />
+    <field name="Clamp QIndex Low" dword="7" bits="6:0" type="uint" />
+    <field name="Clamp QIndex High" dword="7" bits="14:8" type="uint" />
+    <field name="Quantizer Value [1][UVDC]" dword="8" bits="8:0" type="uint" />
+    <field name="Quantizer Value [1][UVAC]" dword="8" bits="24:16" type="uint" />
+    <field name="Quantizer Value [1][Y2DC]" dword="9" bits="8:0" type="uint" />
+    <field name="Quantizer Value [1][Y2AC]" dword="9" bits="24:16" type="uint" />
+    <field name="Quantizer Value [2][Y1DC]" dword="10" bits="8:0" type="uint" />
+    <field name="Quantizer Value [2][Y1AC]" dword="10" bits="24:16" type="uint" />
+    <field name="Quantizer Value [2][UVDC]" dword="11" bits="8:0" type="uint" />
+    <field name="Quantizer Value [2][UVAC]" dword="11" bits="24:16" type="uint" />
+    <field name="Quantizer Value [2][Y2DC]" dword="12" bits="8:0" type="uint" />
+    <field name="Quantizer Value [2][Y2AC]" dword="12" bits="24:16" type="uint" />
+    <field name="Quantizer Value [3][Y1DC]" dword="13" bits="8:0" type="uint" />
+    <field name="Quantizer Value [3][Y1AC]" dword="13" bits="24:16" type="uint" />
+    <field name="Quantizer Value [3][UVDC]" dword="14" bits="8:0" type="uint" />
+    <field name="Quantizer Value [3][UVAC]" dword="14" bits="24:16" type="uint" />
+    <field name="Quantizer Value [3][Y2DC]" dword="15" bits="8:0" type="uint" />
+    <field name="Quantizer Value [3][Y2AC]" dword="15" bits="24:16" type="uint" />
+    <field name="CoeffProbability Stream-In - Address" dword="16" bits="47:6" type="uint" />
+    <field name="CoeffProbability Stream-In - MOCS (Encoder only)" dword="18" bits="6:0" type="uint" nonzero="true" />
+    <field name="CoeffProbability Stream-In - Arbitration Priority Control" dword="18" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="CoeffProbability Stream-In - Memory Compression Enable" dword="18" bits="9:9" type="bool" />
+    <field name="CoeffProbability Stream-In - Memory Compression Mode" dword="18" bits="10:10" type="uint" />
+    <field name="CoeffProbability Stream-In - Tiled Resource Mode" dword="18" bits="14:13" type="uint">
+      <value name="TRMODE_NONE" value="0" />
+      <value name="TRMODE_TILEYF" value="1" />
+      <value name="TRMODE_TILEYS" value="2" />
+    </field>
+    <field name="MBSegmentIDTreeProbs[0]" dword="19" bits="7:0" type="uint" />
+    <field name="MBSegmentIDTreeProbs[1]" dword="19" bits="15:8" type="uint" />
+    <field name="MBSegmentIDTreeProbs[2]" dword="19" bits="23:16" type="uint" />
+    <field name="InterPredFromGRefRefProb" dword="20" bits="7:0" type="uint" />
+    <field name="InterPredFromLastRefProb" dword="20" bits="15:8" type="uint" />
+    <field name="IntraMBProb" dword="20" bits="23:16" type="uint" />
+    <field name="MBNoCoeffSkipFalseProb" dword="20" bits="31:24" type="uint" />
+    <field name="YModeProb[0]" dword="21" bits="7:0" type="uint" />
+    <field name="YModeProb[1]" dword="21" bits="15:8" type="uint" />
+    <field name="YModeProb[2]" dword="21" bits="23:16" type="uint" />
+    <field name="YModeProb[3]" dword="21" bits="31:24" type="uint" />
+    <field name="UVModeProb[0]" dword="22" bits="7:0" type="uint" />
+    <field name="UVModeProb[1]" dword="22" bits="15:8" type="uint" />
+    <field name="UVModeProb[2]" dword="22" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[0][0]" dword="23" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[0][1]" dword="23" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[0][2]" dword="23" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[0][3]" dword="23" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[0][4]" dword="24" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[0][5]" dword="24" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[0][6]" dword="24" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[0][7]" dword="24" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[0][8]" dword="25" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[0][9]" dword="25" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[0][10]" dword="25" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[0][11]" dword="25" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[0][12]" dword="26" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[0][13]" dword="26" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[0][14]" dword="26" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[0][15]" dword="26" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[0][16]" dword="27" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[0][17]" dword="27" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[0][18]" dword="27" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[1][0]" dword="28" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[1][1]" dword="28" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[1][2]" dword="28" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[1][3]" dword="28" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[1][4]" dword="29" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[1][5]" dword="29" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[1][6]" dword="29" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[1][7]" dword="29" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[1][8]" dword="30" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[1][9]" dword="30" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[1][10]" dword="30" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[1][11]" dword="30" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[1][12]" dword="31" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[1][13]" dword="31" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[1][14]" dword="31" bits="23:16" type="uint" />
+    <field name="MVUpdateProbs[1][15]" dword="31" bits="31:24" type="uint" />
+    <field name="MVUpdateProbs[1][16]" dword="32" bits="7:0" type="uint" />
+    <field name="MVUpdateProbs[1][17]" dword="32" bits="15:8" type="uint" />
+    <field name="MVUpdateProbs[1][18]" dword="32" bits="23:16" type="uint" />
+    <field name="RefLFDelta0" dword="33" bits="6:0" type="int" />
+    <field name="RefLFDelta1" dword="33" bits="14:8" type="int" />
+    <field name="RefLFDelta2" dword="33" bits="22:16" type="int" />
+    <field name="RefLFDelta3" dword="33" bits="30:24" type="int" />
+    <field name="ModeLFDelta0" dword="34" bits="6:0" type="int" />
+    <field name="ModeLFDelta1" dword="34" bits="14:8" type="int" />
+    <field name="ModeLFDelta2" dword="34" bits="22:16" type="int" />
+    <field name="ModeLFDelta3" dword="34" bits="30:24" type="int" />
+    <field name="Segmentation ID Stream - Address" dword="35" bits="47:0" type="uint" />
+    <field name="CoeffProbability Stream-In - MOCS" dword="37" bits="6:0" type="uint" nonzero="true" />
+    <field name="Segmentation ID Stream - Arbitration Priority Control" dword="37" bits="8:7" type="uint">
+      <value name="Highest priority" value="0" />
+      <value name="Second highest priority" value="1" />
+      <value name="Third highest priority" value="2" />
+      <value name="Lowest priority" value="3" />
+    </field>
+    <field name="Segmentation ID Stream - Memory Compression Enable" dword="37" bits="9:9" type="bool" />
+    <field name="Segmentation ID Stream - Memory Compression Mode" dword="37" bits="10:10" type="uint" />
+    <field name="Segmentation ID Stream - Tiled Resource Mode" dword="37" bits="14:13" type="uint">
+      <value name="TRMODE_NONE" value="0" />
+      <value name="TRMODE_TILEYF" value="1" />
+      <value name="TRMODE_TILEYS" value="2" />
+    </field>
+  </instruction>
+  <instruction name="MI_ATOMIC" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="ATOMIC OPCODE" dword="0" bits="15:8" type="Atomic_OPCODE" />
+    <field name="Return Data Control" dword="0" bits="16:16" type="bool" />
+    <field name="CS STALL" dword="0" bits="17:17" type="bool" />
+    <field name="Inline Data" dword="0" bits="18:18" type="bool" />
+    <field name="Data Size" dword="0" bits="20:19" type="uint" prefix="MI_ATOMIC">
+      <value name="DWORD" value="0" />
+      <value name="QWORD" value="1" />
+      <value name="OCTWORD" value="2" />
+      <value name="RESERVED" value="3" />
+    </field>
+    <field name="Post-Sync Operation" dword="0" bits="21:21" type="bool" />
+    <field name="Memory Type" dword="0" bits="22:22" type="uint">
+      <value name="Per Process Graphics Address" value="0" />
+      <value name="Global Graphics Address" value="1" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="47" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Memory Address" dword="1" bits="47:2" type="address" />
+    <field name="Operand1 Data Dword 0" dword="3" bits="31:0" type="uint" />
+    <field name="Operand2 Data Dword 0" dword="4" bits="31:0" type="uint" />
+    <field name="Operand1 Data Dword 1" dword="5" bits="31:0" type="uint" />
+    <field name="Operand2 Data Dword 1" dword="6" bits="31:0" type="uint" />
+    <field name="Operand1 Data Dword 2" dword="7" bits="31:0" type="uint" />
+    <field name="Operand2 Data Dword 2" dword="8" bits="31:0" type="uint" />
+    <field name="Operand1 Data Dword 3" dword="9" bits="31:0" type="uint" />
+    <field name="Operand2 Data Dword 3" dword="10" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="MI_BATCH_BUFFER_START" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Address Space Indicator" dword="0" bits="8:8" type="uint" prefix="ASI">
+      <value name="GGTT" value="0" />
+      <value name="PPGTT" value="1" />
+    </field>
+    <field name="Resource Streamer Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Predication Enable" dword="0" bits="15:15" type="bool" />
+    <field name="Add Offset Enable" dword="0" bits="16:16" type="bool" />
+    <field name="Second Level Batch Buffer" dword="0" bits="22:22" type="uint">
+      <value name="First level batch" value="0" />
+      <value name="Second level batch" value="1" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="49" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Batch Buffer Start Address" dword="1" bits="63:2" type="address" />
+  </instruction>
+  <instruction name="MI_CONDITIONAL_BATCH_BUFFER_END" bias="2" length="4">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="Compare Mask Mode" dword="0" bits="19:19" type="uint">
+      <value name="Compare Mask Mode Disabled" value="0" />
+      <value name="Compare Mask Mode Enabled" value="1" />
+    </field>
+    <field name="Compare Semaphore" dword="0" bits="21:21" type="uint" default="0" />
+    <field name="Use Global GTT" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="54" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Compare Data Dword" dword="1" bits="31:0" type="uint" />
+    <field name="Compare Address" dword="2" bits="63:3" type="address" />
+  </instruction>
+  <instruction name="MI_DISPLAY_FLIP" bias="2" length="3" engine="render|blitter">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Display Plane Select" dword="0" bits="12:8" type="uint">
+      <value name="Display Plane 1" value="0" />
+      <value name="Display Plane 2" value="1" />
+      <value name="Display Plane 3" value="2" />
+      <value name="Display Plane 4" value="4" />
+      <value name="Display Plane 5" value="5" />
+      <value name="Display Plane 6" value="6" />
+      <value name="Display Plane 7" value="7" />
+      <value name="Display Plane 8" value="8" />
+      <value name="Display Plane 9" value="9" />
+      <value name="Display Plane 10" value="10" />
+      <value name="Display Plane 11" value="11" />
+      <value name="Display Plane 12" value="12" />
+    </field>
+    <field name="Async Flip Indicator" dword="0" bits="22:22" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="20" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Tile Parameter" dword="1" bits="2:0" type="uint" />
+    <field name="Display Buffer Pitch" dword="1" bits="15:6" type="uint" />
+    <field name="Stereoscopic 3D Mode" dword="1" bits="31:31" type="bool" />
+    <field name="Flip Type" dword="2" bits="1:0" type="uint">
+      <value name="Sync Flip" value="0" />
+      <value name="Async Flip" value="1" />
+      <value name="Stereo 3D Flip" value="2" />
+    </field>
+    <field name="Display Buffer Base Address" dword="2" bits="31:12" type="address" />
+    <field name="Left Eye Display Buffer Base Address" dword="3" bits="31:12" type="address" />
+  </instruction>
+  <instruction name="MI_FLUSH_DW" bias="2" length="5" engine="blitter|video">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="3" />
+    <field name="Video Pipeline Cache Invalidate" dword="0" bits="7:7" type="bool" />
+    <field name="Notify Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Flush LLC" dword="0" bits="9:9" type="bool" />
+    <field name="Post-Sync Operation" dword="0" bits="15:14" type="uint">
+      <value name="No Write" value="0" />
+      <value name="Write Immediate Data" value="1" />
+      <value name="Write Timestamp" value="3" />
+    </field>
+    <field name="TLB Invalidate" dword="0" bits="18:18" type="bool" />
+    <field name="Store Data Index" dword="0" bits="21:21" type="uint" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="38" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Destination Address Type" dword="1" bits="2:2" type="uint" prefix="DAT">
+      <value name="PPGTT" value="0" />
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Address" dword="1" bits="47:3" type="address" />
+    <field name="Immediate Data" dword="3" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="MI_FORCE_WAKEUP" bias="2" length="2">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="29" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Force Media Awake" dword="1" bits="0:0" type="uint" />
+    <field name="Force Render Awake" dword="1" bits="1:1" type="uint" />
+    <field name="Mask Bits" dword="1" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="MI_LOAD_REGISTER_IMM" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Byte Write Disables" dword="0" bits="11:8" type="uint" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="34" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Register Offset" dword="1" bits="22:2" type="offset" />
+    <field name="Data DWord" dword="2" bits="31:0" type="uint" />
+    <group count="0" dword="3" size="64">
+      <field name="Register Offset" dword="0" bits="22:2" type="offset" />
+      <field name="Data DWord" dword="1" bits="31:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="MI_LOAD_SCAN_LINES_INCL" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="5:0" type="uint" default="0" />
+    <field name="Scan Line Event Done Forward" dword="0" bits="18:17" type="uint" />
+    <field name="Display (Plane) Select" dword="0" bits="21:19" type="uint">
+      <value name="Display Plane 1 A" value="0" />
+      <value name="Display Plane 1 B" value="1" />
+      <value name="Display Plane 1 C" value="4" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="18" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="End Scan Line Number" dword="1" bits="12:0" type="uint" />
+    <field name="Start Scan Line Number" dword="1" bits="28:16" type="uint" />
+  </instruction>
+  <instruction name="MI_MATH" bias="2">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="26" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <group count="0" dword="1" size="32">
+      <field name="Instruction" dword="0" bits="31:0" type="MI_MATH_ALU_INSTRUCTION" />
+    </group>
+  </instruction>
+  <instruction name="MI_SEMAPHORE_WAIT" bias="2" length="4">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="Compare Operation" dword="0" bits="14:12" type="uint" prefix="COMPARE">
+      <value name="SAD_GREATER_THAN_SDD" value="0" />
+      <value name="SAD_GREATER_THAN_OR_EQUAL_SDD" value="1" />
+      <value name="SAD_LESS_THAN_SDD" value="2" />
+      <value name="SAD_LESS_THAN_OR_EQUAL_SDD" value="3" />
+      <value name="SAD_EQUAL_SDD" value="4" />
+      <value name="SAD_NOT_EQUAL_SDD" value="5" />
+    </field>
+    <field name="Wait Mode" dword="0" bits="15:15" type="uint">
+      <value name="Polling Mode" value="1" />
+      <value name="Signal Mode" value="0" />
+    </field>
+    <field name="Register Poll Mode" dword="0" bits="16:16" type="bool" />
+    <field name="Memory Type" dword="0" bits="22:22" type="uint">
+      <value name="Per Process Graphics Address" value="0" />
+      <value name="Global Graphics Address" value="1" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="28" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Semaphore Data Dword" dword="1" bits="31:0" type="uint" />
+    <field name="Semaphore Address" dword="2" bits="63:2" type="address" />
+  </instruction>
+  <instruction name="MI_SET_CONTEXT" bias="2" length="2">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="24" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Restore Inhibit" dword="1" bits="0:0" type="uint" />
+    <field name="Force Restore" dword="1" bits="1:1" type="uint" />
+    <field name="Resource Streamer State Restore Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Resource Streamer State Save Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Core Mode Enable" dword="1" bits="4:4" type="bool" />
+    <field name="Reserved, Must be 1" dword="1" bits="8:8" type="uint" />
+    <field name="Logical Context Address" dword="1" bits="31:12" type="address" />
+  </instruction>
+  <instruction name="MI_WAIT_FOR_EVENT" bias="1" length="1" engine="render|blitter">
+    <field name="Display Plnae 1 A Scan Line Wait Enable" dword="0" bits="0:0" type="bool" />
+    <field name="Display Plane 1 Flip Pending Wait Enable" dword="0" bits="1:1" type="bool" />
+    <field name="Display Plane 4 Flip Pending Wait Enable" dword="0" bits="2:2" type="bool" />
+    <field name="Display Plane 1 A Vertical Blank Wait Enable" dword="0" bits="3:3" type="bool" />
+    <field name="Display Plane 7 Flip Pending Wait Enable" dword="0" bits="6:6" type="bool" />
+    <field name="Display Plane 8 Flip Pending Wait Enable" dword="0" bits="7:7" type="bool" />
+    <field name="Display Plane 1 B Scan Line Wait Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Display Plane 2 Flip Pending Wait Enable" dword="0" bits="9:9" type="bool" />
+    <field name="Display Plane 5 Flip Pending Wait Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Display Plane 1 B Vertical Blank Wait Enable" dword="0" bits="11:11" type="bool" />
+    <field name="Display Plane 1 C Scan Line Wait Enable" dword="0" bits="14:14" type="bool" />
+    <field name="Display Plane 3 Flip Pending Wait Enable" dword="0" bits="15:15" type="bool" />
+    <field name="Display Plane 9 Flip Pending Wait Enable" dword="0" bits="16:16" type="bool" />
+    <field name="Display Plane 10 Flip Pending Wait Enable" dword="0" bits="17:17" type="bool" />
+    <field name="Display Plane 11 Flip Pending Wait Enable" dword="0" bits="18:18" type="bool" />
+    <field name="Display Plane 12 Flip Pending Wait Enable" dword="0" bits="19:19" type="bool" />
+    <field name="Display Plane 6 Flip Pending Wait Enable" dword="0" bits="20:20" type="bool" />
+    <field name="Display Plane 1 C Vertical Blank Wait Enable" dword="0" bits="21:21" type="bool" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="PIPELINE_SELECT" bias="1" length="1" engine="render">
+    <field name="Pipeline Selection" dword="0" bits="1:0" type="uint">
+      <value name="3D" value="0" />
+      <value name="Media" value="1" />
+      <value name="GPGPU" value="2" />
+    </field>
+    <field name="Media Sampler DOP Clock Gate Enable" dword="0" bits="4:4" type="bool" />
+    <field name="Force Media Awake" dword="0" bits="5:5" type="bool" />
+    <field name="Mask Bits" dword="0" bits="15:8" type="uint" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="1" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+  </instruction>
+  <instruction name="PIPE_CONTROL" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Depth Cache Flush Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Stall At Pixel Scoreboard" dword="1" bits="1:1" type="bool" />
+    <field name="State Cache Invalidation Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Constant Cache Invalidation Enable" dword="1" bits="3:3" type="bool" />
+    <field name="VF Cache Invalidation Enable" dword="1" bits="4:4" type="bool" />
+    <field name="DC Flush Enable" dword="1" bits="5:5" type="bool" />
+    <field name="Pipe Control Flush Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Notify Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Indirect State Pointers Disable" dword="1" bits="9:9" type="bool" />
+    <field name="Texture Cache Invalidation Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Instruction Cache Invalidate Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Render Target Cache Flush Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Depth Stall Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Post Sync Operation" dword="1" bits="15:14" type="uint">
+      <value name="No Write" value="0" />
+      <value name="Write Immediate Data" value="1" />
+      <value name="Write PS Depth Count" value="2" />
+      <value name="Write Timestamp" value="3" />
+    </field>
+    <field name="Generic Media State Clear" dword="1" bits="16:16" type="bool" />
+    <field name="TLB Invalidate" dword="1" bits="18:18" type="bool" />
+    <field name="Global Snapshot Count Reset" dword="1" bits="19:19" type="bool" />
+    <field name="Command Streamer Stall Enable" dword="1" bits="20:20" type="bool" />
+    <field name="Store Data Index" dword="1" bits="21:21" type="uint" />
+    <field name="LRI Post Sync Operation" dword="1" bits="23:23" type="uint">
+      <value name="No LRI Operation" value="0" />
+      <value name="MMIO Write Immediate Data" value="1" />
+    </field>
+    <field name="Destination Address Type" dword="1" bits="24:24" type="uint" prefix="DAT">
+      <value name="PPGTT" value="0" />
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Flush LLC" dword="1" bits="26:26" type="bool" />
+    <field name="Address" dword="2" bits="47:2" type="address" />
+    <field name="Immediate Data" dword="4" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="SFC_AVS_CHROMA_COEFF_TABLE" bias="2" length="65" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="63" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="6" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="10" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="AVS CHROMA Coefficient Table Body" dword="1" bits="2047:0" type="SFC_AVS_CHROMA_COEFF_TABLE_BODY" />
+  </instruction>
+  <instruction name="SFC_AVS_LUMA_COEFF_TABLE" bias="2" length="129" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="127" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="5" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="10" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="AVS LUMA Coefficient Table Body" dword="1" bits="4223:0" type="SFC_AVS_LUMA_COEFF_TABLE_BODY" />
+  </instruction>
+  <instruction name="SFC_AVS_STATE" bias="2" length="3" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="1" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="10" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="AVS State Body" dword="1" bits="1535:0" type="SFC_AVS_STATE_BODY" />
+  </instruction>
+  <instruction name="SFC_FRAME_START" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="4" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="10" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Start Body" dword="1" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="SFC_IEF_STATE" bias="2" length="24" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="22" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="3" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="10" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="SFC IEF State Body" dword="1" bits="735:0" type="SFC_IEF_STATE_BODY" />
+  </instruction>
+  <instruction name="SFC_LOCK" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="10" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="SFC Lock Body" dword="1" bits="31:0" type="SFC_LOCK_BODY" />
+  </instruction>
+  <instruction name="SFC_STATE" bias="2" length="32" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="30" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="1" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="10" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="SFC Pipe Mode" dword="1" bits="3:0" type="uint" />
+    <field name="SFC Input Chroma Sub-Sampling" dword="1" bits="7:4" type="uint">
+      <value name="4:0:0" value="0" />
+      <value name="4:2:0" value="1" />
+      <value name="4:2:2 Horizontal" value="2" />
+      <value name="4:4:4 Progressive/Interleaved" value="4" />
+    </field>
+    <field name="VD/VE Input Ordering Mode" dword="1" bits="10:8" type="uint" />
+    <field name="Input Frame Resolution Width" dword="2" bits="11:0" type="uint" />
+    <field name="Input Frame Resolution Height" dword="2" bits="27:16" type="uint" />
+    <field name="Output Surface Format Type" dword="3" bits="3:0" type="uint" />
+    <field name="RGBA Channel Swap Enable" dword="3" bits="5:5" type="bool" />
+    <field name="Pre-AVS Chroma Downsampling Enable" dword="3" bits="7:6" type="uint" />
+    <field name="Pre-AVS Chroma Downsampling Co-siting Position Vertical Direction" dword="3" bits="10:8" type="uint" />
+    <field name="Pre-AVS Chroma Downsampling Co-siting Position Horizontal Direction" dword="3" bits="14:12" type="uint" />
+    <field name="IEF Enable" dword="4" bits="0:0" type="bool" />
+    <field name="Skin Tone Tuned IEF_Enable" dword="4" bits="1:1" type="bool" />
+    <field name="IEF4 Smooth Enable" dword="4" bits="2:2" type="bool" />
+    <field name="AVS Filter Mode" dword="4" bits="5:4" type="uint">
+      <value name="5x5 Poly-phase filter + Bilinear" value="0" />
+      <value name="8x8 poly-phase filter + Bilinear" value="1" />
+      <value name="Bilinear filter only" value="2" />
+    </field>
+    <field name="Adaptive Filter for all Channels" dword="4" bits="6:6" type="bool" />
+    <field name="AVS Scaling Enable" dword="4" bits="7:7" type="bool" />
+    <field name="Bypass Y Adaptive Filtering" dword="4" bits="8:8" type="bool" />
+    <field name="Bypass X Adaptive Filtering" dword="4" bits="9:9" type="bool" />
+    <field name="Chroma Upsampling Enable" dword="4" bits="12:12" type="bool" />
+    <field name="Rotation Mode" dword="4" bits="17:16" type="uint">
+      <value name="0" value="0" />
+      <value name="90 CW" value="1" />
+      <value name="180 CW" value="2" />
+      <value name="270 CW" value="3" />
+    </field>
+    <field name="Color Fill Enable" dword="4" bits="18:18" type="bool" />
+    <field name="CSC Enable" dword="4" bits="19:19" type="bool" />
+    <field name="Source Region Width" dword="5" bits="11:0" type="uint" />
+    <field name="Source Region Height" dword="5" bits="27:16" type="uint" />
+    <field name="Source Region Horizontal Offset" dword="6" bits="11:0" type="uint" />
+    <field name="Source Region Vertical Offset" dword="6" bits="27:16" type="uint" />
+    <field name="Output Frame Width" dword="7" bits="11:0" type="uint" />
+    <field name="Output Frame Height" dword="7" bits="27:16" type="uint" />
+    <field name="Scaled Region Size Width" dword="8" bits="11:0" type="uint" />
+    <field name="Scaled Region Size Height" dword="8" bits="27:16" type="uint" />
+    <field name="Scaled Region Horizontal Offset" dword="9" bits="12:0" type="int" />
+    <field name="Scaled Region Vertical Offset" dword="9" bits="28:16" type="int" />
+    <field name="Gray Bar Pixel - U/G" dword="10" bits="9:0" type="uint" />
+    <field name="Gray Bar Pixel - Y/R" dword="10" bits="25:16" type="uint" />
+    <field name="Gray Bar Pixel - A" dword="11" bits="9:0" type="uint" />
+    <field name="Gray Bar Pixel - V/B" dword="11" bits="25:16" type="uint" />
+    <field name="UV Default value for U channel" dword="12" bits="9:0" type="uint" />
+    <field name="UV Default value for V channel" dword="12" bits="25:16" type="uint" />
+    <field name="Alpha Default Value" dword="13" bits="9:0" type="uint" />
+    <field name="Scaling Factor Height" dword="14" bits="20:0" type="u4.17" />
+    <field name="Scaling Factor Width" dword="15" bits="20:0" type="u4.17" />
+    <field name="Output Frame - Address" dword="17" bits="47:12" type="uint" />
+    <field name="Output Frame - MOCS" dword="19" bits="6:0" type="uint" nonzero="true" />
+    <field name="Output Frame - Arbitration Priority Control" dword="19" bits="8:7" type="HEVC_ARBITRATION_PRIORITY" />
+    <field name="Output Frame - Memory Compression Enable" dword="19" bits="9:9" type="bool" />
+    <field name="Output Frame - Memory Compression Mode" dword="19" bits="10:10" type="uint" />
+    <field name="Output Frame - Cache Select" dword="19" bits="12:12" type="bool" />
+    <field name="Output Frame - Tiled Mode" dword="19" bits="14:13" type="uint">
+      <value name="TRMODE_NONE" value="0" />
+      <value name="TRMODE_TILEYF" value="1" />
+      <value name="TRMODE_TILEYS" value="2" />
+    </field>
+    <field name="AVS Line Buffer - Address" dword="20" bits="47:12" type="uint" />
+    <field name="AVS Line Buffer - MOCS" dword="22" bits="6:0" type="uint" nonzero="true" />
+    <field name="AVS Line Buffer - Arbitration Priority Control" dword="22" bits="8:7" type="HEVC_ARBITRATION_PRIORITY" />
+    <field name="AVS Line Buffer - Memory Compression Enable" dword="22" bits="9:9" type="bool" />
+    <field name="AVS Line Buffer - Memory Compression Mode" dword="22" bits="10:10" type="uint">
+      <value name="Horizontal Compression Mode" value="0" />
+    </field>
+    <field name="AVS Line Buffer - Cache Select" dword="22" bits="12:12" type="uint">
+      <value name="LLC" value="0" />
+    </field>
+    <field name="AVS Line Buffer - Tiled Mode" dword="22" bits="14:13" type="uint">
+      <value name="TRMODE_NONE" value="0" />
+      <value name="TRMODE_TILEYF" value="1" />
+      <value name="TRMODE_TILEYS" value="2" />
+    </field>
+    <field name="IEF Line Buffer - Address" dword="23" bits="47:12" type="uint" />
+    <field name="IEF Line Buffer - MOCS" dword="25" bits="6:0" type="uint" nonzero="true" />
+    <field name="IEF Line Buffer - Arbitration Priority Control" dword="25" bits="8:7" type="HEVC_ARBITRATION_PRIORITY" />
+    <field name="IEF Line Buffer - Memory Compression Enable" dword="25" bits="9:9" type="bool" />
+    <field name="IEF Line Buffer - Memory Compression Mode" dword="25" bits="10:10" type="uint" />
+    <field name="IEF Line Buffer - Cache Select" dword="25" bits="12:12" type="uint" />
+    <field name="IEF Line Buffer - Tiled Mode" dword="25" bits="14:13" type="uint">
+      <value name="TRMODE_NONE" value="0" />
+      <value name="TRMODE_TILEYF" value="1" />
+      <value name="TRMODE_TILEYS" value="2" />
+    </field>
+    <field name="Output Surface Tile Walk" dword="29" bits="0:0" type="uint" prefix="TW">
+      <value name="XMAJOR" value="0" />
+      <value name="YMAJOR" value="1" />
+    </field>
+    <field name="Output Surface Tiled" dword="29" bits="1:1" type="bool" />
+    <field name="Output Surface Half Pitch for Chroma" dword="29" bits="2:2" type="bool" />
+    <field name="Output Surface Pitch" dword="29" bits="19:3" type="uint" />
+    <field name="Output Surface Interleave Chroma Enable" dword="29" bits="27:27" type="bool" />
+    <field name="Output Surface Format" dword="29" bits="31:28" type="uint" />
+    <field name="Output Surface Y Offset for U" dword="30" bits="13:0" type="uint" />
+    <field name="Output Surface X Offset for U" dword="30" bits="29:16" type="uint" />
+    <field name="Output Surface Y Offset for V" dword="31" bits="13:0" type="uint" />
+    <field name="Output Surface X Offset for V" dword="31" bits="29:16" type="uint" />
+  </instruction>
+  <instruction name="STATE_BASE_ADDRESS" bias="2" length="19" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="17" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="1" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="General State Base Address Modify Enable" dword="1" bits="0:0" type="bool" />
+    <field name="General State MOCS" dword="1" bits="10:4" type="uint" nonzero="true" />
+    <field name="General State Base Address" dword="1" bits="63:12" type="address" />
+    <field name="Stateless Data Port Access MOCS" dword="3" bits="22:16" type="uint" nonzero="true" />
+    <field name="Surface State Base Address Modify Enable" dword="4" bits="0:0" type="bool" />
+    <field name="Surface State MOCS" dword="4" bits="10:4" type="uint" nonzero="true" />
+    <field name="Surface State Base Address" dword="4" bits="63:12" type="address" />
+    <field name="Dynamic State Base Address Modify Enable" dword="6" bits="0:0" type="bool" />
+    <field name="Dynamic State MOCS" dword="6" bits="10:4" type="uint" nonzero="true" />
+    <field name="Dynamic State Base Address" dword="6" bits="63:12" type="address" />
+    <field name="Indirect Object Base Address Modify Enable" dword="8" bits="0:0" type="bool" />
+    <field name="Indirect Object MOCS" dword="8" bits="10:4" type="uint" nonzero="true" />
+    <field name="Indirect Object Base Address" dword="8" bits="63:12" type="address" />
+    <field name="Instruction Base Address Modify Enable" dword="10" bits="0:0" type="bool" />
+    <field name="Instruction MOCS" dword="10" bits="10:4" type="uint" nonzero="true" />
+    <field name="Instruction Base Address" dword="10" bits="63:12" type="address" />
+    <field name="General State Buffer Size Modify Enable" dword="12" bits="0:0" type="bool" />
+    <field name="General State Buffer Size" dword="12" bits="31:12" type="uint" />
+    <field name="Dynamic State Buffer Size Modify Enable" dword="13" bits="0:0" type="bool" />
+    <field name="Dynamic State Buffer Size" dword="13" bits="31:12" type="uint" />
+    <field name="Indirect Object Buffer Size Modify Enable" dword="14" bits="0:0" type="bool" />
+    <field name="Indirect Object Buffer Size" dword="14" bits="31:12" type="uint" />
+    <field name="Instruction Buffer size Modify Enable" dword="15" bits="0:0" type="bool" />
+    <field name="Instruction Buffer Size" dword="15" bits="31:12" type="uint" />
+    <field name="Bindless Surface State Base Address Modify Enable" dword="16" bits="0:0" type="bool" />
+    <field name="Bindless Surface State MOCS" dword="16" bits="10:4" type="uint" nonzero="true" />
+    <field name="Bindless Surface State Base Address" dword="16" bits="63:12" type="address" />
+    <field name="Bindless Surface State Size" dword="18" bits="31:12" type="uint" />
+  </instruction>
+  <instruction name="VDENC_CONST_QPT_STATE" bias="2" length="61" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="59" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="6" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="42" dword="1" size="8">
+      <field name="QP Lambda Array Index" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="27" dword="12" size="16">
+      <field name="Skip Threshold Array Index" dword="0" bits="15:0" type="uint" />
+    </group>
+    <group count="27" dword="26" size="16">
+      <field name="SIC Forward Transform Coeff Threshold Matrix0 Array Index" dword="0" bits="15:0" type="uint" />
+    </group>
+    <group count="27" dword="40" size="8">
+      <field name="SIC Forward Transform Coeff Threshold Matrix1/3/5 Array Index" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="27" dword="47" size="8">
+      <field name="SIC Forward Transform Coeff Threshold Matrix2 Array Index" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="27" dword="54" size="8">
+      <field name="SIC Forward Transform Coeff Threshold Matrix4/6 Array Index" dword="0" bits="7:0" type="uint" />
+    </group>
+  </instruction>
+  <instruction name="VDENC_DS_REF_SURFACE_STATE" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="3" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="8X Surface State" dword="2" bits="127:0" type="VDENC_SURFACE_STATE_FIELDS" />
+  </instruction>
+  <instruction name="VDENC_IMG_STATE" bias="2" length="35" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="33" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="5" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Bidirectional Mix Disable" dword="1" bits="2:2" type="bool" />
+    <field name="VDEnc Extended PAK_OBJ_CMD Enable" dword="1" bits="6:6" type="bool" />
+    <field name="Transform 8x8" dword="1" bits="7:7" type="bool" />
+    <field name="VDEnc L1 Cache Priority" dword="1" bits="9:8" type="uint" />
+    <field name="Lambda Value for Trellis" dword="1" bits="31:16" type="uint" />
+    <field name="Bidirectional Weight" dword="2" bits="21:16" type="uint" />
+    <field name="Unidirectional Mix Disable" dword="2" bits="28:28" type="bool" />
+    <field name="Picture Width" dword="3" bits="31:16" type="uint" />
+    <field name="Sub-Pel Mode" dword="4" bits="13:12" type="uint" />
+    <field name="Forward Transform Skip Check Enable" dword="4" bits="17:17" type="bool" />
+    <field name="Bme Disable For Fbr Message" dword="4" bits="18:18" type="bool" />
+    <field name="Block-Based Skip Enable" dword="4" bits="19:19" type="bool" />
+    <field name="Inter SAD Measure Adjustment" dword="4" bits="21:20" type="uint" prefix="ISMA">
+      <value name="None" value="0" />
+      <value name="Haar Transform Adjusted" value="2" />
+    </field>
+    <field name="Intra SAD Measure Adjustment" dword="4" bits="23:22" type="uint" prefix="ISMA">
+      <value name="None" value="0" />
+      <value name="Haar Transform Adjusted" value="2" />
+    </field>
+    <field name="Sub-MB Sub-Partition Mask" dword="4" bits="30:24" type="uint" />
+    <field name="Block-Based Skip Type" dword="4" bits="31:31" type="uint" />
+    <field name="Picture Height" dword="5" bits="15:0" type="uint" />
+    <field name="CRE Prefetch Enable" dword="5" bits="16:16" type="bool" />
+    <field name="HME Ref1 Disable" dword="5" bits="17:17" type="bool" />
+    <field name="MB Slice Threshold Value" dword="5" bits="21:18" type="uint" />
+    <field name="Constrained Intra Prediction" dword="5" bits="26:26" type="bool" />
+    <field name="Picture Type" dword="5" bits="30:29" type="uint" prefix="PI">
+      <value name="I" value="0" />
+      <value name="P" value="1" />
+    </field>
+    <field name="Slice MB Height" dword="6" bits="15:0" type="uint" />
+    <field name="HME1 Y Offset" dword="7" bits="31:24" type="int" />
+    <field name="Luma Intra Partition Mask" dword="8" bits="4:0" type="uint" />
+    <field name="Non Skip Zero MV Cost Added" dword="8" bits="5:5" type="uint" />
+    <field name="Non Skip MB Mode Cost Added" dword="8" bits="6:6" type="uint" />
+    <field name="MV Cost Scaling Factor" dword="8" bits="17:16" type="uint">
+      <value name="Qpel" value="0" />
+      <value name="Hpel" value="1" />
+      <value name="Pel" value="2" />
+      <value name="2pel" value="3" />
+    </field>
+    <field name="BiLinear Filter Enable" dword="8" bits="18:18" type="bool" />
+    <field name="RefID Cost Mode Select" dword="8" bits="22:22" type="uint" />
+    <field name="Mode 0 Cost" dword="9" bits="7:0" type="uint" />
+    <field name="Mode 1 Cost" dword="9" bits="15:8" type="uint" />
+    <field name="Mode 2 Cost" dword="9" bits="23:16" type="uint" />
+    <field name="Mode 3 Cost" dword="9" bits="31:24" type="uint" />
+    <field name="Mode 4 Cost" dword="10" bits="7:0" type="uint" />
+    <field name="Mode 5 Cost" dword="10" bits="15:8" type="uint" />
+    <field name="Mode 6 Cost" dword="10" bits="23:16" type="uint" />
+    <field name="Mode 7 Cost" dword="10" bits="31:24" type="uint" />
+    <field name="Mode 8 Cost" dword="11" bits="7:0" type="uint" />
+    <field name="Mode 9 Cost" dword="11" bits="15:8" type="uint" />
+    <field name="RefID Cost" dword="11" bits="23:16" type="uint" />
+    <field name="Chroma Intra Mode Cost" dword="11" bits="31:24" type="uint" />
+    <field name="MV Cost" dword="12" bits="63:0" type="IMAGE_STATE_COST" />
+    <field name="QpPrimeY" dword="14" bits="7:0" type="int" />
+    <field name="TargetSizeInWord" dword="14" bits="31:24" type="uint" />
+    <field name="AVC Intra 4x4 Mode Mask" dword="17" bits="8:0" type="uint" />
+    <field name="AVC Intra 8x8 Mode Mask" dword="17" bits="24:16" type="uint" />
+    <field name="AVC Intra 16x16 Mode Mask" dword="18" bits="3:0" type="uint" />
+    <field name="AVC Intra Chroma Mode Mask" dword="18" bits="7:4" type="uint" />
+    <field name="Intra Compute Type" dword="18" bits="9:8" type="uint" />
+    <field name="Penalty for Intra 16x16 Non-DC Prediction" dword="20" bits="7:0" type="uint" />
+    <field name="Penalty for Intra 8x8 Non-DC Prediction" dword="20" bits="15:8" type="uint" />
+    <field name="Penalty for Intra 4x4 Non-DC Prediction" dword="20" bits="23:16" type="uint" />
+    <field name="Intra Refresh MB Position" dword="21" bits="7:0" type="uint" />
+    <field name="Intra Refresh MB Size" dword="21" bits="15:8" type="uint" />
+    <field name="Intra Refresh Enable (Rolling-I Enable)" dword="21" bits="16:16" type="bool" />
+    <field name="Intra Refresh Mode" dword="21" bits="17:17" type="uint">
+      <value name="Row Based" value="0" />
+      <value name="Column Based" value="1" />
+    </field>
+    <field name="QP Adjustment for Rolling-I" dword="21" bits="31:24" type="int" />
+    <field name="PanicModeMBThreshold" dword="22" bits="15:0" type="uint" />
+    <field name="SmallMbSizeInWord" dword="22" bits="23:16" type="uint" />
+    <field name="LargeMbSizeInWord" dword="22" bits="31:24" type="uint" />
+    <field name="L0 Number of References" dword="23" bits="7:0" type="int" />
+    <field name="L1 Number of References" dword="23" bits="23:16" type="int" />
+    <field name="HME Ref Windows Combining Threshold" dword="26" bits="15:8" type="uint" />
+    <field name="Max Horizontal MV Range" dword="27" bits="15:0" type="uint" />
+    <field name="Max Vertical MV Range" dword="27" bits="31:16" type="uint" />
+    <field name="HME MV Cost" dword="28" bits="63:0" type="IMAGE_STATE_COST" />
+    <field name="ROI QP Adjustment for Zone0" dword="30" bits="3:0" type="int" />
+    <field name="ROI QP Adjustment for Zone1" dword="30" bits="7:4" type="int" />
+    <field name="ROI QP Adjustment for Zone2" dword="30" bits="11:8" type="int" />
+    <field name="ROI QP Adjustment for Zone3" dword="30" bits="15:12" type="int" />
+    <field name="QP Adjustment for Shape Best Intra 4x4 Winner" dword="30" bits="19:16" type="int" />
+    <field name="QP Adjustment for Shape Best Intra 8x8 Winner" dword="30" bits="23:20" type="int" />
+    <field name="QP Adjustment for Shape Best Intra 16x16 Winner" dword="30" bits="27:24" type="int" />
+    <field name="Best Distortion QP Adjustment for Zone0" dword="31" bits="3:0" type="int" />
+    <field name="Best Distortion QP Adjustment for Zone1" dword="31" bits="7:4" type="int" />
+    <field name="Best Distortion QP Adjustment for Zone2" dword="31" bits="11:8" type="int" />
+    <field name="Best Distortion QP Adjustment for Zone3" dword="31" bits="15:12" type="int" />
+    <field name="Sad/Haar Threshold 0" dword="31" bits="31:16" type="uint" />
+    <field name="Sad/Haar Threshold 1" dword="32" bits="15:0" type="uint" />
+    <field name="Sad/Haar Threshold 2" dword="32" bits="31:16" type="uint" />
+    <field name="Max QP" dword="33" bits="7:0" type="uint" />
+    <field name="Min QP" dword="33" bits="15:8" type="uint" />
+    <field name="Max Delta QP" dword="33" bits="27:24" type="uint" />
+    <field name="ROI Enable" dword="34" bits="0:0" type="bool" />
+    <field name="Fwd/Predictor0 MV Enable" dword="34" bits="1:1" type="bool" />
+    <field name="Bwd/Predictor1 MV Enable" dword="34" bits="2:2" type="bool" />
+    <field name="MB Level QP Enable" dword="34" bits="3:3" type="bool" />
+    <field name="TargetSizeinWordsMB/MaxSizeinWordsMB Enable" dword="34" bits="4:4" type="bool" />
+    <field name="PPMV Disable" dword="34" bits="8:8" type="bool" />
+    <field name="Coefficient Clamp Enable" dword="34" bits="9:9" type="bool" />
+    <field name="Long Term Reference Frame Bwd Ref0 Indicator" dword="34" bits="10:10" type="bool" />
+    <field name="Long Term Reference Frame Fwd Ref2 Indicator" dword="34" bits="11:11" type="bool" />
+    <field name="Long Term Reference Frame Fwd Ref1 Indicator" dword="34" bits="12:12" type="bool" />
+    <field name="Long Term Reference Frame Fwd Ref0 Indicator" dword="34" bits="13:13" type="bool" />
+    <field name="Midpoint Sad/Haar" dword="34" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="VDENC_PIPE_BUF_ADDR_STATE" bias="2" length="38" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="36" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="4" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="DS FWD REF0" dword="1" bits="95:0" type="VDENC_PICTURE" />
+    <field name="DS FWD REF1" dword="4" bits="95:0" type="VDENC_PICTURE" />
+    <field name="Original Uncompressed Picture" dword="10" bits="95:0" type="VDENC_PICTURE" />
+    <field name="Stream-In Data Picture" dword="13" bits="95:0" type="VDENC_PICTURE" />
+    <field name="Row Store Scratch Buffer" dword="16" bits="95:0" type="VDENC_PICTURE" />
+    <field name="Colocated MV Read Buffer" dword="19" bits="95:0" type="VDENC_PICTURE" />
+    <field name="FWD REF0" dword="22" bits="95:0" type="VDENC_PICTURE" />
+    <field name="FWD REF1" dword="25" bits="95:0" type="VDENC_PICTURE" />
+    <field name="FWD REF2" dword="28" bits="95:0" type="VDENC_PICTURE" />
+    <field name="BWD REF0" dword="31" bits="95:0" type="VDENC_PICTURE" />
+    <field name="VDEnc Statistics Stream-Out" dword="34" bits="95:0" type="VDENC_PICTURE" />
+  </instruction>
+  <instruction name="VDENC_PIPE_MODE_SELECT" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Standard Select" dword="1" bits="3:0" type="uint" prefix="SS">
+      <value name="AVC" value="2" />
+    </field>
+    <field name="Frame Statistics Stream-Out Enable" dword="1" bits="5:5" type="bool" />
+    <field name="TLB Prefetch Enable" dword="1" bits="7:7" type="bool" />
+    <field name="PAK Threshold Check Enable" dword="1" bits="8:8" type="bool" />
+    <field name="VDEnc Stream-In Enable" dword="1" bits="9:9" type="bool" />
+    <field name="PAK Chroma Sub-Sampling Type" dword="1" bits="16:15" type="uint">
+      <value name="4:2:0" value="1" />
+      <value name="4:4:4" value="3" />
+    </field>
+    <field name="Output Range Control After Color Space Conversion" dword="1" bits="17:17" type="bool" />
+    <field name="Disable Speed Mode Fetch Optimization" dword="1" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="VDENC_REF_SURFACE_STATE" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="2" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface State" dword="2" bits="127:0" type="VDENC_SURFACE_STATE_FIELDS" />
+  </instruction>
+  <instruction name="VDENC_SRC_SURFACE_STATE" bias="2" length="6" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="4" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="1" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface State" dword="2" bits="127:0" type="VDENC_SURFACE_STATE_FIELDS" />
+  </instruction>
+  <instruction name="VDENC_WALKER_STATE" bias="2" length="4" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="2" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="7" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="MB/LCU Start Y Position" dword="1" bits="8:0" type="uint" />
+    <field name="MB/LCU Start X Position" dword="1" bits="24:16" type="uint" />
+    <field name="First Super Slice" dword="1" bits="28:28" type="bool" />
+    <field name="Next Slice MB Start Y Position" dword="2" bits="9:0" type="uint" />
+    <field name="Next Slice MB/LCU Start X Position" dword="2" bits="25:16" type="uint" />
+    <field name="Log2 Weight Denominator Luma" dword="3" bits="2:0" type="uint" />
+  </instruction>
+  <instruction name="VDENC_WEIGHTSOFFSETS_STATE" bias="2" length="3" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="1" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="8" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command OpCode" dword="0" bits="26:23" type="uint" default="1" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Weights Forward Reference 0" dword="1" bits="7:0" type="int" />
+    <field name="Offset Forward Reference 0" dword="1" bits="15:8" type="int" />
+    <field name="Weights Forward Reference 1" dword="1" bits="23:16" type="int" />
+    <field name="Offset Forward Reference 1" dword="1" bits="31:24" type="int" />
+    <field name="Weights Forward Reference 2" dword="2" bits="7:0" type="int" />
+    <field name="Offset Forward Reference 2" dword="2" bits="15:8" type="int" />
+    <field name="HEVC/VP9 Weights Backward Reference 0" dword="2" bits="23:16" type="int" />
+    <field name="HEVC/VP9 Offset Backward Reference 0" dword="2" bits="31:24" type="int" />
+  </instruction>
+  <instruction name="VD_PIPELINE_FLUSH" bias="2" length="2" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="0" />
+    <field name="SubOpcode B" dword="0" bits="20:16" type="uint" default="0" />
+    <field name="SubOpcode A" dword="0" bits="22:21" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="15" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="HEVC Pipeline Done" dword="1" bits="0:0" type="bool" />
+    <field name="VD-ENC Pipeline Done" dword="1" bits="1:1" type="bool" />
+    <field name="MFX Pipeline Done" dword="1" bits="3:3" type="bool" />
+    <field name="VD Command/Message Parser Done" dword="1" bits="4:4" type="bool" />
+    <field name="HEVC Pipeline Command Flush" dword="1" bits="16:16" type="bool" />
+    <field name="VD-ENC Pipeline Command Flush" dword="1" bits="17:17" type="bool" />
+    <field name="MFX Pipeline Command Flush" dword="1" bits="19:19" type="bool" />
+  </instruction>
+  <register name="CACHE_MODE_0" length="1" num="0x7000">
+    <field name="Null tile fix disable" dword="0" bits="0:0" type="bool" />
+    <field name="Disable clock gating in the pixel backend" dword="0" bits="1:1" type="bool" />
+    <field name="Hierarchical Z RAW Stall Optimization Disable" dword="0" bits="2:2" type="bool" />
+    <field name="RCC Eviction Policy" dword="0" bits="4:4" type="bool" />
+    <field name="STC PMA Optimization Enable" dword="0" bits="5:5" type="bool" />
+    <field name="Sampler L2 Request Arbitration" dword="0" bits="7:6" type="uint">
+      <value name="Round Robin" value="0" />
+      <value name="Fetch are Highest Priority" value="1" />
+      <value name="Constants are Highest Priority" value="2" />
+    </field>
+    <field name="Sampler L2 TLB Prefetch Enable" dword="0" bits="9:9" type="bool" />
+    <field name="Sampler Set Remapping for 3D Disable" dword="0" bits="11:11" type="bool" />
+    <field name="MSAA Compression Plane Number Threshold for eLLC" dword="0" bits="14:12" type="uint" />
+    <field name="Sampler L2 Disable" dword="0" bits="15:15" type="bool" />
+    <field name="Null tile fix disable Mask" dword="0" bits="16:16" type="bool" />
+    <field name="Disable clock gating in the pixel backend Mask" dword="0" bits="17:17" type="bool" />
+    <field name="Hierarchical Z RAW Stall Optimization Disable Mask" dword="0" bits="18:18" type="bool" />
+    <field name="RCC Eviction Policy Mask" dword="0" bits="20:20" type="bool" />
+    <field name="STC PMA Optimization Enable Mask" dword="0" bits="21:21" type="bool" />
+    <field name="Sampler L2 Request Arbitration Mask" dword="0" bits="23:22" type="uint" />
+    <field name="Sampler L2 TLB Prefetch Enable Mask" dword="0" bits="25:25" type="bool" />
+    <field name="Sampler Set Remapping for 3D Disable Mask" dword="0" bits="27:27" type="bool" />
+    <field name="MSAA Compression Plane Number Threshold for eLLC Mask" dword="0" bits="30:28" type="uint" />
+    <field name="Sampler L2 Disable Mask" dword="0" bits="31:31" type="bool" />
+  </register>
+  <register name="CACHE_MODE_1" length="1" num="0x7004">
+    <field name="Partial Resolve Disable In VC" dword="0" bits="1:1" type="bool" />
+    <field name="RCZ Read after expansion control fix 2" dword="0" bits="2:2" type="bool" />
+    <field name="Depth Read Hit Write-Only Optimization Disable" dword="0" bits="3:3" type="bool" />
+    <field name="Float Blend Optimization Enable" dword="0" bits="4:4" type="bool" />
+    <field name="MCS Cache Disable" dword="0" bits="5:5" type="bool" />
+    <field name="4X4 RCPFE-STC Optimization Disable" dword="0" bits="6:6" type="bool" />
+    <field name="Sampler Cache Set XOR selection" dword="0" bits="8:7" type="uint" />
+    <field name="MSC RAW Hazard Avoidance Bit" dword="0" bits="9:9" type="bool" />
+    <field name="NP PMA Fix Enable" dword="0" bits="11:11" type="uint" />
+    <field name="HIZ Eviction Policy" dword="0" bits="12:12" type="uint" />
+    <field name="NP Early Z Fails Disable" dword="0" bits="13:13" type="uint" />
+    <field name="Blend Optimization Fix Disable" dword="0" bits="14:14" type="bool" />
+    <field name="Color Compression Disable" dword="0" bits="15:15" type="bool" />
+    <field name="Partial Resolve Disable In VC Mask" dword="0" bits="17:17" type="bool" />
+    <field name="RCZ Read after expansion control fix 2 Mask" dword="0" bits="18:18" type="bool" />
+    <field name="Depth Read Hit Write-Only Optimization Disable Mask" dword="0" bits="19:19" type="bool" />
+    <field name="Float Blend Optimization Enable Mask" dword="0" bits="20:20" type="bool" />
+    <field name="MCS Cache Disable Mask" dword="0" bits="21:21" type="bool" />
+    <field name="4X4 RCPFE-STC Optimization Disable Mask" dword="0" bits="22:22" type="bool" />
+    <field name="Sampler Cache Set XOR selection Mask" dword="0" bits="24:23" type="uint" />
+    <field name="MSC RAW Hazard Avoidance Bit Mask" dword="0" bits="25:25" type="bool" />
+    <field name="NP PMA Fix Enable Mask" dword="0" bits="27:27" type="bool" />
+    <field name="HIZ Eviction Policy Mask" dword="0" bits="28:28" type="bool" />
+    <field name="NP Early Z Fails Disable Mask" dword="0" bits="29:29" type="bool" />
+    <field name="Blend Optimization Fix Disable Mask" dword="0" bits="30:30" type="bool" />
+    <field name="Color Compression Disable Mask" dword="0" bits="31:31" type="bool" />
+  </register>
+  <register name="COMMON_SLICE_CHICKEN2" length="1" num="0x7014">
+    <field name="Disable Gather at Set Shader Common Slice" dword="0" bits="12:12" type="bool" />
+    <field name="Disable Gather at Set Shader Common Slice Mask" dword="0" bits="28:28" type="bool" />
+  </register>
+  <register name="CS_CHICKEN1" length="1" num="0x2580">
+    <field name="Replay Mode" dword="0" bits="0:0" type="uint">
+      <value name="Mid-cmdbuffer Preemption" value="0" />
+      <value name="Object Level Preemption" value="1" />
+    </field>
+    <field name="Media And GPGPU Pre-emption Control" dword="0" bits="2:1" type="uint">
+      <value name="Mid-thread Pre-emption" value="0" />
+      <value name="Thread Group Pre-emption" value="1" />
+      <value name="Command Level Pre-emption" value="2" />
+    </field>
+    <field name="Replay Mode Mask" dword="0" bits="16:16" type="bool" />
+    <field name="Media And GPGPU Pre-emption Control Mask" dword="0" bits="18:17" type="uint" />
+  </register>
+  <register name="CS_DEBUG_MODE2" length="1" num="0x20d8">
+    <field name="3D Rendering Instruction Disable" dword="0" bits="0:0" type="bool" />
+    <field name="Media Instruction Disable" dword="0" bits="1:1" type="bool" />
+    <field name="CONSTANT_BUFFER Address Offset Disable" dword="0" bits="4:4" type="bool" />
+    <field name="Disable Gather at Set Shader" dword="0" bits="7:7" type="bool" />
+    <field name="3D Rendering Instruction Disable Mask" dword="0" bits="16:16" type="bool" />
+    <field name="Media Instruction Disable Mask" dword="0" bits="17:17" type="bool" />
+    <field name="CONSTANT_BUFFER Address Offset Disable Mask" dword="0" bits="20:20" type="bool" />
+    <field name="Disable Gather at Set Shader Mask" dword="0" bits="23:23" type="bool" />
+  </register>
+  <register name="GT_MODE" length="1" num="0x7008">
+    <field name="Subslice Hashing" dword="0" bits="9:8" type="uint">
+      <value name="8x8" value="0" />
+      <value name="16x4" value="1" />
+      <value name="8x4" value="2" />
+      <value name="16x16" value="3" />
+    </field>
+    <field name="Slice Hashing" dword="0" bits="12:11" type="uint">
+      <value name="NORMAL" value="0" />
+      <value name="DISABLED" value="1" />
+      <value name="32x16" value="2" />
+      <value name="32x32" value="3" />
+    </field>
+    <field name="Subslice Hashing Mask" dword="0" bits="25:24" type="int" />
+    <field name="Slice Hashing Mask" dword="0" bits="28:27" type="int" />
+  </register>
+  <register name="RPSTAT0" length="1" num="0xa01c">
+    <field name="Previous GT Frequency" dword="0" bits="8:0" type="uint" />
+    <field name="Current GT Frequency" dword="0" bits="31:23" type="uint" />
+  </register>
+  <register name="SC_INSTDONE" length="1" num="0x7100">
+    <field name="SVL Done" dword="0" bits="0:0" type="bool" />
+    <field name="WMFE Done" dword="0" bits="1:1" type="bool" />
+    <field name="WMBE Done" dword="0" bits="2:2" type="bool" />
+    <field name="HIZ Done" dword="0" bits="3:3" type="bool" />
+    <field name="STC Done" dword="0" bits="4:4" type="bool" />
+    <field name="IZ Done" dword="0" bits="5:5" type="bool" />
+    <field name="SBE Done" dword="0" bits="6:6" type="bool" />
+    <field name="RCZ Done" dword="0" bits="8:8" type="bool" />
+    <field name="RCC Done" dword="0" bits="9:9" type="bool" />
+    <field name="RCPBE Done" dword="0" bits="10:10" type="bool" />
+    <field name="RCPFE Done" dword="0" bits="11:11" type="bool" />
+    <field name="DAPB Done" dword="0" bits="12:12" type="bool" />
+    <field name="DAPRBE Done" dword="0" bits="13:13" type="bool" />
+    <field name="SARB Done" dword="0" bits="15:15" type="bool" />
+    <field name="DC0 Done" dword="0" bits="16:16" type="bool" />
+    <field name="DC1 Done" dword="0" bits="17:17" type="bool" />
+    <field name="DC2 Done" dword="0" bits="18:18" type="bool" />
+    <field name="DC3 Done" dword="0" bits="19:19" type="bool" />
+    <field name="GW0 Done" dword="0" bits="20:20" type="bool" />
+    <field name="GW1 Done" dword="0" bits="21:21" type="bool" />
+    <field name="GW2 Done" dword="0" bits="22:22" type="bool" />
+    <field name="GW3 Done" dword="0" bits="23:23" type="bool" />
+    <field name="TDC Done" dword="0" bits="24:24" type="bool" />
+  </register>
+  <register name="SLICE_COMMON_ECO_CHICKEN1" length="1" num="0x731c">
+    <field name="GLK Barrier Mode" dword="0" bits="7:7" type="uint">
+      <value name="GLK_BARRIER_MODE_GPGPU" value="0" />
+      <value name="GLK_BARRIER_MODE_3D_HULL" value="1" />
+    </field>
+    <field name="GLK Barrier Mode Mask" dword="0" bits="23:23" type="bool" />
+  </register>
+</genxml>
diff --git a/lib/genxml/gen_decode_header.py b/lib/genxml/gen_decode_header.py
new file mode 100644
index 000000000..170d2f60f
--- /dev/null
+++ b/lib/genxml/gen_decode_header.py
@@ -0,0 +1,487 @@
+#encoding=utf-8
+#
+# Copyright (C) 2025 Intel Corporation
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+#
+# 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.
+#
+
+"""Generate batch-buffer decode/annotate headers from genxml.
+
+For each instruction, emits a _decode() function that prints annotated
+dwords with field names and values.  Enum fields show symbolic names
+alongside numeric values.
+
+Usage:
+    python gen_decode_header.py [--baseline BASELINE.xml] [--engines ...] INPUT.xml
+"""
+
+import argparse
+import intel_genxml
+import sys
+from util import safe_name
+
+license = """/*
+ * Copyright (C) 2025 Intel Corporation
+ * SPDX-License-Identifier: MIT
+ *
+ * Batch buffer decode functions for %s.
+ *
+ * This file has been generated, do not hand edit.
+ */
+"""
+
+
+def field_mask(bits):
+    """Return (start_bit, end_bit, mask) for a field."""
+    end_bit, start_bit = map(int, bits.split(':'))
+    width = end_bit - start_bit + 1
+    mask = (1 << width) - 1
+    return start_bit, end_bit, mask
+
+
+def compute_opcode_key(instruction):
+    """Compute opcode key and mask from default field values in DW0.
+
+    Returns (key, mask) where key has the default values shifted into
+    position and mask has 1s for every bit covered by a field with a
+    default.  Using the full mask for dispatch avoids collisions between
+    instructions that share the same top 16 bits but differ in lower
+    opcode fields (e.g. 3DPRIMITIVE vs 3DPRIMITIVE_EXTENDED).
+    """
+    key = 0
+    mask = 0
+    for field in instruction:
+        if field.tag != 'field':
+            continue
+        if int(field.attrib.get('dword', '-1')) != 0:
+            continue
+        default = field.attrib.get('default')
+        if default is None:
+            continue
+        start_bit, end_bit, field_mask_val = field_mask(field.attrib['bits'])
+        key |= (int(default, 0) & field_mask_val) << start_bit
+        mask |= field_mask_val << start_bit
+    return key, mask
+
+
+def get_length_bias(instruction):
+    return int(instruction.attrib.get('bias', '2'))
+
+
+def get_length(instruction):
+    return instruction.attrib.get('length')
+
+
+def collect_enum_values(field_elem, enum_defs):
+    """Collect value->name mapping from inline <value> children or
+    from a referenced standalone <enum>."""
+    values = {}
+
+    # Inline values (children of the <field>)
+    for v in field_elem:
+        if v.tag == 'value':
+            vname = safe_name(v.attrib['name'])
+            vval = int(v.attrib['value'], 0)
+            values[vval] = vname
+
+    # If the field type references a standalone enum and we didn't
+    # find inline values, look it up
+    if not values:
+        ftype = field_elem.attrib.get('type', '')
+        if ftype in enum_defs:
+            for v in enum_defs[ftype]:
+                if v.tag == 'value':
+                    vname = safe_name(v.attrib['name'])
+                    vval = int(v.attrib['value'], 0)
+                    values[vval] = vname
+
+    return values
+
+
+class DecodeGenerator:
+    def __init__(self, gen, platform, struct_defs, enum_defs):
+        self.gen = gen
+        self.platform = platform
+        self.struct_defs = struct_defs  # name -> XML element
+        self.enum_defs = enum_defs     # name -> XML element
+        self.instructions = []
+
+    def gen_prefix(self, name):
+        if name[0] == '_':
+            return 'GFX%s%s' % (self.gen, name)
+        return 'GFX%s_%s' % (self.gen, name)
+
+    def is_enum_type(self, ftype):
+        """Check if a field type is a standalone enum or has inline values."""
+        return ftype in self.enum_defs
+
+    def is_struct_type(self, ftype):
+        return ftype in self.struct_defs
+
+    def is_builtin_type(self, ftype):
+        builtins = ('address', 'bool', 'float', 'uint', 'int',
+                    'offset', 'mbo', 'mbz')
+        if ftype in builtins:
+            return True
+        # ufixed/sfixed patterns like u4.8, s3.13
+        if len(ftype) > 1 and ftype[0] in ('u', 's') and '.' in ftype:
+            return True
+        return False
+
+    def collect_fields(self, instruction):
+        """Collect fields grouped by dword index."""
+        by_dw = {}
+        self._collect_fields_recursive(instruction, by_dw, prefix="", dw_offset=0)
+        return by_dw
+
+    def _collect_fields_recursive(self, parent, by_dw, prefix, dw_offset):
+        for child in parent:
+            if child.tag == 'field':
+                dword = int(child.attrib['dword']) + dw_offset
+                name = safe_name(child.attrib['name'])
+                start_bit, end_bit, mask = field_mask(child.attrib['bits'])
+                ftype = child.attrib.get('type', 'uint')
+
+                if ftype in ('mbo', 'mbz'):
+                    continue
+
+                # Expand struct-type fields
+                if not self.is_builtin_type(ftype) and \
+                   not self.is_enum_type(ftype) and \
+                   self.is_struct_type(ftype):
+                    struct_xml = self.struct_defs[ftype]
+                    self._collect_fields_recursive(
+                        struct_xml, by_dw, prefix + name + ".",
+                        dw_offset + dword)
+                    continue
+
+                values = collect_enum_values(child, self.enum_defs)
+
+                if dword not in by_dw:
+                    by_dw[dword] = []
+                by_dw[dword].append((prefix + name, start_bit, end_bit, ftype, values))
+
+            elif child.tag == 'group':
+                group_dw = int(child.attrib.get('dword', '0'))
+                count = int(child.attrib.get('count', '1'))
+                size_bits = int(child.attrib.get('size', '32'))
+                size_dw = size_bits // 32
+
+                for i in range(count):
+                    idx_prefix = prefix
+                    if count > 1:
+                        idx_prefix = "%s[%d]." % (prefix.rstrip('.'), i)
+                    self._collect_fields_recursive(
+                        child, by_dw, idx_prefix,
+                        dw_offset + group_dw + i * size_dw)
+
+    def add_instruction(self, instruction):
+        name = safe_name(instruction.attrib['name'])
+        prefixed = self.gen_prefix(name)
+        opcode_key, opcode_mask = compute_opcode_key(instruction)
+        length = get_length(instruction)
+        bias = get_length_bias(instruction)
+        fields_by_dw = self.collect_fields(instruction)
+        self.instructions.append((prefixed, opcode_key, opcode_mask, length, bias, fields_by_dw))
+
+    def emit_header(self):
+        guard = 'GFX%s_%s_DECODE_H' % (self.gen, self.platform.upper())
+        print(license % self.platform)
+        print('#ifndef %s' % guard)
+        print('#define %s' % guard)
+        print('')
+        print('#include <stdio.h>')
+        print('#include <stdint.h>')
+        print('')
+
+    def emit_footer(self):
+        guard = 'GFX%s_%s_DECODE_H' % (self.gen, self.platform.upper())
+        print('#endif /* %s */' % guard)
+
+    def emit_decode_function(self, prefixed, opcode_key, opcode_mask, length, bias, fields_by_dw):
+        print('static inline unsigned')
+        print('%s_decode(FILE *fp, uint32_t base, const uint32_t *dw, unsigned remaining)' % prefixed)
+        print('{')
+
+        if length is not None:
+            print('   unsigned len = %s;' % length)
+        else:
+            print('   unsigned len = (dw[0] & 0xff) + %d;' % bias)
+
+        print('   if (len > remaining)')
+        print('      len = remaining;')
+        print('   fprintf(fp, "[0x%%04x] 0x%%08x  %s (len=%%u)\\n", base, dw[0], len);' % prefixed)
+
+        if not fields_by_dw:
+            print('   for (unsigned i = 1; i < len; i++)')
+            print('      fprintf(fp, "[0x%04x] 0x%08x\\n", base + i * 4, dw[i]);')
+            print('   return len;')
+            print('}')
+            print('')
+            return
+
+        max_dw = max(fields_by_dw.keys()) if fields_by_dw else 0
+
+        # Decode DW0 fields (subopcode, length, flags) if present
+        if 0 in fields_by_dw:
+            # Filter out identity fields already shown in the header line
+            dw0_fields = [(n, s, e, t, v) for n, s, e, t, v in fields_by_dw[0]
+                          if n not in ('DWordLength', 'CommandType',
+                                       'CommandSubType', '_3DCommandOpcode',
+                                       '_3DCommandSubOpcode', 'MICommandOpcode',
+                                       'CommandOpcode', 'InstructionType')]
+            if dw0_fields:
+                self._emit_dword_decode(0, dw0_fields)
+
+        for dw_idx in range(1, max_dw + 1):
+            print('   if (%d < len) {' % dw_idx)
+            if dw_idx not in fields_by_dw:
+                print('   fprintf(fp, "[0x%%04x] 0x%%08x\\n", base + %d, dw[%d]);' %
+                      (dw_idx * 4, dw_idx))
+            else:
+                fields = fields_by_dw[dw_idx]
+                self._emit_dword_decode(dw_idx, fields)
+            print('   }')
+
+        if length is not None:
+            total = int(length)
+        else:
+            total = None
+
+        if total is not None and total > max_dw + 1:
+            print('   for (unsigned i = %d; i < %d; i++)' % (max_dw + 1, total))
+            print('      fprintf(fp, "[0x%04x] 0x%08x\\n", base + i * 4, dw[i]);')
+        elif total is None:
+            print('   for (unsigned i = %d; i < len; i++)' % (max_dw + 1,))
+            print('      fprintf(fp, "[0x%04x] 0x%08x\\n", base + i * 4, dw[i]);')
+
+        print('   return len;')
+        print('}')
+        print('')
+
+    def _emit_enum_decode(self, var_expr, values, sep, name):
+        """Emit a switch that prints 'NAME (num)' for known values,
+        or just 'num' for unknown ones. Always shows the raw number."""
+        print('   { uint32_t _v = %s;' % var_expr)
+        print('     fprintf(fp, "%s.%s = ");' % (sep, name))
+        print('     switch (_v) {')
+        for val, vname in sorted(values.items()):
+            print('     case %d: fprintf(fp, "%s (%%u)", _v); break;' % (val, vname))
+        print('     default: fprintf(fp, "%u", _v); break;')
+        print('     }')
+        print('   }')
+
+    def _emit_dword_decode(self, dw_idx, fields):
+        """Emit decode for a single dword's fields."""
+        fields = sorted(fields, key=lambda f: f[1])
+
+        interesting = [(name, start, end, ftype, values)
+                       for name, start, end, ftype, values in fields
+                       if ftype not in ('mbo', 'mbz')]
+
+        if not interesting:
+            print('   fprintf(fp, "[0x%%04x] 0x%%08x\\n", base + %d, dw[%d]);' %
+                  (dw_idx * 4, dw_idx))
+            return
+
+        print('   fprintf(fp, "[0x%%04x] 0x%%08x   ", base + %d, dw[%d]);' %
+              (dw_idx * 4, dw_idx))
+
+        for i, (name, start, end, ftype, values) in enumerate(interesting):
+            width = end - start + 1
+            mask = (1 << width) - 1
+            sep = ', ' if i > 0 else ''
+            extract = '(dw[%d] >> %d) & 0x%x' % (dw_idx, start, mask)
+
+            if ftype == 'bool':
+                print('   fprintf(fp, "%s.%s = %%s", %s ? "true" : "false");' %
+                      (sep, name, extract))
+            elif ftype == 'address':
+                # Mask off the low reserved bits using the actual field
+                # start position from the XML, not a hardcoded 12.
+                if start > 0:
+                    addr_mask = (1 << start) - 1
+                    print('   fprintf(fp, "%s.%s = 0x%%lx", '
+                          '(unsigned long)(((uint64_t)dw[%d] | ((uint64_t)dw[%d] << 32)) & ~0x%xUL));' %
+                          (sep, name, dw_idx, dw_idx + 1, addr_mask))
+                else:
+                    print('   fprintf(fp, "%s.%s = 0x%%lx", '
+                          '(unsigned long)((uint64_t)dw[%d] | ((uint64_t)dw[%d] << 32)));' %
+                          (sep, name, dw_idx, dw_idx + 1))
+            elif ftype == 'float':
+                print('   { union { uint32_t u; float f; } _fv = { .u = dw[%d] };' % dw_idx)
+                print('     fprintf(fp, "%s.%s = %%f", _fv.f); }' % (sep, name))
+            elif values:
+                # Enum or field with named values - show symbolic name + raw number
+                self._emit_enum_decode(extract, values, sep, name)
+            elif width > 32:
+                print('   fprintf(fp, "%s.%s = 0x%%lx", '
+                      '(unsigned long)((uint64_t)(dw[%d] >> %d) | ((uint64_t)dw[%d] << %d)));' %
+                      (sep, name, dw_idx, start, dw_idx + 1, 32 - start))
+            else:
+                print('   fprintf(fp, "%s.%s = %%u", %s);' %
+                      (sep, name, extract))
+
+        print('   fprintf(fp, "\\n");')
+
+    def emit_dispatch(self):
+        """Emit command dispatch function.
+
+        Uses the full opcode key and mask rather than just the top 16 bits
+        so that instructions differing only in lower opcode fields
+        (e.g. 3DPRIMITIVE vs 3DPRIMITIVE_EXTENDED) are dispatched correctly.
+        Instructions with more specific masks (more default bits) are checked
+        first so that a more general match does not shadow a specific one.
+        """
+        prefix = 'gfx%s' % self.gen
+
+        print('static inline unsigned')
+        print('%s_decode_command(FILE *fp, uint32_t offset, const uint32_t *dw, unsigned remaining)' % prefix)
+        print('{')
+
+        # Collect unique (key, mask) -> prefixed mappings.
+        # Sort by popcount of mask descending so more specific matches
+        # are tried first (e.g. 3DPRIMITIVE_EXTENDED before 3DPRIMITIVE).
+        entries = []
+        seen = set()
+        for prefixed, opcode_key, opcode_mask, length, bias, fields_by_dw in self.instructions:
+            if opcode_key == 0 or (opcode_key, opcode_mask) in seen:
+                continue
+            seen.add((opcode_key, opcode_mask))
+            entries.append((opcode_key, opcode_mask, prefixed))
+
+        entries.sort(key=lambda e: -bin(e[1]).count('1'))
+
+        first = True
+        for key, mask, prefixed in entries:
+            keyword = 'if' if first else '} else if'
+            print('   %s ((dw[0] & 0x%08xu) == 0x%08xu) {' % (keyword, mask, key))
+            print('      return %s_decode(fp, offset, dw, remaining);' % prefixed)
+            first = False
+
+        if not first:
+            print('   } else {')
+        print('      fprintf(fp, "[0x%04x] 0x%08x  UNKNOWN\\n", offset, dw[0]);')
+        print('      return 1;')
+        if not first:
+            print('   }')
+        print('}')
+        print('')
+
+    def emit_batch_decode(self):
+        """Emit the batch buffer walker."""
+        prefix = 'gfx%s' % self.gen
+
+        print('static inline void')
+        print('%s_decode_batch(FILE *fp, const uint32_t *batch, unsigned batch_dwords)' % prefix)
+        print('{')
+        print('   unsigned offset = 0;')
+        print('')
+        print('   while (offset < batch_dwords * 4) {')
+        print('      const uint32_t *dw = &batch[offset / 4];')
+        print('      uint32_t cmd = dw[0];')
+        print('      unsigned len;')
+        print('')
+        print('      /* MI_BATCH_BUFFER_END */')
+        print('      if (cmd == 0x05000000) {')
+        print('         fprintf(fp, "[0x%04x] 0x%08x  MI_BATCH_BUFFER_END\\n", offset, cmd);')
+        print('         break;')
+        print('      }')
+        print('')
+        print('      /* MI_NOOP: opcode is all zeros, single dword */')
+        print('      if (cmd == 0) {')
+        print('         fprintf(fp, "[0x%04x] 0x%08x  MI_NOOP\\n", offset, cmd);')
+        print('         offset += 4;')
+        print('         continue;')
+        print('      }')
+        print('')
+        print('      len = %s_decode_command(fp, offset, dw, batch_dwords - offset / 4);' % prefix)
+        print('      offset += len * 4;')
+        print('   }')
+        print('}')
+
+    def generate(self):
+        self.emit_header()
+        for inst in self.instructions:
+            self.emit_decode_function(*inst)
+        self.emit_dispatch()
+        self.emit_batch_decode()
+        self.emit_footer()
+
+
+def parse_args():
+    p = argparse.ArgumentParser(description=__doc__)
+    p.add_argument('xml_source', metavar='XML_SOURCE')
+    p.add_argument('--engines', type=str, default='render',
+                   help="Comma-separated engine list")
+    p.add_argument('--baseline', type=str, action='append', default=[],
+                   help="Previous gen XML files (oldest first); skip identical instructions")
+    return p.parse_args()
+
+
+def main():
+    pargs = parse_args()
+    engines = set(pargs.engines.split(','))
+
+    genxml = intel_genxml.GenXml(pargs.xml_source)
+    genxml.merge_imported()
+    genxml.filter_engines(engines)
+
+    root = genxml.et.getroot()
+    platform = root.attrib['name']
+    gen = root.attrib['gen'].replace('.', '')
+
+    # Collect struct and enum definitions
+    struct_defs = {}
+    enum_defs = {}
+    for item in root:
+        if item.tag == 'struct':
+            struct_defs[item.attrib['name']] = item
+        elif item.tag == 'enum':
+            enum_defs[item.attrib['name']] = item
+
+    # Optional baseline filtering
+    baseline_fps = {}
+    if pargs.baseline:
+        from gen_pack_header import _build_baselines, _item_fingerprint
+        baseline_fps, _, _ = _build_baselines(pargs.baseline, engines)
+
+    decoder = DecodeGenerator(gen, platform, struct_defs, enum_defs)
+
+    for item in root:
+        if item.tag != 'instruction':
+            continue
+        item_name = item.attrib.get('name')
+        if not item_name:
+            continue
+
+        if baseline_fps:
+            from gen_pack_header import _item_fingerprint
+            fp = baseline_fps.get(item_name)
+            if fp is not None and _item_fingerprint(item) == fp:
+                continue
+
+        decoder.add_instruction(item)
+
+    decoder.generate()
+
+
+if __name__ == '__main__':
+    main()
diff --git a/lib/genxml/gen_pack_header.py b/lib/genxml/gen_pack_header.py
new file mode 100644
index 000000000..64890394e
--- /dev/null
+++ b/lib/genxml/gen_pack_header.py
@@ -0,0 +1,799 @@
+#encoding=utf-8
+# SPDX-License-Identifier: MIT
+
+import argparse
+import ast
+import intel_genxml
+import re
+import sys
+import copy
+import textwrap
+from util import *
+
+license =  """/*
+ * Copyright (C) 2016 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * 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.
+ */
+"""
+
+pack_header = """%(license)s
+
+/* Instructions, enums and structures for %(platform)s.
+ *
+ * This file has been generated, do not hand edit.
+ */
+
+#ifndef %(guard)s
+#define %(guard)s
+
+#include <stdio.h>
+#include "genxml/igt_genxml_defs.h"
+
+"""
+
+def num_from_str(num_str):
+    if num_str.lower().startswith('0x'):
+        return int(num_str, base=16)
+
+    assert not num_str.startswith('0'), 'octals numbers not allowed'
+    return int(num_str)
+
+def bool_from_str(bool_str):
+    options = { "true": True, "false": False }
+    return options[bool_str];
+
+class Field(object):
+    ufixed_pattern = re.compile(r"u(\d+)\.(\d+)")
+    sfixed_pattern = re.compile(r"s(\d+)\.(\d+)")
+
+    def __init__(self, parser, attrs):
+        self.parser = parser
+        if "name" in attrs:
+            self.name = safe_name(attrs["name"])
+
+        dword = int(attrs["dword"])
+        end_bit, start_bit = map(int, attrs["bits"].split(":"))
+
+        self.start = dword * 32 + start_bit
+        self.end = dword * 32 + end_bit
+
+        self.type = attrs["type"]
+        self.nonzero = bool_from_str(attrs.get("nonzero", "false"))
+        self.prefix = attrs["prefix"] if "prefix" in attrs else None
+
+        assert self.start <= self.end, \
+               'field {} has end ({}) < start ({})'.format(self.name, self.end,
+                                                           self.start)
+        if self.type == 'bool':
+            assert self.end == self.start, \
+                   'bool field ({}) is too wide'.format(self.name)
+
+        if "default" in attrs:
+            # Base 0 recognizes 0x, 0o, 0b prefixes in addition to decimal ints.
+            self.default = int(attrs["default"], base=0)
+        else:
+            self.default = None
+
+        ufixed_match = Field.ufixed_pattern.match(self.type)
+        if ufixed_match:
+            self.type = 'ufixed'
+            self.fractional_size = int(ufixed_match.group(2))
+
+        sfixed_match = Field.sfixed_pattern.match(self.type)
+        if sfixed_match:
+            self.type = 'sfixed'
+            self.fractional_size = int(sfixed_match.group(2))
+
+    def is_builtin_type(self):
+        builtins =  [ 'address', 'bool', 'float', 'ufixed',
+                      'offset', 'sfixed', 'offset', 'int', 'uint',
+                      'mbo', 'mbz' ]
+        return self.type in builtins
+
+    def is_struct_type(self):
+        return self.type in self.parser.structs
+
+    def is_enum_type(self):
+        return self.type in self.parser.enums
+
+    def emit_template_struct(self, dim):
+        if self.type == 'address':
+            type = '__gen_address_type'
+        elif self.type == 'bool':
+            type = 'bool'
+        elif self.type == 'float':
+            type = 'float'
+        elif self.type == 'ufixed':
+            type = 'float'
+        elif self.type == 'sfixed':
+            type = 'float'
+        elif self.type == 'uint' and self.end - self.start > 32:
+            type = 'uint64_t'
+        elif self.type == 'offset':
+            type = 'uint64_t'
+        elif self.type == 'int':
+            type = 'int32_t'
+        elif self.type == 'uint':
+            type = 'uint32_t'
+        elif self.is_struct_type():
+            type = 'struct ' + self.parser.gen_prefix_for_type(self.type)
+        elif self.is_enum_type():
+            type = 'enum ' + self.parser.gen_prefix(safe_name(self.type))
+        elif self.type == 'mbo' or self.type == 'mbz':
+            return
+        else:
+            print("#error unhandled type: %s" % self.type)
+            return
+
+        print("   %-36s %s%s;" % (type, self.name, dim))
+
+    def emit_value_defines(self):
+        for value in self.values:
+            defname = self.parser.gen_value_name(
+                value.name,
+                prefix=self.prefix,
+                strip_prefixed_leading_underscore=True)
+            print("#ifndef %s" % defname)
+            print("#define %-40s %d" % (defname, value.value))
+            print("#endif")
+
+class Group(object):
+    def __init__(self, parser, parent, start, count, size):
+        self.parser = parser
+        self.parent = parent
+        self.start = start
+        self.count = count
+        self.size = size
+        self.fields = []
+
+    def emit_template_struct(self, dim):
+        if self.count == 0:
+            print("   /* variable length fields follow */")
+        else:
+            if self.count > 1:
+                dim = "%s[%d]" % (dim, self.count)
+
+            for field in self.fields:
+                field.emit_template_struct(dim)
+
+    def emit_value_defines(self):
+        for field in self.fields:
+            if isinstance(field, Group):
+                field.emit_value_defines()
+            else:
+                field.emit_value_defines()
+
+    class DWord:
+        def __init__(self):
+            self.size = 32
+            self.fields = []
+            self.address = None
+
+    def collect_dwords(self, dwords, start, dim):
+        for field in self.fields:
+            if isinstance(field, Group):
+                if field.count == 1:
+                    field.collect_dwords(dwords, start + field.start, dim)
+                else:
+                    for i in range(field.count):
+                        field.collect_dwords(dwords,
+                                             start + field.start + i * field.size,
+                                             "%s[%d]" % (dim, i))
+                continue
+
+            index = (start + field.start) // 32
+            if not index in dwords:
+                dwords[index] = self.DWord()
+
+            clone = copy.copy(field)
+            clone.start = clone.start + start
+            clone.end = clone.end + start
+            clone.dim = dim
+            dwords[index].fields.append(clone)
+
+            if field.type == "address":
+                # assert dwords[index].address == None
+                dwords[index].address = clone
+
+            # Coalesce all the dwords covered by this field. The two cases we
+            # handle are where multiple fields are in a 64 bit word (typically
+            # and address and a few bits) or where a single struct field
+            # completely covers multiple dwords.
+            while index < (start + field.end) // 32:
+                if index + 1 in dwords and not dwords[index] == dwords[index + 1]:
+                    dwords[index].fields.extend(dwords[index + 1].fields)
+                dwords[index].size = 64
+                dwords[index + 1] = dwords[index]
+                index = index + 1
+
+    def collect_dwords_and_length(self, repack=False):
+        dwords = {}
+        self.collect_dwords(dwords, 0, "")
+
+        # Determine number of dwords in this group. If we have a size, use
+        # that, since that'll account for MBZ dwords at the end of a group
+        # (like dword 8 on BDW+ 3DSTATE_HS). Otherwise, use the largest dword
+        # index we've seen plus one.
+        if self.size > 0:
+            length = self.size // 32
+        elif dwords:
+            length = max(dwords.keys()) + 1
+        else:
+            length = 0
+
+        return (dwords, length)
+
+    def emit_pack_function(self, dwords, length, repack=False):
+        for index in range(length):
+            # Handle MBZ dwords
+            if not index in dwords:
+                print("")
+                print("   dw[%d] = 0;" % index)
+                continue
+
+            # For 64 bit dwords, we aliased the two dword entries in the dword
+            # dict it occupies. Now that we're emitting the pack function,
+            # skip the duplicate entries.
+            dw = dwords[index]
+            if index > 0 and index - 1 in dwords and dw == dwords[index - 1]:
+                continue
+
+            # Special case: only one field and it's a struct at the beginning
+            # of the dword. In this case we pack directly into the
+            # destination. This is the only way we handle embedded structs
+            # larger than 32 bits.
+            if len(dw.fields) == 1:
+                field = dw.fields[0]
+                name = field.name + field.dim
+                if field.is_struct_type() and field.start % 32 == 0:
+                    print("")
+                    if repack:
+                        print("   %s_repack(data, &dw[%d], &origin[%d], &values->%s);" %
+                              (self.parser.gen_prefix_for_type(field.type), index, index, name))
+                    else:
+                        print("   %s_pack(data, &dw[%d], &values->%s);" %
+                              (self.parser.gen_prefix_for_type(field.type), index, name))
+                    continue
+
+            # Open a block scope for C90 compliance (declarations must
+            # precede code within each block).
+            print("")
+            print("   {")
+
+            # Pack any fields of struct type first so we have integer values
+            # to the dword for those fields.
+            # Emit all declarations first, then all pack calls (C90).
+            field_index = 0
+            struct_fields = []
+            for field in dw.fields:
+                if isinstance(field, Field) and field.is_struct_type():
+                    name = field.name + field.dim
+                    struct_fields.append((field, name, field_index))
+                    field_index = field_index + 1
+
+            if struct_fields:
+                for field, name, fi in struct_fields:
+                    print("   uint32_t v%d_%d;" % (index, fi))
+                for field, name, fi in struct_fields:
+                    if repack:
+                        print("   %s_repack(data, &v%d_%d, &origin[%d], &values->%s);" %
+                              (self.parser.gen_prefix_for_type(field.type), index, fi, index, name))
+                    else:
+                        print("   %s_pack(data, &v%d_%d, &values->%s);" %
+                              (self.parser.gen_prefix_for_type(field.type), index, fi, name))
+
+            dword_start = index * 32
+            if dw.address == None:
+                address_count = 0
+            else:
+                address_count = 1
+
+            # Assert in dont_use values
+            for field in dw.fields:
+                for value in field.values:
+                    if value.dont_use:
+                        print("   assert(values->%s != %s);" %
+                              (field.name,
+                               self.parser.gen_value_name(value.name,
+                                                          prefix=field.prefix)))
+
+            if dw.size == 32 and dw.address == None:
+                v = None
+                print("   dw[%d] =" % index)
+            elif len(dw.fields) > address_count or repack:
+                v = "v%d" % index
+                print("   const uint%d_t %s =" % (dw.size, v))
+            else:
+                v = "0"
+
+            field_index = 0
+            non_address_fields = []
+
+            if repack:
+                non_address_fields.append("origin[%d]" % index)
+                if dw.size > 32:
+                    non_address_fields.append("((uint64_t)origin[%d] << 32)" % (index + 1))
+
+            for field in dw.fields:
+                if field.type != "mbo" and field.type != "mbz" and field.type != "repack":
+                    name = field.name + field.dim
+
+                nz = "_nonzero" if field.nonzero else ""
+
+                if field.type == "repack":
+                    non_address_fields.append("origin[%d]" % index)
+                elif field.type == "mbo":
+                    non_address_fields.append("util_bitpack_ones(%d, %d)" % \
+                        (field.start - dword_start, field.end - dword_start))
+                elif field.type == "mbz":
+                    assert not field.nonzero
+                elif field.type == "address":
+                    pass
+                elif field.type == "uint":
+                    non_address_fields.append("util_bitpack_uint%s(values->%s, %d, %d)" % \
+                        (nz, name, field.start - dword_start, field.end - dword_start))
+                elif field.is_enum_type():
+                    non_address_fields.append("util_bitpack_uint%s(values->%s, %d, %d)" % \
+                        (nz, name, field.start - dword_start, field.end - dword_start))
+                elif field.type == "int":
+                    non_address_fields.append("util_bitpack_sint%s(values->%s, %d, %d)" % \
+                        (nz, name, field.start - dword_start, field.end - dword_start))
+                elif field.type == "bool":
+                    non_address_fields.append("util_bitpack_uint%s(values->%s, %d, %d)" % \
+                        (nz, name, field.start - dword_start, field.end - dword_start))
+                elif field.type == "float":
+                    non_address_fields.append("util_bitpack_float%s(values->%s)" % (nz, name))
+                elif field.type == "offset":
+                    non_address_fields.append("__gen_offset%s(values->%s, %d, %d)" % \
+                        (nz, name, field.start - dword_start, field.end - dword_start))
+                elif field.type == 'ufixed':
+                    non_address_fields.append("util_bitpack_ufixed%s(values->%s, %d, %d, %d)" % \
+                        (nz, name, field.start - dword_start, field.end - dword_start, field.fractional_size))
+                elif field.type == 'sfixed':
+                    non_address_fields.append("util_bitpack_sfixed%s(values->%s, %d, %d, %d)" % \
+                        (nz, name, field.start - dword_start, field.end - dword_start, field.fractional_size))
+                elif field.is_struct_type():
+                    non_address_fields.append("util_bitpack_uint(v%d_%d, %d, %d)" % \
+                        (index, field_index, field.start - dword_start, field.end - dword_start))
+                    field_index = field_index + 1
+                else:
+                    non_address_fields.append("/* unhandled field %s, type %s */\n" % \
+                                              (name, field.type))
+
+            if non_address_fields:
+                print(" |\n".join("      " + f for f in non_address_fields) + ";")
+
+            if dw.size == 32:
+                if dw.address:
+                    print("   dw[%d] = __gen_address(data, &dw[%d], values->%s, %s, %d, %d);" %
+                          (index, index, dw.address.name + field.dim, v,
+                           dw.address.start - dword_start, dw.address.end - dword_start))
+                print("   }")
+                continue
+
+            if dw.address:
+                v_address = "v%d_address" % index
+                print("   const uint64_t %s =\n      __gen_address(data, &dw[%d], values->%s, %s, %d, %d);" %
+                      (v_address, index, dw.address.name + field.dim, v,
+                       dw.address.start - dword_start, dw.address.end - dword_start))
+                if len(dw.fields) > address_count:
+                    print("   dw[%d] = %s;" % (index, v_address))
+                    print("   dw[%d] = (%s >> 32) | (%s >> 32);" % (index + 1, v_address, v))
+                    print("   }")
+                    continue
+                else:
+                    v = v_address
+            print("   dw[%d] = %s;" % (index, v))
+            print("   dw[%d] = %s >> 32;" % (index + 1, v))
+            print("   }")
+
+class Value(object):
+    def __init__(self, attrs):
+        self.name = safe_name(attrs["name"])
+        self.value = ast.literal_eval(attrs["value"])
+        self.dont_use = int(attrs["dont_use"]) != 0 if "dont_use" in attrs else False
+
+class Parser(object):
+    def __init__(self, repack):
+        self.instruction = None
+        self.structs = {}
+        # Set of enum names we've seen.
+        self.enums = set()
+        self.registers = {}
+        self.repack = repack
+        # Maps struct/register type names to the origin gen label for types
+        # that were omitted (no definition emitted for this gen).
+        self.skipped_type_origins = {}
+
+    def gen_prefix(self, name):
+        if name[0] == "_":
+            return 'GFX%s%s' % (self.gen, name)
+        return 'GFX%s_%s' % (self.gen, name)
+
+    def gen_prefix_for_type(self, type_name):
+        """Like gen_prefix but resolves skipped (omitted) types to their
+        origin gen so that struct/pack references still compile."""
+        origin = self.skipped_type_origins.get(type_name)
+        if origin:
+            safe = safe_name(type_name)
+            if safe[0] == '_':
+                return 'GFX%s%s' % (origin, safe)
+            return 'GFX%s_%s' % (origin, safe)
+        return self.gen_prefix(safe_name(type_name))
+
+    def gen_value_name(self, value_name, prefix=None,
+                       strip_prefixed_leading_underscore=False):
+        name = value_name
+        if prefix:
+            if strip_prefixed_leading_underscore and name[0] == '_':
+                name = name[1:]
+            name = prefix + "_" + name
+
+        return self.gen_prefix(name.upper())
+
+    def gen_guard(self):
+        return self.gen_prefix("{0}_PACK_H".format(self.platform))
+
+    def _should_skip_item(self, item):
+        """Check if this item is bit-identical to any previous gen
+        and should be skipped (applies to instructions, structs, and
+        registers)."""
+        if not self.baseline_fingerprints:
+            return False
+        item_name = item.attrib.get('name')
+        if not item_name:
+            return False
+        baseline_fp = self.baseline_fingerprints.get(item_name)
+        if baseline_fp is None:
+            return False  # New item, must emit
+        return _item_fingerprint(item) == baseline_fp
+
+    def process_item(self, item):
+        name = item.tag
+        assert name != "genxml"
+        attrs = item.attrib
+
+        # Skip items that are bit-identical to any previous gen.
+        # Emit a comment pointing to the oldest gen that defined this
+        # layout so that a developer can grep and find it in one hop.
+        if name in ("instruction", "struct", "register") and self._should_skip_item(item):
+            safe = safe_name(attrs["name"])
+            origin = self.origin_gens.get(attrs["name"], self.baseline_gen)
+            if safe[0] == "_":
+                origin_name = 'GFX%s%s' % (origin, safe)
+            else:
+                origin_name = 'GFX%s_%s' % (origin, safe)
+            print("/* %s omitted: identical to %s */" %
+                  (self.gen_prefix(safe), origin_name))
+            print('')
+            # Register skipped structs/registers so later items can
+            # still reference them as field types, resolved to origin gen.
+            if name == "struct":
+                self.structs[attrs["name"]] = 1
+                self.skipped_type_origins[attrs["name"]] = origin
+            elif name == "register":
+                self.registers[attrs["name"]] = 1
+                self.skipped_type_origins[attrs["name"]] = origin
+            return
+
+        if name in ("instruction", "struct", "register"):
+            if name == "instruction":
+                self.instruction = safe_name(attrs["name"])
+                self.length_bias = int(attrs["bias"])
+            elif name == "struct":
+                self.struct = safe_name(attrs["name"])
+                self.structs[attrs["name"]] = 1
+            elif name == "register":
+                self.register = safe_name(attrs["name"])
+                self.reg_num = num_from_str(attrs["num"])
+                self.registers[attrs["name"]] = 1
+            if "length" in attrs:
+                self.length = int(attrs["length"])
+                size = self.length * 32
+            else:
+                self.length = None
+                size = 0
+            self.group = Group(self, None, 0, 1, size)
+
+        elif name == "group":
+            dword = int(attrs["dword"])
+            offset_bits = int(attrs.get("offset_bits", 0))
+            start = dword * 32 + offset_bits
+
+
+            group = Group(self, self.group,
+                          start, int(attrs["count"]), int(attrs["size"]))
+            self.group.fields.append(group)
+            self.group = group
+        elif name == "field":
+            self.group.fields.append(Field(self, attrs))
+            self.values = []
+        elif name == "enum":
+            self.values = []
+            self.enum = safe_name(attrs["name"])
+            self.enums.add(attrs["name"])
+            if "prefix" in attrs:
+                self.prefix = safe_name(attrs["prefix"])
+            else:
+                self.prefix = None
+        elif name == "value":
+            self.values.append(Value(attrs))
+        elif name in ("import", "exclude"):
+            pass
+        else:
+            assert False
+
+        for child_item in item:
+            self.process_item(child_item)
+
+        if name  == "instruction":
+            self.emit_instruction()
+            self.instruction = None
+            self.group = None
+        elif name == "struct":
+            self.emit_struct()
+            self.struct = None
+            self.group = None
+        elif name == "register":
+            self.emit_register()
+            self.register = None
+            self.reg_num = None
+            self.group = None
+        elif name == "group":
+            self.group = self.group.parent
+        elif name  == "field":
+            self.group.fields[-1].values = self.values
+        elif name  == "enum":
+            self.emit_enum()
+            self.enum = None
+        elif name in ("import", "exclude", "value"):
+            pass
+        else:
+            assert False
+
+    def emit_template_struct(self, name, group):
+        print("struct %s {" % self.gen_prefix(name))
+        group.emit_template_struct("")
+        print("};\n")
+
+
+    def emit_pack_function(self, name, group, repack=False):
+        name = self.gen_prefix(name)
+        if repack:
+            print(textwrap.dedent("""\
+            static inline __attribute__((always_inline)) void
+            %s_repack(__attribute__((unused)) __gen_user_data *data,
+                    %s__attribute__((unused)) void * restrict dst,
+                    %s__attribute__((unused)) const uint32_t * origin,
+                    %s__attribute__((unused)) const struct %s * restrict values)
+            {""") % (name, ' ' * len(name), ' ' * len(name), ' ' * len(name), name))
+        else:
+            print(textwrap.dedent("""\
+            static inline __attribute__((always_inline)) void
+            %s_pack(__attribute__((unused)) __gen_user_data *data,
+                  %s__attribute__((unused)) void * restrict dst,
+                  %s__attribute__((unused)) const struct %s * restrict values)
+            {""") % (name, ' ' * len(name), ' ' * len(name), name))
+
+        (dwords, length) = group.collect_dwords_and_length(repack)
+        if length:
+            # Cast dst to make header C++ friendly
+            type_name = "uint32_t * restrict"
+            print("   %s dw = (%s) dst;" % (type_name, type_name))
+
+            group.emit_pack_function(dwords, length, repack)
+
+        print("}\n")
+
+    def emit_instruction(self):
+        name = self.instruction
+
+        if not self.length is None:
+            print('#define %-33s %6d' %
+                  (self.gen_prefix(name + "_length"), self.length))
+        print('#define %-33s %6d' %
+              (self.gen_prefix(name + "_length_bias"), self.length_bias))
+
+        default_fields = []
+        for field in self.group.fields:
+            if not isinstance(field, Field):
+                continue
+            if field.default is None:
+                continue
+
+            if field.is_builtin_type():
+                default_fields.append("   .%-35s = %6d" % (field.name, field.default))
+            else:
+                # Default values should not apply to structures
+                assert field.is_enum_type()
+                default_fields.append("   .%-35s = (enum %s) %6d" % (field.name, self.gen_prefix(safe_name(field.type)), field.default))
+
+        if default_fields:
+            print('#define %-40s\\' % (self.gen_prefix(name + '_header')))
+            print(",  \\\n".join(default_fields))
+            print('')
+
+        self.emit_template_struct(self.instruction, self.group)
+        self.emit_pack_function(self.instruction, self.group)
+        if self.repack:
+            self.emit_pack_function(self.instruction, self.group, repack=True)
+        self.group.emit_value_defines()
+
+    def emit_register(self):
+        name = self.register
+        if not self.reg_num is None:
+            print('#define %-33s 0x%04x' %
+                  (self.gen_prefix(name + "_num"), self.reg_num))
+
+        if not self.length is None:
+            print('#define %-33s %6d' %
+                  (self.gen_prefix(name + "_length"), self.length))
+
+        self.emit_template_struct(self.register, self.group)
+        self.emit_pack_function(self.register, self.group)
+        self.group.emit_value_defines()
+
+    def emit_struct(self):
+        name = self.struct
+        if not self.length is None:
+            print('#define %-33s %6d' %
+                  (self.gen_prefix(name + "_length"), self.length))
+
+        self.emit_template_struct(self.struct, self.group)
+        self.emit_pack_function(self.struct, self.group)
+        if self.repack:
+            self.emit_pack_function(self.struct, self.group, repack=True)
+        self.group.emit_value_defines()
+
+    def emit_enum(self):
+        enum_name = self.gen_prefix(self.enum)
+        print('enum %s {' % enum_name)
+        for value in self.values:
+            name = self.gen_value_name(value.name, prefix=self.prefix)
+            print('   %-36s = %6d,' % (name.upper(), value.value))
+        print('};')
+        print('')
+
+    def emit_genxml(self, genxml):
+        root = genxml.et.getroot()
+        self.platform = root.attrib["name"]
+        self.gen = root.attrib["gen"].replace('.', '')
+        print(pack_header % {'license': license, 'platform': self.platform, 'guard': self.gen_guard()})
+        for item in root:
+            self.process_item(item)
+        print('#endif /* %s */' % self.gen_guard())
+
+def _element_fingerprint(elem, skip_attrs=frozenset()):
+    """Canonical string representation of an XML element for structural
+    comparison.  Captures tag, attributes (sorted, minus skip_attrs),
+    and all children recursively."""
+    parts = [elem.tag]
+    for k, v in sorted(elem.attrib.items()):
+        if k not in skip_attrs:
+            parts.append('%s=%s' % (k, v))
+    for child in elem:
+        parts.append(_element_fingerprint(child))
+    return '(%s)' % '|'.join(parts)
+
+def _item_fingerprint(item):
+    """Structural fingerprint for an XML element (instruction, struct,
+    or register).  Skips identity attributes ('name', 'engine', 'num')
+    so that two items are considered identical when their bit-layout
+    matches, regardless of naming or register offset."""
+    return _element_fingerprint(item, skip_attrs={'name', 'engine', 'num'})
+
+def _build_baseline(xml_source, engines):
+    """Load a single baseline gen's XML file and build a dict of
+    item name -> fingerprint.  Kept for use by gen_decode_header."""
+    genxml = intel_genxml.GenXml(xml_source)
+    genxml.merge_imported()
+    genxml.filter_engines(engines)
+    root = genxml.et.getroot()
+    baseline = {}
+    baseline_gen = root.attrib["gen"].replace('.', '')
+    for item in root:
+        if item.tag in ('instruction', 'struct', 'register'):
+            item_name = item.attrib.get('name')
+            if item_name:
+                baseline[item_name] = _item_fingerprint(item)
+    return baseline, baseline_gen
+
+def _build_baselines(xml_sources, engines):
+    """Load a sequence of baseline gen XML files (oldest first) and build:
+     - fingerprints: item_name -> fingerprint (from most recent occurrence)
+     - baseline_gen: gen label of the most recent baseline
+     - origin_gens: item_name -> gen label of the oldest gen with the
+       current fingerprint for that item
+    An item's origin resets when its fingerprint changes."""
+    fingerprints = {}
+    origin_gens = {}
+    baseline_gen = None
+    for xml_source in xml_sources:
+        genxml = intel_genxml.GenXml(xml_source)
+        genxml.merge_imported()
+        genxml.filter_engines(engines)
+        root = genxml.et.getroot()
+        gen_label = root.attrib["gen"].replace('.', '')
+        baseline_gen = gen_label
+        for item in root:
+            if item.tag in ('instruction', 'struct', 'register'):
+                item_name = item.attrib.get('name')
+                if item_name:
+                    fp = _item_fingerprint(item)
+                    if item_name not in fingerprints or fingerprints[item_name] != fp:
+                        # New item or fingerprint changed: this gen is the origin
+                        fingerprints[item_name] = fp
+                        origin_gens[item_name] = gen_label
+                    # else: same fingerprint, keep existing (older) origin
+    return fingerprints, baseline_gen, origin_gens
+
+def parse_args():
+    p = argparse.ArgumentParser()
+    p.add_argument('xml_source', metavar='XML_SOURCE',
+                   help="Input xml file")
+    p.add_argument('--engines', nargs='?', type=str, default='render',
+                   help="Comma-separated list of engines whose instructions should be parsed (default: %(default)s)")
+    p.add_argument('--include-symbols', nargs='?', type=str, action='store',
+                   help="List of instruction/structures to generate")
+    p.add_argument('--repack', action='store_true', help="Emit repacking code")
+    p.add_argument('--baseline', type=str, action='append', default=[],
+                   help="Previous gen XML files (oldest first); skip items identical to any baseline")
+
+    pargs = p.parse_args()
+
+    if pargs.engines is None:
+        print("No engines specified")
+        sys.exit(1)
+
+    return pargs
+
+def main():
+    pargs = parse_args()
+
+    engines = set(pargs.engines.split(','))
+    valid_engines = [ 'render', 'blitter', 'video', 'compute' ]
+    if engines - set(valid_engines):
+        print("Invalid engine specified, valid engines are:\n")
+        for e in valid_engines:
+            print("\t%s" % e)
+        sys.exit(1)
+
+    baseline_fingerprints = {}
+    baseline_gen = None
+    origin_gens = {}
+    if pargs.baseline:
+        baseline_fingerprints, baseline_gen, origin_gens = _build_baselines(
+            pargs.baseline, engines)
+
+    genxml = intel_genxml.GenXml(pargs.xml_source)
+
+    genxml.merge_imported()
+    genxml.filter_engines(engines)
+    if pargs.include_symbols:
+        genxml.filter_symbols(pargs.include_symbols.split(','))
+    p = Parser(pargs.repack)
+    p.baseline_fingerprints = baseline_fingerprints
+    p.baseline_gen = baseline_gen
+    p.origin_gens = origin_gens
+    p.emit_genxml(genxml)
+
+if __name__ == '__main__':
+    main()
diff --git a/lib/genxml/igt_genxml.h b/lib/genxml/igt_genxml.h
new file mode 100644
index 000000000..7b8c59338
--- /dev/null
+++ b/lib/genxml/igt_genxml.h
@@ -0,0 +1,112 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2025 Intel Corporation
+ *
+ * Emit / pack macros for using genxml-generated pack headers with
+ * IGT's intel_bb batch-buffer infrastructure.
+ *
+ * Relocations are handled automatically: when an address field in a
+ * genxml struct is assigned a struct igt_address with a non-zero
+ * handle, __gen_combine_address (in igt_genxml_defs.h) registers the
+ * relocation during packing.
+ */
+
+#ifndef IGT_GENXML_H
+#define IGT_GENXML_H
+
+#include <stdint.h>
+#include "igt_core.h"
+#include "intel_batchbuffer.h"
+#include "intel_bufops.h"
+#include "igt_genxml_defs.h"
+
+/*
+ * igt_genxml_emit - emit a fixed-length GPU command into the batch.
+ *
+ * Usage:
+ *   igt_genxml_emit(ibb, GFX9_3DSTATE_CLIP, clip) {
+ *       clip.MaximumVPIndex = 0;
+ *       ...
+ *   }
+ *
+ * The struct is zero-initialised with the default header fields, packed
+ * into the batch at the current pointer, and the pointer is advanced by
+ * cmd##_length dwords.
+ */
+#define igt_genxml_emit(ibb, cmd, name)                                    \
+	for (struct cmd name = { cmd##_header },                           \
+	     *_dst = (struct cmd *)intel_bb_ptr(ibb);                      \
+	     __builtin_expect(_dst != NULL, 1);                            \
+	     ({                                                            \
+		     cmd##_pack((ibb), (void *)_dst, &name);               \
+		     intel_bb_ptr_add((ibb), cmd##_length * 4);            \
+		     _dst = NULL;                                          \
+	     }))
+
+/*
+ * igt_genxml_pack_state - pack a state object at an arbitrary location.
+ *
+ * Usage:
+ *   void *ptr = intel_bb_ptr_align(ibb, 64);
+ *   igt_genxml_pack_state(ibb, GFX9_RENDER_SURFACE_STATE, ptr, rss) {
+ *       rss.SurfaceType = GFX9_SURFTYPE_2D;
+ *       rss.SurfaceBaseAddress = igt_address_of(buf, 0, rd, wd);
+ *       ...
+ *   }
+ *   intel_bb_ptr_add(ibb, GFX9_RENDER_SURFACE_STATE_length * 4);
+ *
+ * Address fields with a non-zero handle get their relocations
+ * registered automatically during packing.
+ */
+#define igt_genxml_pack_state(ibb, cmd, dst_ptr, name)                     \
+	for (struct cmd name = { 0 },                                      \
+	     *_done = (struct cmd *)1;                                     \
+	     __builtin_expect(_done != NULL, 1);                           \
+	     ({                                                            \
+		     cmd##_pack((ibb), (void *)(dst_ptr), &name);          \
+		     _done = NULL;                                         \
+	     }))
+
+/*
+ * igt_address_of - construct an igt_address for a buffer object.
+ *
+ * @buf:          intel_buf owning the BO
+ * @bo_offset:    offset within the BO (e.g. surface[0].offset, cc.offset)
+ * @read_domains: GEM read domains
+ * @write_domain: GEM write domain
+ */
+static inline struct igt_address
+igt_address_of(const struct intel_buf *buf, uint64_t bo_offset,
+	       uint32_t read_domains, uint32_t write_domain)
+{
+	return (struct igt_address){
+		.offset = buf->addr.offset + bo_offset,
+		.handle = buf->handle,
+		.read_domains = read_domains,
+		.write_domain = write_domain,
+		.presumed_offset = buf->addr.offset,
+	};
+}
+
+/*
+ * igt_address_of_batch - construct an igt_address pointing into the
+ * batch buffer itself (e.g. for STATE_BASE_ADDRESS).
+ *
+ * @ibb:          batch buffer
+ * @read_domains: GEM read domains
+ * @write_domain: GEM write domain
+ */
+static inline struct igt_address
+igt_address_of_batch(struct intel_bb *ibb,
+		     uint32_t read_domains, uint32_t write_domain)
+{
+	return (struct igt_address){
+		.offset = ibb->batch_offset,
+		.handle = ibb->handle,
+		.read_domains = read_domains,
+		.write_domain = write_domain,
+		.presumed_offset = ibb->batch_offset,
+	};
+}
+
+#endif /* IGT_GENXML_H */
diff --git a/lib/genxml/igt_genxml_decode.h b/lib/genxml/igt_genxml_decode.h
new file mode 100644
index 000000000..316c4b250
--- /dev/null
+++ b/lib/genxml/igt_genxml_decode.h
@@ -0,0 +1,60 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2025 Intel Corporation
+ *
+ * Batch buffer annotated decode using genxml-generated decode headers.
+ *
+ * Usage:
+ *   igt_genxml_decode_batch(fp, gen, batch_ptr, batch_dwords);
+ *
+ * This dispatches to the appropriate per-gen decode function based on
+ * the gen number.  Each gen's decode header provides command identification
+ * and field-level annotation.
+ */
+
+#ifndef IGT_GENXML_DECODE_H
+#define IGT_GENXML_DECODE_H
+
+#include <stdio.h>
+#include <stdint.h>
+#include "intel_chipset.h"
+
+#include "gen90_decode.h"
+#include "gen110_decode.h"
+#include "gen120_decode.h"
+#include "gen125_decode.h"
+#include "xe2_decode.h"
+#include "xe3_decode.h"
+#include "xe3p_decode.h"
+
+/*
+ * igt_genxml_decode_batch - walk and annotate a batch buffer.
+ *
+ * @fp:            output file
+ * @devid:         PCI device ID (used to select the right gen decoder)
+ * @batch:         pointer to batch buffer dwords
+ * @batch_dwords:  number of dwords in the batch
+ */
+static inline void
+igt_genxml_decode_batch(FILE *fp, uint32_t devid,
+			const uint32_t *batch, unsigned batch_dwords)
+{
+	unsigned gen = intel_gen(devid);
+
+	if (gen >= 35)
+		gfx35_decode_batch(fp, batch, batch_dwords);
+	else if (gen >= 30)
+		gfx30_decode_batch(fp, batch, batch_dwords);
+	else if (gen >= 20)
+		gfx20_decode_batch(fp, batch, batch_dwords);
+	else if (HAS_4TILE(devid) || gen > 12)
+		gfx125_decode_batch(fp, batch, batch_dwords);
+	else if (gen >= 12)
+		gfx12_decode_batch(fp, batch, batch_dwords);
+	else if (gen >= 11)
+		gfx11_decode_batch(fp, batch, batch_dwords);
+	else
+		gfx9_decode_batch(fp, batch, batch_dwords);
+}
+
+#endif /* IGT_GENXML_DECODE_H */
diff --git a/lib/genxml/igt_genxml_defs.h b/lib/genxml/igt_genxml_defs.h
new file mode 100644
index 000000000..00b855460
--- /dev/null
+++ b/lib/genxml/igt_genxml_defs.h
@@ -0,0 +1,335 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2016 Intel Corporation
+ * Copyright © 2025 Intel Corporation
+ *
+ * Self-contained header providing all definitions that genxml-generated
+ * pack headers need.  Replaces Mesa's util/bitpack_helpers.h and
+ * genX_helpers.h so that IGT can use genxml without pulling in Mesa's
+ * build system.
+ */
+
+#ifndef IGT_GENXML_DEFS_H
+#define IGT_GENXML_DEFS_H
+
+#include <assert.h>
+#include <math.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <string.h>
+
+/* ── compiler helpers ─────────────────────────────────────────────── */
+
+#ifndef ALWAYS_INLINE
+#define ALWAYS_INLINE inline __attribute__((always_inline))
+#endif
+
+#ifndef ASSERTED
+#ifdef NDEBUG
+#define ASSERTED __attribute__((unused))
+#else
+#define ASSERTED
+#endif
+#endif
+
+#ifndef UNUSED
+#define UNUSED __attribute__((unused))
+#endif
+
+#ifndef CLAMP
+#define CLAMP(x, lo, hi) ((x) < (lo) ? (lo) : ((x) > (hi) ? (hi) : (x)))
+#endif
+
+/* ── bit-field helpers ────────────────────────────────────────────── */
+
+#ifndef BITFIELD64_BIT
+#define BITFIELD64_BIT(b)  (1ull << (b))
+#endif
+
+#ifndef BITFIELD64_MASK
+#define BITFIELD64_MASK(b) \
+	((b) == 64 ? (~0ull) : BITFIELD64_BIT(b) - 1)
+#endif
+
+/* ── int-range helpers (Mesa u_math.h equivalents) ────────────────── */
+
+static inline ALWAYS_INLINE int64_t
+u_intN_min(unsigned bits)
+{
+	return -(INT64_C(1) << (bits - 1));
+}
+
+static inline ALWAYS_INLINE int64_t
+u_intN_max(unsigned bits)
+{
+	return (INT64_C(1) << (bits - 1)) - 1;
+}
+
+static inline ALWAYS_INLINE uint64_t
+u_uintN_max(unsigned bits)
+{
+	return (bits == 64) ? UINT64_MAX : (UINT64_C(1) << bits) - 1;
+}
+
+/* ── validation hook (no-op outside Valgrind) ─────────────────────── */
+
+#ifndef util_bitpack_validate_value
+#define util_bitpack_validate_value(x)
+#endif
+
+/* ── bitpack functions ────────────────────────────────────────────── */
+
+ALWAYS_INLINE static uint64_t
+util_bitpack_ones(uint32_t start, uint32_t end)
+{
+	return (UINT64_MAX >> (64 - (end - start + 1))) << start;
+}
+
+ALWAYS_INLINE static uint64_t
+util_bitpack_uint(uint64_t v, uint32_t start, UNUSED uint32_t end)
+{
+#ifndef NDEBUG
+	const int bits = end - start + 1;
+	if (bits < 64) {
+		const uint64_t max = u_uintN_max(bits);
+		assert(v <= max);
+	}
+#endif
+	util_bitpack_validate_value(v);
+	return v << start;
+}
+
+ALWAYS_INLINE static uint64_t
+util_bitpack_uint_nonzero(uint64_t v, uint32_t start, uint32_t end)
+{
+	assert(v != 0ull);
+	return util_bitpack_uint(v, start, end);
+}
+
+ALWAYS_INLINE static uint64_t
+util_bitpack_sint(int64_t v, uint32_t start, uint32_t end)
+{
+	const int bits = end - start + 1;
+	const uint64_t mask = BITFIELD64_MASK(bits);
+	util_bitpack_validate_value(v);
+#ifndef NDEBUG
+	if (bits < 64) {
+		const int64_t min = u_intN_min(bits);
+		const int64_t max = u_intN_max(bits);
+		assert(min <= v && v <= max);
+	}
+#endif
+	return (v & mask) << start;
+}
+
+ALWAYS_INLINE static uint64_t
+util_bitpack_sint_nonzero(int64_t v, uint32_t start, uint32_t end)
+{
+	assert(v != 0ll);
+	return util_bitpack_sint(v, start, end);
+}
+
+ALWAYS_INLINE static uint32_t
+util_bitpack_float(float v)
+{
+	union { float f; uint32_t dw; } x;
+	util_bitpack_validate_value(v);
+	x.f = v;
+	return x.dw;
+}
+
+ALWAYS_INLINE static uint32_t
+util_bitpack_float_nonzero(float v)
+{
+	assert(v != 0.0f);
+	return util_bitpack_float(v);
+}
+
+ALWAYS_INLINE static uint64_t
+util_bitpack_sfixed(float v, uint32_t start, uint32_t end,
+		    uint32_t fract_bits)
+{
+	const float factor = (1 << fract_bits);
+	const int64_t int_val = llroundf(v * factor);
+	const uint64_t mask = UINT64_MAX >> (64 - (end - start + 1));
+	util_bitpack_validate_value(v);
+#ifndef NDEBUG
+	{
+		const int total_bits = end - start + 1;
+		const float min = u_intN_min(total_bits) / factor;
+		const float max = u_intN_max(total_bits) / factor;
+		assert(min <= v && v <= max);
+	}
+#endif
+	return (int_val & mask) << start;
+}
+
+ALWAYS_INLINE static uint64_t
+util_bitpack_sfixed_clamp(float v, uint32_t start, uint32_t end,
+			  uint32_t fract_bits)
+{
+	const float factor = (1 << fract_bits);
+	const int total_bits = end - start + 1;
+	const float min = u_intN_min(total_bits) / factor;
+	const float max = u_intN_max(total_bits) / factor;
+	const int64_t int_val = llroundf(CLAMP(v, min, max) * factor);
+	const uint64_t mask = UINT64_MAX >> (64 - (end - start + 1));
+	util_bitpack_validate_value(v);
+	return (int_val & mask) << start;
+}
+
+ALWAYS_INLINE static uint64_t
+util_bitpack_sfixed_nonzero(float v, uint32_t start, uint32_t end,
+			    uint32_t fract_bits)
+{
+	assert(v != 0.0f);
+	return util_bitpack_sfixed(v, start, end, fract_bits);
+}
+
+ALWAYS_INLINE static uint64_t
+util_bitpack_ufixed(float v, uint32_t start, ASSERTED uint32_t end,
+		    uint32_t fract_bits)
+{
+	const float factor = (1 << fract_bits);
+	const uint64_t uint_val = llroundf(v * factor);
+	util_bitpack_validate_value(v);
+#ifndef NDEBUG
+	{
+		const int total_bits = end - start + 1;
+		const float min = 0.0f;
+		const float max = u_uintN_max(total_bits) / factor;
+		assert(min <= v && v <= max);
+	}
+#endif
+	return uint_val << start;
+}
+
+ALWAYS_INLINE static uint64_t
+util_bitpack_ufixed_clamp(float v, uint32_t start, ASSERTED uint32_t end,
+			  uint32_t fract_bits)
+{
+	const float factor = (1 << fract_bits);
+	const int total_bits = end - start + 1;
+	const float min = 0.0f;
+	const float max = u_uintN_max(total_bits) / factor;
+	const uint64_t uint_val = llroundf(CLAMP(v, min, max) * factor);
+	util_bitpack_validate_value(v);
+	return uint_val << start;
+}
+
+ALWAYS_INLINE static uint64_t
+util_bitpack_ufixed_nonzero(float v, uint32_t start, uint32_t end,
+			    uint32_t fract_bits)
+{
+	assert(v != 0.0f);
+	return util_bitpack_ufixed(v, start, end, fract_bits);
+}
+
+/* ── address type and combine function ────────────────────────────── */
+
+struct igt_address {
+	uint64_t offset;          /* full GPU address to pack into dwords */
+	uint32_t handle;          /* GEM handle; 0 = no reloc needed */
+	uint32_t read_domains;
+	uint32_t write_domain;
+	uint64_t presumed_offset; /* BO base address (for computing bo_delta) */
+};
+
+struct intel_bb;
+
+/*
+ * Declared here so __gen_combine_address can call it.
+ * Also declared in intel_batchbuffer.h; suppress the warning
+ * when both headers are included.
+ */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wredundant-decls"
+uint64_t intel_bb_offset_reloc_with_delta(struct intel_bb *ibb,
+					  uint32_t handle,
+					  uint32_t read_domains,
+					  uint32_t write_domain,
+					  uint32_t delta,
+					  uint32_t offset,
+					  uint64_t presumed_offset);
+#pragma GCC diagnostic pop
+
+#define __gen_address_type  struct igt_address
+#define __gen_user_data     struct intel_bb
+
+/*
+ * __gen_combine_address - called by genxml pack functions for every
+ * address field.  If the address carries a GEM handle, automatically
+ * register a relocation with intel_bb.
+ *
+ * @ibb:      batch buffer (passed as __gen_user_data*)
+ * @location: pointer to the dword(s) being written in the batch
+ * @addr:     address descriptor (offset + optional reloc metadata)
+ * @delta:    flag bits that genxml packed below the address field
+ */
+static inline ALWAYS_INLINE uint64_t
+__gen_combine_address(struct intel_bb *ibb,
+		      void *location,
+		      struct igt_address addr, uint32_t delta)
+{
+	if (addr.handle) {
+		uint32_t batch_offset =
+			(uint8_t *)location - (uint8_t *)ibb->batch;
+		uint32_t bo_delta =
+			(uint32_t)(addr.offset - addr.presumed_offset);
+
+		intel_bb_offset_reloc_with_delta(ibb, addr.handle,
+						 addr.read_domains,
+						 addr.write_domain,
+						 bo_delta + delta,
+						 batch_offset,
+						 addr.presumed_offset);
+	}
+
+	return addr.offset + delta;
+}
+
+/* ── validation hook (no-op) ──────────────────────────────────────── */
+
+#ifndef __gen_validate_value
+#define __gen_validate_value(x)
+#endif
+
+/* ── offset helper ────────────────────────────────────────────────── */
+
+static inline ALWAYS_INLINE uint64_t
+__gen_offset(uint64_t v, ASSERTED uint32_t start, ASSERTED uint32_t end)
+{
+#ifndef NDEBUG
+	uint64_t mask = (~0ull >> (64 - (end - start + 1))) << start;
+	assert((v & ~mask) == 0);
+#endif
+	__gen_validate_value(v);
+	return v;
+}
+
+static inline ALWAYS_INLINE uint64_t
+__gen_offset_nonzero(uint64_t v, uint32_t start, uint32_t end)
+{
+	assert(v != 0ull);
+	return __gen_offset(v, start, end);
+}
+
+/* ── address helper ───────────────────────────────────────────────── */
+
+static inline ALWAYS_INLINE uint64_t
+__gen_address(__gen_user_data *data, void *location,
+	      __gen_address_type address, uint32_t delta,
+	      __attribute__((unused)) uint32_t start, uint32_t end)
+{
+	uint64_t addr_u64 = __gen_combine_address(data, location, address, delta);
+	if (end == 31) {
+		return addr_u64;
+	} else if (end < 63) {
+		const unsigned shift = 63 - end;
+		return (addr_u64 << shift) >> shift;
+	} else {
+		return addr_u64;
+	}
+}
+
+#endif /* IGT_GENXML_DEFS_H */
diff --git a/lib/genxml/intel_genxml.py b/lib/genxml/intel_genxml.py
new file mode 100644
index 000000000..a20e8e0ae
--- /dev/null
+++ b/lib/genxml/intel_genxml.py
@@ -0,0 +1,553 @@
+#!/usr/bin/env python3
+# Copyright © 2019, 2022 Intel Corporation
+# SPDX-License-Identifier: MIT
+
+from __future__ import annotations
+from collections import OrderedDict
+import copy
+import io
+import pathlib
+import os.path
+import re
+import xml.etree.ElementTree as et
+import typing
+
+if typing.TYPE_CHECKING:
+    class Args(typing.Protocol):
+
+        files: typing.List[pathlib.Path]
+        validate: bool
+        quiet: bool
+
+
+def get_filename(element: et.Element) -> str:
+    return element.attrib['filename']
+
+def get_name(element: et.Element) -> str:
+    return element.attrib['name']
+
+def get_value(element: et.Element) -> int:
+    return int(element.attrib['value'], 0)
+
+def get_start(element: et.Element) -> int:
+    attrs = element.attrib
+
+    if 'start' in attrs:
+        return int(attrs['start'], 0)
+
+    dword = int(attrs['dword'])
+    offset = 0
+
+    if 'bits' in attrs:
+        offset = int(attrs['bits'].split(':')[1])
+    elif 'offset_bits' in attrs:
+        offset = int(attrs['offset_bits'])
+
+    return dword * 32 + offset
+
+
+BASE_TYPES = {
+    'address',
+    'offset',
+    'int',
+    'uint',
+    'bool',
+    'float',
+    'mbz',
+    'mbo',
+}
+
+FIXED_PATTERN = re.compile(r"(s|u)(\d+)\.(\d+)")
+
+def is_base_type(name: str) -> bool:
+    return name in BASE_TYPES or FIXED_PATTERN.match(name) is not None
+
+def add_struct_refs(items: typing.OrderedDict[str, bool], node: et.Element) -> None:
+    if node.tag == 'field':
+        if 'type' in node.attrib and not is_base_type(node.attrib['type']):
+            t = node.attrib['type']
+            items[t] = True
+        return
+    if node.tag not in {'struct', 'group'}:
+        return
+    for c in node:
+        add_struct_refs(items, c)
+
+
+class Struct(object):
+    def __init__(self, xml: et.Element):
+        self.xml = xml
+        self.name = xml.attrib['name']
+        self.deps: typing.OrderedDict[str, Struct] = OrderedDict()
+
+    def find_deps(self, struct_dict, enum_dict) -> None:
+        deps: typing.OrderedDict[str, bool] = OrderedDict()
+        add_struct_refs(deps, self.xml)
+        for d in deps.keys():
+            if d in struct_dict:
+                self.deps[d] = struct_dict[d]
+
+    def add_xml(self, items: typing.OrderedDict[str, et.Element]) -> None:
+        for d in self.deps.values():
+            d.add_xml(items)
+        items[self.name] = self.xml
+
+
+# ordering of the various tag attributes
+GENXML_DESC = {
+    'genxml'      : [ 'name', 'gen', ],
+    'import'      : [ 'name', ],
+    'exclude'     : [ 'name', ],
+    'enum'        : [ 'name', 'value', 'prefix', ],
+    'struct'      : [ 'name', 'length', ],
+    'field'       : [ 'name', 'dword', 'bits', 'start', 'end', 'type', 'default', 'prefix', 'nonzero' ],
+    'instruction' : [ 'name', 'bias', 'length', 'engine', ],
+    'value'       : [ 'name', 'value', 'dont_use', ],
+    'group'       : [ 'count', 'dword', 'offset_bits', 'start', 'size', ],
+    'register'    : [ 'name', 'length', 'num', ],
+}
+
+
+def node_validator(old: et.Element, new: et.Element) -> bool:
+    """Compare to ElementTree Element nodes.
+
+    There is no builtin equality method, so calling `et.Element == et.Element` is
+    equivalent to calling `et.Element is et.Element`. We instead want to compare
+    that the contents are the same, including the order of children and attributes
+    """
+    return (
+        # Check that the attributes are the same
+        old.tag == new.tag and
+        old.text == new.text and
+        (old.tail or "").strip() == (new.tail or "").strip() and
+        list(old.attrib.items()) == list(new.attrib.items()) and
+        len(old) == len(new) and
+
+        # check that there are no unexpected attributes
+        set(new.attrib).issubset(GENXML_DESC[new.tag]) and
+
+        # check that the attributes are sorted
+        list(new.attrib) == list(old.attrib) and
+        all(node_validator(f, s) for f, s in zip(old, new))
+    )
+
+
+def process_attribs(elem: et.Element) -> None:
+    valid = GENXML_DESC[elem.tag]
+    # sort and prune attributes
+    elem.attrib = OrderedDict(sorted(((k, v) for k, v in elem.attrib.items() if k in valid),
+                                     key=lambda x: valid.index(x[0])))
+    for e in elem:
+        process_attribs(e)
+
+
+def sort_xml(xml: et.ElementTree) -> None:
+    genxml = xml.getroot()
+
+    imports = xml.findall('import')
+
+    enums = sorted(xml.findall('enum'), key=get_name)
+    enum_dict: typing.Dict[str, et.Element] = {}
+    for e in enums:
+        e[:] = sorted(e, key=get_value)
+        enum_dict[e.attrib['name']] = e
+
+    # Structs are a bit annoying because they can refer to each other. We sort
+    # them alphabetically and then build a graph of dependencies. Finally we go
+    # through the alphabetically sorted list and print out dependencies first.
+    structs = sorted(xml.findall('./struct'), key=get_name)
+    wrapped_struct_dict: typing.Dict[str, Struct] = {}
+    for s in structs:
+        s[:] = sorted(s, key=get_start)
+        ws = Struct(s)
+        wrapped_struct_dict[ws.name] = ws
+
+    for ws in wrapped_struct_dict.values():
+        ws.find_deps(wrapped_struct_dict, enum_dict)
+
+    sorted_structs: typing.OrderedDict[str, et.Element] = OrderedDict()
+    for s in structs:
+        _s = wrapped_struct_dict[s.attrib['name']]
+        _s.add_xml(sorted_structs)
+
+    instructions = sorted(xml.findall('./instruction'), key=get_name)
+    for i in instructions:
+        i[:] = sorted(i, key=get_start)
+
+    registers = sorted(xml.findall('./register'), key=get_name)
+    for r in registers:
+        r[:] = sorted(r, key=get_start)
+
+    new_elems = (imports + enums + list(sorted_structs.values()) +
+                 instructions + registers)
+    for n in new_elems:
+        process_attribs(n)
+    genxml[:] = new_elems
+
+
+# `default_imports` documents which files should be imported for our
+# genxml files. This is only useful if a genxml file does not already
+# include imports.
+#
+# Basically, this allows the genxml_import.py tool used with the
+# --import switch to know which files should be added as an import.
+# (genxml_import.py uses GenXml.add_xml_imports, which relies on
+# `default_imports`.)
+default_imports = OrderedDict([
+    ('gen40.xml', ()),
+    ('gen45.xml', ('gen40.xml',)),
+    ('gen50.xml', ('gen45.xml',)),
+    ('gen60.xml', ('gen50.xml',)),
+    ('gen70.xml', ('gen60.xml',)),
+    ('gen75.xml', ('gen70.xml',)),
+    ('gen80.xml', ('gen75.xml',)),
+    ('gen90.xml', ('gen80.xml',)),
+    ('gen110.xml', ('gen90.xml',)),
+    ('gen120.xml', ('gen110.xml',)),
+    ('gen125.xml', ('gen120.xml',)),
+    ('gen125_rt.xml', ()),
+    ('xe2.xml', ('gen125.xml',)),
+    ('xe2_rt.xml', ('gen125_rt.xml',)),
+    ('xe3.xml', ('xe2.xml',)),
+    ('xe3_rt.xml', ('xe2_rt.xml',)),
+    ('xe3p.xml', ('xe3.xml',)),
+    ('xe3p_rt.xml', ('xe3_rt.xml',)),
+    ])
+known_genxml_files = list(default_imports.keys())
+
+
+def genxml_path_to_key(path):
+    try:
+        return known_genxml_files.index(path.name)
+    except ValueError:
+        return len(known_genxml_files)
+
+
+def sort_genxml_files(files):
+    files.sort(key=genxml_path_to_key)
+
+
+class GenXml(object):
+    def __init__(self, filename, import_xml=False, files=None):
+        if files is not None:
+            self.files = files
+        else:
+            self.files = set()
+        self.filename = pathlib.Path(filename)
+
+        # Assert that the file hasn't already been loaded which would
+        # indicate a loop in genxml imports, and lead to infinite
+        # recursion.
+        assert self.filename not in self.files
+
+        self.files.add(self.filename)
+        self.et = et.parse(self.filename)
+        if import_xml:
+            self.merge_imported()
+
+    def process_imported(self, merge=False, drop_dupes=False):
+        """Processes imported genxml files.
+
+        This helper function scans imported genxml files and has two
+        mutually exclusive operating modes.
+
+        If `merge` is True, then items will be merged into the
+        `self.et` data structure.
+
+        If `drop_dupes` is True, then any item that is a duplicate to
+        an item imported will be droped from the `self.et` data
+        structure. This is used by `self.optimize_xml_import` to
+        shrink the size of the genxml file by reducing duplications.
+
+        """
+        assert merge != drop_dupes
+        orig_elements = set(self.et.getroot())
+        name_and_obj = lambda i: (get_name(i), i)
+        filter_ty = lambda s: filter(lambda i: i.tag == s, orig_elements)
+        filter_ty_item = lambda s: dict(map(name_and_obj, filter_ty(s)))
+
+        # orig_by_tag stores items defined directly in the genxml
+        # file. If a genxml item is defined in the genxml directly,
+        # then any imported items of the same name are ignored.
+        orig_by_tag = {
+            'enum': filter_ty_item('enum'),
+            'struct': filter_ty_item('struct'),
+            'instruction': filter_ty_item('instruction'),
+            'register': filter_ty_item('register'),
+        }
+
+        for item in orig_elements:
+            if item.tag == 'import':
+                assert 'name' in item.attrib
+                filename = os.path.split(item.attrib['name'])
+                exceptions = set()
+                for e in item:
+                    assert e.tag == 'exclude'
+                    exceptions.add(e.attrib['name'])
+                # We should be careful to restrict loaded files to
+                # those under the source or build trees. For now, only
+                # allow siblings of the current xml file.
+                assert filename[0] == '', 'Directories not allowed with import'
+                filename = os.path.join(os.path.dirname(self.filename),
+                                        filename[1])
+                assert os.path.exists(filename), f'{self.filename} {filename}'
+
+                # Here we load the imported genxml file. We set
+                # `import_xml` to true so that any imports in the
+                # imported genxml will be merged during the loading
+                # process.
+                #
+                # The `files` parameter is a set of files that have
+                # been loaded, and it is used to prevent any cycles
+                # (infinite recursion) while loading imported genxml
+                # files.
+                genxml = GenXml(filename, import_xml=True, files=self.files)
+                imported_elements = set(genxml.et.getroot())
+
+                # `to_add` is a set of items that were imported an
+                # should be merged into the `self.et` data structure.
+                # This is only used when the `merge` parameter is
+                # True.
+                to_add = set()
+                # `to_remove` is a set of items that can safely be
+                # imported since the item is equivalent. This is only
+                # used when the `drop_duped` parameter is True.
+                to_remove = set()
+                for i in imported_elements:
+                    if i.tag not in orig_by_tag:
+                        continue
+                    if i.attrib['name'] in exceptions:
+                        continue
+                    if i.attrib['name'] in orig_by_tag[i.tag]:
+                        if merge:
+                            # An item with this same name was defined
+                            # in the genxml directly. There we should
+                            # ignore (not merge) the imported item.
+                            continue
+                    else:
+                        if drop_dupes:
+                            # Since this item is not the imported
+                            # genxml, we can't consider dropping it.
+                            continue
+                    if merge:
+                        to_add.add(i)
+                    else:
+                        assert drop_dupes
+                        orig_element = orig_by_tag[i.tag][i.attrib['name']]
+                        if not node_validator(i, orig_element):
+                            continue
+                        to_remove.add(orig_element)
+
+                if len(to_add) > 0:
+                    # Now that we have scanned through all the items
+                    # in the imported genxml file, if any items were
+                    # found which should be merged, we add them into
+                    # our `self.et` data structure. After this it will
+                    # be as if the items had been directly present in
+                    # the genxml file.
+                    assert len(to_remove) == 0
+                    self.et.getroot().extend(list(to_add))
+                    sort_xml(self.et)
+                elif len(to_remove) > 0:
+                    self.et.getroot()[:] = list(orig_elements - to_remove)
+                    sort_xml(self.et)
+
+    def merge_imported(self):
+        """Merge imported items from genxml imports.
+
+        Genxml <import> tags specify that elements should be brought
+        in from another genxml source file. After this function is
+        called, these elements will become part of the `self.et` data
+        structure as if the elements had been directly included in the
+        genxml directly.
+
+        Items from imported genxml files will be completely ignore if
+        an item with the same name is already defined in the genxml
+        file.
+
+        """
+        self.process_imported(merge=True)
+
+    def flatten_imported(self):
+        """Flattens the genxml to not include any imports
+
+        Essentially this helper will put the `self.et` into a state
+        that includes all imported items directly, and does not
+        contain any <import> tags. This is used by the
+        genxml_import.py with the --flatten switch to "undo" any
+        genxml imports.
+
+        """
+        self.merge_imported()
+        root = self.et.getroot()
+        imports = root.findall('import')
+        for i in imports:
+            root.remove(i)
+
+    def add_xml_imports(self):
+        """Adds imports to the genxml file.
+
+        Using the `default_imports` structure, we add imports to the
+        genxml file.
+
+        """
+        # `imports` is a set of filenames currently imported by the
+        # genxml.
+        imports = self.et.findall('import')
+        imports = set(map(lambda el: el.attrib['name'], imports))
+        new_elements = []
+        self_flattened = copy.deepcopy(self)
+        self_flattened.flatten_imported()
+        old_names = { el.attrib['name'] for el in self_flattened.et.getroot() }
+        for import_xml in default_imports.get(self.filename.name, tuple()):
+            if import_xml in imports:
+                # This genxml is already imported, so we don't need to
+                # add it as an import.
+                continue
+            el = et.Element('import', {'name': import_xml})
+            import_path = self.filename.with_name(import_xml)
+            imported_genxml = GenXml(import_path, import_xml=True)
+            imported_names = { el.attrib['name']
+                               for el in imported_genxml.et.getroot()
+                               if el.tag != 'import' }
+            # Importing this genxml could add some new items. When
+            # adding a genxml import, we don't want to add new items,
+            # unless they were already in the current genxml. So, we
+            # put them into a list of items to exclude when importing
+            # the genxml.
+            exclude_names = imported_names - old_names
+            for n in sorted(exclude_names):
+                el.append(et.Element('exclude', {'name': n}))
+            new_elements.append(el)
+        if len(new_elements) > 0:
+            self.et.getroot().extend(new_elements)
+            sort_xml(self.et)
+
+    def optimize_xml_import(self):
+        """Optimizes the genxml by dropping items that can be imported
+
+        Scans genxml <import> tags, and loads the imported file. If
+        any item in the imported file is a duplicate to an item in the
+        genxml file, then it will be droped from the `self.et` data
+        structure.
+
+        """
+        self.process_imported(drop_dupes=True)
+
+    def filter_engines(self, engines):
+        changed = False
+        items = []
+        for item in self.et.getroot():
+            # When an instruction doesn't have the engine specified,
+            # it is considered to be for all engines. Otherwise, we
+            # check to see if it's tagged for the engines requested.
+            if item.tag == 'instruction' and 'engine' in item.attrib:
+                i_engines = set(item.attrib["engine"].split('|'))
+                if not (i_engines & engines):
+                    # Drop this instruction because it doesn't support
+                    # the requested engine types.
+                    changed = True
+                    continue
+            items.append(item)
+        if changed:
+            self.et.getroot()[:] = items
+
+    def filter_symbols(self, symbol_list):
+        symbols_allowed = {}
+        for sym in symbol_list:
+            symbols_allowed[sym] = sym
+
+        changed = False
+        items = []
+        for item in self.et.getroot():
+            if item.tag in ('instruction', 'struct', 'register') and \
+               item.attrib['name'] not in symbols_allowed:
+                # Drop the item from the tree
+                changed = True
+                continue
+            items.append(item)
+        if changed:
+            self.et.getroot()[:] = items
+
+    def sort(self):
+        sort_xml(self.et)
+
+    def sorted_copy(self):
+        clone = copy.deepcopy(self)
+        clone.sort()
+        return clone
+
+    def is_equivalent_xml(self, other):
+        if len(self.et.getroot()) != len(other.et.getroot()):
+            return False
+        return all(node_validator(old, new)
+                   for old, new in zip(self.et.getroot(), other.et.getroot()))
+
+    def normalize_to_old_bits_format(self):
+        def convert_elem(elem):
+            attrs = elem.attrib
+            if elem.tag == 'field' and 'dword' in attrs and 'bits' in attrs:
+                dword = int(attrs['dword'])
+                end_bit, start_bit = map(int, attrs['bits'].split(':'))
+
+                attrs['start'] = str(dword * 32 + start_bit)
+                attrs['end'] = str(dword * 32 + end_bit)
+
+                attrs.pop('dword', None)
+                attrs.pop('bits', None)
+
+            elif elem.tag == 'group' and 'dword' in attrs:
+                dword = int(attrs['dword'])
+                offset_bits = int(attrs.get('offset_bits', 0))
+
+                attrs['start'] = str(dword * 32 + offset_bits)
+
+                attrs.pop('dword', None)
+                attrs.pop('offset_bits', None)
+
+            for child in elem:
+                convert_elem(child)
+        convert_elem(self.et.getroot())
+
+    def normalize_to_new_bits_format(self):
+        def convert_elem(elem):
+            attrs = elem.attrib
+            if elem.tag == 'field' and 'start' in attrs and 'end' in attrs:
+                dword, start = divmod(int(attrs['start']), 32)
+                end = int(attrs['end']) - (dword * 32)
+
+                attrs['dword'] = str(dword)
+                attrs['bits'] = f"{end}:{start}"
+
+                attrs.pop('start', None)
+                attrs.pop('end', None)
+
+            elif elem.tag == 'group' and 'start' in attrs:
+                dword, offset_bits = divmod(int(attrs['start']), 32)
+
+                attrs['dword'] = str(dword)
+                if offset_bits:
+                    attrs['offset_bits'] = str(offset_bits)
+
+                attrs.pop('start', None)
+
+            for child in elem:
+                convert_elem(child)
+        convert_elem(self.et.getroot())
+
+    def write_file(self):
+        try:
+            old_genxml = GenXml(self.filename)
+            if self.is_equivalent_xml(old_genxml):
+                return
+        except Exception:
+            pass
+
+        b_io = io.BytesIO()
+        et.indent(self.et, space='  ')
+        self.et.write(b_io, encoding="utf-8", xml_declaration=True)
+        b_io.write(b'\n')
+
+        tmp = self.filename.with_suffix(f'{self.filename.suffix}.tmp')
+        tmp.write_bytes(b_io.getvalue())
+        tmp.replace(self.filename)
diff --git a/lib/genxml/util.py b/lib/genxml/util.py
new file mode 100644
index 000000000..81906b724
--- /dev/null
+++ b/lib/genxml/util.py
@@ -0,0 +1,39 @@
+#encoding=utf-8
+# SPDX-License-Identifier: MIT
+#
+# Copyright © 2020 Intel Corporation
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+#
+# 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.
+#
+
+# A few utility functions reused across genxml scripts
+
+import re
+
+alphanum_nono = re.compile(r'[ /\[\]()\-:.,=>#&*\'"+\\]+')
+def to_alphanum(name):
+    global alphanum_nono
+    return alphanum_nono.sub('', name)
+
+def safe_name(name):
+    name = to_alphanum(name)
+    if not name[0].isalpha():
+        name = '_' + name
+    return name
diff --git a/lib/genxml/xe2.xml b/lib/genxml/xe2.xml
new file mode 100644
index 000000000..6fe36a5b6
--- /dev/null
+++ b/lib/genxml/xe2.xml
@@ -0,0 +1,1969 @@
+<?xml version='1.0' encoding='utf-8'?>
+<genxml name="XE2" gen="20">
+  <import name="gen125.xml">
+    <exclude name="3DSTATE_CLEAR_PARAMS" />
+    <exclude name="CLEAR_COLOR" />
+    <exclude name="L3ALLOC" />
+  </import>
+  <enum name="PREF_SLM_ALLOCATION_SIZE">
+    <value name="SLM_ENCODES_0K" value="0" />
+    <value name="SLM_ENCODES_16K" value="1" />
+    <value name="SLM_ENCODES_32K" value="2" />
+    <value name="SLM_ENCODES_64K" value="3" />
+    <value name="SLM_ENCODES_96K" value="4" />
+    <value name="SLM_ENCODES_128K" value="5" />
+    <value name="SLM_ENCODES_160K" value="6" />
+    <value name="SLM_ENCODES_192K" value="7" />
+    <value name="SLM_ENCODES_224K" value="8" />
+    <value name="SLM_ENCODES_256K" value="9" />
+    <value name="SLM_ENCODES_384K" value="10" />
+  </enum>
+  <enum name="RESOURCE_BARRIER_STAGE" prefix="RESOURCE_BARRIER_STAGE">
+    <value name="None" value="0" />
+    <value name="TOP" value="1" />
+    <value name="Color" value="2" />
+    <value name="Gpgpu" value="4" />
+    <value name="Color and Compute" value="6" />
+    <value name="Geom" value="16" />
+    <value name="Geometry and Compute" value="20" />
+    <value name="Raster" value="32" />
+    <value name="Depth" value="64" />
+    <value name="Pixel" value="128" />
+  </enum>
+  <enum name="RESOURCE_BARRIER_TYPE" prefix="RESOURCE_BARRIER_TYPE">
+    <value name="Immediate" value="0" />
+    <value name="Signal" value="1" />
+    <value name="Wait" value="2" />
+    <value name="UAV" value="3" />
+  </enum>
+  <enum name="UNIFIED_COMPRESSION_FORMAT">
+    <value name="CMF_R8" value="0" />
+    <value name="CMF_R8_G8" value="1" />
+    <value name="CMF_R8_G8_B8_A8" value="2" />
+    <value name="CMF_R10_G10_B10_A2" value="3" />
+    <value name="CMF_R11_G11_B10" value="4" />
+    <value name="CMF_R16" value="5" />
+    <value name="CMF_R16_G16" value="6" />
+    <value name="CMF_R16_G16_B16_A16" value="7" />
+    <value name="CMF_R32" value="8" />
+    <value name="CMF_R32_G32" value="9" />
+    <value name="CMF_R32_G32_B32_A32" value="10" />
+    <value name="CMF_Y16_U16_Y16_V16" value="11" />
+    <value name="CMF_ML8" value="15" />
+  </enum>
+  <struct name="INTERFACE_DESCRIPTOR_DATA" length="8">
+    <field name="Kernel Start Pointer" dword="0" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="2" bits="7:7" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="2" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="2" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Single Program Flow" dword="2" bits="18:18" type="bool" />
+    <field name="Denorm Mode" dword="2" bits="19:19" type="uint">
+      <value name="Ftz" value="0" />
+      <value name="SetByKernel" value="1" />
+    </field>
+    <field name="Thread Preemption" dword="2" bits="20:20" type="bool" default="1" />
+    <field name="Sampler Count" dword="3" bits="4:2" type="uint">
+      <value name="No samplers used" value="0" />
+      <value name="Between 1 and 4 samplers used" value="1" />
+      <value name="Between 5 and 8 samplers used" value="2" />
+      <value name="Between 9 and 12 samplers used" value="3" />
+      <value name="Between 13 and 16 samplers used" value="4" />
+    </field>
+    <field name="Sampler State Pointer" dword="3" bits="31:5" type="offset" />
+    <field name="Binding Table Entry Count" dword="4" bits="4:0" type="uint" />
+    <field name="Binding Table Pointer" dword="4" bits="20:5" type="offset" />
+    <field name="Number of Threads in GPGPU Thread Group" dword="5" bits="9:0" type="uint" />
+    <field name="Thread group forward progress guarantee" dword="5" bits="13:13" type="bool" />
+    <field name="Shared Local Memory Size" dword="5" bits="20:16" type="uint">
+      <value name="Encodes 0K" value="0" />
+      <value name="Encodes 1K" value="1" />
+      <value name="Encodes 2K" value="2" />
+      <value name="Encodes 4K" value="3" />
+      <value name="Encodes 8K" value="4" />
+      <value name="Encodes 16K" value="5" />
+      <value name="Encodes 32K" value="6" />
+      <value name="Encodes 64K" value="7" />
+      <value name="Encodes 96K" value="10" />
+      <value name="Encodes 128K" value="11" />
+      <value name="Encodes 192K" value="12" />
+      <value name="Encodes 256K" value="13" />
+      <value name="Encodes 384K" value="14" />
+    </field>
+    <field name="Rounding Mode" dword="5" bits="23:22" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Thread Group Dispatch Size" dword="5" bits="27:26" type="uint">
+      <value name="TG size 8" value="0" />
+      <value name="TG size 4" value="1" />
+      <value name="TG size 2" value="2" />
+      <value name="TG size 1" value="3" />
+    </field>
+    <field name="Number Of Barriers" dword="5" bits="30:28" type="uint" prefix="BARRIER_SIZE">
+      <value name="NONE" value="0" />
+      <value name="B1" value="1" />
+      <value name="B2" value="2" />
+      <value name="B4" value="3" />
+      <value name="B8" value="4" />
+      <value name="B16" value="5" />
+      <value name="B24" value="6" />
+      <value name="B32" value="7" />
+    </field>
+    <field name="BTD Mode" dword="5" bits="31:31" type="uint" />
+    <field name="Preferred SLM Allocation Size" dword="7" bits="3:0" type="PREF_SLM_ALLOCATION_SIZE" />
+  </struct>
+  <struct name="POSTSYNC_DATA" length="5">
+    <field name="Operation" dword="0" bits="1:0" type="uint" default="0">
+      <value name="No Write" value="0" />
+      <value name="Write Immediate Data" value="1" />
+      <value name="Write Timestamp" value="3" />
+    </field>
+    <field name="HDC Pipeline Flush" dword="0" bits="2:2" type="bool" />
+    <field name="MOCS" dword="0" bits="10:4" type="uint" nonzero="true" />
+    <field name="System Memory Fence Request" dword="0" bits="11:11" type="bool" />
+    <field name="Dataport Subslice Cache Flush" dword="0" bits="12:12" type="bool" />
+    <field name="Destination Address" dword="1" bits="63:0" type="address" />
+    <field name="Immediate Data" dword="3" bits="63:0" type="uint" />
+  </struct>
+  <struct name="COMPUTE_WALKER_BODY" length="39">
+    <field name="Indirect Data Length" dword="1" bits="16:0" type="uint" />
+    <field name="L3 prefetch disable" dword="1" bits="17:17" type="bool" />
+    <field name="Partition Dispatch Parameter" dword="1" bits="29:18" type="uint" />
+    <field name="Partition Type" dword="1" bits="31:30" type="uint">
+      <value name="PartitionX" value="1" />
+      <value name="PartitionY" value="2" />
+      <value name="PartitionZ" value="3" />
+    </field>
+    <field name="Indirect Data Start Address" dword="2" bits="31:6" type="offset" />
+    <field name="Compute Dispatch All walker Enable" dword="3" bits="0:0" type="uint">
+      <value name="Disabled" value="0" />
+      <value name="Enabled" value="1" />
+    </field>
+    <field name="Dispatch Walk Order" dword="3" bits="6:5" type="uint">
+      <value name="Linear Walk" value="0" />
+      <value name="Y order walk" value="1" />
+    </field>
+    <field name="Message SIMD" dword="3" bits="18:17" type="uint">
+      <value name="SIMT16" value="1" />
+      <value name="SIMT32" value="2" />
+    </field>
+    <field name="Tile Layout" dword="3" bits="21:19" type="uint">
+      <value name="Linear" value="0" />
+      <value name="TileY 32bpe" value="1" />
+      <value name="TileY 64bpe" value="2" />
+      <value name="TileY 128bpe" value="3" />
+    </field>
+    <field name="Walk Order" dword="3" bits="24:22" type="uint">
+      <value name="Walk 012" value="0" />
+      <value name="Walk 021" value="1" />
+      <value name="Walk 102" value="2" />
+      <value name="Walk 120" value="3" />
+      <value name="Walk 201" value="4" />
+      <value name="Walk 210" value="5" />
+    </field>
+    <field name="Emit Inline Parameter" dword="3" bits="25:25" type="bool" />
+    <field name="Emit Local" dword="3" bits="28:26" type="uint">
+      <value name="Emit None" value="0" />
+      <value name="Emit X" value="1" />
+      <value name="Emit XY" value="3" />
+      <value name="Emit XYZ" value="7" />
+    </field>
+    <field name="Generate Local ID" dword="3" bits="29:29" type="bool" />
+    <field name="SIMD Size" dword="3" bits="31:30" type="uint">
+      <value name="SIMT16" value="1" />
+      <value name="SIMT32" value="2" />
+    </field>
+    <field name="Execution Mask" dword="4" bits="31:0" type="uint" />
+    <field name="Local X Maximum" dword="5" bits="9:0" type="uint" />
+    <field name="Local Y Maximum" dword="5" bits="19:10" type="uint" />
+    <field name="Local Z Maximum" dword="5" bits="29:20" type="uint" />
+    <field name="Thread Group ID X Dimension" dword="6" bits="31:0" type="uint" />
+    <field name="Thread Group ID Y Dimension" dword="7" bits="31:0" type="uint" />
+    <field name="Thread Group ID Z Dimension" dword="8" bits="31:0" type="uint" />
+    <field name="Thread Group ID Starting X" dword="9" bits="31:0" type="uint" />
+    <field name="Thread Group ID Starting Y" dword="10" bits="31:0" type="uint" />
+    <field name="Thread Group ID Starting Z" dword="11" bits="31:0" type="uint" />
+    <field name="Partition ID" dword="12" bits="31:0" type="uint" />
+    <field name="Partition Size" dword="13" bits="31:0" type="uint" />
+    <field name="Preempt X" dword="14" bits="31:0" type="uint" />
+    <field name="Preempt Y" dword="15" bits="31:0" type="uint" />
+    <field name="Preempt Z" dword="16" bits="31:0" type="uint" />
+    <field name="Walker ID" dword="17" bits="3:0" type="uint" />
+    <field name="Over dispatch TG count" dword="17" bits="23:8" type="uint" />
+    <field name="Interface Descriptor" dword="18" bits="255:0" type="INTERFACE_DESCRIPTOR_DATA" />
+    <field name="Post Sync" dword="26" bits="159:0" type="POSTSYNC_DATA" />
+    <group count="8" dword="31" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </struct>
+  <struct name="RENDER_SURFACE_STATE" length="16">
+    <field name="Cube Face Enable - Positive Z" dword="0" bits="0:0" type="bool" />
+    <field name="Cube Face Enable - Negative Z" dword="0" bits="1:1" type="bool" />
+    <field name="Cube Face Enable - Positive Y" dword="0" bits="2:2" type="bool" />
+    <field name="Cube Face Enable - Negative Y" dword="0" bits="3:3" type="bool" />
+    <field name="Cube Face Enable - Positive X" dword="0" bits="4:4" type="bool" />
+    <field name="Cube Face Enable - Negative X" dword="0" bits="5:5" type="bool" />
+    <field name="Media Boundary Pixel Mode" dword="0" bits="7:6" type="uint">
+      <value name="NORMAL_MODE" value="0" />
+      <value name="PROGRESSIVE_FRAME" value="2" />
+      <value name="INTERLACED_FRAME" value="3" />
+    </field>
+    <field name="Render Cache Read Write Mode" dword="0" bits="8:8" type="uint">
+      <value name="Write-Only Cache" value="0" />
+      <value name="Read-Write Cache" value="1" />
+    </field>
+    <field name="Enable Sampler Route to LSC" dword="0" bits="9:9" type="bool" />
+    <field name="Vertical Line Stride Offset" dword="0" bits="10:10" type="uint" />
+    <field name="Vertical Line Stride" dword="0" bits="11:11" type="uint" />
+    <field name="Tile Mode" dword="0" bits="13:12" type="uint">
+      <value name="LINEAR" value="0" />
+      <value name="TILE64" value="1" />
+      <value name="XMAJOR" value="2" />
+      <value name="TILE4" value="3" />
+    </field>
+    <field name="Surface Horizontal Alignment" dword="0" bits="15:14" type="uint">
+      <value name="HALIGN_16" value="0" />
+      <value name="HALIGN_32" value="1" />
+      <value name="HALIGN_64" value="2" />
+      <value name="HALIGN_128" value="3" />
+    </field>
+    <field name="Surface Vertical Alignment" dword="0" bits="17:16" type="uint">
+      <value name="VALIGN_4" value="1" />
+      <value name="VALIGN_8" value="2" />
+      <value name="VALIGN_16" value="3" />
+    </field>
+    <field name="Surface Format" dword="0" bits="26:18" type="uint" />
+    <field name="Surface Array" dword="0" bits="28:28" type="bool" />
+    <field name="Surface Type" dword="0" bits="31:29" type="STATE_SURFACE_TYPE" />
+    <field name="Surface QPitch" dword="1" bits="14:0" type="uint" />
+    <field name="Sample Tap Discard Disable" dword="1" bits="15:15" type="bool" />
+    <field name="Corner Texel Mode" dword="1" bits="18:18" type="bool" />
+    <field name="Base Mip Level" dword="1" bits="23:19" type="uint" />
+    <field name="MOCS" dword="1" bits="30:24" type="uint" nonzero="true" />
+    <field name="Width" dword="2" bits="13:0" type="uint" />
+    <field name="Height" dword="2" bits="29:16" type="uint" />
+    <field name="Depth Stencil Resource" dword="2" bits="31:31" type="bool" />
+    <field name="Surface Pitch" dword="3" bits="17:0" type="uint" />
+    <field name="Depth" dword="3" bits="31:21" type="uint" />
+    <field name="Multisample Position Palette Index" dword="4" bits="2:0" type="uint" />
+    <field name="Number of Multisamples" dword="4" bits="5:3" type="uint">
+      <value name="MULTISAMPLECOUNT_1" value="0" />
+      <value name="MULTISAMPLECOUNT_2" value="1" />
+      <value name="MULTISAMPLECOUNT_4" value="2" />
+      <value name="MULTISAMPLECOUNT_8" value="3" />
+      <value name="MULTISAMPLECOUNT_16" value="4" />
+    </field>
+    <field name="Multisampled Surface Storage Format" dword="4" bits="6:6" type="uint">
+      <value name="MSFMT_MSS" value="0" />
+      <value name="MSFMT_DEPTH_STENCIL" value="1" />
+    </field>
+    <field name="Render Target View Extent" dword="4" bits="17:7" type="uint" />
+    <field name="Minimum Array Element" dword="4" bits="28:18" type="uint" />
+    <field name="Render Target And Sample Unorm Rotation" dword="4" bits="30:29" type="uint">
+      <value name="0DEG" value="0" />
+      <value name="90DEG" value="1" />
+      <value name="180DEG" value="2" />
+      <value name="270DEG" value="3" />
+    </field>
+    <field name="MIP Count / LOD" dword="5" bits="3:0" type="uint" />
+    <field name="Surface Min LOD" dword="5" bits="7:4" type="uint" />
+    <field name="Mip Tail Start LOD" dword="5" bits="11:8" type="uint" />
+    <field name="L1 Cache Control" dword="5" bits="18:16" type="L1_CACHE_CONTROL" />
+    <field name="EWA Disable For Cube" dword="5" bits="20:20" type="bool" />
+    <field name="Y Offset" dword="5" bits="23:21" type="uint" />
+    <field name="X Offset" dword="5" bits="31:25" type="uint" />
+    <field name="Auxiliary Surface Mode" dword="6" bits="2:0" type="uint">
+      <value name="AUX_NONE" value="0" />
+      <value name="AUX_APPEND" value="1" />
+      <value name="AUX_MCS" value="2" />
+    </field>
+    <field name="Y Offset for U or UV Plane" dword="6" bits="13:0" type="uint" />
+    <field name="Auxiliary Surface Pitch" dword="6" bits="12:3" type="uint" />
+    <field name="YUV Interpolation Enable" dword="6" bits="15:15" type="bool" />
+    <field name="X Offset for U or UV Plane" dword="6" bits="29:16" type="uint" />
+    <field name="Auxiliary Surface QPitch" dword="6" bits="30:16" type="uint" />
+    <field name="Resource Min LOD" dword="7" bits="11:0" type="u4.8" />
+    <field name="Shader Channel Select Alpha" dword="7" bits="18:16" type="Shader Channel Select" />
+    <field name="Shader Channel Select Blue" dword="7" bits="21:19" type="Shader Channel Select" />
+    <field name="Shader Channel Select Green" dword="7" bits="24:22" type="Shader Channel Select" />
+    <field name="Shader Channel Select Red" dword="7" bits="27:25" type="Shader Channel Select" />
+    <field name="Surface Base Address" dword="8" bits="63:0" type="address" />
+    <field name="Mip Region Width In Log2" dword="10" bits="3:0" type="uint" />
+    <field name="Append Counter Address" dword="10" bits="63:2" type="address" />
+    <field name="Mip Region Height In Log2" dword="10" bits="7:4" type="uint" />
+    <field name="Procedural Texture" dword="10" bits="11:11" type="bool" />
+    <field name="Auxiliary Surface Base Address" dword="10" bits="63:12" type="address" />
+    <field name="Y Offset for V Plane" dword="11" bits="13:0" type="uint" />
+    <field name="X Offset for V Plane" dword="11" bits="29:16" type="uint" />
+    <field name="Compression Format" dword="12" bits="3:0" type="UNIFIED_COMPRESSION_FORMAT" />
+    <field name="Mip Region Depth In Log2" dword="12" bits="7:4" type="uint" />
+    <field name="Disallowlowqualityfiltering" dword="13" bits="31:31" type="bool" />
+  </struct>
+  <struct name="RESOURCE_BARRIER_BODY" length="4">
+    <field name="Wait Stage" dword="0" bits="11:0" type="RESOURCE_BARRIER_STAGE" />
+    <field name="Signal Stage" dword="0" bits="23:12" type="RESOURCE_BARRIER_STAGE" />
+    <field name="Barrier Type" dword="0" bits="31:30" type="RESOURCE_BARRIER_TYPE" />
+    <field name="L1 Dataport Cache Invalidate" dword="1" bits="21:21" type="bool" />
+    <field name="Depth Cache" dword="1" bits="22:22" type="bool" />
+    <field name="Color Cache" dword="1" bits="23:23" type="bool" />
+    <field name="L1 Dataport UAV Flush" dword="1" bits="24:24" type="bool" />
+    <field name="Texture (RO)" dword="1" bits="25:25" type="bool" />
+    <field name="State (RO)" dword="1" bits="26:26" type="bool" />
+    <field name="VF (RO)" dword="1" bits="27:27" type="bool" />
+    <field name="AMFS" dword="1" bits="28:28" type="bool" />
+    <field name="Constant Cache" dword="1" bits="29:29" type="bool" />
+    <field name="Barrier ID Address" dword="2" bits="63:3" type="address" />
+  </struct>
+  <instruction name="3DSTATE_3D_MODE" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="30" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Cross Slice Hashing Mode" dword="1" bits="1:0" type="uint">
+      <value name="Normal Mode" value="0" />
+      <value name="Disable" value="1" />
+      <value name="hashing 32x32" value="3" />
+    </field>
+    <field name="3D Scoreboard Hashing Mode" dword="1" bits="4:4" type="bool" />
+    <field name="Subslice Hashing Table Enable" dword="1" bits="5:5" type="bool" />
+    <field name="Slice Hashing Table Enable" dword="1" bits="6:6" type="bool" />
+    <field name="DX10 OGL Border Mode for YCRCB" dword="1" bits="10:10" type="bool" />
+    <field name="Enable OOO reads in RCPB" dword="1" bits="11:11" type="bool" />
+    <field name="Cross Slice Hashing Mode Mask" dword="1" bits="17:16" type="int" />
+    <field name="3D Scoreboard Hashing Mode Mask" dword="1" bits="20:20" type="bool" />
+    <field name="Subslice Hashing Table Enable Mask" dword="1" bits="21:21" type="bool" />
+    <field name="Slice Hashing Table Enable Mask" dword="1" bits="22:22" type="bool" />
+    <field name="DX10 OGL Border Mode for YCRCB Mask" dword="1" bits="26:26" type="bool" />
+    <field name="Enable OOO reads in RCPB Mask" dword="1" bits="27:27" type="bool" />
+    <field name="AMFS MOCS" dword="2" bits="6:0" type="uint" />
+    <field name="State Cache redirect to CS section enable" dword="2" bits="9:9" type="bool" />
+    <field name="AMFS MOCS Mask" dword="2" bits="22:16" type="uint" />
+    <field name="State Cache redirect to CS section enable Mask" dword="2" bits="25:25" type="bool" />
+    <field name="RCC RHWO Optimization Disable" dword="3" bits="15:15" type="bool" />
+    <field name="RCC RHWO Optimization Disable Mask" dword="3" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_BTD" bias="2" length="6" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="6" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Dispatch Timeout Counter" dword="1" bits="2:0" type="uint">
+      <value name="64 clocks" value="0" />
+      <value name="128 clocks" value="1" />
+      <value name="192 clocks" value="2" />
+      <value name="256 clocks" value="3" />
+      <value name="512 clocks" value="4" />
+      <value name="1024 clocks" value="5" />
+      <value name="2048 clocks" value="6" />
+      <value name="4096 clocks" value="7" />
+    </field>
+    <field name="Controls the maximum number of outstanding Ray Queries per SS" dword="1" bits="8:7" type="uint" prefix="RAYS_QUERIES_OUTSTANDING">
+      <value name="128" value="0" />
+      <value name="256" value="1" />
+      <value name="512" value="2" />
+      <value name="1024" value="3" />
+    </field>
+    <field name="BTD Mid thread preemption" dword="1" bits="31:31" type="bool" default="1" />
+    <field name="Per DSS Memory Backed Buffer Size" dword="2" bits="2:0" type="uint" default="6">
+      <value name="2KB" value="0" />
+      <value name="4KB" value="1" />
+      <value name="8KB" value="2" />
+      <value name="16KB" value="3" />
+      <value name="32KB" value="4" />
+      <value name="64KB" value="5" />
+      <value name="128KB" value="6" />
+    </field>
+    <field name="Memory Backed Buffer Base Pointer" dword="2" bits="63:10" type="address" />
+    <field name="Scratch Space Buffer" dword="4" bits="31:10" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_CLIP" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="18" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="1" bits="7:0" type="uint" />
+    <field name="Statistics Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Force Clip Mode" dword="1" bits="16:16" type="bool" />
+    <field name="Force User Clip Distance Clip Test Enable Bitmask" dword="1" bits="17:17" type="bool" />
+    <field name="Early Cull Enable" dword="1" bits="18:18" type="bool" />
+    <field name="Vertex Sub Pixel Precision Select" dword="1" bits="19:19" type="uint">
+      <value name="8 Bit" value="0" />
+      <value name="4 Bit" value="1" />
+    </field>
+    <field name="Force User Clip Distance Cull Test Enable Bitmask" dword="1" bits="20:20" type="bool" />
+    <field name="Triangle Fan Provoking Vertex Select" dword="2" bits="1:0" type="uint" />
+    <field name="Line Strip/List Provoking Vertex Select" dword="2" bits="3:2" type="uint" />
+    <field name="Triangle Strip/List Provoking Vertex Select" dword="2" bits="5:4" type="uint" />
+    <field name="Triangle Strip Odd Provoking Vertex Select" dword="2" bits="7:6" type="uint" />
+    <field name="Non-Perspective Barycentric Enable" dword="2" bits="8:8" type="bool" />
+    <field name="Perspective Divide Disable" dword="2" bits="9:9" type="bool" />
+    <field name="Clip Mode" dword="2" bits="15:13" type="uint">
+      <value name="CLIPMODE_NORMAL" value="0" />
+      <value name="CLIPMODE_REJECT_ALL" value="3" />
+      <value name="CLIPMODE_ACCEPT_ALL" value="4" />
+    </field>
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="2" bits="23:16" type="uint" />
+    <field name="Guardband Clip Test Enable" dword="2" bits="26:26" type="bool" />
+    <field name="Viewport XY Clip Test Enable" dword="2" bits="28:28" type="bool" />
+    <field name="API Mode" dword="2" bits="30:30" type="uint">
+      <value name="APIMODE_OGL" value="0" />
+      <value name="APIMODE_D3D" value="1" />
+    </field>
+    <field name="Clip Enable" dword="2" bits="31:31" type="bool" />
+    <field name="Maximum VP Index" dword="3" bits="3:0" type="uint" />
+    <field name="Force Zero RTA Index Enable" dword="3" bits="5:5" type="bool" />
+    <field name="Maximum Point Width" dword="3" bits="16:6" type="u8.3" />
+    <field name="Minimum Point Width" dword="3" bits="27:17" type="u8.3" />
+  </instruction>
+  <instruction name="3DSTATE_CPSIZE_CONTROL_BUFFER" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="131" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="Surface Type" dword="1" bits="31:29" type="uint" />
+    <field name="Surface Base Address" dword="2" bits="63:0" type="address" />
+    <field name="Width" dword="4" bits="14:1" type="uint" />
+    <field name="Height" dword="4" bits="30:17" type="uint" />
+    <field name="MOCS" dword="5" bits="6:0" type="uint" />
+    <field name="Minimum Array Element" dword="5" bits="18:8" type="uint" />
+    <field name="Depth" dword="5" bits="30:20" type="uint" />
+    <field name="Compression Format" dword="6" bits="3:0" type="UNIFIED_COMPRESSION_FORMAT" />
+    <field name="Mip Tail Start LOD" dword="6" bits="29:26" type="uint" />
+    <field name="Tiled Mode" dword="6" bits="31:30" type="uint">
+      <value name="TILE64" value="1" />
+      <value name="TILE4" value="3" />
+    </field>
+    <field name="Surface QPitch" dword="7" bits="14:0" type="uint" />
+    <field name="Surf LOD" dword="7" bits="19:16" type="uint" />
+    <field name="Render Target View Extent" dword="7" bits="31:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_DEPTH_BUFFER" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="5" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="17:0" type="uint" />
+    <field name="Hierarchical Depth Buffer Enable" dword="1" bits="22:22" type="bool" />
+    <field name="Corner Texel Mode" dword="1" bits="23:23" type="bool" />
+    <field name="Surface Format" dword="1" bits="26:24" type="uint">
+      <value name="D32_FLOAT" value="1" />
+      <value name="D24_UNORM_X8_UINT" value="3" />
+      <value name="D16_UNORM" value="5" />
+    </field>
+    <field name="Null Page Coherency Enable" dword="1" bits="27:27" type="bool" />
+    <field name="Depth Write Enable" dword="1" bits="28:28" type="bool" />
+    <field name="Surface Type" dword="1" bits="31:29" type="uint">
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface Base Address" dword="2" bits="63:0" type="address" />
+    <field name="Width" dword="4" bits="14:1" type="uint" />
+    <field name="Height" dword="4" bits="30:17" type="uint" />
+    <field name="MOCS" dword="5" bits="6:0" type="uint" nonzero="true" />
+    <field name="Minimum Array Element" dword="5" bits="18:8" type="uint" />
+    <field name="Depth" dword="5" bits="30:20" type="uint" />
+    <field name="Render Compression Format" dword="6" bits="3:0" type="UNIFIED_COMPRESSION_FORMAT" />
+    <field name="Mip Tail Start LOD" dword="6" bits="29:26" type="uint" />
+    <field name="Tiled Mode" dword="6" bits="31:30" type="uint">
+      <value name="TILE64" value="1" />
+      <value name="TILE4" value="3" />
+    </field>
+    <field name="Surface QPitch" dword="7" bits="14:0" type="uint" />
+    <field name="LOD" dword="7" bits="19:16" type="uint" />
+    <field name="Render Target View Extent" dword="7" bits="31:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_DRAWING_RECTANGLE_FAST" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="Core Mode Select" dword="0" bits="15:14" type="uint">
+      <value name="Legacy" value="0" />
+      <value name="Core 0 Enabled" value="1" />
+      <value name="Core 1 Enabled" value="2" />
+    </field>
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Clipped Drawing Rectangle X Min" dword="1" bits="15:0" type="uint" />
+    <field name="Clipped Drawing Rectangle Y Min" dword="1" bits="31:16" type="uint" />
+    <field name="Clipped Drawing Rectangle X Max" dword="2" bits="15:0" type="uint" />
+    <field name="Clipped Drawing Rectangle Y Max" dword="2" bits="31:16" type="uint" />
+    <field name="Drawing Rectangle Origin X" dword="3" bits="15:0" type="int" />
+    <field name="Drawing Rectangle Origin Y" dword="3" bits="31:16" type="int" />
+  </instruction>
+  <instruction name="3DSTATE_GS" bias="2" length="10" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="8" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="17" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Expected Vertex Count" dword="3" bits="5:0" type="uint" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="3" bits="11:11" type="bool" />
+    <field name="Accesses UAV" dword="3" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="Normal" value="0" />
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="uint">
+      <value name="Dmask" value="0" />
+    </field>
+    <field name="Single Program Flow" dword="3" bits="31:31" type="bool" />
+    <field name="Scratch Space Buffer" dword="4" bits="31:10" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="6" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="6" bits="9:4" type="uint" />
+    <field name="Include Vertex Handles" dword="6" bits="10:10" type="bool" />
+    <field name="Vertex URB Entry Read Length" dword="6" bits="16:11" type="uint" />
+    <field name="Output Topology" dword="6" bits="22:17" type="3D_Prim_Topo_Type" />
+    <field name="Output Vertex Size" dword="6" bits="28:23" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data [5:4]" dword="6" bits="30:29" type="uint" />
+    <field name="Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Discard Adjacency" dword="7" bits="1:1" type="bool" />
+    <field name="Reorder Mode" dword="7" bits="2:2" type="uint">
+      <value name="LEADING" value="0" />
+      <value name="TRAILING" value="1" />
+    </field>
+    <field name="Hint" dword="7" bits="3:3" type="bool" />
+    <field name="Include Primitive ID" dword="7" bits="4:4" type="bool" />
+    <field name="Invocations Increment Value" dword="7" bits="9:5" type="uint" />
+    <field name="Statistics Enable" dword="7" bits="10:10" type="bool" />
+    <field name="Default Stream Id" dword="7" bits="14:13" type="uint" />
+    <field name="Instance Control" dword="7" bits="19:15" type="uint" />
+    <field name="Control Data Header Size" dword="7" bits="23:20" type="uint" />
+    <field name="Maximum Number of Threads" dword="8" bits="8:0" type="uint" />
+    <field name="Static Output Vertex Count" dword="8" bits="26:16" type="uint" />
+    <field name="Static Output" dword="8" bits="30:30" type="bool" />
+    <field name="Control Data Format" dword="8" bits="31:31" type="uint">
+      <value name="CUT" value="0" />
+      <value name="SID" value="1" />
+    </field>
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="9" bits="7:0" type="uint" />
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="9" bits="15:8" type="uint" />
+    <field name="Vertex URB Entry Output Length" dword="9" bits="20:16" type="uint" />
+    <field name="Vertex URB Entry Output Read Offset" dword="9" bits="26:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_HS" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="27" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Patch Count Threshold" dword="1" bits="3:0" type="uint" />
+    <field name="Software Exception Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="1" bits="17:17" type="uint">
+      <value name="Normal" value="0" />
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="1" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Instance Count" dword="2" bits="4:0" type="uint" />
+    <field name="Maximum Number of Threads" dword="2" bits="16:8" type="uint" />
+    <field name="Statistics Enable" dword="2" bits="29:29" type="bool" />
+    <field name="Enable" dword="2" bits="31:31" type="bool" />
+    <field name="Kernel Start Pointer" dword="3" bits="63:6" type="offset" />
+    <field name="Scratch Space Buffer" dword="5" bits="31:10" type="uint" />
+    <field name="Include Primitive ID" dword="7" bits="0:0" type="bool" />
+    <field name="Vertex URB Entry Read Offset" dword="7" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="7" bits="16:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="7" bits="23:19" type="uint" />
+    <field name="Include Vertex Handles" dword="7" bits="24:24" type="bool" />
+    <field name="Accesses UAV" dword="7" bits="25:25" type="bool" />
+    <field name="Vector Mask Enable" dword="7" bits="26:26" type="uint">
+      <value name="Dmask" value="0" />
+    </field>
+    <field name="Single Program Flow" dword="7" bits="27:27" type="bool" />
+    <field name="Dispatch GRF Start Register For URB Data [5]" dword="7" bits="28:28" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_MESH_CONTROL" bias="2" length="3" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="119" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Maximum Number of ThreadGroups" dword="1" bits="8:0" type="uint" />
+    <field name="VP and RTA Index Autostrip Enable" dword="1" bits="27:27" type="bool" />
+    <field name="Thread Dispatch Priority" dword="1" bits="28:28" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Fused EU Dispatch" dword="1" bits="29:29" type="bool" />
+    <field name="Statistics Enable" dword="1" bits="30:30" type="bool" />
+    <field name="MeshShader Enable" dword="1" bits="31:31" type="uint" />
+    <field name="Scratch Space Buffer" dword="2" bits="31:10" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_PS" bias="2" length="12" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="10" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="32" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel 0 Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Kernel[0] : SIMD Width" dword="1" bits="1:1" type="uint" prefix="PS">
+      <value name="SIMD16" value="0" />
+      <value name="SIMD32" value="1" />
+    </field>
+    <field name="Kernel Start Pointer 0" dword="1" bits="63:6" type="offset" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="3" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Rounding Mode" dword="3" bits="15:14" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="Normal" value="0" />
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Single Precision Denormal Mode" dword="3" bits="26:26" type="uint">
+      <value name="Flushed to Zero" value="0" />
+      <value name="Retained" value="1" />
+    </field>
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="uint">
+      <value name="Dmask" value="0" />
+      <value name="Vmask" value="1" />
+    </field>
+    <field name="Single Program Flow" dword="3" bits="31:31" type="uint">
+      <value name="Multiple" value="0" />
+      <value name="Single" value="1" />
+    </field>
+    <field name="Scratch Space Buffer" dword="4" bits="31:10" type="uint" />
+    <field name="Position XY Offset Select" dword="6" bits="4:3" type="uint">
+      <value name="POSOFFSET_NONE" value="0" />
+      <value name="POSOFFSET_CENTROID" value="2" />
+      <value name="POSOFFSET_SAMPLE" value="3" />
+    </field>
+    <field name="Render Target Resolve Type" dword="6" bits="7:6" type="uint">
+      <value name="RESOLVE_DISABLED" value="0" />
+    </field>
+    <field name="Render Target Fast Clear Enable" dword="6" bits="8:8" type="bool" />
+    <field name="Overlapping Subspans Enable" dword="6" bits="9:9" type="bool" />
+    <field name="3D Scoreboard Address Size select" dword="6" bits="10:10" type="uint">
+      <value name="2x2" value="0" />
+      <value name="4x2" value="1" />
+    </field>
+    <field name="Clear/Resolve BTI for Render Target" dword="6" bits="19:12" type="uint" />
+    <field name="Pixel Scoreboard Disable" dword="6" bits="21:21" type="bool" />
+    <field name="Maximum Number of Threads Per PSD" dword="6" bits="31:23" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 1" dword="7" bits="15:8" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 0" dword="7" bits="23:16" type="uint" />
+    <field name="Kernel[0] : Poly Packing Policy" dword="7" bits="26:24" type="uint">
+      <value name="POLY_PACK4_DYNAMIC" value="0" />
+      <value name="POLY_PACK8_DYNAMIC" value="1" />
+      <value name="POLY_PACK16_DYNAMIC" value="2" />
+      <value name="POLY_PACK16_FIXED" value="3" />
+      <value name="POLY_PACK8_FIXED" value="4" />
+    </field>
+    <field name="Kernel[0] : Maximum Polys per Thread" dword="7" bits="29:27" type="uint" />
+    <field name="Kernel 1 Selection Priority" dword="7" bits="31:31" type="uint">
+      <value name="PRI_SIMD" value="0" />
+      <value name="PRI_POLY" value="1" />
+    </field>
+    <field name="Kernel 1 Enable" dword="8" bits="0:0" type="bool" />
+    <field name="Kernel[1] : SIMD Width" dword="8" bits="1:1" type="uint" prefix="PS">
+      <value name="SIMD16" value="0" />
+      <value name="SIMD32" value="1" />
+    </field>
+    <field name="Kernel Start Pointer 1" dword="8" bits="63:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_PS_EXTRA" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="79" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Input Coverage Mask State" dword="1" bits="1:0" type="uint" prefix="ICMS">
+      <value name="NONE" value="0" />
+      <value name="NORMAL" value="1" />
+      <value name="INNER_CONSERVATIVE" value="2" />
+      <value name="DEPTH_COVERAGE" value="3" />
+    </field>
+    <field name="Pixel Shader Has UAV" dword="1" bits="2:2" type="bool" />
+    <field name="Pixel Shader Is Per Coarse Pixel" dword="1" bits="4:4" type="bool" />
+    <field name="Pixel Shader Computes Stencil" dword="1" bits="5:5" type="bool" />
+    <field name="Pixel Shader Is Per Sample" dword="1" bits="6:6" type="bool" />
+    <field name="Pixel Shader Disables Alpha To Coverage" dword="1" bits="7:7" type="bool" />
+    <field name="Simple PS Hint" dword="1" bits="9:9" type="bool" />
+    <field name="Pixel Shader Requires Centroid Offsets" dword="1" bits="16:16" type="bool" />
+    <field name="Enable PS Dependency On CPsize Change" dword="1" bits="17:17" type="bool" />
+    <field name="Pixel Shader Requires Subpixel Sample Offsets" dword="1" bits="18:18" type="bool" />
+    <field name="Pixel Shader Requires Non-Perspective Bary Plane Coefficients" dword="1" bits="19:19" type="bool" />
+    <field name="Pixel Shader Requires Perspective Bary Plane Coefficients" dword="1" bits="20:20" type="bool" />
+    <field name="Pixel Shader Requires Source Depth and/or W Plane Coefficients" dword="1" bits="21:21" type="bool" />
+    <field name="Pixel Shader Requires Requested Coarse Pixel Shading Size" dword="1" bits="22:22" type="bool" />
+    <field name="Pixel Shader Uses Source W" dword="1" bits="23:23" type="bool" />
+    <field name="Pixel Shader Uses Source Depth" dword="1" bits="24:24" type="bool" />
+    <field name="Force Computed Depth" dword="1" bits="25:25" type="bool" />
+    <field name="Pixel Shader Computed Depth Mode" dword="1" bits="27:26" type="uint">
+      <value name="PSCDEPTH_OFF" value="0" />
+      <value name="PSCDEPTH_ON" value="1" />
+      <value name="PSCDEPTH_ON_GE" value="2" />
+      <value name="PSCDEPTH_ON_LE" value="3" />
+    </field>
+    <field name="Pixel Shader Kills Pixel" dword="1" bits="28:28" type="bool" />
+    <field name="oMask Present to Render Target" dword="1" bits="29:29" type="bool" />
+    <field name="Pixel Shader Does not write to RT" dword="1" bits="30:30" type="mbz" />
+    <field name="Pixel Shader Valid" dword="1" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_RASTER" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="80" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Viewport Z Near Clip Test Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Scissor Rectangle Enable" dword="1" bits="1:1" type="bool" />
+    <field name="Antialiasing Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Back Face Fill Mode" dword="1" bits="4:3" type="uint" prefix="FILL_MODE">
+      <value name="SOLID" value="0" />
+      <value name="WIREFRAME" value="1" />
+      <value name="POINT" value="2" />
+    </field>
+    <field name="Front Face Fill Mode" dword="1" bits="6:5" type="uint" prefix="FILL_MODE">
+      <value name="SOLID" value="0" />
+      <value name="WIREFRAME" value="1" />
+      <value name="POINT" value="2" />
+    </field>
+    <field name="Global Depth Offset Enable Point" dword="1" bits="7:7" type="bool" />
+    <field name="Global Depth Offset Enable Wireframe" dword="1" bits="8:8" type="bool" />
+    <field name="Global Depth Offset Enable Solid" dword="1" bits="9:9" type="bool" />
+    <field name="DX Multisample Rasterization Mode" dword="1" bits="11:10" type="uint">
+      <value name="MSRASTMODE_ OFF_PIXEL" value="0" />
+      <value name="MSRASTMODE_ OFF_PATTERN" value="1" />
+      <value name="MSRASTMODE_ ON_PIXEL" value="2" />
+      <value name="MSRASTMODE_ ON_PATTERN" value="3" />
+    </field>
+    <field name="DX Multisample Rasterization Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Smooth Point Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Force Multisampling" dword="1" bits="14:14" type="uint" />
+    <field name="Cull Mode" dword="1" bits="17:16" type="uint" prefix="CULLMODE">
+      <value name="BOTH" value="0" />
+      <value name="NONE" value="1" />
+      <value name="FRONT" value="2" />
+      <value name="BACK" value="3" />
+    </field>
+    <field name="Forced Sample Count" dword="1" bits="20:18" type="uint" prefix="FSC">
+      <value name="NUMRASTSAMPLES_0" value="0" />
+      <value name="NUMRASTSAMPLES_1" value="1" />
+      <value name="NUMRASTSAMPLES_2" value="2" />
+      <value name="NUMRASTSAMPLES_4" value="3" />
+      <value name="NUMRASTSAMPLES_8" value="4" />
+      <value name="NUMRASTSAMPLES_16" value="5" />
+    </field>
+    <field name="Front Winding" dword="1" bits="21:21" type="uint">
+      <value name="Clockwise" value="0" />
+      <value name="Counter Clockwise" value="1" />
+    </field>
+    <field name="API Mode" dword="1" bits="23:22" type="uint">
+      <value name="DX9/OGL" value="0" />
+      <value name="DX10.0" value="1" />
+      <value name="DX10.1+" value="2" />
+    </field>
+    <field name="Conservative Rasterization Enable" dword="1" bits="24:24" type="bool" />
+    <field name="Viewport Z Far Clip Test Enable" dword="1" bits="26:26" type="bool" />
+    <field name="Legacy Bary Assignment Disable=" dword="1" bits="27:27" type="bool" />
+    <field name="Global Depth Offset Constant" dword="2" bits="31:0" type="float" />
+    <field name="Global Depth Offset Scale" dword="3" bits="31:0" type="float" />
+    <field name="Global Depth Offset Clamp" dword="4" bits="31:0" type="float" />
+  </instruction>
+  <instruction name="3DSTATE_SBE" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="31" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Primitive ID Override Attribute Select" dword="1" bits="4:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="1" bits="10:5" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="1" bits="15:11" type="uint" />
+    <field name="Primitive ID Override Component X" dword="1" bits="16:16" type="bool" />
+    <field name="Primitive ID Override Component Y" dword="1" bits="17:17" type="bool" />
+    <field name="Primitive ID Override Component Z" dword="1" bits="18:18" type="bool" />
+    <field name="Primitive ID Override Component W" dword="1" bits="19:19" type="bool" />
+    <field name="Point Sprite Texture Coordinate Origin" dword="1" bits="20:20" type="uint">
+      <value name="UPPERLEFT" value="0" />
+      <value name="LOWERLEFT" value="1" />
+    </field>
+    <field name="Attribute Swizzle Enable" dword="1" bits="21:21" type="bool" />
+    <field name="Number of SF Output Attributes" dword="1" bits="27:22" type="uint" />
+    <field name="Force Vertex URB Entry Read Offset" dword="1" bits="28:28" type="bool" />
+    <field name="Force Vertex URB Entry Read Length" dword="1" bits="29:29" type="bool" />
+    <field name="Vertex Attributes Bypass" dword="1" bits="31:31" type="bool" />
+    <field name="Point Sprite Texture Coordinate Enable" dword="2" bits="31:0" type="uint" />
+    <field name="Constant Interpolation Enable" dword="3" bits="31:0" type="uint" />
+    <group count="32" dword="4" size="2">
+      <field name="Attribute Active Component Format" dword="0" bits="1:0" type="uint" prefix="ACTIVE_COMPONENT">
+        <value name="DISABLED" value="0" />
+        <value name="XY" value="1" />
+        <value name="XYZ" value="2" />
+        <value name="XYZW" value="3" />
+      </field>
+    </group>
+  </instruction>
+  <instruction name="3DSTATE_SF" bias="2" length="4" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="2" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="19" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Viewport Transform Enable" dword="1" bits="1:1" type="bool" />
+    <field name="Statistics Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Legacy Global Depth Bias Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Line Width" dword="1" bits="29:12" type="u11.7" />
+    <field name="Line End Cap Antialiasing Region Width" dword="2" bits="17:16" type="uint">
+      <value name="0.5 pixels" value="0" />
+      <value name="1.0 pixels" value="1" />
+      <value name="2.0 pixels" value="2" />
+      <value name="4.0 pixels" value="3" />
+    </field>
+    <field name="Deref Block Size" dword="2" bits="30:29" type="uint">
+      <value name="Block Deref Size 32" value="0" />
+      <value name="Per Poly Deref Mode" value="1" />
+      <value name="Block Deref Size 8" value="2" />
+      <value name="Mesh Shader EODB" value="3" />
+    </field>
+    <field name="Point Width" dword="3" bits="10:0" type="u8.3" />
+    <field name="Point Width Source" dword="3" bits="11:11" type="uint">
+      <value name="Vertex" value="0" />
+      <value name="State" value="1" />
+    </field>
+    <field name="Vertex Sub Pixel Precision Select" dword="3" bits="12:12" type="uint">
+      <value name="8 Bit" value="0" />
+      <value name="4 Bit" value="1" />
+    </field>
+    <field name="Smooth Point Enable" dword="3" bits="13:13" type="bool" />
+    <field name="AA Line Distance Mode" dword="3" bits="14:14" type="uint">
+      <value name="AALINEDISTANCE_TRUE" value="1" />
+    </field>
+    <field name="Triangle Strip Odd Provoking Vertex Select" dword="3" bits="24:23" type="uint" />
+    <field name="Triangle Fan Provoking Vertex Select" dword="3" bits="26:25" type="uint" />
+    <field name="Line Strip/List Provoking Vertex Select" dword="3" bits="28:27" type="uint" />
+    <field name="Triangle Strip/List Provoking Vertex Select" dword="3" bits="30:29" type="uint" />
+    <field name="Last Pixel Enable" dword="3" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_STENCIL_BUFFER" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="6" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Surface Pitch" dword="1" bits="16:0" type="uint" />
+    <field name="Corner Texel Mode" dword="1" bits="23:23" type="bool" />
+    <field name="Null Page Coherency Enable" dword="1" bits="27:27" type="bool" />
+    <field name="Stencil Write Enable" dword="1" bits="28:28" type="bool" />
+    <field name="Surface Type" dword="1" bits="31:29" type="uint">
+      <value name="SURFTYPE_2D" value="1" />
+      <value name="SURFTYPE_CUBE" value="3" />
+      <value name="SURFTYPE_NULL" value="7" />
+    </field>
+    <field name="Surface Base Address" dword="2" bits="63:0" type="address" />
+    <field name="Width" dword="4" bits="14:1" type="uint" />
+    <field name="Height" dword="4" bits="30:17" type="uint" />
+    <field name="MOCS" dword="5" bits="6:0" type="uint" nonzero="true" />
+    <field name="Minimum Array Element" dword="5" bits="18:8" type="uint" />
+    <field name="Depth" dword="5" bits="30:20" type="uint" />
+    <field name="Compression Format" dword="6" bits="3:0" type="UNIFIED_COMPRESSION_FORMAT" />
+    <field name="Mip Tail Start LOD" dword="6" bits="29:26" type="uint" />
+    <field name="Tiled Mode" dword="6" bits="31:30" type="uint">
+      <value name="TILE64" value="1" />
+      <value name="TILE4" value="3" />
+    </field>
+    <field name="Surface QPitch" dword="7" bits="14:0" type="uint" />
+    <field name="Surf LOD" dword="7" bits="19:16" type="uint" />
+    <field name="Render Target View Extent" dword="7" bits="31:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_TE" bias="2" length="5" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="28" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="TE Enable" dword="1" bits="0:0" type="bool" />
+    <field name="TE Mode" dword="1" bits="2:1" type="uint">
+      <value name="HW_TESS" value="0" />
+      <value name="FORCE_MIN" value="3" />
+    </field>
+    <field name="TE Domain" dword="1" bits="5:4" type="uint">
+      <value name="QUAD" value="0" />
+      <value name="TRI" value="1" />
+      <value name="ISOLINE" value="2" />
+    </field>
+    <field name="Output Topology" dword="1" bits="9:8" type="uint" prefix="OUTPUT">
+      <value name="POINT" value="0" />
+      <value name="LINE" value="1" />
+      <value name="TRI_CW" value="2" />
+      <value name="TRI_CCW" value="3" />
+    </field>
+    <field name="Number Of Regions Per Patch" dword="1" bits="11:10" type="uint" />
+    <field name="Partitioning" dword="1" bits="13:12" type="uint">
+      <value name="INTEGER" value="0" />
+      <value name="ODD_FRACTIONAL" value="1" />
+      <value name="EVEN_FRACTIONAL" value="2" />
+      <value name="POW2" value="3" />
+    </field>
+    <field name="Tessellation Distribution Mode" dword="1" bits="15:14" type="uint">
+      <value name="TEDMODE_OFF" value="0" />
+      <value name="TEDMODE_RR_STRICT" value="1" />
+      <value name="TEDMODE_RR_FREE" value="2" />
+    </field>
+    <field name="Tessellation Distribution Level" dword="1" bits="18:17" type="uint">
+      <value name="TEDLEVEL_PATCH" value="0" />
+      <value name="TEDLEVEL_REGION" value="1" />
+    </field>
+    <field name="Tessellation Scale Factor Enable" dword="1" bits="19:19" type="bool" />
+    <field name="Tessellation Factor Format" dword="1" bits="20:20" type="uint">
+      <value name="FLOAT32" value="0" />
+      <value name="FLOAT16" value="1" />
+    </field>
+    <field name="Patch Header Layout" dword="1" bits="23:22" type="uint">
+      <value name="LEGACY" value="0" />
+      <value name="REVERSED" value="2" />
+      <value name="REVERSED_TRI_INSIDE_SEPARATE" value="3" />
+    </field>
+    <field name="Small Patch Threshold" dword="1" bits="25:24" type="uint" prefix="SPT">
+      <value name="8_TRIANGLES" value="0" />
+      <value name="16_TRIANGLES" value="1" />
+      <value name="32_TRIANGLES" value="2" />
+      <value name="64_TRIANGLES" value="3" />
+    </field>
+    <field name="Target Block Size" dword="1" bits="29:26" type="uint">
+      <value name="64_TRIANGLES" value="0" />
+      <value name="96_TRIANGLES" value="1" />
+      <value name="128_TRIANGLES" value="2" />
+      <value name="192_TRIANGLES" value="3" />
+      <value name="256_TRIANGLES" value="4" />
+      <value name="384_TRIANGLES" value="5" />
+      <value name="512_TRIANGLES" value="6" />
+      <value name="768_TRIANGLES" value="7" />
+      <value name="1K_TRIANGLES" value="8" />
+      <value name="1.5K_TRIANGLES" value="9" />
+      <value name="2K_TRIANGLES" value="10" />
+      <value name="3K_TRIANGLES" value="11" />
+      <value name="4K_TRIANGLES" value="12" />
+      <value name="6K_TRIANGLES" value="13" />
+      <value name="8K_TRIANGLES" value="14" />
+      <value name="12K_TRIANGLES" value="15" />
+    </field>
+    <field name="Local BOP Accumulator Threshold" dword="1" bits="31:30" type="uint">
+      <value name="MULTIPLIER_0" value="0" />
+      <value name="MULTIPLIER_1" value="1" />
+      <value name="MULTIPLIER_2" value="2" />
+      <value name="MULTIPLIER_4" value="3" />
+    </field>
+    <field name="Maximum Tessellation Factor Odd" dword="2" bits="31:0" type="float" />
+    <field name="Maximum Tessellation Factor Not Odd" dword="3" bits="31:0" type="float" />
+    <field name="Tessellation Scale Factor" dword="4" bits="31:0" type="float" />
+  </instruction>
+  <instruction name="3DSTATE_VS" bias="2" length="9" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="7" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="16" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Accesses UAV" dword="3" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="Normal" value="0" />
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="uint">
+      <value name="Dmask" value="0" />
+    </field>
+    <field name="Scratch Space Buffer" dword="4" bits="31:10" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="6" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="6" bits="16:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="6" bits="24:20" type="uint" />
+    <field name="Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Vertex Cache Disable" dword="7" bits="1:1" type="bool" />
+    <field name="SIMD8 Single Instance Dispatch Enable" dword="7" bits="9:9" type="bool" />
+    <field name="Statistics Enable" dword="7" bits="10:10" type="bool" />
+    <field name="Maximum Number of Threads" dword="7" bits="31:22" type="uint" />
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="8" bits="7:0" type="uint" />
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="8" bits="15:8" type="uint" />
+    <field name="Vertex URB Entry Output Length" dword="8" bits="20:16" type="uint" />
+    <field name="Vertex URB Entry Output Read Offset" dword="8" bits="26:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_WM_HZ_OP" bias="2" length="6" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="82" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Depth Buffer Partial Resolve Enable" dword="1" bits="9:9" type="bool" />
+    <field name="Number of Multisamples" dword="1" bits="15:13" type="uint" prefix="SAMPLES">
+      <value name="1" value="0" />
+      <value name="2" value="1" />
+      <value name="4" value="2" />
+      <value name="8" value="3" />
+      <value name="16" value="4" />
+    </field>
+    <field name="Stencil Clear Value" dword="1" bits="23:16" type="uint" />
+    <field name="Stencil Buffer Resolve Enable" dword="1" bits="24:24" type="bool" />
+    <field name="Full Surface Depth and Stencil Clear" dword="1" bits="25:25" type="bool" />
+    <field name="Pixel Position Offset Enable" dword="1" bits="26:26" type="bool" />
+    <field name="Hierarchical Depth Buffer Resolve Enable" dword="1" bits="27:27" type="bool" />
+    <field name="Depth Buffer Resolve Enable" dword="1" bits="28:28" type="bool" />
+    <field name="Scissor Rectangle Enable" dword="1" bits="29:29" type="bool" />
+    <field name="Depth Buffer Clear Enable" dword="1" bits="30:30" type="bool" />
+    <field name="Stencil Buffer Clear Enable" dword="1" bits="31:31" type="bool" />
+    <field name="Clear Rectangle X Min" dword="2" bits="15:0" type="uint" />
+    <field name="Clear Rectangle Y Min" dword="2" bits="31:16" type="uint" />
+    <field name="Clear Rectangle X Max" dword="3" bits="15:0" type="uint" />
+    <field name="Clear Rectangle Y Max" dword="3" bits="31:16" type="uint" />
+    <field name="Sample Mask" dword="4" bits="15:0" type="uint" />
+    <field name="Depth Clear Value" dword="5" bits="31:0" type="float" />
+  </instruction>
+  <instruction name="AVP_FILM_GRAIN_STATE" bias="2" length="45" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="43" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="52" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Grain Random Seed" dword="1" bits="15:0" type="uint" />
+    <field name="MC Identity Flag" dword="1" bits="16:16" type="bool" />
+    <field name="Clip To Restricted Range Flag" dword="1" bits="17:17" type="bool" />
+    <field name="Number of Luma Points" dword="1" bits="23:20" type="uint" />
+    <field name="Number of Chroma Cb Points" dword="1" bits="27:24" type="uint" />
+    <field name="Number of Chroma Cr Points" dword="1" bits="31:28" type="uint" />
+    <field name="Grain Scaling Minus8" dword="2" bits="1:0" type="uint" />
+    <field name="AR Coeff Lag" dword="2" bits="3:2" type="uint" />
+    <field name="AR Coeff Shift Minus6" dword="2" bits="5:4" type="uint" />
+    <field name="Grain Scale Shift" dword="2" bits="7:6" type="uint" />
+    <field name="Grain Noise Overlap Flag" dword="2" bits="8:8" type="bool" />
+    <field name="Chroma Scaling From Luma Flag" dword="2" bits="31:31" type="bool" />
+    <group count="14" dword="3" size="8">
+      <field name="Point Luma Value" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="14" dword="7" size="8">
+      <field name="Point Luma Scaling" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="10" dword="11" size="8">
+      <field name="Point CB Value" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="10" dword="14" size="8">
+      <field name="Point CB Scaling" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="10" dword="17" size="8">
+      <field name="Point CR Value" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="10" dword="20" size="8">
+      <field name="Point CR Scaling" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="24" dword="23" size="8">
+      <field name="AR Coeff Luma Plus128" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="25" dword="29" size="8">
+      <field name="AR Coeff Chroma CB Plus128" dword="0" bits="7:0" type="uint" />
+    </group>
+    <group count="25" dword="36" size="8">
+      <field name="AR Coeff Chroma CR Plus128" dword="0" bits="7:0" type="uint" />
+    </group>
+    <field name="CB Mult" dword="43" bits="7:0" type="uint" />
+    <field name="CB Luma Mult" dword="43" bits="15:8" type="uint" />
+    <field name="CB Offset" dword="43" bits="24:16" type="uint" />
+    <field name="CR Mult" dword="44" bits="7:0" type="uint" />
+    <field name="CR Luma Mult" dword="44" bits="15:8" type="uint" />
+    <field name="CR Offset" dword="44" bits="24:16" type="uint" />
+  </instruction>
+  <instruction name="AVP_PIC_STATE" bias="2" length="76" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="74" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="48" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Width" dword="1" bits="13:0" type="uint" />
+    <field name="Frame Height" dword="1" bits="29:16" type="uint" />
+    <field name="Sequence Chroma SubSampling Format" dword="2" bits="1:0" type="uint" prefix="SS">
+      <value name="Monochrome" value="0" />
+      <value name="420" value="1" />
+      <value name="422" value="2" />
+      <value name="444" value="3" />
+    </field>
+    <field name="Sequence Pixel Bit-Depth Idc" dword="2" bits="4:3" type="uint" prefix="SeqPix">
+      <value name="8-bit" value="0" />
+      <value name="10-bit" value="1" />
+      <value name="12-bit" value="2" />
+    </field>
+    <field name="Sequence Superblock Size Used" dword="2" bits="8:7" type="uint">
+      <value name="64x64" value="0" />
+      <value name="128x128" value="1" />
+    </field>
+    <field name="Sequence Enable Order Hint Flag" dword="2" bits="9:9" type="bool" />
+    <field name="Sequence Order Hint Bits Minus 1" dword="2" bits="12:10" type="uint" />
+    <field name="Sequence Enable Filter Intra Flag" dword="2" bits="16:16" type="bool" />
+    <field name="Sequence Enable Intra Edge Filter Flag" dword="2" bits="17:17" type="bool" />
+    <field name="Sequence Enable Dual Filter Flag" dword="2" bits="18:18" type="bool" />
+    <field name="Sequence Enable Inter Intra Compound Flag" dword="2" bits="19:19" type="bool" />
+    <field name="Sequence Enable Masked Compound Flag" dword="2" bits="20:20" type="bool" />
+    <field name="Sequence Enable Joint Compound Flag" dword="2" bits="21:21" type="bool" />
+    <field name="Allow Screen Content Tools Flag" dword="3" bits="0:0" type="bool" />
+    <field name="Force Integer MV Flag" dword="3" bits="1:1" type="bool" />
+    <field name="Allow Warped Motion Flag" dword="3" bits="2:2" type="bool" />
+    <field name="Use CDEF Filter Flag" dword="3" bits="4:4" type="bool" />
+    <field name="Use Super-Res Flag" dword="3" bits="5:5" type="bool" />
+    <field name="Frame Level Loop Restoration Filter Enable" dword="3" bits="6:6" type="bool" />
+    <field name="Apply Film Grain Flag" dword="3" bits="7:7" type="bool" />
+    <field name="Large Scale Tile Enable Flag" dword="3" bits="8:8" type="bool" />
+    <field name="Post CDEF Filtered Recon Pixels Writeout En" dword="3" bits="14:14" type="bool" />
+    <field name="Frame Type" dword="3" bits="17:16" type="uint" />
+    <field name="Intra Only Flag" dword="3" bits="19:19" type="bool" />
+    <field name="Error Resilient Mode Flag" dword="3" bits="22:22" type="bool" />
+    <field name="Allow IntraBC Flag" dword="3" bits="23:23" type="bool" />
+    <field name="Primary Reference Frame Idx" dword="3" bits="30:28" type="uint" />
+    <field name="Segmentation Enable Flag" dword="4" bits="0:0" type="bool" />
+    <field name="Segmentation Update Map Flag" dword="4" bits="1:1" type="bool" />
+    <field name="Segmentation Temporal Update Flag" dword="4" bits="2:2" type="bool" />
+    <field name="Pre Skip Segment ID Flag" dword="4" bits="3:3" type="bool" />
+    <field name="Last Active Segment Segment ID" dword="4" bits="6:4" type="uint" />
+    <field name="Delta Q Present Flag" dword="4" bits="7:7" type="bool" />
+    <field name="Delta Q Res" dword="4" bits="9:8" type="uint" />
+    <field name="Frame Coded Lossless Mode" dword="4" bits="10:10" type="bool" />
+    <field name="Segment Map is Zero Flag" dword="4" bits="11:11" type="bool" />
+    <field name="Segment ID Buffer Stream In Enable Flag" dword="4" bits="12:12" type="bool" />
+    <field name="Segment ID Buffer Stream Out Enable Flag" dword="4" bits="13:13" type="bool" />
+    <field name="Base Qindex" dword="4" bits="23:16" type="uint" />
+    <field name="Y dc delta Q" dword="4" bits="30:24" type="int" />
+    <field name="U dc delta Q" dword="5" bits="6:0" type="int" />
+    <field name="U ac delta Q" dword="5" bits="14:8" type="int" />
+    <field name="V dc delta Q" dword="5" bits="22:16" type="int" />
+    <field name="V ac delta Q" dword="5" bits="30:24" type="int" />
+    <field name="Allow High Precision MV" dword="6" bits="0:0" type="bool" />
+    <field name="Frame Level Reference Mode Select" dword="6" bits="1:1" type="bool" />
+    <field name="Mcomp Filter Type" dword="6" bits="4:2" type="uint">
+      <value name="Eight Tap" value="0" />
+      <value name="Eight Tap Smooth" value="1" />
+      <value name="Eight Tap Sharp" value="2" />
+      <value name="Bilinear" value="3" />
+      <value name="Switchable" value="4" />
+    </field>
+    <field name="Motion Mode Switchable Flag" dword="6" bits="6:6" type="bool" />
+    <field name="Use Reference Frame MV Set Flag" dword="6" bits="7:7" type="bool" />
+    <field name="Reference Frame Sign Bias" dword="6" bits="15:8" type="uint" />
+    <field name="Current Frame Order Hint" dword="6" bits="23:16" type="uint" />
+    <field name="Reduced Tx Set Used" dword="7" bits="0:0" type="bool" />
+    <field name="Frame Transform Mode" dword="7" bits="2:1" type="uint" />
+    <field name="Skip Mode Present Flag" dword="7" bits="4:4" type="bool" />
+    <field name="Skip Mode Frame 0" dword="7" bits="7:5" type="uint" />
+    <field name="Skip Mode Frame 1" dword="7" bits="11:9" type="uint" />
+    <field name="Reference Frame Side" dword="7" bits="31:24" type="uint" />
+    <field name="Global Motion Type 1" dword="8" bits="4:3" type="uint" />
+    <field name="Global Motion Type 2" dword="8" bits="7:6" type="uint" />
+    <field name="Global Motion Type 3" dword="8" bits="10:9" type="uint" />
+    <field name="Global Motion Type 4" dword="8" bits="13:12" type="uint" />
+    <field name="Global Motion Type 5" dword="8" bits="16:15" type="uint" />
+    <field name="Global Motion Type 6" dword="8" bits="19:18" type="uint" />
+    <field name="Global Motion Type 7" dword="8" bits="22:21" type="uint" />
+    <field name="Frame Level Global Motion Invalid Flags" dword="8" bits="31:24" type="uint" />
+    <group count="42" dword="9" size="16">
+      <field name="Warp Parameters" dword="0" bits="15:0" type="uint" />
+    </group>
+    <field name="Reference Frame Idx 0" dword="30" bits="2:0" type="uint" />
+    <field name="Reference Frame Idx 1" dword="30" bits="6:4" type="uint" />
+    <field name="Reference Frame Idx 2" dword="30" bits="10:8" type="uint" />
+    <field name="Reference Frame Idx 3" dword="30" bits="14:12" type="uint" />
+    <field name="Reference Frame Idx 4" dword="30" bits="18:16" type="uint" />
+    <field name="Reference Frame Idx 5" dword="30" bits="22:20" type="uint" />
+    <field name="Reference Frame Idx 6" dword="30" bits="26:24" type="uint" />
+    <field name="Reference Frame Idx 7" dword="30" bits="30:28" type="uint" />
+    <field name="Intra Frame Width in Pixel Minus 1" dword="31" bits="15:0" type="uint" />
+    <field name="Intra Frame Height in Pixel Minus 1" dword="31" bits="31:16" type="uint" />
+    <field name="Last Frame Width in Pixel Minus 1" dword="32" bits="15:0" type="uint" />
+    <field name="Last Frame Height in Pixel Minus 1" dword="32" bits="31:16" type="uint" />
+    <field name="Last2 Frame Width in Pixel Minus 1" dword="33" bits="15:0" type="uint" />
+    <field name="Last2 Frame Height in Pixel Minus 1" dword="33" bits="31:16" type="uint" />
+    <field name="Last3 Frame Width in Pixel Minus 1" dword="34" bits="15:0" type="uint" />
+    <field name="Last3 Frame Height in Pixel Minus 1" dword="34" bits="31:16" type="uint" />
+    <field name="Golden Frame Width in Pixel Minus 1" dword="35" bits="15:0" type="uint" />
+    <field name="Golden Frame Height in Pixel Minus 1" dword="35" bits="31:16" type="uint" />
+    <field name="BWDREF Frame Width in Pixel Minus 1" dword="36" bits="15:0" type="uint" />
+    <field name="BWDREF Frame Height in Pixel Minus 1" dword="36" bits="31:16" type="uint" />
+    <field name="ALTREF2 Frame Width in Pixel Minus 1" dword="37" bits="15:0" type="uint" />
+    <field name="ALTREF2 Frame Height in Pixel Minus 1" dword="37" bits="31:16" type="uint" />
+    <field name="ALTREF Frame Width in Pixel Minus 1" dword="38" bits="15:0" type="uint" />
+    <field name="ALTREF Frame Height in Pixel Minus 1" dword="38" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For Intra" dword="39" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For Intra" dword="39" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For Last" dword="40" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For Last" dword="40" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For Last2" dword="41" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For Last2" dword="41" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For Last3" dword="42" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For Last3" dword="42" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For Golden" dword="43" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For Golden" dword="43" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For BWDREF" dword="44" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For BWDREF" dword="44" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For ALTREF2" dword="45" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For ALTREF2" dword="45" bits="31:16" type="uint" />
+    <field name="Vertical Scale Factor For ALTREF" dword="46" bits="15:0" type="uint" />
+    <field name="Horizontal Scale Factor For ALTREF" dword="46" bits="31:16" type="uint" />
+    <group count="8" dword="47" size="8">
+      <field name="Reference Frame Order Hint" dword="0" bits="7:0" type="uint" />
+    </group>
+    <field name="NonFirstPassFlag" dword="51" bits="16:16" type="bool" />
+    <field name="VdencPakOnlyPass" dword="51" bits="17:17" type="bool" />
+    <field name="FrameSzOverStatusEn - FrameBitRateMaxReportMask" dword="51" bits="25:25" type="bool" />
+    <field name="FrameSzUnderStatusEn - FrameBitRateMinReportMask" dword="51" bits="26:26" type="bool" />
+    <field name="FrameBitRateMax" dword="52" bits="13:0" type="uint" />
+    <field name="FrameBitrateMaxUnit" dword="52" bits="31:31" type="FRAME_BITRATE_UNITS" />
+    <field name="FrameBitRateMin" dword="53" bits="13:0" type="uint" />
+    <field name="FrameBitrateMinUnit" dword="53" bits="31:31" type="FRAME_BITRATE_UNITS" />
+    <field name="FrameDeltaQindexMax" dword="54" bits="63:0" type="uint" />
+    <field name="FrameDeltaQindexMin" dword="56" bits="31:0" type="uint" />
+    <field name="FrameDeltaLFMax" dword="57" bits="63:0" type="uint" />
+    <field name="FrameDeltaLFMin" dword="59" bits="31:0" type="uint" />
+    <field name="FrameDeltaQindexLFMaxRange" dword="60" bits="63:0" type="uint" />
+    <field name="FrameDeltaQindexLFMinRange" dword="62" bits="31:0" type="uint" />
+    <field name="MinFrameSize" dword="63" bits="15:0" type="uint" />
+    <field name="MinFrameSizeUnits" dword="63" bits="31:30" type="uint">
+      <value name="4K Byte Units" value="0" />
+      <value name="16K Byte Units" value="1" />
+      <value name="Compatibility Mode" value="2" />
+      <value name="6 Byte Units" value="3" />
+    </field>
+    <field name="VDAQM enable" dword="64" bits="0:0" type="bool" />
+    <field name="Class0 SSE Threshold0" dword="65" bits="15:0" type="uint" />
+    <field name="Class0 SSE Threshold1" dword="65" bits="31:16" type="uint" />
+    <group count="8" dword="66" size="8">
+      <field name="SSE Thresholds For Class" dword="0" bits="7:0" type="uint" />
+    </group>
+    <field name="rdmult" dword="74" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="AVP_PIPE_BUF_ADDR_STATE" bias="2" length="215" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="213" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="2" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <group count="8" dword="1" size="64">
+      <field name="Reference Picture - Address" dword="0" bits="63:0" type="address" />
+    </group>
+    <field name="Reference Picture - Attributes" dword="17" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Decoded Output Frame Buffer Address" dword="18" bits="63:0" type="address" />
+    <field name="Decoded Output Frame Buffer Address - Attributes" dword="20" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Film Grain Injected Output Frame Buffer Address" dword="21" bits="63:0" type="address" />
+    <field name="Film Grain Injected Output Frame Buffer Address - Attributes" dword="23" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="IntraBC Decoded Output Frame Buffer Address" dword="24" bits="63:0" type="address" />
+    <field name="IntraBC Decoded Output Frame Buffer Address - Attributes" dword="26" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDF Tables Initialization Buffer Address" dword="27" bits="63:0" type="address" />
+    <field name="CDF Tables Initialization Buffer Address - Attributes" dword="29" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDF Tables Backward Adaptation Buffer Address" dword="30" bits="63:0" type="address" />
+    <field name="CDF Tables Backward Adaptation Buffer Address - Attributes" dword="32" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="AV1 Segment ID Read Buffer Address" dword="33" bits="63:0" type="address" />
+    <field name="AV1 Segment ID Read Buffer Address - Attributes" dword="35" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="AV1 Segment ID Write Buffer Address" dword="36" bits="63:0" type="address" />
+    <field name="AV1 Segment ID Write Buffer Address - Attributes" dword="38" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <group count="8" dword="39" size="64">
+      <field name="Collocated MV Temporal Buffer - Address" dword="0" bits="63:0" type="address" />
+    </group>
+    <field name="Collocated MV Temporal Buffer - Attributes" dword="55" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Current Frame MV Write Buffer Address" dword="56" bits="63:0" type="address" />
+    <field name="Current Frame MV Write Buffer Address - Attributes" dword="58" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Film Grain Sample Template Address" dword="59" bits="63:0" type="address" />
+    <field name="Film Grain Sample Template Address - Attributes" dword="61" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Bitstream Line Rowstore Buffer Address" dword="62" bits="63:0" type="address" />
+    <field name="Bitstream Line Rowstore Buffer Address - Attributes" dword="64" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Bitstream Tile Line Rowstore Buffer Address" dword="65" bits="63:0" type="address" />
+    <field name="Bitstream Tile Line Rowstore Buffer Address - Attributes" dword="67" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Intra Prediction Line Rowstore Buffer Address" dword="68" bits="63:0" type="address" />
+    <field name="Intra Prediction Line Rowstore Buffer Address - Attributes" dword="70" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Intra Prediction Tile Line Rowstore Buffer Address" dword="71" bits="63:0" type="address" />
+    <field name="Intra Prediction Tile Line Rowstore Buffer Address - Attributes" dword="73" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Spatial Motion Vector Line Buffer Address" dword="74" bits="63:0" type="address" />
+    <field name="Spatial Motion Vector Line Buffer Address - Attributes" dword="76" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Spatial Motion Vector Tile Line Buffer Address" dword="77" bits="63:0" type="address" />
+    <field name="Spatial Motion Vector Tile Line Buffer Address - Attributes" dword="79" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Meta Tile Column Buffer Address" dword="80" bits="63:0" type="address" />
+    <field name="Loop Restoration Meta Tile Column Buffer Address - Attributes" dword="82" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Filter Tile Line Y Buffer Address" dword="83" bits="63:0" type="address" />
+    <field name="Loop Restoration Filter Tile Line Y Buffer Address - Attributes" dword="85" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Filter Tile Line U Buffer Address" dword="86" bits="63:0" type="address" />
+    <field name="Loop Restoration Filter Tile Line U Buffer Address - Attributes" dword="88" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Filter Tile Line V Buffer Address" dword="89" bits="63:0" type="address" />
+    <field name="Loop Restoration Filter Tile Line V Buffer Address - Attributes" dword="91" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Line Y Buffer Address" dword="92" bits="63:0" type="address" />
+    <field name="Deblocker Filter Line Y Buffer Address - Attributes" dword="94" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Line U Buffer Address" dword="95" bits="63:0" type="address" />
+    <field name="Deblocker Filter Line U Buffer Address - Attributes" dword="97" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Line V Buffer Address" dword="98" bits="63:0" type="address" />
+    <field name="Deblocker Filter Line V Buffer Address - Attributes" dword="100" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Tile Line Y Buffer Address" dword="101" bits="63:0" type="address" />
+    <field name="Deblocker Filter Tile Line Y Buffer Address - Attributes" dword="103" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Tile Line U Buffer Address" dword="104" bits="63:0" type="address" />
+    <field name="Deblocker Filter Tile Line U Buffer Address - Attributes" dword="106" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Tile Line V Buffer Address" dword="107" bits="63:0" type="address" />
+    <field name="Deblocker Filter Tile Line V Buffer Address - Attributes" dword="109" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Tile Column Y Buffer Address" dword="110" bits="63:0" type="address" />
+    <field name="Deblocker Filter Tile Column Y Buffer Address - Attributes" dword="112" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Tile Column U Buffer Address" dword="113" bits="63:0" type="address" />
+    <field name="Deblocker Filter Tile Column U Buffer Address - Attributes" dword="115" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Deblocker Filter Tile Column V Buffer Address" dword="116" bits="63:0" type="address" />
+    <field name="Deblocker Filter Tile Column V Buffer Address - Attributes" dword="118" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDEF Filter Line Buffer Address" dword="119" bits="63:0" type="address" />
+    <field name="CDEF Filter Line Buffer Address - Attributes" dword="121" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDEF Filter Tile Line Buffer Address" dword="128" bits="63:0" type="address" />
+    <field name="CDEF Filter Tile Line Buffer Address - Attributes" dword="130" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDEF Filter Tile Column Buffer Address" dword="137" bits="63:0" type="address" />
+    <field name="CDEF Filter Tile Column Buffer Address - Attributes" dword="139" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDEF Filter Meta Tile Line Buffer Address" dword="140" bits="63:0" type="address" />
+    <field name="CDEF Filter Meta Tile Line Buffer Address - Attributes" dword="142" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDEF Filter Meta Tile Column Buffer Address" dword="143" bits="63:0" type="address" />
+    <field name="CDEF Filter Meta Tile Column Buffer Address - Attributes" dword="145" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CDEF Filter Top Left Corner Buffer Address" dword="146" bits="63:0" type="address" />
+    <field name="CDEF Filter Top Left Corner Buffer Address - Attributes" dword="148" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Super Res Tile Column Y Buffer Address" dword="149" bits="63:0" type="address" />
+    <field name="Super Res Tile Column Y Buffer Address - Attributes" dword="151" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Super Res Tile Column U Buffer Address" dword="152" bits="63:0" type="address" />
+    <field name="Super Res Tile Column U Buffer Address - Attributes" dword="154" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Super Res Tile Column V Buffer Address" dword="155" bits="63:0" type="address" />
+    <field name="Super Res Tile Column V Buffer Address - Attributes" dword="157" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Filter Tile Column Y Buffer Address" dword="158" bits="63:0" type="address" />
+    <field name="Loop Restoration Filter Tile Column Y Buffer Address - Attributes" dword="160" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Filter Tile Column U Buffer Address" dword="161" bits="63:0" type="address" />
+    <field name="Loop Restoration Filter Tile Column U Buffer Address - Attributes" dword="163" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Filter Tile Column V Buffer Address" dword="164" bits="63:0" type="address" />
+    <field name="Loop Restoration Filter Tile Column V Buffer Address - Attributes" dword="166" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Loop Restoration Filter Tile Column Alignment Read Write Buffer Address" dword="170" bits="63:0" type="address" />
+    <field name="Loop Restoration Filter Tile Column Alignment Read Write Buffer Address - Attributes" dword="172" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Film Grain Tile Column Data Read Write Buffer Address" dword="173" bits="63:0" type="address" />
+    <field name="Film Grain Tile Column Data Read Write Buffer Address - Attributes" dword="175" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Decoded Frame Status Error Buffer Address" dword="176" bits="63:0" type="address" />
+    <field name="Decoded Frame Status Error Buffer Address - Attributes" dword="178" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Decoded Block Data Streamout Buffer Address" dword="179" bits="63:0" type="address" />
+    <field name="Decoded Block Data Streamout Buffer Address - Attributes" dword="181" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Original Uncompressed Picture Source Buffer Address" dword="188" bits="63:0" type="address" />
+    <field name="Original Uncompressed Picture Source Buffer Address - Attributes" dword="190" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Downscaled Uncompressed Picture Source Buffer Address" dword="191" bits="63:0" type="address" />
+    <field name="Downscaled Uncompressed Picture Source Buffer Address - Attributes" dword="193" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Tile Size Streamout Buffer Address" dword="194" bits="63:0" type="address" />
+    <field name="Tile Size Streamout Buffer Address - Attributes" dword="196" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="Tile Statistics Streamout Buffer Address" dword="197" bits="63:0" type="address" />
+    <field name="Tile Statistics Streamout Buffer Address - Attributes" dword="199" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="CU Streamout Buffer Address" dword="200" bits="63:0" type="address" />
+    <field name="CU Streamout Buffer Address - Attributes" dword="202" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="SSE Line Read/Write Buffer Address" dword="203" bits="63:0" type="address" />
+    <field name="SSE Line Read/Write Buffer Address - Attributes" dword="205" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="SSE Tile Line Read/Write Buffer Address" dword="206" bits="63:0" type="address" />
+    <field name="SSE Tile Line Read/Write Buffer Address - Attributes" dword="208" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+    <field name="PostCDEF Pixels Buffer Address" dword="209" bits="63:0" type="address" />
+    <field name="PostCDEF Pixels Buffer Address - Attributes" dword="211" bits="31:0" type="MEMORYADDRESSATTRIBUTES" />
+  </instruction>
+  <instruction name="AVP_PIPE_MODE_SELECT" bias="2" length="7" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="5" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="0" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Codec Select" dword="1" bits="0:0" type="bool">
+      <value name="Decode" value="0" />
+      <value name="Encode" value="1" />
+    </field>
+    <field name="Pic Status/Error Report Enable" dword="1" bits="3:3" type="bool" />
+    <field name="Frame Reconstruction Disable" dword="1" bits="4:4" type="bool" />
+    <field name="Codec Standard Select" dword="1" bits="7:5" type="uint" default="2" />
+    <field name="VDENC Mode" dword="1" bits="10:10" type="bool" />
+    <field name="Tile Statistics Streamout Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Multi Engine Mode" dword="1" bits="14:13" type="uint">
+      <value name="Single Engine Mode" value="0" />
+      <value name="Left Engine Mode" value="1" />
+      <value name="Right Engine Mode" value="2" />
+      <value name="Middle Engine Mode" value="3" />
+    </field>
+    <field name="Pipe Working Mode" dword="1" bits="16:15" type="uint">
+      <value name="Legacy Single Pipe" value="0" />
+      <value name="Encode Mode" value="2" />
+      <value name="Decode Scalable Mode" value="3" />
+    </field>
+    <field name="Tile Based Engine" dword="1" bits="17:17" type="bool" />
+    <field name="Motion Comp Memory Tracker Counter Enable" dword="1" bits="23:23" type="bool" />
+    <field name="Pic Status/Error Report ID" dword="3" bits="31:0" type="uint" />
+    <field name="AlcChickenbitRestrictSingleTileGroupInAFrame" dword="4" bits="4:4" type="bool" />
+    <field name="Phase Indicator" dword="5" bits="1:0" type="uint">
+      <value name="First Phase" value="0" />
+      <value name="Middle Phase" value="1" />
+      <value name="Last Phase" value="2" />
+    </field>
+    <field name="Downscaled Source Pixel Prefetch Length" dword="6" bits="4:2" type="uint" />
+    <field name="Downscaled Source Pixel Prefetch Enable" dword="6" bits="5:5" type="bool" />
+    <field name="Original Source Pixel Prefetch Length" dword="6" bits="9:7" type="uint" />
+    <field name="Original Source Pixel Prefetch Enable" dword="6" bits="10:10" type="bool" />
+  </instruction>
+  <instruction name="AVP_TILE_CODING" bias="2" length="7" engine="video">
+    <field name="DWord Length" dword="0" bits="11:0" type="uint" default="5" />
+    <field name="SubOpcode" dword="0" bits="22:16" type="uint" default="21" />
+    <field name="Media Command Opcode" dword="0" bits="26:23" type="uint" default="3" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Frame Tile ID" dword="1" bits="11:0" type="uint" />
+    <field name="TG Tile Num" dword="1" bits="23:12" type="uint" />
+    <field name="Tile Group ID" dword="1" bits="31:24" type="uint" />
+    <field name="Tile Column Position in SB Unit" dword="2" bits="9:0" type="uint" />
+    <field name="Tile Row Position in SB Unit" dword="2" bits="25:16" type="uint" />
+    <field name="Tile Width in SB Minus 1" dword="3" bits="5:0" type="uint" />
+    <field name="Tile Height in SB Minus 1" dword="3" bits="25:16" type="uint" />
+    <field name="First Phase on Scalability Mode" dword="4" bits="0:0" type="bool" />
+    <field name="Last Phase on Scalability Mode" dword="4" bits="1:1" type="bool" />
+    <field name="AVP CRC Enable" dword="4" bits="2:2" type="bool" />
+    <field name="First Tile in a Frame" dword="4" bits="23:23" type="bool" />
+    <field name="Is Last Tile of Column Flag" dword="4" bits="25:25" type="bool" />
+    <field name="Is Last Tile of Row Flag" dword="4" bits="26:26" type="bool" />
+    <field name="Is Start Tile of Tile Group Flag" dword="4" bits="27:27" type="bool" />
+    <field name="Is End Tile of Tile Group Flag" dword="4" bits="28:28" type="bool" />
+    <field name="Is Last Tile of Frame Flag" dword="4" bits="29:29" type="bool" />
+    <field name="Disable CDF Update Flag" dword="4" bits="30:30" type="bool" />
+    <field name="Disable Frame Context Update Flag" dword="4" bits="31:31" type="bool" />
+    <field name="Number of Active BE Pipes" dword="5" bits="7:0" type="uint" />
+    <field name="Num of Tile Columns in Frame Minus 1" dword="5" bits="21:12" type="uint" />
+    <field name="Num of Tile Rows in Frame Minus 1" dword="5" bits="31:22" type="uint" />
+    <field name="Output Decoded Tile Column Position in SB Unit" dword="6" bits="9:0" type="uint" />
+    <field name="Output Decoded Tile Row Position in SB Unit" dword="6" bits="25:16" type="uint" />
+  </instruction>
+  <instruction name="CFE_STATE" bias="2" length="6" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="CFE SubOpcode Variant" dword="0" bits="17:16" type="uint" default="0" />
+    <field name="CFE SubOpcode" dword="0" bits="23:18" type="uint" default="0" />
+    <field name="Compute Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Scratch Space Buffer" dword="1" bits="31:10" type="uint" />
+    <field name="Stack ID Control" dword="3" bits="1:0" type="uint">
+      <value name="StackIDs 2048" value="0" />
+      <value name="StackIDs 1024" value="1" />
+      <value name="StackIDs 512" value="2" />
+      <value name="StackIDs 256" value="3" />
+    </field>
+    <field name="Compute Dispatch All walker Enable" dword="3" bits="12:12" type="bool" />
+    <field name="Single Slice Dispatch CCS Mode" dword="3" bits="13:13" type="bool" />
+    <field name="Over Dispatch Control" dword="3" bits="15:14" type="uint">
+      <value name="Over Dispatch None" value="0" />
+      <value name="Over Dispatch Low" value="1" />
+      <value name="Over Dispatch Normal" value="2" />
+      <value name="Over Dispatch High" value="3" />
+    </field>
+    <field name="Maximum Number of Threads" dword="3" bits="31:16" type="uint" />
+  </instruction>
+  <instruction name="COMPUTE_WALKER" bias="2" length="40" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="38" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="Workload Partition Enable" dword="0" bits="9:9" type="bool" />
+    <field name="Indirect Parameter Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Systolic Mode Enable" dword="0" bits="14:14" type="bool" />
+    <field name="CFE SubOpcode Variant" dword="0" bits="17:15" type="uint" default="0" />
+    <field name="CFE SubOpcode" dword="0" bits="23:18" type="uint" default="2" />
+    <field name="Compute Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Pipeline" dword="0" bits="28:27" type="uint" default="2" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="body" dword="1" bits="1248:0" type="COMPUTE_WALKER_BODY" />
+  </instruction>
+  <instruction name="EXECUTE_INDIRECT_DISPATCH" bias="2" length="45" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="43" />
+    <field name="Predicate Enable" dword="0" bits="8:8" type="bool" />
+    <field name="MOCS" dword="0" bits="15:12" type="uint" nonzero="true" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="1" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="4" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Max Count" dword="1" bits="31:0" type="uint" />
+    <field name="Count Buffer Indirect Enable" dword="2" bits="0:0" type="bool" />
+    <field name="Count Buffer Address" dword="2" bits="63:2" type="address" />
+    <field name="Argument Buffer Start Address" dword="4" bits="63:2" type="address" />
+    <field name="body" dword="6" bits="1247:0" type="COMPUTE_WALKER_BODY" />
+  </instruction>
+  <instruction name="MI_MEM_FENCE" bias="1" length="1">
+    <field name="Fence Type" dword="0" bits="1:0" type="uint" prefix="FENCE_TYPE">
+      <value name="RELEASE" value="0" />
+      <value name="ACQUIRE" value="1" />
+      <value name="MI_WRITE" value="3" />
+    </field>
+    <field name="MI Command Sub Opcode" dword="0" bits="22:17" type="uint" default="0" />
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="9" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+  </instruction>
+  <instruction name="MI_SEMAPHORE_WAIT" bias="2" length="5">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="Compare Operation" dword="0" bits="14:12" type="uint" prefix="COMPARE">
+      <value name="SAD_GREATER_THAN_SDD" value="0" />
+      <value name="SAD_GREATER_THAN_OR_EQUAL_SDD" value="1" />
+      <value name="SAD_LESS_THAN_SDD" value="2" />
+      <value name="SAD_LESS_THAN_OR_EQUAL_SDD" value="3" />
+      <value name="SAD_EQUAL_SDD" value="4" />
+      <value name="SAD_NOT_EQUAL_SDD" value="5" />
+    </field>
+    <field name="Wait Mode" dword="0" bits="15:15" type="uint">
+      <value name="Polling Mode" value="1" />
+      <value name="Signal Mode" value="0" />
+    </field>
+    <field name="Register Poll Mode" dword="0" bits="16:16" type="bool" />
+    <field name="Indirect Semaphore Data Dword" dword="0" bits="17:17" type="bool" />
+    <field name="Workload Partition ID Offset Enable" dword="0" bits="18:18" type="bool" />
+    <field name="Memory Type" dword="0" bits="22:22" type="uint">
+      <value name="Per Process Graphics Address" value="0" />
+      <value name="Global Graphics Address" value="1" />
+    </field>
+    <field name="MI Command Opcode" dword="0" bits="28:23" type="uint" default="28" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="0" />
+    <field name="Semaphore Data Dword" dword="1" bits="31:0" type="uint" />
+    <field name="Semaphore Address" dword="2" bits="63:2" type="address" />
+    <field name="Wait Token Number" dword="4" bits="9:2" type="uint" />
+  </instruction>
+  <instruction name="PIPELINE_SELECT" bias="1" length="1" engine="render">
+    <field name="Pipeline Selection" dword="0" bits="1:0" type="uint">
+      <value name="3D" value="0" />
+      <value name="Media" value="1" />
+      <value name="GPGPU" value="2" />
+    </field>
+    <field name="Mask Bits" dword="0" bits="15:8" type="uint" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="4" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="1" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+  </instruction>
+  <instruction name="PIPE_CONTROL" bias="2" length="6" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="HDC Pipeline Flush Enable" dword="0" bits="9:9" type="bool" />
+    <field name="L3 Read Only Cache Invalidation Enable" dword="0" bits="10:10" type="bool" />
+    <field name="Untyped Data Port Cache Flush Enable" dword="0" bits="11:11" type="bool" />
+    <field name="CCS Flush Enable" dword="0" bits="13:13" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="0" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="2" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Depth Cache Flush Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Stall At Pixel Scoreboard" dword="1" bits="1:1" type="bool" />
+    <field name="State Cache Invalidation Enable" dword="1" bits="2:2" type="bool" />
+    <field name="Constant Cache Invalidation Enable" dword="1" bits="3:3" type="bool" />
+    <field name="VF Cache Invalidation Enable" dword="1" bits="4:4" type="bool" />
+    <field name="Force Device Coherency" dword="1" bits="5:5" type="bool" />
+    <field name="Pipe Control Flush Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Notify Enable" dword="1" bits="8:8" type="bool" />
+    <field name="Indirect State Pointers Disable" dword="1" bits="9:9" type="bool" />
+    <field name="Texture Cache Invalidation Enable" dword="1" bits="10:10" type="bool" />
+    <field name="Instruction Cache Invalidate Enable" dword="1" bits="11:11" type="bool" />
+    <field name="Render Target Cache Flush Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Depth Stall Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Post Sync Operation" dword="1" bits="15:14" type="uint">
+      <value name="No Write" value="0" />
+      <value name="Write Immediate Data" value="1" />
+      <value name="Write PS Depth Count" value="2" />
+      <value name="Write Timestamp" value="3" />
+    </field>
+    <field name="PSS Stall Sync Enable" dword="1" bits="17:17" type="bool" />
+    <field name="TLB Invalidate" dword="1" bits="18:18" type="bool" />
+    <field name="Depth Stall Sync Enable" dword="1" bits="19:19" type="bool" />
+    <field name="Command Streamer Stall Enable" dword="1" bits="20:20" type="bool" />
+    <field name="Store Data Index" dword="1" bits="21:21" type="uint" />
+    <field name="Protected Memory Enable" dword="1" bits="22:22" type="bool" />
+    <field name="LRI Post Sync Operation" dword="1" bits="23:23" type="uint">
+      <value name="No LRI Operation" value="0" />
+      <value name="MMIO Write Immediate Data" value="1" />
+    </field>
+    <field name="Destination Address Type" dword="1" bits="24:24" type="uint" prefix="DAT">
+      <value name="PPGTT" value="0" />
+      <value name="GGTT" value="1" />
+    </field>
+    <field name="Flush LLC" dword="1" bits="26:26" type="bool" />
+    <field name="Protected Memory Disable" dword="1" bits="27:27" type="bool" />
+    <field name="Command Cache Invalidate Enable" dword="1" bits="29:29" type="bool" />
+    <field name="Address" dword="2" bits="47:2" type="address" />
+    <field name="Immediate Data" dword="4" bits="63:0" type="uint" />
+  </instruction>
+  <instruction name="RESOURCE_BARRIER" bias="2" length="5" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="3" />
+    <field name="Predicate Enable" dword="0" bits="24:24" type="bool" />
+    <field name="Opcode" dword="0" bits="28:26" type="uint" default="3">
+      <value name="RESOURCE_BARRIER" value="3" />
+    </field>
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="5" />
+    <field name="Resource Barrier Body" dword="1" bits="127:0" type="RESOURCE_BARRIER_BODY" />
+  </instruction>
+  <instruction name="STATE_BYTE_STRIDE" bias="2" length="2" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="0" />
+    <field name="Byte Stride Enable" dword="0" bits="8:8" type="bool" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="5" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Byte Stride" dword="1" bits="31:2" type="uint" />
+  </instruction>
+  <instruction name="STATE_COMPUTE_MODE" bias="2" length="3" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="5" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Z Pass Async Compute Thread Limit" dword="1" bits="2:0" type="uint" prefix="ZPACTL">
+      <value name="Max 60" value="0" />
+      <value name="Max 64" value="1" />
+      <value name="Max 56" value="2" />
+      <value name="Max 48" value="3" />
+      <value name="Max 40" value="4" />
+      <value name="Max 32" value="5" />
+    </field>
+    <field name="Z Async Throttle settings" dword="1" bits="4:3" type="uint" prefix="ZATS">
+      <value name="Defer to Async Compute Thread Limit" value="0" />
+      <value name="Max 32" value="1" />
+      <value name="Max 40" value="2" />
+      <value name="Max 48" value="3" />
+    </field>
+    <field name="Async Compute Thread Limit" dword="1" bits="9:7" type="uint" prefix="ACTL">
+      <value name="Disabled" value="0" />
+      <value name="Max 2" value="1" />
+      <value name="Max 8" value="2" />
+      <value name="Max 16" value="3" />
+      <value name="Max 24" value="4" />
+      <value name="Max 32" value="5" />
+      <value name="Max 40" value="6" />
+      <value name="Max 48" value="7" />
+    </field>
+    <field name="EU Thread Scheduling Mode Override" dword="1" bits="14:13" type="uint" />
+    <field name="Large GRF Mode" dword="1" bits="15:15" type="bool" />
+    <field name="Z Pass Async Compute Thread Limit Mask" dword="1" bits="18:16" type="uint" />
+    <field name="Mask1" dword="1" bits="31:16" type="uint" />
+    <field name="Z Async Throttle settings Mask" dword="1" bits="20:19" type="uint" />
+    <field name="Async Compute Thread Limit Mask" dword="1" bits="25:23" type="uint" />
+    <field name="EU Thread Scheduling Mode Override Mask" dword="1" bits="30:29" type="uint" />
+    <field name="Large GRF Mode Mask" dword="1" bits="31:31" type="bool" />
+    <field name="Midthread Preemption Delay Timer" dword="2" bits="2:0" type="uint">
+      <value name="MTP_TIMER_VAL_0" value="0" />
+      <value name="MTP_TIMER_VAL_50" value="1" />
+      <value name="MTP_TIMER_VAL_100" value="2" />
+      <value name="MTP_TIMER_VAL_150" value="3" />
+    </field>
+    <field name="Midthread Preemption Overdispatch Thread group count" dword="2" bits="4:3" type="uint">
+      <value name="OD_TG_M2" value="0" />
+      <value name="OD_TG_M4" value="1" />
+      <value name="OD_TG_M8" value="2" />
+      <value name="OD_TG_M16" value="3" />
+    </field>
+    <field name="Midthread Preemption Overdispatch Test mode" dword="2" bits="5:5" type="uint">
+      <value name="Regular" value="0" />
+      <value name="Test mode" value="1" />
+    </field>
+    <field name="UAV Coherency Mode" dword="2" bits="6:6" type="uint">
+      <value name="Drain DataPort Mode" value="0" />
+      <value name="Flush Dataport L1" value="1" />
+    </field>
+    <field name="Memory allocation for Scratch and Midthread Preemption buffers" dword="2" bits="11:11" type="uint">
+      <value name="Full" value="0" />
+      <value name="Min" value="1" />
+    </field>
+    <field name="Midthread Preemption Delay Timer Mask" dword="2" bits="18:16" type="uint" />
+    <field name="Mask2" dword="2" bits="31:16" type="uint" />
+    <field name="Midthread Preemption Overdispatch Thread group count Mask" dword="2" bits="20:19" type="uint" />
+    <field name="Midthread Preemption Overdispatch Test mode Mask" dword="2" bits="21:21" type="uint" />
+    <field name="UAV Coherency Mode Mask" dword="2" bits="22:22" type="uint" />
+    <field name="Memory allocation for Scratch and Midthread Preemption buffers Mask" dword="2" bits="27:27" type="uint" />
+  </instruction>
+  <instruction name="STATE_SYSTEM_MEM_FENCE_ADDRESS" bias="2" length="3">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="Context Restore Invalid" dword="0" bits="15:15" type="bool" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="9" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="System Memory Fence Address" dword="1" bits="63:12" type="address" />
+  </instruction>
+  <instruction name="XY_BLOCK_COPY_BLT" bias="2" length="22" engine="blitter">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="20" />
+    <field name="Special Mode of Operation" dword="0" bits="13:12" type="uint">
+      <value name="NONE" value="0" />
+      <value name="FULL_RESOLVE" value="1" />
+      <value name="PARTIAL_RESOLVE" value="2" />
+    </field>
+    <field name="Color Depth" dword="0" bits="21:19" type="uint" prefix="XY_BPP">
+      <value name="8_BIT" value="0" />
+      <value name="16_BIT" value="1" />
+      <value name="32_BIT" value="2" />
+      <value name="64_BIT" value="3" />
+      <value name="96_BIT" value="4" />
+      <value name="128_BIT" value="5" />
+    </field>
+    <field name="Opcode" dword="0" bits="28:22" type="uint" default="0x41" />
+    <field name="Client" dword="0" bits="31:29" type="uint" default="2" />
+    <field name="Destination Pitch" dword="1" bits="17:0" type="uint" />
+    <field name="Destination Encrypt En" dword="1" bits="21:21" type="uint" />
+    <field name="Destination MOCS index" dword="1" bits="27:24" type="uint" nonzero="true" />
+    <field name="Destination Tiling" dword="1" bits="31:30" type="uint" prefix="XY_TILE">
+      <value name="LINEAR" value="0" />
+      <value name="X" value="1" />
+      <value name="4" value="2" />
+      <value name="64" value="3" />
+    </field>
+    <field name="Destination X1" dword="2" bits="15:0" type="int" />
+    <field name="Destination Y1" dword="2" bits="31:16" type="int" />
+    <field name="Destination X2" dword="3" bits="15:0" type="int" />
+    <field name="Destination Y2" dword="3" bits="31:16" type="int" />
+    <field name="Destination Base Address" dword="4" bits="63:0" type="address" />
+    <field name="Destination X Offset" dword="6" bits="13:0" type="uint" />
+    <field name="Destination Y Offset" dword="6" bits="29:16" type="uint" />
+    <field name="Destination Target Memory" dword="6" bits="31:31" type="uint" prefix="XY_MEM">
+      <value name="LOCAL" value="0" />
+      <value name="SYSTEM" value="1" />
+    </field>
+    <field name="Source X1" dword="7" bits="15:0" type="int" />
+    <field name="Source Y1" dword="7" bits="31:16" type="int" />
+    <field name="Source Pitch" dword="8" bits="17:0" type="uint" />
+    <field name="Source Encrypt En" dword="8" bits="21:21" type="bool" />
+    <field name="Source MOCS index" dword="8" bits="27:24" type="uint" />
+    <field name="Source Tiling" dword="8" bits="31:30" type="uint" prefix="XY_TILE">
+      <value name="LINEAR" value="0" />
+      <value name="X" value="1" />
+      <value name="4" value="2" />
+      <value name="64" value="3" />
+    </field>
+    <field name="Source Base Address" dword="9" bits="63:0" type="address" />
+    <field name="Source X Offset" dword="11" bits="13:0" type="uint" />
+    <field name="Source Y Offset" dword="11" bits="29:16" type="uint" />
+    <field name="Source Target Memory" dword="11" bits="31:31" type="uint" prefix="XY_MEM">
+      <value name="LOCAL" value="0" />
+      <value name="SYSTEM" value="1" />
+    </field>
+    <field name="Source Compression Format" dword="12" bits="4:0" type="uint" />
+    <field name="Source Clear Value Enable" dword="12" bits="5:5" type="bool" />
+    <field name="Source Clear Address" dword="12" bits="47:6" type="address" />
+    <field name="Destination Compression Format" dword="14" bits="4:0" type="uint" />
+    <field name="Destination Clear Value Enable" dword="14" bits="5:5" type="bool" />
+    <field name="Destination Clear Address" dword="14" bits="47:6" type="address" />
+    <field name="Destination Surface Height" dword="16" bits="13:0" type="uint" />
+    <field name="Destination Surface Width" dword="16" bits="27:14" type="uint" />
+    <field name="Destination Surface Type" dword="16" bits="31:29" type="uint" prefix="XY_SURFTYPE">
+      <value name="1D" value="0" />
+      <value name="2D" value="1" />
+      <value name="3D" value="2" />
+      <value name="CUBE" value="3" />
+    </field>
+    <field name="Destination LOD" dword="17" bits="3:0" type="uint" />
+    <field name="Destination Surface QPitch" dword="17" bits="18:4" type="uint" />
+    <field name="Destination Surface Depth" dword="17" bits="31:21" type="uint" />
+    <field name="Destination Horizontal Align" dword="18" bits="1:0" type="uint">
+      <value name="HALIGN_16" value="0" />
+      <value name="HALIGN_32" value="1" />
+      <value name="HALIGN_64" value="2" />
+      <value name="HALIGN_128" value="3" />
+    </field>
+    <field name="Destination Vertical Align" dword="18" bits="4:3" type="uint">
+      <value name="VALIGN_4" value="1" />
+      <value name="VALIGN_8" value="2" />
+      <value name="VALIGN_16" value="3" />
+    </field>
+    <field name="Destination Mip Tail Start LOD" dword="18" bits="11:8" type="uint" />
+    <field name="Destination Array Index" dword="18" bits="31:21" type="uint" />
+    <field name="Source Surface Height" dword="19" bits="13:0" type="uint" />
+    <field name="Source Surface Width" dword="19" bits="27:14" type="uint" />
+    <field name="Source Surface Type" dword="19" bits="31:29" type="uint" prefix="XY_SURFTYPE">
+      <value name="1D" value="0" />
+      <value name="2D" value="1" />
+      <value name="3D" value="2" />
+      <value name="CUBE" value="3" />
+    </field>
+    <field name="Source LOD" dword="20" bits="3:0" type="uint" />
+    <field name="Source Surface QPitch" dword="20" bits="18:4" type="uint" />
+    <field name="Source Surface Depth" dword="20" bits="31:21" type="uint" />
+    <field name="Source Horizontal Align" dword="21" bits="1:0" type="uint">
+      <value name="HALIGN_16" value="0" />
+      <value name="HALIGN_32" value="1" />
+      <value name="HALIGN_64" value="2" />
+      <value name="HALIGN_128" value="3" />
+    </field>
+    <field name="Source Vertical Align" dword="21" bits="4:3" type="uint">
+      <value name="VALIGN_4" value="1" />
+      <value name="VALIGN_8" value="2" />
+      <value name="VALIGN_16" value="3" />
+    </field>
+    <field name="Source Mip Tail Start LOD" dword="21" bits="11:8" type="uint" />
+    <field name="Source Array Index" dword="21" bits="31:21" type="uint" />
+  </instruction>
+  <instruction name="XY_FAST_COLOR_BLT" bias="2" length="16" engine="blitter">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="14" />
+    <field name="Number of Multisamples" dword="0" bits="11:9" type="uint">
+      <value name="MULTISAMPLECOUNT_1" value="0" />
+      <value name="MULTISAMPLECOUNT_2" value="1" />
+      <value name="MULTISAMPLECOUNT_4" value="2" />
+      <value name="MULTISAMPLECOUNT_8" value="3" />
+      <value name="MULTISAMPLECOUNT_16" value="4" />
+    </field>
+    <field name="Special Mode of Operation" dword="0" bits="13:12" type="uint">
+      <value name="NONE" value="0" />
+      <value name="USE_AUX_SPECIAL_OPERATIONS_MODE" value="1" />
+    </field>
+    <field name="Color Depth" dword="0" bits="21:19" type="uint" prefix="XY_BPP">
+      <value name="8_BIT" value="0" />
+      <value name="16_BIT" value="1" />
+      <value name="32_BIT" value="2" />
+      <value name="64_BIT" value="3" />
+      <value name="96_BIT" value="4" />
+      <value name="128_BIT" value="5" />
+    </field>
+    <field name="Instruction Target(Opcode)" dword="0" bits="28:22" type="uint" default="68">
+      <value name="XY_FAST_COLOR_BLT" value="68" />
+    </field>
+    <field name="Client" dword="0" bits="31:29" type="uint" default="2">
+      <value name="2D Processor" value="2" />
+    </field>
+    <field name="Destination Pitch" dword="1" bits="17:0" type="uint" />
+    <field name="Destination Encrypt En" dword="1" bits="21:21" type="bool" />
+    <field name="Destination MOCS index" dword="1" bits="27:24" type="uint" />
+    <field name="Destination Tiling" dword="1" bits="31:30" type="uint" prefix="XY_TILE">
+      <value name="LINEAR" value="0" />
+      <value name="X" value="1" />
+      <value name="4" value="2" />
+      <value name="64" value="3" />
+    </field>
+    <field name="Destination X1" dword="2" bits="15:0" type="int" />
+    <field name="Destination Y1" dword="2" bits="31:16" type="int" />
+    <field name="Destination X2" dword="3" bits="15:0" type="int" />
+    <field name="Destination Y2" dword="3" bits="31:16" type="int" />
+    <field name="Destination Base Address" dword="4" bits="63:0" type="address" />
+    <field name="Destination X Offset" dword="6" bits="13:0" type="uint" />
+    <field name="Destination Y Offset" dword="6" bits="29:16" type="uint" />
+    <field name="Destination Target Memory" dword="6" bits="31:31" type="uint">
+      <value name="LOCAL_MEM" value="0" />
+      <value name="SYSTEM_MEM" value="1" />
+    </field>
+    <group count="4" dword="7" size="32">
+      <field name="Fill Color" dword="0" bits="31:0" type="uint" />
+    </group>
+    <field name="Destination Compression Format" dword="11" bits="3:0" type="uint" />
+    <field name="Surface Format" dword="12" bits="8:0" type="uint" />
+    <field name="AUX_SPECIAL_OPERATIONS_MODE" dword="12" bits="31:29" type="uint">
+      <value name="FAST_CLEAR_HW_FORMAT_CONVERSION" value="0" />
+      <value name="FAST_CLEAR_BYPASS_HW_FORMAT_CONVERSION" value="1" />
+      <value name="FORCE_UNCOMPRESS" value="2" />
+    </field>
+    <field name="Destination Surface Height" dword="13" bits="13:0" type="uint" />
+    <field name="Destination Surface Width" dword="13" bits="27:14" type="uint" />
+    <field name="Destination Surface Type" dword="13" bits="31:29" type="uint" prefix="XY_SURFTYPE">
+      <value name="1D" value="0" />
+      <value name="2D" value="1" />
+      <value name="3D" value="2" />
+      <value name="CUBE" value="3" />
+    </field>
+    <field name="Destination LOD" dword="14" bits="3:0" type="uint" />
+    <field name="Destination Surface QPitch" dword="14" bits="18:4" type="uint" />
+    <field name="Destination Surface Depth" dword="14" bits="31:21" type="uint" />
+    <field name="Destination Horizontal Align" dword="15" bits="1:0" type="uint">
+      <value name="HALIGN_16" value="0" />
+      <value name="HALIGN_32" value="1" />
+      <value name="HALIGN_64" value="2" />
+      <value name="HALIGN_128" value="3" />
+    </field>
+    <field name="Destination Vertical Align" dword="15" bits="4:3" type="uint">
+      <value name="VALIGN_4" value="1" />
+      <value name="VALIGN_8" value="2" />
+      <value name="VALIGN_16" value="3" />
+    </field>
+    <field name="Destination Mip Tail Start LOD" dword="15" bits="11:8" type="uint" />
+    <field name="Destination Depth/Stencil Resource" dword="15" bits="18:18" type="bool" />
+    <field name="Destination Array Index" dword="15" bits="31:21" type="uint" />
+  </instruction>
+  <register name="BLT_TRTT_VA_RANGE" length="1" num="0x4484">
+    <field name="TR-VA Base" dword="0" bits="12:0" type="uint" />
+  </register>
+  <register name="CACHE_MODE_0" length="1" num="0x7000">
+    <field name="Hierarchical Z RAW Stall Optimization Disable" dword="0" bits="2:2" type="bool" />
+    <field name="Hierarchical Z Disable" dword="0" bits="3:3" type="bool" />
+    <field name="Late Z Alloc Disable" dword="0" bits="4:4" type="bool" />
+    <field name="Msaa Fast Clear Enabled" dword="0" bits="5:5" type="bool" />
+    <field name="Depth Related Cache Pipelined Flush Disable" dword="0" bits="8:8" type="bool" />
+    <field name="Sampler L2 TLB Prefetch Enable" dword="0" bits="9:9" type="bool" />
+    <field name="RCZ PMA Not-Promoted Allocation stall optimization Disable due to change in depth parameters" dword="0" bits="10:10" type="uint" />
+    <field name="Disable Repacking for Compression" dword="0" bits="15:15" type="bool" />
+    <field name="Hierarchical Z RAW Stall Optimization Disable Mask" dword="0" bits="18:18" type="bool" />
+    <field name="Hierarchical Z Disable Mask" dword="0" bits="19:19" type="bool" />
+    <field name="Late Z Alloc Disable Mask" dword="0" bits="20:20" type="bool" />
+    <field name="Msaa Fast Clear Enabled Mask" dword="0" bits="21:21" type="bool" />
+    <field name="Depth Related Cache Pipelined Flush Disable Mask" dword="0" bits="24:24" type="bool" />
+    <field name="Sampler L2 TLB Prefetch Enable Mask" dword="0" bits="25:25" type="bool" />
+    <field name="RCZ PMA Not-Promoted Allocation stall optimization Disable due to change in depth parameters Mask" dword="0" bits="26:26" type="bool" />
+    <field name="Disable Repacking for Compression Mask" dword="0" bits="31:31" type="bool" />
+  </register>
+  <register name="COMP_CTX0_TRTT_VA_RANGE" length="1" num="0x4584">
+    <field name="TR-VA Base" dword="0" bits="12:0" type="uint" />
+  </register>
+  <register name="CS_CHICKEN1" length="1" num="0x2580">
+    <field name="Media And GPGPU Pre-emption Control" dword="0" bits="2:1" type="uint">
+      <value name="Mid-thread Pre-emption" value="0" />
+      <value name="Thread Group Pre-emption" value="1" />
+      <value name="Command Level Pre-emption" value="2" />
+    </field>
+    <field name="Disable Preemption and High Priority Pausing due to 3DPRIMITIVE Command" dword="0" bits="10:10" type="bool" />
+    <field name="Media And GPGPU Pre-emption Control Mask" dword="0" bits="18:17" type="uint" />
+    <field name="Disable Preemption and High Priority Pausing due to 3DPRIMITIVE Command Mask" dword="0" bits="26:26" type="bool" />
+  </register>
+  <register name="FF_MODE" length="1" num="0x6210">
+    <field name="Mesh Shader Autostrip Disable" dword="0" bits="15:15" type="bool" />
+    <field name="Mesh Shader Partial Autostrip Disable" dword="0" bits="16:16" type="bool" />
+    <field name="TE Autostrip Disable" dword="0" bits="31:31" type="bool" />
+  </register>
+  <register name="GFX_TRTT_VA_RANGE" length="1" num="0x4404">
+    <field name="TR-VA Base" dword="0" bits="12:0" type="uint" />
+  </register>
+  <register name="VFL_SCRATCH_PAD" length="1" num="0x62a8">
+    <field name="Autostrip Disable" dword="0" bits="6:6" type="uint" />
+    <field name="Partial Autostrip Disable" dword="0" bits="9:9" type="uint" />
+    <field name="Autostrip Disable Mask" dword="0" bits="22:22" type="bool" />
+    <field name="Partial Autostrip Disable Mask" dword="0" bits="25:25" type="bool" />
+  </register>
+</genxml>
diff --git a/lib/genxml/xe3.xml b/lib/genxml/xe3.xml
new file mode 100644
index 000000000..9b2edcbbc
--- /dev/null
+++ b/lib/genxml/xe3.xml
@@ -0,0 +1,816 @@
+<?xml version='1.0' encoding='utf-8'?>
+<genxml name="XE3" gen="30">
+  <import name="xe2.xml">
+    <exclude name="CPS_STATE" />
+    <exclude name="3DSTATE_CPS_POINTERS" />
+  </import>
+  <enum name="STATE_CPS_COMBINER_OPCODE" prefix="CPS_COMB_OP">
+    <value name="PASSTHROUGH" value="0" />
+    <value name="OVERRIDE" value="1" />
+    <value name="HIGH_QUALITY" value="2" />
+    <value name="LOW_QUALITY" value="3" />
+    <value name="RELATIVE" value="4" />
+  </enum>
+  <enum name="STATE_CPS_SIZE">
+    <value name="CPSIZE_1" value="0" />
+    <value name="CPSIZE_2" value="1" />
+    <value name="CPSIZE_4" value="2" />
+  </enum>
+  <struct name="BLEND_STATE_ENTRY" length="2">
+    <field name="Write Disable Blue" dword="0" bits="0:0" type="bool" />
+    <field name="Write Disable Green" dword="0" bits="1:1" type="bool" />
+    <field name="Write Disable Red" dword="0" bits="2:2" type="bool" />
+    <field name="Write Disable Alpha" dword="0" bits="3:3" type="bool" />
+    <field name="Alpha Blend Function" dword="0" bits="7:5" type="3D_Color_Buffer_Blend_Function" />
+    <field name="Destination Alpha Blend Factor" dword="0" bits="12:8" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Source Alpha Blend Factor" dword="0" bits="17:13" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Color Blend Function" dword="0" bits="20:18" type="3D_Color_Buffer_Blend_Function" />
+    <field name="Destination Blend Factor" dword="0" bits="25:21" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Source Blend Factor" dword="0" bits="30:26" type="3D_Color_Buffer_Blend_Factor" />
+    <field name="Color Buffer Blend Enable" dword="0" bits="31:31" type="bool" />
+    <field name="Post-Blend Color Clamp Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Pre-Blend Color Clamp Enable" dword="1" bits="1:1" type="bool" />
+    <field name="Color Clamp Range" dword="1" bits="3:2" type="uint">
+      <value name="COLORCLAMP_UNORM" value="0" />
+      <value name="COLORCLAMP_SNORM" value="1" />
+      <value name="COLORCLAMP_RTFORMAT" value="2" />
+    </field>
+    <field name="Pre-Blend Source Only Clamp Enable" dword="1" bits="4:4" type="bool" />
+    <field name="Simple Float Blend Enable" dword="1" bits="5:5" type="bool" />
+    <field name="Logic Op Function" dword="1" bits="30:27" type="3D_Logic_Op_Function" />
+    <field name="Logic Op Enable" dword="1" bits="31:31" type="bool" />
+  </struct>
+  <struct name="INTERFACE_DESCRIPTOR_DATA" length="8">
+    <field name="Kernel Start Pointer" dword="0" bits="31:6" type="offset" />
+    <field name="Software Exception Enable" dword="2" bits="7:7" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="2" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="2" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Single Program Flow" dword="2" bits="18:18" type="bool" />
+    <field name="Denorm Mode" dword="2" bits="19:19" type="uint">
+      <value name="Ftz" value="0" />
+      <value name="SetByKernel" value="1" />
+    </field>
+    <field name="Thread Preemption" dword="2" bits="20:20" type="bool" default="1" />
+    <field name="Registers Per Thread" dword="2" bits="30:26" type="uint" />
+    <field name="Sampler Count" dword="3" bits="4:2" type="uint">
+      <value name="No samplers used" value="0" />
+      <value name="Between 1 and 4 samplers used" value="1" />
+      <value name="Between 5 and 8 samplers used" value="2" />
+      <value name="Between 9 and 12 samplers used" value="3" />
+      <value name="Between 13 and 16 samplers used" value="4" />
+    </field>
+    <field name="Sampler State Pointer" dword="3" bits="31:5" type="offset" />
+    <field name="Binding Table Entry Count" dword="4" bits="4:0" type="uint" />
+    <field name="Binding Table Pointer" dword="4" bits="20:5" type="offset" />
+    <field name="Number of Threads in GPGPU Thread Group" dword="5" bits="9:0" type="uint" />
+    <field name="Thread group forward progress guarantee" dword="5" bits="13:13" type="bool" />
+    <field name="Shared Local Memory Size" dword="5" bits="20:16" type="uint">
+      <value name="Encodes 0K" value="0" />
+      <value name="Encodes 1K" value="1" />
+      <value name="Encodes 2K" value="2" />
+      <value name="Encodes 4K" value="3" />
+      <value name="Encodes 8K" value="4" />
+      <value name="Encodes 16K" value="5" />
+      <value name="Encodes 32K" value="6" />
+      <value name="Encodes 64K" value="7" />
+      <value name="Encodes 96K" value="10" />
+      <value name="Encodes 128K" value="11" />
+      <value name="Encodes 192K" value="12" />
+      <value name="Encodes 256K" value="13" />
+      <value name="Encodes 384K" value="14" />
+    </field>
+    <field name="Rounding Mode" dword="5" bits="23:22" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Thread Group Dispatch Size" dword="5" bits="27:26" type="uint">
+      <value name="TG size 8" value="0" />
+      <value name="TG size 4" value="1" />
+      <value name="TG size 2" value="2" />
+      <value name="TG size 1" value="3" />
+    </field>
+    <field name="Number Of Barriers" dword="5" bits="30:28" type="uint" prefix="BARRIER_SIZE">
+      <value name="NONE" value="0" />
+      <value name="B1" value="1" />
+      <value name="B2" value="2" />
+      <value name="B4" value="3" />
+      <value name="B8" value="4" />
+      <value name="B16" value="5" />
+      <value name="B24" value="6" />
+      <value name="B32" value="7" />
+    </field>
+    <field name="BTD Mode" dword="5" bits="31:31" type="uint" />
+    <field name="Preferred SLM Allocation Size" dword="7" bits="3:0" type="PREF_SLM_ALLOCATION_SIZE" />
+  </struct>
+  <struct name="COMPUTE_WALKER_BODY" length="39">
+    <field name="Indirect Data Length" dword="1" bits="16:0" type="uint" />
+    <field name="L3 prefetch disable" dword="1" bits="17:17" type="bool" />
+    <field name="Partition Dispatch Parameter" dword="1" bits="29:18" type="uint" />
+    <field name="Partition Type" dword="1" bits="31:30" type="uint">
+      <value name="PartitionX" value="1" />
+      <value name="PartitionY" value="2" />
+      <value name="PartitionZ" value="3" />
+    </field>
+    <field name="Indirect Data Start Address" dword="2" bits="31:6" type="offset" />
+    <field name="Compute Dispatch All walker Enable" dword="3" bits="0:0" type="uint">
+      <value name="Disabled" value="0" />
+      <value name="Enabled" value="1" />
+    </field>
+    <field name="Thread Group Batch Size" dword="3" bits="4:3" type="uint">
+      <value name="TG_BATCH_1" value="0" />
+      <value name="TG_BATCH_2" value="1" />
+      <value name="TG_BATCH_4" value="2" />
+      <value name="TG_BATCH_8" value="3" />
+    </field>
+    <field name="Dispatch Walk Order" dword="3" bits="6:5" type="uint">
+      <value name="Linear Walk" value="0" />
+      <value name="Y order walk" value="1" />
+      <value name="Morton Walk" value="2" />
+    </field>
+    <field name="Message SIMD" dword="3" bits="18:17" type="uint">
+      <value name="SIMT16" value="1" />
+      <value name="SIMT32" value="2" />
+    </field>
+    <field name="Tile Layout" dword="3" bits="21:19" type="uint">
+      <value name="Linear" value="0" />
+      <value name="TileY 32bpe" value="1" />
+      <value name="TileY 64bpe" value="2" />
+      <value name="TileY 128bpe" value="3" />
+    </field>
+    <field name="Walk Order" dword="3" bits="24:22" type="uint">
+      <value name="Walk 012" value="0" />
+      <value name="Walk 021" value="1" />
+      <value name="Walk 102" value="2" />
+      <value name="Walk 120" value="3" />
+      <value name="Walk 201" value="4" />
+      <value name="Walk 210" value="5" />
+    </field>
+    <field name="Emit Inline Parameter" dword="3" bits="25:25" type="bool" />
+    <field name="Emit Local" dword="3" bits="28:26" type="uint">
+      <value name="Emit None" value="0" />
+      <value name="Emit X" value="1" />
+      <value name="Emit XY" value="3" />
+      <value name="Emit XYZ" value="7" />
+    </field>
+    <field name="Generate Local ID" dword="3" bits="29:29" type="bool" />
+    <field name="SIMD Size" dword="3" bits="31:30" type="uint">
+      <value name="SIMT16" value="1" />
+      <value name="SIMT32" value="2" />
+    </field>
+    <field name="Execution Mask" dword="4" bits="31:0" type="uint" />
+    <field name="Local X Maximum" dword="5" bits="9:0" type="uint" />
+    <field name="Local Y Maximum" dword="5" bits="19:10" type="uint" />
+    <field name="Local Z Maximum" dword="5" bits="29:20" type="uint" />
+    <field name="Thread Group ID X Dimension" dword="6" bits="31:0" type="uint" />
+    <field name="Thread Group ID Y Dimension" dword="7" bits="31:0" type="uint" />
+    <field name="Thread Group ID Z Dimension" dword="8" bits="31:0" type="uint" />
+    <field name="Thread Group ID Starting X" dword="9" bits="31:0" type="uint" />
+    <field name="Thread Group ID Starting Y" dword="10" bits="31:0" type="uint" />
+    <field name="Thread Group ID Starting Z" dword="11" bits="31:0" type="uint" />
+    <field name="Partition ID" dword="12" bits="31:0" type="uint" />
+    <field name="Partition Size" dword="13" bits="31:0" type="uint" />
+    <field name="Preempt X" dword="14" bits="31:0" type="uint" />
+    <field name="Preempt Y" dword="15" bits="31:0" type="uint" />
+    <field name="Preempt Z" dword="16" bits="31:0" type="uint" />
+    <field name="Walker ID" dword="17" bits="3:0" type="uint" />
+    <field name="Over dispatch TG count" dword="17" bits="23:8" type="uint" />
+    <field name="Interface Descriptor" dword="18" bits="255:0" type="INTERFACE_DESCRIPTOR_DATA" />
+    <field name="Post Sync" dword="26" bits="159:0" type="POSTSYNC_DATA" />
+    <group count="8" dword="31" size="32">
+      <field name="Inline Data" dword="0" bits="31:0" type="uint" />
+    </group>
+  </struct>
+  <struct name="SAMPLER_STATE" length="4">
+    <field name="Anisotropic Algorithm" dword="0" bits="0:0" type="uint">
+      <value name="LEGACY" value="0" />
+      <value name="EWA Approximation" value="1" />
+    </field>
+    <field name="Texture LOD Bias" dword="0" bits="13:1" type="s4.8" />
+    <field name="Min Mode Filter" dword="0" bits="16:14" type="uint" prefix="MAPFILTER">
+      <value name="NEAREST" value="0" />
+      <value name="LINEAR" value="1" />
+      <value name="ANISOTROPIC" value="2" />
+      <value name="ANISOTROPIC_FAST" value="3" />
+      <value name="MONO" value="6" />
+    </field>
+    <field name="Mag Mode Filter" dword="0" bits="19:17" type="uint" prefix="MAPFILTER">
+      <value name="NEAREST" value="0" />
+      <value name="LINEAR" value="1" />
+      <value name="ANISOTROPIC" value="2" />
+      <value name="ANISOTROPIC_FAST" value="3" />
+      <value name="MONO" value="6" />
+    </field>
+    <field name="Mip Mode Filter" dword="0" bits="21:20" type="uint" prefix="MIPFILTER">
+      <value name="NONE" value="0" />
+      <value name="NEAREST" value="1" />
+      <value name="LINEAR" value="3" />
+    </field>
+    <field name="Coarse LOD Quality Mode" dword="0" bits="26:22" type="uint" />
+    <field name="LOD PreClamp Mode" dword="0" bits="28:27" type="uint" prefix="CLAMP_MODE">
+      <value name="NONE" value="0" />
+      <value name="OGL" value="2" />
+    </field>
+    <field name="Texture Border Color Mode" dword="0" bits="29:29" type="uint">
+      <value name="DX10/OGL" value="0" />
+      <value name="DX9" value="1" />
+    </field>
+    <field name="CPS LOD Compensation Enable" dword="0" bits="30:30" type="bool" />
+    <field name="Sampler Disable" dword="0" bits="31:31" type="bool" />
+    <field name="Cube Surface Control Mode" dword="1" bits="0:0" type="uint">
+      <value name="PROGRAMMED" value="0" />
+      <value name="OVERRIDE" value="1" />
+    </field>
+    <field name="Shadow Function" dword="1" bits="3:1" type="uint" prefix="PREFILTEROP">
+      <value name="ALWAYS" value="0" />
+      <value name="NEVER" value="1" />
+      <value name="LESS" value="2" />
+      <value name="EQUAL" value="3" />
+      <value name="LEQUAL" value="4" />
+      <value name="GREATER" value="5" />
+      <value name="NOTEQUAL" value="6" />
+      <value name="GEQUAL" value="7" />
+    </field>
+    <field name="ChromaKey Mode" dword="1" bits="4:4" type="uint">
+      <value name="KEYFILTER_KILL_ON_ANY_MATCH" value="0" />
+      <value name="KEYFILTER_REPLACE_BLACK" value="1" />
+    </field>
+    <field name="ChromaKey Index" dword="1" bits="6:5" type="uint" />
+    <field name="ChromaKey Enable" dword="1" bits="7:7" type="bool" />
+    <field name="Max LOD" dword="1" bits="19:8" type="u4.8" />
+    <field name="Min LOD" dword="1" bits="31:20" type="u4.8" />
+    <field name="LOD Clamp Magnification Mode" dword="2" bits="0:0" type="uint">
+      <value name="MIPNONE" value="0" />
+      <value name="MIPFILTER" value="1" />
+    </field>
+    <field name="SRGB DECODE" dword="2" bits="1:1" type="uint">
+      <value name="DECODE_EXT" value="0" />
+      <value name="SKIP_DECODE_EXT" value="1" />
+    </field>
+    <field name="Return Filter Weight for Null Texels" dword="2" bits="2:2" type="uint" />
+    <field name="Return Filter Weight for Border Texels" dword="2" bits="3:3" type="uint" />
+    <field name="Force gather4 Behavior" dword="2" bits="5:5" type="bool" />
+    <field name="Border Color Pointer" dword="2" bits="31:6" type="offset" />
+    <field name="TCZ Address Control Mode" dword="3" bits="2:0" type="Texture Coordinate Mode" />
+    <field name="TCY Address Control Mode" dword="3" bits="5:3" type="Texture Coordinate Mode" />
+    <field name="TCX Address Control Mode" dword="3" bits="8:6" type="Texture Coordinate Mode" />
+    <field name="Reduction Type Enable" dword="3" bits="9:9" type="bool" />
+    <field name="Non-normalized Coordinate Enable" dword="3" bits="10:10" type="bool" />
+    <field name="Trilinear Filter Quality" dword="3" bits="12:11" type="uint">
+      <value name="FULL" value="0" />
+      <value name="HIGH" value="1" />
+      <value name="MED" value="2" />
+      <value name="LOW" value="3" />
+    </field>
+    <field name="R Address Min Filter Rounding Enable" dword="3" bits="13:13" type="bool" />
+    <field name="R Address Mag Filter Rounding Enable" dword="3" bits="14:14" type="bool" />
+    <field name="V Address Min Filter Rounding Enable" dword="3" bits="15:15" type="bool" />
+    <field name="V Address Mag Filter Rounding Enable" dword="3" bits="16:16" type="bool" />
+    <field name="U Address Min Filter Rounding Enable" dword="3" bits="17:17" type="bool" />
+    <field name="U Address Mag Filter Rounding Enable" dword="3" bits="18:18" type="bool" />
+    <field name="Maximum Anisotropy" dword="3" bits="21:19" type="uint">
+      <value name="RATIO 2:1" value="0" />
+      <value name="RATIO 4:1" value="1" />
+      <value name="RATIO 6:1" value="2" />
+      <value name="RATIO 8:1" value="3" />
+      <value name="RATIO 10:1" value="4" />
+      <value name="RATIO 12:1" value="5" />
+      <value name="RATIO 14:1" value="6" />
+      <value name="RATIO 16:1" value="7" />
+    </field>
+    <field name="Reduction Type" dword="3" bits="23:22" type="uint">
+      <value name="STD_FILTER" value="0" />
+      <value name="COMPARISON" value="1" />
+      <value name="MINIMUM" value="2" />
+      <value name="MAXIMUM" value="3" />
+    </field>
+    <field name="Allow Low Quality LOD Calculation" dword="3" bits="24:24" type="bool" />
+    <field name="Low Quality Filter" dword="3" bits="26:26" type="bool" />
+  </struct>
+  <instruction name="3DSTATE_BTD" bias="2" length="6" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="4" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="6" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Dispatch Timeout Counter" dword="1" bits="2:0" type="uint">
+      <value name="64 clocks" value="0" />
+      <value name="128 clocks" value="1" />
+      <value name="192 clocks" value="2" />
+      <value name="256 clocks" value="3" />
+      <value name="512 clocks" value="4" />
+      <value name="1024 clocks" value="5" />
+      <value name="2048 clocks" value="6" />
+      <value name="4096 clocks" value="7" />
+    </field>
+    <field name="Controls the maximum number of outstanding Ray Queries per SS" dword="1" bits="8:7" type="uint" prefix="RAYS_QUERIES_OUTSTANDING">
+      <value name="128" value="0" />
+      <value name="256" value="1" />
+      <value name="512" value="2" />
+      <value name="1024" value="3" />
+    </field>
+    <field name="RT Mem Structures 64b Mode Enable" dword="1" bits="30:30" type="bool" />
+    <field name="BTD Mid thread preemption" dword="1" bits="31:31" type="bool" />
+    <field name="Per DSS Memory Backed Buffer Size" dword="2" bits="2:0" type="uint" default="6">
+      <value name="2KB" value="0" />
+      <value name="4KB" value="1" />
+      <value name="8KB" value="2" />
+      <value name="16KB" value="3" />
+      <value name="32KB" value="4" />
+      <value name="64KB" value="5" />
+      <value name="128KB" value="6" />
+    </field>
+    <field name="Memory Backed Buffer Base Pointer" dword="2" bits="63:10" type="address" />
+    <field name="Scratch Space Buffer" dword="4" bits="31:10" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_COARSE_PIXEL" bias="2" length="2" engine="render">
+    <field name="DWord Length" dword="0" bits="15:0" type="uint" default="0" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="137" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="CPSizeX" dword="1" bits="1:0" type="STATE_CPS_SIZE" />
+    <field name="CPSizeY" dword="1" bits="3:2" type="STATE_CPS_SIZE" />
+    <field name="CPSizeCombiner1Opcode" dword="1" bits="6:4" type="STATE_CPS_COMBINER_OPCODE" />
+    <field name="CPSizeCombiner0Opcode" dword="1" bits="9:7" type="STATE_CPS_COMBINER_OPCODE" />
+    <field name="Disable CPS Pointers" dword="1" bits="31:31" type="bool" />
+  </instruction>
+  <instruction name="3DSTATE_DS" bias="2" length="11" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="9" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="29" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Registers Per Thread" dword="3" bits="5:0" type="uint" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Accesses UAV" dword="3" bits="14:14" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="bool" />
+    <field name="Scratch Space Buffer" dword="4" bits="31:10" type="uint" />
+    <field name="Patch URB Entry Read Offset" dword="6" bits="9:4" type="uint" />
+    <field name="Patch URB Entry Read Length" dword="6" bits="17:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="6" bits="24:20" type="uint" />
+    <field name="Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Cache Disable" dword="7" bits="1:1" type="bool" />
+    <field name="Compute W Coordinate Enable" dword="7" bits="2:2" type="bool" />
+    <field name="Dispatch Mode" dword="7" bits="4:3" type="uint" prefix="DISPATCH_MODE">
+      <value name="SIMD8_SINGLE_PATCH" value="1" />
+      <value name="SIMD8_SINGLE_OR_DUAL_PATCH" value="2" />
+    </field>
+    <field name="Primitive ID Not Required" dword="7" bits="9:9" type="bool" />
+    <field name="Statistics Enable" dword="7" bits="10:10" type="bool" />
+    <field name="Maximum Number of Threads" dword="7" bits="30:21" type="uint" />
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="8" bits="7:0" type="uint" />
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="8" bits="15:8" type="uint" />
+    <field name="Vertex URB Entry Output Length" dword="8" bits="20:16" type="uint" />
+    <field name="Vertex URB Entry Output Read Offset" dword="8" bits="26:21" type="uint" />
+    <field name="QUAD_PATCH Kernel Start Pointer" dword="9" bits="63:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_GS" bias="2" length="10" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="8" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="17" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Expected Vertex Count" dword="3" bits="5:0" type="uint" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="3" bits="11:11" type="bool" />
+    <field name="Accesses UAV" dword="3" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="Normal" value="0" />
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="uint">
+      <value name="Dmask" value="0" />
+    </field>
+    <field name="Single Program Flow" dword="3" bits="31:31" type="bool" />
+    <field name="Scratch Space Buffer" dword="4" bits="31:10" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="6" bits="3:0" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="6" bits="9:4" type="uint" />
+    <field name="Include Vertex Handles" dword="6" bits="10:10" type="bool" />
+    <field name="Vertex URB Entry Read Length" dword="6" bits="16:11" type="uint" />
+    <field name="Output Topology" dword="6" bits="22:17" type="3D_Prim_Topo_Type" />
+    <field name="Output Vertex Size" dword="6" bits="28:23" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data [5:4]" dword="6" bits="30:29" type="uint" />
+    <field name="Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Discard Adjacency" dword="7" bits="1:1" type="bool" />
+    <field name="Reorder Mode" dword="7" bits="2:2" type="uint">
+      <value name="LEADING" value="0" />
+      <value name="TRAILING" value="1" />
+    </field>
+    <field name="Hint" dword="7" bits="3:3" type="bool" />
+    <field name="Include Primitive ID" dword="7" bits="4:4" type="bool" />
+    <field name="Invocations Increment Value" dword="7" bits="9:5" type="uint" />
+    <field name="Statistics Enable" dword="7" bits="10:10" type="bool" />
+    <field name="Default Stream Id" dword="7" bits="14:13" type="uint" />
+    <field name="Instance Control" dword="7" bits="19:15" type="uint" />
+    <field name="Control Data Header Size" dword="7" bits="23:20" type="uint" />
+    <field name="Registers Per Thread" dword="7" bits="31:26" type="uint" />
+    <field name="Maximum Number of Threads" dword="8" bits="8:0" type="uint" />
+    <field name="Static Output Vertex Count" dword="8" bits="26:16" type="uint" />
+    <field name="Static Output" dword="8" bits="30:30" type="bool" />
+    <field name="Control Data Format" dword="8" bits="31:31" type="uint">
+      <value name="CUT" value="0" />
+      <value name="SID" value="1" />
+    </field>
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="9" bits="7:0" type="uint" />
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="9" bits="15:8" type="uint" />
+    <field name="Vertex URB Entry Output Length" dword="9" bits="20:16" type="uint" />
+    <field name="Vertex URB Entry Output Read Offset" dword="9" bits="26:21" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_HS" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="27" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Patch Count Threshold" dword="1" bits="3:0" type="uint" />
+    <field name="Registers Per Thread" dword="1" bits="9:4" type="uint" />
+    <field name="Software Exception Enable" dword="1" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="1" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="1" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="1" bits="17:17" type="uint">
+      <value name="Normal" value="0" />
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="1" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="1" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Instance Count" dword="2" bits="4:0" type="uint" />
+    <field name="Maximum Number of Threads" dword="2" bits="16:8" type="uint" />
+    <field name="Statistics Enable" dword="2" bits="29:29" type="bool" />
+    <field name="Enable" dword="2" bits="31:31" type="bool" />
+    <field name="Kernel Start Pointer" dword="3" bits="63:6" type="offset" />
+    <field name="Scratch Space Buffer" dword="5" bits="31:10" type="uint" />
+    <field name="Include Primitive ID" dword="7" bits="0:0" type="bool" />
+    <field name="Vertex URB Entry Read Offset" dword="7" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="7" bits="16:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="7" bits="23:19" type="uint" />
+    <field name="Include Vertex Handles" dword="7" bits="24:24" type="bool" />
+    <field name="Accesses UAV" dword="7" bits="25:25" type="bool" />
+    <field name="Vector Mask Enable" dword="7" bits="26:26" type="uint">
+      <value name="Dmask" value="0" />
+    </field>
+    <field name="Single Program Flow" dword="7" bits="27:27" type="bool" />
+    <field name="Dispatch GRF Start Register For URB Data [5]" dword="7" bits="28:28" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_MESH_SHADER" bias="2" length="8" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="6" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="122" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Local X Maximum" dword="3" bits="9:0" type="uint" />
+    <field name="Software Exception Enable" dword="3" bits="10:10" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="3" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Single Program Flow" dword="3" bits="18:18" type="uint" />
+    <field name="Denorm Mode" dword="3" bits="19:19" type="uint">
+      <value name="Ftz" value="0" />
+      <value name="SetByKernel" value="1" />
+    </field>
+    <field name="Registers Per Thread" dword="3" bits="25:20" type="uint" />
+    <field name="Number of Threads in GPGPU Thread Group" dword="4" bits="9:0" type="uint" />
+    <field name="Shared Local Memory Size" dword="4" bits="20:16" type="uint" />
+    <field name="Rounding Mode" dword="4" bits="23:22" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Preferred SLM Allocation Size" dword="4" bits="27:24" type="PREF_SLM_ALLOCATION_SIZE" />
+    <field name="Number of Barriers" dword="4" bits="30:28" type="uint" />
+    <field name="Indirect Data Length" dword="5" bits="16:0" type="uint" />
+    <field name="L3 Prefetch Disable" dword="5" bits="17:17" type="bool" />
+    <field name="Emit Local ID X" dword="5" bits="18:18" type="bool" />
+    <field name="Emit Inline Parameter" dword="5" bits="19:19" type="bool" />
+    <field name="Systolic Mode Enable" dword="5" bits="20:20" type="bool" />
+    <field name="Accesses UAV" dword="5" bits="21:21" type="bool" />
+    <field name="XP0 Required" dword="5" bits="22:22" type="uint" />
+    <field name="Message SIMD" dword="5" bits="29:28" type="uint">
+      <value name="SIMD16" value="1" />
+      <value name="SIMD32" value="2" />
+    </field>
+    <field name="SIMD Size" dword="5" bits="31:30" type="uint">
+      <value name="SIMD16" value="1" />
+      <value name="SIMD32" value="2" />
+    </field>
+    <field name="Execution Mask" dword="6" bits="31:0" type="uint" />
+    <field name="Maximum Primitive Count" dword="7" bits="9:0" type="uint" />
+    <field name="Per-Primitive Data Pitch" dword="7" bits="16:12" type="uint" />
+    <field name="Per-Vertex Data Pitch" dword="7" bits="24:20" type="uint" />
+    <field name="Index Format" dword="7" bits="27:25" type="uint" prefix="INDEX">
+      <value name="U888X" value="0" />
+      <value name="U101010X" value="1" />
+      <value name="U8" value="4" />
+      <value name="U16" value="5" />
+      <value name="U32" value="3" />
+    </field>
+    <field name="Output Topology" dword="7" bits="29:28" type="uint" prefix="OUTPUT">
+      <value name="POINT" value="0" />
+      <value name="LINE" value="1" />
+      <value name="TRI" value="2" />
+    </field>
+    <field name="Per-Primitive Data Present" dword="7" bits="31:31" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_PS" bias="2" length="12" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="10" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="32" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel 0 Enable" dword="1" bits="0:0" type="bool" />
+    <field name="Kernel[0] : SIMD Width" dword="1" bits="1:1" type="uint" prefix="PS">
+      <value name="SIMD16" value="0" />
+      <value name="SIMD32" value="1" />
+    </field>
+    <field name="Kernel Start Pointer 0" dword="1" bits="63:6" type="offset" />
+    <field name="Registers Per Thread" dword="3" bits="5:0" type="uint" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="3" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Rounding Mode" dword="3" bits="15:14" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="Normal" value="0" />
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Single Precision Denormal Mode" dword="3" bits="26:26" type="uint">
+      <value name="Flushed to Zero" value="0" />
+      <value name="Retained" value="1" />
+    </field>
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="uint">
+      <value name="Dmask" value="0" />
+      <value name="Vmask" value="1" />
+    </field>
+    <field name="Single Program Flow" dword="3" bits="31:31" type="uint">
+      <value name="Multiple" value="0" />
+      <value name="Single" value="1" />
+    </field>
+    <field name="Scratch Space Buffer" dword="4" bits="31:10" type="uint" />
+    <field name="Position XY Offset Select" dword="6" bits="4:3" type="uint">
+      <value name="POSOFFSET_NONE" value="0" />
+      <value name="POSOFFSET_CENTROID" value="2" />
+      <value name="POSOFFSET_SAMPLE" value="3" />
+    </field>
+    <field name="Render Target Resolve Type" dword="6" bits="7:6" type="uint">
+      <value name="RESOLVE_DISABLED" value="0" />
+    </field>
+    <field name="Render Target Fast Clear Enable" dword="6" bits="8:8" type="bool" />
+    <field name="Overlapping Subspans Enable" dword="6" bits="9:9" type="bool" />
+    <field name="3D Scoreboard Address Size select" dword="6" bits="10:10" type="uint">
+      <value name="2x2" value="0" />
+      <value name="4x2" value="1" />
+    </field>
+    <field name="Clear/Resolve BTI for Render Target" dword="6" bits="19:12" type="uint" />
+    <field name="Pixel Scoreboard Disable" dword="6" bits="21:21" type="bool" />
+    <field name="Maximum Number of Threads Per PSD" dword="6" bits="31:23" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 1" dword="7" bits="15:8" type="uint" />
+    <field name="Dispatch GRF Start Register For Constant/Setup Data 0" dword="7" bits="23:16" type="uint" />
+    <field name="Kernel[0] : Poly Packing Policy" dword="7" bits="26:24" type="uint">
+      <value name="POLY_PACK4_DYNAMIC" value="0" />
+      <value name="POLY_PACK8_DYNAMIC" value="1" />
+      <value name="POLY_PACK16_DYNAMIC" value="2" />
+      <value name="POLY_PACK16_FIXED" value="3" />
+      <value name="POLY_PACK8_FIXED" value="4" />
+    </field>
+    <field name="Kernel[0] : Maximum Polys per Thread" dword="7" bits="29:27" type="uint" />
+    <field name="Kernel 1 Selection Priority" dword="7" bits="31:31" type="uint">
+      <value name="PRI_SIMD" value="0" />
+      <value name="PRI_POLY" value="1" />
+    </field>
+    <field name="Kernel 1 Enable" dword="8" bits="0:0" type="bool" />
+    <field name="Kernel[1] : SIMD Width" dword="8" bits="1:1" type="uint" prefix="PS">
+      <value name="SIMD16" value="0" />
+      <value name="SIMD32" value="1" />
+    </field>
+    <field name="Kernel Start Pointer 1" dword="8" bits="63:6" type="offset" />
+  </instruction>
+  <instruction name="3DSTATE_TASK_SHADER" bias="2" length="7" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="5" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="125" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Local X Maximum" dword="3" bits="9:0" type="uint" />
+    <field name="Software Exception Enable" dword="3" bits="10:10" type="bool" />
+    <field name="Mask Stack Exception Enable" dword="3" bits="11:11" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Single Program Flow" dword="3" bits="18:18" type="uint" />
+    <field name="Denorm Mode" dword="3" bits="19:19" type="uint">
+      <value name="Ftz" value="0" />
+      <value name="SetByKernel" value="1" />
+    </field>
+    <field name="Registers Per Thread" dword="3" bits="25:20" type="uint" />
+    <field name="Number of Threads in GPGPU Thread Group" dword="4" bits="9:0" type="uint" />
+    <field name="Shared Local Memory Size" dword="4" bits="20:16" type="uint" />
+    <field name="Barrier Enable" dword="4" bits="21:21" type="bool" />
+    <field name="Rounding Mode" dword="4" bits="23:22" type="uint">
+      <value name="RTNE" value="0" />
+      <value name="RU" value="1" />
+      <value name="RD" value="2" />
+      <value name="RTZ" value="3" />
+    </field>
+    <field name="Preferred SLM Allocation Size" dword="4" bits="27:24" type="uint" />
+    <field name="Number of Barriers" dword="4" bits="30:28" type="uint" />
+    <field name="Indirect Data Length" dword="5" bits="16:0" type="uint" />
+    <field name="L3 Prefetch Disable" dword="5" bits="17:17" type="bool" />
+    <field name="Emit Local ID X" dword="5" bits="18:18" type="bool" />
+    <field name="Emit Inline Parameter" dword="5" bits="19:19" type="bool" />
+    <field name="Systolic Mode Enable" dword="5" bits="20:20" type="bool" />
+    <field name="Accesses UAV" dword="5" bits="21:21" type="bool" />
+    <field name="XP0 Required" dword="5" bits="22:22" type="uint" />
+    <field name="Message SIMD" dword="5" bits="29:28" type="uint">
+      <value name="SIMD16" value="1" />
+      <value name="SIMD32" value="2" />
+    </field>
+    <field name="SIMD Size" dword="5" bits="31:30" type="uint">
+      <value name="SIMD16" value="1" />
+      <value name="SIMD32" value="2" />
+    </field>
+    <field name="Execution Mask" dword="6" bits="31:0" type="uint" />
+  </instruction>
+  <instruction name="3DSTATE_VS" bias="2" length="9" engine="render">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="7" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="16" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Kernel Start Pointer" dword="1" bits="63:6" type="offset" />
+    <field name="Registers Per Thread" dword="3" bits="5:0" type="uint" />
+    <field name="Software Exception Enable" dword="3" bits="7:7" type="bool" />
+    <field name="Accesses UAV" dword="3" bits="12:12" type="bool" />
+    <field name="Illegal Opcode Exception Enable" dword="3" bits="13:13" type="bool" />
+    <field name="Floating Point Mode" dword="3" bits="16:16" type="uint">
+      <value name="IEEE-754" value="0" />
+      <value name="Alternate" value="1" />
+    </field>
+    <field name="Thread Dispatch Priority" dword="3" bits="17:17" type="uint">
+      <value name="Normal" value="0" />
+      <value name="High" value="1" />
+    </field>
+    <field name="Binding Table Entry Count" dword="3" bits="25:18" type="uint" />
+    <field name="Sampler Count" dword="3" bits="29:27" type="uint">
+      <value name="No Samplers" value="0" />
+      <value name="1-4 Samplers" value="1" />
+      <value name="5-8 Samplers" value="2" />
+      <value name="9-12 Samplers" value="3" />
+      <value name="13-16 Samplers" value="4" />
+    </field>
+    <field name="Vector Mask Enable" dword="3" bits="30:30" type="uint">
+      <value name="Dmask" value="0" />
+    </field>
+    <field name="Scratch Space Buffer" dword="4" bits="31:10" type="uint" />
+    <field name="Vertex URB Entry Read Offset" dword="6" bits="9:4" type="uint" />
+    <field name="Vertex URB Entry Read Length" dword="6" bits="16:11" type="uint" />
+    <field name="Dispatch GRF Start Register For URB Data" dword="6" bits="24:20" type="uint" />
+    <field name="Enable" dword="7" bits="0:0" type="bool" />
+    <field name="Vertex Cache Disable" dword="7" bits="1:1" type="bool" />
+    <field name="Single Instance Dispatch Enable" dword="7" bits="9:9" type="bool" />
+    <field name="Statistics Enable" dword="7" bits="10:10" type="bool" />
+    <field name="Maximum Number of Threads" dword="7" bits="31:22" type="uint" />
+    <field name="User Clip Distance Cull Test Enable Bitmask" dword="8" bits="7:0" type="uint" />
+    <field name="User Clip Distance Clip Test Enable Bitmask" dword="8" bits="15:8" type="uint" />
+    <field name="Vertex URB Entry Output Length" dword="8" bits="20:16" type="uint" />
+    <field name="Vertex URB Entry Output Read Offset" dword="8" bits="26:21" type="uint" />
+  </instruction>
+  <instruction name="STATE_COMPUTE_MODE" bias="2" length="3" engine="render|compute">
+    <field name="DWord Length" dword="0" bits="7:0" type="uint" default="1" />
+    <field name="3D Command Sub Opcode" dword="0" bits="23:16" type="uint" default="5" />
+    <field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="1" />
+    <field name="Command SubType" dword="0" bits="28:27" type="uint" default="0" />
+    <field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
+    <field name="Z Pass Async Compute Thread Limit" dword="1" bits="2:0" type="uint" prefix="ZPACTL">
+      <value name="Max 60" value="0" />
+      <value name="Max 64" value="1" />
+      <value name="Max 56" value="2" />
+      <value name="Max 48" value="3" />
+      <value name="Max 40" value="4" />
+      <value name="Max 32" value="5" />
+    </field>
+    <field name="Z Async Throttle settings" dword="1" bits="4:3" type="uint" prefix="ZATS">
+      <value name="Defer to Async Compute Thread Limit" value="0" />
+      <value name="Max 32" value="1" />
+      <value name="Max 40" value="2" />
+      <value name="Max 48" value="3" />
+    </field>
+    <field name="Async Compute Thread Limit" dword="1" bits="9:7" type="uint" prefix="ACTL">
+      <value name="Disabled" value="0" />
+      <value name="Max 2" value="1" />
+      <value name="Max 8" value="2" />
+      <value name="Max 16" value="3" />
+      <value name="Max 24" value="4" />
+      <value name="Max 32" value="5" />
+      <value name="Max 40" value="6" />
+      <value name="Max 48" value="7" />
+    </field>
+    <field name="Enable Variable Register Size Allocation" dword="1" bits="10:10" type="bool" />
+    <field name="EU Thread Scheduling Mode Override" dword="1" bits="14:13" type="uint" />
+    <field name="Large GRF Mode" dword="1" bits="15:15" type="bool" />
+    <field name="Z Pass Async Compute Thread Limit Mask" dword="1" bits="18:16" type="uint" />
+    <field name="Mask1" dword="1" bits="31:16" type="uint" />
+    <field name="Z Async Throttle settings Mask" dword="1" bits="20:19" type="uint" />
+    <field name="Async Compute Thread Limit Mask" dword="1" bits="25:23" type="uint" />
+    <field name="Enable Variable Register Size Allocation Mask" dword="1" bits="26:26" type="uint" />
+    <field name="EU Thread Scheduling Mode Override Mask" dword="1" bits="30:29" type="uint" />
+    <field name="Large GRF Mode Mask" dword="1" bits="31:31" type="bool" />
+    <field name="Midthread Preemption Delay Timer" dword="2" bits="2:0" type="uint">
+      <value name="MTP_TIMER_VAL_0" value="0" />
+      <value name="MTP_TIMER_VAL_50" value="1" />
+      <value name="MTP_TIMER_VAL_100" value="2" />
+      <value name="MTP_TIMER_VAL_150" value="3" />
+    </field>
+    <field name="Midthread Preemption Overdispatch Thread group count" dword="2" bits="4:3" type="uint">
+      <value name="OD_TG_M2" value="0" />
+      <value name="OD_TG_M4" value="1" />
+      <value name="OD_TG_M8" value="2" />
+      <value name="OD_TG_M16" value="3" />
+    </field>
+    <field name="Midthread Preemption Overdispatch Test mode" dword="2" bits="5:5" type="uint">
+      <value name="Regular" value="0" />
+      <value name="Test mode" value="1" />
+    </field>
+    <field name="UAV Coherency Mode" dword="2" bits="6:6" type="uint">
+      <value name="Drain DataPort Mode" value="0" />
+      <value name="Flush Dataport L1" value="1" />
+    </field>
+    <field name="Midthread Preemption Delay Timer Mask" dword="2" bits="18:16" type="uint" />
+    <field name="Mask2" dword="2" bits="31:16" type="uint" />
+    <field name="Midthread Preemption Overdispatch Thread group count Mask" dword="2" bits="20:19" type="uint" />
+    <field name="Midthread Preemption Overdispatch Test mode Mask" dword="2" bits="21:21" type="uint" />
+    <field name="UAV Coherency Mode Mask" dword="2" bits="22:22" type="uint" />
+    <field name="Memory allocation for Scratch and Midthread Preemption buffers Mask" dword="2" bits="27:27" type="uint" />
+  </instruction>
+  <register name="CHICKEN_RASTER_2" length="1" num="0x6208">
+    <field name="Disable Any MCTR response fix" dword="0" bits="5:5" type="bool" />
+    <field name="Disable Any MCTR response fix Mask" dword="0" bits="21:21" type="bool" />
+  </register>
+</genxml>
diff --git a/lib/genxml/xe3p.xml b/lib/genxml/xe3p.xml
new file mode 100644
index 000000000..cfd51bb30
--- /dev/null
+++ b/lib/genxml/xe3p.xml
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='utf-8'?>
+<genxml name="XE3P" gen="35">
+  <import name="xe3.xml" />
+</genxml>
diff --git a/lib/meson.build b/lib/meson.build
index 5c4829345..021bca3b0 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -290,13 +290,76 @@ foreach f: iga64_assembly_sources
 	)
 endforeach
 
+# genxml pack-header generation
+genxml_gen_deps = files(
+    'genxml/gen_pack_header.py',
+    'genxml/gen_decode_header.py',
+    'genxml/intel_genxml.py',
+    'genxml/util.py',
+    'genxml/gen40.xml',
+    'genxml/gen45.xml',
+    'genxml/gen50.xml',
+    'genxml/gen60.xml',
+    'genxml/gen70.xml',
+    'genxml/gen75.xml',
+    'genxml/gen80.xml',
+    'genxml/gen90.xml',
+    'genxml/gen110.xml',
+    'genxml/gen120.xml',
+    'genxml/gen125.xml',
+    'genxml/xe2.xml',
+    'genxml/xe3.xml',
+    'genxml/xe3p.xml',
+)
+
+# Ordered list of all gens, oldest first.  Each gen's baselines are all
+# the gens that precede it.  Items unchanged since their introduction are
+# omitted from the generated header; the comment points directly to the
+# oldest gen that defined that layout so that a developer can find the
+# real struct in one grep.
+genxml_gens = ['gen90', 'gen110', 'gen120', 'gen125', 'xe2', 'xe3', 'xe3p']
+
+genxml_pack_headers = []
+genxml_decode_headers = []
+genxml_prev_gens = []
+foreach gen : genxml_gens
+    cmd = [python3, '@INPUT@', '--engines=render,blitter,compute']
+    decode_cmd = [python3, '@INPUT@', '--engines=render,blitter,compute']
+    foreach baseline : genxml_prev_gens
+        cmd += ['--baseline',
+                meson.current_source_dir() / 'genxml' / baseline + '.xml']
+        decode_cmd += ['--baseline',
+                       meson.current_source_dir() / 'genxml' / baseline + '.xml']
+    endforeach
+    genxml_prev_gens += gen
+    genxml_pack_headers += custom_target(gen + '_pack.h',
+        input : ['genxml/gen_pack_header.py', 'genxml/' + gen + '.xml'],
+        output : gen + '_pack.h',
+        command : cmd,
+        capture : true,
+        depend_files : genxml_gen_deps,
+    )
+    genxml_decode_headers += custom_target(gen + '_decode.h',
+        input : ['genxml/gen_decode_header.py', 'genxml/' + gen + '.xml'],
+        output : gen + '_decode.h',
+        command : decode_cmd,
+        capture : true,
+        depend_files : genxml_gen_deps,
+    )
+endforeach
+
+genxml_dep = declare_dependency(
+    sources : genxml_pack_headers + genxml_decode_headers,
+    include_directories : include_directories('.'),
+)
+
 lib_intermediates = []
 foreach f: lib_sources
     name = f.underscorify()
     lib = static_library('igt-' + name,
 	[ f, lib_version ],
 	include_directories: inc,
-	dependencies : lib_deps,
+	dependencies : lib_deps + [genxml_dep],
 	c_args : [
 	    '-DIGT_DATADIR="@0@"'.format(join_paths(prefix, datadir)),
 	    '-DIGT_SRCDIR="@0@"'.format(srcdir),
-- 
2.34.1


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

* [PATCH 2/3] lib/rendercopy: Convert rendercopy_gen9 to use genxml pack headers
  2026-04-07 13:26 [PATCH 0/3] lib/genxml: Introduce Mesa genxml infrastructure to IGT Jan Maslak
  2026-04-07 13:26 ` [PATCH 1/3] lib/genxml: Import genxml definitions and generators from Mesa Jan Maslak
@ 2026-04-07 13:26 ` Jan Maslak
  2026-04-07 15:00   ` Ville Syrjälä
  2026-04-07 13:26 ` [PATCH 3/3] lib: Add genxml annotated batch buffer decode Jan Maslak
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 13+ messages in thread
From: Jan Maslak @ 2026-04-07 13:26 UTC (permalink / raw)
  To: igt-dev; +Cc: zbigniew.kempczynski, Jan Maslak

Replace hand-written struct assignments and intel_bb_out() calls in
rendercopy_gen9.c with igt_genxml_emit and igt_genxml_pack_state calls
backed by the genxml pack headers.  Command emission is now driven directly
from the hardware XML definitions rather than manually maintained structs.

Signed-off-by: Jan Maslak <jan.maslak@intel.com>
---
 lib/rendercopy_gen9.c | 1117 ++++++++++++++++++++---------------------
 1 file changed, 551 insertions(+), 566 deletions(-)

diff --git a/lib/rendercopy_gen9.c b/lib/rendercopy_gen9.c
index d44988010..eecb20a32 100644
--- a/lib/rendercopy_gen9.c
+++ b/lib/rendercopy_gen9.c
@@ -21,11 +21,17 @@
 #include "intel_io.h"
 #include "intel_mocs.h"
 #include "rendercopy.h"
-#include "gen9_render.h"
+#include "surfaceformat.h"
 #include "xe2_render.h"
 #include "intel_reg.h"
 #include "igt_aux.h"
 #include "intel_chipset.h"
+#include "genxml/igt_genxml.h"
+#include "gen90_pack.h"
+#include "gen110_pack.h"
+#include "gen120_pack.h"
+#include "gen125_pack.h"
+#include "xe2_pack.h"
 
 #define VERTEX_SIZE (3*4)
 
@@ -187,13 +193,60 @@ static uint32_t dg2_compression_format(const struct intel_buf *buf)
 	}
 }
 
-/* Mostly copy+paste from gen6, except height, width, pitch moved */
+/*
+ * IGT_RSS_COMMON - set RENDER_SURFACE_STATE fields shared across all gens.
+ * Works via C preprocessor structural typing: all gen-specific structs
+ * have identical field names for these members.
+ */
+#define IGT_RSS_COMMON(ss, buf, mocs_val, rd, wd)                          \
+	do {                                                               \
+		ss.SurfaceType = GFX9_SURFTYPE_2D;                        \
+		ss.SurfaceFormat = gen4_surface_format((buf)->bpp,         \
+					       (buf)->depth);      \
+		ss.SurfaceVerticalAlignment = GFX9_VALIGN_4;              \
+		ss.MOCS = (mocs_val);                                      \
+		ss.Width = intel_buf_width(buf) - 1;                       \
+		ss.Height = intel_buf_height(buf) - 1;                     \
+		ss.SurfacePitch = (buf)->surface[0].stride - 1;            \
+		ss.ShaderChannelSelectRed = (int)GFX9_SCS_RED;                 \
+		ss.ShaderChannelSelectGreen = (int)GFX9_SCS_GREEN;             \
+		ss.ShaderChannelSelectBlue = (int)GFX9_SCS_BLUE;               \
+		ss.ShaderChannelSelectAlpha = (int)GFX9_SCS_ALPHA;             \
+		ss.SurfaceBaseAddress =                                    \
+			igt_address_of((buf), (buf)->surface[0].offset,    \
+				       (rd), (wd));                        \
+	} while (0)
+
+/*
+ * IGT_RSS_TILING - set TileMode from buf->tiling.  The numeric encoding is
+ * identical across gen9/gen12/gen12.5/xe2, but the enum names differ per gen.
+ * We use xe2 (GFX20) names as they best reflect the modern tile semantics;
+ * (int) casts suppress -Wenum-conversion when used with older-gen structs.
+ */
+#define IGT_RSS_TILING(ss, buf)                                            \
+	do {                                                               \
+		switch ((buf)->tiling) {                                    \
+		case I915_TILING_NONE:                                     \
+			ss.TileMode = (int)GFX20_LINEAR;                  \
+			break;                                             \
+		case I915_TILING_X:                                        \
+			ss.TileMode = (int)GFX20_XMAJOR;                  \
+			break;                                             \
+		case I915_TILING_64:                                       \
+			ss.TileMode = (int)GFX20_TILE64;                  \
+			ss.MipTailStartLOD = 0xf;                          \
+			break;                                             \
+		default:                                                   \
+			ss.TileMode = (int)GFX20_TILE4;                   \
+		}                                                          \
+	} while (0)
+
 static uint32_t
-gen9_bind_buf(struct intel_bb *ibb, const struct intel_buf *buf, int is_dst,
-	      bool fast_clear) {
-	struct gen9_surface_state *ss;
+gen9_bind_buf(struct intel_bb *ibb, const struct intel_buf *buf, int is_dst) {
 	uint32_t write_domain, read_domain;
-	uint64_t address;
+	unsigned int gen = intel_gen(ibb->devid);
+	uint32_t mocs;
+	void *ss_ptr;
 
 	igt_assert_lte(buf->surface[0].stride, 256*1024);
 	igt_assert_lte(intel_buf_width(buf), 16384);
@@ -206,120 +259,106 @@ gen9_bind_buf(struct intel_bb *ibb, const struct intel_buf *buf, int is_dst,
 		read_domain = I915_GEM_DOMAIN_SAMPLER;
 	}
 
-	ss = intel_bb_ptr_align(ibb, 64);
-
-	ss->ss0.surface_type = SURFACE_2D;
-	ss->ss0.surface_format = gen4_surface_format(buf->bpp, buf->depth);
-	ss->ss0.vertical_alignment = 1; /* align 4 */
-	ss->ss0.horizontal_alignment = 1; /* align 4 or HALIGN_32 on display ver >= 13*/
+	/* MOCS encoding: genxml has a single 7-bit MOCS field (bits 30:24).
+	 * The old struct had mocs_index:6 at bits 30:25 and pxp:1 at bit 24.
+	 * Reproduce the same bit layout. */
+	mocs = (buf->mocs_index << 1) | (intel_buf_pxp(buf) ? 1 : 0);
 
-	ss->ss1.mocs_index = buf->mocs_index;
+	ss_ptr = intel_bb_ptr_align(ibb, 64);
 
-	if (HAS_4TILE(ibb->devid)) {
-		ss->ss5.mip_tail_start_lod = 0;
-	} else {
-		ss->ss0.render_cache_read_write = 1;
-		ss->ss5.mip_tail_start_lod = 1; /* needed with trmode */
-	}
-
-	switch (buf->tiling) {
-	case I915_TILING_NONE:
-		ss->ss0.tiled_mode = 0;
-		break;
-	case I915_TILING_X:
-		ss->ss0.tiled_mode = 2;
-		break;
-	case I915_TILING_64:
-		ss->ss0.tiled_mode = 1;
-		ss->ss5.mip_tail_start_lod = 0xf;
-		break;
-	default:
-		ss->ss0.tiled_mode = 3;
-		if (buf->tiling == I915_TILING_Yf)
-			ss->ss5.trmode = 1;
-		else if (buf->tiling == I915_TILING_Ys)
-			ss->ss5.trmode = 2;
-		break;
-	}
+	if (gen >= 20) {
+		/* ── Xe2 (LNL+) ── */
+		igt_genxml_pack_state(ibb, GFX20_RENDER_SURFACE_STATE, ss_ptr, ss) {
+			IGT_RSS_COMMON(ss, buf, mocs, read_domain, write_domain);
+			IGT_RSS_TILING(ss, buf);
+			ss.SurfaceHorizontalAlignment = GFX20_HALIGN_32;
 
-	if (intel_buf_pxp(buf))
-		ss->ss1.pxp = 1;
-
-	address = intel_bb_offset_reloc_with_delta(ibb, buf->handle,
-						   read_domain, write_domain,
-						   buf->surface[0].offset,
-						   intel_bb_offset(ibb) + 4 * 8,
-						   buf->addr.offset);
-	ss->ss8.base_addr = (address + buf->surface[0].offset);
-	ss->ss9.base_addr_hi = (address + buf->surface[0].offset) >> 32;
-
-	ss->ss2.height = intel_buf_height(buf) - 1;
-	ss->ss2.width  = intel_buf_width(buf) - 1;
-	ss->ss3.pitch  = buf->surface[0].stride - 1;
-
-	ss->ss7.skl.shader_chanel_select_r = 4;
-	ss->ss7.skl.shader_chanel_select_g = 5;
-	ss->ss7.skl.shader_chanel_select_b = 6;
-	ss->ss7.skl.shader_chanel_select_a = 7;
-
-	if (buf->compression == I915_COMPRESSION_MEDIA)
-		ss->ss7.tgl.media_compression = 1;
-	else if (buf->compression == I915_COMPRESSION_RENDER) {
-		if (intel_gen(ibb->devid) >= 20)
-			ss->ss6.aux_mode = 0x0; /* AUX_NONE, unified compression */
-		else
-			ss->ss6.aux_mode = 0x5; /* AUX_CCS_E */
-
-		if (intel_gen(ibb->devid) < 12 && buf->ccs[0].stride) {
-			ss->ss6.aux_pitch = (buf->ccs[0].stride / 128) - 1;
-
-			address = intel_bb_offset_reloc_with_delta(ibb, buf->handle,
-								   read_domain, write_domain,
-								   (buf->cc.offset ? (1 << 10) : 0)
-								   | buf->ccs[0].offset,
-								   intel_bb_offset(ibb) + 4 * 10,
-								   buf->addr.offset);
-			ss->ss10.aux_base_addr = (address + buf->ccs[0].offset) >> 12;
-			ss->ss11.aux_base_addr_hi = (address + buf->ccs[0].offset) >> 32;
+			if (buf->compression == I915_COMPRESSION_RENDER) {
+				ss.AuxiliarySurfaceMode = GFX20_AUX_NONE;
+				ss.CompressionFormat = lnl_compression_format(buf);
+			}
 		}
 
-		if (buf->cc.offset) {
-			igt_assert(buf->compression == I915_COMPRESSION_RENDER);
-
-			ss->ss10.clearvalue_addr_enable = 1;
-
-			address = intel_bb_offset_reloc_with_delta(ibb, buf->handle,
-								   read_domain, write_domain,
-								   buf->cc.offset,
-								   intel_bb_offset(ibb) + 4 * 12,
-								   buf->addr.offset);
-
-			/*
-			 * If this assert doesn't hold below clear address will be
-			 * written wrong.
-			 */
-
-			igt_assert(__builtin_ctzl(address + buf->cc.offset) >= 6 &&
-				   (__builtin_clzl(address + buf->cc.offset) >= 16));
-
-			ss->ss12.dg2.clear_address = (address + buf->cc.offset) >> 6;
-			ss->ss13.clear_address_hi = (address + buf->cc.offset) >> 32;
+	} else if (HAS_4TILE(ibb->devid)) {
+		/* ── Gen12.5 / DG2 ── */
+		igt_genxml_pack_state(ibb, GFX125_RENDER_SURFACE_STATE, ss_ptr, ss) {
+			IGT_RSS_COMMON(ss, buf, mocs, read_domain, write_domain);
+			IGT_RSS_TILING(ss, buf);
+			ss.SurfaceHorizontalAlignment = GFX125_HALIGN_32;
+
+			if (buf->compression == I915_COMPRESSION_MEDIA) {
+				ss.MemoryCompressionEnable = true;
+				ss.MemoryCompressionMode = GFX125_MEDIACOMPRESSION;
+			} else if (buf->compression == I915_COMPRESSION_RENDER) {
+				ss.AuxiliarySurfaceMode = GFX125_AUX_CCS_E;
+				ss.CompressionFormat = dg2_compression_format(buf);
+
+				if (buf->cc.offset) {
+					ss.ClearValueAddressEnable = true;
+					ss.ClearValueAddress =
+						igt_address_of(buf, buf->cc.offset,
+							       read_domain, write_domain);
+				}
+			}
 		}
 
-		if (HAS_4TILE(ibb->devid)) {
-			ss->ss7.dg2.memory_compression_type = 0;
-			ss->ss7.dg2.memory_compression_enable = 0;
-			ss->ss7.dg2.disable_support_for_multi_gpu_partial_writes = 1;
-			ss->ss7.dg2.disable_support_for_multi_gpu_atomics = 1;
+	} else if (gen >= 12) {
+		/* ── Gen12 / TGL ── */
+		igt_genxml_pack_state(ibb, GFX12_RENDER_SURFACE_STATE, ss_ptr, ss) {
+			IGT_RSS_COMMON(ss, buf, mocs, read_domain, write_domain);
+			IGT_RSS_TILING(ss, buf);
+			ss.SurfaceHorizontalAlignment = GFX12_HALIGN_4;
+			ss.RenderCacheReadWriteMode = GFX12_READWRITECACHE;
+			ss.MipTailStartLOD = 1;
+
+			if (buf->compression == I915_COMPRESSION_MEDIA) {
+				ss.MemoryCompressionEnable = true;
+				ss.MemoryCompressionMode = GFX12_HORIZONTAL;
+			} else if (buf->compression == I915_COMPRESSION_RENDER) {
+				ss.AuxiliarySurfaceMode = GFX12_AUX_CCS_E;
+
+				if (buf->cc.offset) {
+					ss.ClearValueAddressEnable = true;
+					ss.ClearValueAddress =
+						igt_address_of(buf, buf->cc.offset,
+							       read_domain, write_domain);
+				}
+			}
+		}
 
-			if (intel_gen(ibb->devid) >= 20)
-				ss->ss12.lnl.compression_format = lnl_compression_format(buf);
-			else
-				ss->ss12.dg2.compression_format = dg2_compression_format(buf);
+	} else {
+		/* ── Gen9 / Gen11 ── */
+		igt_genxml_pack_state(ibb, GFX9_RENDER_SURFACE_STATE, ss_ptr, ss) {
+			IGT_RSS_COMMON(ss, buf, mocs, read_domain, write_domain);
+			IGT_RSS_TILING(ss, buf);
+			ss.SurfaceHorizontalAlignment = GFX9_HALIGN_4;
+			ss.RenderCacheReadWriteMode = GFX9_READWRITECACHE;
+			ss.MipTailStartLOD = 1;
+
+			if (buf->tiling == I915_TILING_Yf)
+				ss.TiledResourceMode = GFX9_TILEYF;
+			else if (buf->tiling == I915_TILING_Ys)
+				ss.TiledResourceMode = GFX9_TILEYS;
+
+			if (buf->compression == I915_COMPRESSION_MEDIA) {
+				ss.MemoryCompressionEnable = true;
+				ss.MemoryCompressionMode = GFX9_HORIZONTAL;
+			} else if (buf->compression == I915_COMPRESSION_RENDER) {
+				ss.AuxiliarySurfaceMode = GFX9_AUX_CCS_E;
+
+				if (buf->ccs[0].stride) {
+					ss.AuxiliarySurfacePitch =
+						(buf->ccs[0].stride / 128) - 1;
+					ss.AuxiliarySurfaceBaseAddress =
+						igt_address_of(buf, buf->ccs[0].offset,
+							       read_domain, write_domain);
+				}
+			}
 		}
 	}
 
-	return intel_bb_ptr_add_return_prev_offset(ibb, sizeof(*ss));
+	return intel_bb_ptr_add_return_prev_offset(ibb,
+		GFX9_RENDER_SURFACE_STATE_length * 4);
 }
 
 static uint32_t
@@ -328,15 +367,14 @@ gen8_bind_surfaces(struct intel_bb *ibb,
 		   const struct intel_buf *dst)
 {
 	uint32_t *binding_table, binding_table_offset;
-	bool fast_clear = !src;
 
 	binding_table = intel_bb_ptr_align(ibb, 32);
 	binding_table_offset = intel_bb_ptr_add_return_prev_offset(ibb, 32);
 
-	binding_table[0] = gen9_bind_buf(ibb, dst, 1, fast_clear);
+	binding_table[0] = gen9_bind_buf(ibb, dst, 1);
 
 	if (src != NULL)
-		binding_table[1] = gen9_bind_buf(ibb, src, 0, false);
+		binding_table[1] = gen9_bind_buf(ibb, src, 0);
 
 	return binding_table_offset;
 }
@@ -344,21 +382,18 @@ gen8_bind_surfaces(struct intel_bb *ibb,
 /* Mostly copy+paste from gen6, except wrap modes moved */
 static uint32_t
 gen8_create_sampler(struct intel_bb *ibb) {
-	struct gen8_sampler_state *ss;
-
-	ss = intel_bb_ptr_align(ibb, 64);
-
-	ss->ss0.min_filter = GEN4_MAPFILTER_NEAREST;
-	ss->ss0.mag_filter = GEN4_MAPFILTER_NEAREST;
-	ss->ss3.r_wrap_mode = GEN4_TEXCOORDMODE_CLAMP;
-	ss->ss3.s_wrap_mode = GEN4_TEXCOORDMODE_CLAMP;
-	ss->ss3.t_wrap_mode = GEN4_TEXCOORDMODE_CLAMP;
-
-	/* I've experimented with non-normalized coordinates and using the LD
-	 * sampler fetch, but couldn't make it work. */
-	ss->ss3.non_normalized_coord = 0;
+	void *ptr = intel_bb_ptr_align(ibb, 64);
+
+	igt_genxml_pack_state(ibb, GFX9_SAMPLER_STATE, ptr, ss) {
+		ss.MinModeFilter = GFX9_MAPFILTER_NEAREST;
+		ss.MagModeFilter = GFX9_MAPFILTER_NEAREST;
+		ss.TCZAddressControlMode = GFX9_TCM_CLAMP;
+		ss.TCYAddressControlMode = GFX9_TCM_CLAMP;
+		ss.TCXAddressControlMode = GFX9_TCM_CLAMP;
+	}
 
-	return intel_bb_ptr_add_return_prev_offset(ibb, sizeof(*ss));
+	return intel_bb_ptr_add_return_prev_offset(ibb,
+						   GFX9_SAMPLER_STATE_length * 4);
 }
 
 static uint32_t
@@ -531,50 +566,62 @@ gen7_fill_vertex_buffer_data(struct intel_bb *ibb,
  */
 static void
 gen6_emit_vertex_elements(struct intel_bb *ibb) {
+	void *ve_ptr;
+
 	/*
 	 * The VUE layout
 	 *    dword 0-3: pad (0, 0, 0. 0)
 	 *    dword 4-7: position (x, y, 0, 1.0),
 	 *    dword 8-11: texture coordinate 0 (u0, v0, 0, 1.0)
 	 */
-	intel_bb_out(ibb, GEN4_3DSTATE_VERTEX_ELEMENTS | (3 * 2 + 1 - 2));
+	{
+		struct GFX9_3DSTATE_VERTEX_ELEMENTS ves = { GFX9_3DSTATE_VERTEX_ELEMENTS_header };
+		ves.DWordLength = 3 * GFX9_VERTEX_ELEMENT_STATE_length - 1;
+		GFX9_3DSTATE_VERTEX_ELEMENTS_pack(ibb, intel_bb_ptr(ibb), &ves);
+		intel_bb_ptr_add(ibb, 4);
+	}
 
-	/* Element state 0. These are 4 dwords of 0 required for the VUE format.
-	 * We don't really know or care what they do.
-	 */
-	intel_bb_out(ibb, 0 << GEN6_VE0_VERTEX_BUFFER_INDEX_SHIFT | GEN6_VE0_VALID |
-		     SURFACEFORMAT_R32G32B32A32_FLOAT << VE0_FORMAT_SHIFT |
-		     0 << VE0_OFFSET_SHIFT); /* we specify 0, but it's really does not exist */
-	intel_bb_out(ibb, GEN4_VFCOMPONENT_STORE_0 << VE1_VFCOMPONENT_0_SHIFT |
-		     GEN4_VFCOMPONENT_STORE_0 << VE1_VFCOMPONENT_1_SHIFT |
-		     GEN4_VFCOMPONENT_STORE_0 << VE1_VFCOMPONENT_2_SHIFT |
-		     GEN4_VFCOMPONENT_STORE_0 << VE1_VFCOMPONENT_3_SHIFT);
-
-	/* Element state 1 - Our "destination" vertices. These are passed down
-	 * through the pipeline, and eventually make it to the pixel shader as
-	 * the offsets in the destination surface. It's packed as the 16
-	 * signed/scaled because of gen6 rendercopy. I see no particular reason
-	 * for doing this though.
-	 */
-	intel_bb_out(ibb, 0 << GEN6_VE0_VERTEX_BUFFER_INDEX_SHIFT | GEN6_VE0_VALID |
-		     SURFACEFORMAT_R16G16_SSCALED << VE0_FORMAT_SHIFT |
-		     0 << VE0_OFFSET_SHIFT); /* offsets vb in bytes */
-	intel_bb_out(ibb, GEN4_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT |
-		     GEN4_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT |
-		     GEN4_VFCOMPONENT_STORE_0 << VE1_VFCOMPONENT_2_SHIFT |
-		     GEN4_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT);
-
-	/* Element state 2. Last but not least we store the U,V components as
-	 * normalized floats. These will be used in the pixel shader to sample
-	 * from the source buffer.
-	 */
-	intel_bb_out(ibb, 0 << GEN6_VE0_VERTEX_BUFFER_INDEX_SHIFT | GEN6_VE0_VALID |
-		     SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT |
-		     4 << VE0_OFFSET_SHIFT);	/* offset vb in bytes */
-	intel_bb_out(ibb, GEN4_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT |
-		     GEN4_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT |
-		     GEN4_VFCOMPONENT_STORE_0 << VE1_VFCOMPONENT_2_SHIFT |
-		     GEN4_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT);
+	/* Element state 0. These are 4 dwords of 0 required for the VUE format. */
+	ve_ptr = intel_bb_ptr(ibb);
+	igt_genxml_pack_state(ibb, GFX9_VERTEX_ELEMENT_STATE, ve_ptr, ve0) {
+		ve0.VertexBufferIndex = 0;
+		ve0.Valid = true;
+		ve0.SourceElementFormat = SURFACEFORMAT_R32G32B32A32_FLOAT;
+		ve0.SourceElementOffset = 0;
+		ve0.Component0Control = GFX9_VFCOMP_STORE_0;
+		ve0.Component1Control = GFX9_VFCOMP_STORE_0;
+		ve0.Component2Control = GFX9_VFCOMP_STORE_0;
+		ve0.Component3Control = GFX9_VFCOMP_STORE_0;
+	}
+	intel_bb_ptr_add(ibb, GFX9_VERTEX_ELEMENT_STATE_length * 4);
+
+	/* Element state 1 - destination vertices (16-bit signed/scaled). */
+	ve_ptr = intel_bb_ptr(ibb);
+	igt_genxml_pack_state(ibb, GFX9_VERTEX_ELEMENT_STATE, ve_ptr, ve1) {
+		ve1.VertexBufferIndex = 0;
+		ve1.Valid = true;
+		ve1.SourceElementFormat = SURFACEFORMAT_R16G16_SSCALED;
+		ve1.SourceElementOffset = 0;
+		ve1.Component0Control = GFX9_VFCOMP_STORE_SRC;
+		ve1.Component1Control = GFX9_VFCOMP_STORE_SRC;
+		ve1.Component2Control = GFX9_VFCOMP_STORE_0;
+		ve1.Component3Control = GFX9_VFCOMP_STORE_1_FP;
+	}
+	intel_bb_ptr_add(ibb, GFX9_VERTEX_ELEMENT_STATE_length * 4);
+
+	/* Element state 2 - texture coordinates (normalized floats). */
+	ve_ptr = intel_bb_ptr(ibb);
+	igt_genxml_pack_state(ibb, GFX9_VERTEX_ELEMENT_STATE, ve_ptr, ve2) {
+		ve2.VertexBufferIndex = 0;
+		ve2.Valid = true;
+		ve2.SourceElementFormat = SURFACEFORMAT_R32G32_FLOAT;
+		ve2.SourceElementOffset = 4;
+		ve2.Component0Control = GFX9_VFCOMP_STORE_SRC;
+		ve2.Component1Control = GFX9_VFCOMP_STORE_SRC;
+		ve2.Component2Control = GFX9_VFCOMP_STORE_0;
+		ve2.Component3Control = GFX9_VFCOMP_STORE_1_FP;
+	}
+	intel_bb_ptr_add(ibb, GFX9_VERTEX_ELEMENT_STATE_length * 4);
 }
 
 /*
@@ -585,161 +632,185 @@ gen6_emit_vertex_elements(struct intel_bb *ibb) {
  */
 static void gen7_emit_vertex_buffer(struct intel_bb *ibb, uint32_t offset)
 {
-	intel_bb_out(ibb, GEN4_3DSTATE_VERTEX_BUFFERS | (1 + (4 * 1) - 2));
-	intel_bb_out(ibb, 0 << GEN6_VB0_BUFFER_INDEX_SHIFT | /* VB 0th index */
-		     GEN8_VB0_BUFFER_ADDR_MOD_EN | /* Address Modify Enable */
-		     VERTEX_SIZE << VB0_BUFFER_PITCH_SHIFT);
-	intel_bb_emit_reloc(ibb, ibb->handle,
-			    I915_GEM_DOMAIN_VERTEX, 0,
-			    offset, ibb->batch_offset);
-	intel_bb_out(ibb, 3 * VERTEX_SIZE);
+	void *vb_ptr;
+
+	/* Variable-length: 1 header dword + VERTEX_BUFFER_STATE element */
+	{
+		struct GFX9_3DSTATE_VERTEX_BUFFERS vbs = { GFX9_3DSTATE_VERTEX_BUFFERS_header };
+		/* Default DWordLength=3 is correct for 1 element (1 + 4 - 2 = 3) */
+		GFX9_3DSTATE_VERTEX_BUFFERS_pack(ibb, intel_bb_ptr(ibb), &vbs);
+		intel_bb_ptr_add(ibb, 4);
+	}
+
+	vb_ptr = intel_bb_ptr(ibb);
+	igt_genxml_pack_state(ibb, GFX9_VERTEX_BUFFER_STATE, vb_ptr, vb) {
+		vb.VertexBufferIndex = 0;
+		vb.AddressModifyEnable = true;
+		vb.MOCS = intel_get_wb_mocs_index(ibb->fd);
+		vb.BufferPitch = VERTEX_SIZE;
+		vb.BufferStartingAddress = (struct igt_address){
+			.offset = ibb->batch_offset + offset,
+			.handle = ibb->handle,
+			.read_domains = I915_GEM_DOMAIN_VERTEX,
+			.write_domain = 0,
+			.presumed_offset = ibb->batch_offset,
+		};
+		vb.BufferSize = 3 * VERTEX_SIZE;
+	}
+	intel_bb_ptr_add(ibb, GFX9_VERTEX_BUFFER_STATE_length * 4);
 }
 
 static uint32_t
 gen6_create_cc_state(struct intel_bb *ibb)
 {
-	struct gen6_color_calc_state *cc_state;
+	void *ptr = intel_bb_ptr_align(ibb, 64);
 
-	cc_state = intel_bb_ptr_align(ibb, 64);
+	igt_genxml_pack_state(ibb, GFX9_COLOR_CALC_STATE, ptr, cc_state) { }
 
-	return intel_bb_ptr_add_return_prev_offset(ibb, sizeof(*cc_state));
+	return intel_bb_ptr_add_return_prev_offset(ibb,
+						   GFX9_COLOR_CALC_STATE_length * 4);
 }
 
 static uint32_t
 gen8_create_blend_state(struct intel_bb *ibb)
 {
-	struct gen8_blend_state *blend;
-	int i;
-
-	blend = intel_bb_ptr_align(ibb, 64);
-
-	for (i = 0; i < 16; i++) {
-		blend->bs[i].dest_blend_factor = GEN6_BLENDFACTOR_ZERO;
-		blend->bs[i].source_blend_factor = GEN6_BLENDFACTOR_ONE;
-		blend->bs[i].color_blend_func = GEN6_BLENDFUNCTION_ADD;
-		blend->bs[i].pre_blend_color_clamp = 1;
-		blend->bs[i].color_buffer_blend = 0;
+	void *ptr = intel_bb_ptr_align(ibb, 64);
+
+	/* Blend state header (1 dword) - all defaults (zeros) */
+	igt_genxml_pack_state(ibb, GFX9_BLEND_STATE, ptr, bs) { }
+	ptr += GFX9_BLEND_STATE_length * 4;
+
+	/* 16 per-RT blend state entries */
+	for (int i = 0; i < 16; i++) {
+		igt_genxml_pack_state(ibb, GFX9_BLEND_STATE_ENTRY, ptr, entry) {
+			entry.DestinationBlendFactor = GFX9_BLENDFACTOR_ZERO;
+			entry.SourceBlendFactor = GFX9_BLENDFACTOR_ONE;
+			entry.ColorBlendFunction = GFX9_BLENDFUNCTION_ADD;
+			entry.PreBlendColorClampEnable = true;
+		}
+		ptr += GFX9_BLEND_STATE_ENTRY_length * 4;
 	}
 
-	return intel_bb_ptr_add_return_prev_offset(ibb, sizeof(*blend));
+	return intel_bb_ptr_add_return_prev_offset(ibb,
+		(GFX9_BLEND_STATE_length + 16 * GFX9_BLEND_STATE_ENTRY_length) * 4);
 }
 
 static uint32_t
 gen6_create_cc_viewport(struct intel_bb *ibb)
 {
-	struct gen4_cc_viewport *vp;
-
-	vp = intel_bb_ptr_align(ibb, 32);
+	void *ptr = intel_bb_ptr_align(ibb, 32);
 
-	/* XXX I don't understand this */
-	vp->min_depth = -1.e35;
-	vp->max_depth = 1.e35;
+	igt_genxml_pack_state(ibb, GFX9_CC_VIEWPORT, ptr, vp) {
+		vp.MinimumDepth = -1.e35;
+		vp.MaximumDepth = 1.e35;
+	}
 
-	return intel_bb_ptr_add_return_prev_offset(ibb, sizeof(*vp));
+	return intel_bb_ptr_add_return_prev_offset(ibb,
+						   GFX9_CC_VIEWPORT_length * 4);
 }
 
 static uint32_t
 gen7_create_sf_clip_viewport(struct intel_bb *ibb) {
-	/* XXX these are likely not needed */
-	struct gen7_sf_clip_viewport *scv_state;
-
-	scv_state = intel_bb_ptr_align(ibb, 64);
+	void *ptr = intel_bb_ptr_align(ibb, 64);
 
-	scv_state->guardband.xmin = 0;
-	scv_state->guardband.xmax = 1.0f;
-	scv_state->guardband.ymin = 0;
-	scv_state->guardband.ymax = 1.0f;
+	igt_genxml_pack_state(ibb, GFX9_SF_CLIP_VIEWPORT, ptr, scv) {
+		scv.XMinClipGuardband = 0;
+		scv.XMaxClipGuardband = 1.0f;
+		scv.YMinClipGuardband = 0;
+		scv.YMaxClipGuardband = 1.0f;
+	}
 
-	return intel_bb_ptr_add_return_prev_offset(ibb, sizeof(*scv_state));
+	return intel_bb_ptr_add_return_prev_offset(ibb,
+						   GFX9_SF_CLIP_VIEWPORT_length * 4);
 }
 
 static uint32_t
 gen6_create_scissor_rect(struct intel_bb *ibb)
 {
-	struct gen6_scissor_rect *scissor;
+	void *ptr = intel_bb_ptr_align(ibb, 64);
 
-	scissor = intel_bb_ptr_align(ibb, 64);
+	igt_genxml_pack_state(ibb, GFX9_SCISSOR_RECT, ptr, sr) { }
 
-	return intel_bb_ptr_add_return_prev_offset(ibb, sizeof(*scissor));
+	return intel_bb_ptr_add_return_prev_offset(ibb,
+						   GFX9_SCISSOR_RECT_length * 4);
 }
 
 static void
 gen8_emit_sip(struct intel_bb *ibb) {
-	intel_bb_out(ibb, GEN4_STATE_SIP | (3 - 2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
+	igt_genxml_emit(ibb, GFX9_STATE_SIP, sip) {
+		/* SystemInstructionPointer left as zero */
+	}
 }
 
 static void
 gen7_emit_push_constants(struct intel_bb *ibb) {
-	intel_bb_out(ibb, GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_VS);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_PS);
-	intel_bb_out(ibb, 0);
+	igt_genxml_emit(ibb, GFX9_3DSTATE_PUSH_CONSTANT_ALLOC_VS, vs) { }
+	igt_genxml_emit(ibb, GFX9_3DSTATE_PUSH_CONSTANT_ALLOC_HS, hs) { }
+	igt_genxml_emit(ibb, GFX9_3DSTATE_PUSH_CONSTANT_ALLOC_DS, ds) { }
+	igt_genxml_emit(ibb, GFX9_3DSTATE_PUSH_CONSTANT_ALLOC_GS, gs) { }
+	igt_genxml_emit(ibb, GFX9_3DSTATE_PUSH_CONSTANT_ALLOC_PS, ps) { }
 }
 
+/*
+ * IGT_SBA_COMMON - shared STATE_BASE_ADDRESS fields across gen9/gen11/gen125.
+ * All three variants have identical field names for the fields we set.
+ */
+#define IGT_SBA_COMMON(sba, mocs_val, surf, dyn, inst)                     \
+	do {                                                               \
+		sba.GeneralStateBaseAddressModifyEnable = true;            \
+		sba.GeneralStateMOCS = (mocs_val);                         \
+		sba.StatelessDataPortAccessMOCS = (mocs_val);              \
+		sba.SurfaceStateBaseAddressModifyEnable = true;            \
+		sba.SurfaceStateMOCS = (mocs_val);                         \
+		sba.SurfaceStateBaseAddress = (surf);                      \
+		sba.DynamicStateBaseAddressModifyEnable = true;            \
+		sba.DynamicStateMOCS = (mocs_val);                         \
+		sba.DynamicStateBaseAddress = (dyn);                       \
+		sba.IndirectObjectMOCS = (mocs_val);                       \
+		sba.InstructionBaseAddressModifyEnable = true;             \
+		sba.InstructionMOCS = (mocs_val);                          \
+		sba.InstructionBaseAddress = (inst);                       \
+		sba.GeneralStateBufferSizeModifyEnable = true;             \
+		sba.GeneralStateBufferSize = 0xfffff;                      \
+		sba.DynamicStateBufferSizeModifyEnable = true;             \
+		sba.DynamicStateBufferSize = 1;                            \
+		sba.IndirectObjectBufferSizeModifyEnable = true;           \
+		sba.IndirectObjectBufferSize = 0xfffff;                    \
+		sba.InstructionBuffersizeModifyEnable = true;              \
+		sba.InstructionBufferSize = 1;                             \
+		sba.BindlessSurfaceStateMOCS = (mocs_val);                 \
+	} while (0)
+
 static void
 gen9_emit_state_base_address(struct intel_bb *ibb) {
+	uint8_t mocs = intel_get_wb_mocs_index(ibb->fd);
 
-	/* WaBindlessSurfaceStateModifyEnable:skl,bxt */
-	/* The length has to be one less if we dont modify
-	   bindless state */
-	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20)
-		intel_bb_out(ibb, GEN4_STATE_BASE_ADDRESS | 20);
-	else
-		intel_bb_out(ibb, GEN4_STATE_BASE_ADDRESS | (19 - 1 - 2));
-
-	/* general */
-	intel_bb_out(ibb, 0 | BASE_ADDRESS_MODIFY);
-	intel_bb_out(ibb, 0);
-
-	/* stateless data port */
-	intel_bb_out(ibb, 0 | BASE_ADDRESS_MODIFY);
-
-	/* surface */
-	intel_bb_emit_reloc(ibb, ibb->handle,
-			    I915_GEM_DOMAIN_SAMPLER, 0,
-			    BASE_ADDRESS_MODIFY, ibb->batch_offset);
-
-	/* dynamic */
-	intel_bb_emit_reloc(ibb, ibb->handle,
-			    I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_INSTRUCTION, 0,
-			    BASE_ADDRESS_MODIFY, ibb->batch_offset);
-
-	/* indirect */
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-
-	/* instruction */
-	intel_bb_emit_reloc(ibb, ibb->handle,
-			    I915_GEM_DOMAIN_INSTRUCTION, 0,
-			    BASE_ADDRESS_MODIFY, ibb->batch_offset);
-
-	/* general state buffer size */
-	intel_bb_out(ibb, 0xfffff000 | 1);
-	/* dynamic state buffer size */
-	intel_bb_out(ibb, 1 << 12 | 1);
-	/* indirect object buffer size */
-	intel_bb_out(ibb, 0xfffff000 | 1);
-	/* intruction buffer size */
-	intel_bb_out(ibb, 1 << 12 | 1);
-
-	/* Bindless surface state base address */
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
+	struct igt_address surf_base =
+		igt_address_of_batch(ibb, I915_GEM_DOMAIN_SAMPLER, 0);
+	struct igt_address dyn_base =
+		igt_address_of_batch(ibb,
+				     I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_INSTRUCTION, 0);
+	struct igt_address inst_base =
+		igt_address_of_batch(ibb, I915_GEM_DOMAIN_INSTRUCTION, 0);
 
-	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20) {
-		/* Bindless sampler */
-		intel_bb_out(ibb, 0);
-		intel_bb_out(ibb, 0);
-		intel_bb_out(ibb, 0);
+	if (HAS_4TILE(ibb->devid) || intel_gen(ibb->devid) > 12) {
+		igt_genxml_emit(ibb, GFX125_STATE_BASE_ADDRESS, sba) {
+			IGT_SBA_COMMON(sba, mocs, surf_base, dyn_base, inst_base);
+			/* WBP (0) and UC (1) are marked dont_use in the XML for this field. */
+			sba.L1CacheControl = GFX125_L1CC_WB;
+			sba.BindlessSamplerStateBaseAddressModifyEnable = true;
+			sba.BindlessSamplerStateMOCS = mocs;
+		}
+	} else if (intel_gen(ibb->devid) >= 11) {
+		igt_genxml_emit(ibb, GFX11_STATE_BASE_ADDRESS, sba) {
+			IGT_SBA_COMMON(sba, mocs, surf_base, dyn_base, inst_base);
+			sba.BindlessSamplerStateBaseAddressModifyEnable = true;
+			sba.BindlessSamplerStateMOCS = mocs;
+		}
+	} else {
+		igt_genxml_emit(ibb, GFX9_STATE_BASE_ADDRESS, sba) {
+			IGT_SBA_COMMON(sba, mocs, surf_base, dyn_base, inst_base);
+		}
 	}
 }
 
@@ -750,184 +821,119 @@ gen7_emit_urb(struct intel_bb *ibb) {
 	const int vs_size = 2;
 	const int vs_start = 4;
 
-	intel_bb_out(ibb, GEN7_3DSTATE_URB_VS);
-	intel_bb_out(ibb, vs_entries | ((vs_size - 1) << 16) | (vs_start << 25));
-	intel_bb_out(ibb, GEN7_3DSTATE_URB_GS);
-	intel_bb_out(ibb, vs_start << 25);
-	intel_bb_out(ibb, GEN7_3DSTATE_URB_HS);
-	intel_bb_out(ibb, vs_start << 25);
-	intel_bb_out(ibb, GEN7_3DSTATE_URB_DS);
-	intel_bb_out(ibb, vs_start << 25);
+	igt_genxml_emit(ibb, GFX9_3DSTATE_URB_VS, urb) {
+		urb.VSNumberofURBEntries = vs_entries;
+		urb.VSURBEntryAllocationSize = vs_size - 1;
+		urb.VSURBStartingAddress = vs_start;
+	}
+	igt_genxml_emit(ibb, GFX9_3DSTATE_URB_GS, urb) {
+		urb.GSURBStartingAddress = vs_start;
+	}
+	igt_genxml_emit(ibb, GFX9_3DSTATE_URB_HS, urb) {
+		urb.HSURBStartingAddress = vs_start;
+	}
+	igt_genxml_emit(ibb, GFX9_3DSTATE_URB_DS, urb) {
+		urb.DSURBStartingAddress = vs_start;
+	}
 }
 
 static void
 gen8_emit_cc(struct intel_bb *ibb) {
-	intel_bb_out(ibb, GEN7_3DSTATE_BLEND_STATE_POINTERS);
-	intel_bb_out(ibb, cc.blend_state | 1);
+	igt_genxml_emit(ibb, GFX9_3DSTATE_BLEND_STATE_POINTERS, bsp) {
+		bsp.BlendStatePointer = cc.blend_state;
+		bsp.BlendStatePointerValid = true;
+	}
 
-	intel_bb_out(ibb, GEN6_3DSTATE_CC_STATE_POINTERS);
-	intel_bb_out(ibb, cc.cc_state | 1);
+	igt_genxml_emit(ibb, GFX9_3DSTATE_CC_STATE_POINTERS, ccp) {
+		ccp.ColorCalcStatePointer = cc.cc_state;
+		ccp.ColorCalcStatePointerValid = true;
+	}
 }
 
 static void
 gen8_emit_multisample(struct intel_bb *ibb) {
-	intel_bb_out(ibb, GEN8_3DSTATE_MULTISAMPLE | 0);
-	intel_bb_out(ibb, 0);
+	igt_genxml_emit(ibb, GFX9_3DSTATE_MULTISAMPLE, ms) { }
 
-	intel_bb_out(ibb, GEN6_3DSTATE_SAMPLE_MASK);
-	intel_bb_out(ibb, 1);
+	igt_genxml_emit(ibb, GFX9_3DSTATE_SAMPLE_MASK, sm) {
+		sm.SampleMask = 1;
+	}
 }
 
 static void
 gen8_emit_vs(struct intel_bb *ibb) {
-	intel_bb_out(ibb, GEN6_3DSTATE_CONSTANT_VS | (11-2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN7_3DSTATE_BINDING_TABLE_POINTERS_VS);
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN7_3DSTATE_SAMPLER_STATE_POINTERS_VS);
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN6_3DSTATE_VS | (9-2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
+	igt_genxml_emit(ibb, GFX9_3DSTATE_CONSTANT_VS, cvs) {
+		cvs.MOCS = intel_get_wb_mocs_index(ibb->fd);
+	}
+
+	igt_genxml_emit(ibb, GFX9_3DSTATE_BINDING_TABLE_POINTERS_VS, bt) { }
+
+	igt_genxml_emit(ibb, GFX9_3DSTATE_SAMPLER_STATE_POINTERS_VS, sp) { }
+
+	igt_genxml_emit(ibb, GFX9_3DSTATE_VS, vs) { }
 }
 
 static void
 gen8_emit_hs(struct intel_bb *ibb) {
-	intel_bb_out(ibb, GEN7_3DSTATE_CONSTANT_HS | (11-2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN7_3DSTATE_HS | (9-2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN7_3DSTATE_BINDING_TABLE_POINTERS_HS);
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS);
-	intel_bb_out(ibb, 0);
+	igt_genxml_emit(ibb, GFX9_3DSTATE_CONSTANT_HS, chs) {
+		chs.MOCS = intel_get_wb_mocs_index(ibb->fd);
+	}
+
+	if (intel_gen(ibb->devid) >= 20)
+		igt_genxml_emit(ibb, GFX20_3DSTATE_HS, hs) { }
+	else
+		igt_genxml_emit(ibb, GFX9_3DSTATE_HS, hs) { }
+
+	igt_genxml_emit(ibb, GFX9_3DSTATE_BINDING_TABLE_POINTERS_HS, bt) { }
+
+	igt_genxml_emit(ibb, GFX9_3DSTATE_SAMPLER_STATE_POINTERS_HS, sp) { }
 }
 
 static void
 gen8_emit_gs(struct intel_bb *ibb) {
-	intel_bb_out(ibb, GEN6_3DSTATE_CONSTANT_GS | (11-2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN6_3DSTATE_GS | (10-2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN7_3DSTATE_BINDING_TABLE_POINTERS_GS);
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN7_3DSTATE_SAMPLER_STATE_POINTERS_GS);
-	intel_bb_out(ibb, 0);
+	igt_genxml_emit(ibb, GFX9_3DSTATE_CONSTANT_GS, cgs) {
+		cgs.MOCS = intel_get_wb_mocs_index(ibb->fd);
+	}
+
+	igt_genxml_emit(ibb, GFX9_3DSTATE_GS, gs) { }
+
+	igt_genxml_emit(ibb, GFX9_3DSTATE_BINDING_TABLE_POINTERS_GS, bt) { }
+
+	igt_genxml_emit(ibb, GFX9_3DSTATE_SAMPLER_STATE_POINTERS_GS, sp) { }
 }
 
 static void
 gen9_emit_ds(struct intel_bb *ibb) {
-	intel_bb_out(ibb, GEN7_3DSTATE_CONSTANT_DS | (11-2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN7_3DSTATE_DS | (11-2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN7_3DSTATE_BINDING_TABLE_POINTERS_DS);
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS);
-	intel_bb_out(ibb, 0);
+	igt_genxml_emit(ibb, GFX9_3DSTATE_CONSTANT_DS, cds) {
+		cds.MOCS = intel_get_wb_mocs_index(ibb->fd);
+	}
+
+	igt_genxml_emit(ibb, GFX9_3DSTATE_DS, ds) { }
+
+	igt_genxml_emit(ibb, GFX9_3DSTATE_BINDING_TABLE_POINTERS_DS, bt) { }
+
+	igt_genxml_emit(ibb, GFX9_3DSTATE_SAMPLER_STATE_POINTERS_DS, sp) { }
 }
 
 
 static void
 gen8_emit_wm_hz_op(struct intel_bb *ibb) {
 	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20) {
-		intel_bb_out(ibb, GEN8_3DSTATE_WM_HZ_OP | (6-2));
-		intel_bb_out(ibb, 0);
+		igt_genxml_emit(ibb, GFX20_3DSTATE_WM_HZ_OP, hz) { }
 	} else {
-		intel_bb_out(ibb, GEN8_3DSTATE_WM_HZ_OP | (5-2));
+		igt_genxml_emit(ibb, GFX9_3DSTATE_WM_HZ_OP, hz) { }
 	}
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
 }
 
 static void
 gen8_emit_null_state(struct intel_bb *ibb) {
 	gen8_emit_wm_hz_op(ibb);
 	gen8_emit_hs(ibb);
-	intel_bb_out(ibb, GEN7_3DSTATE_TE | (4-2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
+
+	if (intel_gen(ibb->devid) >= 12)
+		igt_genxml_emit(ibb, GFX12_3DSTATE_TE, te) { }
+	else
+		igt_genxml_emit(ibb, GFX9_3DSTATE_TE, te) { }
+
 	gen8_emit_gs(ibb);
 	gen9_emit_ds(ibb);
 	gen8_emit_vs(ibb);
@@ -935,137 +941,109 @@ gen8_emit_null_state(struct intel_bb *ibb) {
 
 static void
 gen7_emit_clip(struct intel_bb *ibb) {
-	intel_bb_out(ibb, GEN6_3DSTATE_CLIP | (4 - 2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0); /*  pass-through */
-	intel_bb_out(ibb, 0);
+	igt_genxml_emit(ibb, GFX9_3DSTATE_CLIP, clip) {
+		/* All fields zero = pass-through */
+	}
 }
 
 static void
 gen8_emit_sf(struct intel_bb *ibb)
 {
-	int i;
-
-	intel_bb_out(ibb, GEN7_3DSTATE_SBE | (6 - 2));
-	intel_bb_out(ibb, 1 << GEN7_SBE_NUM_OUTPUTS_SHIFT |
-		     GEN8_SBE_FORCE_URB_ENTRY_READ_LENGTH |
-		     GEN8_SBE_FORCE_URB_ENTRY_READ_OFFSET |
-		     1 << GEN7_SBE_URB_ENTRY_READ_LENGTH_SHIFT |
-		     1 << GEN8_SBE_URB_ENTRY_READ_OFFSET_SHIFT);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, GEN9_SBE_ACTIVE_COMPONENT_XYZW << 0);
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN8_3DSTATE_SBE_SWIZ | (11 - 2));
-	for (i = 0; i < 8; i++)
-		intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN8_3DSTATE_RASTER | (5 - 2));
-	intel_bb_out(ibb, GEN8_RASTER_FRONT_WINDING_CCW | GEN8_RASTER_CULL_NONE);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN6_3DSTATE_SF | (4 - 2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
+	igt_genxml_emit(ibb, GFX9_3DSTATE_SBE, sbe) {
+		sbe.NumberofSFOutputAttributes = 1;
+		sbe.ForceVertexURBEntryReadLength = true;
+		sbe.ForceVertexURBEntryReadOffset = true;
+		sbe.VertexURBEntryReadLength = 1;
+		sbe.VertexURBEntryReadOffset = 1;
+		sbe.AttributeActiveComponentFormat[0] = GFX9_ACTIVE_COMPONENT_XYZW;
+	}
+
+	igt_genxml_emit(ibb, GFX9_3DSTATE_SBE_SWIZ, swiz) { }
+
+	igt_genxml_emit(ibb, GFX9_3DSTATE_RASTER, raster) {
+		raster.FrontWinding = 1; /* CCW */
+		raster.CullMode = GFX9_CULLMODE_NONE;
+	}
+
+	igt_genxml_emit(ibb, GFX9_3DSTATE_SF, sf) { }
 }
 
 static void
 gen8_emit_ps(struct intel_bb *ibb, uint32_t kernel, bool fast_clear) {
 	const int max_threads = 63;
 
-	intel_bb_out(ibb, GEN6_3DSTATE_WM | (2 - 2));
-	intel_bb_out(ibb, /* XXX: I don't understand the BARYCENTRIC stuff, but it
-		   * appears we need it to put our setup data in the place we
-		   * expect (g6, see below) */
-		     GEN8_3DSTATE_PS_PERSPECTIVE_PIXEL_BARYCENTRIC);
-
-	intel_bb_out(ibb, GEN6_3DSTATE_CONSTANT_PS | (11-2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN7_3DSTATE_PS | (12-2));
-	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20)
-		intel_bb_out(ibb, kernel | 1);
-	else
-		intel_bb_out(ibb, kernel);
-	intel_bb_out(ibb, 0); /* kernel hi */
+	igt_genxml_emit(ibb, GFX9_3DSTATE_WM, wm) {
+		wm.BarycentricInterpolationMode = GFX9_BIM_PERSPECTIVE_PIXEL;
+	}
 
-	if (fast_clear)
-		intel_bb_out(ibb, 1 <<  GEN6_3DSTATE_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT);
-	else
-		intel_bb_out(ibb, 1 << GEN6_3DSTATE_WM_SAMPLER_COUNT_SHIFT |
-		             2 << GEN6_3DSTATE_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT);
-
-	intel_bb_out(ibb, 0); /* scratch space stuff */
-	intel_bb_out(ibb, 0); /* scratch hi */
-	intel_bb_out(ibb, (max_threads - 1) << GEN8_3DSTATE_PS_MAX_THREADS_SHIFT |
-	             GEN6_3DSTATE_WM_16_DISPATCH_ENABLE |
-	             (fast_clear ? GEN8_3DSTATE_FAST_CLEAR_ENABLE : 0));
-	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20)
-		intel_bb_out(ibb, 6 << GEN6_3DSTATE_WM_DISPATCH_START_GRF_0_SHIFT |
-			     GENXE_KERNEL0_POLY_PACK16_FIXED << GENXE_KERNEL0_PACKING_POLICY);
-	else
-		intel_bb_out(ibb, 6 << GEN6_3DSTATE_WM_DISPATCH_START_GRF_0_SHIFT);
-	intel_bb_out(ibb, 0); // kernel 1
-	intel_bb_out(ibb, 0); /* kernel 1 hi */
-	intel_bb_out(ibb, 0); // kernel 2
-	intel_bb_out(ibb, 0); /* kernel 2 hi */
+	igt_genxml_emit(ibb, GFX9_3DSTATE_CONSTANT_PS, cps) {
+		cps.MOCS = intel_get_wb_mocs_index(ibb->fd);
+	}
 
-	intel_bb_out(ibb, GEN8_3DSTATE_PS_BLEND | (2 - 2));
-	intel_bb_out(ibb, GEN8_PS_BLEND_HAS_WRITEABLE_RT);
+	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20) {
+		igt_genxml_emit(ibb, GFX20_3DSTATE_PS, ps) {
+			ps.KernelStartPointer0 = kernel;
+			ps.Kernel0Enable = true;
+			ps.BindingTableEntryCount = fast_clear ? 1 : 2;
+			ps.SamplerCount = fast_clear ? 0 : 1;
+			ps.Kernel0SIMDWidth = GFX20_PS_SIMD16;
+			ps.RenderTargetFastClearEnable = fast_clear;
+			ps.MaximumNumberofThreadsPerPSD = max_threads - 1;
+			ps.DispatchGRFStartRegisterForConstantSetupData0 = 6;
+			ps.Kernel0PolyPackingPolicy = GFX20_POLY_PACK16_FIXED;
+		}
+	} else {
+		igt_genxml_emit(ibb, GFX9_3DSTATE_PS, ps) {
+			ps.KernelStartPointer0 = kernel;
+			ps.BindingTableEntryCount = fast_clear ? 1 : 2;
+			ps.SamplerCount = fast_clear ? 0 : 1;
+			ps._16PixelDispatchEnable = true;
+			ps.RenderTargetFastClearEnable = fast_clear;
+			ps.MaximumNumberofThreadsPerPSD = max_threads - 1;
+			ps.DispatchGRFStartRegisterForConstantSetupData0 = 6;
+		}
+	}
+
+	igt_genxml_emit(ibb, GFX9_3DSTATE_PS_BLEND, blend) {
+		blend.HasWriteableRT = true;
+	}
 
-	intel_bb_out(ibb, GEN8_3DSTATE_PS_EXTRA | (2 - 2));
-	intel_bb_out(ibb, GEN8_PSX_PIXEL_SHADER_VALID | GEN8_PSX_ATTRIBUTE_ENABLE);
+	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20) {
+		igt_genxml_emit(ibb, GFX20_3DSTATE_PS_EXTRA, extra) {
+			extra.PixelShaderValid = true;
+		}
+	} else {
+		igt_genxml_emit(ibb, GFX9_3DSTATE_PS_EXTRA, extra) {
+			extra.PixelShaderValid = true;
+			extra.AttributeEnable = true;
+		}
+	}
 }
 
 static void
 gen9_emit_depth(struct intel_bb *ibb)
 {
-	bool need_10dw = HAS_4TILE(ibb->devid);
-
-	intel_bb_out(ibb, GEN8_3DSTATE_WM_DEPTH_STENCIL | (4 - 2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN7_3DSTATE_DEPTH_BUFFER | (need_10dw ? (10-2) : (8-2)));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	if (need_10dw) {
-		intel_bb_out(ibb, 0);
-		intel_bb_out(ibb, 0);
+	uint8_t mocs = intel_get_wb_mocs_index(ibb->fd);
+
+	igt_genxml_emit(ibb, GFX9_3DSTATE_WM_DEPTH_STENCIL, wds) { }
+
+	if (HAS_4TILE(ibb->devid)) {
+		igt_genxml_emit(ibb, GFX125_3DSTATE_DEPTH_BUFFER, db) {
+			db.MOCS = mocs;
+		}
+	} else {
+		igt_genxml_emit(ibb, GFX9_3DSTATE_DEPTH_BUFFER, db) {
+			db.MOCS = mocs;
+		}
 	}
 
-	intel_bb_out(ibb, GEN8_3DSTATE_HIER_DEPTH_BUFFER | (5-2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN8_3DSTATE_STENCIL_BUFFER | (5-2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
+	igt_genxml_emit(ibb, GFX9_3DSTATE_HIER_DEPTH_BUFFER, hdb) {
+		hdb.MOCS = mocs;
+	}
+
+	igt_genxml_emit(ibb, GFX9_3DSTATE_STENCIL_BUFFER, sb) {
+		sb.MOCS = mocs;
+	}
 }
 
 static void
@@ -1073,46 +1051,45 @@ gen7_emit_clear(struct intel_bb *ibb) {
 	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20)
 		return;
 
-	intel_bb_out(ibb, GEN7_3DSTATE_CLEAR_PARAMS | (3-2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 1); // clear valid
+	igt_genxml_emit(ibb, GFX9_3DSTATE_CLEAR_PARAMS, cp) {
+		cp.DepthClearValueValid = true;
+	}
 }
 
 static void
 gen6_emit_drawing_rectangle(struct intel_bb *ibb, const struct intel_buf *dst)
 {
-	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20)
-		intel_bb_out(ibb, GENXE2_3DSTATE_DRAWING_RECTANGLE_FAST | (4 - 2));
-	else
-		intel_bb_out(ibb, GEN4_3DSTATE_DRAWING_RECTANGLE | (4 - 2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, (intel_buf_height(dst) - 1) << 16 | (intel_buf_width(dst) - 1));
-	intel_bb_out(ibb, 0);
+	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20) {
+		igt_genxml_emit(ibb, GFX20_3DSTATE_DRAWING_RECTANGLE_FAST, dr) {
+			dr.ClippedDrawingRectangleXMax = intel_buf_width(dst) - 1;
+			dr.ClippedDrawingRectangleYMax = intel_buf_height(dst) - 1;
+		}
+	} else {
+		igt_genxml_emit(ibb, GFX9_3DSTATE_DRAWING_RECTANGLE, dr) {
+			dr.ClippedDrawingRectangleXMax = intel_buf_width(dst) - 1;
+			dr.ClippedDrawingRectangleYMax = intel_buf_height(dst) - 1;
+		}
+	}
 }
 
 static void gen8_emit_vf_topology(struct intel_bb *ibb)
 {
-	intel_bb_out(ibb, GEN8_3DSTATE_VF_TOPOLOGY);
-	intel_bb_out(ibb, _3DPRIM_RECTLIST);
+	igt_genxml_emit(ibb, GFX9_3DSTATE_VF_TOPOLOGY, vft) {
+		vft.PrimitiveTopologyType = GFX9_3DPRIM_RECTLIST;
+	}
 }
 
 /* Vertex elements MUST be defined before this according to spec */
 static void gen8_emit_primitive(struct intel_bb *ibb, uint32_t offset)
 {
-	intel_bb_out(ibb, GEN8_3DSTATE_VF | (2 - 2));
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN8_3DSTATE_VF_INSTANCING | (3 - 2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-
-	intel_bb_out(ibb, GEN4_3DPRIMITIVE | (7-2));
-	intel_bb_out(ibb, 0);	/* gen8+ ignore the topology type field */
-	intel_bb_out(ibb, 3);	/* vertex count */
-	intel_bb_out(ibb, 0);	/*  We're specifying this instead with offset in GEN6_3DSTATE_VERTEX_BUFFERS */
-	intel_bb_out(ibb, 1);	/* single instance */
-	intel_bb_out(ibb, 0);	/* start instance location */
-	intel_bb_out(ibb, 0);	/* index buffer offset, ignored */
+	igt_genxml_emit(ibb, GFX9_3DSTATE_VF, vf) { }
+
+	igt_genxml_emit(ibb, GFX9_3DSTATE_VF_INSTANCING, vfi) { }
+
+	igt_genxml_emit(ibb, GFX9_3DPRIMITIVE, prim) {
+		prim.VertexCountPerInstance = 3;
+		prim.InstanceCount = 1;
+	}
 }
 
 #define PIPE_CONTROL_RENDER_TARGET_FLUSH    (1 << 12)
@@ -1244,8 +1221,13 @@ void _gen9_render_op(struct intel_bb *ibb,
 
 	/* Start emitting the commands. The order roughly follows the mesa blorp
 	 * order */
-	intel_bb_out(ibb, G4X_PIPELINE_SELECT | PIPELINE_SELECT_3D |
-		     GEN9_PIPELINE_SELECTION_MASK);
+	igt_genxml_emit(ibb, GFX9_PIPELINE_SELECT, ps) {
+		ps.PipelineSelection = GFX9_3D;
+		/* MaskBits 15:8 is a write-enable mask for bits 5:4 (Force Media
+		 * Awake and Media Sampler DOP Clock Gate Enable).  Value 0x3
+		 * enables writes to both bits so PipelineSelection takes effect. */
+		ps.MaskBits = 3;
+	}
 
 	gen12_emit_aux_pgtable_state(ibb, aux_pgtable_state, true);
 
@@ -1276,17 +1258,21 @@ void _gen9_render_op(struct intel_bb *ibb,
 	gen9_emit_state_base_address(ibb);
 
 	if (HAS_4TILE(ibb->devid) || intel_gen(ibb->devid) > 12) {
-		intel_bb_out(ibb, GEN4_3DSTATE_BINDING_TABLE_POOL_ALLOC | 2);
-		intel_bb_emit_reloc(ibb, ibb->handle,
-				    I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_INSTRUCTION, 0,
-				    0, ibb->batch_offset);
-		intel_bb_out(ibb, 1 << 12);
+		igt_genxml_emit(ibb, GFX9_3DSTATE_BINDING_TABLE_POOL_ALLOC, btpa) {
+			btpa.MOCS = intel_get_wb_mocs_index(ibb->fd);
+			btpa.BindingTablePoolBaseAddress =
+				igt_address_of_batch(ibb,
+					I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_INSTRUCTION, 0);
+			btpa.BindingTablePoolBufferSize = 1;
+		}
 	}
 
-	intel_bb_out(ibb, GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_CC);
-	intel_bb_out(ibb, viewport.cc_state);
-	intel_bb_out(ibb, GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP);
-	intel_bb_out(ibb, viewport.sf_clip_state);
+	igt_genxml_emit(ibb, GFX9_3DSTATE_VIEWPORT_STATE_POINTERS_CC, vp) {
+		vp.CCViewportPointer = viewport.cc_state;
+	}
+	igt_genxml_emit(ibb, GFX9_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP, vp) {
+		vp.SFClipViewportPointer = viewport.sf_clip_state;
+	}
 
 	gen7_emit_urb(ibb);
 
@@ -1296,11 +1282,7 @@ void _gen9_render_op(struct intel_bb *ibb,
 
 	gen8_emit_null_state(ibb);
 
-	intel_bb_out(ibb, GEN7_3DSTATE_STREAMOUT | (5 - 2));
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
-	intel_bb_out(ibb, 0);
+	igt_genxml_emit(ibb, GFX9_3DSTATE_STREAMOUT, so) { }
 
 	gen7_emit_clip(ibb);
 
@@ -1308,14 +1290,17 @@ void _gen9_render_op(struct intel_bb *ibb,
 
 	gen8_emit_ps(ibb, ps_kernel_off, fast_clear);
 
-	intel_bb_out(ibb, GEN7_3DSTATE_BINDING_TABLE_POINTERS_PS);
-	intel_bb_out(ibb, ps_binding_table);
+	igt_genxml_emit(ibb, GFX9_3DSTATE_BINDING_TABLE_POINTERS_PS, bt) {
+		bt.PointertoPSBindingTable = ps_binding_table;
+	}
 
-	intel_bb_out(ibb, GEN7_3DSTATE_SAMPLER_STATE_POINTERS_PS);
-	intel_bb_out(ibb, ps_sampler_state);
+	igt_genxml_emit(ibb, GFX9_3DSTATE_SAMPLER_STATE_POINTERS_PS, sp) {
+		sp.PointertoPSSamplerState = ps_sampler_state;
+	}
 
-	intel_bb_out(ibb, GEN8_3DSTATE_SCISSOR_STATE_POINTERS);
-	intel_bb_out(ibb, scissor_state);
+	igt_genxml_emit(ibb, GFX9_3DSTATE_SCISSOR_STATE_POINTERS, ssp) {
+		ssp.ScissorRectPointer = scissor_state;
+	}
 
 	gen9_emit_depth(ibb);
 
-- 
2.34.1


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

* [PATCH 3/3] lib: Add genxml annotated batch buffer decode
  2026-04-07 13:26 [PATCH 0/3] lib/genxml: Introduce Mesa genxml infrastructure to IGT Jan Maslak
  2026-04-07 13:26 ` [PATCH 1/3] lib/genxml: Import genxml definitions and generators from Mesa Jan Maslak
  2026-04-07 13:26 ` [PATCH 2/3] lib/rendercopy: Convert rendercopy_gen9 to use genxml pack headers Jan Maslak
@ 2026-04-07 13:26 ` Jan Maslak
  2026-04-08  9:23 ` [PATCH 0/3] lib/genxml: Introduce Mesa genxml infrastructure to IGT Jani Nikula
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: Jan Maslak @ 2026-04-07 13:26 UTC (permalink / raw)
  To: igt-dev; +Cc: zbigniew.kempczynski, Jan Maslak

When IGT_BB_ANNOTATE=1 is set, intel_bb_dump() writes a companion
<filename>.annotated file alongside the raw hex dump.  The annotated file
identifies each command and prints its field names and values, decoded via
the genxml *_decode.h headers.

The opt-in environment variable avoids file I/O overhead in normal test runs.
A disclaimer in the file header notes that the decode is best-effort and may
lag hardware on newer platforms.

Signed-off-by: Jan Maslak <jan.maslak@intel.com>
---
 lib/intel_batchbuffer.c | 32 +++++++++++++++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)

diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
index b09506574..3d1ee2dab 100644
--- a/lib/intel_batchbuffer.c
+++ b/lib/intel_batchbuffer.c
@@ -49,6 +49,7 @@
 #include "veboxcopy.h"
 #include "xe/xe_ioctl.h"
 #include "xe/xe_query.h"
+#include "genxml/igt_genxml_decode.h"
 
 #define BCS_SWCTRL 0x22200
 #define BCS_SRC_Y (1 << 0)
@@ -1579,7 +1580,9 @@ void intel_bb_print(struct intel_bb *ibb)
  * @filename: name to which write bb
  * @in_hex: dump bb in hex form
  *
- * Dump batch bo to file.
+ * Dump batch bo to file.  When IGT_BB_ANNOTATE=1 is set, also writes
+ * a companion annotated file (filename + ".annotated") with
+ * genxml-decoded field names and values.
  */
 void intel_bb_dump(struct intel_bb *ibb, const char *filename, bool in_hex)
 {
@@ -1609,6 +1612,33 @@ void intel_bb_dump(struct intel_bb *ibb, const char *filename, bool in_hex)
 	}
 	fclose(out);
 
+	/* Write a companion annotated decode alongside the raw dump,
+	 * but only when explicitly requested via IGT_BB_ANNOTATE=1.
+	 */
+	if (getenv("IGT_BB_ANNOTATE")) {
+		char *ann_filename;
+		unsigned batch_dwords;
+
+		igt_assert(asprintf(&ann_filename, "%s.annotated", filename) > 0);
+		batch_dwords = intel_bb_offset(ibb) / sizeof(uint32_t);
+
+		out = fopen(ann_filename, "w");
+		if (out) {
+			fprintf(out,
+				"# Batch buffer annotated decode\n"
+				"# Decoded using IGT's genxml definitions.\n"
+				"# This is a best-effort annotation and may be inaccurate,\n"
+				"# especially on newer platforms where the XML definitions\n"
+				"# may not yet reflect the latest hardware changes.\n"
+				"\n");
+			igt_genxml_decode_batch(out, ibb->devid,
+						(const uint32_t *)ptr,
+						batch_dwords);
+			fclose(out);
+		}
+		free(ann_filename);
+	}
+
 	if (ptr != ibb->batch)
 		munmap(ptr, ibb->size);
 }
-- 
2.34.1


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

* Re: [PATCH 2/3] lib/rendercopy: Convert rendercopy_gen9 to use genxml pack headers
  2026-04-07 13:26 ` [PATCH 2/3] lib/rendercopy: Convert rendercopy_gen9 to use genxml pack headers Jan Maslak
@ 2026-04-07 15:00   ` Ville Syrjälä
  2026-04-24 10:21     ` Zbigniew Kempczyński
  0 siblings, 1 reply; 13+ messages in thread
From: Ville Syrjälä @ 2026-04-07 15:00 UTC (permalink / raw)
  To: Jan Maslak; +Cc: igt-dev, zbigniew.kempczynski

On Tue, Apr 07, 2026 at 03:26:19PM +0200, Jan Maslak wrote:
> Replace hand-written struct assignments and intel_bb_out() calls in
> rendercopy_gen9.c with igt_genxml_emit and igt_genxml_pack_state calls
> backed by the genxml pack headers.  Command emission is now driven directly
> from the hardware XML definitions rather than manually maintained structs.
> 
> Signed-off-by: Jan Maslak <jan.maslak@intel.com>
> ---
>  lib/rendercopy_gen9.c | 1117 ++++++++++++++++++++---------------------
>  1 file changed, 551 insertions(+), 566 deletions(-)
> 
> diff --git a/lib/rendercopy_gen9.c b/lib/rendercopy_gen9.c
> index d44988010..eecb20a32 100644
> --- a/lib/rendercopy_gen9.c
> +++ b/lib/rendercopy_gen9.c
> @@ -21,11 +21,17 @@
>  #include "intel_io.h"
>  #include "intel_mocs.h"
>  #include "rendercopy.h"
> -#include "gen9_render.h"
> +#include "surfaceformat.h"
>  #include "xe2_render.h"
>  #include "intel_reg.h"
>  #include "igt_aux.h"
>  #include "intel_chipset.h"
> +#include "genxml/igt_genxml.h"
> +#include "gen90_pack.h"
> +#include "gen110_pack.h"
> +#include "gen120_pack.h"
> +#include "gen125_pack.h"
> +#include "xe2_pack.h"
>  
>  #define VERTEX_SIZE (3*4)
>  
> @@ -187,13 +193,60 @@ static uint32_t dg2_compression_format(const struct intel_buf *buf)
>  	}
>  }
>  
> -/* Mostly copy+paste from gen6, except height, width, pitch moved */
> +/*
> + * IGT_RSS_COMMON - set RENDER_SURFACE_STATE fields shared across all gens.
> + * Works via C preprocessor structural typing: all gen-specific structs
> + * have identical field names for these members.
> + */
> +#define IGT_RSS_COMMON(ss, buf, mocs_val, rd, wd)                          \
> +	do {                                                               \
> +		ss.SurfaceType = GFX9_SURFTYPE_2D;                        \
> +		ss.SurfaceFormat = gen4_surface_format((buf)->bpp,         \
> +					       (buf)->depth);      \
> +		ss.SurfaceVerticalAlignment = GFX9_VALIGN_4;              \
> +		ss.MOCS = (mocs_val);                                      \
> +		ss.Width = intel_buf_width(buf) - 1;                       \
> +		ss.Height = intel_buf_height(buf) - 1;                     \
> +		ss.SurfacePitch = (buf)->surface[0].stride - 1;            \
> +		ss.ShaderChannelSelectRed = (int)GFX9_SCS_RED;                 \
> +		ss.ShaderChannelSelectGreen = (int)GFX9_SCS_GREEN;             \
> +		ss.ShaderChannelSelectBlue = (int)GFX9_SCS_BLUE;               \
> +		ss.ShaderChannelSelectAlpha = (int)GFX9_SCS_ALPHA;             \
> +		ss.SurfaceBaseAddress =                                    \
> +			igt_address_of((buf), (buf)->surface[0].offset,    \
> +				       (rd), (wd));                        \
> +	} while (0)
> +
> +/*
> + * IGT_RSS_TILING - set TileMode from buf->tiling.  The numeric encoding is
> + * identical across gen9/gen12/gen12.5/xe2, but the enum names differ per gen.
> + * We use xe2 (GFX20) names as they best reflect the modern tile semantics;
> + * (int) casts suppress -Wenum-conversion when used with older-gen structs.
> + */
> +#define IGT_RSS_TILING(ss, buf)                                            \
> +	do {                                                               \
> +		switch ((buf)->tiling) {                                    \
> +		case I915_TILING_NONE:                                     \
> +			ss.TileMode = (int)GFX20_LINEAR;                  \
> +			break;                                             \
> +		case I915_TILING_X:                                        \
> +			ss.TileMode = (int)GFX20_XMAJOR;                  \
> +			break;                                             \
> +		case I915_TILING_64:                                       \
> +			ss.TileMode = (int)GFX20_TILE64;                  \
> +			ss.MipTailStartLOD = 0xf;                          \
> +			break;                                             \
> +		default:                                                   \
> +			ss.TileMode = (int)GFX20_TILE4;                   \
> +		}                                                          \
> +	} while (0)
> +
>  static uint32_t
> -gen9_bind_buf(struct intel_bb *ibb, const struct intel_buf *buf, int is_dst,
> -	      bool fast_clear) {
> -	struct gen9_surface_state *ss;
> +gen9_bind_buf(struct intel_bb *ibb, const struct intel_buf *buf, int is_dst) {
>  	uint32_t write_domain, read_domain;
> -	uint64_t address;
> +	unsigned int gen = intel_gen(ibb->devid);
> +	uint32_t mocs;
> +	void *ss_ptr;
>  
>  	igt_assert_lte(buf->surface[0].stride, 256*1024);
>  	igt_assert_lte(intel_buf_width(buf), 16384);
> @@ -206,120 +259,106 @@ gen9_bind_buf(struct intel_bb *ibb, const struct intel_buf *buf, int is_dst,
>  		read_domain = I915_GEM_DOMAIN_SAMPLER;
>  	}
>  
> -	ss = intel_bb_ptr_align(ibb, 64);
> -
> -	ss->ss0.surface_type = SURFACE_2D;
> -	ss->ss0.surface_format = gen4_surface_format(buf->bpp, buf->depth);
> -	ss->ss0.vertical_alignment = 1; /* align 4 */
> -	ss->ss0.horizontal_alignment = 1; /* align 4 or HALIGN_32 on display ver >= 13*/
> +	/* MOCS encoding: genxml has a single 7-bit MOCS field (bits 30:24).
> +	 * The old struct had mocs_index:6 at bits 30:25 and pxp:1 at bit 24.
> +	 * Reproduce the same bit layout. */
> +	mocs = (buf->mocs_index << 1) | (intel_buf_pxp(buf) ? 1 : 0);

This annoying mocs_index stuff should be nuked throughout igt,
and replaced with the full mocs field. I've already gotten
confused by this multiple times when it looked like the 
relevant macros were off by one bit when compared to the spec.

<snip>
>  static void gen7_emit_vertex_buffer(struct intel_bb *ibb, uint32_t offset)
>  {
> -	intel_bb_out(ibb, GEN4_3DSTATE_VERTEX_BUFFERS | (1 + (4 * 1) - 2));
> -	intel_bb_out(ibb, 0 << GEN6_VB0_BUFFER_INDEX_SHIFT | /* VB 0th index */
> -		     GEN8_VB0_BUFFER_ADDR_MOD_EN | /* Address Modify Enable */
> -		     VERTEX_SIZE << VB0_BUFFER_PITCH_SHIFT);
> -	intel_bb_emit_reloc(ibb, ibb->handle,
> -			    I915_GEM_DOMAIN_VERTEX, 0,
> -			    offset, ibb->batch_offset);
> -	intel_bb_out(ibb, 3 * VERTEX_SIZE);
> +	void *vb_ptr;
> +
> +	/* Variable-length: 1 header dword + VERTEX_BUFFER_STATE element */
> +	{
> +		struct GFX9_3DSTATE_VERTEX_BUFFERS vbs = { GFX9_3DSTATE_VERTEX_BUFFERS_header };
> +		/* Default DWordLength=3 is correct for 1 element (1 + 4 - 2 = 3) */
> +		GFX9_3DSTATE_VERTEX_BUFFERS_pack(ibb, intel_bb_ptr(ibb), &vbs);
> +		intel_bb_ptr_add(ibb, 4);
> +	}
> +
> +	vb_ptr = intel_bb_ptr(ibb);
> +	igt_genxml_pack_state(ibb, GFX9_VERTEX_BUFFER_STATE, vb_ptr, vb) {
> +		vb.VertexBufferIndex = 0;
> +		vb.AddressModifyEnable = true;
> +		vb.MOCS = intel_get_wb_mocs_index(ibb->fd);

Where did this come from, and why doesn't it have the <<1 ?

The patch is rather big so little things can easily get lost in
the noise. Is it possible to do the conversion to genxml in pieces
(maybe one packet per patch)?

> +		vb.BufferPitch = VERTEX_SIZE;
> +		vb.BufferStartingAddress = (struct igt_address){
> +			.offset = ibb->batch_offset + offset,
> +			.handle = ibb->handle,
> +			.read_domains = I915_GEM_DOMAIN_VERTEX,
> +			.write_domain = 0,
> +			.presumed_offset = ibb->batch_offset,
> +		};
> +		vb.BufferSize = 3 * VERTEX_SIZE;
> +	}
> +	intel_bb_ptr_add(ibb, GFX9_VERTEX_BUFFER_STATE_length * 4);
>  }
>  
>  static uint32_t
>  gen6_create_cc_state(struct intel_bb *ibb)
>  {
> -	struct gen6_color_calc_state *cc_state;
> +	void *ptr = intel_bb_ptr_align(ibb, 64);
>  
> -	cc_state = intel_bb_ptr_align(ibb, 64);
> +	igt_genxml_pack_state(ibb, GFX9_COLOR_CALC_STATE, ptr, cc_state) { }
>  
> -	return intel_bb_ptr_add_return_prev_offset(ibb, sizeof(*cc_state));
> +	return intel_bb_ptr_add_return_prev_offset(ibb,
> +						   GFX9_COLOR_CALC_STATE_length * 4);
>  }
>  
>  static uint32_t
>  gen8_create_blend_state(struct intel_bb *ibb)
>  {
> -	struct gen8_blend_state *blend;
> -	int i;
> -
> -	blend = intel_bb_ptr_align(ibb, 64);
> -
> -	for (i = 0; i < 16; i++) {
> -		blend->bs[i].dest_blend_factor = GEN6_BLENDFACTOR_ZERO;
> -		blend->bs[i].source_blend_factor = GEN6_BLENDFACTOR_ONE;
> -		blend->bs[i].color_blend_func = GEN6_BLENDFUNCTION_ADD;
> -		blend->bs[i].pre_blend_color_clamp = 1;
> -		blend->bs[i].color_buffer_blend = 0;
> +	void *ptr = intel_bb_ptr_align(ibb, 64);
> +
> +	/* Blend state header (1 dword) - all defaults (zeros) */
> +	igt_genxml_pack_state(ibb, GFX9_BLEND_STATE, ptr, bs) { }
> +	ptr += GFX9_BLEND_STATE_length * 4;
> +
> +	/* 16 per-RT blend state entries */
> +	for (int i = 0; i < 16; i++) {
> +		igt_genxml_pack_state(ibb, GFX9_BLEND_STATE_ENTRY, ptr, entry) {
> +			entry.DestinationBlendFactor = GFX9_BLENDFACTOR_ZERO;
> +			entry.SourceBlendFactor = GFX9_BLENDFACTOR_ONE;
> +			entry.ColorBlendFunction = GFX9_BLENDFUNCTION_ADD;
> +			entry.PreBlendColorClampEnable = true;
> +		}
> +		ptr += GFX9_BLEND_STATE_ENTRY_length * 4;
>  	}
>  
> -	return intel_bb_ptr_add_return_prev_offset(ibb, sizeof(*blend));
> +	return intel_bb_ptr_add_return_prev_offset(ibb,
> +		(GFX9_BLEND_STATE_length + 16 * GFX9_BLEND_STATE_ENTRY_length) * 4);
>  }
>  
>  static uint32_t
>  gen6_create_cc_viewport(struct intel_bb *ibb)
>  {
> -	struct gen4_cc_viewport *vp;
> -
> -	vp = intel_bb_ptr_align(ibb, 32);
> +	void *ptr = intel_bb_ptr_align(ibb, 32);
>  
> -	/* XXX I don't understand this */
> -	vp->min_depth = -1.e35;
> -	vp->max_depth = 1.e35;
> +	igt_genxml_pack_state(ibb, GFX9_CC_VIEWPORT, ptr, vp) {
> +		vp.MinimumDepth = -1.e35;
> +		vp.MaximumDepth = 1.e35;
> +	}
>  
> -	return intel_bb_ptr_add_return_prev_offset(ibb, sizeof(*vp));
> +	return intel_bb_ptr_add_return_prev_offset(ibb,
> +						   GFX9_CC_VIEWPORT_length * 4);
>  }
>  
>  static uint32_t
>  gen7_create_sf_clip_viewport(struct intel_bb *ibb) {
> -	/* XXX these are likely not needed */
> -	struct gen7_sf_clip_viewport *scv_state;
> -
> -	scv_state = intel_bb_ptr_align(ibb, 64);
> +	void *ptr = intel_bb_ptr_align(ibb, 64);
>  
> -	scv_state->guardband.xmin = 0;
> -	scv_state->guardband.xmax = 1.0f;
> -	scv_state->guardband.ymin = 0;
> -	scv_state->guardband.ymax = 1.0f;
> +	igt_genxml_pack_state(ibb, GFX9_SF_CLIP_VIEWPORT, ptr, scv) {
> +		scv.XMinClipGuardband = 0;
> +		scv.XMaxClipGuardband = 1.0f;
> +		scv.YMinClipGuardband = 0;
> +		scv.YMaxClipGuardband = 1.0f;
> +	}
>  
> -	return intel_bb_ptr_add_return_prev_offset(ibb, sizeof(*scv_state));
> +	return intel_bb_ptr_add_return_prev_offset(ibb,
> +						   GFX9_SF_CLIP_VIEWPORT_length * 4);
>  }
>  
>  static uint32_t
>  gen6_create_scissor_rect(struct intel_bb *ibb)
>  {
> -	struct gen6_scissor_rect *scissor;
> +	void *ptr = intel_bb_ptr_align(ibb, 64);
>  
> -	scissor = intel_bb_ptr_align(ibb, 64);
> +	igt_genxml_pack_state(ibb, GFX9_SCISSOR_RECT, ptr, sr) { }
>  
> -	return intel_bb_ptr_add_return_prev_offset(ibb, sizeof(*scissor));
> +	return intel_bb_ptr_add_return_prev_offset(ibb,
> +						   GFX9_SCISSOR_RECT_length * 4);
>  }
>  
>  static void
>  gen8_emit_sip(struct intel_bb *ibb) {
> -	intel_bb_out(ibb, GEN4_STATE_SIP | (3 - 2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> +	igt_genxml_emit(ibb, GFX9_STATE_SIP, sip) {
> +		/* SystemInstructionPointer left as zero */
> +	}
>  }
>  
>  static void
>  gen7_emit_push_constants(struct intel_bb *ibb) {
> -	intel_bb_out(ibb, GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_VS);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_PS);
> -	intel_bb_out(ibb, 0);
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_PUSH_CONSTANT_ALLOC_VS, vs) { }
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_PUSH_CONSTANT_ALLOC_HS, hs) { }
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_PUSH_CONSTANT_ALLOC_DS, ds) { }
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_PUSH_CONSTANT_ALLOC_GS, gs) { }
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_PUSH_CONSTANT_ALLOC_PS, ps) { }
>  }
>  
> +/*
> + * IGT_SBA_COMMON - shared STATE_BASE_ADDRESS fields across gen9/gen11/gen125.
> + * All three variants have identical field names for the fields we set.
> + */
> +#define IGT_SBA_COMMON(sba, mocs_val, surf, dyn, inst)                     \
> +	do {                                                               \
> +		sba.GeneralStateBaseAddressModifyEnable = true;            \
> +		sba.GeneralStateMOCS = (mocs_val);                         \
> +		sba.StatelessDataPortAccessMOCS = (mocs_val);              \
> +		sba.SurfaceStateBaseAddressModifyEnable = true;            \
> +		sba.SurfaceStateMOCS = (mocs_val);                         \
> +		sba.SurfaceStateBaseAddress = (surf);                      \
> +		sba.DynamicStateBaseAddressModifyEnable = true;            \
> +		sba.DynamicStateMOCS = (mocs_val);                         \
> +		sba.DynamicStateBaseAddress = (dyn);                       \
> +		sba.IndirectObjectMOCS = (mocs_val);                       \
> +		sba.InstructionBaseAddressModifyEnable = true;             \
> +		sba.InstructionMOCS = (mocs_val);                          \
> +		sba.InstructionBaseAddress = (inst);                       \
> +		sba.GeneralStateBufferSizeModifyEnable = true;             \
> +		sba.GeneralStateBufferSize = 0xfffff;                      \
> +		sba.DynamicStateBufferSizeModifyEnable = true;             \
> +		sba.DynamicStateBufferSize = 1;                            \
> +		sba.IndirectObjectBufferSizeModifyEnable = true;           \
> +		sba.IndirectObjectBufferSize = 0xfffff;                    \
> +		sba.InstructionBuffersizeModifyEnable = true;              \
> +		sba.InstructionBufferSize = 1;                             \
> +		sba.BindlessSurfaceStateMOCS = (mocs_val);                 \
> +	} while (0)
> +
>  static void
>  gen9_emit_state_base_address(struct intel_bb *ibb) {
> +	uint8_t mocs = intel_get_wb_mocs_index(ibb->fd);
>  
> -	/* WaBindlessSurfaceStateModifyEnable:skl,bxt */
> -	/* The length has to be one less if we dont modify
> -	   bindless state */
> -	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20)
> -		intel_bb_out(ibb, GEN4_STATE_BASE_ADDRESS | 20);
> -	else
> -		intel_bb_out(ibb, GEN4_STATE_BASE_ADDRESS | (19 - 1 - 2));
> -
> -	/* general */
> -	intel_bb_out(ibb, 0 | BASE_ADDRESS_MODIFY);
> -	intel_bb_out(ibb, 0);
> -
> -	/* stateless data port */
> -	intel_bb_out(ibb, 0 | BASE_ADDRESS_MODIFY);
> -
> -	/* surface */
> -	intel_bb_emit_reloc(ibb, ibb->handle,
> -			    I915_GEM_DOMAIN_SAMPLER, 0,
> -			    BASE_ADDRESS_MODIFY, ibb->batch_offset);
> -
> -	/* dynamic */
> -	intel_bb_emit_reloc(ibb, ibb->handle,
> -			    I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_INSTRUCTION, 0,
> -			    BASE_ADDRESS_MODIFY, ibb->batch_offset);
> -
> -	/* indirect */
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -
> -	/* instruction */
> -	intel_bb_emit_reloc(ibb, ibb->handle,
> -			    I915_GEM_DOMAIN_INSTRUCTION, 0,
> -			    BASE_ADDRESS_MODIFY, ibb->batch_offset);
> -
> -	/* general state buffer size */
> -	intel_bb_out(ibb, 0xfffff000 | 1);
> -	/* dynamic state buffer size */
> -	intel_bb_out(ibb, 1 << 12 | 1);
> -	/* indirect object buffer size */
> -	intel_bb_out(ibb, 0xfffff000 | 1);
> -	/* intruction buffer size */
> -	intel_bb_out(ibb, 1 << 12 | 1);
> -
> -	/* Bindless surface state base address */
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> +	struct igt_address surf_base =
> +		igt_address_of_batch(ibb, I915_GEM_DOMAIN_SAMPLER, 0);
> +	struct igt_address dyn_base =
> +		igt_address_of_batch(ibb,
> +				     I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_INSTRUCTION, 0);
> +	struct igt_address inst_base =
> +		igt_address_of_batch(ibb, I915_GEM_DOMAIN_INSTRUCTION, 0);
>  
> -	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20) {
> -		/* Bindless sampler */
> -		intel_bb_out(ibb, 0);
> -		intel_bb_out(ibb, 0);
> -		intel_bb_out(ibb, 0);
> +	if (HAS_4TILE(ibb->devid) || intel_gen(ibb->devid) > 12) {
> +		igt_genxml_emit(ibb, GFX125_STATE_BASE_ADDRESS, sba) {
> +			IGT_SBA_COMMON(sba, mocs, surf_base, dyn_base, inst_base);
> +			/* WBP (0) and UC (1) are marked dont_use in the XML for this field. */
> +			sba.L1CacheControl = GFX125_L1CC_WB;
> +			sba.BindlessSamplerStateBaseAddressModifyEnable = true;
> +			sba.BindlessSamplerStateMOCS = mocs;
> +		}
> +	} else if (intel_gen(ibb->devid) >= 11) {
> +		igt_genxml_emit(ibb, GFX11_STATE_BASE_ADDRESS, sba) {
> +			IGT_SBA_COMMON(sba, mocs, surf_base, dyn_base, inst_base);
> +			sba.BindlessSamplerStateBaseAddressModifyEnable = true;
> +			sba.BindlessSamplerStateMOCS = mocs;
> +		}
> +	} else {
> +		igt_genxml_emit(ibb, GFX9_STATE_BASE_ADDRESS, sba) {
> +			IGT_SBA_COMMON(sba, mocs, surf_base, dyn_base, inst_base);
> +		}
>  	}
>  }
>  
> @@ -750,184 +821,119 @@ gen7_emit_urb(struct intel_bb *ibb) {
>  	const int vs_size = 2;
>  	const int vs_start = 4;
>  
> -	intel_bb_out(ibb, GEN7_3DSTATE_URB_VS);
> -	intel_bb_out(ibb, vs_entries | ((vs_size - 1) << 16) | (vs_start << 25));
> -	intel_bb_out(ibb, GEN7_3DSTATE_URB_GS);
> -	intel_bb_out(ibb, vs_start << 25);
> -	intel_bb_out(ibb, GEN7_3DSTATE_URB_HS);
> -	intel_bb_out(ibb, vs_start << 25);
> -	intel_bb_out(ibb, GEN7_3DSTATE_URB_DS);
> -	intel_bb_out(ibb, vs_start << 25);
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_URB_VS, urb) {
> +		urb.VSNumberofURBEntries = vs_entries;
> +		urb.VSURBEntryAllocationSize = vs_size - 1;
> +		urb.VSURBStartingAddress = vs_start;
> +	}
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_URB_GS, urb) {
> +		urb.GSURBStartingAddress = vs_start;
> +	}
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_URB_HS, urb) {
> +		urb.HSURBStartingAddress = vs_start;
> +	}
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_URB_DS, urb) {
> +		urb.DSURBStartingAddress = vs_start;
> +	}
>  }
>  
>  static void
>  gen8_emit_cc(struct intel_bb *ibb) {
> -	intel_bb_out(ibb, GEN7_3DSTATE_BLEND_STATE_POINTERS);
> -	intel_bb_out(ibb, cc.blend_state | 1);
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_BLEND_STATE_POINTERS, bsp) {
> +		bsp.BlendStatePointer = cc.blend_state;
> +		bsp.BlendStatePointerValid = true;
> +	}
>  
> -	intel_bb_out(ibb, GEN6_3DSTATE_CC_STATE_POINTERS);
> -	intel_bb_out(ibb, cc.cc_state | 1);
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_CC_STATE_POINTERS, ccp) {
> +		ccp.ColorCalcStatePointer = cc.cc_state;
> +		ccp.ColorCalcStatePointerValid = true;
> +	}
>  }
>  
>  static void
>  gen8_emit_multisample(struct intel_bb *ibb) {
> -	intel_bb_out(ibb, GEN8_3DSTATE_MULTISAMPLE | 0);
> -	intel_bb_out(ibb, 0);
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_MULTISAMPLE, ms) { }
>  
> -	intel_bb_out(ibb, GEN6_3DSTATE_SAMPLE_MASK);
> -	intel_bb_out(ibb, 1);
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_SAMPLE_MASK, sm) {
> +		sm.SampleMask = 1;
> +	}
>  }
>  
>  static void
>  gen8_emit_vs(struct intel_bb *ibb) {
> -	intel_bb_out(ibb, GEN6_3DSTATE_CONSTANT_VS | (11-2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN7_3DSTATE_BINDING_TABLE_POINTERS_VS);
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN7_3DSTATE_SAMPLER_STATE_POINTERS_VS);
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN6_3DSTATE_VS | (9-2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_CONSTANT_VS, cvs) {
> +		cvs.MOCS = intel_get_wb_mocs_index(ibb->fd);
> +	}
> +
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_BINDING_TABLE_POINTERS_VS, bt) { }
> +
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_SAMPLER_STATE_POINTERS_VS, sp) { }
> +
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_VS, vs) { }
>  }
>  
>  static void
>  gen8_emit_hs(struct intel_bb *ibb) {
> -	intel_bb_out(ibb, GEN7_3DSTATE_CONSTANT_HS | (11-2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN7_3DSTATE_HS | (9-2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN7_3DSTATE_BINDING_TABLE_POINTERS_HS);
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS);
> -	intel_bb_out(ibb, 0);
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_CONSTANT_HS, chs) {
> +		chs.MOCS = intel_get_wb_mocs_index(ibb->fd);
> +	}
> +
> +	if (intel_gen(ibb->devid) >= 20)
> +		igt_genxml_emit(ibb, GFX20_3DSTATE_HS, hs) { }
> +	else
> +		igt_genxml_emit(ibb, GFX9_3DSTATE_HS, hs) { }
> +
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_BINDING_TABLE_POINTERS_HS, bt) { }
> +
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_SAMPLER_STATE_POINTERS_HS, sp) { }
>  }
>  
>  static void
>  gen8_emit_gs(struct intel_bb *ibb) {
> -	intel_bb_out(ibb, GEN6_3DSTATE_CONSTANT_GS | (11-2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN6_3DSTATE_GS | (10-2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN7_3DSTATE_BINDING_TABLE_POINTERS_GS);
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN7_3DSTATE_SAMPLER_STATE_POINTERS_GS);
> -	intel_bb_out(ibb, 0);
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_CONSTANT_GS, cgs) {
> +		cgs.MOCS = intel_get_wb_mocs_index(ibb->fd);
> +	}
> +
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_GS, gs) { }
> +
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_BINDING_TABLE_POINTERS_GS, bt) { }
> +
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_SAMPLER_STATE_POINTERS_GS, sp) { }
>  }
>  
>  static void
>  gen9_emit_ds(struct intel_bb *ibb) {
> -	intel_bb_out(ibb, GEN7_3DSTATE_CONSTANT_DS | (11-2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN7_3DSTATE_DS | (11-2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN7_3DSTATE_BINDING_TABLE_POINTERS_DS);
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS);
> -	intel_bb_out(ibb, 0);
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_CONSTANT_DS, cds) {
> +		cds.MOCS = intel_get_wb_mocs_index(ibb->fd);
> +	}
> +
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_DS, ds) { }
> +
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_BINDING_TABLE_POINTERS_DS, bt) { }
> +
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_SAMPLER_STATE_POINTERS_DS, sp) { }
>  }
>  
>  
>  static void
>  gen8_emit_wm_hz_op(struct intel_bb *ibb) {
>  	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20) {
> -		intel_bb_out(ibb, GEN8_3DSTATE_WM_HZ_OP | (6-2));
> -		intel_bb_out(ibb, 0);
> +		igt_genxml_emit(ibb, GFX20_3DSTATE_WM_HZ_OP, hz) { }
>  	} else {
> -		intel_bb_out(ibb, GEN8_3DSTATE_WM_HZ_OP | (5-2));
> +		igt_genxml_emit(ibb, GFX9_3DSTATE_WM_HZ_OP, hz) { }
>  	}
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
>  }
>  
>  static void
>  gen8_emit_null_state(struct intel_bb *ibb) {
>  	gen8_emit_wm_hz_op(ibb);
>  	gen8_emit_hs(ibb);
> -	intel_bb_out(ibb, GEN7_3DSTATE_TE | (4-2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> +
> +	if (intel_gen(ibb->devid) >= 12)
> +		igt_genxml_emit(ibb, GFX12_3DSTATE_TE, te) { }
> +	else
> +		igt_genxml_emit(ibb, GFX9_3DSTATE_TE, te) { }
> +
>  	gen8_emit_gs(ibb);
>  	gen9_emit_ds(ibb);
>  	gen8_emit_vs(ibb);
> @@ -935,137 +941,109 @@ gen8_emit_null_state(struct intel_bb *ibb) {
>  
>  static void
>  gen7_emit_clip(struct intel_bb *ibb) {
> -	intel_bb_out(ibb, GEN6_3DSTATE_CLIP | (4 - 2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0); /*  pass-through */
> -	intel_bb_out(ibb, 0);
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_CLIP, clip) {
> +		/* All fields zero = pass-through */
> +	}
>  }
>  
>  static void
>  gen8_emit_sf(struct intel_bb *ibb)
>  {
> -	int i;
> -
> -	intel_bb_out(ibb, GEN7_3DSTATE_SBE | (6 - 2));
> -	intel_bb_out(ibb, 1 << GEN7_SBE_NUM_OUTPUTS_SHIFT |
> -		     GEN8_SBE_FORCE_URB_ENTRY_READ_LENGTH |
> -		     GEN8_SBE_FORCE_URB_ENTRY_READ_OFFSET |
> -		     1 << GEN7_SBE_URB_ENTRY_READ_LENGTH_SHIFT |
> -		     1 << GEN8_SBE_URB_ENTRY_READ_OFFSET_SHIFT);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, GEN9_SBE_ACTIVE_COMPONENT_XYZW << 0);
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN8_3DSTATE_SBE_SWIZ | (11 - 2));
> -	for (i = 0; i < 8; i++)
> -		intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN8_3DSTATE_RASTER | (5 - 2));
> -	intel_bb_out(ibb, GEN8_RASTER_FRONT_WINDING_CCW | GEN8_RASTER_CULL_NONE);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN6_3DSTATE_SF | (4 - 2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_SBE, sbe) {
> +		sbe.NumberofSFOutputAttributes = 1;
> +		sbe.ForceVertexURBEntryReadLength = true;
> +		sbe.ForceVertexURBEntryReadOffset = true;
> +		sbe.VertexURBEntryReadLength = 1;
> +		sbe.VertexURBEntryReadOffset = 1;
> +		sbe.AttributeActiveComponentFormat[0] = GFX9_ACTIVE_COMPONENT_XYZW;
> +	}
> +
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_SBE_SWIZ, swiz) { }
> +
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_RASTER, raster) {
> +		raster.FrontWinding = 1; /* CCW */
> +		raster.CullMode = GFX9_CULLMODE_NONE;
> +	}
> +
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_SF, sf) { }
>  }
>  
>  static void
>  gen8_emit_ps(struct intel_bb *ibb, uint32_t kernel, bool fast_clear) {
>  	const int max_threads = 63;
>  
> -	intel_bb_out(ibb, GEN6_3DSTATE_WM | (2 - 2));
> -	intel_bb_out(ibb, /* XXX: I don't understand the BARYCENTRIC stuff, but it
> -		   * appears we need it to put our setup data in the place we
> -		   * expect (g6, see below) */
> -		     GEN8_3DSTATE_PS_PERSPECTIVE_PIXEL_BARYCENTRIC);
> -
> -	intel_bb_out(ibb, GEN6_3DSTATE_CONSTANT_PS | (11-2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN7_3DSTATE_PS | (12-2));
> -	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20)
> -		intel_bb_out(ibb, kernel | 1);
> -	else
> -		intel_bb_out(ibb, kernel);
> -	intel_bb_out(ibb, 0); /* kernel hi */
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_WM, wm) {
> +		wm.BarycentricInterpolationMode = GFX9_BIM_PERSPECTIVE_PIXEL;
> +	}
>  
> -	if (fast_clear)
> -		intel_bb_out(ibb, 1 <<  GEN6_3DSTATE_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT);
> -	else
> -		intel_bb_out(ibb, 1 << GEN6_3DSTATE_WM_SAMPLER_COUNT_SHIFT |
> -		             2 << GEN6_3DSTATE_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT);
> -
> -	intel_bb_out(ibb, 0); /* scratch space stuff */
> -	intel_bb_out(ibb, 0); /* scratch hi */
> -	intel_bb_out(ibb, (max_threads - 1) << GEN8_3DSTATE_PS_MAX_THREADS_SHIFT |
> -	             GEN6_3DSTATE_WM_16_DISPATCH_ENABLE |
> -	             (fast_clear ? GEN8_3DSTATE_FAST_CLEAR_ENABLE : 0));
> -	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20)
> -		intel_bb_out(ibb, 6 << GEN6_3DSTATE_WM_DISPATCH_START_GRF_0_SHIFT |
> -			     GENXE_KERNEL0_POLY_PACK16_FIXED << GENXE_KERNEL0_PACKING_POLICY);
> -	else
> -		intel_bb_out(ibb, 6 << GEN6_3DSTATE_WM_DISPATCH_START_GRF_0_SHIFT);
> -	intel_bb_out(ibb, 0); // kernel 1
> -	intel_bb_out(ibb, 0); /* kernel 1 hi */
> -	intel_bb_out(ibb, 0); // kernel 2
> -	intel_bb_out(ibb, 0); /* kernel 2 hi */
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_CONSTANT_PS, cps) {
> +		cps.MOCS = intel_get_wb_mocs_index(ibb->fd);
> +	}
>  
> -	intel_bb_out(ibb, GEN8_3DSTATE_PS_BLEND | (2 - 2));
> -	intel_bb_out(ibb, GEN8_PS_BLEND_HAS_WRITEABLE_RT);
> +	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20) {
> +		igt_genxml_emit(ibb, GFX20_3DSTATE_PS, ps) {
> +			ps.KernelStartPointer0 = kernel;
> +			ps.Kernel0Enable = true;
> +			ps.BindingTableEntryCount = fast_clear ? 1 : 2;
> +			ps.SamplerCount = fast_clear ? 0 : 1;
> +			ps.Kernel0SIMDWidth = GFX20_PS_SIMD16;
> +			ps.RenderTargetFastClearEnable = fast_clear;
> +			ps.MaximumNumberofThreadsPerPSD = max_threads - 1;
> +			ps.DispatchGRFStartRegisterForConstantSetupData0 = 6;
> +			ps.Kernel0PolyPackingPolicy = GFX20_POLY_PACK16_FIXED;
> +		}
> +	} else {
> +		igt_genxml_emit(ibb, GFX9_3DSTATE_PS, ps) {
> +			ps.KernelStartPointer0 = kernel;
> +			ps.BindingTableEntryCount = fast_clear ? 1 : 2;
> +			ps.SamplerCount = fast_clear ? 0 : 1;
> +			ps._16PixelDispatchEnable = true;
> +			ps.RenderTargetFastClearEnable = fast_clear;
> +			ps.MaximumNumberofThreadsPerPSD = max_threads - 1;
> +			ps.DispatchGRFStartRegisterForConstantSetupData0 = 6;
> +		}
> +	}
> +
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_PS_BLEND, blend) {
> +		blend.HasWriteableRT = true;
> +	}
>  
> -	intel_bb_out(ibb, GEN8_3DSTATE_PS_EXTRA | (2 - 2));
> -	intel_bb_out(ibb, GEN8_PSX_PIXEL_SHADER_VALID | GEN8_PSX_ATTRIBUTE_ENABLE);
> +	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20) {
> +		igt_genxml_emit(ibb, GFX20_3DSTATE_PS_EXTRA, extra) {
> +			extra.PixelShaderValid = true;
> +		}
> +	} else {
> +		igt_genxml_emit(ibb, GFX9_3DSTATE_PS_EXTRA, extra) {
> +			extra.PixelShaderValid = true;
> +			extra.AttributeEnable = true;
> +		}
> +	}
>  }
>  
>  static void
>  gen9_emit_depth(struct intel_bb *ibb)
>  {
> -	bool need_10dw = HAS_4TILE(ibb->devid);
> -
> -	intel_bb_out(ibb, GEN8_3DSTATE_WM_DEPTH_STENCIL | (4 - 2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN7_3DSTATE_DEPTH_BUFFER | (need_10dw ? (10-2) : (8-2)));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	if (need_10dw) {
> -		intel_bb_out(ibb, 0);
> -		intel_bb_out(ibb, 0);
> +	uint8_t mocs = intel_get_wb_mocs_index(ibb->fd);
> +
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_WM_DEPTH_STENCIL, wds) { }
> +
> +	if (HAS_4TILE(ibb->devid)) {
> +		igt_genxml_emit(ibb, GFX125_3DSTATE_DEPTH_BUFFER, db) {
> +			db.MOCS = mocs;
> +		}
> +	} else {
> +		igt_genxml_emit(ibb, GFX9_3DSTATE_DEPTH_BUFFER, db) {
> +			db.MOCS = mocs;
> +		}
>  	}
>  
> -	intel_bb_out(ibb, GEN8_3DSTATE_HIER_DEPTH_BUFFER | (5-2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN8_3DSTATE_STENCIL_BUFFER | (5-2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_HIER_DEPTH_BUFFER, hdb) {
> +		hdb.MOCS = mocs;
> +	}
> +
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_STENCIL_BUFFER, sb) {
> +		sb.MOCS = mocs;
> +	}
>  }
>  
>  static void
> @@ -1073,46 +1051,45 @@ gen7_emit_clear(struct intel_bb *ibb) {
>  	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20)
>  		return;
>  
> -	intel_bb_out(ibb, GEN7_3DSTATE_CLEAR_PARAMS | (3-2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 1); // clear valid
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_CLEAR_PARAMS, cp) {
> +		cp.DepthClearValueValid = true;
> +	}
>  }
>  
>  static void
>  gen6_emit_drawing_rectangle(struct intel_bb *ibb, const struct intel_buf *dst)
>  {
> -	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20)
> -		intel_bb_out(ibb, GENXE2_3DSTATE_DRAWING_RECTANGLE_FAST | (4 - 2));
> -	else
> -		intel_bb_out(ibb, GEN4_3DSTATE_DRAWING_RECTANGLE | (4 - 2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, (intel_buf_height(dst) - 1) << 16 | (intel_buf_width(dst) - 1));
> -	intel_bb_out(ibb, 0);
> +	if (intel_gen(intel_get_drm_devid(ibb->fd)) >= 20) {
> +		igt_genxml_emit(ibb, GFX20_3DSTATE_DRAWING_RECTANGLE_FAST, dr) {
> +			dr.ClippedDrawingRectangleXMax = intel_buf_width(dst) - 1;
> +			dr.ClippedDrawingRectangleYMax = intel_buf_height(dst) - 1;
> +		}
> +	} else {
> +		igt_genxml_emit(ibb, GFX9_3DSTATE_DRAWING_RECTANGLE, dr) {
> +			dr.ClippedDrawingRectangleXMax = intel_buf_width(dst) - 1;
> +			dr.ClippedDrawingRectangleYMax = intel_buf_height(dst) - 1;
> +		}
> +	}
>  }
>  
>  static void gen8_emit_vf_topology(struct intel_bb *ibb)
>  {
> -	intel_bb_out(ibb, GEN8_3DSTATE_VF_TOPOLOGY);
> -	intel_bb_out(ibb, _3DPRIM_RECTLIST);
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_VF_TOPOLOGY, vft) {
> +		vft.PrimitiveTopologyType = GFX9_3DPRIM_RECTLIST;
> +	}
>  }
>  
>  /* Vertex elements MUST be defined before this according to spec */
>  static void gen8_emit_primitive(struct intel_bb *ibb, uint32_t offset)
>  {
> -	intel_bb_out(ibb, GEN8_3DSTATE_VF | (2 - 2));
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN8_3DSTATE_VF_INSTANCING | (3 - 2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -
> -	intel_bb_out(ibb, GEN4_3DPRIMITIVE | (7-2));
> -	intel_bb_out(ibb, 0);	/* gen8+ ignore the topology type field */
> -	intel_bb_out(ibb, 3);	/* vertex count */
> -	intel_bb_out(ibb, 0);	/*  We're specifying this instead with offset in GEN6_3DSTATE_VERTEX_BUFFERS */
> -	intel_bb_out(ibb, 1);	/* single instance */
> -	intel_bb_out(ibb, 0);	/* start instance location */
> -	intel_bb_out(ibb, 0);	/* index buffer offset, ignored */
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_VF, vf) { }
> +
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_VF_INSTANCING, vfi) { }
> +
> +	igt_genxml_emit(ibb, GFX9_3DPRIMITIVE, prim) {
> +		prim.VertexCountPerInstance = 3;
> +		prim.InstanceCount = 1;
> +	}
>  }
>  
>  #define PIPE_CONTROL_RENDER_TARGET_FLUSH    (1 << 12)
> @@ -1244,8 +1221,13 @@ void _gen9_render_op(struct intel_bb *ibb,
>  
>  	/* Start emitting the commands. The order roughly follows the mesa blorp
>  	 * order */
> -	intel_bb_out(ibb, G4X_PIPELINE_SELECT | PIPELINE_SELECT_3D |
> -		     GEN9_PIPELINE_SELECTION_MASK);
> +	igt_genxml_emit(ibb, GFX9_PIPELINE_SELECT, ps) {
> +		ps.PipelineSelection = GFX9_3D;
> +		/* MaskBits 15:8 is a write-enable mask for bits 5:4 (Force Media
> +		 * Awake and Media Sampler DOP Clock Gate Enable).  Value 0x3
> +		 * enables writes to both bits so PipelineSelection takes effect. */
> +		ps.MaskBits = 3;
> +	}
>  
>  	gen12_emit_aux_pgtable_state(ibb, aux_pgtable_state, true);
>  
> @@ -1276,17 +1258,21 @@ void _gen9_render_op(struct intel_bb *ibb,
>  	gen9_emit_state_base_address(ibb);
>  
>  	if (HAS_4TILE(ibb->devid) || intel_gen(ibb->devid) > 12) {
> -		intel_bb_out(ibb, GEN4_3DSTATE_BINDING_TABLE_POOL_ALLOC | 2);
> -		intel_bb_emit_reloc(ibb, ibb->handle,
> -				    I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_INSTRUCTION, 0,
> -				    0, ibb->batch_offset);
> -		intel_bb_out(ibb, 1 << 12);
> +		igt_genxml_emit(ibb, GFX9_3DSTATE_BINDING_TABLE_POOL_ALLOC, btpa) {
> +			btpa.MOCS = intel_get_wb_mocs_index(ibb->fd);
> +			btpa.BindingTablePoolBaseAddress =
> +				igt_address_of_batch(ibb,
> +					I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_INSTRUCTION, 0);
> +			btpa.BindingTablePoolBufferSize = 1;
> +		}
>  	}
>  
> -	intel_bb_out(ibb, GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_CC);
> -	intel_bb_out(ibb, viewport.cc_state);
> -	intel_bb_out(ibb, GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP);
> -	intel_bb_out(ibb, viewport.sf_clip_state);
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_VIEWPORT_STATE_POINTERS_CC, vp) {
> +		vp.CCViewportPointer = viewport.cc_state;
> +	}
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP, vp) {
> +		vp.SFClipViewportPointer = viewport.sf_clip_state;
> +	}
>  
>  	gen7_emit_urb(ibb);
>  
> @@ -1296,11 +1282,7 @@ void _gen9_render_op(struct intel_bb *ibb,
>  
>  	gen8_emit_null_state(ibb);
>  
> -	intel_bb_out(ibb, GEN7_3DSTATE_STREAMOUT | (5 - 2));
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> -	intel_bb_out(ibb, 0);
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_STREAMOUT, so) { }
>  
>  	gen7_emit_clip(ibb);
>  
> @@ -1308,14 +1290,17 @@ void _gen9_render_op(struct intel_bb *ibb,
>  
>  	gen8_emit_ps(ibb, ps_kernel_off, fast_clear);
>  
> -	intel_bb_out(ibb, GEN7_3DSTATE_BINDING_TABLE_POINTERS_PS);
> -	intel_bb_out(ibb, ps_binding_table);
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_BINDING_TABLE_POINTERS_PS, bt) {
> +		bt.PointertoPSBindingTable = ps_binding_table;
> +	}
>  
> -	intel_bb_out(ibb, GEN7_3DSTATE_SAMPLER_STATE_POINTERS_PS);
> -	intel_bb_out(ibb, ps_sampler_state);
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_SAMPLER_STATE_POINTERS_PS, sp) {
> +		sp.PointertoPSSamplerState = ps_sampler_state;
> +	}
>  
> -	intel_bb_out(ibb, GEN8_3DSTATE_SCISSOR_STATE_POINTERS);
> -	intel_bb_out(ibb, scissor_state);
> +	igt_genxml_emit(ibb, GFX9_3DSTATE_SCISSOR_STATE_POINTERS, ssp) {
> +		ssp.ScissorRectPointer = scissor_state;
> +	}
>  
>  	gen9_emit_depth(ibb);
>  
> -- 
> 2.34.1

-- 
Ville Syrjälä
Intel

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

* Re: [PATCH 0/3] lib/genxml: Introduce Mesa genxml infrastructure to IGT
  2026-04-07 13:26 [PATCH 0/3] lib/genxml: Introduce Mesa genxml infrastructure to IGT Jan Maslak
                   ` (2 preceding siblings ...)
  2026-04-07 13:26 ` [PATCH 3/3] lib: Add genxml annotated batch buffer decode Jan Maslak
@ 2026-04-08  9:23 ` Jani Nikula
  2026-04-09 17:45 ` ✗ Xe.CI.BAT: failure for " Patchwork
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: Jani Nikula @ 2026-04-08  9:23 UTC (permalink / raw)
  To: Jan Maslak, igt-dev; +Cc: zbigniew.kempczynski, Jan Maslak

On Tue, 07 Apr 2026, Jan Maslak <jan.maslak@intel.com> wrote:
> This series brings Mesa's hardware XML command/state definitions and
> gen_pack_header.py code generator into IGT, adds a new IGT-written
> batch buffer decoder (gen_decode_header.py), and converts rendercopy_gen9
> to use the generated pack headers.

The cover letter and the commit messages contain a lot of the "What?"
but there not much in terms of the "Why?" here.

I can make assumptions, but the rationale is something that should be
spelled out in the commit messages.

BR,
Jani.

>
> Patch 1 imports the XML definitions and generators. gen_pack_header.py
> is taken from Mesa with C90 compliance fixes and a new baseline
> deduplication mechanism - when a platform's command layout matches any
> older generation exactly, the item is omitted entirely.
> gen_decode_header.py is a new IGT-only file that generates per-platform
> decoders for instructions, structs, and registers.
>
> Patch 2 converts rendercopy_gen9.c to use the generated pack headers,
> replacing hand-written struct assignments and intel_bb_out() calls with
> igt_genxml_emit and igt_genxml_pack_state.
>
> Patch 3 adds an opt-in annotated batch dump to intel_bb_dump(): when
> IGT_BB_ANNOTATE=1 is set a companion .annotated file is written alongside
> the raw hex dump, decoding each command's field names and values.
>
> Tested on LNL and DG2 (xe_render_copy render-square, render-full;
> xe_intel_bb render) and TGL (gem_render_copy_redux; api_intel_bb).
>
> Signed-off-by: Jan Maslak <jan.maslak@intel.com>
>
> Jan Maslak (3):
>   lib/genxml: Import genxml definitions and generators from Mesa
>   lib/rendercopy: Convert rendercopy_gen9 to use genxml pack headers
>   lib: Add genxml annotated batch buffer decode
>
>  lib/genxml/gen110.xml           | 3358 +++++++++++++++++++++++++
>  lib/genxml/gen120.xml           | 2432 ++++++++++++++++++
>  lib/genxml/gen125.xml           | 2628 +++++++++++++++++++
>  lib/genxml/gen40.xml            | 1012 ++++++++
>  lib/genxml/gen45.xml            |  507 ++++
>  lib/genxml/gen50.xml            |  648 +++++
>  lib/genxml/gen60.xml            | 2606 +++++++++++++++++++
>  lib/genxml/gen70.xml            | 3067 ++++++++++++++++++++++
>  lib/genxml/gen75.xml            | 2424 ++++++++++++++++++
>  lib/genxml/gen80.xml            | 2993 ++++++++++++++++++++++
>  lib/genxml/gen90.xml            | 4192 +++++++++++++++++++++++++++++++
>  lib/genxml/gen_decode_header.py |  487 ++++
>  lib/genxml/gen_pack_header.py   |  799 ++++++
>  lib/genxml/igt_genxml.h         |  112 +
>  lib/genxml/igt_genxml_decode.h  |   60 +
>  lib/genxml/igt_genxml_defs.h    |  335 +++
>  lib/genxml/intel_genxml.py      |  553 ++++
>  lib/genxml/util.py              |   39 +
>  lib/genxml/xe2.xml              | 1969 +++++++++++++++
>  lib/genxml/xe3.xml              |  816 ++++++
>  lib/genxml/xe3p.xml             |    4 +
>  lib/intel_batchbuffer.c         |   32 +-
>  lib/meson.build                 |   65 +-
>  lib/rendercopy_gen9.c           | 1117 ++++----
>  24 files changed, 31687 insertions(+), 568 deletions(-)
>  create mode 100644 lib/genxml/gen110.xml
>  create mode 100644 lib/genxml/gen120.xml
>  create mode 100644 lib/genxml/gen125.xml
>  create mode 100644 lib/genxml/gen40.xml
>  create mode 100644 lib/genxml/gen45.xml
>  create mode 100644 lib/genxml/gen50.xml
>  create mode 100644 lib/genxml/gen60.xml
>  create mode 100644 lib/genxml/gen70.xml
>  create mode 100644 lib/genxml/gen75.xml
>  create mode 100644 lib/genxml/gen80.xml
>  create mode 100644 lib/genxml/gen90.xml
>  create mode 100644 lib/genxml/gen_decode_header.py
>  create mode 100644 lib/genxml/gen_pack_header.py
>  create mode 100644 lib/genxml/igt_genxml.h
>  create mode 100644 lib/genxml/igt_genxml_decode.h
>  create mode 100644 lib/genxml/igt_genxml_defs.h
>  create mode 100644 lib/genxml/intel_genxml.py
>  create mode 100644 lib/genxml/util.py
>  create mode 100644 lib/genxml/xe2.xml
>  create mode 100644 lib/genxml/xe3.xml
>  create mode 100644 lib/genxml/xe3p.xml

-- 
Jani Nikula, Intel

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

* Re: [PATCH 1/3] lib/genxml: Import genxml definitions and generators from Mesa
  2026-04-07 13:26 ` [PATCH 1/3] lib/genxml: Import genxml definitions and generators from Mesa Jan Maslak
@ 2026-04-08 15:44   ` Kamil Konieczny
  0 siblings, 0 replies; 13+ messages in thread
From: Kamil Konieczny @ 2026-04-08 15:44 UTC (permalink / raw)
  To: Jan Maslak; +Cc: igt-dev, zbigniew.kempczynski

Hi Jan,
On 2026-04-07 at 15:26:18 +0200, Jan Maslak wrote:
> Import the hardware command/state XML definitions, gen_pack_header.py, and
> intel_genxml.py from Mesa (MIT-licensed, Mesa commit 3a62dc0218d3).  Add a
> new gen_decode_header.py written for IGT.  The generators produce per-platform
> *_pack.h and *_decode.h headers at build time into the build directory - no
> generated files are committed to the source tree.  Meson custom_target rules
> build headers for gen9 through xe3p covering the render, blitter, and compute
> engines.
> 
> gen_pack_header.py produces type-safe pack and emit functions for every
> command, struct, and register in the XML.  Callers fill a typed struct and
> call the pack function; the generator handles all bit-field packing.
> 
> gen_decode_header.py (new, IGT-only) produces decoders that identify a command
> from its opcode and print each decoded field's name and value.  Also decodes
> structs and registers embedded within commands.
> 
> IGT-specific changes to gen_pack_header.py over the upstream Mesa version:
> 
>  - C90 compliance: block-scope each dword's local variable declarations in the
>    generated pack functions.
>  - Baseline deduplication: when a platform's layout exactly matches any older
>    generation, the item is omitted entirely - no #define aliases are emitted.
>    A comment names the oldest generation that first defined that layout so
>    the definition can be found in one grep.  Upstream Mesa has no
>    deduplication; this keeps the generated headers free of noise as the
>    number of platform variants grows.
> 
> See individual file headers for per-file copyright notices.
> 
> Signed-off-by: Jan Maslak <jan.maslak@intel.com>
> ---
>  lib/genxml/gen110.xml           | 3358 +++++++++++++++++++++++++

All this imho should be placed in lib/intel/genxml
as this is Intel specific. Could you also split this into
commits under 1MB each? For example, two commits for XMLs
and third for python scripts?

Also, as Jani noted, please describe 'Why?' part in one of commits,
preferably python one so it will stay in git history.

Regards,
Kamil

>  lib/genxml/gen120.xml           | 2432 ++++++++++++++++++
>  lib/genxml/gen125.xml           | 2628 +++++++++++++++++++
>  lib/genxml/gen40.xml            | 1012 ++++++++
>  lib/genxml/gen45.xml            |  507 ++++
>  lib/genxml/gen50.xml            |  648 +++++
>  lib/genxml/gen60.xml            | 2606 +++++++++++++++++++
>  lib/genxml/gen70.xml            | 3067 ++++++++++++++++++++++
>  lib/genxml/gen75.xml            | 2424 ++++++++++++++++++
>  lib/genxml/gen80.xml            | 2993 ++++++++++++++++++++++
>  lib/genxml/gen90.xml            | 4192 +++++++++++++++++++++++++++++++
>  lib/genxml/gen_decode_header.py |  487 ++++
>  lib/genxml/gen_pack_header.py   |  799 ++++++
>  lib/genxml/igt_genxml.h         |  112 +
>  lib/genxml/igt_genxml_decode.h  |   60 +
>  lib/genxml/igt_genxml_defs.h    |  335 +++
>  lib/genxml/intel_genxml.py      |  553 ++++
>  lib/genxml/util.py              |   39 +
>  lib/genxml/xe2.xml              | 1969 +++++++++++++++
>  lib/genxml/xe3.xml              |  816 ++++++
>  lib/genxml/xe3p.xml             |    4 +
>  lib/meson.build                 |   65 +-
>  22 files changed, 31105 insertions(+), 1 deletion(-)
>  create mode 100644 lib/genxml/gen110.xml
>  create mode 100644 lib/genxml/gen120.xml
>  create mode 100644 lib/genxml/gen125.xml
>  create mode 100644 lib/genxml/gen40.xml
>  create mode 100644 lib/genxml/gen45.xml
>  create mode 100644 lib/genxml/gen50.xml
>  create mode 100644 lib/genxml/gen60.xml
>  create mode 100644 lib/genxml/gen70.xml
>  create mode 100644 lib/genxml/gen75.xml
>  create mode 100644 lib/genxml/gen80.xml
>  create mode 100644 lib/genxml/gen90.xml
>  create mode 100644 lib/genxml/gen_decode_header.py
>  create mode 100644 lib/genxml/gen_pack_header.py
>  create mode 100644 lib/genxml/igt_genxml.h
>  create mode 100644 lib/genxml/igt_genxml_decode.h
>  create mode 100644 lib/genxml/igt_genxml_defs.h
>  create mode 100644 lib/genxml/intel_genxml.py
>  create mode 100644 lib/genxml/util.py
>  create mode 100644 lib/genxml/xe2.xml
>  create mode 100644 lib/genxml/xe3.xml
>  create mode 100644 lib/genxml/xe3p.xml
> 
[cut]

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

* ✗ Xe.CI.BAT: failure for lib/genxml: Introduce Mesa genxml infrastructure to IGT
  2026-04-07 13:26 [PATCH 0/3] lib/genxml: Introduce Mesa genxml infrastructure to IGT Jan Maslak
                   ` (3 preceding siblings ...)
  2026-04-08  9:23 ` [PATCH 0/3] lib/genxml: Introduce Mesa genxml infrastructure to IGT Jani Nikula
@ 2026-04-09 17:45 ` Patchwork
  2026-04-09 18:03 ` ✗ i915.CI.BAT: " Patchwork
  2026-04-09 19:02 ` ✗ Xe.CI.FULL: " Patchwork
  6 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2026-04-09 17:45 UTC (permalink / raw)
  To: Jan Maslak; +Cc: igt-dev

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

== Series Details ==

Series: lib/genxml: Introduce Mesa genxml infrastructure to IGT
URL   : https://patchwork.freedesktop.org/series/164446/
State : failure

== Summary ==

CI Bug Log - changes from XEIGT_8852_BAT -> XEIGTPW_14944_BAT
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with XEIGTPW_14944_BAT absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in XEIGTPW_14944_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 (14 -> 14)
------------------------------

  No changes in participating hosts

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@xe_pat@pat-index-xe2:
    - bat-bmg-1:          [PASS][1] -> [INCOMPLETE][2] +1 other test incomplete
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/bat-bmg-1/igt@xe_pat@pat-index-xe2.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/bat-bmg-1/igt@xe_pat@pat-index-xe2.html
    - bat-lnl-2:          [PASS][3] -> [INCOMPLETE][4] +1 other test incomplete
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/bat-lnl-2/igt@xe_pat@pat-index-xe2.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/bat-lnl-2/igt@xe_pat@pat-index-xe2.html
    - bat-wcl-1:          [PASS][5] -> [INCOMPLETE][6] +1 other test incomplete
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/bat-wcl-1/igt@xe_pat@pat-index-xe2.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/bat-wcl-1/igt@xe_pat@pat-index-xe2.html
    - bat-wcl-2:          [PASS][7] -> [INCOMPLETE][8] +1 other test incomplete
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/bat-wcl-2/igt@xe_pat@pat-index-xe2.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/bat-wcl-2/igt@xe_pat@pat-index-xe2.html
    - bat-ptl-2:          [PASS][9] -> [INCOMPLETE][10] +1 other test incomplete
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/bat-ptl-2/igt@xe_pat@pat-index-xe2.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/bat-ptl-2/igt@xe_pat@pat-index-xe2.html

  * igt@xe_pat@pat-index-xe2@render:
    - bat-ptl-1:          [PASS][11] -> [INCOMPLETE][12] +1 other test incomplete
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/bat-ptl-1/igt@xe_pat@pat-index-xe2@render.html
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/bat-ptl-1/igt@xe_pat@pat-index-xe2@render.html
    - bat-ptl-vm:         [PASS][13] -> [INCOMPLETE][14] +1 other test incomplete
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/bat-ptl-vm/igt@xe_pat@pat-index-xe2@render.html
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/bat-ptl-vm/igt@xe_pat@pat-index-xe2@render.html
    - bat-lnl-1:          [PASS][15] -> [INCOMPLETE][16] +1 other test incomplete
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/bat-lnl-1/igt@xe_pat@pat-index-xe2@render.html
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/bat-lnl-1/igt@xe_pat@pat-index-xe2@render.html
    - bat-bmg-2:          [PASS][17] -> [INCOMPLETE][18] +1 other test incomplete
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/bat-bmg-2/igt@xe_pat@pat-index-xe2@render.html
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/bat-bmg-2/igt@xe_pat@pat-index-xe2@render.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_flip@basic-flip-vs-wf_vblank@c-edp1:
    - bat-adlp-7:         [PASS][19] -> [DMESG-WARN][20] ([Intel XE#7483])
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/bat-adlp-7/igt@kms_flip@basic-flip-vs-wf_vblank@c-edp1.html
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/bat-adlp-7/igt@kms_flip@basic-flip-vs-wf_vblank@c-edp1.html

  
#### Possible fixes ####

  * igt@kms_flip@basic-flip-vs-wf_vblank@d-edp1:
    - bat-adlp-7:         [DMESG-WARN][21] ([Intel XE#7483]) -> [PASS][22]
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/bat-adlp-7/igt@kms_flip@basic-flip-vs-wf_vblank@d-edp1.html
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/bat-adlp-7/igt@kms_flip@basic-flip-vs-wf_vblank@d-edp1.html

  
  [Intel XE#7483]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7483


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

  * IGT: IGT_8852 -> IGTPW_14944

  IGTPW_14944: 14944
  IGT_8852: 8852
  xe-4860-5ee75b2816df74bfe606d4dfc061547d5cda4ebf: 5ee75b2816df74bfe606d4dfc061547d5cda4ebf

== Logs ==

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

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

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

* ✗ i915.CI.BAT: failure for lib/genxml: Introduce Mesa genxml infrastructure to IGT
  2026-04-07 13:26 [PATCH 0/3] lib/genxml: Introduce Mesa genxml infrastructure to IGT Jan Maslak
                   ` (4 preceding siblings ...)
  2026-04-09 17:45 ` ✗ Xe.CI.BAT: failure for " Patchwork
@ 2026-04-09 18:03 ` Patchwork
  2026-04-09 19:02 ` ✗ Xe.CI.FULL: " Patchwork
  6 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2026-04-09 18:03 UTC (permalink / raw)
  To: Jan Maslak; +Cc: igt-dev

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

== Series Details ==

Series: lib/genxml: Introduce Mesa genxml infrastructure to IGT
URL   : https://patchwork.freedesktop.org/series/164446/
State : failure

== Summary ==

CI Bug Log - changes from IGT_8852 -> IGTPW_14944
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_14944 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_14944, 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_14944/index.html

Participating hosts (42 -> 40)
------------------------------

  Missing    (2): bat-dg2-13 fi-snb-2520m 

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@gem_exec_fence@basic-await:
    - bat-arls-5:         [PASS][1] -> [FAIL][2] +1 other test fail
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8852/bat-arls-5/igt@gem_exec_fence@basic-await.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14944/bat-arls-5/igt@gem_exec_fence@basic-await.html

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

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

### IGT changes ###

#### Possible fixes ####

  * igt@i915_selftest@live@workarounds:
    - bat-arls-5:         [DMESG-FAIL][3] ([i915#12061]) -> [PASS][4] +1 other test pass
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8852/bat-arls-5/igt@i915_selftest@live@workarounds.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14944/bat-arls-5/igt@i915_selftest@live@workarounds.html
    - bat-dg2-9:          [DMESG-FAIL][5] ([i915#12061]) -> [PASS][6] +1 other test pass
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8852/bat-dg2-9/igt@i915_selftest@live@workarounds.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14944/bat-dg2-9/igt@i915_selftest@live@workarounds.html
    - bat-dg2-14:         [DMESG-FAIL][7] ([i915#12061]) -> [PASS][8] +1 other test pass
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8852/bat-dg2-14/igt@i915_selftest@live@workarounds.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14944/bat-dg2-14/igt@i915_selftest@live@workarounds.html
    - bat-mtlp-9:         [DMESG-FAIL][9] ([i915#12061]) -> [PASS][10] +1 other test pass
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8852/bat-mtlp-9/igt@i915_selftest@live@workarounds.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14944/bat-mtlp-9/igt@i915_selftest@live@workarounds.html

  
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061


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

  * CI: CI-20190529 -> None
  * IGT: IGT_8852 -> IGTPW_14944

  CI-20190529: 20190529
  CI_DRM_18303: 7fa61e7003dda66c77b7f63a555658d8fb10bacf @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_14944: 14944
  IGT_8852: 8852

== Logs ==

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

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

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

* ✗ Xe.CI.FULL: failure for lib/genxml: Introduce Mesa genxml infrastructure to IGT
  2026-04-07 13:26 [PATCH 0/3] lib/genxml: Introduce Mesa genxml infrastructure to IGT Jan Maslak
                   ` (5 preceding siblings ...)
  2026-04-09 18:03 ` ✗ i915.CI.BAT: " Patchwork
@ 2026-04-09 19:02 ` Patchwork
  6 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2026-04-09 19:02 UTC (permalink / raw)
  To: Jan Maslak; +Cc: igt-dev

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

== Series Details ==

Series: lib/genxml: Introduce Mesa genxml infrastructure to IGT
URL   : https://patchwork.freedesktop.org/series/164446/
State : failure

== Summary ==

CI Bug Log - changes from XEIGT_8852_FULL -> XEIGTPW_14944_FULL
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with XEIGTPW_14944_FULL absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in XEIGTPW_14944_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 (2 -> 2)
------------------------------

  No changes in participating hosts

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@xe_pat@display-vs-wb-transient:
    - shard-bmg:          [PASS][1] -> [INCOMPLETE][2] +2 other tests incomplete
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-bmg-5/igt@xe_pat@display-vs-wb-transient.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-4/igt@xe_pat@display-vs-wb-transient.html
    - shard-lnl:          [PASS][3] -> [INCOMPLETE][4] +2 other tests incomplete
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-lnl-2/igt@xe_pat@display-vs-wb-transient.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-lnl-2/igt@xe_pat@display-vs-wb-transient.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-dp-2:
    - shard-bmg:          [PASS][5] -> [INCOMPLETE][6] ([Intel XE#6819] / [Intel XE#6891])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-bmg-10/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-dp-2.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-3/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-dp-2.html

  * igt@kms_atomic_transition@plane-all-transition-nonblocking:
    - shard-bmg:          [PASS][7] -> [INCOMPLETE][8] ([Intel XE#6819]) +1 other test incomplete
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-bmg-1/igt@kms_atomic_transition@plane-all-transition-nonblocking.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-3/igt@kms_atomic_transition@plane-all-transition-nonblocking.html

  * igt@kms_atomic_transition@plane-all-transition-nonblocking@pipe-a-hdmi-a-3:
    - shard-bmg:          [PASS][9] -> [DMESG-WARN][10] ([Intel XE#6819])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-bmg-1/igt@kms_atomic_transition@plane-all-transition-nonblocking@pipe-a-hdmi-a-3.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-3/igt@kms_atomic_transition@plane-all-transition-nonblocking@pipe-a-hdmi-a-3.html

  * igt@kms_big_fb@y-tiled-8bpp-rotate-90:
    - shard-bmg:          NOTRUN -> [SKIP][11] ([Intel XE#1124]) +1 other test skip
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-10/igt@kms_big_fb@y-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-addfb:
    - shard-bmg:          NOTRUN -> [SKIP][12] ([Intel XE#2328] / [Intel XE#7367])
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-10/igt@kms_big_fb@yf-tiled-addfb.html

  * igt@kms_bw@connected-linear-tiling-3-displays-2560x1440p:
    - shard-bmg:          NOTRUN -> [SKIP][13] ([Intel XE#7679]) +1 other test skip
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-7/igt@kms_bw@connected-linear-tiling-3-displays-2560x1440p.html

  * igt@kms_ccs@bad-aux-stride-yf-tiled-ccs:
    - shard-bmg:          NOTRUN -> [SKIP][14] ([Intel XE#2887]) +5 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-7/igt@kms_ccs@bad-aux-stride-yf-tiled-ccs.html

  * igt@kms_chamelium_hpd@dp-hpd-fast:
    - shard-bmg:          NOTRUN -> [SKIP][15] ([Intel XE#2252]) +1 other test skip
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-10/igt@kms_chamelium_hpd@dp-hpd-fast.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic:
    - shard-bmg:          [PASS][16] -> [FAIL][17] ([Intel XE#7571])
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-bmg-9/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-2/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html

  * igt@kms_dp_link_training@uhbr-mst:
    - shard-bmg:          NOTRUN -> [SKIP][18] ([Intel XE#4354] / [Intel XE#7386])
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-5/igt@kms_dp_link_training@uhbr-mst.html

  * igt@kms_flip@plain-flip-fb-recreate@d-dp2:
    - shard-bmg:          [PASS][19] -> [ABORT][20] ([Intel XE#5545] / [Intel XE#6652] / [Intel XE#7200]) +1 other test abort
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-bmg-9/igt@kms_flip@plain-flip-fb-recreate@d-dp2.html
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-2/igt@kms_flip@plain-flip-fb-recreate@d-dp2.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling:
    - shard-bmg:          NOTRUN -> [SKIP][21] ([Intel XE#7178] / [Intel XE#7351])
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-10/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-pgflip-blt:
    - shard-bmg:          NOTRUN -> [SKIP][22] ([Intel XE#4141]) +2 other tests skip
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscreen-pri-shrfb-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][23] ([Intel XE#2311]) +8 other tests skip
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscreen-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-msflip-blt:
    - shard-bmg:          NOTRUN -> [SKIP][24] ([Intel XE#2313]) +6 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-msflip-blt.html

  * igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier@pipe-b-plane-5:
    - shard-bmg:          NOTRUN -> [SKIP][25] ([Intel XE#7130]) +1 other test skip
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-1/igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier@pipe-b-plane-5.html

  * igt@kms_pm_backlight@fade-with-suspend:
    - shard-lnl:          [PASS][26] -> [ABORT][27] ([Intel XE#2625]) +1 other test abort
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-lnl-1/igt@kms_pm_backlight@fade-with-suspend.html
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-lnl-6/igt@kms_pm_backlight@fade-with-suspend.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-lnl:          [PASS][28] -> [FAIL][29] ([Intel XE#7340])
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-lnl-5/igt@kms_pm_dc@dc6-dpms.html
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-lnl-2/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_psr2_sf@pr-overlay-plane-move-continuous-sf:
    - shard-bmg:          NOTRUN -> [SKIP][30] ([Intel XE#1489])
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-4/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-sf.html

  * igt@kms_psr@fbc-pr-primary-page-flip:
    - shard-bmg:          NOTRUN -> [SKIP][31] ([Intel XE#2234] / [Intel XE#2850]) +4 other tests skip
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-8/igt@kms_psr@fbc-pr-primary-page-flip.html

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0:
    - shard-bmg:          NOTRUN -> [SKIP][32] ([Intel XE#3904] / [Intel XE#7342])
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-10/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html

  * igt@kms_vrr@cmrr@pipe-a-edp-1:
    - shard-lnl:          [PASS][33] -> [FAIL][34] ([Intel XE#4459]) +1 other test fail
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-lnl-4/igt@kms_vrr@cmrr@pipe-a-edp-1.html
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-lnl-6/igt@kms_vrr@cmrr@pipe-a-edp-1.html

  * igt@kms_vrr@lobf:
    - shard-bmg:          NOTRUN -> [SKIP][35] ([Intel XE#2168] / [Intel XE#7444])
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-1/igt@kms_vrr@lobf.html

  * igt@xe_eudebug@basic-exec-queues:
    - shard-bmg:          NOTRUN -> [SKIP][36] ([Intel XE#7636]) +4 other tests skip
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-5/igt@xe_eudebug@basic-exec-queues.html

  * igt@xe_evict@evict-mixed-many-threads-small:
    - shard-bmg:          NOTRUN -> [INCOMPLETE][37] ([Intel XE#6321])
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-5/igt@xe_evict@evict-mixed-many-threads-small.html

  * igt@xe_evict@evict-small-multi-queue-priority-cm:
    - shard-bmg:          NOTRUN -> [SKIP][38] ([Intel XE#7140])
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-9/igt@xe_evict@evict-small-multi-queue-priority-cm.html

  * igt@xe_exec_basic@multigpu-no-exec-null:
    - shard-bmg:          NOTRUN -> [SKIP][39] ([Intel XE#2322] / [Intel XE#7372])
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-4/igt@xe_exec_basic@multigpu-no-exec-null.html

  * igt@xe_exec_fault_mode@twice-multi-queue-userptr-rebind:
    - shard-bmg:          NOTRUN -> [SKIP][40] ([Intel XE#7136]) +6 other tests skip
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-1/igt@xe_exec_fault_mode@twice-multi-queue-userptr-rebind.html

  * igt@xe_exec_multi_queue@many-execs-preempt-mode-priority:
    - shard-bmg:          NOTRUN -> [SKIP][41] ([Intel XE#6874]) +10 other tests skip
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-9/igt@xe_exec_multi_queue@many-execs-preempt-mode-priority.html

  * igt@xe_exec_threads@threads-multi-queue-cm-fd-rebind:
    - shard-bmg:          NOTRUN -> [SKIP][42] ([Intel XE#7138]) +3 other tests skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-10/igt@xe_exec_threads@threads-multi-queue-cm-fd-rebind.html

  * igt@xe_pxp@pxp-termination-key-update-post-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][43] ([Intel XE#4733] / [Intel XE#7417])
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-4/igt@xe_pxp@pxp-termination-key-update-post-suspend.html

  * igt@xe_query@multigpu-query-pxp-status:
    - shard-bmg:          NOTRUN -> [SKIP][44] ([Intel XE#944])
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-6/igt@xe_query@multigpu-query-pxp-status.html

  * igt@xe_sriov_auto_provisioning@selfconfig-reprovision-reduce-numvfs:
    - shard-bmg:          [PASS][45] -> [FAIL][46] ([Intel XE#5937]) +1 other test fail
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-bmg-6/igt@xe_sriov_auto_provisioning@selfconfig-reprovision-reduce-numvfs.html
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-6/igt@xe_sriov_auto_provisioning@selfconfig-reprovision-reduce-numvfs.html

  
#### Possible fixes ####

  * igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size:
    - shard-bmg:          [DMESG-WARN][47] ([Intel XE#5354]) -> [PASS][48]
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-bmg-5/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size.html
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-8/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size.html

  * igt@kms_flip@2x-wf_vblank-ts-check-interruptible:
    - shard-bmg:          [FAIL][49] ([Intel XE#3149]) -> [PASS][50] +1 other test pass
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-bmg-6/igt@kms_flip@2x-wf_vblank-ts-check-interruptible.html
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-4/igt@kms_flip@2x-wf_vblank-ts-check-interruptible.html

  * igt@kms_flip@2x-wf_vblank-ts-check-interruptible@ad-dp2-hdmi-a3:
    - shard-bmg:          [FAIL][51] -> [PASS][52] +4 other tests pass
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-bmg-6/igt@kms_flip@2x-wf_vblank-ts-check-interruptible@ad-dp2-hdmi-a3.html
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-4/igt@kms_flip@2x-wf_vblank-ts-check-interruptible@ad-dp2-hdmi-a3.html

  * igt@kms_flip@flip-vs-expired-vblank@a-edp1:
    - shard-lnl:          [FAIL][53] ([Intel XE#301]) -> [PASS][54] +1 other test pass
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-lnl-2/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html

  * igt@kms_vrr@flip-basic:
    - shard-lnl:          [FAIL][55] ([Intel XE#4227] / [Intel XE#7397]) -> [PASS][56] +3 other tests pass
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-lnl-8/igt@kms_vrr@flip-basic.html
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-lnl-2/igt@kms_vrr@flip-basic.html

  * igt@kms_vrr@seamless-rr-switch-virtual@pipe-a-edp-1:
    - shard-lnl:          [FAIL][57] ([Intel XE#2142]) -> [PASS][58] +1 other test pass
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-lnl-6/igt@kms_vrr@seamless-rr-switch-virtual@pipe-a-edp-1.html
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-lnl-6/igt@kms_vrr@seamless-rr-switch-virtual@pipe-a-edp-1.html

  * igt@xe_exec_system_allocator@many-execqueues-mmap-shared-remap-eocheck:
    - shard-bmg:          [DMESG-WARN][59] -> [PASS][60]
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-bmg-6/igt@xe_exec_system_allocator@many-execqueues-mmap-shared-remap-eocheck.html
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-4/igt@xe_exec_system_allocator@many-execqueues-mmap-shared-remap-eocheck.html

  * igt@xe_sriov_auto_provisioning@selfconfig-reprovision-increase-numvfs:
    - shard-bmg:          [FAIL][61] ([Intel XE#5937]) -> [PASS][62] +2 other tests pass
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-bmg-8/igt@xe_sriov_auto_provisioning@selfconfig-reprovision-increase-numvfs.html
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-8/igt@xe_sriov_auto_provisioning@selfconfig-reprovision-increase-numvfs.html

  
#### Warnings ####

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-bmg:          [SKIP][63] ([Intel XE#2509] / [Intel XE#7437]) -> [SKIP][64] ([Intel XE#2426] / [Intel XE#5848])
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8852/shard-bmg-10/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14944/shard-bmg-3/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#2142]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2142
  [Intel XE#2168]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2168
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2328]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2328
  [Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
  [Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
  [Intel XE#2625]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2625
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
  [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
  [Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
  [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
  [Intel XE#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227
  [Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
  [Intel XE#4459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4459
  [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
  [Intel XE#5354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5354
  [Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
  [Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
  [Intel XE#5937]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5937
  [Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
  [Intel XE#6652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6652
  [Intel XE#6819]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6819
  [Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
  [Intel XE#6891]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6891
  [Intel XE#7130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7130
  [Intel XE#7136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7136
  [Intel XE#7138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7138
  [Intel XE#7140]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7140
  [Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
  [Intel XE#7200]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7200
  [Intel XE#7340]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7340
  [Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342
  [Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
  [Intel XE#7367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7367
  [Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
  [Intel XE#7386]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7386
  [Intel XE#7397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7397
  [Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
  [Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437
  [Intel XE#7444]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7444
  [Intel XE#7571]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7571
  [Intel XE#7636]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7636
  [Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944


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

  * IGT: IGT_8852 -> IGTPW_14944

  IGTPW_14944: 14944
  IGT_8852: 8852
  xe-4860-5ee75b2816df74bfe606d4dfc061547d5cda4ebf: 5ee75b2816df74bfe606d4dfc061547d5cda4ebf

== Logs ==

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

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

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

* Re: [PATCH 2/3] lib/rendercopy: Convert rendercopy_gen9 to use genxml pack headers
  2026-04-07 15:00   ` Ville Syrjälä
@ 2026-04-24 10:21     ` Zbigniew Kempczyński
  2026-04-24 10:46       ` Ville Syrjälä
  0 siblings, 1 reply; 13+ messages in thread
From: Zbigniew Kempczyński @ 2026-04-24 10:21 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: Jan Maslak, igt-dev

On Tue, Apr 07, 2026 at 06:00:49PM +0300, Ville Syrjälä wrote:

<cut>

> > +	/* MOCS encoding: genxml has a single 7-bit MOCS field (bits 30:24).
> > +	 * The old struct had mocs_index:6 at bits 30:25 and pxp:1 at bit 24.
> > +	 * Reproduce the same bit layout. */
> > +	mocs = (buf->mocs_index << 1) | (intel_buf_pxp(buf) ? 1 : 0);
> 
> This annoying mocs_index stuff should be nuked throughout igt,
> and replaced with the full mocs field. I've already gotten
> confused by this multiple times when it looked like the 
> relevant macros were off by one bit when compared to the spec.

IMO we can't stop using mocs index. BLOCK_COPY for Xe2+ has mocs index
on bits[27:24] and encrypt is on bit[21]. Bits[23-22] are reserved.

--
Zbigniew

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

* Re: [PATCH 2/3] lib/rendercopy: Convert rendercopy_gen9 to use genxml pack headers
  2026-04-24 10:21     ` Zbigniew Kempczyński
@ 2026-04-24 10:46       ` Ville Syrjälä
  2026-04-24 15:37         ` Zbigniew Kempczyński
  0 siblings, 1 reply; 13+ messages in thread
From: Ville Syrjälä @ 2026-04-24 10:46 UTC (permalink / raw)
  To: Zbigniew Kempczyński; +Cc: Jan Maslak, igt-dev

On Fri, Apr 24, 2026 at 12:21:37PM +0200, Zbigniew Kempczyński wrote:
> On Tue, Apr 07, 2026 at 06:00:49PM +0300, Ville Syrjälä wrote:
> 
> <cut>
> 
> > > +	/* MOCS encoding: genxml has a single 7-bit MOCS field (bits 30:24).
> > > +	 * The old struct had mocs_index:6 at bits 30:25 and pxp:1 at bit 24.
> > > +	 * Reproduce the same bit layout. */
> > > +	mocs = (buf->mocs_index << 1) | (intel_buf_pxp(buf) ? 1 : 0);
> > 
> > This annoying mocs_index stuff should be nuked throughout igt,
> > and replaced with the full mocs field. I've already gotten
> > confused by this multiple times when it looked like the 
> > relevant macros were off by one bit when compared to the spec.
> 
> IMO we can't stop using mocs index. BLOCK_COPY for Xe2+ has mocs index
> on bits[27:24] and encrypt is on bit[21]. Bits[23-22] are reserved.

If that's the exception then it would be better to handle it there.
Everything else just has a single MOCS field, and the encryption bit
(if it exists) is just part of it. The current thing makes zero sense
for platforms that don't have the encrypt bit, and for the platforms
where the encrypt bit is part of MOCS the whole thing is just
intentionally confusing.

-- 
Ville Syrjälä
Intel

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

* Re: [PATCH 2/3] lib/rendercopy: Convert rendercopy_gen9 to use genxml pack headers
  2026-04-24 10:46       ` Ville Syrjälä
@ 2026-04-24 15:37         ` Zbigniew Kempczyński
  0 siblings, 0 replies; 13+ messages in thread
From: Zbigniew Kempczyński @ 2026-04-24 15:37 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: Jan Maslak, igt-dev

On Fri, Apr 24, 2026 at 01:46:38PM +0300, Ville Syrjälä wrote:
> On Fri, Apr 24, 2026 at 12:21:37PM +0200, Zbigniew Kempczyński wrote:
> > On Tue, Apr 07, 2026 at 06:00:49PM +0300, Ville Syrjälä wrote:
> > 
> > <cut>
> > 
> > > > +	/* MOCS encoding: genxml has a single 7-bit MOCS field (bits 30:24).
> > > > +	 * The old struct had mocs_index:6 at bits 30:25 and pxp:1 at bit 24.
> > > > +	 * Reproduce the same bit layout. */
> > > > +	mocs = (buf->mocs_index << 1) | (intel_buf_pxp(buf) ? 1 : 0);
> > > 
> > > This annoying mocs_index stuff should be nuked throughout igt,
> > > and replaced with the full mocs field. I've already gotten
> > > confused by this multiple times when it looked like the 
> > > relevant macros were off by one bit when compared to the spec.
> > 
> > IMO we can't stop using mocs index. BLOCK_COPY for Xe2+ has mocs index
> > on bits[27:24] and encrypt is on bit[21]. Bits[23-22] are reserved.
> 
> If that's the exception then it would be better to handle it there.
> Everything else just has a single MOCS field, and the encryption bit
> (if it exists) is just part of it. The current thing makes zero sense
> for platforms that don't have the encrypt bit, and for the platforms
> where the encrypt bit is part of MOCS the whole thing is just
> intentionally confusing.

I've found 4 exceptions in xe2.xml where MOCS doesn't use previous
[7] or [6+1] bit arrangements.

Interesting is EXECUTE_INDIRECT_DISPATCH contains MOCS index only. We're
not using this command in IGT, but this shows index also can appear
standalone. I think IGT should provide both interfaces - for getting
MOCS index standalone and for getting the full MOCS field and on
usecase depends which interface should be used.

--
Zbigniew

> 
> -- 
> Ville Syrjälä
> Intel

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

end of thread, other threads:[~2026-04-24 15:37 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-07 13:26 [PATCH 0/3] lib/genxml: Introduce Mesa genxml infrastructure to IGT Jan Maslak
2026-04-07 13:26 ` [PATCH 1/3] lib/genxml: Import genxml definitions and generators from Mesa Jan Maslak
2026-04-08 15:44   ` Kamil Konieczny
2026-04-07 13:26 ` [PATCH 2/3] lib/rendercopy: Convert rendercopy_gen9 to use genxml pack headers Jan Maslak
2026-04-07 15:00   ` Ville Syrjälä
2026-04-24 10:21     ` Zbigniew Kempczyński
2026-04-24 10:46       ` Ville Syrjälä
2026-04-24 15:37         ` Zbigniew Kempczyński
2026-04-07 13:26 ` [PATCH 3/3] lib: Add genxml annotated batch buffer decode Jan Maslak
2026-04-08  9:23 ` [PATCH 0/3] lib/genxml: Introduce Mesa genxml infrastructure to IGT Jani Nikula
2026-04-09 17:45 ` ✗ Xe.CI.BAT: failure for " Patchwork
2026-04-09 18:03 ` ✗ i915.CI.BAT: " Patchwork
2026-04-09 19:02 ` ✗ Xe.CI.FULL: " Patchwork

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