إدارة الألوان

يتضمّن الإصدار 8.1 من Android والإصدارات الأحدث ميزة إدارة الألوان التي يمكن استخدامها لتوفير تجربة متّسقة على مستوى تكنولوجيات العرض المختلفة. يمكن للتطبيقات التي تعمل على Android الوصول إلى الإمكانات الكاملة لشاشة العرض ذات النطاق الواسع للاستفادة إلى أقصى حدّ من جهاز العرض.

لم تتضمّن إصدارات Android السابقة ميزة إدارة الألوان، بل كانت تعتمد على توافق المحتوى وشاشات العرض (وهو هدف ساعدت فيه صناعة التلفزيون غالبًا). ومع ذلك، تتيح تكنولوجيات العرض الحديثة شاشات عرض ذات نطاق أوسع بكثير لا تعرض المحتوى الحالي على النحو المتوقّع. في الإصدار 8.1 من Android والإصدارات الأحدث، يمكن للأجهزة التي تستخدم شاشة عرض ذات نطاق واسع (مثل شاشة AMOLED أو بعض شاشات LCD) عرض محتوى النطاق الواسع من التطبيقات.

تحديد دعم الجهاز

يجب أن تتيح الأجهزة التي تعمل بالإصدار 8.1 من Android أو إصدار أحدث وتتضمّن شاشات عرض ذات نطاق واسع ميزة إدارة الألوان (النطاق الواسع). قبل تفعيل هذه الميزة، تأكَّد من استيفاء الجهاز للمتطلبات التالية:

  • تستوفي شاشة عرض الجهاز متطلبات الأجهزة، بما في ذلك شاشة عرض محدّدة جيدًا تتيح مساحة ألوان Display-P3. إذا لم تستوفِ شاشة العرض هذا الشرط، لا تفعِّل ميزة إدارة الألوان. للحدّ من تأثير وحدة المعالجة المركزية ووحدة معالجة الرسومات، من المستحسن أن تتيح شاشة العرض النطاق sRGB الموسّع وHDR10 في مسار العرض.
  • يتيح الجهاز عملية معايرة من المصنع تُنشئ بيانات المعايرة (المخزّنة على الجهاز) لتعديل التباين في سلوك شاشة العرض الناتج عن عملية التصنيع. يجب أن تسمح بيانات المعايرة على الأقل لشاشة العرض بعرض محتوى sRGB ونقاط اللون الأبيض D65 وD73 بدقة.

إذا تم استيفاء هذه المتطلبات، يمكنك تفعيل ميزة إدارة الألوان للجهاز.

تنفيذ ميزة إدارة الألوان

لتنفيذ ميزة إدارة الألوان، عليك أولاً تعديل برنامج تشغيل Hardware Composer 2 (HWC2) لكي يفهم أوضاع الألوان ويطبّقها على الأجهزة. على وجه التحديد، يجب أن يعرض برنامج HWC2 أوضاع الألوان Display-P3 وsRGB باستخدام HWCDisplay::GetColorModes.

بعد ذلك، فعِّل إضافات OpenGL اللازمة ودعم المكتبة لترجمة مساحات ألوان OpenGL إلى مساحات بيانات HAL. تشمل إضافات OpenGL المطلوبة ما يلي:

  • EGL_EXT_pixel_format_float: تسمح هذه الإضافة للتطبيقات بإنشاء EGLSurfaces قابلة للعرض تتضمّن مكوّنات ألوان عائمة ذات 16 بت. الأولوية: عالية (من المتوقّع أن يكون هذا هو تنسيق البكسل التلقائي للتطبيقات التي تدرك النطاق الواسع). تتطلب هذه الإضافة دعم برنامج التشغيل.
  • EGL_KHR_gl_colorspace: بالنسبة إلى التطبيقات التي تريد استخدام مخازن الإطارات التلقائية بتنسيق sRGB لتحقيق عرض sRGB على أجهزة العرض بسهولة أكبر، تسمح هذه الإضافة بإنشاء EGLSurfaces سيتم عرضها بتنسيق sRGB من خلال سياقات OpenGL التي تتيح هذه الإمكانية. تتطلب هذه الإضافة دعم برنامج التشغيل لسلوك sRGB.

