intel/genxml: Assert that all MOCS fields are non-zero on Gfx7+
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 19 Oct 2021 05:48:14 +0000 (22:48 -0700)
committerMarge Bot <emma+marge@anholt.net>
Thu, 28 Oct 2021 19:45:56 +0000 (19:45 +0000)
Let's try and catch performance problems before we have to do large
painful amounts of analysis to detect a missed field.

Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13480>

src/intel/genxml/gen11.xml
src/intel/genxml/gen12.xml
src/intel/genxml/gen125.xml
src/intel/genxml/gen7.xml
src/intel/genxml/gen75.xml
src/intel/genxml/gen8.xml
src/intel/genxml/gen9.xml

index ca66b8a..1c9a28c 100644 (file)
   </struct>
 
   <struct name="MEMORYADDRESSATTRIBUTES" length="1">
-    <field name="MOCS" start="1" end="6" type="uint"/>
+    <field name="MOCS" start="1" end="6" type="uint" nonzero="true"/>
     <field name="Arbitration Priority Control" start="7" end="8" type="HEVC_ARBITRATION_PRIORITY"/>
     <field name="Memory Compression Enable" start="9" end="9" type="bool"/>
     <field name="Memory Compression Mode" start="10" end="10" type="uint"/>
     </field>
     <field name="Surface QPitch" start="32" end="46" type="uint"/>
     <field name="Base Mip Level" start="51" end="55" type="u4.1"/>
-    <field name="MOCS" start="56" end="62" type="uint"/>
+    <field name="MOCS" start="56" end="62" type="uint" nonzero="true"/>
     <field name="Enable Unorm Path In Color Pipe" start="63" end="63" type="bool"/>
     <field name="Width" start="64" end="77" type="uint"/>
     <field name="Height" start="80" end="93" type="uint"/>
   </struct>
 
   <struct name="VDENC_SURFACE_CONTROL_BITS" length="1">
-    <field name="MOCS" start="1" end="6" type="uint"/>
+    <field name="MOCS" start="1" end="6" type="uint" nonzero="true"/>
     <field name="Arbitration Priority Control" start="7" end="8" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="Buffer Pitch" start="0" end="11" type="uint"/>
     <field name="Null Vertex Buffer" start="13" end="13" type="bool"/>
     <field name="Address Modify Enable" start="14" end="14" type="bool"/>
-    <field name="MOCS" start="16" end="22" type="uint"/>
+    <field name="MOCS" start="16" end="22" type="uint" nonzero="true"/>
     <field name="Vertex Buffer Index" start="26" end="31" type="uint"/>
     <field name="Buffer Starting Address" start="32" end="95" type="address"/>
     <field name="Buffer Size" start="96" end="127" type="uint"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="1"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MOCS" start="32" end="38" type="uint"/>
+    <field name="MOCS" start="32" end="38" type="uint" nonzero="true"/>
     <field name="Binding Table Pool Enable" start="43" end="43" type="bool"/>
     <field name="Binding Table Pool Base Address" start="44" end="95" type="address"/>
     <field name="Binding Table Pool Buffer Size" start="108" end="127" type="uint">
 
   <instruction name="3DSTATE_CONSTANT_DS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="26"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
 
   <instruction name="3DSTATE_CONSTANT_GS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="22"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
 
   <instruction name="3DSTATE_CONSTANT_HS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="25"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
 
   <instruction name="3DSTATE_CONSTANT_PS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="Disable Gather at Set Shader Hint" start="15" end="15" type="uint"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="23"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
 
   <instruction name="3DSTATE_CONSTANT_VS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="21"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="LOD" start="128" end="131" type="uint"/>
     <field name="Width" start="132" end="145" type="uint"/>
     <field name="Height" start="146" end="159" type="uint"/>
-    <field name="MOCS" start="160" end="166" type="uint"/>
+    <field name="MOCS" start="160" end="166" type="uint" nonzero="true"/>
     <field name="Minimum Array Element" start="170" end="180" type="uint"/>
     <field name="Depth" start="181" end="191" type="uint"/>
     <field name="Mip Tail Start LOD" start="218" end="221" type="uint"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="1"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MOCS" start="32" end="38" type="uint"/>
+    <field name="MOCS" start="32" end="38" type="uint" nonzero="true"/>
     <field name="Gather Pool Enable" start="43" end="43" type="bool"/>
     <field name="Gather Pool Base Address" start="44" end="95" type="address"/>
     <field name="Gather Pool Buffer Size" start="108" end="127" type="uint"/>
       <value name="TILEYF" value="1"/>
       <value name="TILEYS" value="2"/>
     </field>
-    <field name="MOCS" start="57" end="63" type="uint"/>
+    <field name="MOCS" start="57" end="63" type="uint" nonzero="true"/>
     <field name="Surface Base Address" start="64" end="127" type="address"/>
     <field name="Surface QPitch" start="128" end="142" type="uint"/>
   </instruction>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MOCS" start="32" end="38" type="uint"/>
+    <field name="MOCS" start="32" end="38" type="uint" nonzero="true"/>
     <field name="Index Format" start="40" end="41" type="uint" prefix="INDEX">
       <value name="BYTE" value="0"/>
       <value name="WORD" value="1"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Stream Output Buffer Offset Address Enable" start="52" end="52" type="bool"/>
     <field name="Stream Offset Write Enable" start="53" end="53" type="bool"/>
-    <field name="MOCS" start="54" end="60" type="uint"/>
+    <field name="MOCS" start="54" end="60" type="uint" nonzero="true"/>
     <field name="SO Buffer Index" start="61" end="62" type="uint"/>
     <field name="SO Buffer Enable" start="63" end="63" type="bool"/>
     <field name="Surface Base Address" start="66" end="111" type="address"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Surface Pitch" start="32" end="48" type="uint"/>
-    <field name="MOCS" start="54" end="60" type="uint"/>
+    <field name="MOCS" start="54" end="60" type="uint" nonzero="true"/>
     <field name="Stencil Buffer Enable" start="63" end="63" type="bool"/>
     <field name="Surface Base Address" start="64" end="127" type="address"/>
     <field name="Surface QPitch" start="128" end="142" type="uint"/>
     <field name="Pipeline" start="27" end="28" type="uint" default="2"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Pre Deblocking Source - Address" start="38" end="79" type="address"/>
-    <field name="Pre Deblocking Source - MOCS" start="97" end="102" type="uint"/>
+    <field name="Pre Deblocking Source - MOCS" start="97" end="102" type="uint" nonzero="true"/>
     <field name="Pre Deblocking Source - Arbitration Priority Control" start="103" end="104" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="Deblocking Control - Address" start="134" end="175" type="address"/>
-    <field name="Deblocking Control - MOCS" start="193" end="198" type="uint"/>
+    <field name="Deblocking Control - MOCS" start="193" end="198" type="uint" nonzero="true"/>
     <field name="Deblocking Control - Arbitration Priority Control" start="199" end="200" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="Deblocking Destination - Address High" start="230" end="271" type="address"/>
-    <field name="Deblocking Destination - MOCS" start="289" end="294" type="uint"/>
+    <field name="Deblocking Destination - MOCS" start="289" end="294" type="uint" nonzero="true"/>
     <field name="Deblocking Destination - Arbitration Priority Control" start="295" end="296" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="Deblock Row Store - Address" start="326" end="367" type="address"/>
-    <field name="CoeffProbability Stream-In - MOCS" start="385" end="390" type="uint"/>
+    <field name="CoeffProbability Stream-In - MOCS" start="385" end="390" type="uint" nonzero="true"/>
     <field name="Deblock Row Store - Arbitration Priority Control" start="391" end="392" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="Quantizer Value [3][Y2DC]" start="480" end="488" type="uint"/>
     <field name="Quantizer Value [3][Y2AC]" start="496" end="504" type="uint"/>
     <field name="CoeffProbability Stream-In - Address" start="518" end="559" type="uint"/>
-    <field name="CoeffProbability Stream-In - MOCS (Encoder Only)" start="577" end="582" type="uint"/>
+    <field name="CoeffProbability Stream-In - MOCS (Encoder Only)" start="577" end="582" type="uint" nonzero="true"/>
     <field name="CoeffProbability Stream-In - Arbitration Priority Control" start="583" end="584" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="ModeLFDelta2" start="1104" end="1110" type="int"/>
     <field name="ModeLFDelta3" start="1112" end="1118" type="int"/>
     <field name="Segmentation ID Stream - Address" start="1120" end="1167" type="uint"/>
-    <field name="CoeffProbability Stream-In - MOCS" start="1185" end="1190" type="uint"/>
+    <field name="CoeffProbability Stream-In - MOCS" start="1185" end="1190" type="uint" nonzero="true"/>
     <field name="Segmentation ID Stream - Arbitration Priority Control" start="1191" end="1192" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="Scaling Factor Height" start="448" end="468" type="u4.17"/>
     <field name="Scaling Factor Width" start="480" end="500" type="u4.17"/>
     <field name="Output Frame - Address" start="556" end="591" type="uint"/>
-    <field name="Output Frame - MOCS" start="609" end="614" type="uint"/>
+    <field name="Output Frame - MOCS" start="609" end="614" type="uint" nonzero="true"/>
     <field name="Output Frame - Arbitration Priority Control" start="615" end="616" type="HEVC_ARBITRATION_PRIORITY"/>
     <field name="Output Frame - Memory Compression Enable" start="617" end="617" type="bool"/>
     <field name="Output Frame - Memory Compression Mode" start="618" end="618" type="uint"/>
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="AVS Line Buffer - Address" start="652" end="687" type="uint"/>
-    <field name="AVS Line Buffer - MOCS" start="705" end="710" type="uint"/>
+    <field name="AVS Line Buffer - MOCS" start="705" end="710" type="uint" nonzero="true"/>
     <field name="AVS Line Buffer - Arbitration Priority Control" start="711" end="712" type="HEVC_ARBITRATION_PRIORITY"/>
     <field name="AVS Line Buffer - Memory Compression Enable" start="713" end="713" type="bool"/>
     <field name="AVS Line Buffer - Memory Compression Mode" start="714" end="714" type="uint">
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="IEF Line Buffer - Address" start="748" end="783" type="uint"/>
-    <field name="IEF Line Buffer - MOCS" start="801" end="806" type="uint"/>
+    <field name="IEF Line Buffer - MOCS" start="801" end="806" type="uint" nonzero="true"/>
     <field name="IEF Line Buffer - Arbitration Priority Control" start="807" end="808" type="HEVC_ARBITRATION_PRIORITY"/>
     <field name="IEF Line Buffer - Memory Compression Enable" start="809" end="809" type="bool"/>
     <field name="IEF Line Buffer - Memory Compression Mode" start="810" end="810" type="uint"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="0"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="General State Base Address Modify Enable" start="32" end="32" type="bool"/>
-    <field name="General State MOCS" start="36" end="42" type="uint"/>
+    <field name="General State MOCS" start="36" end="42" type="uint" nonzero="true"/>
     <field name="General State Base Address" start="44" end="95" type="address"/>
