Red de conocimiento informático - Computadora portátil - ¿Es necesario que los teléfonos Android utilicen memoria GPU?

¿Es necesario que los teléfonos Android utilicen memoria GPU?

De hecho, Android ahora utiliza una arquitectura de memoria unificada. GPU y CPU comparten una memoria física. Generalmente tenemos dos nombres: "memoria de video" y "memoria", que pueden considerarse propietarios diferentes de esta memoria física, pero esta parte está asignada a la CPU, que es memoria en el sentido habitual cuando está asignada a la GPU; suele ser memoria. Y sólo se puede asignar a un dispositivo a la vez.

Para crear una textura simple, primero necesitamos cargar los datos de la textura en una sección de la memoria A y luego llamar a glTexImage2D para cargar la textura. Cuando llamamos a la interfaz de asignación de memoria del controlador gles, asignaremos una sección de memoria B (finalmente llamaremos a gralloc para asignarla) y la asignaremos a la CPU. Luego se llamará a una memcpy personalizada para copiar los datos de A a b. Aunque todos están en la misma memoria física, la especificación OpenGL aún necesita una copia. Al renderizar, B se asignará a la GPU para que la GPU pueda leerlo.

El contenido de procesamiento de GPU desde la APLICACIÓN a SF no se procesará, al menos Mali y sgx PowerVR no. La implementación opengl del fabricante llama a BufferQueue para obtener memoria para renderizar y luego la devuelve al buffer Queue (Queue/Dequeue) después del renderizado de GPU. SurfaceFlinger preguntará si hay algo que se pueda renderizar y devolverá el fotograma mostrado a la cola (Adquirir/Liberar). Mientras el proceso esté activo, puede ver que a menudo hay tres buffers con el mismo formato en esta cola que se reciclarán.

Esta clase se implementa bajo el módulo SurfaceFlinger. Como se mencionó anteriormente, este módulo proporciona dos conjuntos de interfaces para productores (Gpu) y consumidores (SF/display). Obviamente, a todos los framebuffers se les pasan punteros directamente, es decir, no hay copias. Esta parte es la implementación de Android.