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