-    <field name="Stateless Data Port Access MOCS" start="112" end="118" type="uint"/>
+    <field name="Stateless Data Port Access MOCS" start="112" end="118" type="uint" nonzero="true"/>
     <field name="Surface State Base Address Modify Enable" start="128" end="128" type="bool"/>
-    <field name="Surface State MOCS" start="132" end="138" type="uint"/>
+    <field name="Surface State MOCS" start="132" end="138" type="uint" nonzero="true"/>
     <field name="Surface State Base Address" start="140" end="191" type="address"/>
     <field name="Dynamic State Base Address Modify Enable" start="192" end="192" type="bool"/>
-    <field name="Dynamic State MOCS" start="196" end="202" type="uint"/>
+    <field name="Dynamic State MOCS" start="196" end="202" type="uint" nonzero="true"/>
     <field name="Dynamic State Base Address" start="204" end="255" type="address"/>
     <field name="Indirect Object Base Address Modify Enable" start="256" end="256" type="bool"/>
-    <field name="Indirect Object MOCS" start="260" end="266" type="uint"/>
+    <field name="Indirect Object MOCS" start="260" end="266" type="uint" nonzero="true"/>
     <field name="Indirect Object Base Address" start="268" end="319" type="address"/>
     <field name="Instruction Base Address Modify Enable" start="320" end="320" type="bool"/>
-    <field name="Instruction MOCS" start="324" end="330" type="uint"/>
+    <field name="Instruction MOCS" start="324" end="330" type="uint" nonzero="true"/>
     <field name="Instruction Base Address" start="332" end="383" type="address"/>
     <field name="General State Buffer Size Modify Enable" start="384" end="384" type="bool"/>
     <field name="General State Buffer Size" start="396" end="415" type="uint"/>
     <field name="Instruction Buffer size Modify Enable" start="480" end="480" type="bool"/>
     <field name="Instruction Buffer Size" start="492" end="511" type="uint"/>
     <field name="Bindless Surface State Base Address Modify Enable" start="512" end="512" type="bool"/>
-    <field name="Bindless Surface State MOCS" start="516" end="522" type="uint"/>
+    <field name="Bindless Surface State MOCS" start="516" end="522" type="uint" nonzero="true"/>
     <field name="Bindless Surface State Base Address" start="524" end="575" type="address"/>
     <field name="Bindless Surface State Size" start="588" end="607" type="uint"/>
     <field name="Bindless Sampler State Base Address Modify Enable" start="608" end="608" type="bool"/>
-    <field name="Bindless Sampler State MOCS" start="612" end="618" type="uint"/>
+    <field name="Bindless Sampler State MOCS" start="612" end="618" type="uint" nonzero="true"/>
     <field name="Bindless Sampler State Base Address" start="620" end="671" type="address"/>
     <field name="Bindless Sampler State Buffer Size" start="684" end="703" type="uint"/>
   </instruction>
index b410d99..5cf96e6 100644 (file)
   <struct name="3DSTATE_SO_BUFFER_INDEX_BODY" length="7">
     <field name="Stream Output Buffer Offset Address Enable" start="20" end="20" type="bool"/>
     <field name="Stream Offset Write Enable" start="21" end="21" type="bool"/>
-    <field name="MOCS" start="22" end="28" type="uint"/>
+    <field name="MOCS" start="22" end="28" type="uint" nonzero="true"/>
     <field name="SO Buffer Enable" start="31" end="31" type="bool"/>
     <field name="Surface Base Address" start="34" end="79" type="address"/>
     <field name="Surface Size" start="96" end="125" type="uint"/>
   </struct>
 
   <struct name="MEMORYADDRESSATTRIBUTES" length="1">
-    <field name="MOCS" start="1" end="6" type="uint"/>
+    <field name="MOCS" start="1" end="6" type="uint" nonzero="true"/>
     <field name="Arbitration Priority Control" start="7" end="8" type="HEVC_ARBITRATION_PRIORITY"/>
     <field name="Memory Compression Enable" start="9" end="9" type="bool"/>
     <field name="Memory Compression Mode" start="10" end="10" type="uint"/>
     <field name="Double Fetch Disable" start="49" end="49" type="bool"/>
     <field name="Corner Texel Mode" start="50" end="50" type="uint"/>
     <field name="Base Mip Level" start="51" end="55" type="u4.1"/>
-    <field name="MOCS" start="56" end="62" type="uint"/>
+    <field name="MOCS" start="56" end="62" type="uint" nonzero="true"/>
     <field name="Enable Unorm Path In Color Pipe" start="63" end="63" type="bool"/>
     <field name="Width" start="64" end="77" type="uint"/>
     <field name="Height" start="80" end="93" type="uint"/>
   </struct>
 
   <struct name="VDENC_SURFACE_CONTROL_BITS" length="1">
-    <field name="MOCS" start="1" end="6" type="uint"/>
+    <field name="MOCS" start="1" end="6" type="uint" nonzero="true"/>
     <field name="Arbitration Priority Control" start="7" end="8" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="Buffer Pitch" start="0" end="11" type="uint"/>
     <field name="Null Vertex Buffer" start="13" end="13" type="bool"/>
     <field name="Address Modify Enable" start="14" end="14" type="bool"/>
-    <field name="MOCS" start="16" end="22" type="uint"/>
+    <field name="MOCS" start="16" end="22" type="uint" nonzero="true"/>
     <field name="L3 Bypass Disable" start="25" end="25" type="bool"/>
     <field name="Vertex Buffer Index" start="26" end="31" type="uint"/>
     <field name="Buffer Starting Address" start="32" end="95" type="address"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="1"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MOCS" start="32" end="38" type="uint"/>
+    <field name="MOCS" start="32" end="38" type="uint" nonzero="true"/>
     <field name="Binding Table Pool Enable" start="43" end="43" type="bool"/>
     <field name="Binding Table Pool Base Address" start="44" end="95" type="address"/>
     <field name="Binding Table Pool Buffer Size" start="108" end="127" type="uint">
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MOCS" start="32" end="38" type="uint"/>
+    <field name="MOCS" start="32" end="38" type="uint" nonzero="true"/>
     <field name="Pointer Buffer Mask" start="48" end="51" type="uint"/>
     <field name="Update Mode" start="63" end="63" type="bool"/>
     <group count="0" start="64" size="64">
 
   <instruction name="3DSTATE_CONSTANT_DS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="26"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
 
   <instruction name="3DSTATE_CONSTANT_GS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="22"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
 
   <instruction name="3DSTATE_CONSTANT_HS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="25"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
 
   <instruction name="3DSTATE_CONSTANT_PS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="Disable Gather at Set Shader Hint" start="15" end="15" type="uint"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="23"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
 
   <instruction name="3DSTATE_CONSTANT_VS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="21"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Surface Base Address" start="64" end="127" type="address"/>
     <field name="Width" start="129" end="142" type="uint"/>
     <field name="Height" start="145" end="158" type="uint"/>
-    <field name="MOCS" start="160" end="166" type="uint"/>
+    <field name="MOCS" start="160" end="166" type="uint" nonzero="true"/>
     <field name="Minimum Array Element" start="168" end="178" type="uint"/>
     <field name="Depth" start="180" end="190" type="uint"/>
     <field name="Mip Tail Start LOD" start="218" end="221" type="uint"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="1"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MOCS" start="32" end="38" type="uint"/>
+    <field name="MOCS" start="32" end="38" type="uint" nonzero="true"/>
     <field name="Gather Pool Enable" start="43" end="43" type="bool"/>
     <field name="Gather Pool Base Address" start="44" end="95" type="address"/>
     <field name="Gather Pool Buffer Size" start="108" end="127" type="uint"/>
       <value name="TILEYF" value="1"/>
       <value name="TILEYS" value="2"/>
     </field>
-    <field name="MOCS" start="57" end="63" type="uint"/>
+    <field name="MOCS" start="57" end="63" type="uint" nonzero="true"/>
     <field name="Surface Base Address" start="64" end="127" type="address"/>
     <field name="Surface QPitch" start="128" end="142" type="uint"/>
   </instruction>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MOCS" start="32" end="38" type="uint"/>
+    <field name="MOCS" start="32" end="38" type="uint" nonzero="true"/>
     <field name="Index Format" start="40" end="41" type="uint" prefix="INDEX">
       <value name="BYTE" value="0"/>
       <value name="WORD" value="1"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Stream Output Buffer Offset Address Enable" start="52" end="52" type="bool"/>
     <field name="Stream Offset Write Enable" start="53" end="53" type="bool"/>
-    <field name="MOCS" start="54" end="60" type="uint"/>
+    <field name="MOCS" start="54" end="60" type="uint" nonzero="true"/>
     <field name="SO Buffer Index" start="61" end="62" type="uint"/>
     <field name="SO Buffer Enable" start="63" end="63" type="bool"/>
     <field name="Surface Base Address" start="66" end="111" type="address"/>
     <field name="Surface Base Address" start="64" end="127" type="address"/>
     <field name="Width" start="129" end="142" type="uint"/>
     <field name="Height" start="145" end="158" type="uint"/>
-    <field name="MOCS" start="160" end="166" type="uint"/>
+    <field name="MOCS" start="160" end="166" type="uint" nonzero="true"/>
     <field name="Minimum Array Element" start="168" end="178" type="uint"/>
     <field name="Depth" start="180" end="190" type="uint"/>
     <field name="Mip Tail Start LOD" start="218" end="221" type="uint"/>
     <field name="Pipeline" start="27" end="28" type="uint" default="2"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Pre Deblocking Source - Address" start="38" end="79" type="address"/>
-    <field name="Pre Deblocking Source - MOCS" start="97" end="102" type="uint"/>
+    <field name="Pre Deblocking Source - MOCS" start="97" end="102" type="uint" nonzero="true"/>
     <field name="Pre Deblocking Source - Arbitration Priority Control" start="103" end="104" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="Deblocking Control - Address" start="134" end="175" type="address"/>
-    <field name="Deblocking Control - MOCS" start="193" end="198" type="uint"/>
+    <field name="Deblocking Control - MOCS" start="193" end="198" type="uint" nonzero="true"/>
     <field name="Deblocking Control - Arbitration Priority Control" start="199" end="200" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="Deblocking Destination - Address High" start="230" end="271" type="address"/>
-    <field name="Deblocking Destination - MOCS" start="289" end="294" type="uint"/>
+    <field name="Deblocking Destination - MOCS" start="289" end="294" type="uint" nonzero="true"/>
     <field name="Deblocking Destination - Arbitration Priority Control" start="295" end="296" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="Deblock Row Store - Address" start="326" end="367" type="address"/>
-    <field name="CoeffProbability Stream-In - MOCS" start="385" end="390" type="uint"/>
+    <field name="CoeffProbability Stream-In - MOCS" start="385" end="390" type="uint" nonzero="true"/>
     <field name="Deblock Row Store - Arbitration Priority Control" start="391" end="392" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="Quantizer Value [3][Y2DC]" start="480" end="488" type="uint"/>
     <field name="Quantizer Value [3][Y2AC]" start="496" end="504" type="uint"/>
     <field name="CoeffProbability Stream-In - Address" start="518" end="559" type="uint"/>
