Ab dem 27. März 2025 empfehlen wir, android-latest-release anstelle von aosp-main zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Android 8.1 und höher unterstützen die Farbverwaltung, mit der eine einheitliche Darstellung auf verschiedenen Displaytechnologien möglich ist. Apps, die auf Android-Geräten ausgeführt werden, können auf die vollen Funktionen eines Wide-Gamut-Displays zugreifen, um das Display optimal zu nutzen.
Bisherige Android-Releases unterstützten keine Farbverwaltung, sondern basierten darauf, dass Inhalte und Displays kompatibel sind. Dieses Ziel wurde oft von der Fernsehbranche unterstützt. Neuere Displaytechnologien ermöglichen jedoch viel größere Farbräume, auf denen vorhandene Inhalte nicht wie erwartet angezeigt werden. Mit Android 8.1 und höher können Geräte mit einem Wide-Gamut-Display (z. B. Active Matrix Organic Light Emitting Diode oder AMOLED, einige LCDs) Wide-Gamut-Inhalte von Apps anzeigen.
Gerätesupport ermitteln
Geräte mit Wide-Color-Displays und Android 8.1 oder höher sollten die Farbverwaltung (Wide-Color) unterstützen. Bevor Sie diese Funktion aktivieren, prüfen Sie, ob das Gerät die folgenden Anforderungen erfüllt:
Das Display des Geräts erfüllt die Hardwareanforderungen, einschließlich eines gut charakterisierten Displays, das den Display-P3-Farbraum unterstützt. Wenn das Display diese Anforderung nicht erfüllt, aktivieren Sie die Farbverwaltung nicht. Um die CPU- und GPU-Belastung zu reduzieren, ist die Unterstützung von erweitertem sRGB und HDR10 in der Displaypipeline wünschenswert.
Das Gerät unterstützt eine werksseitige Kalibrierung, bei der Kalibrierungsdaten generiert und auf dem Gerät gespeichert werden, um Abweichungen bei der Displayleistung aufgrund von Produktionsschwankungen auszugleichen. Mit den Kalibrierungsdaten sollte das Display mindestens sRGB-Inhalte und die Weißpunkte D65 und D73 korrekt darstellen können.
Wenn diese Anforderungen erfüllt sind, können Sie die Farbverwaltung für das Gerät aktivieren.
Farbmanagement implementieren
Aktualisieren Sie zuerst den Hardware Composer 2 (HWC2)-Treiber, um die Farbmodi zu verstehen und diese auf die Hardware anzuwenden.
Insbesondere muss der HWC2-Composer die Farbmodi „Display-P3“ und „sRGB“ mit HWCDisplay::GetColorModes melden.
Aktivieren Sie als Nächstes die erforderlichen OpenGL-Erweiterungen und die Bibliotheksunterstützung, um OpenGL-Farbräume in HAL-Datenräume zu übersetzen. Zu den erforderlichen OpenGL-Erweiterungen gehören:
EGL_EXT_pixel_format_float.
Ermöglicht es Apps, EGLSurfaces mit 16‑Bit-Float-Farbkomponenten zu erstellen. Priorität: hoch (dies ist wahrscheinlich das Standardpixelformat für Apps mit erweitertem Farbumfang). Treiberunterstützung erforderlich.
EGL_KHR_gl_colorspace.
Für Apps, die Standard-Framebuffer im sRGB-Format verwenden möchten, um einfacher sRGB-Rendering auf Displaygeräten zu erzielen, ermöglicht diese Erweiterung das Erstellen von EGLSurfaces, die von OpenGL-Kontexten, die diese Funktion unterstützen, in sRGB gerendert werden. Erfordert Treiberunterstützung für das sRGB-Verhalten.
Android bietet außerdem die folgenden optionalen Erweiterungen:
EGL_EXT_colorspace_scrgb_linear.
Diese Erweiterung bietet eine neue Farbraumoption, scRGB, die Apps beim Erstellen einer EGLSurface auswählen können. Der scRGB-Farbraum definiert einen linearen, auf das Display bezogenen Farbraum mit denselben Weißpunkten und Primärfarben wie sRGB. Er ist also abwärtskompatibel mit sRGB. Dafür sollte kein Treibersupport erforderlich sein und es kann im Android-EGL-Wrapper implementiert werden. Damit diese Erweiterung nützlich ist, ist die Unterstützung von 16‑Bit-Gleitkommazahlen (FP16) erforderlich.
EGL_EXT_gl_colorspace_display_p3 und EGL_EXT_gl_colorspace_display_p3_linear. Für Apps, die Standard-Framebuffer im Display-P3-Format verwenden möchten, um einfacher sRGB-Rendering auf Displaygeräten zu erzielen, ermöglicht diese Erweiterung das Erstellen von EGLSurfaces, die von OpenGL-Kontexten, die diese Funktion unterstützen, in Display-P3 gerendert werden.
Dies kann im EGL-Treiber-Wrapper implementiert werden.
VK_EXT_swapchain_colorspace
(Vulkan). Ermöglicht es Apps, Swap-Chains mit dem verwendeten Farbraum zu taggen. Enthält eine Reihe gängiger Farbräume wie DCI-P3, Display-P3, AdobeRGB und BT2020.
Personalisierung
Sie können die Farbverwaltungsfunktion anpassen, indem Sie die Unterstützung für verschiedene Farbstandards wie DCI-P3, AdobeRGB, Rec709 und Rec2020 hinzufügen. Weitere Anpassungen:
Hardwareunterstützung für die Farbkonvertierung in der Displaypipeline Ermöglicht die Unterstützung mehrerer Farbtransformationen in der Hardware.
Unterstützung für unabhängige Farbtransformationen auf mehreren Ebenen (z. B. sRGB für einige Ebenen und erweitertes sRGB für andere, jeweils mit eigener Farbpipeline). Wenn mehrere Farbräume sichtbar sind, müssen einige Farbräume in den Farbraum des Displays konvertiert werden. Idealerweise wird diese Transformation von der Display-Engine bereitgestellt. Andernfalls muss Android die GPU-Komposition ausführen.
Testen
Verwenden Sie die folgenden Ressourcen in opengl/tests, um die Farbverwaltung zu testen:
gl2_basic ist eine einfache OpenGL-Demo, die einen Display-P3-Farbraum anfordert.
EGL_test
prüft, ob die erforderliche Erweiterung und Konfigurationsunterstützung (10:10:10:2 und FP16) vorhanden ist.
test_wide_color erstellt eine Oberfläche auf die gleiche Weise wie SurfaceFlinger (z. B. Konfiguration, Farbraum und Pixelformat).
Referenzimplementierung
Eine Referenzimplementierung finden Sie unter frameworks/native. Informationen zu Überschriften finden Sie hier:
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-27 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-07-27 (UTC)."],[],[],null,["# Color management\n\nAndroid 8.1 and higher include support for color management that can be used to provide a\nconsistent experience across display technologies. Apps running on\nAndroid can access the full capabilities of a wide-gamut display to get the\nmost out of a display device.\n\nPrevious Android releases didn't include color management support and\ninstead relied on content and displays being compatible (a goal often aided by\nthe TV industry). However, recent display technologies allow for much larger\ngamut displays that don't display existing content as expected. With Android\n8.1 and higher, devices that use a wide-gamut display (for example, active-matrix organic\nlight-emitting diode or AMOLED, some LCDs) can see wide-gamut\ncontent from apps.\n\nDetermine device support\n------------------------\n\nDevices with wide-color displays running Android 8.1 or higher should support color\nmanagement (wide-color). Before enabling this feature, ensure that the device meets\nthe following requirements:\n\n- Device display meets the hardware requirements, which include a well-characterized display that supports the Display-P3 colorspace. If the display doesn't meet this requirement, don't enable color management. To reduce CPU and GPU impact, support for extended sRGB and HDR10 in the display pipeline is desirable.\n- Device supports a factory calibration process that generates calibration data (stored on the device) to adjust for manufacturing variance in display behavior. At a minimum, calibration data should allow the display to accurately display sRGB content and D65 and D73 white points.\n\nIf these requirements are met, you can enable the color management\nfeature for the device.\n\nImplement color management\n--------------------------\n\nTo implement color management, first update the\n[Hardware Composer 2 (HWC2)](/docs/core/graphics/implement-hwc) driver\nto understand color modes and to apply those modes to the hardware.\nSpecifically, the HWC2 composer must report the Display-P3 and sRGB\ncolor modes using `HWCDisplay::GetColorModes`.\n| **Key Term:** Display-P3 uses Digital Cinema Initiatives primaries and sRGB transfer function.\n\nNext, enable the necessary OpenGL extensions and library support to\ntranslate OpenGL color spaces to HAL data spaces. Required OpenGL extensions\ninclude:\n\n- [`EGL_EXT_pixel_format_float`](https://www.khronos.org/registry/egl/extensions/EXT/EGL_EXT_pixel_format_float.txt). Allows apps to create presentable EGLSurfaces with 16-bit float color components. Priority: high (expect this is the default pixel format for wide-color aware apps). Requires driver support.\n- [`EGL_KHR_gl_colorspace`](https://www.khronos.org/registry/egl/extensions/KHR/EGL_KHR_gl_colorspace.txt). For apps that want to use sRGB format default framebuffers to more easily achieve sRGB rendering to display devices, this extension allows creating EGLSurfaces that will be rendered to in sRGB by OpenGL contexts supporting that capability. Requires driver support for sRGB behavior.\n\nAndroid also provides the following optional extensions:\n\n- [`EGL_EXT_colorspace_scrgb_linear`](https://www.khronos.org/registry/egl/extensions/EXT/EGL_EXT_gl_colorspace_scrgb_linear.txt). This extension provides a new color space option, scRGB, that apps can choose when creating an EGLSurface. The scRGB color space defines a linear display referred space with the same white point and color primaries as sRGB (and thus is backward compatible with sRGB). This shouldn't require driver support and can be implemented in the Android EGL wrapper. To be useful, this extension requires support for 16-bit floating point (FP16).\n- [`EGL_EXT_gl_colorspace_display_p3`\n and `EGL_EXT_gl_colorspace_display_p3_linear`](https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_gl_colorspace_display_p3.txt). For apps that want to use Display-P3 format default framebuffers to more easily achieve sRGB rendering to display devices, this extension allows creating EGLSurfaces that will be rendered to in Display-P3 by OpenGL contexts supporting that capability. This can be implemented in EGL driver wrapper.\n- [`VK_EXT_swapchain_colorspace`](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VK_EXT_swapchain_colorspace) (Vulkan). Enables apps to tag swap chains with the color space they're using. Includes a number of common color spaces such as DCI-P3, Display-P3, AdobeRGB, and BT2020.\n\nCustomization\n-------------\n\nYou can customize the color management feature by including support for a\nvariety of color standards such as DCI-P3, AdobeRGB, Rec709, and Rec2020. Other\ncustomizations include:\n\n- **Hardware support for color conversion in the display\n pipeline.** Enables support for multiple color transforms in hardware.\n- **Support for independent color transform on multiple layers** (for example, some layers could be sRGB and others extended-sRGB, each with their own color pipeline). When there's more than one color space visible, some color spaces need to be converted to the color space of the display. Ideally, this transform is best provided by the display engine (otherwise Android must perform GPU composition).\n\nTesting\n-------\n\nTo test color management, use the following resources in\n`opengl/tests`:\n\n- `gl2_basic` is a simple OpenGL demo that requests a Display-P3 colorspace.\n- [`EGL_test`](https://android.googlesource.com/platform/frameworks/native/+/android16-release/opengl/tests/EGLTest/EGL_test.cpp) tests for necessary extension and config support (10:10:10:2 and FP16).\n- `test_wide_color` creates a surface in same manner as SurfaceFlinger (for example, config, color space, and pixel format).\n\nReference implementation\n------------------------\n\nFor a reference implementation, refer to `frameworks/native`. For\nheaders, refer to:\n\n- [`system/core/include/system/graphics.h`](https://android.googlesource.com/platform/system/core/+/android16-release/libsystem/include/system/graphics.h)\n- [`system/core/include/system/graphics-base.h`](https://android.googlesource.com/platform/system/core/+/android16-release/libsystem/include/system/graphics-base.h)\n - `HAL_DATASPACE_*`\n - `HAL_COLOR_MODE_*`"]]