Google 致力于为黑人社区推动种族平等。查看具体举措
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Gestione del colore

Android 8.1 e versioni successive includono il supporto per la gestione del colore che può essere utilizzato per fornire un'esperienza coerente tra le tecnologie di visualizzazione. Le app in esecuzione su Android possono accedere alle funzionalità complete di un display ad ampia gamma per ottenere il massimo da un dispositivo di visualizzazione.

Le versioni precedenti di Android non includevano il supporto per la gestione del colore e si basavano invece sulla compatibilità di contenuti e display (un obiettivo spesso aiutato dall'industria televisiva). Tuttavia, le recenti tecnologie di visualizzazione consentono schermi con gamut molto più ampio che non visualizzano il contenuto esistente come previsto. Con Android 8.1 e versioni successive, i dispositivi che utilizzano un display ad ampia gamma (ad esempio, diodo organico a emissione di luce a matrice attiva o AMOLED, alcuni LCD) possono visualizzare contenuti ad ampia gamma dalle app.

Determinazione del supporto del dispositivo

I dispositivi con display wide-color che eseguono Android 8.1 o versioni successive dovrebbero supportare la gestione del colore (wide-color). Prima di abilitare questa funzione, assicurarsi che il dispositivo soddisfi i seguenti requisiti:

  • Il display del dispositivo soddisfa i requisiti hardware, che includono un display ben caratterizzato che supporta lo spazio colore Display-P3. Se il display non soddisfa questo requisito, non abilitare la gestione del colore. Per ridurre l'impatto su CPU e GPU, è auspicabile il supporto per sRGB e HDR10 estesi nella pipeline di visualizzazione.
  • Il dispositivo supporta un processo di calibrazione di fabbrica che genera dati di calibrazione (memorizzati sul dispositivo) per regolare la varianza di produzione nel comportamento di visualizzazione. Come minimo, i dati di calibrazione dovrebbero consentire al display di visualizzare accuratamente il contenuto sRGB e i punti bianchi D65 e D73.

Se questi requisiti vengono soddisfatti, è possibile abilitare la funzione di gestione del colore per il dispositivo.

Implementazione della gestione del colore

Per implementare la gestione del colore, aggiornare prima il driver Hardware Composer 2 (HWC2) per comprendere le modalità del colore e applicare tali modalità all'hardware. In particolare, il compositore HWC2 deve segnalare le modalità colore Display-P3 e sRGB utilizzando HWCDisplay::GetColorModes .

Successivamente, abilita le estensioni OpenGL necessarie e il supporto della libreria per tradurre gli spazi colore OpenGL in spazi dati HAL. Le estensioni OpenGL richieste includono:

  • EGL_EXT_pixel_format_float . Consente alle app di creare EGLSurfaces presentabili con componenti di colore float a 16 bit. Priorità: alta (si prevede che questo sia il formato pixel predefinito per le app che riconoscono i colori larghi). Richiede il supporto del driver.
  • EGL_KHR_gl_colorspace . Per le app che desiderano utilizzare i framebuffer predefiniti del formato sRGB per ottenere più facilmente il rendering sRGB sui dispositivi di visualizzazione, questa estensione consente di creare EGLSurfaces che verranno renderizzate in sRGB da contesti OpenGL che supportano tale funzionalità. Richiede il supporto del driver per il comportamento sRGB.

Android fornisce anche le seguenti estensioni opzionali:

  • EGL_EXT_colorspace_scrgb_linear . Questa estensione fornisce una nuova opzione di spazio colore, scRGB, che le app possono scegliere durante la creazione di una superficie EGL. Lo spazio colore scRGB definisce uno spazio di visualizzazione lineare riferito con lo stesso punto bianco e colori primari di sRGB (e quindi è retrocompatibile con sRGB). Ciò non dovrebbe richiedere il supporto del driver e può essere implementato nel wrapper EGL di Android. Per essere utile, questa estensione richiede il supporto per la virgola mobile a 16 bit (FP16).
  • EGL_EXT_gl_colorspace_display_p3 e EGL_EXT_gl_colorspace_display_p3_linear . Per le app che desiderano utilizzare i framebuffer predefiniti in formato Display-P3 per ottenere più facilmente il rendering sRGB sui dispositivi di visualizzazione, questa estensione consente di creare EGLSurfaces che verranno renderizzate in Display-P3 da contesti OpenGL che supportano tale funzionalità. Questo può essere implementato nel wrapper del driver EGL.
  • VK_EXT_swapchain_colorspace (Vulkan). Consente alle app di contrassegnare le catene di scambio con lo spazio colore che stanno utilizzando. Include una serie di spazi colore comuni come DCI-P3, Display-P3, AdobeRGB e BT2020.

Personalizzazione

È possibile personalizzare la funzione di gestione del colore includendo il supporto per una varietà di standard di colore come DCI-P3, AdobeRGB, Rec709 e Rec2020. Altre personalizzazioni includono:

  • Supporto hardware per la conversione del colore nella pipeline di visualizzazione. Abilita il supporto per più trasformazioni di colore nell'hardware.
  • Supporto per la trasformazione del colore indipendente su più livelli (ad esempio, alcuni livelli potrebbero essere sRGB e altri estesi-sRGB, ciascuno con la propria pipeline di colori). Quando è visibile più di uno spazio colore, alcuni spazi colore devono essere convertiti nello spazio colore del display. Idealmente, questa trasformazione è fornita al meglio dal motore di visualizzazione (altrimenti Android deve eseguire la composizione della GPU).

Test

Per testare la gestione del colore, utilizza le seguenti risorse in opengl/tests :

  • gl2_basic è una semplice demo OpenGL che richiede uno gl2_basic colore Display-P3.
  • EGL_test verifica l'estensione necessaria e il supporto della configurazione (10: 10: 10: 2 e FP16).
  • test_wide_color crea una superficie nello stesso modo di SurfaceFlinger (ad esempio, config, spazio colore e formato pixel).

Implementazione di riferimento

Per un'implementazione di riferimento, fare riferimento a frameworks/native . Per le intestazioni, fare riferimento a: