[Mesa-dev] wider registers in llvmpipe

Jose Fonseca jfonseca at vmware.com
Wed Jul 18 08:35:35 PDT 2012



----- Original Message -----
> Am 18.07.2012 07:11, schrieb Marek Olšák:
> > On Wed, Jul 18, 2012 at 1:58 AM, Roland Scheidegger
> > <sroland at vmware.com> wrote:
> >> Am 17.07.2012 23:49, schrieb Stéphane Marchesin:
> >>> On Mon, Jul 16, 2012 at 11:43 AM, Jose Fonseca
> >>> <jfonseca at vmware.com> wrote:
> >>>> FYI, I've just pushed a branch named llvmpipe-wider-regs, which
> >>>> allows llvmpipe to leverage SIMD registers wider than 128bits.
> >>>>
> >>>> Unfortunately, performance-wise this doesn't change much, as
> >>>> llvmpipe performance is dominated by integer SIMD instructions,
> >>>> whereas currently the AVX instruction set currently only
> >>>> supports floating SIMD instructions.  Actually, often things
> >>>> will get slightly slower, as there are considerable overheads
> >>>> in piecing together the 256 floating point code paths and
> >>>> 128-bit integer code paths.
> >>>>
> >>>> The benefit for this change is foremost architectural: llvmpipe
> >>>> now makes less assumptions regarding the number of
> >>>> pixels/quads/etc that fit into a hardware register, a
> >>>> flexibility which will be necessary to get things like
> >>>> per-pixel LOD working properly.
> >>>>
> >>>> This barely touch files outside gallivm/draw/llvmpipe modules. I
> >>>> haven't tested i915g, r300g, so let me know if there are
> >>>> regressions / concerns. I'd like to merge this into master
> >>>> soon.
> >>>
> >>>
> >>> It regresses the following on i915g (and I suspect it will
> >>> regress on
> >>> llvmpipe also):
> >>> draw-vertices pass -> abort
> >>> draw-vertices-half-float pass -> crash
> >>> draw-vertices-half-float-user pass -> crash
> >>> draw-vertices-user pass -> abort
> >>>
> >>> The machine in question doesn't have AVX (or llvm 3.1 for that
> >>> matter).
> >>
> >>
> >> I've tested this with both llvm 3.1 and 2.9, with and without avx
> >> and
> >> draw-vertices and draw-vertices-half-float always pass with
> >> llvmpipe.
> >> I don't see the other two tests (draw-vertices-half-float-user and
> >> draw-vertices-user) in piglit.
> > 
> > Those are the same tests but with the first parameter being "user".
> > The test names in all.tests do not necessarily have to match the
> > executable filenames.
> 
> Ok. These pass too here with llvmpipe.

I can't reproduce the failures here neither, nor with softpipe + draw llvm

I also considered that this could be 32bits specific, but that doesn't seem to be the case.  It seems i915g specific AFAICT.

Stephane I'll gonna need to to provide more details (in particular, stack dump of the crashes, dumps w/ GALLIVM_DEBUG=tgsi,ir,asm environment var before/after this change, see if not advertise half float solve the issue) to pin point this. If you wanna open a bug and follow this on fdo that's fine by me.

Jose


More information about the mesa-dev mailing list