-    <field name="CoeffProbability Stream-In - MOCS (Encoder Only)" start="577" end="582" type="uint"/>
+    <field name="CoeffProbability Stream-In - MOCS (Encoder Only)" start="577" end="582" type="uint" nonzero="true"/>
     <field name="CoeffProbability Stream-In - Arbitration Priority Control" start="583" end="584" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="ModeLFDelta2" start="1104" end="1110" type="int"/>
     <field name="ModeLFDelta3" start="1112" end="1118" type="int"/>
     <field name="Segmentation ID Stream - Address" start="1120" end="1167" type="uint"/>
-    <field name="CoeffProbability Stream-In - MOCS" start="1185" end="1190" type="uint"/>
+    <field name="CoeffProbability Stream-In - MOCS" start="1185" end="1190" type="uint" nonzero="true"/>
     <field name="Segmentation ID Stream - Arbitration Priority Control" start="1191" end="1192" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="Scaling Factor Height" start="448" end="468" type="u4.17"/>
     <field name="Scaling Factor Width" start="480" end="500" type="u4.17"/>
     <field name="Output Frame - Address" start="556" end="591" type="uint"/>
-    <field name="Output Frame - MOCS" start="609" end="614" type="uint"/>
+    <field name="Output Frame - MOCS" start="609" end="614" type="uint" nonzero="true"/>
     <field name="Output Frame - Arbitration Priority Control" start="615" end="616" type="HEVC_ARBITRATION_PRIORITY"/>
     <field name="Output Frame - Memory Compression Enable" start="617" end="617" type="bool"/>
     <field name="Output Frame - Memory Compression Mode" start="618" end="618" type="uint"/>
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="AVS Line Buffer - Address" start="652" end="687" type="uint"/>
-    <field name="AVS Line Buffer - MOCS" start="705" end="710" type="uint"/>
+    <field name="AVS Line Buffer - MOCS" start="705" end="710" type="uint" nonzero="true"/>
     <field name="AVS Line Buffer - Arbitration Priority Control" start="711" end="712" type="HEVC_ARBITRATION_PRIORITY"/>
     <field name="AVS Line Buffer - Memory Compression Enable" start="713" end="713" type="bool"/>
     <field name="AVS Line Buffer - Memory Compression Mode" start="714" end="714" type="uint">
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="IEF Line Buffer - Address" start="748" end="783" type="uint"/>
-    <field name="IEF Line Buffer - MOCS" start="801" end="806" type="uint"/>
+    <field name="IEF Line Buffer - MOCS" start="801" end="806" type="uint" nonzero="true"/>
     <field name="IEF Line Buffer - Arbitration Priority Control" start="807" end="808" type="HEVC_ARBITRATION_PRIORITY"/>
     <field name="IEF Line Buffer - Memory Compression Enable" start="809" end="809" type="bool"/>
     <field name="IEF Line Buffer - Memory Compression Mode" start="810" end="810" type="uint"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="0"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="General State Base Address Modify Enable" start="32" end="32" type="bool"/>
-    <field name="General State MOCS" start="36" end="42" type="uint"/>
+    <field name="General State MOCS" start="36" end="42" type="uint" nonzero="true"/>
     <field name="General State Base Address" start="44" end="95" type="address"/>
-    <field name="Stateless Data Port Access MOCS" start="112" end="118" type="uint"/>
+    <field name="Stateless Data Port Access MOCS" start="112" end="118" type="uint" nonzero="true"/>
     <field name="Surface State Base Address Modify Enable" start="128" end="128" type="bool"/>
-    <field name="Surface State MOCS" start="132" end="138" type="uint"/>
+    <field name="Surface State MOCS" start="132" end="138" type="uint" nonzero="true"/>
     <field name="Surface State Base Address" start="140" end="191" type="address"/>
     <field name="Dynamic State Base Address Modify Enable" start="192" end="192" type="bool"/>
-    <field name="Dynamic State MOCS" start="196" end="202" type="uint"/>
+    <field name="Dynamic State MOCS" start="196" end="202" type="uint" nonzero="true"/>
     <field name="Dynamic State Base Address" start="204" end="255" type="address"/>
     <field name="Indirect Object Base Address Modify Enable" start="256" end="256" type="bool"/>
-    <field name="Indirect Object MOCS" start="260" end="266" type="uint"/>
+    <field name="Indirect Object MOCS" start="260" end="266" type="uint" nonzero="true"/>
     <field name="Indirect Object Base Address" start="268" end="319" type="address"/>
     <field name="Instruction Base Address Modify Enable" start="320" end="320" type="bool"/>
-    <field name="Instruction MOCS" start="324" end="330" type="uint"/>
+    <field name="Instruction MOCS" start="324" end="330" type="uint" nonzero="true"/>
     <field name="Instruction Base Address" start="332" end="383" type="address"/>
     <field name="General State Buffer Size Modify Enable" start="384" end="384" type="bool"/>
     <field name="General State Buffer Size" start="396" end="415" type="uint"/>
     <field name="Instruction Buffer size Modify Enable" start="480" end="480" type="bool"/>
     <field name="Instruction Buffer Size" start="492" end="511" type="uint"/>
     <field name="Bindless Surface State Base Address Modify Enable" start="512" end="512" type="bool"/>
-    <field name="Bindless Surface State MOCS" start="516" end="522" type="uint"/>
+    <field name="Bindless Surface State MOCS" start="516" end="522" type="uint" nonzero="true"/>
     <field name="Bindless Surface State Base Address" start="524" end="575" type="address"/>
     <field name="Bindless Surface State Size" start="588" end="607" type="uint"/>
     <field name="Bindless Sampler State Base Address Modify Enable" start="608" end="608" type="bool"/>
-    <field name="Bindless Sampler State MOCS" start="612" end="618" type="uint"/>
+    <field name="Bindless Sampler State MOCS" start="612" end="618" type="uint" nonzero="true"/>
     <field name="Bindless Sampler State Base Address" start="620" end="671" type="address"/>
     <field name="Bindless Sampler State Buffer Size" start="684" end="703" type="uint"/>
   </instruction>
index ba86eab..346c05d 100644 (file)
   <struct name="3DSTATE_SO_BUFFER_INDEX_BODY" length="7">
     <field name="Stream Output Buffer Offset Address Enable" start="20" end="20" type="bool"/>
     <field name="Stream Offset Write Enable" start="21" end="21" type="bool"/>
-    <field name="MOCS" start="22" end="28" type="uint"/>
+    <field name="MOCS" start="22" end="28" type="uint" nonzero="true"/>
     <field name="SO Buffer Enable" start="31" end="31" type="bool"/>
     <field name="Surface Base Address" start="34" end="79" type="address"/>
     <field name="Surface Size" start="96" end="125" type="uint"/>
   </struct>
 
   <struct name="MEMORYADDRESSATTRIBUTES" length="1">
-    <field name="MOCS" start="1" end="6" type="uint"/>
+    <field name="MOCS" start="1" end="6" type="uint" nonzero="true"/>
     <field name="Arbitration Priority Control" start="7" end="8" type="HEVC_ARBITRATION_PRIORITY"/>
     <field name="Memory Compression Enable" start="9" end="9" type="bool"/>
     <field name="Memory Compression Mode" start="10" end="10" type="uint"/>
 
   <struct name="POSTSYNC_DATA" length="5">
     <group count="2" start="0" size="11">
-      <field name="MOCS" start="4" end="10" type="uint"/>
+      <field name="MOCS" start="4" end="10" type="uint" nonzero="true"/>
       <field name="L3 flush" start="3" end="3" type="bool"/>
       <field name="HDC Pipeline Flush" start="2" end="2" type="bool"/>
       <field name="Operation" start="0" end="1" type="uint" default="0"/>
     <field name="Double Fetch Disable" start="49" end="49" type="bool"/>
     <field name="Corner Texel Mode" start="50" end="50" type="uint"/>
     <field name="Base Mip Level" start="51" end="55" type="u4.1"/>
-    <field name="MOCS" start="56" end="62" type="uint"/>
+    <field name="MOCS" start="56" end="62" type="uint" nonzero="true"/>
     <field name="Enable Unorm Path In Color Pipe" start="63" end="63" type="bool"/>
     <field name="Width" start="64" end="77" type="uint"/>
     <field name="Height" start="80" end="93" type="uint"/>
   </struct>
 
   <struct name="VDENC_SURFACE_CONTROL_BITS" length="1">
-    <field name="MOCS" start="1" end="6" type="uint"/>
+    <field name="MOCS" start="1" end="6" type="uint" nonzero="true"/>
     <field name="Arbitration Priority Control" start="7" end="8" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="Buffer Pitch" start="0" end="11" type="uint"/>
     <field name="Null Vertex Buffer" start="13" end="13" type="bool"/>
     <field name="Address Modify Enable" start="14" end="14" type="bool"/>
-    <field name="MOCS" start="16" end="22" type="uint"/>
+    <field name="MOCS" start="16" end="22" type="uint" nonzero="true"/>
     <field name="L3 Bypass Disable" start="25" end="25" type="bool"/>
     <field name="Vertex Buffer Index" start="26" end="31" type="uint"/>
     <field name="Buffer Starting Address" start="32" end="95" type="address"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="1"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MOCS" start="32" end="38" type="uint"/>
+    <field name="MOCS" start="32" end="38" type="uint" nonzero="true"/>
     <field name="Binding Table Pool Enable" start="43" end="43" type="bool"/>
     <field name="Binding Table Pool Base Address" start="44" end="95" type="address"/>
     <field name="Binding Table Pool Buffer Size" start="108" end="127" type="uint">
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MOCS" start="32" end="38" type="uint"/>
+    <field name="MOCS" start="32" end="38" type="uint" nonzero="true"/>
     <field name="Pointer Buffer Mask" start="48" end="51" type="uint"/>
     <field name="Update Mode" start="63" end="63" type="bool"/>
     <group count="0" start="64" size="64">
 
   <instruction name="3DSTATE_CONSTANT_DS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="26"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
 
   <instruction name="3DSTATE_CONSTANT_GS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="22"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
 
   <instruction name="3DSTATE_CONSTANT_HS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="25"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
 
   <instruction name="3DSTATE_CONSTANT_PS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="Disable Gather at Set Shader Hint" start="15" end="15" type="uint"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="23"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
 
   <instruction name="3DSTATE_CONSTANT_VS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="21"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Surface Base Address" start="64" end="127" type="address"/>
     <field name="Width" start="129" end="142" type="uint"/>
     <field name="Height" start="145" end="158" type="uint"/>
-    <field name="MOCS" start="160" end="166" type="uint"/>
+    <field name="MOCS" start="160" end="166" type="uint" nonzero="true"/>
     <field name="Minimum Array Element" start="168" end="178" type="uint"/>
     <field name="Depth" start="180" end="190" type="uint"/>
     <field name="Render Compression Format" start="192" end="196" type="uint"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="1"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MOCS" start="32" end="38" type="uint"/>
+    <field name="MOCS" start="32" end="38" type="uint" nonzero="true"/>
     <field name="Gather Pool Enable" start="43" end="43" type="bool"/>
     <field name="Gather Pool Base Address" start="44" end="95" type="address"/>
     <field name="Gather Pool Buffer Size" start="108" end="127" type="uint"/>
       <value name="TILE64" value="1"/>
       <value name="TILE4" value="3"/>
     </field>
