Les contenus liés aux tags GDC et DirectX

GDC: Nvidia met en avant son pilote Direct3D 11

Publié le 25/03/2014 à 01:35 par Damien Triolet

Durant la GDC, Nvidia n'a pas seulement parlé de Direct3D 12 mais a également tenu à revenir sur le travail qui a été fait au niveau de son pilote Direct3D 11, de manière à réduire autant que possible le coût de la gestion des commandes de rendu. Nvidia estime qu'il disposait depuis longtemps d'un petit avantage sur ce point par rapport à la concurrence et l'annonce de Mantle l'a incité à aller plus loin dans ce sens.

Ses ingénieurs ont ainsi mis les bouchées doubles pour réduire le coût de plusieurs fonctions de Direct3D 11 mais également pour peaufiner l'implémentation des "deferred contexts". Pour rappel, ceux-ci permettent aux développeurs d'implémenter un support du multi-threading au niveau de la préparation des commandes de rendu. Malheureusement, ils sont peu efficaces et difficiles à implémenter compte tenu des interactions hors de contrôle entre l'application, l'API et les pilotes.


Nvidia a cependant estimé qu'il y avait moyen de mieux faire. Sa première implémentation des "deferred contexts" était très sommaire mais fonctionnelle et un peu plus performante que l'émulation proposée directement par l'API en cas de non intégration dans les pilotes comme cela serait le cas du côté d'AMD. Même si l'implémentation de Nvidia restait supérieure, ses résultats n'étaient pas très enthousiasmants pour les développeurs, ce qui explique la mauvaise réputation de cette fonctionnalité de Direct3D 11 auprès des développeurs. La deuxième implémentation de Nvidia serait par contre nettement plus efficace et rendrait la fonctionnalité enfin réellement bénéfique, si bien entendu les développeurs y font appel.

Nvidia nous a présenté quelques slides qui mettent en avant des gains observés en interne, autrement dit à prendre avec des pincettes même si la tendance affichée est probablement réaliste :


Ces slides comparent les pilotes Catalyst 14.2 aux pilotes r331, r334 ainsi qu'à une nouvelle version de ses pilotes qui ne devrait plus tarder à sortir (r336 ?). Suite à ces différentes évolutions, Nvidia met en avant des réductions du coût CPU de plusieurs fonctions de D3D11 de l'ordre de 2x, 4x, 5x, voire 8x dans le cas le plus favorable.

Avec ces gains associés à l'amélioration du support des "deferred contexts", Nvidia estime pouvoir même surpasser la solution d'AMD en version Mantle dans Star Swarm et Thief. Bien entendu il s'agit probablement ici de cas très favorables plus que de moyennes représentatives, mais force est de constater que Nvidia a entrepris un réel effort au niveau de ses pilotes Direct3D 11. Mantle aura décidemment été bénéfique pour tous !

GDC: Direct3D 12 et support matériel, logiciel

Publié le 24/03/2014 à 19:38 par Damien Triolet

Durant les sessions de la GDC consacrées à Direct3D 12, Microsoft et ses partenaires se sont abstenus de rentrer dans trop de détails concernant le support matériel et logiciel. Nous avons cependant pu nous entretenir avec de nombreux ingénieurs et architectes de Microsoft et ses partenaires, qu'ils soient concepteurs de GPU ou de moteurs graphiques. Si tout le monde préfère éviter une déclaration officielle sur les points délicats, nous avons pu en apprendre un peu plus, notamment au sujet de ce qui devrait se passer pour Windows 7...

Il faut tout d'abord bien comprendre que Microsoft a dévoilé Direct3D 12 bien plus tôt dans son processus de développement qu'à l'accoutumée. Les détails sont ainsi toujours en cours de discussion et pourraient être amenés à évoluer même si tout le monde est d'accord pour nous dire que les points principaux sont fixés.


Pour finaliser les spécifications de son API, Microsoft explique avoir voulu intégrer beaucoup plus de retours de ses partenaires, notamment au niveau logiciel. Ainsi, des débuts de portage de moteurs vers Direct3D 12 ont été entrepris avant la finalisation de ses spécifications, de manière à profiter de cette expérience pour les fixer. Microsoft entend s'assurer d'éviter que de bonnes idées sur le papier deviennent des problèmes en pratique, et surtout, que les développeurs conservent leur préférence pour Direct3D dans le monde PC.

Une API avec un niveau d'abstraction globalement plus bas ouvre de nombreuses portes, donne bien plus de marge de manœuvre aux développeurs en faisant disparaître la plupart des limites actuelles. Sans rentrer dans le détail, Microsoft a cependant indiqué que certaines limites artificielles pourraient être imposées notamment pour éviter que les développeurs ne fassent des choses néfastes pour le rendement énergétique, un point important dans le cadre de l'utilisation de Direct3D 12 dans le monde des tablettes ou dans un futur Windows Phone. Microsoft profite à ce sujet de l'arrivée de Qualcomm dans le premier cercle des partenaires de développement de son API.

Selon plusieurs sources, Direct3D 12 et Direct3D 11 devraient continuer à évoluer en parallèle, tous les développeurs n'étant pas prêts à passer directement à un nouveau type d'API qui leur donne plus de responsabilité. Le niveau de support matériel devrait d'ailleurs être cette fois totalement découplé de la version de l'API. Ainsi il n'est pas impossible de voir de nouveaux niveaux de fonctionnalités pour Direct3D 11 qui s'arrête actuellement au 11_1.

Au niveau du support matériel de Direct3D 12, Microsoft a précisé qu'il était possible dès le niveau de fonctionnalité 9_3. Par contre, pour supporter Direct3D 12, en plus de supporter les fonctionnalités graphiques liées au niveau matériel minimum, l'architecture du GPU devra être capable de certaines choses. Le point principal est l'inclusion d'une MMU (Memory Management Unit) pour virtualiser et protéger la mémoire vidéo/système, ce qui est logique compte tenu de la manière dont fonctionne Direct3D 12. C'est la raison pour laquelle AMD et Nvidia ne peuvent pas proposer un support pour Direct3D 12 qui remonte aussi loin en arrière que leurs GPU de classe 9_3. Par contre dans le monde mobile il existe des GPU 9_3 relativement récents qui incluent une MMU et qui pourront donc supporter Direct3D 12. Rappelons qu'AMD a annoncé un support de la nouvelle API pour tous ses GPU GCN, Nvidia pour tous ses GPU depuis la génération Fermi et Intel pour les CPU Haswell. Dans le cas de Qualcomm, ses GPU récents sont capables du support et il sera proposé au cas par cas suivant les demandes de ses clients. Enfin, la Xbox One supportera Direct3D 12.

Y aura-t-il de nouveaux niveaux de fonctionnalités matérielles ? Bien entendu, Microsoft a d'ailleurs cité quelques exemples dès sa première conférence avec la rastérisation conservative et le blending programmable, mais tout en insistant sur le fait que, dans un premier temps, cela serait secondaire. Le but principal est d'apporter sous Windows une API avec overhead réduit et le plus gros des efforts est concentré sur ce point.

Il pourrait y avoir des niveaux 11_x supplémentaires et des niveaux 12_x, soit directement soit par la suite (Direct3D 12.1…). Il n'est d'ailleurs pas impossible que ces derniers soient rendus disponibles sous Direct3D 11. Les détails à ce niveau sont toujours en cours de finalisation, notamment entre ce qui fera l'objet d'un nouveau niveau ou de "caps". Nvidia indique que ses GPU Maxwell sont capables d'aller au-delà des niveaux de fonctionnalités actuels, sous-entendant qu'ils supporteront un éventuel niveau 12_0. Un point étrange alors même que le niveau 11_1 n'est pas supporté. Nous devrions en savoir plus cet été.

L'autre grande question concerne le support logiciel. Microsoft se contente d'indiquer discrètement dans une slide que les pilotes WDDM 2.0, qui devraient être spécifiques à Windows 9, apporteront des réductions du surcoût CPU de la gestion des commandes de rendu. Ce qui sous-entend que d'autres modèles de pilotes WDDM qui apporteraient moins de réduction pourraient être supportés. D'un autre côté, lors d'une session Direct3D 12 organisée en dernière minute par AMD, Johan Andersson (Frostbite Engine, EA/DICE) a clairement affiché son souhait d'un support de Direct3D 12 sous Windows 7, espérant que Microsoft en saisisse l'intérêt. Officiellement, c'est tout ce qui est ressorti des présentations.

En coulisses, les langues se délient quelque peu. En réalité tout le monde serait convaincu de la nécessité de proposer Direct3D 12 sous Windows 7, et particulièrement l'équipe DirectX de Microsoft qui y voit un bon moyen d'inciter les développeurs à passer rapidement vers la nouvelle API. De quoi également renforcer l'influence de Microsoft et de la plateforme Windows dans le monde du jeu vidéo, notamment par rapport à la menace que représente Steam OS.


Microsoft a déjà pris soin de s'assurer auprès des fabricants de GPU que tout cela était réaliste au niveau des pilotes et que les barrières éventuelles pouvaient être facilement contournées. Le seul frein actuel à l'annonce du support de Windows 7 et à la finalisation de son implémentation serait le management supérieur de Microsoft, qui resterait hésitant par rapport à son premier réflexe de vouloir associer les nouveautés à un nouvel OS. Tout le monde semble cependant convaincu qu'il ne s'agit que d'une question de temps avant que les responsables ne se résolvent à accepter l'évidence.

Selon tous nos interlocuteurs, sauf énorme surprise, le support de Direct3D 12 devrait donc bien être proposé sous Windows 7. Par contre il n'est pas certain que toutes les nouvelles fonctionnalités le soient. Microsoft pourrait ainsi opter pour un compromis de type Direct3D 11 et 12 limités aux niveaux de fonctionnalités 11_x sous Windows 7 avec de futurs niveaux 12_x exclusifs à Windows 9, ce qui serait un moindre mal. Affaire à suivre donc…

Le futur Direct3D dévoilé en mars, l'effet Mantle?

Publié le 27/02/2014 à 02:06 par Damien Triolet


C'était un secret de polichinelle depuis quelques temps, Microsoft prépare l'arrivée d'une nouvelle mouture de DirectX et de son API graphique Direct3D. Les premières annonces se feront à la Game Developer Conference (GDC) qui aura lieu du 17 au 21 mars à San Francisco. Comme les années précédentes, nous avons d'ailleurs prévu d'être sur place, d'autant plus en sachant que des choses importantes devraient y être dévoilées autour des API graphiques.

Il ne fait aucun doute que Microsoft va réorienter Direct3D vers une réduction massive du coût CPU des commandes de rendu, AMD ayant ouvert la voie vers cela avec Mantle. Il y a dorénavant une demande importante de la part des développeurs et des possibilités à ce niveau en OpenGL qui pourraient être exploitées par Steam OS. Pour garder le contrôle, Microsoft se devait de réagir.

La plupart des informations à ce sujet sortiront des sessions du jeudi 20 mars :

DirectX: Evolving Microsoft's Graphics Platform (Presented by Microsoft) 
DirectX Advancements in the Many-Core Era: Getting the Most out of the PC Platform (Presented by NVIDIA) 
Approaching Zero Driver Overhead in OpenGL (Presented by NVIDIA) 
DirectX: Direct3D Futures (Presented by Microsoft) 

L'intitulé de cette dernière cession est d'ailleurs très clair concernant les orientations du prochain Direct3D :
Come learn how future changes to Direct3D will enable next generation games to run faster than ever before!

In this session we will discuss future improvements in Direct3D that will allow developers an unprecedented level of hardware control and reduced CPU rendering overhead across a broad ecosystem of hardware.

If you use cutting-edge 3D graphics in your games, middleware, or engines and want to efficiently build rich and immersive visuals, you don't want to miss this talk.
Il est intéressant d'observer qu'AMD prendra part à la session sur le surcoût CPU en OpenGL de Nvidia (les équipes de développements de ces deux concurrents arrivent à s'entendre!), alors que c'est avec Oxide Games, qui propose la démo Mantle Star Swarm, que Nvidia s'est associé pour parler de la bonne exploitation des CPU multicores.

Une fois que nous en saurons plus sur ce que ce sera ce futur Direct3D, il restera à voir qui tirera le mieux parti de ce futur Direct3D, l'avantage alternant souvent entre AMD et Nvidia. D'un côté certains pourraient se dire qu'avec Mantle, AMD a irrité Microsoft qui pourrait être tenté de favoriser Nvidia. C'est possible, mais d'un autre côté AMD a également enlevé une épine du pied au père de Windows en lui donnant un prétexte pour une évolution plus radicale face à laquelle certains pouvaient peut-être trainer des pieds. L'expérience de Mantle est par ailleurs une bonne base de travail et de réflexion pour Microsoft, de quoi l'aider à bouger plus rapidement pour ne pas laisser d'avantage au couple OpenGL et Steam OS.

Top articles