[Mesa-dev] [PATCH] i965: Use vec4 vs shader path in spill cases.
Ben Widawsky
ben at bwidawsk.net
Thu Jun 4 16:35:11 PDT 2015
On Wed, Jun 03, 2015 at 05:42:10PM -0700, Matt Turner wrote:
> 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.
What about geometry shaders when Ken gets those hooked up?
More information about the mesa-dev
mailing list