-    <field name="MOCS" start="57" end="63" type="uint"/>
+    <field name="MOCS" start="57" end="63" type="uint" nonzero="true"/>
     <field name="Surface Base Address" start="64" end="127" type="address"/>
     <field name="Surface QPitch" start="128" end="142" type="uint"/>
   </instruction>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MOCS" start="32" end="38" type="uint"/>
+    <field name="MOCS" start="32" end="38" type="uint" nonzero="true"/>
     <field name="Index Format" start="40" end="41" type="uint" prefix="INDEX">
       <value name="BYTE" value="0"/>
       <value name="WORD" value="1"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Stream Output Buffer Offset Address Enable" start="52" end="52" type="bool"/>
     <field name="Stream Offset Write Enable" start="53" end="53" type="bool"/>
-    <field name="MOCS" start="54" end="60" type="uint"/>
+    <field name="MOCS" start="54" end="60" type="uint" nonzero="true"/>
     <field name="SO Buffer Index" start="61" end="62" type="uint"/>
     <field name="SO Buffer Enable" start="63" end="63" type="bool"/>
     <field name="Surface Base Address" start="66" end="111" type="address"/>
     <field name="Surface Base Address" start="64" end="127" type="address"/>
     <field name="Width" start="129" end="142" type="uint"/>
     <field name="Height" start="145" end="158" type="uint"/>
-    <field name="MOCS" start="160" end="166" type="uint"/>
+    <field name="MOCS" start="160" end="166" type="uint" nonzero="true"/>
     <field name="Minimum Array Element" start="168" end="178" type="uint"/>
     <field name="Depth" start="180" end="190" type="uint"/>
     <field name="Render Compression Format" start="192" end="196" type="uint"/>
     <field name="Pipeline" start="27" end="28" type="uint" default="2"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Pre Deblocking Source - Address" start="38" end="79" type="address"/>
-    <field name="Pre Deblocking Source - MOCS" start="97" end="102" type="uint"/>
+    <field name="Pre Deblocking Source - MOCS" start="97" end="102" type="uint" nonzero="true"/>
     <field name="Pre Deblocking Source - Arbitration Priority Control" start="103" end="104" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="Deblocking Control - Address" start="134" end="175" type="address"/>
-    <field name="Deblocking Control - MOCS" start="193" end="198" type="uint"/>
+    <field name="Deblocking Control - MOCS" start="193" end="198" type="uint" nonzero="true"/>
     <field name="Deblocking Control - Arbitration Priority Control" start="199" end="200" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="Deblocking Destination - Address High" start="230" end="271" type="address"/>
-    <field name="Deblocking Destination - MOCS" start="289" end="294" type="uint"/>
+    <field name="Deblocking Destination - MOCS" start="289" end="294" type="uint" nonzero="true"/>
     <field name="Deblocking Destination - Arbitration Priority Control" start="295" end="296" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="Deblock Row Store - Address" start="326" end="367" type="address"/>
-    <field name="CoeffProbability Stream-In - MOCS" start="385" end="390" type="uint"/>
+    <field name="CoeffProbability Stream-In - MOCS" start="385" end="390" type="uint" nonzero="true"/>
     <field name="Deblock Row Store - Arbitration Priority Control" start="391" end="392" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="Quantizer Value [3][Y2DC]" start="480" end="488" type="uint"/>
     <field name="Quantizer Value [3][Y2AC]" start="496" end="504" type="uint"/>
     <field name="CoeffProbability Stream-In - Address" start="518" end="559" type="uint"/>
-    <field name="CoeffProbability Stream-In - MOCS (Encoder Only)" start="577" end="582" type="uint"/>
+    <field name="CoeffProbability Stream-In - MOCS (Encoder Only)" start="577" end="582" type="uint" nonzero="true"/>
     <field name="CoeffProbability Stream-In - Arbitration Priority Control" start="583" end="584" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="ModeLFDelta2" start="1104" end="1110" type="int"/>
     <field name="ModeLFDelta3" start="1112" end="1118" type="int"/>
     <field name="Segmentation ID Stream - Address" start="1120" end="1167" type="uint"/>
-    <field name="CoeffProbability Stream-In - MOCS" start="1185" end="1190" type="uint"/>
+    <field name="CoeffProbability Stream-In - MOCS" start="1185" end="1190" type="uint" nonzero="true"/>
     <field name="Segmentation ID Stream - Arbitration Priority Control" start="1191" end="1192" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="Scaling Factor Height" start="448" end="468" type="u4.17"/>
     <field name="Scaling Factor Width" start="480" end="500" type="u4.17"/>
     <field name="Output Frame - Address" start="556" end="591" type="uint"/>
-    <field name="Output Frame - MOCS" start="609" end="614" type="uint"/>
+    <field name="Output Frame - MOCS" start="609" end="614" type="uint" nonzero="true"/>
     <field name="Output Frame - Arbitration Priority Control" start="615" end="616" type="HEVC_ARBITRATION_PRIORITY"/>
     <field name="Output Frame - Memory Compression Enable" start="617" end="617" type="bool"/>
     <field name="Output Frame - Memory Compression Mode" start="618" end="618" type="uint"/>
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="AVS Line Buffer - Address" start="652" end="687" type="uint"/>
-    <field name="AVS Line Buffer - MOCS" start="705" end="710" type="uint"/>
+    <field name="AVS Line Buffer - MOCS" start="705" end="710" type="uint" nonzero="true"/>
     <field name="AVS Line Buffer - Arbitration Priority Control" start="711" end="712" type="HEVC_ARBITRATION_PRIORITY"/>
     <field name="AVS Line Buffer - Memory Compression Enable" start="713" end="713" type="bool"/>
     <field name="AVS Line Buffer - Memory Compression Mode" start="714" end="714" type="uint">
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="IEF Line Buffer - Address" start="748" end="783" type="uint"/>
-    <field name="IEF Line Buffer - MOCS" start="801" end="806" type="uint"/>
+    <field name="IEF Line Buffer - MOCS" start="801" end="806" type="uint" nonzero="true"/>
     <field name="IEF Line Buffer - Arbitration Priority Control" start="807" end="808" type="HEVC_ARBITRATION_PRIORITY"/>
     <field name="IEF Line Buffer - Memory Compression Enable" start="809" end="809" type="bool"/>
     <field name="IEF Line Buffer - Memory Compression Mode" start="810" end="810" type="uint"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="0"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="General State Base Address Modify Enable" start="32" end="32" type="bool"/>
-    <field name="General State MOCS" start="36" end="42" type="uint"/>
+    <field name="General State MOCS" start="36" end="42" type="uint" nonzero="true"/>
     <field name="General State Base Address" start="44" end="95" type="address"/>
-    <field name="Stateless Data Port Access MOCS" start="112" end="118" type="uint"/>
+    <field name="Stateless Data Port Access MOCS" start="112" end="118" type="uint" nonzero="true"/>
     <field name="Surface State Base Address Modify Enable" start="128" end="128" type="bool"/>
-    <field name="Surface State MOCS" start="132" end="138" type="uint"/>
+    <field name="Surface State MOCS" start="132" end="138" type="uint" nonzero="true"/>
     <field name="Surface State Base Address" start="140" end="191" type="address"/>
     <field name="Dynamic State Base Address Modify Enable" start="192" end="192" type="bool"/>
-    <field name="Dynamic State MOCS" start="196" end="202" type="uint"/>
+    <field name="Dynamic State MOCS" start="196" end="202" type="uint" nonzero="true"/>
     <field name="Dynamic State Base Address" start="204" end="255" type="address"/>
     <field name="Indirect Object Base Address Modify Enable" start="256" end="256" type="bool"/>
-    <field name="Indirect Object MOCS" start="260" end="266" type="uint"/>
+    <field name="Indirect Object MOCS" start="260" end="266" type="uint" nonzero="true"/>
     <field name="Indirect Object Base Address" start="268" end="319" type="address"/>
     <field name="Instruction Base Address Modify Enable" start="320" end="320" type="bool"/>
-    <field name="Instruction MOCS" start="324" end="330" type="uint"/>
+    <field name="Instruction MOCS" start="324" end="330" type="uint" nonzero="true"/>
     <field name="Instruction Base Address" start="332" end="383" type="address"/>
     <field name="General State Buffer Size Modify Enable" start="384" end="384" type="bool"/>
     <field name="General State Buffer Size" start="396" end="415" type="uint"/>
     <field name="Instruction Buffer size Modify Enable" start="480" end="480" type="bool"/>
     <field name="Instruction Buffer Size" start="492" end="511" type="uint"/>
     <field name="Bindless Surface State Base Address Modify Enable" start="512" end="512" type="bool"/>
-    <field name="Bindless Surface State MOCS" start="516" end="522" type="uint"/>
+    <field name="Bindless Surface State MOCS" start="516" end="522" type="uint" nonzero="true"/>
     <field name="Bindless Surface State Base Address" start="524" end="575" type="address"/>
     <field name="Bindless Surface State Size" start="588" end="607" type="uint"/>
     <field name="Bindless Sampler State Base Address Modify Enable" start="608" end="608" type="bool"/>
-    <field name="Bindless Sampler State MOCS" start="612" end="618" type="uint"/>
+    <field name="Bindless Sampler State MOCS" start="612" end="618" type="uint" nonzero="true"/>
     <field name="Bindless Sampler State Base Address" start="620" end="671" type="address"/>
     <field name="Bindless Sampler State Buffer Size" start="684" end="703" type="uint"/>
   </instruction>
index d736738..ba32eeb 100644 (file)
     <group count="4" start="0" size="16">
       <field name="Read Length" start="0" end="15" type="uint"/>
     </group>
-    <field name="MOCS" start="64" end="68" type="uint"/>
+    <field name="MOCS" start="64" end="68" type="uint" nonzero="true"/>
     <group count="4" start="64" size="32">
       <field name="Buffer" start="5" end="31" type="address"/>
     </group>
     </field>
     <field name="MIP Count / LOD" start="160" end="163" type="uint"/>
     <field name="Surface Min LOD" start="164" end="167" type="uint"/>
-    <field name="MOCS" start="176" end="179" type="uint"/>
+    <field name="MOCS" start="176" end="179" type="uint" nonzero="true"/>
     <field name="Y Offset" start="180" end="183" type="uint"/>
     <field name="X Offset" start="185" end="191" type="uint"/>
     <field name="MCS Enable" start="192" end="192" type="bool"/>
     <field name="Vertex Fetch Invalidate" start="12" end="12" type="bool" default="0"/>
     <field name="Null Vertex Buffer" start="13" end="13" type="bool"/>
     <field name="Address Modify Enable" start="14" end="14" type="bool"/>
-    <field name="MOCS" start="16" end="19" type="uint"/>
+    <field name="MOCS" start="16" end="19" type="uint" nonzero="true"/>
     <field name="Buffer Access Type" start="20" end="20" type="uint">
       <value name="VERTEXDATA" value="0"/>
       <value name="INSTANCEDATA" value="1"/>
     <field name="LOD" start="96" end="99" type="uint"/>
     <field name="Width" start="100" end="113" type="uint"/>
     <field name="Height" start="114" end="127" type="uint"/>
