stringtranslate.com

Metal (API)

Metal es una API de sombreador de gráficos y computación 3D acelerada por hardware de bajo nivel y bajo consumo creada por Apple y que debutó en iOS 8. Metal combina funciones similares a OpenGL y OpenCL en una sola API. Su objetivo es mejorar el rendimiento al ofrecer acceso de bajo nivel al hardware de la GPU para aplicaciones en iOS , iPadOS , macOS y tvOS . Se puede comparar con las API de bajo nivel de otras plataformas, como Vulkan y DirectX 12 .

Metal es una API orientada a objetos que se puede invocar mediante los lenguajes de programación Swift , Objective-C o C++17 [2] . La ejecución completa en la GPU se controla mediante el lenguaje Metal Shading. Según los materiales promocionales de Apple: "MSL [Metal Shading Language] es un lenguaje único y unificado que permite una integración más estrecha entre los programas gráficos y de cómputo. Dado que MSL está basado en C++, te resultará familiar y fácil de usar". [3]

Características

Metal tiene como objetivo proporcionar un acceso a la GPU con bajo consumo de recursos. Los comandos se codifican de antemano y luego se envían a la GPU para su ejecución asincrónica. La aplicación controla cuándo esperar a que se complete la ejecución, lo que permite a los desarrolladores de aplicaciones aumentar el rendimiento codificando otros comandos mientras se ejecutan en la GPU o ahorrar energía esperando explícitamente a que se complete la ejecución en la GPU. Además, la codificación de comandos es independiente de la CPU, por lo que las aplicaciones pueden codificar comandos para cada hilo de la CPU de forma independiente. Por último, los estados de renderizado se calculan previamente de antemano, lo que permite que el controlador de la GPU sepa de antemano cómo configurar y optimizar el flujo de renderizado antes de la ejecución del comando. [4]

Metal mejora las capacidades de programación de GPGPU mediante el uso de sombreadores de cómputo . Metal utiliza un lenguaje de sombreado específico basado en C++14 , implementado mediante Clang y LLVM . [5]

Metal permite a los desarrolladores de aplicaciones crear recursos de Metal, como buffers y texturas. Los recursos se pueden asignar en la CPU, la GPU o ambas, y proporciona funciones para actualizar y sincronizar los recursos asignados. Metal también puede hacer cumplir el estado de un recurso durante la vida útil de un codificador de comandos. [6] [7]

En macOS, Metal puede proporcionar a los desarrolladores de aplicaciones la discreción de especificar qué GPU ejecutar. Los desarrolladores de aplicaciones pueden elegir entre la GPU integrada de bajo consumo de la CPU, la GPU discreta (en ciertas MacBooks y Macs) o una GPU externa conectada a través de Thunderbolt. Los desarrolladores de aplicaciones también tienen la preferencia sobre cómo se ejecutan los comandos de la GPU en qué GPU y proporciona sugerencias sobre qué GPU es más eficiente para ejecutar un determinado comando (los comandos para renderizar una escena pueden ser ejecutados por la GPU discreta mientras que el posprocesamiento y la visualización pueden ser manejados por la GPU integrada). [8]

Sombreadores de rendimiento de metal

Metal Performance Shaders es una biblioteca altamente optimizada de funciones gráficas que puede ayudar a los desarrolladores de aplicaciones a lograr un gran rendimiento al mismo tiempo que reduce el trabajo de mantenimiento de funciones específicas de la familia GPU. [9] Proporciona funciones que incluyen:

Historia

Metal está disponible desde el 2 de junio de 2014 en dispositivos iOS con Apple A7 o posterior, [10] y desde el 8 de junio de 2015 en Mac (modelos 2012 o posteriores) con OS X El Capitan . [11]

El 5 de junio de 2017, en la WWDC , Apple anunció la segunda versión de Metal, que será compatible con macOS High Sierra , iOS 11 y tvOS 11. Metal 2 no es una API separada de Metal y es compatible con el mismo hardware. Metal 2 permite una creación de perfiles y una depuración más eficientes en Xcode , aprendizaje automático acelerado , menor carga de trabajo de la CPU , compatibilidad con realidad virtual en macOS y especificidades de la GPU Apple A11 , en particular. [12]

En la WWDC de 2020 , Apple anunció la migración de Mac a Apple Silicon . Las Mac que usan Apple Silicon contarán con GPU de Apple con un conjunto de características que combina lo que estaba disponible anteriormente en macOS e iOS, y podrán aprovechar las características adaptadas a la arquitectura de renderizado diferido basado en mosaicos (TBDR) de las GPU de Apple. [13]

