On 08/20/2014 11:58 AM, Tom Stellard wrote: > On Wed, Aug 20, 2014 at 11:13:13AM -0700, Kenneth Graunke wrote: >> On Wednesday, August 20, 2014 06:41:08 PM Michel Dänzer wrote: >>> On 20.08.2014 00:04, Connor Abbott wrote: >>>> On Mon, Aug 18, 2014 at 8:52 PM, Michel Dänzer <mic...@daenzer.net> wrote: >>>>> On 19.08.2014 01:28, Connor Abbott wrote: >>>>>> On Mon, Aug 18, 2014 at 4:32 AM, Michel Dänzer <mic...@daenzer.net> >>>>>> wrote: >>>>>>> On 16.08.2014 09:12, Connor Abbott wrote: >>>>>>>> I know what you might be thinking right now. "Wait, *another* IR? Don't >>>>>>>> we already have like 5 of those, not counting all the driver-specific >>>>>>>> ones? Isn't this stuff complicated enough already?" Well, there are >>>>>>>> some >>>>>>>> pretty good reasons to start afresh (again...). In the years we've been >>>>>>>> using GLSL IR, we've come to realize that, in fact, it's not what we >>>>>>>> want *at all* to do optimizations on. >>>>>>> >>>>>>> Did you evaluate using LLVM IR instead of inventing yet another one? >>>>>> >>>>>> Yes. See >>>>>> >>>>>> http://lists.freedesktop.org/archives/mesa-dev/2014-February/053502.html >>>>>> >>>>>> and >>>>>> >>>>>> http://lists.freedesktop.org/archives/mesa-dev/2014-February/053522.html >>>>> >>>>> I know Ian can't deal with LLVM for some reason. I was wondering if >>>>> *you* evaluated it, and if so, why you rejected it. >>> >>> First of all, thank you for sharing more specific information than >>> 'table-flipping rage'. >>> >>> >>>> * LLVM is on a different release schedule (6 months vs. 3 months), has >>>> a different review process, etc., which means that to add support for >>>> new functionality that involves shaders, we now have to submit patches >>>> to two separate projects, and then 2 months later when we ship Mesa it >>>> turns out that nobody can actually use the new feature because it >>>> depends upon an unreleased version of LLVM that won't be released for >>>> another 3 months and then packaged by distros even later... >>> >>> This has indeed been frustrating at times, but it's better now for >>> backend changes since Tom has been making LLVM point releases. >> >> Yeah - absolutely. >> >>> As for the GLSL frontend, I agree with Tom that it shouldn't require >>> that much direct interaction with the LLVM project. >>> >>> >>>> we've already had problems where distros refused to ship newer Mesa >>>> releases because radeon depended on a version of LLVM newer than the >>>> one they were shipping, [...] >>> >>> That's news to me, can you be more specific? >>> >>> That sounds like basically a distro issue though, since different LLVM >>> versions can be installed in parallel (and the one used by default >>> doesn't have to be the newest one). And it even works if another part of >>> the same process uses a different version of LLVM. >> >> Yes, one can argue that it's a distribution issue - but it's an extremely >> painful problem for distributions. >> >> For example, Debian was stuck on Mesa 9.2.2 for 4 months (2013-12-08 to >> 2014-03-22), and I was told this was because of LLVM versioning changes in >> the other drivers (primarily radeon, I believe, but probably also llvmpipe). >> >> Mesa 9.2.2 hung the GPU every 5-10 minutes on Sandybridge, and we fixed that >> in Mesa 9.2.3. But we couldn't get people to actually ship it, and had to >> field tons of bug reports from upset users for several months. >> >> Gentoo has also had trouble updating for similar reasons; Matt (the Gentoo >> Mesa package mantainer) can probably comment more. >> >> I've also heard stories from friends of mine who use radeonsi that they >> couldn't get new GL features or compiler fixes unless they upgrade both Mesa >> /and/ LLVM, and that LLVM was usually either not released or not available >> in their distribution for a few months. >> >> Those are the sorts of things I'd like to avoid. The compiler is easily the >> most crucial part of a modern graphics stack; splitting it out into a >> separate repository and project seems like a nightmare for people who care >> about getting new drivers released and shipped in distributions in a timely >> fashion. >> >> Or, looking at it the other way: today, everything you need as an Intel or >> (AFAIK) Nouveau 3D user is nicely contained within Mesa. Our community has >> complete control over when we do those releases. New important bug fixes, >> performance improvements, or features? Ship a new Mesa, and you're done. >> That's a really nice feature I'd hate to lose. >> > > It has been a challenge to match versions of LLVM and Mesa for radeonsi, > but as Michel mention this has been made easier now that we are doing > LLVM point releases. > > However, as I mentioned before if we were using LLVM IR as a common IR > it is unlikely that there would be any new features in Mesa that would > depend on changes in LLVM. The only thing we would need to modify LLVM > for would be: > - Extending the C API > - Bug fixes for optimization passes > - Optimization pass improvements > > And remember all these changes would be for improving common code that > is shared between drivers. All of the important compiler features would > still go into the driver specific backends, which for most drivers are a > part of Mesa. > > Even for a big new feature like geometry shaders you wouldn't need > to make any modifications to LLVM to add it to the GLSL compiler in > Mesa. The only reason radeonsi has such a hard dependency on LLVM > is because the entire compiler is part of LLVM.
Speaking of new shader stages... how would LLVM handle the 'precise' keyword in tesselation shaders? I can envision ways to handle this in an IR that we control, but it's less obvious how we would handle it in LLVM or another external compiler package. > -Tom > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev