Technically I'm sure the reasons were sound. I didn't write drivers, so I don't know, but I bet the architecture was dated and painful to work with. There were issues with code sharing across platforms, leading to unique bugs in Linux unrelated to the OS integration.
-
-
এই থ্রেডটি দেখান
-
The new driver promised to solve these issues and create a foundation for the future. And eventually it did. But short-term we were in for a reduction in available engineers to maintain the legacy driver, i.e. the one that was shipping.
এই থ্রেডটি দেখান -
As we were already behind NVIDIA, this was not ideal. Upon learning about this project I raised concerns about whether this was the right move or if it wouldn't be more effective to refactor the old driver. For us in Developer Relations this would mean reduced support for devs.
এই থ্রেডটি দেখান -
Others had similar concerns, including some engineers on the driver team. But it mostly fell on deaf ears. After initial promising progress, with a basic driver up and running and eventually running Doom3 at better performance than the legacy driver, problems started to mount.
এই থ্রেডটি দেখান -
The sheer size of the task started to become apparent. An OpenGL driver is a massive piece of software, and reimplementing every single extension and nuance of the OpenGL spec, plus decades of accumulated workarounds for broken apps and games just took a lot of time.
এই থ্রেডটি দেখান -
Soon the entire OpenGL team was on the new driver and the legacy driver was not maintained unless a request came directly from Id Software or high profile pro apps. Lesser known gamedevs or app developers were out of luck. Feature requests was not to think about.
এই থ্রেডটি দেখান -
Since the new driver ran Doom3 faster it ended up being shipping in parallel with the legacy driver. If you launched Doom3, it would pick the new driver. But anything else got the legacy driver, because the new driver was still lacking fundamental functionality.
এই থ্রেডটি দেখান -
For a year or two almost all OpenGL requests were ignored. I entered everything into the bug database as usual, corresponded with devs and tried really hard to come up with workarounds where possible. Getting OpenGL driver engineer time was very hard.
এই থ্রেডটি দেখান -
My favorite go-to OpenGL driver guy grew increasingly frustrated over not being able to help me and the direction the team had taken. We tried really hard to sneak in some support on the side, and he submitted bug fixes together with unrelated work he was allowed to do.
এই থ্রেডটি দেখান -
It became almost comical in the end, and he'd be like "oh yeah, I'm totally beginning to see this issue in professional apps" as he sneaked in a fix or feature for gamedevs.
এই থ্রেডটি দেখান -
Unfortunately, he eventually grew tired of all this and left the company. Slowly but surely the driver eventually got up and running and could run more and more games and apps, but inevitably, the performance advantage of the initially very slim driver also began to shrink.
এই থ্রেডটি দেখান -
At some point, as it still looked like it would be a while before the legacy driver could be removed, some of the optimizations in the new driver were backported into the legacy driver. The legacy driver now ran Doom3 faster than the new driver.
এই থ্রেডটি দেখান -
Of course, eventually the new driver was up and running and the old driver could be phased out. But at that point we had accumulated another couple of years that we were behind NVIDIA. Performance eventually came along, but we had essentially not had any new extensions for years.
এই থ্রেডটি দেখান -
By the time I left AMD the trailing issues from this experience were still very much present. I can't help but wonder how good the old driver could've been if all these efforts had gone into fixing that instead. Even looking back today 14 year later I'm not sure it was worth it.
এই থ্রেডটি দেখান
কথা-বার্তা শেষ
নতুন কথা-বার্তা -
-
-
Fun read! How come you made exceptions for particular games instead of forcing them to follow standards of GL? Am I missing smth?
-
Are you referring to the "decades of broken games and apps", or are you thinking about Doom3?
-
There were no particular issues in terms of GL compliance in Doom3 AFAIK. It was just the most popular real world shipping game at the time used for benchmarking, so optimizing for its usage pattern was important.
-
As for broken apps and games, IHVs generally don't have much power to force anyone to do anything. Sure, you can let the old game crash if it's non-compliant, but if it works on the competitor, gamers will blame your drivers.
-
So these things are handled on a case-by-case basis. Best is if the original developer can patch the game, but that rarely happens for old games that shipped years ago, and many will still have the unpatched game installed and not know about the patch.
-
If it's a popular game, you may have to implement some workarounds. I'm not a driver writer, but I would assume they have various mechanisms to alter driver behavior for specific games without affecting performance for unaffected games.
কথা-বার্তা শেষ
নতুন কথা-বার্তা -
লোড হতে বেশ কিছুক্ষণ সময় নিচ্ছে।
টুইটার তার ক্ষমতার বাইরে চলে গেছে বা কোনো সাময়িক সমস্যার সম্মুখীন হয়েছে আবার চেষ্টা করুন বা আরও তথ্যের জন্য টুইটারের স্থিতি দেখুন।
Refactoring, reworking and properly maintaining a code base is almost always the better option 