সারফেস এবং সারফেসহোল্ডার

সারফেস অবজেক্ট অ্যাপ্লিকেশানগুলিকে স্ক্রীনে উপস্থাপিত ছবিগুলিকে রেন্ডার করতে সক্ষম করে৷ সারফেসহোল্ডার ইন্টারফেসগুলি অ্যাপ্লিকেশানগুলিকে পৃষ্ঠগুলি সম্পাদনা এবং নিয়ন্ত্রণ করতে সক্ষম করে৷

পৃষ্ঠতল

একটি পৃষ্ঠ একটি ভোক্তা সঙ্গে বাফার বিনিময় একটি উত্পাদক জন্য একটি ইন্টারফেস.

একটি ডিসপ্লে পৃষ্ঠের জন্য বাফার কিউ সাধারণত ট্রিপল-বাফারিংয়ের জন্য কনফিগার করা হয়। চাহিদা অনুযায়ী বাফার বরাদ্দ করা হয়, তাই যদি প্রযোজক ধীরে ধীরে বাফার তৈরি করে, যেমন 60 fps ডিসপ্লেতে 30 fps-এ, তাহলে সারিতে শুধুমাত্র দুটি বরাদ্দ করা বাফার থাকতে পারে। চাহিদা অনুযায়ী বাফার বরাদ্দ করা মেমরি খরচ কমাতে সাহায্য করে। আপনি dumpsys SurfaceFlinger আউটপুটে প্রতিটি স্তরের সাথে যুক্ত বাফারগুলির একটি সারাংশ দেখতে পারেন।

বেশিরভাগ ক্লায়েন্ট OpenGL ES বা Vulkan ব্যবহার করে পৃষ্ঠের উপর রেন্ডার করে। যাইহোক, কিছু ক্লায়েন্ট একটি ক্যানভাস ব্যবহার করে পৃষ্ঠের উপর রেন্ডার করে।

ক্যানভাস রেন্ডারিং

ক্যানভাস বাস্তবায়ন স্কিয়া গ্রাফিক্স লাইব্রেরি দ্বারা প্রদান করা হয়। আপনি যদি একটি আয়তক্ষেত্র আঁকতে চান, তাহলে আপনি ক্যানভাস API কল করুন, যা একটি বাফারে যথাযথভাবে বাইট সেট করে। একটি বাফার দুটি ক্লায়েন্ট দ্বারা একবারে আপডেট করা হয় না তা নিশ্চিত করতে বা প্রদর্শিত হওয়ার সময় এটিতে লেখা হয় না, এটি অ্যাক্সেস করতে বাফারটিকে লক করুন। ক্যানভাস লকগুলির সাথে কাজ করতে নিম্নলিখিত কমান্ডগুলি ব্যবহার করুন:

  • lockCanvas() CPU-তে রেন্ডার করার জন্য বাফার লক করে এবং অঙ্কনের জন্য ব্যবহার করার জন্য একটি ক্যানভাস ফেরত দেয়।
  • unlockCanvasAndPost() বাফার আনলক করে এবং কম্পোজিটরের কাছে পাঠায়।
  • lockHardwareCanvas() GPU-তে রেন্ডার করার জন্য বাফার লক করে এবং অঙ্কনের জন্য ব্যবহার করার জন্য একটি ক্যানভাস ফেরত দেয়।

প্রথমবার প্রযোজক বাফার কিউ থেকে বাফারের জন্য অনুরোধ করলে, বাফারটি বরাদ্দ করা হয় এবং শূন্যে আরম্ভ করা হয়। প্রসেসের মধ্যে অসাবধানতাবশত ডেটা শেয়ার করা এড়াতে সূচনা করা প্রয়োজন। যাইহোক, যদি আপনি একটি বাফার পুনরায় ব্যবহার করেন, পূর্ববর্তী বিষয়বস্তু এখনও উপস্থিত থাকে। আপনি যদি বারবার lockCanvas() এবং unlockCanvasAndPost() কিছু না আঁকে কল করেন, তাহলে প্রযোজক পূর্বে রেন্ডার করা ফ্রেমের মধ্যে চক্র চালান।

পৃষ্ঠ লক/আনলক কোড পূর্বে রেন্ডার করা বাফারের একটি রেফারেন্স রাখে। আপনি যদি পৃষ্ঠটি লক করার সময় একটি নোংরা অঞ্চল নির্দিষ্ট করেন তবে এটি পূর্ববর্তী বাফার থেকে নন-ডার্টি পিক্সেলগুলি অনুলিপি করে। SurfaceFlinger বা HWC সাধারণত বাফার পরিচালনা করে; কিন্তু যেহেতু আমাদের শুধুমাত্র বাফার থেকে পড়তে হবে, তাই এক্সক্লুসিভ অ্যাক্সেসের জন্য অপেক্ষা করার দরকার নেই।

সারফেস হোল্ডার

একটি সারফেসহোল্ডার হল একটি ইন্টারফেস যা সিস্টেমটি অ্যাপগুলির সাথে পৃষ্ঠের মালিকানা ভাগ করতে ব্যবহার করে। কিছু ক্লায়েন্ট যারা পৃষ্ঠের সাথে কাজ করে তারা একটি সারফেসহোল্ডার চায়, কারণ পৃষ্ঠের প্যারামিটারগুলি পেতে এবং সেট করার জন্য APIগুলি একটি সারফেসহোল্ডারের মাধ্যমে প্রয়োগ করা হয়। একটি সারফেসভিউতে একটি সারফেসহোল্ডার রয়েছে।

একটি দৃশ্যের সাথে ইন্টারঅ্যাক্ট করা বেশিরভাগ উপাদান একটি সারফেসহোল্ডার জড়িত। অন্যান্য কিছু API, যেমন MediaCodec, সারফেসেই কাজ করে।