En la WWDC de 2022 , Apple anunció la tercera versión de Metal (Metal 3), que debutaría con el lanzamiento de macOS Ventura , iOS 16 y iPadOS 16. Metal 3 presenta el marco de mejora de escala MetalFX, que renderiza escenas complejas en menos tiempo por fotograma con mejora de escala de alto rendimiento y compatibilidad con anti-aliasing y sombreadores de malla. [14] También se anunció la posibilidad de usar C/C++ para la API de Metal. [15]

GPU compatibles

La primera versión de Metal admite el siguiente hardware y software: [16]

La segunda versión de Metal admite el siguiente hardware y software:

La tercera versión de Metal admite el siguiente hardware y software:

Adopción

Según Apple, más de 148.000 aplicaciones utilizan Metal directamente y 1,7 millones lo utilizan a través de marcos de alto nivel , a junio de 2017. [17] Los juegos de macOS que utilizan Metal para renderizar se enumeran a continuación.

Véase también

Referencias

  1. ^ McWhertor, Michael (9 de septiembre de 2014). «Este es el juego que Apple utilizó para mostrar el iPhone 6». Polygon . Vox Media . Archivado desde el original el 11 de septiembre de 2014 . Consultado el 9 de septiembre de 2014 .
  2. ^ "Introducción a Metal-CPP - Metal".
  3. ^ Apple Inc. "Especificación del lenguaje de sombreado de metal" (PDF) .
  4. ^ "Configuración de una estructura de comandos". Apple Inc.
  5. ^ "Guía del lenguaje de sombreado de metales". 8 de septiembre de 2014. Consultado el 10 de septiembre de 2014 .
  6. ^ Apple Inc. "Configuración del modo de almacenamiento de recursos".
  7. ^ "Sincronización de un recurso administrado". Apple Inc.
  8. ^ "Selección de GPU en macOS". Apple Inc.
  9. ^ "Sombreadores de rendimiento de metal".
  10. ^ Machkovech, Same (2 de junio de 2014). "Apple apuesta fuerte por los videojuegos y anuncia la plataforma de desarrollo Metal". Ars Technica . Condé Nast .
  11. ^ Smith, Colin; Meza, Starlayne (8 de junio de 2015). "Apple anuncia OS X El Capitan con una experiencia refinada y un rendimiento mejorado". Sala de prensa . San Francisco : Apple .
  12. ^ "Copia archivada de la página de inicio de Metal, noviembre de 2017". Apple Developer . Apple . 20 de noviembre de 2017. Archivado desde el original el 20 de noviembre de 2017 – vía Wayback Machine .{{cite web}}: CS1 maint: bot: estado de URL original desconocido ( enlace )
  13. ^ "Lleva tu aplicación Metal a los Mac con Apple Silicon". developer.apple.com . Consultado el 13 de julio de 2020 .
  14. ^ "Descubre Metal 3". developer.apple.com . Consultado el 24 de junio de 2022 .
  15. ^ "Programa Metal en C++ con metal-cpp". developer.apple.com . Consultado el 10 de septiembre de 2022 .
  16. ^ Chiappetta, Marco (11 de diciembre de 2018). "Apple da la espalda a los clientes y a NVIDIA con macOS Mojave". Forbes .
  17. ^ Apple Inc. "Estado de la Unión de las plataformas en la WWDC 2017".
  18. ^ "Aplicaciones Vulkan habilitadas en plataformas Apple". Comunicado de prensa de Khronos Group . Consultado el 24 de febrero de 2021 .
  19. ^ Larabel, Michael (1 de junio de 2018). "El rendimiento inicial de Vulkan en macOS con Dota 2 parece muy bueno". Phoronix . Consultado el 5 de junio de 2018 .
  20. ^ Kondrak, Krzysztof [@k_kondrak] (9 de febrero de 2019). «vkQuake2 obtiene soporte para MacOS» ( Tweet ) . Consultado el 9 de febrero de 2019 – vía Twitter .
  21. ^ "NOTAS DEL PARCHE DE EQUILIBRIO DE HEROES OF THE STORM — 29 DE NOVIEMBRE DE 2017". news.blizzard.com . 29 de noviembre de 2017.
  22. ^ "X-Plane 11.50 Public Beta 1: Vulkan y Metal ya están aquí". X-Plane Developer . 2 de abril de 2020 . Consultado el 2 de abril de 2020 .

Enlaces externos