-    <field name="MOCS" start="128" end="131" type="uint"/>
+    <field name="MOCS" start="128" end="131" type="uint" nonzero="true"/>
     <field name="Minimum Array Element" start="138" end="148" type="uint"/>
     <field name="Depth" start="149" end="159" type="uint">
       <value name="SURFTYPE_CUBE (must be zero)" value="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Surface Pitch" start="32" end="48" type="uint"/>
-    <field name="MOCS" start="57" end="60" type="uint"/>
+    <field name="MOCS" start="57" end="60" type="uint" nonzero="true"/>
     <field name="Surface Base Address" start="64" end="95" type="address"/>
   </instruction>
 
       <value name="DWORD" value="2"/>
     </field>
     <field name="Cut Index Enable" start="10" end="10" type="bool"/>
-    <field name="MOCS" start="12" end="15" type="uint"/>
+    <field name="MOCS" start="12" end="15" type="uint" nonzero="true"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="10"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Surface Pitch" start="32" end="43" type="uint"/>
-    <field name="MOCS" start="57" end="60" type="uint"/>
+    <field name="MOCS" start="57" end="60" type="uint" nonzero="true"/>
     <field name="SO Buffer Index" start="61" end="62" type="uint"/>
     <field name="Surface Base Address" start="66" end="95" type="address"/>
     <field name="Surface End Address" start="98" end="127" type="address"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Surface Pitch" start="32" end="48" type="uint"/>
-    <field name="MOCS" start="57" end="60" type="uint"/>
+    <field name="MOCS" start="57" end="60" type="uint" nonzero="true"/>
     <field name="Surface Base Address" start="64" end="95" type="address"/>
   </instruction>
 
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="General State Base Address Modify Enable" start="32" end="32" type="bool"/>
     <field name="Stateless Data Port Access Force Write Thru" start="35" end="35" type="uint"/>
-    <field name="Stateless Data Port Access MOCS" start="36" end="39" type="uint"/>
-    <field name="General State MOCS" start="40" end="43" type="uint"/>
+    <field name="Stateless Data Port Access MOCS" start="36" end="39" type="uint" nonzero="true"/>
+    <field name="General State MOCS" start="40" end="43" type="uint" nonzero="true"/>
     <field name="General State Base Address" start="44" end="63" type="address"/>
     <field name="Surface State Base Address Modify Enable" start="64" end="64" type="bool"/>
-    <field name="Surface State MOCS" start="72" end="75" type="uint"/>
+    <field name="Surface State MOCS" start="72" end="75" type="uint" nonzero="true"/>
     <field name="Surface State Base Address" start="76" end="95" type="address"/>
     <field name="Dynamic State Base Address Modify Enable" start="96" end="96" type="bool"/>
-    <field name="Dynamic State MOCS" start="104" end="107" type="uint"/>
+    <field name="Dynamic State MOCS" start="104" end="107" type="uint" nonzero="true"/>
     <field name="Dynamic State Base Address" start="108" end="127" type="address"/>
     <field name="Indirect Object Base Address Modify Enable" start="128" end="128" type="bool"/>
-    <field name="Indirect Object MOCS" start="136" end="139" type="uint"/>
+    <field name="Indirect Object MOCS" start="136" end="139" type="uint" nonzero="true"/>
     <field name="Indirect Object Base Address" start="140" end="159" type="address"/>
     <field name="Instruction Base Address Modify Enable" start="160" end="160" type="bool"/>
-    <field name="Instruction MOCS" start="168" end="171" type="uint"/>
+    <field name="Instruction MOCS" start="168" end="171" type="uint" nonzero="true"/>
     <field name="Instruction Base Address" start="172" end="191" type="address"/>
     <field name="General State Access Upper Bound Modify Enable" start="192" end="192" type="bool"/>
     <field name="General State Access Upper Bound" start="204" end="223" type="address"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="1"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="0"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="SW Tessellation MOCS" start="40" end="43" type="uint"/>
+    <field name="SW Tessellation MOCS" start="40" end="43" type="uint" nonzero="true"/>
     <field name="SW Tessellation Base Address" start="44" end="63" type="address"/>
   </instruction>
 
index 1f29e2e..1eb9c4f 100644 (file)
     <group count="4" start="0" size="16">
       <field name="Read Length" start="0" end="15" type="uint"/>
     </group>
-    <field name="MOCS" start="64" end="68" type="uint"/>
+    <field name="MOCS" start="64" end="68" type="uint" nonzero="true"/>
     <group count="4" start="64" size="32">
       <field name="Buffer" start="5" end="31" type="address"/>
     </group>
     </field>
     <field name="MIP Count / LOD" start="160" end="163" type="uint"/>
     <field name="Surface Min LOD" start="164" end="167" type="uint"/>
-    <field name="MOCS" start="176" end="179" type="uint"/>
+    <field name="MOCS" start="176" end="179" type="uint" nonzero="true"/>
     <field name="Y Offset" start="180" end="183" type="uint"/>
     <field name="X Offset" start="185" end="191" type="uint"/>
     <field name="MCS Enable" start="192" end="192" type="bool"/>
     <field name="Vertex Fetch Invalidate" start="12" end="12" type="bool" default="0"/>
     <field name="Null Vertex Buffer" start="13" end="13" type="bool"/>
     <field name="Address Modify Enable" start="14" end="14" type="bool"/>
-    <field name="MOCS" start="16" end="19" type="uint"/>
+    <field name="MOCS" start="16" end="19" type="uint" nonzero="true"/>
     <field name="Buffer Access Type" start="20" end="20" type="uint">
       <value name="VERTEXDATA" value="0"/>
       <value name="INSTANCEDATA" value="1"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="1"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MOCS" start="39" end="42" type="uint"/>
+    <field name="MOCS" start="39" end="42" type="uint" nonzero="true"/>
     <field name="Binding Table Pool Enable" start="43" end="43" type="bool"/>
     <field name="Binding Table Pool Base Address" start="44" end="63" type="address"/>
     <field name="Binding Table Pool Upper Bound" start="76" end="95" type="address"/>
     <field name="LOD" start="96" end="99" type="uint"/>
     <field name="Width" start="100" end="113" type="uint"/>
     <field name="Height" start="114" end="127" type="uint"/>
-    <field name="MOCS" start="128" end="131" type="uint"/>
+    <field name="MOCS" start="128" end="131" type="uint" nonzero="true"/>
     <field name="Minimum Array Element" start="138" end="148" type="uint"/>
     <field name="Depth" start="149" end="159" type="uint">
       <value name="SURFTYPE_CUBE (must be zero)" value="0"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="1"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MOCS" start="32" end="35" type="uint"/>
+    <field name="MOCS" start="32" end="35" type="uint" nonzero="true"/>
     <field start="36" end="37" type="mbo"/>
     <field name="Gather Pool Enable" start="43" end="43" type="bool"/>
     <field name="Gather Pool Base Address" start="44" end="63" type="address"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Surface Pitch" start="32" end="48" type="uint"/>
-    <field name="MOCS" start="57" end="60" type="uint"/>
+    <field name="MOCS" start="57" end="60" type="uint" nonzero="true"/>
     <field name="Surface Base Address" start="64" end="95" type="address"/>
   </instruction>
 
       <value name="WORD" value="1"/>
       <value name="DWORD" value="2"/>
     </field>
-    <field name="MOCS" start="12" end="15" type="uint"/>
+    <field name="MOCS" start="12" end="15" type="uint" nonzero="true"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="10"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Surface Pitch" start="32" end="43" type="uint"/>
-    <field name="MOCS" start="57" end="60" type="uint"/>
+    <field name="MOCS" start="57" end="60" type="uint" nonzero="true"/>
     <field name="SO Buffer Index" start="61" end="62" type="uint"/>
     <field name="Surface Base Address" start="66" end="95" type="address"/>
     <field name="Surface End Address" start="98" end="127" type="address"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Surface Pitch" start="32" end="48" type="uint"/>
-    <field name="MOCS" start="57" end="60" type="uint"/>
+    <field name="MOCS" start="57" end="60" type="uint" nonzero="true"/>
     <field name="Stencil Buffer Enable" start="63" end="63" type="bool"/>
     <field name="Surface Base Address" start="64" end="95" type="address"/>
   </instruction>
     <field name="Media Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Pipeline" start="27" end="28" type="uint" default="2"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="BSD/MPC Row Store Scratch Buffer - MOCS" start="32" end="35" type="uint"/>
+    <field name="BSD/MPC Row Store Scratch Buffer - MOCS" start="32" end="35" type="uint" nonzero="true"/>
     <field name="BSD/MPC Row Store Scratch Buffer - Arbitration Priority Control" start="36" end="37" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second Highest priority" value="1"/>
       <value name="Lowest Priority" value="3"/>
     </field>
     <field name="BSD/MPC Row Store Scratch Buffer - Address" start="38" end="63" type="uint"/>
-    <field name="MPR Row Store Scratch Buffer - MOCS" start="128" end="131" type="uint"/>
+    <field name="MPR Row Store Scratch Buffer - MOCS" start="128" end="131" type="uint" nonzero="true"/>
     <field name="MPR Row Store Scratch Buffer - Arbitration Priority Control" start="132" end="133" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="Lowest priority" value="3"/>
     </field>
     <field name="MPR Row Store Scratch Buffer - Address" start="134" end="159" type="uint"/>
-    <field name="Bitplane Read Buffer - MOCS" start="224" end="227" type="uint"/>
+    <field name="Bitplane Read Buffer - MOCS" start="224" end="227" type="uint" nonzero="true"/>
     <field name="Bitplane Read Buffer - Arbitration Priority Control" start="228" end="229" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="Media Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Pipeline" start="27" end="28" type="uint" default="2"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="Pre Deblocking Source - MOCS" start="32" end="35" type="uint"/>
+    <field name="Pre Deblocking Source - MOCS" start="32" end="35" type="uint" nonzero="true"/>
     <field name="Pre Deblocking Source - Arbitration Priority Control" start="36" end="37" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="Lowest priority" value="3"/>
     </field>
     <field name="Pre Deblocking Source - Address" start="38" end="63" type="address"/>
-    <field name="Deblocking Control - MOCS" start="128" end="131" type="uint"/>
+    <field name="Deblocking Control - MOCS" start="128" end="131" type="uint" nonzero="true"/>
     <field name="Deblocking Control - Arbitration Priority Control" start="132" end="133" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="Lowest priority" value="3"/>
     </field>
     <field name="Deblocking Control - Address" start="134" end="159" type="address"/>
-    <field name="Deblocking Destination - MOCS" start="224" end="227" type="uint"/>
+    <field name="Deblocking Destination - MOCS" start="224" end="227" type="uint" nonzero="true"/>
     <field name="Deblocking Destination - Arbitration Priority Control" start="228" end="229" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="Lowest priority" value="3"/>
     </field>
     <field name="Deblocking Destination - Address" start="230" end="255" type="address"/>
