On Wednesday, February 11, 2015 10:35:04 AM Ben Widawsky wrote:
> On Wed, Feb 11, 2015 at 05:08:33AM -0800, Kenneth Graunke wrote:
> > On Tuesday, February 10, 2015 05:22:45 PM Ben Widawsky wrote:
> > > Since we can be in this code with SIMD4x2, the execsize will be 4, and so 
> > > the
> > > register width must be <= 4. If you use a vec8, the width is 8, and we'll 
> > > assert
> > > fail.
> > 
> > NAK with this rationale.
> > 
> > brw_fs*.cpp is _only_ for SIMD8 (or SIMD16) mode.
> > 
> > brw_vec4*cpp is for SIMD4x1/SIMD4x2 code.
> > 
> > Code in brw_fs_generator.cpp absolutely cannot run in SIMD4x2 mode.
> > 
> 
> I don't quite understand how the code works, but according to the comments in
> the code (which you reviewed) we take this path on SKL. See
> fs_visitor::lower_uniform_pull_constant_loads and
> fs_generator::generate_uniform_pull_constant_load_gen7
> 
> In either event, the patch fixes the aforementioned assertion - if you have a
> better explanation and/or fix, I would be happy to adjust.

I apologize - I misunderstood.

This shader runs in SIMD8 mode.  But, we're using a SIMD4x2 mode sampler
message (even in SIMD8 mode), because we want to load a vector stored as
xyzw from the buffer into a register, but stored how we store uniforms
(also xyzw).  This has execsize 4, and you hit width/execsize assertions.

4,4,1 is effectively the same as 8,8,1 anyway, so it's the same data.

I would perhaps say:

We're using a SIMD4x2 sampler message, which has execsize 4, and so the
register width must be <= 4.  Use <4,4,1> regioning instead of <8,8,1>
regioning to access the same data but avoid tripping the assert.

Reviewed-by: Kenneth Graunke <kenn...@whitecape.org>

Thanks, Ben.

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to