রঙ ব্যবস্থাপনা

অ্যান্ড্রয়েড 8.1 এবং উচ্চতর রঙ পরিচালনার জন্য সমর্থন অন্তর্ভুক্ত যা প্রদর্শন প্রযুক্তি জুড়ে একটি সামঞ্জস্যপূর্ণ অভিজ্ঞতা প্রদান করতে ব্যবহার করা যেতে পারে। অ্যান্ড্রয়েডে চলমান অ্যাপগুলি একটি ডিসপ্লে ডিভাইস থেকে সর্বাধিক সুবিধা পেতে একটি ওয়াইড-গ্যামুট ডিসপ্লের সম্পূর্ণ ক্ষমতা অ্যাক্সেস করতে পারে।

পূর্ববর্তী অ্যান্ড্রয়েড রিলিজগুলিতে রঙ পরিচালনার সমর্থন অন্তর্ভুক্ত ছিল না এবং এর পরিবর্তে বিষয়বস্তু এবং প্রদর্শনগুলি সামঞ্জস্যপূর্ণ হওয়ার উপর নির্ভর করেছিল (একটি লক্ষ্য প্রায়শই টিভি শিল্প দ্বারা সহায়তা করে)। যাইহোক, সাম্প্রতিক প্রদর্শন প্রযুক্তিগুলি অনেক বড় গামুট ডিসপ্লেগুলির জন্য অনুমতি দেয় যা প্রত্যাশিত হিসাবে বিদ্যমান সামগ্রী প্রদর্শন করে না। অ্যান্ড্রয়েড 8.1 এবং উচ্চতর, যে ডিভাইসগুলি একটি ওয়াইড-গ্যামুট ডিসপ্লে ব্যবহার করে (উদাহরণস্বরূপ, অ্যাক্টিভ-ম্যাট্রিক্স অর্গানিক লাইট-এমিটিং ডায়োড বা AMOLED, কিছু LCD) অ্যাপগুলি থেকে ওয়াইড-গ্যামাট সামগ্রী দেখতে পারে।

ডিভাইস সমর্থন নির্ধারণ

অ্যান্ড্রয়েড 8.1 বা উচ্চতর চলমান ওয়াইড-কালার ডিসপ্লে সহ ডিভাইসগুলি কালার ম্যানেজমেন্ট (ওয়াইড-কালার) সমর্থন করা উচিত। এই বৈশিষ্ট্যটি সক্ষম করার আগে, নিশ্চিত করুন যে ডিভাইসটি নিম্নলিখিত প্রয়োজনীয়তাগুলি পূরণ করে:

  • ডিভাইস ডিসপ্লে হার্ডওয়্যার প্রয়োজনীয়তা পূরণ করে, যার মধ্যে একটি ভাল-চরিত্রযুক্ত ডিসপ্লে রয়েছে যা Display-P3 কালারস্পেস সমর্থন করে। যদি ডিসপ্লে এই প্রয়োজনীয়তা পূরণ না করে, রঙ পরিচালনা সক্ষম করবেন না। CPU এবং GPU প্রভাব কমাতে, ডিসপ্লে পাইপলাইনে বর্ধিত sRGB এবং HDR10 এর জন্য সমর্থন বাঞ্ছনীয়।
  • ডিভাইসটি একটি ফ্যাক্টরি ক্রমাঙ্কন প্রক্রিয়া সমর্থন করে যা প্রদর্শনের আচরণে উত্পাদন বৈচিত্র্যের জন্য সামঞ্জস্য করতে ক্রমাঙ্কন ডেটা (ডিভাইসে সঞ্চিত) তৈরি করে। সর্বনিম্নভাবে, ক্রমাঙ্কন ডেটা ডিসপ্লেকে sRGB বিষয়বস্তু এবং D65 এবং D73 হোয়াইট পয়েন্টগুলি সঠিকভাবে প্রদর্শন করার অনুমতি দেয়।

যদি এই প্রয়োজনীয়তাগুলি পূরণ করা হয়, আপনি ডিভাইসের জন্য রঙ পরিচালনা বৈশিষ্ট্য সক্ষম করতে পারেন৷

রঙ ব্যবস্থাপনা বাস্তবায়ন

কালার ম্যানেজমেন্ট বাস্তবায়ন করতে, প্রথমে হার্ডওয়্যার কম্পোজার 2 (HWC2) ড্রাইভার আপডেট করুন কালার মোড বুঝতে এবং সেই মোডগুলি হার্ডওয়্যারে প্রয়োগ করতে। বিশেষভাবে, HWC2 কম্পোজারকে অবশ্যই HWCDisplay::GetColorModes ব্যবহার করে Display-P3 এবং sRGB কালার মোড রিপোর্ট করতে হবে।

