Metal es una API de sombreado de cálculo y gráficos 3D acelerada por hardware de bajo nivel y pocos gastos generales creada por Apple , que debuta en iOS 8 . Metal combina funciones similares a OpenGL y OpenCL en una API. Su objetivo es mejorar el rendimiento ofreciendo acceso de bajo nivel al hardware GPU para aplicaciones en iOS , iPadOS , macOS y tvOS . Se puede comparar con API de bajo nivel en otras plataformas como Vulkan y DirectX 12 .
Metal es una API orientada a objetos que se puede invocar utilizando los lenguajes de programación Swift , Objective-C o C++17 [2] . La ejecución completa de la GPU se controla mediante Metal Shading Language. 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 gráficos y los programas informáticos. Dado que MSL está basado en C++, le resultará familiar y fácil de usar". [3]
Metal tiene como objetivo proporcionar un acceso reducido a la GPU. 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 los comandos se ejecutan en la GPU o ahorrar energía esperando explícitamente a que se complete la ejecución de la GPU. Además, la codificación de comandos es independiente de la CPU, por lo que las aplicaciones pueden codificar comandos para cada subproceso de la CPU de forma independiente. Por último, los estados de renderizado se calculan previamente, lo que permite que el controlador de la GPU sepa de antemano cómo configurar y optimizar el proceso de renderizado antes de la ejecución del comando. [4]
Metal mejora las capacidades de programación GPGPU mediante el uso de sombreadores informáticos . 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 Metal como buffers y texturas. Los recursos se pueden asignar en la CPU, GPU o ambas y proporciona funciones para actualizar y sincronizar los recursos asignados. Metal también puede imponer el estado de un recurso durante la vida útil de un codificador de comandos. [6] [7]
En macOS, Metal puede brindar a los desarrolladores de aplicaciones la libertad 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 ciertos MacBooks y Mac) o una GPU externa conectada a través de Thunderbolt. Los desarrolladores de aplicaciones también tienen preferencia sobre cómo se ejecutan los comandos de GPU en qué GPU y brindan sugerencias sobre qué GPU es más eficiente para ejecutar un determinado comando (los comandos para representar una escena pueden ser ejecutados por la GPU discreta mientras que el posprocesamiento y la visualización pueden ser ejecutados). manejado por la GPU integrada). [8]
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 y al mismo tiempo reducir el trabajo de mantenimiento de funciones específicas de la familia de GPU. [9] Proporciona funciones que incluyen:
Metal ha estado disponible desde el 2 de junio de 2014 en dispositivos iOS con tecnología Apple A7 o posterior, [10] y desde el 8 de junio de 2015 en Mac (modelos de 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 crear perfiles y depurar más eficientemente en Xcode , aprendizaje automático acelerado , menor carga de trabajo de CPU , soporte para 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 utilizan Apple Silicon contarán con GPU de Apple con un conjunto de funciones que combinan lo que estaba disponible anteriormente en macOS e iOS, y podrán aprovechar funciones 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 MetalFX, que renderiza escenas complejas en menos tiempo por fotograma con mejora de escala y suavizado de alto rendimiento. [14] También se anunció la posibilidad de utilizar C/C++ para Metal API. [15]
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:
Según Apple, a junio de 2017, más de 148.000 aplicaciones utilizan Metal directamente y 1,7 millones lo utilizan a través de marcos de trabajo de alto nivel. [17] Los juegos de macOS que utilizan Metal para el renderizado se enumeran a continuación.
{{cite web}}
: Mantenimiento CS1: bot: estado de la URL original desconocido ( enlace )