<div dir="ltr">Hello, Kenneth.<div>Any more remarks?</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jul 12, 2018 at 3:47 PM, Sergii Romantsov <span dir="ltr"><<a href="mailto:sergii.romantsov@gmail.com" target="_blank">sergii.romantsov@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">SNB doesn't have a definition of 3DSTATE_CONSTANT_BODY, thats<br>
<span class="">why we got segmentation fault when used INTEL_DEBUG=bat.<br>
</span>Fixed by adding of 3DSTATE_CONSTANT_BODY into 3DSTATE_CONSTANT<br>
of VS, GS and PS structures.<br>
<br>
v2: added definition of 3DSTATE_CONSTANT_BODY to the gen6.xml<br>
<span class=""><br>
Fixes: 169d8e011ae (intel: Fix 3DSTATE_CONSTANT buffer decoding.)<br>
Bugzilla: <a href="https://bugs.freedesktop.org/show_bug.cgi?id=107190" rel="noreferrer" target="_blank">https://bugs.freedesktop.org/<wbr>show_bug.cgi?id=107190</a><br>
Signed-off-by: Sergii Romantsov <<a href="mailto:sergii.romantsov@globallogic.com">sergii.romantsov@globallogic.<wbr>com</a>><br>
---<br>
</span> src/intel/genxml/gen6.xml                     | 38 ++++++++++-----------------<br>
 src/mesa/drivers/dri/i965/<wbr>genX_state_upload.c | 12 ++++-----<br>
 2 files changed, 20 insertions(+), 30 deletions(-)<br>
<br>
diff --git a/src/intel/genxml/gen6.xml b/src/intel/genxml/gen6.xml<br>
index c2967cd..62d2574 100644<br>
--- a/src/intel/genxml/gen6.xml<br>
+++ b/src/intel/genxml/gen6.xml<br>
@@ -622,6 +622,17 @@<br>
     <field name="Maximum VP Index" start="96" end="99" type="uint"/><br>
   </instruction><br>
<br>
+  <struct name="3DSTATE_CONSTANT_BODY" length="4"><br>
+    <field name="Pointer to Constant Buffer 0" start="5" end="31" type="offset"/><br>
+    <field name="Constant Buffer 0 Read Length" start="0" end="4" type="uint"/><br>
+    <field name="Pointer to Constant Buffer 1" start="37" end="63" type="address"/><br>
+    <field name="Constant Buffer 1 Read Length" start="32" end="36" type="uint"/><br>
+    <field name="Pointer to Constant Buffer 2" start="69" end="95" type="address"/><br>
+    <field name="Constant Buffer 2 Read Length" start="64" end="68" type="uint"/><br>
+    <field name="Pointer to Constant Buffer 3" start="101" end="127" type="address"/><br>
+    <field name="Constant Buffer 3 Read Length" start="96" end="100" type="uint"/><br>
+  </struct><br>
+<br>
   <instruction name="3DSTATE_CONSTANT_GS" bias="2" length="5"><br>
     <field name="Command Type" start="29" end="31" type="uint" default="3"/><br>
     <field name="Command SubType" start="27" end="28" type="uint" default="3"/><br>
@@ -633,14 +644,7 @@<br>
     <field name="Buffer 0 Valid" start="12" end="12" type="bool"/><br>
     <field name="Constant Buffer Object Control State" start="8" end="11" type="MEMORY_OBJECT_CONTROL_<wbr>STATE"/><br>
     <field name="DWord Length" start="0" end="7" type="uint" default="3"/><br>
-    <field name="Pointer to GS Constant Buffer 0" start="37" end="63" type="offset"/><br>
-    <field name="GS Constant Buffer 0 Read Length" start="32" end="36" type="uint"/><br>
-    <field name="Pointer to GS Constant Buffer 1" start="69" end="95" type="address"/><br>
-    <field name="GS Constant Buffer 1 Read Length" start="64" end="68" type="uint"/><br>
-    <field name="Pointer to GS Constant Buffer 2" start="101" end="127" type="address"/><br>
-    <field name="GS Constant Buffer 2 Read Length" start="96" end="100" type="uint"/><br>
-    <field name="Pointer to GS Constant Buffer 3" start="133" end="159" type="address"/><br>
-    <field name="GS Constant Buffer 3 Read Length" start="128" end="132" type="uint"/><br>
+    <field name="Constant Body" start="32" end="159" type="3DSTATE_CONSTANT_BODY"/><br>
   </instruction><br>
<br>
   <instruction name="3DSTATE_CONSTANT_PS" bias="2" length="5"><br>
@@ -654,14 +658,7 @@<br>
     <field name="Buffer 0 Valid" start="12" end="12" type="bool"/><br>
     <field name="Constant Buffer Object Control State" start="8" end="11" type="MEMORY_OBJECT_CONTROL_<wbr>STATE"/><br>
     <field name="DWord Length" start="0" end="7" type="uint" default="3"/><br>
