Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Manejo del color

Android 8.1 y versiones posteriores incluyen soporte para la administración del color que se puede usar para brindar una experiencia consistente en todas las tecnologías de visualización. Las aplicaciones que se ejecutan en Android pueden acceder a todas las capacidades de una pantalla de amplia gama para aprovechar al máximo un dispositivo de pantalla.

Los lanzamientos anteriores de Android no incluían soporte para la gestión del color y, en cambio, dependían de que el contenido y las pantallas fueran compatibles (un objetivo a menudo apoyado por la industria de la televisión). Sin embargo, las tecnologías de visualización recientes permiten pantallas con una gama mucho más amplia que no muestran el contenido existente como se esperaba. Con Android 8.1 y versiones posteriores, los dispositivos que usan una pantalla de amplia gama (por ejemplo, un diodo emisor de luz orgánico de matriz activa o AMOLED, algunas pantallas LCD) pueden ver contenido de amplia gama de aplicaciones.

Determinar la compatibilidad del dispositivo

Los dispositivos con pantallas de color ancho que ejecutan Android 8.1 o superior deben admitir la gestión del color (color ancho). Antes de habilitar esta función, asegúrese de que el dispositivo cumpla con los siguientes requisitos:

  • La pantalla del dispositivo cumple con los requisitos de hardware, que incluyen una pantalla bien caracterizada que admite el espacio de color Display-P3. Si la pantalla no cumple con este requisito, no habilite la gestión del color. Para reducir el impacto de la CPU y la GPU, es deseable la compatibilidad con sRGB y HDR10 extendidos en el canal de visualización.
  • El dispositivo admite un proceso de calibración de fábrica que genera datos de calibración (almacenados en el dispositivo) para ajustar la variación de fabricación en el comportamiento de la pantalla. Como mínimo, los datos de calibración deben permitir que la pantalla muestre con precisión el contenido sRGB y los puntos blancos D65 y D73.

Si se cumplen estos requisitos, puede habilitar la función de administración de color para el dispositivo.

Implementar la gestión del color

Para implementar la administración del color, primero actualice el controlador Hardware Composer 2 (HWC2) para comprender los modos de color y aplicar esos modos al hardware. Específicamente, el compositor de HWC2 debe informar los modos de color Display-P3 y sRGB usando HWCDisplay::GetColorModes .

A continuación, habilite las extensiones OpenGL necesarias y el soporte de la biblioteca para traducir los espacios de color OpenGL a espacios de datos HAL. Las extensiones de OpenGL necesarias incluyen:

  • EGL_EXT_pixel_format_float . Permite que las aplicaciones creen EGLSurfaces presentables con componentes de color flotante de 16 bits. Prioridad: alta (se espera que este sea el formato de píxel predeterminado para las aplicaciones con reconocimiento de colores amplios). Requiere soporte de controlador.
  • EGL_KHR_gl_colorspace . Para las aplicaciones que desean utilizar los búferes de fotogramas predeterminados del formato sRGB para lograr más fácilmente la representación sRGB en los dispositivos de visualización, esta extensión permite crear EGLSurfaces que serán representadas en sRGB por contextos OpenGL que admitan esa capacidad. Requiere soporte de controlador para el comportamiento sRGB.

Android también proporciona las siguientes extensiones opcionales:

  • EGL_EXT_colorspace_scrgb_linear . Esta extensión proporciona una nueva opción de espacio de color, scRGB, que las aplicaciones pueden elegir al crear una EGLSurface. El espacio de color scRGB define un espacio de referencia de visualización lineal con el mismo punto blanco y colores primarios que sRGB (y por lo tanto es compatible con sRGB). Esto no debería requerir soporte de controladores y se puede implementar en el contenedor EGL de Android. Para ser útil, esta extensión requiere soporte para punto flotante de 16 bits (FP16).
  • EGL_EXT_gl_colorspace_display_p3 y EGL_EXT_gl_colorspace_display_p3_linear . Para las aplicaciones que desean utilizar los búferes de fotogramas predeterminados del formato Display-P3 para lograr más fácilmente el renderizado sRGB en los dispositivos de visualización, esta extensión permite crear EGLSurfaces que serán renderizados en Display-P3 por contextos OpenGL que admitan esa capacidad. Esto se puede implementar en el contenedor del controlador EGL.
  • VK_EXT_swapchain_colorspace (Vulkan). Permite que las aplicaciones etiqueten las cadenas de intercambio con el espacio de color que están usando. Incluye una serie de espacios de color comunes, como DCI-P3, Display-P3, AdobeRGB y BT2020.

Personalización

Puede personalizar la función de administración del color al incluir compatibilidad con una variedad de estándares de color como DCI-P3, AdobeRGB, Rec709 y Rec2020. Otras personalizaciones incluyen:

  • Soporte de hardware para conversión de color en el canal de visualización. Permite la compatibilidad con múltiples transformaciones de color en hardware.
  • Soporte para transformación de color independiente en múltiples capas (por ejemplo, algunas capas podrían ser sRGB y otras extendidas-sRGB, cada una con su propia canalización de color). Cuando hay más de un espacio de color visible, algunos espacios de color deben convertirse al espacio de color de la pantalla. Idealmente, esta transformación la proporciona mejor el motor de visualización (de lo contrario, Android debe realizar la composición de la GPU).

Pruebas

Para probar la gestión del color, utilice los siguientes recursos en opengl/tests :

  • gl2_basic es una demostración de OpenGL simple que solicita un espacio de color Display-P3.
  • EGL_test prueba la extensión necesaria y el soporte de configuración (10: 10: 10: 2 y FP16).
  • test_wide_color crea una superficie de la misma manera que SurfaceFlinger (por ejemplo, configuración, espacio de color y formato de píxeles).

Implementación de referencia

Para una implementación de referencia, consulte frameworks/native . Para encabezados, consulte: