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

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

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

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

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

  • تلبي شاشة الجهاز متطلبات الأجهزة، والتي تتضمن شاشة جيدة المواصفات تدعم مساحة الألوان 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 (فولكان). يمكّن التطبيقات من وضع علامة على سلاسل المبادلة بمساحة الألوان التي تستخدمها. يتضمن عددًا من مساحات الألوان الشائعة مثل DCI-P3 وDisplay-P3 وAdobeRGB وBT2020.

التخصيص

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

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

اختبارات

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

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

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

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