[Mesa-stable] [Mesa-dev] [PATCH] i965: Work around mysterious Gen4 GPU hangs with minimal state changes.
Matt Turner
mattst88 at gmail.com
Mon Jan 19 11:22:31 PST 2015
On Sat, Jan 17, 2015 at 11:21 PM, Kenneth Graunke <kenneth at whitecape.org> wrote:
> Gen4 hardware appears to GPU hang frequently when using Chromium, and
> also when running 'glmark2 -b ideas'. Most of the error states contain
> 3DPRIMITIVE commands in quick succession, with very few state packets
> between them - usually VERTEX_BUFFERS/ELEMENTS and CONSTANT_BUFFER.
>
> I trimmed an apitrace of the glmark2 hang down to two draw calls with a
> glUniformMatrix4fv call between the two. Either draw by itself works
> fine, but together, they hang the GPU. Removing the glUniform call
> makes the hangs disappear. In the hardware state, this translates to
> removing the CONSTANT_BUFFER packet between the two 3DPRIMITIVE packets.
>
> Flushing before emitting CONSTANT_BUFFER packets also appears to make
> the hangs disappear. I observed a slowdown in glxgears by doing it all
> the time, so I've chosen to only do it when BRW_NEW_BATCH and
> BRW_NEW_PSP are unset (i.e. we haven't done a CS_URB_STATE change or
> already flushed the whole pipeline).
>
> I'd much rather understand the problem, but at this point, I don't see
> how we'd ever be able to track it down further. We have no real tools,
> and the hardware people moved on years ago. I've analyzed 20+ error
> states and read every scrap of documentation I could find.
I don't think a Reviewed-by makes sense in this context, so please have an
Acked-by: Matt Turner <mattst88 at gmail.com>
and go make all those Gen4 users happy. :)
More information about the mesa-stable
mailing list