On Wed, 2009-01-07 at 11:48 -0800, Eric Anholt wrote: > On Wed, 2009-01-07 at 10:07 +0000, Keith Whitwell wrote: > > On Wed, 2009-01-07 at 01:49 -0800, Eric Anholt wrote: > > > Here's a pair of patches I came up with tonight when looking at #18074 and > > > #14503. The first looks like we might end up with junk in a temporary if > > > we wrote it, did a masked texld, then wrote to it again with a destination > > > write mask. > > > > > > The second creates a mapping from register->Index to hardware temporary > > > registers. I don't have the apps in question, so I haven't tested it. > > > Searching for people reporting the message came up with these two bug > > > reports > > > plus cube, and I found that sauer did trigger it. However, sauer still > > > fails > > > on a bunch of its shaders due to texture indirections, so I can't place > > > accurate blame for the nasty rendering I see. > > > > Is the purpose of the second patch to advertise more temps than the > > hardware actually supports & then try and wiggle them all into hw regs > > by identifying live vs non-live regs? > > > > I guess one worry is that advertising greater capabilities than really > > exist may encourage some apps to switch to more complicated shaders > > (that really can't be squeezed into hardware) and end up on fallback > > paths where previously they would have been fine. > > > > I don't have specific examples to hand, but there have been equivalent > > issues in other situations -- if an app sees a certain capability > > advertised, it doesn't have any way of knowing that it only works under > > some circumstances & not others. > > We have to advertise at least 16 temps. However, the fog code eats some > of them. So we need to compress things down to hardware temps somehow, > and 32 ended up being the number of ->Index values I could handle in the > instructions with simple uint32 code. We do still end up with the > problem that someone using 32 temps and fog will exceed limits because > of how the accounting in Mesa works. > > We could also do better by throwing things that are live only between > phase boundaries into U regs instead of R regs, potentially getting us > up to 22 native temporaries live at a time. > > I understand the predictability concern for developers. But it comes > down to: Are we the exception in being unable to run shaders that the > hardware is capable of? These apps all work on ATI and NVIDIA.
It's not a big deal, just trying to illustrate the downside. It's reasonable to give it a try & see what happens. Maybe advertising a number that you're likely to have *some* chance of being able to actually translate to hardware (eg 22) in the event that a shader tries to use all available regs would make sense. Maybe it's also possible to improve Mesa's fog code? Probably not high on anybody's priority right now. Keith ------------------------------------------------------------------------------ Check out the new SourceForge.net Marketplace. It is the best place to buy or sell services for just about anything Open Source. http://p.sf.net/sfu/Xq1LFB _______________________________________________ Mesa3d-dev mailing list Mesa3d-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mesa3d-dev