On Fri, 2009-07-24 at 10:54 -0700, Zack Rusin wrote:
> On Friday 24 July 2009 13:33:22 José Fonseca wrote:
> > > To be honest I don't think that using LLVM from C for our purposes is a
> > > good idea. Mainly because it will be impossible to do because backends
> > > (the actual code-generators for given hardware) will need to be C++
> > > anyway so we'll again end up with a mix of C++ and C. It's just that the
> > > interface from C++ is a lot nicer than the stuff that was wrapped in C.
> >
> > I understand that the C bindings might be more cumbersome and limited.
> > But I don't understand how using or not avoids the mixing C and C++: if
> > LLVM is in C++ and Gallium is in C something will have to make brigde.
> > It is a matter of what and how thick that bridge is.
> 
> Yea, gallivm is that bridge. It's compiled with C++, but exposes a C 
> interface 
> to the rest of Gallium. This is essentially to make all Gallium interfaces 
> uniformly C (plus to hide a lot of LLVM complexity).
> 
> Of course it's still impossible to write fully-fledged LLVM driver without 
> C++, 
> as the code-generator will have to be in C++. (that code-generator could 
> technically be a separate module, in fact living in a repository of its own 
> though).
> 
> But the short-term scenario that we're looking at right now is not:
> TGSI->LLVM->Hardware
> it's
> LLVM->TGSI->Hardware.

I'm actually more interested in the former, and that was what I had in
mind so far.

> That's what OpenCL will be doing and that's what we want to do for GLSL as 
> well.
> So the idea is that the OpenCL compiler compiles C into LLVM IR and the GLSL 
> compiler compiles GLSL into LLVM, then we run all the LLVM optimization 
> passes 
> on that and then gallivm translates LLVM IR into TGSI.
> The benefit of this approach is that our drivers keep working as they did, 
> code-generation is still trivial, we still get LLVM optimizations and our 
> interface is uniformly C everywhere.
>
> So that'd be step 1 and step 2 would be experiment with direct hardware 
> generation from LLVM, but thanks to this approach our biggest woe (lack of 
> decent optimization framework for the more and more complicated shaders that 
> we're seeing) goes away without modifications to the drivers at all which I 
> think is fairly neat.

Yes, it seems a good stepping stone.

But in this step 1 you don't plan to embed the vector width and AoS vs
Soa in TGSI, right?

Jose


------------------------------------------------------------------------------
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to