vr_module স্ট্রাকট রেফারেন্স

vr_module স্ট্রাকট রেফারেন্স

#include < vr.h >

ডেটা ক্ষেত্র

struct hw_module_t সাধারণ
অকার্যকর(* init )(struct vr_module *মডিউল)
অকার্যকর(* set_vr_mode )(struct vr_module *মডিউল, bool সক্ষম)
অকার্যকর * সংরক্ষিত [8-2]

বিস্তারিত বিবরণ

যখন একটি ভার্চুয়াল রিয়েলিটি (ভিআর) অ্যাপ্লিকেশন ব্যবহার করা হচ্ছে তখন কলব্যাক পেতে এই HAL-কে প্রয়োগ করুন। ভিআর অ্যাপ্লিকেশনগুলির বৈশিষ্ট্যগতভাবে বেশ কয়েকটি বিশেষ প্রদর্শন এবং কর্মক্ষমতা প্রয়োজনীয়তা রয়েছে, যার মধ্যে রয়েছে:

  • কম সেন্সর লেটেন্সি - IMU, অ্যাক্সিলোমিটার এবং গাইরো থেকে অ্যাপ্লিকেশান-দৃশ্যমান কলব্যাকের মোট এন্ড-টু-এন্ড লেটেন্সি অবশ্যই খুব কম হতে হবে (সাধারণত <5ms)। এটি HIFI সেন্সর সমর্থনের জন্য প্রয়োজন৷
  • কম ডিসপ্লে লেটেন্সি - প্রকৃত ডিসপ্লে আপডেটে জিপিইউ ড্র কল থেকে এন্ড-টু-এন্ড লেটেন্সি যতটা সম্ভব কম হতে হবে। এটি একটি একক-বাফার মোডে SurfaceFlinger ব্যবহার করে এবং ডিসপ্লে স্ক্যানআউটের সাথে সঠিকভাবে ড্র কলগুলি সিঙ্ক্রোনাইজ করা হয়েছে তা নিশ্চিত করে অর্জন করা হয়। এই আচরণটি অ্যাপ্লিকেশনগুলিতে একটি EGL এক্সটেনশনের মাধ্যমে প্রকাশ করা হয়। এর জন্য প্রয়োজনীয় EGL এক্সটেনশনগুলির জন্য নীচে দেখুন।
  • লো-পারসিসটেন্স ডিসপ্লে - ডিসপ্লে পারসিসটেন্স সেটিংস যতটা সম্ভব কম সেট করতে হবে যখন এখনও যুক্তিসঙ্গত উজ্জ্বলতা বজায় থাকবে। 60Hz এ চলমান একটি সাধারণ ডিসপ্লের জন্য, পিক্সেলকে <=3.5ms এর জন্য আলোকিত করা উচিত যাতে কম-স্থিরতা বিবেচনা করা হয়। এটি একটি VR সেটিংয়ে চলাফেরার সময় ভূত এড়ায় এবং BRIGHTNESS_MODE_LOW_PERSISTENCE সেট করা থাকলে Light.h HAL থেকে সক্রিয় করা উচিত।
  • জিপিইউ এবং সিপিইউ-এর সামঞ্জস্যপূর্ণ পারফরম্যান্স - যখন একটি ভিআর অ্যাপ্লিকেশনের জন্য একটি মিশ্র জিপিইউ/সিপিইউ ওয়ার্কলোড দেওয়া হয় এবং নিয়মিত বিরতিতে একটি ফ্রেমে কয়েকবার কাজ করে, তখন সিপিইউ শিডিউলিং নিশ্চিত করতে হবে যে অ্যাপ্লিকেশন রেন্ডার থ্রেডের কাজটি 1 মিসেসের মধ্যে ধারাবাহিকভাবে চালানো হবে। নির্ধারিত, এবং ড্র উইন্ডো শেষ হওয়ার আগে সম্পন্ন হয়। এই লক্ষ্যে, VR মোডে থাকাকালীন একটি একক CPU কোর শুধুমাত্র বর্তমানে চলমান VR অ্যাপ্লিকেশনের রেন্ডার থ্রেডের জন্য সংরক্ষিত থাকতে হবে এবং "টপ-অ্যাপ" cpuset-এ উপলব্ধ করতে হবে। একইভাবে, একটি উপযুক্ত CPU, GPU, এবং বাস ক্লকরেট অবশ্যই বজায় রাখতে হবে যাতে প্রতিটি ফ্রেম রেন্ডার করার জন্য নির্ধারিত সময়ের মধ্যে রেন্ডারিং ওয়ার্কলোড শেষ হয় যখন POWER_HINT_SUSTAINED_PERFORMANCE পতাকাটি power.h HAL-এ সেট করা থাকে যখন ডিভাইসটি VR মোডে থাকে। তাপগতভাবে থ্রোটল করা হচ্ছে না।
  • প্রয়োজনীয় EGL এক্সটেনশনগুলি অবশ্যই উপস্থিত থাকতে হবে - উপরের ক্ষমতাগুলিকে অনুমতি দেওয়ার জন্য প্রয়োজনীয় যেকোন GPU সেটিংস প্রয়োজন, EGL এক্সটেনশনগুলি সহ: EGL_ANDROID_create_native_client_buffer, EGL_ANDROID_front_buffer_auto_refresh, EGL_EXT_protected_EGR_Benter_contable, KHR_reusable_sync, এবং EGL_KHR_wait_sync।
  • সঠিক তাপীয় রিপোর্টিং - সঠিক তাপীয় তাপমাত্রা এবং সীমা অবশ্যই তাপীয় HAL-এ রিপোর্ট করতে হবে। বিশেষত, বর্তমান ত্বকের তাপমাত্রা অবশ্যই DEVICE_TEMPERATURE_SKIN-এর জন্য সঠিকভাবে রিপোর্ট করতে হবে এবং এই ডিভাইসের জন্য রিপোর্ট করা vr_throttling_threshold অবশ্যই তাপমাত্রা সীমার সঠিকভাবে রিপোর্ট করতে হবে যার উপরে ডিভাইসের থার্মাল গভর্নর CPU, GPU, এবং/অথবা বাস ক্লকরেটগুলিকে থ্রোটল করে ন্যূনতম পারফরম্যান্সের জন্য প্রয়োজনীয় আগের বুলেট পয়েন্ট দেখুন)।

সাধারণভাবে, এই এইচএএল বাস্তবায়নকারী বিক্রেতারা উপরের যেকোনো প্রয়োজনের জন্য প্রয়োজনীয় VR-নির্দিষ্ট পারফরম্যান্স টিউনিং সক্ষম করতে এবং VR ডিসপ্লে মোডগুলির জন্য সর্বোত্তম ডিভাইসের বৈশিষ্ট্যগুলি চালু করতে একটি ইঙ্গিত হিসাবে set_vr_mode ব্যবহার করবেন বলে আশা করা হচ্ছে। উপরের প্রয়োজনীয়তাগুলি পূরণ করার জন্য কোন অপ্টিমাইজেশন উপলব্ধ না থাকলে বা প্রয়োজনীয় না থাকলে set_vr_mode কলটি কেবল কিছুই করতে পারে না।

অ্যান্ড্রয়েড ফ্রেমওয়ার্ক থেকে এই HAL-এর কোনো পদ্ধতি একযোগে বলা হবে না।

ফাইল vr.h এর 82 লাইনে সংজ্ঞা।

ফিল্ড ডকুমেন্টেশন

struct hw_module_t সাধারণ

মডিউলের সাধারণ পদ্ধতি। এটি অবশ্যই vr_module- এর প্রথম সদস্য হতে হবে কারণ এই কাঠামোর ব্যবহারকারীরা একটি vr_module পয়েন্টারে একটি hw_module_t কাস্ট করতে পারে যেখানে এটি জানা যায় যে hw_module_t একটি vr_module উল্লেখ করে।

ফাইল vr.h এর 89 লাইনে সংজ্ঞা।

void(* init)(struct vr_module *মডিউল)

রানটাইম স্টার্টআপের সময় প্রয়োজনীয় যেকোনো স্টেট সেট আপ করার জন্য HAL বাস্তবায়নের সুবিধার পদ্ধতি। এটি বুট পর্বের সময় VrManagerService থেকে একবার কল করা হয়। শুরুর আগে এই HAL থেকে কোনো পদ্ধতি ডাকা হবে না।

ফাইল vr.h এর 96 লাইনে সংজ্ঞা।

অকার্যকর* সংরক্ষিত[8-2]

ফাইল vr.h এর 110 লাইনে সংজ্ঞা।

void(* set_vr_mode)(struct vr_module *মডিউল, bool সক্ষম)

VR মোড অবস্থা সেট করুন। সক্ষম করা প্যারামিটারের সম্ভাব্য অবস্থাগুলি হল: মিথ্যা - VR মোড অক্ষম করা হয়েছে, সমস্ত VR-নির্দিষ্ট সেটিংস বন্ধ করুন৷ সত্য - VR মোড সক্ষম করা হয়েছে, সমস্ত VR-নির্দিষ্ট সেটিংস চালু করুন৷

যখনই Android সিস্টেম VR মোডে প্রবেশ করে বা ছেড়ে যায় তখন এটিকে বলা হয়। এটি সাধারণত ঘটবে যখন ব্যবহারকারী একটি VR অ্যাপ্লিকেশনে বা থেকে স্যুইচ করে যা স্টেরিওস্কোপিক রেন্ডারিং করছে।

ফাইল vr.h এর 107 লাইনে সংজ্ঞা।


এই কাঠামোর জন্য ডকুমেন্টেশন নিম্নলিখিত ফাইল থেকে তৈরি করা হয়েছিল:
  • hardware/libhardware/include/hardware/ vr.h