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

يتضمّن الإصدار 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 والبعض الآخر بتنسيق extended-sRGB، ولكل منها مسار ألوان خاص). عندما تكون هناك أكثر من مساحة ألوان مرئية، يجب تحويل بعض مساحات الألوان إلى مساحة ألوان الشاشة. من المفترض أن يوفّر محرّك العرض عملية التحويل هذه (وإلا سيضطر نظام التشغيل Android إلى إجراء عملية التركيب باستخدام وحدة معالجة الرسومات).

الاختبار

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

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

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

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