[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