Profile picture
Emil Persson @_Humus_
, 15 tweets, 3 min read Read on Twitter
Gather 'round kids, story time.
I was at ATI (nowadays AMD) back in 2004-2007. At the time ATI had the reputation for poor OpenGL drivers. NVIDIA was ahead in perf and features. They decided to rewrite the OpenGL driver from scratch. A terrible decision.
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.
Missing some Tweet in this thread?
You can try to force a refresh.

Like this thread? Get email updates or save it to PDF!

Subscribe to Emil Persson
Profile picture

Get real-time email alerts when new unrolls are available from this author!

This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member and get exclusive features!

Premium member ($3.00/month or $30.00/year)

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!