Ayer mismo mi compañero Pedro Santamaría nos hablaba del importante papel de una de las novedades de OS X El Capitan, Metal para Mac, pero qué mejor forma de poner las cosas en perspectiva que echarle un ojo a las pruebas conducidas por los expertos en la materia. AnandTech ha analizado este API gráfico de bajo nivel en su versión para iOS y las conclusiones a las que llegan son tan interesantes como esclarecedoras acerca del papel que Metal jugará en las plataformas de Apple.
En primer lugar, y por recapitular, Metal surge de la necesidad de disponer de una alternativa a OpenGL que ofrezca un acceso más directo al metal, al hardware del dispositivo, para reducir el overhead y aumentar así el número de draw calls posibles. Explicado en términos sencillos, el overhead son los recursos de tiempo, memoria o cualquier otro tipo que se requieren adicionalmente para realizar una tarea al margen de la tarea en si (parar en la gasolinera sería parte del overhead de un viaje en coche, es necesario y suma tiempo a la duración total pero no es el objetivo que buscamos, ir del punto a al punto b).
Un call draw en cambio es cada instrucción enviada a la CPU para que esta le diga a la GPU que debe dibujar un objeto (o parte de un objeto). A menor overhead, mayor número de call draws en un tiempo dado, lo que se traduce en más objetos en pantalla y más tiempo de CPU disponible para otras tareas.
La rapidísima evolución de las GPUs ha puesto una gran presión en las CPUs y los desarrolladores recurren a toda clase de trucos para optimizar su uso, agrupando los elementos de un mismo tipo para renderizarlos con una sola llamada, o la utilización de instancias, que consisten en hacer una llamada para dibujar un objeto único en varias coordenadas diferentes. A pesar de ello, el overhead de APIs gráficos como OpenGL y el tiempo que tarda la CPU en pasar un call draw continúan marcando su límite.
No ayuda tampoco que las GPUs estén evolucionando a un ritmo considerablemente mayor que el de las CPUs y aquí se une la necesidad de apostar por un API como Metal para reducir el overhead con las posibilidades que abren las unidades de procesamiento gráfico para tomar el relevo y llevar a cabo operaciones que tradicionalmente se realizarían en la unidad central de procesamiento.
La CPU del iPad Air 2 es doce veces más potente que la del iPad original, pero la verdadera revolución se ha producido en la GPU, 180 veces más rápida. Metal puede ayudar a los desarrolladores a sacar partido a toda esa potencia no solo a la hora de crear videojuegos más espectaculares sino también toda clase de apps que realicen cálculos avanzados como herramientas de diseño e ilustración o aplicaciones científicas por mencionar tan solo un algunas posibilidades.
GFXBench Metal
En esta primera batería de pruebas realizada con GFXBench 3.0 y GFXBench Metal, una reciente versión diseñada para utilizar el API de Metal en lugar de OpenGL ES, vemos como en efecto se ha logrado reducir el overhead de un modo dramático, multiplicando al menos por tres el número de fotogramas por segundo que es capaz de procesar. Este test en particular es algo artificial, ya que lo que hace es tratar de renderizar un montón de objetos de uno en uno con una draw call separada para cada uno. Es el modo más ineficiente posible de hacerlo pero precisamente de lo que se trata aquí es de ver la eficiencia bruta del API.
Pasando a las dos pruebas que simulan el tipo de efectos visuales y gráficos que encontramos en un juego 3D moderno, seguimos viendo una mejora de rendimiento al utilizar Metal frente a OpenGL ES, pero aquí la ganancia no es tan impresionante ya, con el iPad Air 2 obteniendo una mejora del 11% en T-Rex HD y del 8,5% en Manhattan. Las conclusiones de Brandon Chester de AnandTech son claras:
Las mejoras relativamente pequeñas de estas pruebas del mundo real ilustran un punto importante acerca de Metal: no es ninguna bala de plata para mejorar el rendimiento gráfico. Aunque definitivamente se aprecia una pequeña mejora gracias a la eficiencia general del API y un menor overhead, el propósito real de Metal es permitir nuevos niveles de fidelidad visual que anteriormente no eran posibles en dispositivos móviles. Un ejemplo de esto es la demo Zen Garden de Epic Games. La app se renderiza a 1440x1080 con 4x MSAA en el iPad y muestra 3500 mariposas volando por la pantalla al mismo tiempo. Esta escena tiene una media de 4000 draw calls por fotograma, que sobrepasa considerablemente lo que puede conseguirse con OpenGL ES en el hardware de un dispositivo móvil.
Metal tiene un brillante futuro tanto en iOS como en OS X, simplicando el proceso de llevar juegos de una plataforma a la otra y permitiendo a los desarrolladores crear aplicaciones 3D y juegos más complejos que se coloquen más allá de los límites impuestos por OpenGL ES.
Vía | AnandTech
En Applesfera | OS X El Capitan, Metal y la computación GPU revitalizarán tu Mac
Ver 30 comentarios