-    <field name="Deblock Row Store - MOCS" start="320" end="323" type="uint"/>
+    <field name="Deblock Row Store - MOCS" start="320" end="323" type="uint" nonzero="true"/>
     <field name="Deblock Row Store - Arbitration Priority Control" start="324" end="325" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="Media Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Pipeline" start="27" end="28" type="uint" default="2"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MFX Indirect Bitstream Object - MOCS" start="32" end="35" type="uint"/>
+    <field name="MFX Indirect Bitstream Object - MOCS" start="32" end="35" type="uint" nonzero="true"/>
     <field name="MFX Indirect Bitstream Object - Arbitration Priority Control" start="36" end="37" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     </field>
     <field name="MFX Indirect Bitstream Object - Address" start="44" end="63" type="address"/>
     <field name="MFX Indirect Bitstream Object - Access Upper Bound" start="140" end="159" type="address"/>
-    <field name="MFX Indirect MV Object - MOCS" start="192" end="195" type="uint"/>
+    <field name="MFX Indirect MV Object - MOCS" start="192" end="195" type="uint" nonzero="true"/>
     <field name="MFX Indirect MV Object - Arbitration Priority Control" start="196" end="197" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     </field>
     <field name="MFX Indirect MV Object - Address" start="204" end="223" type="address"/>
     <field name="MFX Indirect MV Object - Access Upper Bound" start="300" end="319" type="address"/>
-    <field name="MFD Indirect IT-COEFF Object - MOCS" start="352" end="355" type="uint"/>
+    <field name="MFD Indirect IT-COEFF Object - MOCS" start="352" end="355" type="uint" nonzero="true"/>
     <field name="MFD Indirect IT-COEFF Object - Arbitration Priority Control" start="356" end="357" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     </field>
     <field name="MFD Indirect IT-COEFF Object - Address" start="364" end="383" type="address"/>
     <field name="MFD Indirect IT-COEFF Object - Access Upper Bound" start="460" end="479" type="address"/>
-    <field name="MFD Indirect IT-DBLK Object - MOCS" start="512" end="515" type="uint"/>
+    <field name="MFD Indirect IT-DBLK Object - MOCS" start="512" end="515" type="uint" nonzero="true"/>
     <field name="MFD Indirect IT-DBLK Object - Arbitration Priority Control" start="516" end="517" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     </field>
     <field name="MFD Indirect IT-DBLK Object - Address" start="524" end="543" type="address"/>
     <field name="MFD Indirect IT-DBLK Object - Access Upper Bound" start="620" end="639" type="address"/>
-    <field name="MFC Indirect PAK-BSE Object - MOCS" start="672" end="675" type="uint"/>
+    <field name="MFC Indirect PAK-BSE Object - MOCS" start="672" end="675" type="uint" nonzero="true"/>
     <field name="MFC Indirect PAK-BSE Object - Arbitration Priority Control" start="676" end="677" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="Media Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Pipeline" start="27" end="28" type="uint" default="2"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="Pre Deblocking Destination - MOCS" start="32" end="35" type="uint"/>
+    <field name="Pre Deblocking Destination - MOCS" start="32" end="35" type="uint" nonzero="true"/>
     <field name="Pre Deblocking Destination - Arbitration Priority Control" start="36" end="37" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="Lowest priority" value="3"/>
     </field>
     <field name="Pre Deblocking Destination - Address" start="38" end="63" type="address"/>
-    <field name="Post Deblocking Destination - MOCS" start="128" end="131" type="uint"/>
+    <field name="Post Deblocking Destination - MOCS" start="128" end="131" type="uint" nonzero="true"/>
     <field name="Post Deblocking Destination - Arbitration Priority Control" start="132" end="133" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="Lowest priority" value="3"/>
     </field>
     <field name="Post Deblocking Destination - Address" start="134" end="159" type="address"/>
-    <field name="Original Uncompressed Picture Source - MOCS" start="224" end="227" type="uint"/>
+    <field name="Original Uncompressed Picture Source - MOCS" start="224" end="227" type="uint" nonzero="true"/>
     <field name="Original Uncompressed Picture Source - Arbitration Priority Control" start="228" end="229" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="Lowest priority" value="3"/>
     </field>
     <field name="Original Uncompressed Picture Source - Address" start="230" end="255" type="address"/>
-    <field name="Stream-Out Data Destination - MOCS" start="320" end="323" type="uint"/>
+    <field name="Stream-Out Data Destination - MOCS" start="320" end="323" type="uint" nonzero="true"/>
     <field name="Stream-Out Data Destination - Arbitration Priority Control" start="324" end="325" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="Lowest priority" value="3"/>
     </field>
     <field name="Stream-Out Data Destination - Address" start="326" end="351" type="address"/>
-    <field name="Intra Row Store Scratch Buffer - MOCS" start="416" end="419" type="uint"/>
+    <field name="Intra Row Store Scratch Buffer - MOCS" start="416" end="419" type="uint" nonzero="true"/>
     <field name="Intra Row Store Scratch Buffer - Arbitration Priority Control" start="420" end="421" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="Lowest priority" value="3"/>
     </field>
     <field name="Intra Row Store Scratch Buffer - Address" start="422" end="447" type="address"/>
-    <field name="Deblocking Filter Row Store Scratch - MOCS" start="512" end="515" type="uint"/>
+    <field name="Deblocking Filter Row Store Scratch - MOCS" start="512" end="515" type="uint" nonzero="true"/>
     <field name="Deblocking Filter Row Store Scratch - Arbitration Priority Control" start="516" end="517" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <group count="16" start="608" size="64">
       <field name="Reference Picture - Address" start="0" end="63" type="address"/>
     </group>
-    <field name="MB Status Buffer - MOCS" start="1664" end="1667" type="uint"/>
+    <field name="MB Status Buffer - MOCS" start="1664" end="1667" type="uint" nonzero="true"/>
     <field name="MB Status Buffer - Arbitration Priority Control" start="1668" end="1669" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="Lowest priority" value="3"/>
     </field>
     <field name="MB Status Buffer - Address" start="1670" end="1695" type="address"/>
-    <field name="MB ILDB Stream-Out Buffer - MOCS" start="1760" end="1763" type="uint"/>
+    <field name="MB ILDB Stream-Out Buffer - MOCS" start="1760" end="1763" type="uint" nonzero="true"/>
     <field name="MB ILDB Stream-Out Buffer - Arbitration Priority Control" start="1764" end="1765" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="Media Command Opcode" start="24" end="26" type="uint" default="2"/>
     <field name="Pipeline" start="27" end="28" type="uint" default="2"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="Direct MV Write Buffer - MOCS" start="32" end="35" type="uint"/>
+    <field name="Direct MV Write Buffer - MOCS" start="32" end="35" type="uint" nonzero="true"/>
     <field name="Direct MV Write Buffer - Arbitration Priority Control" start="36" end="37" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="Lowest priority" value="3"/>
     </field>
     <field name="Direct MV Write Buffer - Address" start="38" end="63" type="address"/>
-    <field name="Direct MV Read Buffer - MOCS" start="128" end="131" type="uint"/>
+    <field name="Direct MV Read Buffer - MOCS" start="128" end="131" type="uint" nonzero="true"/>
     <field name="Direct MV Read Buffer - Arbitration Priority Control" start="132" end="133" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="0"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="General State Base Address Modify Enable" start="32" end="32" type="bool"/>
-    <field name="Stateless Data Port Access MOCS" start="36" end="39" type="uint"/>
-    <field name="General State MOCS" start="40" end="43" type="uint"/>
+    <field name="Stateless Data Port Access MOCS" start="36" end="39" type="uint" nonzero="true"/>
+    <field name="General State MOCS" start="40" end="43" type="uint" nonzero="true"/>
     <field name="General State Base Address" start="44" end="63" type="address"/>
     <field name="Surface State Base Address Modify Enable" start="64" end="64" type="bool"/>
-    <field name="Surface State MOCS" start="72" end="75" type="uint"/>
+    <field name="Surface State MOCS" start="72" end="75" type="uint" nonzero="true"/>
     <field name="Surface State Base Address" start="76" end="95" type="address"/>
     <field name="Dynamic State Base Address Modify Enable" start="96" end="96" type="bool"/>
-    <field name="Dynamic State MOCS" start="104" end="107" type="uint"/>
+    <field name="Dynamic State MOCS" start="104" end="107" type="uint" nonzero="true"/>
     <field name="Dynamic State Base Address" start="108" end="127" type="address"/>
     <field name="Indirect Object Base Address Modify Enable" start="128" end="128" type="bool"/>
-    <field name="Indirect Object MOCS" start="136" end="139" type="uint"/>
+    <field name="Indirect Object MOCS" start="136" end="139" type="uint" nonzero="true"/>
     <field name="Indirect Object Base Address" start="140" end="159" type="address"/>
     <field name="Instruction Base Address Modify Enable" start="160" end="160" type="bool"/>
-    <field name="Instruction MOCS" start="168" end="171" type="uint"/>
+    <field name="Instruction MOCS" start="168" end="171" type="uint" nonzero="true"/>
     <field name="Instruction Base Address" start="172" end="191" type="address"/>
     <field name="General State Access Upper Bound Modify Enable" start="192" end="192" type="bool"/>
     <field name="General State Access Upper Bound" start="204" end="223" type="address"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="1"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="0"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="SW Tessellation MOCS" start="40" end="43" type="uint"/>
+    <field name="SW Tessellation MOCS" start="40" end="43" type="uint" nonzero="true"/>
     <field name="SW Tessellation Base Address" start="44" end="63" type="address"/>
   </instruction>
 
index ffc05db..52da4ff 100644 (file)
     </field>
     <field name="Surface QPitch" start="32" end="46" type="uint"/>
     <field name="Base Mip Level" start="51" end="55" type="u4.1"/>
-    <field name="MOCS" start="56" end="62" type="uint"/>
+    <field name="MOCS" start="56" end="62" type="uint" nonzero="true"/>
     <field name="Width" start="64" end="77" type="uint"/>
     <field name="Height" start="80" end="93" type="uint"/>
     <field name="Surface Pitch" start="96" end="113" type="uint"/>
     <field name="Buffer Pitch" start="0" end="11" type="uint"/>
     <field name="Null Vertex Buffer" start="13" end="13" type="bool"/>
     <field name="Address Modify Enable" start="14" end="14" type="bool"/>
-    <field name="MOCS" start="16" end="22" type="uint"/>
+    <field name="MOCS" start="16" end="22" type="uint" nonzero="true"/>
     <field name="Vertex Buffer Index" start="26" end="31" type="uint"/>
     <field name="Buffer Starting Address" start="32" end="95" type="address"/>
     <field name="Buffer Size" start="96" end="127" type="uint"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="1"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MOCS" start="32" end="38" type="uint"/>
+    <field name="MOCS" start="32" end="38" type="uint" nonzero="true"/>
     <field name="Binding Table Pool Enable" start="43" end="43" type="bool"/>
     <field name="Binding Table Pool Base Address" start="44" end="95" type="address"/>
     <field name="Binding Table Pool Buffer Size" start="108" end="127" type="uint">
     <field name="LOD" start="128" end="131" type="uint"/>
     <field name="Width" start="132" end="145" type="uint"/>
     <field name="Height" start="146" end="159" type="uint"/>
