intel/gen12+: Disable mid thread preemption.
Fixes a GPU hang in Car Chase. Cc: mesa-stable@lists.freedesktop.org v2: Add comment explaining why (Jason). Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4035> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4035>
This commit is contained in:
parent
42ee6ff706
commit
5f13996262
|
@ -4378,6 +4378,18 @@ iris_store_cs_state(struct iris_context *ice,
|
||||||
desc.BarrierEnable = cs_prog_data->uses_barrier;
|
desc.BarrierEnable = cs_prog_data->uses_barrier;
|
||||||
desc.CrossThreadConstantDataReadLength =
|
desc.CrossThreadConstantDataReadLength =
|
||||||
cs_prog_data->push.cross_thread.regs;
|
cs_prog_data->push.cross_thread.regs;
|
||||||
|
#if GEN_GEN >= 12
|
||||||
|
/* TODO: Check if we are missing workarounds and enable mid-thread
|
||||||
|
* preemption.
|
||||||
|
*
|
||||||
|
* We still have issues with mid-thread preemption (it was already
|
||||||
|
* disabled by the kernel on gen11, due to missing workarounds). It's
|
||||||
|
* possible that we are just missing some workarounds, and could enable
|
||||||
|
* it later, but for now let's disable it to fix a GPU in compute in Car
|
||||||
|
* Chase (and possibly more).
|
||||||
|
*/
|
||||||
|
desc.ThreadPreemptionDisable = true;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -525,6 +525,7 @@
|
||||||
<value name="Ftz" value="0"/>
|
<value name="Ftz" value="0"/>
|
||||||
<value name="SetByKernel" value="1"/>
|
<value name="SetByKernel" value="1"/>
|
||||||
</field>
|
</field>
|
||||||
|
<field name="Thread Preemption Disable" start="84" end="84" type="bool"/>
|
||||||
<field name="Sampler Count" start="98" end="100" type="uint">
|
<field name="Sampler Count" start="98" end="100" type="uint">
|
||||||
<value name="No samplers used" value="0"/>
|
<value name="No samplers used" value="0"/>
|
||||||
<value name="Between 1 and 4 samplers used" value="1"/>
|
<value name="Between 1 and 4 samplers used" value="1"/>
|
||||||
|
|
|
@ -2354,6 +2354,18 @@ compute_pipeline_create(
|
||||||
.CrossThreadConstantDataReadLength =
|
.CrossThreadConstantDataReadLength =
|
||||||
cs_prog_data->push.cross_thread.regs,
|
cs_prog_data->push.cross_thread.regs,
|
||||||
#endif
|
#endif
|
||||||
|
#if GEN_GEN >= 12
|
||||||
|
/* TODO: Check if we are missing workarounds and enable mid-thread
|
||||||
|
* preemption.
|
||||||
|
*
|
||||||
|
* We still have issues with mid-thread preemption (it was already
|
||||||
|
* disabled by the kernel on gen11, due to missing workarounds). It's
|
||||||
|
* possible that we are just missing some workarounds, and could enable
|
||||||
|
* it later, but for now let's disable it to fix a GPU in compute in Car
|
||||||
|
* Chase (and possibly more).
|
||||||
|
*/
|
||||||
|
.ThreadPreemptionDisable = true,
|
||||||
|
#endif
|
||||||
|
|
||||||
.NumberofThreadsinGPGPUThreadGroup = cs_prog_data->threads,
|
.NumberofThreadsinGPGPUThreadGroup = cs_prog_data->threads,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue