2 ms·
> The idea that nVidia and AMD are detecting your games, and then replacing shaders, optimizing around bugs, etc should be absolutely terrifying. Actually it's
by jallmann 12y ago
> The idea that nVidia and AMD are detecting your games, and then replacing shaders, optimizing around bugs, etc should be absolutely terrifying.
Actually it's par for the course, if you care about backwards compatibility. Raymond Chen has many, many stories about the absolutely heroic lengths Microsoft has gone to ensure that popular, yet broken, programs continue to work smoothly between Windows upgrades [1][2][3][4][5].
On Depending on Undocumented Behavior:
[1] http://blogs.msdn.com/b/oldnewthing/archive/2003/12/23/45481.aspx http://blogs.msdn.com/b/oldnewthing/archive/2003/12/23/45481...
[2] http://blogs.msdn.com/b/oldnewthing/archive/2003/10/15/55296.aspx http://blogs.msdn.com/b/oldnewthing/archive/2003/10/15/55296...
Why Not Just Block Programs that rely on Undocumented Behavior?
[3] http://blogs.msdn.com/b/oldnewthing/archive/2003/12/24/45779.aspx http://blogs.msdn.com/b/oldnewthing/archive/2003/12/24/45779...
Who cares about backwards compatibility? (A lot of people):
[4] http://blogs.msdn.com/b/oldnewthing/archive/2006/11/06/999999.aspx http://blogs.msdn.com/b/oldnewthing/archive/2006/11/06/99999...
Hardware breaks between upgrades, too:
[5] http://blogs.msdn.com/b/oldnewthing/archive/2003/08/28/54719.aspx http://blogs.msdn.com/b/oldnewthing/archive/2003/08/28/54719...
Joel Spolsky's (somewhat dated) "How Microsoft Lost the API War" gives a good overview of the above concerns:
[6] http://www.joelonsoftware.com/articles/APIWar.html http://www.joelonsoftware.com/articles/APIWar.html
- greggman 12y agoI'd argue there's also a bigger problem. There have never been conformance tests for OpenGL until recently. They finally wrote some for ES and then finally started backporting them to OpenGL. Worse, they rarely check the limits, only the basics. They also they didn't check anything related to multiple contexts. The point being the drivers are/were full of bugs on the edge cases. Testing works. If there were tests that were relatively comprehensive and that rejected drivers that failed the edge cases they'd gone a long way to mitigating these issues because the dev's apps wouldn't have worked. There's also just poor api design. Maybe poor is a strong word. Example, uniform locations are ints so some apps assume they'll be assigned in order then fail when they get to a machine where they're not. Another example, you're allowed to make up resource ids. OpenGL does not require you to call `glCreateXXX` just call `glBindXXX` with any id you please. But of course if you do that maybe some id you use is already being used for something else. So id=1 works on some driver but not some other. I'm excited about Vulkan but I'm a little worried it's actually going to make the driver bug issues worse. If using it in a spec compliant way is even harder than OpenGL and your app just happens to work on certain drivers other driver vendors will again be forced to implement workarounds.