OpenGLRenderer কনফিগারেশন

হার্ডওয়্যার পারফর্ম্যান্স অপ্টিমাইজ করার জন্য পারফর্ম্যান্স টিউনিং সম্পর্কে এই ডকুমেন্টে বর্ণনা করা হয়েছে।

OpenGLRenderer (libhwui) প্রপার্টি

এই ডকুমেন্ট Android-এর 2D হার্ডওয়্যার-অ্যাক্সিলারেটেড রেন্ডারিং পাইপলাইন নিয়ন্ত্রণ করার প্রপার্টি বর্ণনা করে। device.mk-এ এই প্রপার্টিগুলি PRODUCT_PROPERTY_OVERRIDES হিসেবে সেট করুন।

সব Android ভার্সনের জন্য প্রপার্টি

প্রপার্টি ধরন ডিফল্ট ভ্যালু বর্ণনা
ro.zygote.disable_gl_preload boolean false বুট করার সময় Zygote-এ EGL/GL ড্রাইভারের প্রি-লোডিং চালু বা বন্ধ করে। এই প্রপার্টি false হলে, Zygote eglGetDisplay(EGL_DEFAULT_DISPLAY) ইনভোক করে GL ড্রাইভার প্রি-লোড করে। এটি Zygote-এ ডায়নামিক লাইব্রেরি কোড লোড করে যাতে অন্যান্য সব প্রসেসের সাথে এটি শেয়ার করা যায়। কোনও ড্রাইভার শেয়ার করার সুবিধা না দিলে, এই প্রপার্টিকে true হিসেবে সেট করুন।

Android 8.0 ও এর আগের যেকোনও ভার্সনের জন্য প্রপার্টি

প্রপার্টি ধরন ডিফল্ট ভ্যালু বর্ণনা
ro.hwui.disable_scissor_opt boolean false

সিজর অপ্টিমাইজেশন চালু বা বন্ধ করে। এইসব ভ্যালু গ্রহণ করা হয়: true এবং false. সিজর অপ্টিমাইজেশন চালু করা থাকলে, OpenGLRenderer, GL সিজর টেস্ট বেছে নিয়ে চালু ও বন্ধ করার মাধ্যমে সিজরিং কমানোর চেষ্টা করে।

বন্ধ করা থাকলে, OpenGLRenderer, GL সিজার টেস্ট চালু রাখে এবং প্রয়োজনমতো সিজার রেক্ট পরিবর্তন করে। কিছু GPU (যেমন, SGX 540) সিজর টেস্ট ঘন ঘন চালু বা বন্ধ করার চেয়ে সিজর রেকট ঘন ঘন পরিবর্তন করলে আরও ভালো পারফর্ম করে।

