[Mesa-stable] [Mesa-dev] [PATCH 3/4] anv: Disable the vertex cache when tessellating on SKL GT4
Kenneth Graunke
kenneth at whitecape.org
Fri Sep 7 20:10:14 UTC 2018
On Tuesday, August 21, 2018 6:57:50 PM PDT Jason Ekstrand wrote:
> I have no idea if I'm correct about what's going wrong or if this is the
> correct fix. However, in my multiple weeks of banging my head on this
> hang, a VUE reference counting bug seems to match all the symptoms and
> it definitely fixes the hang.
>
> Cc: mesa-stable at lists.freedesktop.org
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107280
> ---
> src/intel/vulkan/genX_pipeline.c | 23 ++++++++++++++++++++++-
> 1 file changed, 22 insertions(+), 1 deletion(-)
>
> diff --git a/src/intel/vulkan/genX_pipeline.c b/src/intel/vulkan/genX_pipeline.c
> index 03a68ab0bf3..197c1ef4d8a 100644
> --- a/src/intel/vulkan/genX_pipeline.c
> +++ b/src/intel/vulkan/genX_pipeline.c
> @@ -1141,7 +1141,28 @@ emit_3dstate_vs(struct anv_pipeline *pipeline)
> vs.IllegalOpcodeExceptionEnable = false;
> vs.SoftwareExceptionEnable = false;
> vs.MaximumNumberofThreads = devinfo->max_vs_threads - 1;
> - vs.VertexCacheDisable = false;
> +
> + if (GEN_GEN == 9 && devinfo->gt == 4 &&
> + anv_pipeline_has_stage(pipeline, MESA_SHADER_TESS_EVAL)) {
> + /* On Sky Lake GT4, we have experienced some hangs related to the VS
> + * cache and tessellation. It is unknown exactly what is happening
> + * but the Haswell docs for the "VS Reference Count Full Force Miss
> + * Enable" field of the "Thread Mode" register refer to a HSW bug in
> + * which the VUE handle reference count would overflow resulting in
> + * internal reference counting bugs. My (Jason's) best guess is that
> + * this bug cropped back up on SKL GT4 when we suddenly had more
> + * threads in play than any previous gen9 hardware.
> + *
> + * What we do know for sure is that setting this bit when
> + * tessellation shaders are in use fixes a GPU hang in Batman: Arkham
> + * City when playing with DXVK (https://bugs.freedesktop.org/107280).
> + * Disabling the vertex cache with tessellation shaders should only
> + * have a minor performance impact as the tessellation shaders are
> + * likely generating and processing far more geometry than the vertex
> + * stage.
> + */
> + vs.VertexCacheDisable = true;
> + }
>
> vs.VertexURBEntryReadLength = vs_prog_data->base.urb_read_length;
> vs.VertexURBEntryReadOffset = 0;
>
I can't really ask for any more due diligence to be done here.
Nobody understands it, and that's probably the best we can do.
Acked-by: Kenneth Graunke <kenneth at whitecape.org>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.freedesktop.org/archives/mesa-stable/attachments/20180907/1f14800b/attachment.sig>
More information about the mesa-stable
mailing list