[Mesa-dev] new i965g pipe driver for Intel GEN6 (and later)

Chia-I Wu olvaffe at gmail.com
Wed Dec 12 21:37:53 PST 2012

Hi Marek,

On Thu, Dec 13, 2012 at 8:58 AM, Marek Olšák <maraeo at gmail.com> wrote:
> If you want a piece of advice... it would be great to extend gallium
> to allow the GLSL IR to be passed to drivers directly. Once that's
> done, I think you can copy their shader codegen as-is with all
> optimizations or even share it. Also, I don't think Intel will move to
> Gallium if they can't use the GLSL IR.
The toy compiler in the driver will remain a toy.  It may be still
years away, but I always want to work on an LLVM backend for GEN, and
move everything to LLVM IR.  Now that Intel is also considering an
LLVM-based compiler, it may happen sooner.
> I think Intel are afraid that Gallium adds additional CPU overhead. As
> long as the constant state objects and resource views contain GPU
> command buffers ready to be emitted, there is no state translation and
> validation on the driver side.
I have not done any profiling or optimization so far.  But this is
definitely one of the things that needs to be fixed.
> Marek
> On Wed, Dec 12, 2012 at 11:41 PM, Chia-I Wu <olvaffe at gmail.com> wrote:
>> Hi list,
>> I've been working on i965g, a new pipe driver for Intel GEN6 (and
>> later), for a while now.  I would like to know if there is any
>> interest in it and if it can be merged upstream.  The code is
>> currently available here
>>   https://github.com/olvaffe/mesa/tree/i965g
>> The project was started for my own fun and for self-learning.  It was
>> later sponsored by LunarG.  While it is still new, it does work for
>> many of mesa-demos.  Right now it passes 6884 of 7547 piglit
>> quick-driver.tests.  I also tried it with gnome-shell, OpenArena, and
>> Nexuiz, and they all seem to work.
>> The driver is written from scratch.  However, it follows classic i965
>> driver for many of the design decisions.  It comes with its own toy
>> compiler to translate TGSI tokens to GEN instructions.  The compiler
>> still lacks several functions (register spilling and most TGSI
>> indirections), but more importantly, almost no optimization is
>> performed.  It thus generates much worse code comparing to that
>> generated by classic i965.
>> I rebased the code tonight and cleaned up the history.  The branch now
>> has 24  new commits on top of master
>>       winsys/intel: new winsys for intel
>>       i965g: new pipe driver for Intel GEN6+
>>       i965g: add debug flags settable through I965_DEBUG
>>       i965g: hook up pipe_screen param and fence functions
>>       i965g: add functions to translate pipe enums to HW enums
>>       i965g: hook up pipe screen format functions
>>       i965g: hook up pipe screen resource functions
>>       i965g: add command parser
>>       i965g: hook up pipe context flush function
>>       i965g: add functions to manage shaders
>>       i965g: hook up pipe context state functions
>>       i965g: hook up pipe context blit functions
>>       i965g: hook up pipe context transfer functions
>>       i965g: hook up pipe context query functions
>>       i965g: add GEN6 GPE
>>       i965g: add GEN6 3D context
>>       i965g: hook up pipe context 3D functions
>>       i965g: add support for timer/occlusion/primitive queries
>>       i965g: hook up pipe context video functions
>>       i965g: hook up pipe context GPGPU functions
>>       i965g: add a toy shader compiler
>>       i965g: compile VS and FS with the toy compiler
>>       i965g: support the new driver in various targets
>>       i965g: add to --with-gallium-drivers
>> It is quite self-contained.  If preferred, I can send the patches to the list.
>> Oh, and my account on fdo is disabled because of my own mistake[1].  I
>> contacted some of the developers in the thread but did not get any
>> response.  Could anyone help me with that, or how do I have it
>> re-enabled?
>> [1] http://lists.freedesktop.org/archives/mesa-dev/2012-July/023901.html
>> --
>> olv at LunarG.com
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev

olv at LunarG.com

More information about the mesa-dev mailing list