ro.hwui.texture_cache_size float 24 প্রতিটি প্রসেসের টেক্সচার ক্যাশের সাইজ মেগাবাইটে নির্দিষ্ট করে। আমরা সাজেস্ট করি যে এমন একটি ক্যাশে ব্যবহার করুন যা ৩২-বিট টেক্সচারের একাধিক স্ক্রিন ধরে রাখতে পারে। যেমন, ১২৮০x৮০০ ডিসপ্লেতে, একটি ফুল স্ক্রিন বাফার প্রায় ৪ এমবি ব্যবহার করে, তাই ক্যাশে অন্তত ২০ এমবি হতে হবে।
ro.hwui.layer_cache_size float 16 প্রতিটি প্রসেস লেয়ার ক্যাশের সাইজ মেগাবাইটে নির্ধারণ করে। আমরা ৩২ বিটে স্ক্রিনের চার গুণ ধরে রাখার জন্য যথেষ্ট বড় ক্যাশে ব্যবহার করার সাজেস্ট করি। যেমন, ১২৮০x৮০০ ডিসপ্লেতে, একটি ফুল স্ক্রিন বাফার প্রায় ৪ এমবি ব্যবহার করে, তাই ক্যাশে অন্তত ১৬ এমবি হতে হবে।
ro.hwui.gradient_cache_size float 0.5 প্রতি-প্রসেস গ্রেডিয়েন্ট ক্যাশের সাইজ মেগাবাইটে নির্ধারণ করে। A একটি গ্রেডিয়েন্ট সাধারণত ১ কেবি থেকে ৪ কেবি মেমরি দখল করে। আমরা এমন একটি ক্যাশে ব্যবহার করার সাজেশন দিই যা অন্তত ১২টি গ্রেডিয়েন্ট ধরে রাখতে পারে।
ro.hwui.patch_cache_size integer 128 প্রতিটি প্রসেস পিছু ৯-প্যাচ ক্যাশের সাইজ কিলোবাইটে নির্ধারণ করে। এই ক্যাশে শুধুমাত্র ভার্টেক্স ডেটা ধরে রাখে, তাই আপনি এটি ছোট রাখতে পারেন। প্রতিটি ভার্টেক্সে ৪টি ফ্লোট বা ১৬ বাইট থাকে।
ro.hwui.path_cache_size float 4 প্রতিটি প্রসেস পাথ ক্যাশের সাইজ মেগাবাইটে নির্ধারণ করে। আমরা এমন ক্যাশে ব্যবহার করার সাজেশন দিই যা অন্তত ৩২-বিট টেক্সচারের একটি স্ক্রিন ধরে রাখার জন্য যথেষ্ট বড়। যেমন, ১২৮০x৮০০ ডিসপ্লেতে, ফুল স্ক্রিন বাফার প্রায় ৪ এমবি ব্যবহার করে, তাই ক্যাশে অন্তত ৪ এমবি হতে হবে।
ro.hwui.shape_cache_size float 1 প্রতিটি প্রসেস শেপ ক্যাশের সাইজ মেগাবাইটে নির্ধারণ করে। এই ভ্যালু বৃত্ত এবং গোলাকার কোণযুক্ত আয়তক্ষেত্রের মতো বিভিন্ন ক্যাশে ব্যবহার করে। আমরা এমন একটি ক্যাশে ব্যবহার করার পরামর্শ দিই যা অন্তত একটি ৮-বিট স্ক্রিন ধরে রাখতে পারে। যেমন, ১২৮০x৮০০ ডিসপ্লেতে, একটি ফুল স্ক্রিন বাফার প্রায় ১ এমবি ব্যবহার করে, তাই ক্যাশে অন্তত ১ এমবি হতে হবে।
ro.hwui.drop_shadow_cache_size float 2 প্রতিটি প্রসেসের টেক্সট ড্রপ শ্যাডো ক্যাশের সাইজ মেগাবাইটে নির্দিষ্ট করে। আমরা ৮-বিট টেক্সচারের দুটি স্ক্রিন ধরে রাখার জন্য যথেষ্ট বড় ক্যাশে ব্যবহার করার সাজেস্ট করি। যেমন, ১২৮০x৮০০ ডিসপ্লেতে, ফুল স্ক্রিন বাফার প্রায় ১ এমবি ব্যবহার করে, তাই ক্যাশে অন্তত ২ এমবি হতে হবে।
ro.hwui.r_buffer_cache_size float 2 প্রতি-প্রসেস রেন্ডার বাফার ক্যাশের সাইজ মেগাবাইটে নির্ধারণ করে। আমরা সাজেস্ট করি যে এমন একটি ক্যাশে ব্যবহার করুন যা ৮ বিটে স্ক্রিনের দ্বিগুণ ডেটা ধরে রাখতে পারে। যেমন, ১২৮০x৮০০ ডিসপ্লেতে, একটি ফুল স্ক্রিন বাফার প্রায় ১ এমবি ব্যবহার করে, তাই ক্যাশে অন্তত ২ এমবি হতে হবে। ডিভাইস ৪-বিট বা ১-বিট স্টেনসিল বাফার সাপোর্ট করলে ক্যাশে ছোট হতে পারে।
ro.hwui.texture_cache_flush_rate float 0.6 মেমরি ফ্ল্যাশ করার পরে টেক্সচার ক্যাশে কত শতাংশ রেখে দেওয়া হবে তা নির্ধারণ করে। সিস্টেম যখন সব অ্যাপ্লিকেশন জুড়ে মেমরি রিক্লেইম করতে চায়, তখন মেমরি ফ্ল্যাশ ট্রিগার করে। এই ধরনের পরিস্থিতিতে আমরা প্রায় ৫০% ক্যাশে রিলিজ করার সাজেস্ট করি।
ro.hwui.text_small_cache_width integer 1024 ডিফল্ট ফন্ট ক্যাশের প্রস্থ পিক্সেলে নির্ধারণ করে। সর্বোচ্চ সীমা GPU কত দ্রুত টেক্সচার আপলোড করতে পারে তার উপর নির্ভর করে। আমরা কমপক্ষে ১০২৪ পিক্সেল কিন্তু সর্বাধিক ২০৪৮ পিক্সেল ব্যবহার করার সাজেশন দিই। এছাড়াও, দুইয়ের ঘাত ভ্যালু ব্যবহার করুন।
ro.hwui.text_small_cache_height integer 256 ডিফল্ট ফন্ট ক্যাশের উচ্চতা পিক্সেলে নির্ধারণ করে। সর্বোচ্চ সীমা GPU কত দ্রুত টেক্সচার আপলোড করতে পারে তার উপর নির্ভর করে। আমরা সাজেস্ট করি যে অন্তত ২৫৬ পিক্সেল কিন্তু সর্বাধিক ১০২৪ পিক্সেল ব্যবহার করুন।
ro.hwui.text_large_cache_width integer 2048 বড় ফন্ট ক্যাশের প্রস্থ পিক্সেলে নির্ধারণ করে। ডিফল্ট ফন্ট ক্যাশে ফিট করার জন্য খুব বড় গ্লিফের জন্য এই ক্যাশে ব্যবহার করা হয়। সর্বোচ্চ সীমা GPU কত দ্রুত টেক্সচার আপলোড করতে পারে তার উপর নির্ভর করে। আমরা সাজেস্ট করি যে কমপক্ষে ২০৪৮ পিক্সেল এবং সর্বাধিক ৪০৯৬ পিক্সেল ব্যবহার করুন। এছাড়াও, পাওয়ার-অফ-টু ভ্যালু ব্যবহার করুন।
ro.hwui.text_large_cache_height integer 512 বড় ফন্ট ক্যাশের উচ্চতা পিক্সেলে নির্ধারণ করে। ডিফল্ট ফন্ট ক্যাশে ফিট করার জন্য খুব বড় গ্লিফের জন্য বড় ফন্ট ক্যাশে ব্যবহার করা হয়। সর্বোচ্চ সীমা GPU কত দ্রুত টেক্সচার আপলোড করতে পারে তার উপর নির্ভর করে। আমরা সাজেস্ট করি যে অন্তত ৫১২ পিক্সেল কিন্তু সর্বাধিক ২০৪৮ পিক্সেল ব্যবহার করুন। এছাড়াও, পাওয়ার-অফ-টু ভ্যালু ব্যবহার করুন।
hwui.text_gamma_correction string lookup টেক্সট গামা সংশোধন করার টেকনিক বেছে নেয়। চারটি সম্ভাব্য বিকল্প আছে:
  • lookup3: লুক-আপ টেবিলের উপর ভিত্তি করে সংশোধন। কালো ও সাদা টেক্সটের ক্ষেত্রে গামা সংশোধন আলাদা হয় (নিম্নলিখিত থ্রেশহোল্ড দেখুন)।
  • lookup: একটি লুক-আপ টেবিলের উপর ভিত্তি করে সংশোধন।
  • shader3: GLSL শেডার দ্বারা প্রয়োগ করা সংশোধন। গামা সংশোধন সাদা ও কালো টেক্সটের ক্ষেত্রে আলাদা হয় (নিম্নলিখিত থ্রেশহোল্ড দেখুন)।
  • shader: GLSL শেডার প্রয়োগ করে সংশোধন করা হয়েছে।
