Keith wrote: > On Fri, 2009-07-24 at 11:35 -0700, Zack Rusin wrote: > > On Friday 24 July 2009 14:21:35 José Fonseca wrote: > > > But in this step 1 you don't plan to embed the vector width and AoS vs > > > Soa in TGSI, right? > > > > No, nothing changes at that layer. > > Essentially LLVM is completely invisible to drivers and TGSI representation > > stays exactly the same. > > Everything is the same but the TGSI code that comes from GLSL or OpenCL C is > > highly optimized. > > > > The software driver is obviously the special case here because that one > > already has a very good hardware LLVM driver (x86 code-generator). And for > > softpipe step 1 is of little importance because softpipe is incredibly slow > > executing fragment shaders with 5 instructions so the fact that complicated > > shaders will have 20 instead of 100 instructions is of little practical > > significance there ("this app is running at 0.9fps instead of 0.1fps > > now!!!"). > > Which means that you could short-circuit to step #2. But that really is a > > separate problem that needs a separate project (aka. "making softpipe fast" > > project). > > I think a fast software rasterizer project would be better described as > "create a gallium driver targetting LLVM" (as opposed to optimizing > softpipe), as softpipe fills a pretty useful niche in its current form. > > Thinking of LLVM as "the hardware" has a couple of positive > psychological implications -- most importanly that we are in the > business of programming LLVM to do rasterization, rather than just using > it to provide some niche fastpaths in an otherwise complete software > rasterizer. > > Below a certain level (be it triangle or batch of quads or even vertex > buffer), everything should be handled by LLVM-generated code, in the > same way we would hand off to hardware at a given level... > > There at least four key places where we want to generate code (TGSI > shaders are only one of them), and we want to choose plumbing between > them which is optimal for however llvm turns out to require it -- all of > which means that in such a driver LLVM won't be hidden behind shader > opcodes, but will be completely in the foreground.
I couldn't agree more. I've forked softpipe and commited the LLVM based pixel packing/unpacking code I was working on, into a new branch, gallium-llvmpipe. Jose ------------------------------------------------------------------------------ _______________________________________________ Mesa3d-dev mailing list Mesa3d-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mesa3d-dev