JohnH said:Which cheat "angle" ?
JohnH said:Why is the OGL2.0 approach to HLSL parsing not correct at this time ?
...
2) IHV's can individually tweak the syntax ("illegally") for there own devious reasons
JohnH said:Which cheat "angle" ?
JohnH said:Why is the OGL2.0 approach to HLSL parsing not correct at this time ?
...
2) IHV's can individually tweak the syntax ("illegally") for there own devious reasons
No. It's a direct result of the forced low-level standard intermediate format. It's not a bug, it comes from a design decision.DeanoC said:And thats a bug in the HLSL compiler, in the same way that a GLSLANG compiler (and sometimes certainly will) could produce code that 'forgets' to us a hardware instruction. All code will have bugs...DemoCoder said:What's the NV30 driver to do? Try to "recognize" a sequence of 8 instructions and assume it's a SINCOS?
D3DX has bugs. Drivers that compile from the assembly to the machine probably have some bugs.We need to remove the potential for drivers bugs not increase it, else PC games development costs are going to sky rocket. Thats my main issue for GLSLANG over D3DX (HLSL is a static library, its not a part of the driver/runtime. The version I ship is the version everybody uses).
DeanoC said:DemoCoder said:What's the NV30 driver to do? Try to "recognize" a sequence of 8 instructions and assume it's a SINCOS?
Adding support for high level function instrinics isn't a return to fixed function, since there is usually an adequate software emulation of these functions (e.g. SINCOS), it's simply giving the driver the opportunity to detect and replace a SINCOS() call to native HW instead of letting the silicin set idle and burning up regular vector unit slots.
But the version I ship of D3DX (linked in) has a contained set of bugs. No more/no less. When you really on an external package that realys on on user assistance to be replaced (i.e. drivers) you have to assume that the user didn't do it. In otherwise if you write a good game today, you are working around every bug in every driver for a least the last 3 years.Chalnoth said:D3DX has bugs. Drivers that compile from the assembly to the machine probably have some bugs.
By combining these two things into one software package, I'd say you're reducing the chance for bugs to occur.
It's kind of like the striped raid format. Individually, each hard drive has the same chance of failure. But once you stripe them, a failure in either hard drive can cause total data loss, doubling your chance of data loss. If you want data security, you don't want to spread out your data across multiple drives.
Similarly, if you want fewer bugs, you don't want to spread out your programming among multiple companies.
DemoCoder said:You're missing the point, DX9 is simply missing lots of "instructions" for functions which could be accelerated by HW. Various presentations from NVidia and ATI even advise developers against using the DX9 assembly macros, and compiler writers have shyed away from it.
Is it really a compiler bug, or is it intentional on MS's part. Anyway, in the OGL2.0 case, no one would have to wait for MS to release a patch, and for developers to "relink" their applications with recompiled shaders. NVidia, ATI, et al, would simply release new driver versions that fix the performance bugs as they get embarrassed when competitors fix them.
How long must we wait for the Microsoft monopoly to fix the macro expansion "bugs" in FXC? Will the fix be available by DX10? In the next 3 months? Next 6 months?
All you've done, as you state, is added a set of "fixed" bugs to the system. There's no need for those bugs to be there.DeanoC said:If you want to ship a game on PC that works on most peoples cards you have to work around all drivers bugs for your entire range of supported cards. With D3DX at least the bug test matrix is fixed at shipping time, the very real effect is that saves alot of money.
Chalnoth said:And game developers have, for quite some time, asked people do update their drivers when problems occur. There's not that much reason to pander to people who don't update their drivers. I've seen many a game developer request that users update their drivers.
Chalnoth said:Oh, one side note:
Business decisions coming in front of developer decisions are what cause crappy games. The popular games are the ones where the developers care less about money (in the short-term) and more about getting the game right.
I think what you're seeing is a result of publishers being very short-term gain oriented. This is a disease with the American business culture, and many businesses suffer because of it.
DemoCoder said:How long must we wait for the Microsoft monopoly to fix the macro expansion "bugs" in FXC? Will the fix be available by DX10? In the next 3 months? Next 6 months?
DeanoC said:It makes no difference if a bug is fixed in a driver, once its there you HAVE to work around it. You simple cannot ask the user to install new drivers.
Having ATI or NVIDIA fix it, doesn't matter if it ships in a WHQL driver its an issue for the entire life of the card.
Joe DeFuria said:DemoCoder said:How long must we wait for the Microsoft monopoly to fix the macro expansion "bugs" in FXC? Will the fix be available by DX10? In the next 3 months? Next 6 months?
Yeah, probably about the same time GLSLang support is actually available at all?
Well, given that a number of games have shipped with GLSetup, obviously not all publishers have that rule.DeanoC said:Request is fine, but many publishers will not let you ship a game, if it crashes or has visual errors on a WHQL driver.
I don't make the rules, thats publishers for you. Different publishers different rules, also the size/name of the developers gives you more control.
DemoCoder said:Joe DeFuria said:DemoCoder said:How long must we wait for the Microsoft monopoly to fix the macro expansion "bugs" in FXC? Will the fix be available by DX10? In the next 3 months? Next 6 months?
Yeah, probably about the same time GLSLang support is actually available at all?
Or when those HLSL DX9 games like HL2 are shipped?
Come on Joe, you can do better than that.
You know that once OGL2.0 compliant cards are shipped, NV and ATI drivers will be updated much more regularly than DX9 releases,
and since the D3DX compiler is statically linked, the MS fixes won't help end users at all.
So the last resort is to claim that there is a business case to statically linking the compiler. But if that's true, there is a business case to linking the entire WHQL driver for all cards, so you could ship a CD with an entire closed-world environment, tried and tested, by QA -- a console-like approach.
Obviously, that's absurd.
So there's a limit to how far you can take the "business case" argument.
Joe DeFuria said:and since the D3DX compiler is statically linked, the MS fixes won't help end users at all.
Nor will the MS fixes break the end-user's stuff.
I certainly hope that you believe that stability and lack of flexibility has certain advantages for consumers?
Both the GL and DX models strike a balance between these two extremes. For the consumer space, I simply prefer the balance be tipped toward stability.
DemoCoder said:But MS's "fixes" do introduce bugs, only D3DX changes won't. On the other hand, to work around D3DX limitations, IHVs have to write far more intelligent drivers to perform optimizations, so all the MS model does is make more work for the compiler authors...
and increase the change that IHVs will ship a buggy DX9 driver optimizer.
Yes, I own every major console ever made. On the other hand, I own a PC for a reason. If I only wanted to play console games, I'd stick to using my PC for apps.
Moreover, the fallacy here is that the MS model will significantly reduce the cost of development and number of bugs.
So you're prepared to prove that having to "work around" the limitations of DX9 intermediate assembly will make IHVs write less buggy drivers? It sure worked in NVidia's case.
DemoCoder said:<SNIP>
How about this business case: OpenGL is easier to use and develop in, and you don't need to pay MS $$$ for a dev environment and MSDN access to use it.
Chalnoth said:Well, given that a number of games have shipped with GLSetup, obviously not all publishers have that rule.DeanoC said:Request is fine, but many publishers will not let you ship a game, if it crashes or has visual errors on a WHQL driver.
I don't make the rules, thats publishers for you. Different publishers different rules, also the size/name of the developers gives you more control.
GLSetup is effectively the alternative to WHQL: it just makes sure you have up-to-date OpenGL drivers. As far as I know, WHQL doesn't test OpenGL functionality (well, it may test core functionality, but that hardly matters today...).
I think it's the exact opposite.Joe DeFuria said:No one is arguing that the GL Model doesn't have advantages. Both GL and DX models have some balance between central control / stability and flexibility. For the consumer environment, I just believe that the DX model's balance (toward stability) is better suited. Not that GL is utter crap or something.
DeanoC said:DemoCoder said:<SNIP>
How about this business case: OpenGL is easier to use and develop in, and you don't need to pay MS $$$ for a dev environment and MSDN access to use it.
Don't change the subject to MS is an evil monopoly. I couldn't care less who makes the tools I use... Just as long as they let me make better games.
IF my fears are unfounded (that there aren't many bugs caused by every vendor doing it all themselves including the small IHVs) fine, you win the argument as the techinical advantages will outway the issue. I have no problem using the best tool to do my job.
BUT I was answering you honestly that as a professional I CANNOT recommand GLSLANG until I've seen this issue for real. Too much money rests on it, and making a mistake like this would cost people there jobs.
GLSLANG deosn't exist in any shipping driver, so for now I have no way of judging number of bugs. With the amount of money we are talking about I'll take the safer option that still gives me a fair amount of the performance the hardware has.