Depuis son annonce lors de la Game Developers Conference 2014, DirectX 12 était annoncé comme compatible avec toutes les cartes supportant DirectX 11. Mais voilà, quelques semaines après sa sortie, nous sommes en droit de nous poser quelques questions vis à vis de la compatibilité réelle de notre matériel…
Avant de nous lancer dans des explications poussées, il faut bien discerner le support d’un API et de ses composantes. Tout d’abord, le support de l’API: Nvidia a annoncé que toutes les cartes depuis Fermi (série 400) seront compatibles tandis qu’AMD de son côté, nous indique que tous les GPU utilisant GCN (serie HD 7000) supporteront l’API de Microsoft.
Entrons ensuite dans le cœur du problème, le support des fonctionnalités et des différents niveaux de DirectX12 ou plus précisément de sa composante 3D Direct3D. Les composantes introduites avec DirectX12 et 12.1 se nomment respectivement Direct3D 12_0 et Direct3D 12_1 et ce sont ces dernières qui apportent leur lot de nouveautés (Stackage de mémoire en configuration Bi-GPU, Faible coût en CPU etc…) et donc, ce sont ces dernières qui vont nous intéresser…
Restons donc dans le vif du sujet: Toutes les cartes (actuelles) sont elles compatibles avec D3D 12_0/1?
Non. Du moins pas les « anciennes générations » de GPU. Et cela tant chez Nvidia que chez AMD… Chez la marque au caméléon, seul les GPU Maxwell 2 (séries 900) supportent D3D 12_0/1, les GPU Maxwell 1 (GTX 750/ti) passent eux sous Direct3D 11_1 et les GPU Kepler restent sur Direct3D 11_0. Chez les rouges, c’est plus compliqué (ou moins simple): les GPU Tahiti, Pitcairn, Oland et Cap Verde (Soit les R9 280/X, 270/X, 370/X, 265 et les R7 250/X) restent sur le niveau 11_1 de Direct3D tandis que tout les autres passent sous D3D 12_0 mais aucun ne passe sous D3D 12_1.
Le problème vient des MMU (Memory Management Unit), présents à l’intérieur des cartes, qui doivent être « flexibles » pour pouvoir supporter différentes versions de Direct3D. Or, dans les cartes cités précédemment, les MMUs ne sont pas flexibles et ne sont donc pas aptes à supporter la nouvelle version de D3D.
Conclusion:
Sur le papier, DX12 était annoncé comme compatible avec toutes les cartes DX11 mais seulement voilà, la grande majorité des GPUs AMD de série 200 ne sont pas compatibles avec la composante 3D de DX12 et les GPUs de série 700 de Nvidia non plus. En théorie, rien de très dérangeant pour l’instant mais lorsque les premiers jeux DX12 vont sortir, les configurations bi-GPU non compatibles D3D 12_0 et/ou avec de petits CPU vont commencer à montrer des faiblesses car les développeurs pourront créer des jeux utilisant beaucoup de Vram et beaucoup de ressources CPU. Un autre aspect plus axé graphismes est l’absence du support de D3D 12_1 chez AMD. En effet, ce dernier introduit des effets graphiques particulièrement intéressants que seul Nvidia peut exploiter actuellement.
Wait & see
Quand est il de la série 800 (pour les portables) de chez Nvidia ?
Etant donné que la série 800 est composé (à l’exception de la 860M) de GPU Kepler et donc ne sont pas compatibles. la 860M elle utilise un GPU Maxwell 1 et donc n’est pas compatible non plus.
Bonjour, dans votre article, vous indiquez « Les composantes introduites avec DirectX12 et 12.1 se nomment respectivement Direct3D 12_0 et Direct3D 12_1 et ce sont ces dernières qui apportent leur lot de nouveautés (Stackage de mémoire en configuration Bi-GPU, Faible coût en CPU etc…) et donc, ce sont ces dernières qui vont nous intéresser… »
Cette affirmation est fausse, l’API bas niveau, les optimisations CPU et multi-GPU ne sont pas liées aux feature level 12_0 et 12_1.
Vos conclusions sont donc erronées ou devraient en tout cas être bien plus nuancées.
Voir cet article pour plus de détail : http://www.extremetech.com/extreme/207598-demystifying-directx-12-support-what-amd-intel-and-nvidia-do-and-dont-deliver
Bonjour,
Je viens de lire l’article que vous aviez mentionné et je ne vois aucun passage qui infirme ce que j’ai écrit, si vous voulez citer un passage en particulier, faites-le svp.
Bonsoir, dans votre article vous indiquez « la grande majorité des GPUs AMD de série 200 ne sont pas compatibles avec la composante 3D de DX12 et les GPUs de série 700 de Nvidia non plus ». On comprend que les cartes plus anciennes ne profiteront pas du tout de directx12, mais ce n’est absolument pas le cas, je site l’article dont j’ai mis le lien plus haut :
« When AMD, Nvidia, and Intel talk about supporting DirectX 12 on older hardware, they’re talking about the features that matter most — lower-overhead APIs, better CPU utilization, and multi-GPU functionality. The actual feature levels that define 12_1 as being different from 11_0 are interesting and useful in certain scenarios, but they aren’t the capabilities that will truly shape how gamers experience gaming with the API. »
J’ai peut-être mal compris votre article, mais il me semble qu’il simplifie un peu trop la notion de « compatibilité » dans le cas présent. Les cartes « anciennes » profiteront bien des améliorations les plus importantes de dx12 rappelées plus haut, mais ne seront effectivement pas capable d’afficher les effets créés spécifiquement pour les carte supportant les « feature level » 12_0 et 12_1).
Par ailleurs, vous dites « Les composantes introduites avec DirectX12 et 12.1 se nomment respectivement Direct3D 12_0 et Direct3D 12_1 et ce sont ces dernières qui apportent leur lot de nouveautés (Stackage de mémoire en configuration Bi-GPU, Faible coût en CPU etc…) », alors que l’article de extremetech dit précisément l’inverse : « It’s important to remember that the multi-threading and multi-GPU capabilities of DirectX 12 that we’ve seen previewed to-date (and demonstrated via Mantle) are still completely available to every feature level. », y compris pour les cartes ne supportant que les « feature level » 11 donc.
« One of the problems with identifying which GPUs support which features is the confusion between DirectX API support and feature level support. » Votre article alimente la confusion dont il est question ici. Vous parlez de « comptabilité avec dx12 », alors qu’il faudrait différencier la compatibilité avec l’API dx12, et le support ou non des des features level 12.
Une carte fermi par exemple sera bien « compatible » avec nouvelle l’API, puisqu’elle profitera bien des améliorations liées aux accès bas niveaux, à l’utilisation CPU et au optimisation multi GPU, mais ne sera pas capable d’afficher des effets créés pour les feature level 12.
Pour compléter mon message précédent, cet article explique très bien la nuance entre les feature level et l’importance de ne pas simplement parler de « compatibilité avec directX 12 »:
« The reference DirectX 12 API (Feature Level 11_0) has performance targeted features while the other two level deliver graphical improvement and this is what really matters in improving the games visually. The feature level 12_0 comes with Tiled Resources, Typed UAV Access and Bindless Textures support. Feature Level 12_1 has the Raster Order Views, Conservative Raster and Volume Tiled Raster enabled on the API. »
http://wccftech.com/amd-confirms-gcn-cards-feature-full-directx-12-support-feature-level-111-gcn-10-feature-level-120-gcn-1112/
Vous m’excuserez mais je ne modifierais mon article que si de réels benchmarks sortent car à l’heure actuelle, il n’y à rien de sûr. Merci de votre compréhension.
Pas de problème :).
J’attends moi aussi des tests pratiques, surtout sur les cartes d’anciennes générations justement (j’ai une geforce 670).
Je voulais juste souligner que la réponse à la question de la compatibilité avec dx12 pouvait être plus subtile que simplement « oui » ou « non ».
Bonne journée.