- Jan 1, 2011
- 3,266
- 169
- 106
With the presence of Mantle and the upcoming release of DirectX 12 and Vulkan, it looks like DirectX 11's time is over. Yes, there will be a DirectX 11.3 available to developers who don't want to go to the trouble of coding close to the metal with DX 12, but all the developers who really focus on delivering the best, most advanced and detailed visual experience are set to be using the close-to-metal APIs.
So it makes me wonder. When DirectX 11 first came out, there was talk about how it would make multithreading easier than DirectX 10. From what I can tell, that multithreading was supposed to come from a feature called "deferred contexts" or "driver command lists". The feature never gained much use -- I think Civilization and Assassin's Creed games were a couple of the few that used them? I'm not entirely sure though. Not only did games not widely support it, but from what I've read AMD never enabled it in their drivers. Nvidia did, though, which is why the feature was enabled in some Nvidia-sponsored games. I've seen criticism of AMD on this forum for never supporting that feature. But looking back, did the feature really matter? It didn't grant Nvidia a decisive advantage in Civilization V, if indeed Civ V did support deferred contexts. Developers weren't exactly chomping at the bit to support it and pressuring AMD to enable support for it.
My guess is, the reason driver command lists never caught on with developers or AMD was because it wasn't worth the trouble. The performance benefits didn't warrant the complexity and effort it took to get the feature to work. AMD and developers like DICE were looking past deferred context to the more effective solution of an API that is closer to the metal altogether.
So, what do you all think? Was it a mistake for AMD to never enable driver command lists, or was their choice to avoid expending development resources on it and instead put their focus on upcoming close-to-the-metal APIs a wise one?
So it makes me wonder. When DirectX 11 first came out, there was talk about how it would make multithreading easier than DirectX 10. From what I can tell, that multithreading was supposed to come from a feature called "deferred contexts" or "driver command lists". The feature never gained much use -- I think Civilization and Assassin's Creed games were a couple of the few that used them? I'm not entirely sure though. Not only did games not widely support it, but from what I've read AMD never enabled it in their drivers. Nvidia did, though, which is why the feature was enabled in some Nvidia-sponsored games. I've seen criticism of AMD on this forum for never supporting that feature. But looking back, did the feature really matter? It didn't grant Nvidia a decisive advantage in Civilization V, if indeed Civ V did support deferred contexts. Developers weren't exactly chomping at the bit to support it and pressuring AMD to enable support for it.
My guess is, the reason driver command lists never caught on with developers or AMD was because it wasn't worth the trouble. The performance benefits didn't warrant the complexity and effort it took to get the feature to work. AMD and developers like DICE were looking past deferred context to the more effective solution of an API that is closer to the metal altogether.
So, what do you all think? Was it a mistake for AMD to never enable driver command lists, or was their choice to avoid expending development resources on it and instead put their focus on upcoming close-to-the-metal APIs a wise one?