OpenGLRenderer কনফিগারেশন

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

OpenGLRenderer (libhwui) বৈশিষ্ট্য

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

সকল অ্যান্ড্রয়েড ভার্সনের জন্য বৈশিষ্ট্য

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

অ্যান্ড্রয়েড ৮.০ এবং তার আগের ভার্সনের জন্য বৈশিষ্ট্য

সম্পত্তি আদর্শ ডিফল্ট মান বিবরণ
ro.hwui.disable_scissor_opt boolean false

কাঁচি অপ্টিমাইজেশন সক্ষম বা অক্ষম করে। গৃহীত মানগুলি true এবং false । যখন কাঁচি অপ্টিমাইজেশন সক্ষম করা হয়, তখন OpenGLRenderer GL কাঁচি পরীক্ষাটি নির্বাচনীভাবে সক্ষম এবং অক্ষম করে কাঁচি কমানোর চেষ্টা করে।

যখন অক্ষম করা হয়, তখন OpenGLRenderer GL কাঁচি পরীক্ষা সক্রিয় রাখে এবং প্রয়োজন অনুসারে কাঁচি রেক্ট পরিবর্তন করে। কিছু GPU (উদাহরণস্বরূপ, SGX 540) ঘন ঘন কাঁচি পরীক্ষা সক্রিয় বা নিষ্ক্রিয় করার চেয়ে বেশি ঘন ঘন কাঁচি রেক্ট পরিবর্তন করলে ভালো পারফর্ম করে।

