En el contexto. Apple ha mantenido en secreto el funcionamiento interno de la familia de procesadores M1 del público, pero los desarrolladores dedicados lo han contrarrestado mediante la creación de controladores de código abierto: distribuciones de Linux para Asahi Linux y M1 Mac. En el proceso, descubrieron algunas funciones excelentes.
Recientemente, Alisa Rosenzweig en sus esfuerzos por desarrollar un controlador gráfico de código abierto para el M1 encontró una extrañeza En la canalización de renderizado de la GPU M1. Introdujo geometrías 3D cada vez más complejas y finalmente buscó un conejo que interfería con la GPU.
Básicamente, tenga en cuenta que esto, todo lo demás que voy a decir, es demasiado simplista. El problema comienza con un acceso deficiente a la memoria de la GPU. Es una GPU potente, pero al igual que el SoC de iPhone de la serie A, tiene un antepasado que necesita atajos para mantener su eficacia.
En lugar de ir directamente al Framebuffer, como la GPU discreta, el M1 toma dos cruces. el primero encuentra los picos y el segundo hace todo lo demás. Es obvio que la segunda transición es mucho más intensa, por lo que entre las transiciones una sección de hardware especial divide el marco en mosaicos (en su mayoría minimarcos), y la segunda transición se convierte en un mosaico.
El mosaico resuelve el problema de no tener suficientes recursos de memoria, pero para volver a ensamblar los mosaicos en un círculo en el futuro, la GPU debe mantener un búfer de todos los datos máximos. Rosenzweig descubrió que cuando se llenaba este búfer, la representación no funcionaba. Ver el primer conejo arriba.
En una de las presentaciones de Apple se explica que cuando el búfer está lleno, la GPU produce un renderizado parcial, es decir, la mitad del conejo. El problema en el software de Apple se llama búfer. búfer paramétricoEl nombre parece derivarse de la documentación de Imagination PowerVR.
Imaginación es una empresa con sede en el Reino Unido que, al igual que Arm, diseña procesadores que licencia a otras empresas. Apple llegó a un acuerdo con la compañía a principios de 2020 que le permitiría licenciar una amplia gama de sus IP. Está claro que el M1, que se lanzó a finales de 2020, utiliza su arquitectura de GPU PowerVR como base definitiva para su GPU.
De todos modos, volvamos al conejo. Como habrás adivinado, los renders parciales se pueden agregar para crear renders de conejo completos (pero, por supuesto, con unas pocas docenas de pasos adicionales).
Pero esta ración? aún: no tan cierto Puedes ver artefactos en la pata del conejo. Resulta que esto se debe a que las diferentes partes del cuadro están divididas en buffers de color, «buffers de profundidad», este último se comporta mal cuando se carga con renders parciales.
Una configuración invertida de un controlador de Apple resuelve el problema y finalmente puede hacer un conejo (abajo).
No es solo el controlador de gráficos de código abierto de Rosenzweig para el M1 el que salta a través de todos estos círculos para presentar una imagen. Así es como funciona la GPU. Su arquitectura probablemente no fue diseñada para el renderizado 3D, pero sin embargo, Apple la ha convertido en algo que puede competir con las últimas GPU discretas. si no superarlos por completo, como afirma Apple. Es maravilloso.
Para obtener una explicación más detallada (técnicamente precisa) de la entrega de conejos և para otros estudios de M1, asegúrese de consultar blog de rosenzweig y Asahi Linux: sitio web.
Préstamo de cabecera. Esgrima
Beer ninja. Internet maven. Music buff. Wannabe web evangelist. Analista. Introvertido