-    <field name="Pointer to PS Constant Buffer 0" start="37" end="63" type="offset"/><br>
-    <field name="PS Constant Buffer 0 Read Length" start="32" end="36" type="uint"/><br>
-    <field name="Pointer to PS Constant Buffer 1" start="69" end="95" type="address"/><br>
-    <field name="PS Constant Buffer 1 Read Length" start="64" end="68" type="uint"/><br>
-    <field name="Pointer to PS Constant Buffer 2" start="101" end="127" type="address"/><br>
-    <field name="PS Constant Buffer 2 Read Length" start="96" end="100" type="uint"/><br>
-    <field name="Pointer to PS Constant Buffer 3" start="133" end="159" type="address"/><br>
-    <field name="PS Constant Buffer 3 Read Length" start="128" end="132" type="uint"/><br>
+    <field name="Constant Body" start="32" end="159" type="3DSTATE_CONSTANT_BODY"/><br>
   </instruction><br>
<br>
   <instruction name="3DSTATE_CONSTANT_VS" bias="2" length="5"><br>
@@ -675,14 +672,7 @@<br>
     <field name="Buffer 0 Valid" start="12" end="12" type="bool"/><br>
     <field name="Constant Buffer Object Control State" start="8" end="11" type="MEMORY_OBJECT_CONTROL_<wbr>STATE"/><br>
     <field name="DWord Length" start="0" end="7" type="uint" default="3"/><br>
-    <field name="Pointer to VS Constant Buffer 0" start="37" end="63" type="offset"/><br>
-    <field name="VS Constant Buffer 0 Read Length" start="32" end="36" type="uint"/><br>
-    <field name="Pointer to VS Constant Buffer 1" start="69" end="95" type="address"/><br>
-    <field name="VS Constant Buffer 1 Read Length" start="64" end="68" type="uint"/><br>
-    <field name="Pointer to VS Constant Buffer 2" start="101" end="127" type="address"/><br>
-    <field name="VS Constant Buffer 2 Read Length" start="96" end="100" type="uint"/><br>
-    <field name="Pointer to VS Constant Buffer 3" start="133" end="159" type="address"/><br>
-    <field name="VS Constant Buffer 3 Read Length" start="128" end="132" type="uint"/><br>
+    <field name="Constant Body" start="32" end="159" type="3DSTATE_CONSTANT_BODY"/><br>
   </instruction><br>
<br>
   <instruction name="3DSTATE_DEPTH_BUFFER" bias="2" length="7"><br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>genX_state_upload.c b/src/mesa/drivers/dri/i965/<wbr>genX_state_upload.c<br>
index 7fe1288..a4e395c 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>genX_state_upload.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>genX_state_upload.c<br>
@@ -1879,8 +1879,8 @@ genX(upload_wm)(struct brw_context *brw)<br>
          /* Pointer to the WM constant buffer.  Covered by the set of<br>
           * state flags from gen6_upload_wm_push_constants.<br>
           */<br>
-         wmcp.<wbr>PointertoPSConstantBuffer0 = stage_state->push_const_<wbr>offset;<br>
-         wmcp.<wbr>PSConstantBuffer0ReadLength = stage_state->push_const_size - 1;<br>
+         wmcp.ConstantBody.<wbr>PointertoConstantBuffer0 = stage_state->push_const_<wbr>offset;<br>
+         wmcp.ConstantBody.<wbr>ConstantBuffer0ReadLength = stage_state->push_const_size - 1;<br>
       }<br>
    }<br>
 #endif<br>
@@ -2215,8 +2215,8 @@ genX(upload_vs_state)(struct brw_context *brw)<br>
    brw_batch_emit(brw, GENX(3DSTATE_CONSTANT_VS), cvs) {<br>
       if (stage_state->push_const_size != 0) {<br>
          cvs.Buffer0Valid = true;<br>
-         cvs.PointertoVSConstantBuffer0 = stage_state->push_const_<wbr>offset;<br>
-         cvs.<wbr>VSConstantBuffer0ReadLength = stage_state->push_const_size - 1;<br>
+         cvs.ConstantBody.<wbr>PointertoConstantBuffer0 = stage_state->push_const_<wbr>offset;<br>
+         cvs.ConstantBody.<wbr>ConstantBuffer0ReadLength = stage_state->push_const_size - 1;<br>
       }<br>
    }<br>
 #endif<br>
@@ -2707,8 +2707,8 @@ genX(upload_gs_state)(struct brw_context *brw)<br>
    brw_batch_emit(brw, GENX(3DSTATE_CONSTANT_GS), cgs) {<br>
       if (active && stage_state->push_const_size != 0) {<br>
          cgs.Buffer0Valid = true;<br>
-         cgs.PointertoGSConstantBuffer0 = stage_state->push_const_<wbr>offset;<br>
-         cgs.<wbr>GSConstantBuffer0ReadLength = stage_state->push_const_size - 1;<br>
+         cgs.ConstantBody.<wbr>PointertoConstantBuffer0 = stage_state->push_const_<wbr>offset;<br>
+         cgs.ConstantBody.<wbr>ConstantBuffer0ReadLength = stage_state->push_const_size - 1;<br>
       }<br>
    }<br>
 #endif<br>
<span class="HOEnZb"><font color="#888888">-- <br>
2.7.4<br>
<br>
</font></span></blockquote></div><br></div>