يوفر Android أيضًا الإضافات الاختيارية التالية:

  • EGL_EXT_colorspace_scrgb_linear: توفّر هذه الإضافة خيارًا جديدًا لمساحة الألوان، وهو scRGB، يمكن للتطبيقات اختياره عند إنشاء EGLSurface. تحدّد مساحة ألوان scRGB مساحة عرض خطية مُشار إليها تتضمّن نقطة اللون الأبيض والألوان الأساسية نفسها في sRGB (وبالتالي، تكون متوافقة مع sRGB). لا يفترض أن تتطلب هذه الإضافة دعم برنامج التشغيل ويمكن تنفيذها في برنامج Android EGL المغلّف. لكي تكون هذه الإضافة مفيدة، يجب أن تتيح النقطة العائمة ذات 16 بت (FP16).
  • EGL_EXT_gl_colorspace_display_p3 وEGL_EXT_gl_colorspace_display_p3_linear. بالنسبة إلى التطبيقات التي تريد استخدام مخازن الإطارات التلقائية بتنسيق Display-P3 لتحقيق عرض sRGB على أجهزة العرض بسهولة أكبر، تسمح هذه الإضافة بإنشاء EGLSurfaces سيتم عرضها بتنسيق Display-P3 من خلال سياقات OpenGL التي تتيح هذه الإمكانية. يمكن تنفيذ هذه الإضافة في برنامج تشغيل EGL المغلّف.
  • VK_EXT_swapchain_colorspace (Vulkan): تسمح هذه الإضافة للتطبيقات بوضع علامة على سلاسل التبديل باستخدام مساحة الألوان التي تستخدمها. تتضمّن هذه الإضافة عددًا من مساحات الألوان الشائعة، مثل DCI-P3 وDisplay-P3 وAdobeRGB وBT2020.

التخصيص

يمكنك تخصيص ميزة إدارة الألوان من خلال تضمين دعم مجموعة متنوّعة من معايير الألوان، مثل DCI-P3 وAdobeRGB وRec709 وRec2020. تشمل التخصيصات الأخرى ما يلي:

  • دعم الأجهزة لتحويل الألوان في مسار العرض: يتيح هذا الخيار دعم عمليات تحويل ألوان متعددة في الأجهزة.
  • دعم تحويل الألوان المستقل على طبقات متعددة (على سبيل المثال، يمكن أن تكون بعض الطبقات بتنسيق sRGB وبعضها الآخر بتنسيق sRGB الموسّع، ولكل منها مسار الألوان الخاص بها): عند ظهور أكثر من مساحة ألوان واحدة، يجب تحويل بعض مساحات الألوان إلى مساحة ألوان شاشة العرض. من الأفضل أن توفّر محرّك العرض عملية التحويل هذه (وإلا يجب أن ينفّذ Android عملية التركيب على وحدة معالجة الرسومات).

الاختبار

لاختبار ميزة إدارة الألوان، استخدِم المَرجِعَين التاليَين في opengl/tests:

  • gl2_basic هو عرض توضيحي بسيط لـ OpenGL يطلب مساحة ألوان Display-P3.
  • EGL_test يختبر دعم الإضافة والإعدادات اللازمَين (10:10:10:2 وFP16).
  • test_wide_color يُنشئ سطحًا بالطريقة نفسها التي يستخدمها SurfaceFlinger (على سبيل المثال، الإعدادات ومساحة الألوان وتنسيق البكسل).

التنفيذ المرجعي

للحصول على تنفيذ مرجعي، يُرجى الرجوع إلى frameworks/native. بالنسبة إلى العناوين، يُرجى الرجوع إلى ما يلي: