#GDC – DirectX 12 necesita distintas optimizaciones en tarjetas Nvidia y AMD

Durante el GDC en San Francisco, los desarrolladores de Nvidia y AMD Gareth Thomas y Alex Dunn explicaron en una reunión conjunta muchos detalles acerca de DirectX 12 en relación a sus tarjetas y como estas tendrían que optimizarse para las nuevas características de la nueva API de Microsoft.

directx 12 logo

A continuación os resumimos algunos de los puntos más interesantes de la presentación y os dejamos las diapositivas para más información:

  • DirectX 12 es para los que quieren alcanzar el máximo rendimiento de CPU y GPU, pero hay una mayor complejidad en la programación al requerir realizar de forma manual acciones que DirectX 11 automatiza.
  • Al ser más cercano a la máquina que DirectX 11, requiere diferentes configuraciones en algunos aspectos para Nvidia y AMD.
  • DirectX 12 no está vinculado a la CPU para enderezar.
  • Las listas de comandos escritas en DirectX 12 necesitan ser ejecutadas sin demora en cualquier momento, así como sea posible. Se ejecutaran entre 15 y 30 instrucciones por segundos conjuntadas en llamadas “ExecuteCommandList” que requerirán al menos 200 microsegundos de carga de GPU, preferiblemente más.
  • La latencia de planificación en el sistema operativo es de 60 microsegundos, por lo que los desarrolladores podrán al menos más que esto en cada llamada, de otra forma se desperdiciaría tiempo esperando.
  • Los packs (bundle), una de las nuevas funciones de DirectX 12, son perfectos para enviar trabajo a la GPU muy pronto a cada frame, siendo muy ventajosos en aplicaciones que requieren muy baja latencia como la realidad virtual.
  • No son inherentemente más rápido en la GPU, la mejora está del lado de la CPU. La optimización de “packs” difiere entre las tarjetas Nvidia y AMD y requieren diferentes aproximaciones. En particular, en las tarjetas AMD los “packs” deberían ser usados solo si el juego exprime demasiado a la CPU.
  • Las colas de computación todavía no han sido desarrolladas por completo en DirectX 12. De momento, pueden ofrecer una mejora del 10% controlada correctamente, pero puede incrementarse cuando se investigue más como.
  • Dado que estas mejoras no ocurren automáticamente a menos que las cosas se configuren correctamente, los desarrolladores siempre deben estar seguros de lo que hacen o no, pues puede resultar en empeorar el rendimiento.
  • El uso de tablets de firmas raíz es donde la optimización entre AMD y Nvidia mas difiere y donde los desarrolladores necesitan configuraciones específicas para cada marca.
  • Cuando los desarrolladores se encuentran sin suficiente memoria de video, DirectX 12 permite crear un desbordamiento sobre la memoria del sistema moviendo recursos fuera de la memoria de vídeo a su discreción.
  • Usar memoria renombrada sobre DirectX 12 permite salvar aún más memoria de video.
  • DirectX 12 introduce Fences, que básicamente son semáforos para GPU que permiten asegurar que la GPU ha terminado un trabajo antes de comenzar el siguiente.
  • La funcionalidad multi-GPU está ahora incoporada en DirectX 12
  • Es importante para los desarrolladores tener en mente la limitaciones del ancho de banda en las diferentes versiones del bus PCI ya que aun es común conectar muchas tarjetas mediante PCI 2.0, el cual ofrece la mitad de ancho de banda que PCI 3.0
  • A la hora de decidir si usar un “pixel shader” o un “compute shader” existe una diferencia extrema entre los pros y contras de las tarjetas Nvidia y AMD
  • La rasterización conservativa permite dibujar todos los pixeles en contacto por un triángulo en los modelos 3D. Anteriormente podía realizarse mediante un truco usando un shader geométrico, pero era muy lento.
  • DirectX 11 está aún muy vivo y continuará de la mano de DirectX 12 por un tiempo.
  • Los desarrolladores no pueden mezclar DirectX 11 y 12, tendrán que pasarse a DirectX 12 por completo o no podrán usarlo.

Direct-X12-Panel-Slides-7 Direct-X12-Panel-Slides-9 Direct-X12-Panel-Slides-10 Direct-X12-Panel-Slides-11 Direct-X12-Panel-Slides-13 Direct-X12-Panel-Slides-15 Direct-X12-Panel-Slides-17 Direct-X12-Panel-Slides-18 Direct-X12-Panel-Slides-21 Direct-X12-Panel-Slides-23 Direct-X12-Panel-Slides-25 Direct-X12-Panel-Slides-26 Direct-X12-Panel-Slides-27 Direct-X12-Panel-Slides-29 Direct-X12-Panel-Slides-30 Direct-X12-Panel-Slides-32 Direct-X12-Panel-Slides-33 Direct-X12-Panel-Slides-36 Direct-X12-Panel-Slides-38 Direct-X12-Panel-Slides-39 Direct-X12-Panel-Slides-41 Direct-X12-Panel-Slides-44 Direct-X12-Panel-Slides-45 Direct-X12-Panel-Slides-46 Direct-X12-Panel-Slides-47 Direct-X12-Panel-Slides-48 Direct-X12-Panel-Slides-49 Direct-X12-Panel-Slides-50 Direct-X12-Panel-Slides-51 Direct-X12-Panel-Slides-52 Direct-X12-Panel-Slides-53 (1) Direct-X12-Panel-Slides-53 Direct-X12-Panel-Slides-54 Direct-X12-Panel-Slides-56 Direct-X12-Panel-Slides-57 Direct-X12-Panel-Slides-58 Direct-X12-Panel-Slides-59 Direct-X12-Panel-Slides-60 Direct-X12-Panel-Slides-61 Direct-X12-Panel-Slides-62 Direct-X12-Panel-Slides-63 Direct-X12-Panel-Slides-64 Direct-X12-Panel-Slides-65 Direct-X12-Panel-Slides-66

En definitiva, DirectX 12 trae consigo un sinfín de mejoras que se podrían resumir en nuevas herramientas para mejorar la generación de imágenes 3D y reducir las latencias a cambio de que sean los propios programadores los que bajen un nivel de abstracción y optimicen funciones que antes se hacían de forma automática, por lo que en un principio es fácil que no se aprovechen las mejoras de la nueva API y solo con la formación continua de los programadores se vean mejoras mucho mas patentes.

Vía: DualSockers

Artículos relacionados