সীমিত শেডার ম্যাথ সহ GPU-তে লুকআপ গামা কারেকশন সবচেয়ে ভালো কাজ করে। মেমরি সেভ করার জন্য শেডার গামা কারেকশন সবচেয়ে ভালো। আমরা ডিফল্ট lookup টেকনিক ব্যবহার করার সাজেশন দিই, যা কোয়ালিটি, স্পিড ও মেমরির ব্যবহারের ক্ষেত্রে একটি ভালো সমঝোতা অফার করে।
hwui.text_gamma float 1.4 টেক্সট গামা কারেকশনের জন্য ব্যবহৃত গামা ভ্যালু নির্ধারণ করে। ডিভাইসের ডিসপ্লের উপর ভিত্তি করে আপনি এই ভ্যালু অ্যাডজাস্ট করতে পারবেন।
hwui.text_gamma.black_threshold integer 64 লুমিন্যান্স থ্রেশহোল্ড নির্ধারণ করে যার নিচে ব্ল্যাক গামা কারেকশন প্রয়োগ করা হয়। মান অবশ্যই ০-২৫৫-এর মধ্যে হতে হবে।
hwui.text_gamma.white_threshold integer 192 যেসব ক্ষেত্রে সাদা গামা কারেকশন প্রয়োগ করা হয়, সেগুলির লুমিন্যান্স থ্রেশহোল্ড নির্ধারণ করে। মান অবশ্যই ০-২৫৫-এর মধ্যে হতে হবে।
hwui.use_gpu_pixel_buffers boolean true OpenGL ES 3.0 হার্ডওয়্যারে PBO-এর ব্যবহার চালু বা বন্ধ করে। রেন্ডারার অ্যাসিঙ্ক্রোনাস টেক্সচার আপলোড করার জন্য PBO ব্যবহার করে, বিশেষ করে ফন্ট ক্যাশের জন্য। এই প্রপার্টি সবসময় চালু থাকতে হবে, তবে PBO-এর কারণে ডেটা দুর্নীতি বা খারাপ পারফর্ম্যান্স হলে, ব্রিং-আপ বা ডেভেলপমেন্টের সময় আপনি এটি বন্ধ করে দিতে পারেন। এই কারণে প্রপার্টিটি রিড-অনলি নয়।