ro.hwui.texture_cache_size float 24 প্রতি-প্রক্রিয়া টেক্সচার ক্যাশের আকার মেগাবাইটে নির্ধারণ করে। আমরা 32-বিট টেক্সচারের বেশ কয়েকটি স্ক্রিন ধরে রাখার জন্য যথেষ্ট বড় ক্যাশ ব্যবহার করার পরামর্শ দিই। উদাহরণস্বরূপ, 1280x800 ডিসপ্লেতে, একটি পূর্ণ স্ক্রিন বাফার প্রায় 4 MB ব্যবহার করে, তাই ক্যাশ কমপক্ষে 20 MB হওয়া উচিত।
ro.hwui.layer_cache_size float 16 প্রতি-প্রসেস লেয়ার ক্যাশের আকার মেগাবাইটে নির্ধারণ করে। আমরা 32 বিটে স্ক্রিনের চারগুণ ধারণ করার জন্য যথেষ্ট বড় ক্যাশ ব্যবহার করার পরামর্শ দিই। উদাহরণস্বরূপ, 1280x800 ডিসপ্লেতে, একটি পূর্ণ স্ক্রিন বাফার প্রায় 4 MB ব্যবহার করে, তাই ক্যাশ কমপক্ষে 16 MB হওয়া উচিত।
ro.hwui.gradient_cache_size float 0.5 প্রতি-প্রক্রিয়া গ্রেডিয়েন্ট ক্যাশের আকার মেগাবাইটে নির্ধারণ করে। একটি একক গ্রেডিয়েন্ট সাধারণত 1 KB থেকে 4 KB মেমরি দখল করে। আমরা কমপক্ষে 12টি গ্রেডিয়েন্ট ধারণ করার জন্য যথেষ্ট বড় ক্যাশ ব্যবহার করার পরামর্শ দিই।
ro.hwui.patch_cache_size integer 128 প্রতিটি প্রক্রিয়ার ৯-প্যাচ ক্যাশের আকার কিলোবাইটে নির্ধারণ করে। এই ক্যাশে শুধুমাত্র ভার্টেক্স ডেটা ধারণ করে, তাই আপনি এটিকে ছোট রাখতে পারেন। প্রতিটি ভার্টেক্সে ৪টি ফ্লোট বা ১৬ বাইট থাকে।
ro.hwui.path_cache_size float 4 প্রতি-প্রক্রিয়া পাথ ক্যাশের আকার মেগাবাইটে নির্ধারণ করে। আমরা এমন একটি ক্যাশ ব্যবহার করার পরামর্শ দিচ্ছি যাতে কমপক্ষে একটি 32-বিট টেক্সচারের স্ক্রিন রাখা যায়। উদাহরণস্বরূপ, 1280x800 ডিসপ্লেতে, একটি পূর্ণ স্ক্রিন বাফার প্রায় 4 MB ব্যবহার করে, তাই ক্যাশ কমপক্ষে 4 MB হওয়া উচিত।
ro.hwui.shape_cache_size float 1 প্রতি-প্রক্রিয়ার আকারের ক্যাশের আকার মেগাবাইটে নির্ধারণ করে। এই মানটি বেশ কয়েকটি ক্যাশে ব্যবহার করা হয়, যেমন বৃত্ত এবং গোলাকার আয়তক্ষেত্র। আমরা কমপক্ষে একটি 8-বিট স্ক্রিন ধারণ করার জন্য যথেষ্ট বড় ক্যাশে ব্যবহার করার পরামর্শ দিই। উদাহরণস্বরূপ, 1280x800 ডিসপ্লেতে, একটি পূর্ণ স্ক্রিন বাফার প্রায় 1 MB ব্যবহার করে, তাই ক্যাশটি কমপক্ষে 1 MB হওয়া উচিত।
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 কত দ্রুত টেক্সচার আপলোড করতে পারে তার উপর নির্ভর করে। আমরা কমপক্ষে 1024 পিক্সেল ব্যবহার করার পরামর্শ দিচ্ছি, তবে সর্বাধিক 2048 পিক্সেল। এছাড়াও, পাওয়ার-অফ-টু মান ব্যবহার করুন।
ro.hwui.text_small_cache_height integer 256 ডিফল্ট ফন্ট ক্যাশের উচ্চতা পিক্সেলে নির্ধারণ করে। উপরের সীমা GPU কত দ্রুত টেক্সচার আপলোড করতে পারে তার উপর নির্ভর করে। আমরা কমপক্ষে 256 পিক্সেল কিন্তু সর্বাধিক 1024 পিক্সেল ব্যবহার করার পরামর্শ দিই।
ro.hwui.text_large_cache_width integer 2048 বৃহৎ ফন্ট ক্যাশের প্রস্থ পিক্সেলে নির্ধারণ করে। এই ক্যাশটি ডিফল্ট ফন্ট ক্যাশে ফিট করার জন্য খুব বড় গ্লিফের জন্য ব্যবহৃত হয়। উপরের সীমা GPU কত দ্রুত টেক্সচার আপলোড করতে পারে তার উপর নির্ভর করে। আমরা কমপক্ষে 2048 পিক্সেল কিন্তু সর্বাধিক 4096 পিক্সেল ব্যবহার করার পরামর্শ দিচ্ছি। এছাড়াও, পাওয়ার-অফ-টু মান ব্যবহার করুন।
ro.hwui.text_large_cache_height integer 512 বৃহৎ ফন্ট ক্যাশের উচ্চতা পিক্সেলে নির্ধারণ করে। বৃহৎ ফন্ট ক্যাশ এমন গ্লিফের জন্য ব্যবহৃত হয় যা ডিফল্ট ফন্ট ক্যাশে ফিট করার জন্য খুব বড়। উপরের সীমা GPU কত দ্রুত টেক্সচার আপলোড করতে পারে তার উপর নির্ভর করে। আমরা কমপক্ষে 512 পিক্সেল ব্যবহার করার পরামর্শ দিচ্ছি, তবে সর্বাধিক 2048 পিক্সেল। এছাড়াও, পাওয়ার-অফ-টু মান ব্যবহার করুন।
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 কালো গামা সংশোধন প্রয়োগ করা হয় এমন আলোকসজ্জার থ্রেশহোল্ড নির্ধারণ করে। মানটি অবশ্যই 0-255 পরিসরের মধ্যে হতে হবে।
hwui.text_gamma.white_threshold integer 192 সাদা গামা সংশোধন প্রয়োগ করা হয় এমন আলোকসজ্জার থ্রেশহোল্ড নির্ধারণ করে। মানটি অবশ্যই 0-255 পরিসরের মধ্যে হতে হবে।
hwui.use_gpu_pixel_buffers boolean true OpenGL ES 3.0 হার্ডওয়্যারে PBO-এর ব্যবহার সক্ষম বা অক্ষম করে। রেন্ডারার অ্যাসিঙ্ক্রোনাস টেক্সচার আপলোড করার জন্য PBO ব্যবহার করে, বিশেষ করে ফন্ট ক্যাশের জন্য। এই বৈশিষ্ট্যটি সর্বদা সক্রিয় থাকা উচিত, তবে PBO-এর কারণে যদি কোনও ত্রুটি বা খারাপ পারফরম্যান্স হয় তবে আপনি এটি আনআপ বা ডেভেলপমেন্টের সময় অক্ষম করতে পারেন। এই কারণেই বৈশিষ্ট্যটি কেবল পঠনযোগ্য নয়।