-    <field name="MOCS" start="160" end="166" type="uint"/>
+    <field name="MOCS" start="160" end="166" type="uint" nonzero="true"/>
     <field name="Minimum Array Element" start="170" end="180" type="uint"/>
     <field name="Depth" start="181" end="191" type="uint"/>
     <field name="Surface QPitch" start="224" end="238" type="uint"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="1"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MOCS" start="32" end="38" type="uint"/>
+    <field name="MOCS" start="32" end="38" type="uint" nonzero="true"/>
     <field name="Gather Pool Enable" start="43" end="43" type="bool"/>
     <field name="Gather Pool Base Address" start="44" end="95" type="address"/>
     <field name="Gather Pool Buffer Size" start="108" end="127" type="uint"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Surface Pitch" start="32" end="48" type="uint"/>
-    <field name="MOCS" start="57" end="63" type="uint"/>
+    <field name="MOCS" start="57" end="63" type="uint" nonzero="true"/>
     <field name="Surface Base Address" start="64" end="127" type="address"/>
     <field name="Surface QPitch" start="128" end="142" type="uint"/>
   </instruction>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MOCS" start="32" end="38" type="uint"/>
+    <field name="MOCS" start="32" end="38" type="uint" nonzero="true"/>
     <field name="Index Format" start="40" end="41" type="uint" prefix="INDEX">
       <value name="BYTE" value="0"/>
       <value name="WORD" value="1"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Stream Output Buffer Offset Address Enable" start="52" end="52" type="bool"/>
     <field name="Stream Offset Write Enable" start="53" end="53" type="bool"/>
-    <field name="MOCS" start="54" end="60" type="uint"/>
+    <field name="MOCS" start="54" end="60" type="uint" nonzero="true"/>
     <field name="SO Buffer Index" start="61" end="62" type="uint"/>
     <field name="SO Buffer Enable" start="63" end="63" type="bool"/>
     <field name="Surface Base Address" start="66" end="111" type="address"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Surface Pitch" start="32" end="48" type="uint"/>
-    <field name="MOCS" start="54" end="60" type="uint"/>
+    <field name="MOCS" start="54" end="60" type="uint" nonzero="true"/>
     <field name="Stencil Buffer Enable" start="63" end="63" type="bool"/>
     <field name="Surface Base Address" start="64" end="127" type="address"/>
     <field name="Surface QPitch" start="128" end="142" type="uint"/>
     <field name="Pipeline" start="27" end="28" type="uint" default="2"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Pre Deblocking Destination - Address" start="38" end="79" type="address"/>
-    <field name="Pre Deblocking Destination - MOCS" start="96" end="102" type="uint"/>
+    <field name="Pre Deblocking Destination - MOCS" start="96" end="102" type="uint" nonzero="true"/>
     <field name="Pre Deblocking Destination - Arbitration Priority Control" start="103" end="104" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="Lowest priority" value="3"/>
     </field>
     <field name="Post Deblocking Destination - Address" start="134" end="175" type="address"/>
-    <field name="Post Deblocking Destination - MOCS" start="192" end="198" type="uint"/>
+    <field name="Post Deblocking Destination - MOCS" start="192" end="198" type="uint" nonzero="true"/>
     <field name="Post Deblocking Destination - Arbitration Priority Control" start="199" end="200" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="Lowest priority" value="3"/>
     </field>
     <field name="Original Uncompressed Picture Source - Address" start="230" end="271" type="address"/>
-    <field name="Original Uncompressed Picture Source - MOCS" start="288" end="294" type="uint"/>
+    <field name="Original Uncompressed Picture Source - MOCS" start="288" end="294" type="uint" nonzero="true"/>
     <field name="Original Uncompressed Picture Source - Arbitration Priority Control" start="295" end="296" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="Lowest priority" value="3"/>
     </field>
     <field name="Stream-Out Data Destination - Address" start="326" end="367" type="address"/>
-    <field name="Stream-Out Data Destination - MOCS" start="384" end="390" type="uint"/>
+    <field name="Stream-Out Data Destination - MOCS" start="384" end="390" type="uint" nonzero="true"/>
     <field name="Stream-Out Data Destination - Arbitration Priority Control" start="391" end="392" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="Lowest priority" value="3"/>
     </field>
     <field name="Intra Row Store Scratch Buffer - Address High" start="422" end="463" type="address"/>
-    <field name="Intra Row Store Scratch Buffer - MOCS" start="480" end="486" type="uint"/>
+    <field name="Intra Row Store Scratch Buffer - MOCS" start="480" end="486" type="uint" nonzero="true"/>
     <field name="Intra Row Store Scratch Buffer - Arbitration Priority Control" start="487" end="488" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="Lowest priority" value="3"/>
     </field>
     <field name="Deblocking Filter Row Store Scratch - Address High" start="518" end="559" type="address"/>
-    <field name="Deblocking Filter Row Store Scratch - MOCS" start="576" end="582" type="uint"/>
+    <field name="Deblocking Filter Row Store Scratch - MOCS" start="576" end="582" type="uint" nonzero="true"/>
     <field name="Deblocking Filter Row Store Scratch - Arbitration Priority Control" start="583" end="584" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <group count="16" start="608" size="64">
       <field name="Reference Picture - Address" start="0" end="63" type="address"/>
     </group>
-    <field name="Reference Picture - MOCS" start="1632" end="1638" type="uint"/>
+    <field name="Reference Picture - MOCS" start="1632" end="1638" type="uint" nonzero="true"/>
     <field name="Reference Picture - Arbitration Priority Control" start="1639" end="1640" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="Lowest priority" value="3"/>
     </field>
     <field name="MB Status Buffer - Address" start="1670" end="1711" type="address"/>
-    <field name="MB Status Buffer - MOCS" start="1728" end="1734" type="uint"/>
+    <field name="MB Status Buffer - MOCS" start="1728" end="1734" type="uint" nonzero="true"/>
     <field name="MB Status Buffer - Arbitration Priority Control" start="1735" end="1736" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="Lowest priority" value="3"/>
     </field>
     <field name="MB ILDB Stream-Out Buffer - Address" start="1766" end="1807" type="address"/>
-    <field name="MB ILDB Stream-Out Buffer - MOCS" start="1824" end="1830" type="uint"/>
+    <field name="MB ILDB Stream-Out Buffer - MOCS" start="1824" end="1830" type="uint" nonzero="true"/>
     <field name="MB ILDB Stream-Out Buffer - Arbitration Priority Control" start="1831" end="1832" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="Lowest priority" value="3"/>
     </field>
     <field name="Second MB ILDB Stream-Out Buffer - Address High" start="1862" end="1903" type="address"/>
-    <field name="Second MB ILDB Stream-Out Buffer - MOCS" start="1920" end="1926" type="uint"/>
+    <field name="Second MB ILDB Stream-Out Buffer - MOCS" start="1920" end="1926" type="uint" nonzero="true"/>
     <field name="Second MB ILDB Stream-Out Buffer - Arbitration Priority Control" start="1927" end="1928" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="0"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="General State Base Address Modify Enable" start="32" end="32" type="bool"/>
-    <field name="General State MOCS" start="36" end="42" type="uint"/>
+    <field name="General State MOCS" start="36" end="42" type="uint" nonzero="true"/>
     <field name="General State Base Address" start="44" end="95" type="address"/>
-    <field name="Stateless Data Port Access MOCS" start="112" end="118" type="uint"/>
+    <field name="Stateless Data Port Access MOCS" start="112" end="118" type="uint" nonzero="true"/>
     <field name="Surface State Base Address Modify Enable" start="128" end="128" type="bool"/>
-    <field name="Surface State MOCS" start="132" end="138" type="uint"/>
+    <field name="Surface State MOCS" start="132" end="138" type="uint" nonzero="true"/>
     <field name="Surface State Base Address" start="140" end="191" type="address"/>
     <field name="Dynamic State Base Address Modify Enable" start="192" end="192" type="bool"/>
-    <field name="Dynamic State MOCS" start="196" end="202" type="uint"/>
+    <field name="Dynamic State MOCS" start="196" end="202" type="uint" nonzero="true"/>
     <field name="Dynamic State Base Address" start="204" end="255" type="address"/>
     <field name="Indirect Object Base Address Modify Enable" start="256" end="256" type="bool"/>
-    <field name="Indirect Object MOCS" start="260" end="266" type="uint"/>
+    <field name="Indirect Object MOCS" start="260" end="266" type="uint" nonzero="true"/>
     <field name="Indirect Object Base Address" start="268" end="319" type="address"/>
     <field name="Instruction Base Address Modify Enable" start="320" end="320" type="bool"/>
-    <field name="Instruction MOCS" start="324" end="330" type="uint"/>
+    <field name="Instruction MOCS" start="324" end="330" type="uint" nonzero="true"/>
     <field name="Instruction Base Address" start="332" end="383" type="address"/>
     <field name="General State Buffer Size Modify Enable" start="384" end="384" type="bool"/>
     <field name="General State Buffer Size" start="396" end="415" type="uint"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="1"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="0"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="SW Tessellation MOCS" start="40" end="43" type="uint"/>
+    <field name="SW Tessellation MOCS" start="40" end="43" type="uint" nonzero="true"/>
     <field name="SW Tessellation Base Address" start="44" end="79" type="address"/>
   </instruction>
 
index bbce560..9b8a8f7 100644 (file)
   </struct>
 
   <struct name="MEMORYADDRESSATTRIBUTES" length="1">
-    <field name="MOCS" start="1" end="6" type="uint"/>
+    <field name="MOCS" start="1" end="6" type="uint" nonzero="true"/>
     <field name="Arbitration Priority Control" start="7" end="8" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     </field>
     <field name="Surface QPitch" start="32" end="46" type="uint"/>
     <field name="Base Mip Level" start="51" end="55" type="u4.1"/>
-    <field name="MOCS" start="56" end="62" type="uint"/>
+    <field name="MOCS" start="56" end="62" type="uint" nonzero="true"/>
     <field name="Width" start="64" end="77" type="uint"/>
     <field name="Height" start="80" end="93" type="uint"/>
     <field name="Surface Pitch" start="96" end="113" type="uint"/>
   </struct>
 
   <struct name="VDENC_SURFACE_CONTROL_BITS" length="1">
-    <field name="MOCS" start="1" end="6" type="uint"/>
+    <field name="MOCS" start="1" end="6" type="uint" nonzero="true"/>
     <field name="Arbitration Priority Control" start="7" end="8" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="Buffer Pitch" start="0" end="11" type="uint"/>
     <field name="Null Vertex Buffer" start="13" end="13" type="bool"/>
     <field name="Address Modify Enable" start="14" end="14" type="bool"/>
-    <field name="MOCS" start="16" end="22" type="uint"/>
+    <field name="MOCS" start="16" end="22" type="uint" nonzero="true"/>
     <field name="Vertex Buffer Index" start="26" end="31" type="uint"/>
     <field name="Buffer Starting Address" start="32" end="95" type="address"/>
     <field name="Buffer Size" start="96" end="127" type="uint"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="1"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MOCS" start="32" end="38" type="uint"/>
+    <field name="MOCS" start="32" end="38" type="uint" nonzero="true"/>
     <field name="Binding Table Pool Enable" start="43" end="43" type="bool"/>
     <field name="Binding Table Pool Base Address" start="44" end="95" type="address"/>
     <field name="Binding Table Pool Buffer Size" start="108" end="127" type="uint">
 
   <instruction name="3DSTATE_CONSTANT_DS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="26"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
 
   <instruction name="3DSTATE_CONSTANT_GS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="22"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
 
   <instruction name="3DSTATE_CONSTANT_HS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="25"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
 
   <instruction name="3DSTATE_CONSTANT_PS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="23"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
 
   <instruction name="3DSTATE_CONSTANT_VS" bias="2" length="11" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="9"/>
-    <field name="MOCS" start="8" end="14" type="uint"/>
+    <field name="MOCS" start="8" end="14" type="uint" nonzero="true"/>
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="21"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="LOD" start="128" end="131" type="uint"/>
     <field name="Width" start="132" end="145" type="uint"/>
     <field name="Height" start="146" end="159" type="uint"/>
-    <field name="MOCS" start="160" end="166" type="uint"/>
+    <field name="MOCS" start="160" end="166" type="uint" nonzero="true"/>
     <field name="Minimum Array Element" start="170" end="180" type="uint"/>
     <field name="Depth" start="181" end="191" type="uint"/>
     <field name="Mip Tail Start LOD" start="218" end="221" type="uint"/>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="1"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MOCS" start="32" end="38" type="uint"/>
+    <field name="MOCS" start="32" end="38" type="uint" nonzero="true"/>
     <field name="Gather Pool Enable" start="43" end="43" type="bool"/>
     <field name="Gather Pool Base Address" start="44" end="95" type="address"/>
     <field name="Gather Pool Buffer Size" start="108" end="127" type="uint"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Surface Pitch" start="32" end="48" type="uint"/>
-    <field name="MOCS" start="57" end="63" type="uint"/>
+    <field name="MOCS" start="57" end="63" type="uint" nonzero="true"/>
     <field name="Surface Base Address" start="64" end="127" type="address"/>
     <field name="Surface QPitch" start="128" end="142" type="uint"/>
   </instruction>
     <field name="3D Command Opcode" start="24" end="26" type="uint" default="0"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
-    <field name="MOCS" start="32" end="38" type="uint"/>
+    <field name="MOCS" start="32" end="38" type="uint" nonzero="true"/>
     <field name="Index Format" start="40" end="41" type="uint" prefix="INDEX">
       <value name="BYTE" value="0"/>
       <value name="WORD" value="1"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Stream Output Buffer Offset Address Enable" start="52" end="52" type="bool"/>
     <field name="Stream Offset Write Enable" start="53" end="53" type="bool"/>
-    <field name="MOCS" start="54" end="60" type="uint"/>
+    <field name="MOCS" start="54" end="60" type="uint" nonzero="true"/>
     <field name="SO Buffer Index" start="61" end="62" type="uint"/>
     <field name="SO Buffer Enable" start="63" end="63" type="bool"/>
     <field name="Surface Base Address" start="66" end="111" type="address"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Surface Pitch" start="32" end="48" type="uint"/>
-    <field name="MOCS" start="54" end="60" type="uint"/>
+    <field name="MOCS" start="54" end="60" type="uint" nonzero="true"/>
     <field name="Stencil Buffer Enable" start="63" end="63" type="bool"/>
     <field name="Surface Base Address" start="64" end="127" type="address"/>
     <field name="Surface QPitch" start="128" end="142" type="uint"/>
     <field name="Pipeline" start="27" end="28" type="uint" default="2"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="Pre Deblocking Source - Address" start="38" end="79" type="address"/>
-    <field name="Pre Deblocking Source - MOCS" start="97" end="102" type="uint"/>
+    <field name="Pre Deblocking Source - MOCS" start="97" end="102" type="uint" nonzero="true"/>
     <field name="Pre Deblocking Source - Arbitration Priority Control" start="103" end="104" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="Deblocking Control - Address" start="134" end="175" type="address"/>
-    <field name="Deblocking Control - MOCS" start="193" end="198" type="uint"/>
+    <field name="Deblocking Control - MOCS" start="193" end="198" type="uint" nonzero="true"/>
     <field name="Deblocking Control - Arbitration Priority Control" start="199" end="200" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="Deblocking Destination - Address High" start="230" end="271" type="address"/>
-    <field name="Deblocking Destination - MOCS" start="289" end="294" type="uint"/>
+    <field name="Deblocking Destination - MOCS" start="289" end="294" type="uint" nonzero="true"/>
     <field name="Deblocking Destination - Arbitration Priority Control" start="295" end="296" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="Deblock Row Store - Address" start="326" end="367" type="address"/>
-    <field name="CoeffProbability Stream-In - MOCS" start="385" end="390" type="uint"/>
+    <field name="CoeffProbability Stream-In - MOCS" start="385" end="390" type="uint" nonzero="true"/>
     <field name="Deblock Row Store - Arbitration Priority Control" start="391" end="392" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="Quantizer Value [3][Y2DC]" start="480" end="488" type="uint"/>
     <field name="Quantizer Value [3][Y2AC]" start="496" end="504" type="uint"/>
     <field name="CoeffProbability Stream-In - Address" start="518" end="559" type="uint"/>
-    <field name="CoeffProbability Stream-In - MOCS (Encoder only)" start="577" end="582" type="uint"/>
+    <field name="CoeffProbability Stream-In - MOCS (Encoder only)" start="577" end="582" type="uint" nonzero="true"/>
     <field name="CoeffProbability Stream-In - Arbitration Priority Control" start="583" end="584" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="ModeLFDelta2" start="1104" end="1110" type="int"/>
     <field name="ModeLFDelta3" start="1112" end="1118" type="int"/>
     <field name="Segmentation ID Stream - Address" start="1120" end="1167" type="uint"/>
-    <field name="CoeffProbability Stream-In - MOCS" start="1185" end="1190" type="uint"/>
+    <field name="CoeffProbability Stream-In - MOCS" start="1185" end="1190" type="uint" nonzero="true"/>
     <field name="Segmentation ID Stream - Arbitration Priority Control" start="1191" end="1192" type="uint">
       <value name="Highest priority" value="0"/>
       <value name="Second highest priority" value="1"/>
     <field name="Scaling Factor Height" start="448" end="468" type="u4.17"/>
     <field name="Scaling Factor Width" start="480" end="500" type="u4.17"/>
     <field name="Output Frame - Address" start="556" end="591" type="uint"/>
-    <field name="Output Frame - MOCS" start="609" end="614" type="uint"/>
+    <field name="Output Frame - MOCS" start="609" end="614" type="uint" nonzero="true"/>
     <field name="Output Frame - Arbitration Priority Control" start="615" end="616" type="HEVC_ARBITRATION_PRIORITY"/>
     <field name="Output Frame - Memory Compression Enable" start="617" end="617" type="bool"/>
     <field name="Output Frame - Memory Compression Mode" start="618" end="618" type="uint"/>
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="AVS Line Buffer - Address" start="652" end="687" type="uint"/>
-    <field name="AVS Line Buffer - MOCS" start="705" end="710" type="uint"/>
+    <field name="AVS Line Buffer - MOCS" start="705" end="710" type="uint" nonzero="true"/>
     <field name="AVS Line Buffer - Arbitration Priority Control" start="711" end="712" type="HEVC_ARBITRATION_PRIORITY"/>
     <field name="AVS Line Buffer - Memory Compression Enable" start="713" end="713" type="bool"/>
     <field name="AVS Line Buffer - Memory Compression Mode" start="714" end="714" type="uint">
       <value name="TRMODE_TILEYS" value="2"/>
     </field>
     <field name="IEF Line Buffer - Address" start="748" end="783" type="uint"/>
-    <field name="IEF Line Buffer - MOCS" start="801" end="806" type="uint"/>
+    <field name="IEF Line Buffer - MOCS" start="801" end="806" type="uint" nonzero="true"/>
     <field name="IEF Line Buffer - Arbitration Priority Control" start="807" end="808" type="HEVC_ARBITRATION_PRIORITY"/>
     <field name="IEF Line Buffer - Memory Compression Enable" start="809" end="809" type="bool"/>
     <field name="IEF Line Buffer - Memory Compression Mode" start="810" end="810" type="uint"/>
     <field name="Command SubType" start="27" end="28" type="uint" default="0"/>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/>
     <field name="General State Base Address Modify Enable" start="32" end="32" type="bool"/>
-    <field name="General State MOCS" start="36" end="42" type="uint"/>
+    <field name="General State MOCS" start="36" end="42" type="uint" nonzero="true"/>
     <field name="General State Base Address" start="44" end="95" type="address"/>
-    <field name="Stateless Data Port Access MOCS" start="112" end="118" type="uint"/>
+    <field name="Stateless Data Port Access MOCS" start="112" end="118" type="uint" nonzero="true"/>
     <field name="Surface State Base Address Modify Enable" start="128" end="128" type="bool"/>
-    <field name="Surface State MOCS" start="132" end="138" type="uint"/>
+    <field name="Surface State MOCS" start="132" end="138" type="uint" nonzero="true"/>
     <field name="Surface State Base Address" start="140" end="191" type="address"/>
     <field name="Dynamic State Base Address Modify Enable" start="192" end="192" type="bool"/>
-    <field name="Dynamic State MOCS" start="196" end="202" type="uint"/>
+    <field name="Dynamic State MOCS" start="196" end="202" type="uint" nonzero="true"/>
     <field name="Dynamic State Base Address" start="204" end="255" type="address"/>
     <field name="Indirect Object Base Address Modify Enable" start="256" end="256" type="bool"/>
-    <field name="Indirect Object MOCS" start="260" end="266" type="uint"/>
+    <field name="Indirect Object MOCS" start="260" end="266" type="uint" nonzero="true"/>
     <field name="Indirect Object Base Address" start="268" end="319" type="address"/>
     <field name="Instruction Base Address Modify Enable" start="320" end="320" type="bool"/>
-    <field name="Instruction MOCS" start="324" end="330" type="uint"/>
+    <field name="Instruction MOCS" start="324" end="330" type="uint" nonzero="true"/>
     <field name="Instruction Base Address" start="332" end="383" type="address"/>
     <field name="General State Buffer Size Modify Enable" start="384" end="384" type="bool"/>
     <field name="General State Buffer Size" start="396" end="415" type="uint"/>
     <field name="Instruction Buffer size Modify Enable" start="480" end="480" type="bool"/>
     <field name="Instruction Buffer Size" start="492" end="511" type="uint"/>
     <field name="Bindless Surface State Base Address Modify Enable" start="512" end="512" type="bool"/>
-    <field name="Bindless Surface State MOCS" start="516" end="522" type="uint"/>
+    <field name="Bindless Surface State MOCS" start="516" end="522" type="uint" nonzero="true"/>
     <field name="Bindless Surface State Base Address" start="524" end="575" type="address"/>
     <field name="Bindless Surface State Size" start="588" end="607" type="uint"/>
   </instruction>