[Mesa-dev] [PATCH] i965: Use vec4 vs shader path in spill cases.

Matt Turner mattst88 at gmail.com
Wed Jun 3 17:42:10 PDT 2015


On Wed, Jun 3, 2015 at 5:29 PM, Kenneth Graunke <kenneth at whitecape.org> wrote:
> On Wednesday, June 03, 2015 11:35:43 PM Bish, Jim wrote:
>> For BDW and newer hardware, vertex shaders can be dispatched
>> using simd8 scalars, but when spills occur performance will
>> be impacted.
>>
>> Fixes spec at glsl-1.10@execution at varying-packing@simple by falling back
>> to vec4x2 dispatch. There is another issue with simd8 dispatch which
>> will be addressed later.
>>
>> Bugzill : https://bugs.freedesktop.org/show_bug.cgi?id=89055
>
> Hi Jim,
>
> That link appears to be a Skylake display bug - presumably you meant
> this one?
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89786
>
> Based on Neil's comments, it sounds like there's a bug in the SIMD8
> backend's register spilling code, which is worth fixing.  This seems
> to paper over that by not using SIMD8 mode.  I'd rather not do that.
>
> I'm happy to consider falling back to SIMD4x2 when spilling, for better
> performance - it certainly seems reasonable - but we should obtain some
> performance data showing that an application benefits from that change.

Indeed, this is something we've talked about before, but it's never
been clear that it would be a win. There are also some unsolved
problems with that approach, like Ken mentioned.

I ran the patch through our Jenkins CI system and while it does fix 26
tests on BDW, it causes an assertion failure in
tests/spec/glsl-1.30/execution/varying-packing-mixed-types.shader_test:

shader_runner: ../../../../../../mesa/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp:1071:
virtual void brw::vec4_visitor::visit(ir_variable*): Assertion
`this->uniforms < uniform_array_size' failed.

I ran the patch through shader-db, and there were no changes, but
that's because we have no vertex shaders that spill. Until we have
vertex shaders that spill, I don't think figuring out how to fall back
to vec4 and generate reasonable code is particularly compelling.


More information about the mesa-dev mailing list