genxml: Make a SCISSOR_RECT structure on Gen4-5.
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 11 May 2017 06:37:23 +0000 (23:37 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Tue, 30 May 2017 04:46:37 +0000 (21:46 -0700)
Gen6+ support multiple scissor rectangles, and define a SCISSOR_RECT
structure containing their dimensions.  On Gen4-5, those same fields
exist in SF_VIEWPORT.

This patch extracts the SF_VIEWPORT fields into a SCISSOR_RECT
structure.  Although not a named concept on Gen4-5, it works just
as well, and gives us a consistent SCISSOR_RECT structure across
all generations, making it easier to reuse code.

Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
src/intel/genxml/gen4.xml
src/intel/genxml/gen45.xml
src/intel/genxml/gen5.xml

index 58e075158536e1567251bb88d4bedd7dd536510d..b6721ac9f6c7aa40844643753b4cb6b4f1da2ea7 100644 (file)
     <field name="YMax Clip Guardband" start="96" end="127" type="float"/>
   </struct>
 
+  <struct name="SCISSOR_RECT" length="2">
+    <field name="Scissor Rectangle Y Min" start="16" end="31" type="uint"/>
+    <field name="Scissor Rectangle X Min" start="0" end="15" type="uint"/>
+    <field name="Scissor Rectangle Y Max" start="48" end="63" type="uint"/>
+    <field name="Scissor Rectangle X Max" start="32" end="47" type="uint"/>
+  </struct>
+
   <struct name="COLOR_CALC_STATE" length="8">
     <field name="Stencil Test Enable" start="31" end="31" type="bool"/>
     <field name="Stencil Test Function" start="28" end="30" type="3D_Compare_Function"/>
     <field name="Viewport Matrix Element m30" start="96" end="127" type="float"/>
     <field name="Viewport Matrix Element m31" start="128" end="159" type="float"/>
     <field name="Viewport Matrix Element m32" start="160" end="191" type="float"/>
-    <field name="Scissor Rectangle Y Min" start="208" end="223" type="uint"/>
-    <field name="Scissor Rectangle X Min" start="192" end="207" type="uint"/>
-    <field name="Scissor Rectangle Y Max" start="240" end="255" type="uint"/>
-    <field name="Scissor Rectangle X Max" start="224" end="239" type="uint"/>
+    <field name="Scissor Rectangle" start="192" end="255" type="SCISSOR_RECT"/>
   </struct>
 
   <struct name="VERTEX_BUFFER_STATE" length="4">
index 47100e55e8afe657153151844f909ed3884f6e16..72c9fc23daaa9597223c127fde8450d8050ac8aa 100644 (file)
     <field name="YMax Clip Guardband" start="96" end="127" type="float"/>
   </struct>
 
+  <struct name="SCISSOR_RECT" length="2">
+    <field name="Scissor Rectangle Y Min" start="16" end="31" type="uint"/>
+    <field name="Scissor Rectangle X Min" start="0" end="15" type="uint"/>
+    <field name="Scissor Rectangle Y Max" start="48" end="63" type="uint"/>
+    <field name="Scissor Rectangle X Max" start="32" end="47" type="uint"/>
+  </struct>
+
   <struct name="COLOR_CALC_STATE" length="8">
     <field name="Stencil Test Enable" start="31" end="31" type="bool"/>
     <field name="Stencil Test Function" start="28" end="30" type="3D_Compare_Function"/>
     <field name="Viewport Matrix Element m30" start="96" end="127" type="float"/>
     <field name="Viewport Matrix Element m31" start="128" end="159" type="float"/>
     <field name="Viewport Matrix Element m32" start="160" end="191" type="float"/>
-    <field name="Scissor Rectangle Y Min" start="208" end="223" type="uint"/>
-    <field name="Scissor Rectangle X Min" start="192" end="207" type="uint"/>
-    <field name="Scissor Rectangle Y Max" start="240" end="255" type="uint"/>
-    <field name="Scissor Rectangle X Max" start="224" end="239" type="uint"/>
+    <field name="Scissor Rectangle" start="192" end="255" type="SCISSOR_RECT"/>
   </struct>
 
   <struct name="VERTEX_BUFFER_STATE" length="4">
index 777ed36427d0399504af542ca1ef23985ca02b8e..729137c666ea62afbc1b6fdd96fecc3cee373f95 100644 (file)
     <field name="YMax Clip Guardband" start="96" end="127" type="float"/>
   </struct>
 
+  <struct name="SCISSOR_RECT" length="2">
+    <field name="Scissor Rectangle Y Min" start="16" end="31" type="uint"/>
+    <field name="Scissor Rectangle X Min" start="0" end="15" type="uint"/>
+    <field name="Scissor Rectangle Y Max" start="48" end="63" type="uint"/>
+    <field name="Scissor Rectangle X Max" start="32" end="47" type="uint"/>
+  </struct>
+
   <struct name="COLOR_CALC_STATE" length="8">
     <field name="Stencil Test Enable" start="31" end="31" type="bool"/>
     <field name="Stencil Test Function" start="28" end="30" type="3D_Compare_Function"/>
     <field name="Viewport Matrix Element m30" start="96" end="127" type="float"/>
     <field name="Viewport Matrix Element m31" start="128" end="159" type="float"/>
     <field name="Viewport Matrix Element m32" start="160" end="191" type="float"/>
-    <field name="Scissor Rectangle Y Min" start="208" end="223" type="uint"/>
-    <field name="Scissor Rectangle X Min" start="192" end="207" type="uint"/>
-    <field name="Scissor Rectangle Y Max" start="240" end="255" type="uint"/>
-    <field name="Scissor Rectangle X Max" start="224" end="239" type="uint"/>
+    <field name="Scissor Rectangle" start="192" end="255" type="SCISSOR_RECT"/>
   </struct>
 
   <struct name="VERTEX_BUFFER_STATE" length="4">