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

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

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

تحديد مدى توافق الجهاز

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

  • تستوفي شاشة الجهاز متطلبات الأجهزة، بما في ذلك شاشة ذات مواصفات جيدة تتوافق مع مساحة ألوان Display-P3. إذا كانت الشاشة لا تستوفي هذا الشرط، يجب عدم تفعيل ميزة "إدارة الألوان". للحدّ من تأثير وحدة المعالجة المركزية ووحدة معالجة الرسومات، من المستحسن توفير تنسيق sRGB الموسّع وHDR10 في مسار عرض المحتوى.
  • يتيح الجهاز عملية معايرة من المصنع تُنشئ بيانات المعايرة (التي يتم تخزينها على الجهاز) للتكيّف مع الاختلافات في التصنيع في سلوك الشاشة. على الأقل، يجب أن تسمح بيانات المعايرة للشاشة بaccurately عرض محتوى 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 على أجهزة العرض بسهولة أكبر، تسمح هذه الإضافة بإنشاء سطح EGL سيتم عرضه بتنسيق 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.

التخصيص

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

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

الاختبار

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

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

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

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