এরপরে, OpenGL কালার স্পেসকে HAL ডেটা স্পেসে অনুবাদ করতে প্রয়োজনীয় OpenGL এক্সটেনশন এবং লাইব্রেরি সাপোর্ট চালু করুন। প্রয়োজনীয় OpenGL এক্সটেনশন অন্তর্ভুক্ত:

  • EGL_EXT_pixel_format_float অ্যাপ্লিকেশানগুলিকে 16-বিট ফ্লোট রঙের উপাদানগুলির সাথে উপস্থাপনযোগ্য EGLSurfaces তৈরি করার অনুমতি দেয়৷ অগ্রাধিকার: উচ্চ (প্রত্যাশিত যে এটি ওয়াইড-কালার সচেতন অ্যাপের জন্য ডিফল্ট পিক্সেল ফর্ম্যাট)। ড্রাইভার সমর্থন প্রয়োজন.
  • EGL_KHR_gl_colorspace যে অ্যাপগুলি sRGB ফরম্যাটের ডিফল্ট ফ্রেমবাফারগুলি ব্যবহার করতে চায় ডিভাইসগুলিকে আরও সহজে sRGB রেন্ডারিং অর্জন করতে, এই এক্সটেনশনটি EGLSSurfaces তৈরি করতে দেয় যা সেই সক্ষমতা সমর্থন করে OpenGL প্রসঙ্গ দ্বারা sRGB-তে রেন্ডার করা হবে। 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 । যে অ্যাপগুলি ডিসপ্লে-P3 ফর্ম্যাট ডিফল্ট ফ্রেমবাফারগুলি ব্যবহার করতে চায় ডিভাইসগুলি প্রদর্শনের জন্য আরও সহজে sRGB রেন্ডারিং অর্জন করতে, এই এক্সটেনশনটি EGLSsurfaces তৈরি করতে দেয় যা OpenGL কনটেক্সট দ্বারা ডিসপ্লে-P3-এ রেন্ডার করা হবে সেই সক্ষমতাকে সমর্থন করে৷ এটি EGL ড্রাইভার র‍্যাপারে প্রয়োগ করা যেতে পারে।
  • VK_EXT_swapchain_colorspace (Vulkan)। অ্যাপ্লিকেশানগুলিকে তারা যে রঙের স্থান ব্যবহার করছে তার সাথে অদলবদল চেইন ট্যাগ করতে সক্ষম করে৷ DCI-P3, Display-P3, AdobeRGB, এবং BT2020 এর মতো অনেকগুলি সাধারণ রঙের স্থান অন্তর্ভুক্ত করে।

কাস্টমাইজেশন

আপনি DCI-P3, AdobeRGB, Rec709, এবং Rec2020 এর মতো বিভিন্ন রঙের মানগুলির জন্য সমর্থন অন্তর্ভুক্ত করে রঙ পরিচালনার বৈশিষ্ট্যটি কাস্টমাইজ করতে পারেন। অন্যান্য কাস্টমাইজেশন অন্তর্ভুক্ত:

  • ডিসপ্লে পাইপলাইনে রঙ রূপান্তরের জন্য হার্ডওয়্যার সমর্থন। হার্ডওয়্যারে একাধিক রঙের রূপান্তরের জন্য সমর্থন সক্ষম করে।
  • একাধিক স্তরে স্বাধীন রঙের রূপান্তরের জন্য সমর্থন (উদাহরণস্বরূপ, কিছু স্তর sRGB এবং অন্যগুলি বর্ধিত-sRGB হতে পারে, প্রতিটি তাদের নিজস্ব রঙের পাইপলাইন সহ)। যখন একাধিক রঙের স্থান দৃশ্যমান হয়, তখন কিছু রঙের স্থানগুলিকে ডিসপ্লের রঙের স্থানে রূপান্তর করতে হবে। আদর্শভাবে, এই রূপান্তরটি ডিসপ্লে ইঞ্জিন দ্বারা সর্বোত্তম প্রদান করা হয় (অন্যথায় অ্যান্ড্রয়েডকে অবশ্যই GPU রচনা সম্পাদন করতে হবে)।

পরীক্ষামূলক

রঙ ব্যবস্থাপনা পরীক্ষা করতে, opengl/tests এ নিম্নলিখিত সংস্থানগুলি ব্যবহার করুন:

  • gl2_basic হল একটি সাধারণ OpenGL ডেমো যা একটি Display-P3 রঙের স্থানের জন্য অনুরোধ করে।
  • প্রয়োজনীয় এক্সটেনশন এবং কনফিগারেশন সমর্থনের জন্য EGL_test পরীক্ষা (10:10:10:2 এবং FP16)।
  • test_wide_color SurfaceFlinger এর মতো একইভাবে একটি পৃষ্ঠ তৈরি করে (উদাহরণস্বরূপ, কনফিগারেশন, রঙের স্থান এবং পিক্সেল বিন্যাস)।

রেফারেন্স বাস্তবায়ন

একটি রেফারেন্স বাস্তবায়নের জন্য, frameworks/native দেখুন। হেডারের জন্য, পড়ুন: