অ্যান্ড্রয়েডে Vulkan ব্যবহার শুরু করুন
ভলকান হল অ্যান্ড্রয়েডের প্রাথমিক নিম্ন-স্তরের গ্রাফিক্স API। ভলকান এমন গেমগুলির জন্য সর্বোত্তম কর্মক্ষমতা প্রদান করে যেগুলি তাদের নিজস্ব গেম ইঞ্জিন এবং রেন্ডারার প্রয়োগ করে।
আপনার গেম ইঞ্জিনে Vulkan সফলভাবে বাস্তবায়ন করতে আপনাকে অবশ্যই:
- Vulkan এর সাথে কোন অ্যান্ড্রয়েড ডিভাইস ব্যবহার করবেন তা শনাক্ত করুন
- পুরোনো অ্যান্ড্রয়েড ডিভাইসগুলিকে সমর্থন করার সুবিধাগুলি বুঝুন
- আপনার অ্যান্ড্রয়েড বিল্ড টার্গেটে Vulkan যোগ করুন
- Vulkan-এর জন্য SPIR-V তৈরি করতে একটি শেডার কম্পাইলার বেছে নিন
- রানটাইমে উপলব্ধ Vulkan API সংস্করণ নির্ধারণ করুন
- Vulkan প্রোফাইল, ফ্রেম পেসিং এবং প্রি-রোটেশন ব্যবহার করে আপনার Vulkan রেন্ডারিং অপারেশনগুলিকে কীভাবে অপ্টিমাইজ করবেন তা শিখুন।
- ডিবাগিং এবং কর্মক্ষমতা বিশ্লেষণের জন্য গ্রাফিক্স টুল নির্বাচন করুন
- দ্রষ্টব্য: ইউনিটি বা আনরিয়াল গেম ইঞ্জিনের সাহায্যে অ্যান্ড্রয়েডে ভলকান ব্যবহারের তথ্যের জন্য, দেখুন:
- ইউনিটিতে ভলকান
- অবাস্তব উপর ভলকান
Vulkan এর জন্য ন্যূনতম ডিভাইস স্পেসিফিকেশন নির্বাচন করুন
Vulkan অ্যান্ড্রয়েডে Android 7.0 (API লেভেল 24) দিয়ে শুরু হয়। Android 7.0 বা তার বেশি ভার্সন চালিত সমস্ত Android ডিভাইস Vulkan সমর্থন করে না। আপনার গেমটি কোন Vulkan-সক্ষম Android ডিভাইসগুলি সমর্থন করে তা আপনাকে নির্ধারণ করতে হবে।
সুপারিশ
ভালকান সাপোর্টের জন্য ন্যূনতম প্রয়োজনীয়তা হিসেবে নিম্নলিখিত স্পেসিফিকেশনগুলি ব্যবহার করুন:
- ডিভাইসটি Android 10.0 (API লেভেল 29) বা তার উচ্চতর ভার্সনে চলছে
- ডিভাইসটি Vulkan API সংস্করণ 1.1 বা উচ্চতর সমর্থন করে
- ডিভাইসটিতে হার্ডওয়্যার ক্ষমতা এবং বৈশিষ্ট্য রয়েছে যা ২০২২ অ্যান্ড্রয়েড বেসলাইন প্রোফাইলের সাথে সামঞ্জস্যপূর্ণ।
পুরোনো ডিভাইস সাপোর্ট
যদি আপনার গেমটি বিভিন্ন স্তরের গ্রাফিক্স ক্ষমতা সম্পন্ন বিভিন্ন ধরণের ডিভাইসে চালানোর জন্য ডিজাইন করা হয়, তাহলে আপনাকে Vulkan এর জন্য ন্যূনতম ডিভাইস স্পেসিফিকেশন নির্বাচন করুন -এ সুপারিশকৃত ডিভাইসগুলির চেয়ে পুরানো ডিভাইসগুলিকে সমর্থন করতে হতে পারে। পুরানো ডিভাইসগুলির জন্য সমর্থন তৈরি করার আগে, Vulkan আপনার গেমটিতে সুবিধা প্রদান করে কিনা তা মূল্যায়ন করুন। যেসব গেমগুলিতে প্রচুর ড্র কল রয়েছে এবং যেগুলি OpenGL ES ব্যবহার করে সেগুলি OpenGL ES-এর মধ্যে ড্র কল করার উচ্চ খরচের কারণে উল্লেখযোগ্য ড্রাইভার ওভারহেড দেখতে পারে। এই গেমগুলি গ্রাফিক্স ড্রাইভারে তাদের ফ্রেম সময়ের একটি বড় অংশ ব্যয় করে CPU-তে আবদ্ধ হতে পারে। OpenGL ES থেকে Vulkan-এ স্যুইচ করার মাধ্যমে গেমগুলি CPU এবং পাওয়ার ব্যবহারে উল্লেখযোগ্য হ্রাসও দেখতে পারে। এটি বিশেষভাবে প্রযোজ্য যদি আপনার গেমটিতে জটিল দৃশ্য থাকে যা কার্যকরভাবে ড্র কল কমাতে ইন্সট্যান্সিং ব্যবহার করতে পারে না। পুরানো ডিভাইসগুলিকে লক্ষ্য করার সময়, OpenGL ES রেন্ডারিং সমর্থনকে ফলব্যাক হিসাবে অন্তর্ভুক্ত করুন, কারণ আপনার টার্গেট ডিভাইস তালিকার কিছু ডিভাইসে Vulkan বাস্তবায়ন থাকতে পারে যা আপনার গেমটি নির্ভরযোগ্যভাবে চালাতে পারে না।
আপনি হয়তো পুরোনো Vulkan-সক্ষম ডিভাইসগুলিকে সমর্থন করতে চাইবেন না কারণ এগুলিতে কর্মক্ষমতা এবং বৈশিষ্ট্যের অভাব রয়েছে অথবা স্থিতিশীলতার সমস্যা রয়েছে।
কর্মক্ষমতা এবং বৈশিষ্ট্য
পুরনো Vulkan-সক্ষম অ্যান্ড্রয়েড ডিভাইসগুলিতে আপনার গেম চালানোর জন্য প্রয়োজনীয় বৈশিষ্ট্যগুলির জন্য রেন্ডারিং পারফরম্যান্স বা হার্ডওয়্যার সমর্থন নাও থাকতে পারে। এটি বিশেষ করে যদি আপনার গেমটিতে উচ্চ-বিশ্বস্ত গ্রাফিক্স থাকে এবং Vulkan হল একমাত্র API যা আপনি Android এ লক্ষ্য করছেন। অনেক পুরনো ডিভাইস Vulkan API এর 1.0.3 সংস্করণে সীমাবদ্ধ এবং প্রায়শই আরও আধুনিক হার্ডওয়্যারে উপলব্ধ বহুল ব্যবহৃত Vulkan এক্সটেনশনগুলি অনুপস্থিত থাকে।
স্থিতিশীলতা
পুরনো অ্যান্ড্রয়েড ডিভাইসগুলিতে পুরনো Vulkan ড্রাইভার ব্যবহার করা হতে পারে। এই ড্রাইভার ভার্সনগুলিতে এমন বাগ থাকতে পারে যা আপনার গেমের স্থায়িত্বকে প্রভাবিত করতে পারে। ড্রাইভার বাগগুলি সমাধানের জন্য পরীক্ষা এবং ইঞ্জিনিয়ারিংয়ে উল্লেখযোগ্য সময় ব্যয় করতে হতে পারে।
আপনার প্রকল্পে Vulkan যোগ করুন
আপনার প্রকল্পে Vulkan যোগ করতে আপনার যা করতে হবে:
- Vulkan API হেডার অন্তর্ভুক্ত করুন
- SPIR-V তে শেডার কোড কম্পাইল করুন
- রানটাইমে Vulkan API-এ কল করুন
Vulkan API হেডার অন্তর্ভুক্ত করুন
Vulkan ব্যবহার করে এমন কোড কম্পাইল করার জন্য আপনার গেমটিতে Vulkan API হেডার ফাইল অন্তর্ভুক্ত করতে হবে। আপনি Android NDK- তে অথবা Vulkan SDK রিলিজে প্যাকেজ করা Vulkan হেডারগুলির একটি কপি খুঁজে পেতে পারেন। যেকোনো নির্দিষ্ট NDK সংস্করণে শুধুমাত্র NDK রিলিজের সময় উপলব্ধ Vulkan হেডারগুলি অন্তর্ভুক্ত থাকে। আপনি যদি NDK থেকে Vulkan হেডার ব্যবহার করেন, তাহলে NDK সংস্করণ 25 বা তার উচ্চতর ব্যবহার করুন, যার মধ্যে Vulkan সংস্করণ 1.3 সমর্থন করে এমন হেডার ফাইল রয়েছে। Vulkan SDK-তে হেডারগুলির সবচেয়ে সাম্প্রতিক সংস্করণ রয়েছে।
SPIR-V তে শেডার কোড কম্পাইল করুন
Vulkan API আশা করে যে shader প্রোগ্রামগুলি SPIR-V বাইনারি ইন্টারমিডিয়েট ফর্ম্যাটে সরবরাহ করা হবে। এই কনভেনশনটি OpenGL ES থেকে আলাদা, যেখানে আপনি OpenGL শেডিং ল্যাঙ্গুয়েজ (GLSL) এ লেখা সোর্স কোড টেক্সট স্ট্রিং হিসাবে জমা দিতে পারেন। GLSL বা হাই-লেভেল শেডার ল্যাঙ্গুয়েজ (HLSL) এর মতো শেডার ভাষায় লেখা কোড নিতে একটি শেডার কম্পাইলার ব্যবহার করুন এবং Vulkan এর সাথে ব্যবহারের জন্য এটি SPIR-V মডিউলে কম্পাইল করুন।
shaderc কম্পাইলারটি GLSL-এ লেখা শেডার প্রোগ্রামগুলিকে SPIR-V-তে কম্পাইল করতে ব্যবহার করা যেতে পারে। যদি আপনার গেমটি HLSL ব্যবহার করে, তাহলে DirectXShaderCompiler SPIR-V আউটপুট সমর্থন করে। সাধারণত, আপনি আপনার গেমের জন্য সম্পদ তৈরির প্রক্রিয়ার অংশ হিসাবে অফলাইনে শেডার প্রোগ্রামগুলি কম্পাইল করেন এবং আপনার রানটাইম সম্পদের অংশ হিসাবে SPIR-V মডিউলগুলি অন্তর্ভুক্ত করেন।
রানটাইমে Vulkan API-এ কল করুন
Vulkan API কল করার জন্য, আপনার গেমটিকে Vulkan API কলের জন্য ফাংশন পয়েন্টার পেতে হবে। এটি করার সবচেয়ে সহজ উপায় হল libvulkan.so শেয়ার্ড লাইব্রেরির সাথে লিঙ্ক করা, যা Android NDK-তে অন্তর্ভুক্ত। লাইব্রেরির সাথে লিঙ্ক করার দুটি ত্রুটি রয়েছে: অতিরিক্ত ফাংশন ডিসপ্যাচ ওভারহেড এবং Vulkan API ফাংশন পয়েন্টারগুলি স্বয়ংক্রিয়ভাবে সমাধান করা হয় এমন সীমাবদ্ধতা।
যখন আপনি একটি Vulkan API ফাংশন কল করেন, তখন নিয়ন্ত্রণটি Vulkan লোডার নামক একটি কনস্ট্রাক্ট দ্বারা পরিচালিত একটি ডিসপ্যাচ টেবিলের মধ্য দিয়ে যায়। Android LunarG লোডার নয় বরং নিজস্ব Vulkan লোডার বাস্তবায়ন ব্যবহার করে। এই লোডার সিস্টেমটি Vulkan API এর লেয়ার আর্কিটেকচারের অংশ। বিল্ড টাইমে সিস্টেম লাইব্রেরির সাথে লিঙ্ক করার ফলে একটি নির্দিষ্ট API কলের জন্য একটি অতিরিক্ত ডিসপ্যাচ লেভেল তৈরি হয়। যদিও ওভারহেড ছোট, তবে উচ্চ ভলিউম Vulkan কল সম্পাদনকারী গেমগুলির জন্য এটি লক্ষণীয় হতে পারে।
সিস্টেম লাইব্রেরি সাধারণত শুধুমাত্র ভলকান ফাংশনের পয়েন্টারগুলি সমাধান করে যা মূল API-এর অংশ হিসাবে বিবেচিত হয়। ভলকানে প্রচুর সংখ্যক এক্সটেনশন রয়েছে, যা অতিরিক্ত ভলকান ফাংশনগুলিকে সংজ্ঞায়িত করে, যার মধ্যে অনেকগুলি সিস্টেম লাইব্রেরি দ্বারা স্বয়ংক্রিয়ভাবে সমাধান করা হয় না। এই ভলকান ফাংশনগুলি ব্যবহার করার আগে আপনাকে ম্যানুয়ালি পয়েন্টারগুলি সমাধান করতে হবে।
To mitigate these issues, dynamically resolve pointers to all Vulkan functions you intend to use at runtime. One way to accomplish this is by using an open source meta-loader library such as volk . The AGDKTunnel sample game integrates volk for this purpose. If you are using a meta-loader library, don't link against the libvulkan.so shared library in your build scripts.
উপলব্ধ Vulkan API সংস্করণ নির্ধারণ করুন
অ্যান্ড্রয়েড নিম্নলিখিত Vulkan API সংস্করণগুলিকে সমর্থন করে:
- ১.০.৩
- ১.১
- ১.৩
একটি নির্দিষ্ট ডিভাইসে উপলব্ধ সর্বোচ্চ Vulkan API সংস্করণ নম্বরটি Android সংস্করণ এবং Vulkan ড্রাইভার সমর্থন দ্বারা নির্ধারিত হয়।
অ্যান্ড্রয়েড সংস্করণ
Vulkan API সংস্করণের জন্য প্ল্যাটফর্ম সমর্থন ন্যূনতম Android সংস্করণের (API স্তর) উপর নির্ভরশীল:
- ১.৩ — অ্যান্ড্রয়েড ১৩.০ (এপিআই লেভেল ৩৩) এবং উচ্চতর
- ১.১ — অ্যান্ড্রয়েড ১০.০ (এপিআই লেভেল ২৯) এবং উচ্চতর
- ১.০.৩ — অ্যান্ড্রয়েড ৭.০ (এপিআই লেভেল ২৪) এবং উচ্চতর
ভলকান ড্রাইভার সাপোর্ট
Vulkan API সংস্করণের জন্য Android প্ল্যাটফর্ম সমর্থন গ্যারান্টি দেয় না যে API সংস্করণটি ডিভাইসের Vulkan ড্রাইভার দ্বারা সমর্থিত। Android 13 চালিত ডিভাইসটি Vulkan API এর শুধুমাত্র 1.1 সংস্করণ সমর্থন করতে পারে।
Vulkan আরম্ভ করার সময়, এর চেয়ে বড় API সংস্করণের অনুরোধ করবেন না:
- ডিভাইসে চলমান অ্যান্ড্রয়েড সংস্করণের জন্য সর্বোচ্চ Vulkan API সংস্করণ
- vkEnumerateInstanceVersion দ্বারা রিপোর্ট করা Vulkan API সংস্করণ
- VkPhysicalDeviceProperties কাঠামোর
apiVersionসম্পত্তি দ্বারা রিপোর্ট করা Vulkan API সংস্করণ
সর্বোচ্চ সমর্থিত Vulkan API সংস্করণ নির্ধারণের একটি উদাহরণ নিম্নরূপ:
// Minimum Android API levels for Vulkan 1.3/1.1 version support
static constexpr int kMinimum_vk13_api_level = 33;
static constexpr int kMinimum_vk11_api_level = 29;
uint32_t GetHighestSupportedVulkanVersion(VkPhysicalDevice physical_device) {
uint32_t instance_api_version = 0;
vkEnumerateInstanceVersion(&instance_api_version);
VkPhysicalDeviceProperties device_properties;
vkGetPhysicalDeviceProperties(physical_device, &device_properties);
// Instance and device versions don't have to match, use the lowest version
// number for API support if they don't.
const uint32_t driver_api_version =
(instance_api_version < device_properties.apiVersion) ?
instance_api_version : device_properties.apiVersion;
const int device_api_level = android_get_device_api_level();
if (device_api_level >= kMinimum_vk13_api_level &&
driver_api_version >= VK_API_VERSION_1_3) {
return VK_API_VERSION_1_3;
} else if (device_api_level >= kMinimum_vk11_api_level &&
driver_api_version >= VK_API_VERSION_1_1) {
return VK_API_VERSION_1_1;
}
return VK_API_VERSION_1_0;
}
ভলকান প্রোফাইলের সামঞ্জস্যতা নির্ধারণ করুন
Vulkan প্রোফাইল হল JSON ফাইল যা প্রয়োজনীয় বৈশিষ্ট্য, এক্সটেনশন, ক্ষমতা এবং ন্যূনতম প্যারামিটার সীমা নির্ধারণ করে যা একটি Vulkan ডিভাইসকে প্রোফাইলের সাথে সামঞ্জস্যপূর্ণ হতে সমর্থন করতে হবে। একটি ডিভাইস একটি নির্দিষ্ট Vulkan প্রোফাইলের সাথে সামঞ্জস্যপূর্ণ কিনা তা নির্ধারণ করতে, যেমন 2022 Android Baseline প্রোফাইল , ওপেন সোর্স Vulkan Profiles API লাইব্রেরি ব্যবহার করুন। আপনি নিজেও প্রোফাইল JSON ফাইলটি পার্স করতে পারেন এবং প্রোফাইলের সামঞ্জস্যতা নির্ধারণ করতে প্রাসঙ্গিক Vulkan API ব্যবহার করে ডিভাইসের ক্ষমতাগুলি অনুসন্ধান করতে পারেন।
ভলকান প্রোফাইল
অ্যান্ড্রয়েড ভলকান প্রোফাইল ব্যবহার করছে যা অ্যান্ড্রয়েড চালিত প্রতিটি ডিভাইসের জন্য কোন বৈশিষ্ট্য এবং এক্সটেনশন উপলব্ধ তা নির্ধারণ করে।
অ্যান্ড্রয়েড বেসলাইন প্রোফাইল (ABP) হল ভলকান প্রোফাইল তৈরির প্রথম প্রচেষ্টা। ABP2021 এবং ABP2022 হল পিছনের দিকের প্রোফাইল যা সেই সময়ে 85% এরও বেশি সক্রিয় ডিভাইসকে কভার করার লক্ষ্যে তৈরি। ভবিষ্যতে কোনও নতুন ABP থাকবে না।
Vulkan Profiles for Android (VPA) হল একটি নতুন ভবিষ্যৎমুখী প্রোফাইল যা সফ্টওয়্যার ডেভেলপারদের চাহিদা প্রতিফলিত করে এবং হার্ডওয়্যার ডেভেলপাররা যত তাড়াতাড়ি সম্ভব তাদের চাহিদা পূরণ করতে পারে ততক্ষণ সামঞ্জস্যপূর্ণ বৈশিষ্ট্যগুলি পরিচালনা করে। VPA15_minimums হল Android 15 এর জন্য প্রথম প্রোফাইল এবং প্রতিটি বড় অ্যান্ড্রয়েড রিলিজ কভার করার জন্য প্রতি বছর একটি নতুন VPA থাকবে।
ফ্রেম পেসিং বাস্তবায়ন করুন
উচ্চমানের গেমপ্লে অভিজ্ঞতা প্রদানের জন্য সঠিক ফ্রেম পেসিং একটি অপরিহার্য অংশ। অ্যান্ড্রয়েড গেম ডেভেলপমেন্ট কিটে ফ্রেম পেসিং লাইব্রেরি রয়েছে যা আপনার গেমটিকে সর্বোত্তম ফ্রেম পেসিং অর্জনে সহায়তা করবে। আরও বাস্তবায়নের বিশদ বিবরণের জন্য, আপনার Vulkan রেন্ডারারে অ্যান্ড্রয়েড ফ্রেম পেসিং ইন্টিগ্রেট করুন দেখুন।
অন্তর্নিহিত সিঙ্ক্রোনাইজেশন এবং ফ্রেম পেসিংয়ের উপর নির্ভর করবেন না
vkAcquireNextImageKHR এবং vkQueuePresentKHR সোয়াপচেইন পরিচালনা করতে ব্যবহৃত হয়। সাধারণ অ্যাপ্লিকেশন বা GPU সিঙ্ক্রোনাইজেশনের জন্য তাদের সম্ভাব্য ব্লকিং আচরণের উপর নির্ভর করা এড়িয়ে চলুন।
এই ফাংশনগুলির সুনির্দিষ্ট ব্লকিং আচরণ নিম্নলিখিত ক্ষেত্রে উল্লেখযোগ্যভাবে ভিন্ন হতে পারে:
- অ্যান্ড্রয়েড ডিভাইস
- জিপিইউ ড্রাইভার
- উপস্থাপনা ইঞ্জিনের অবস্থা ( VkPresentModeKHR )
vkAcquireNextImageKHR এর একমাত্র উদ্দেশ্য হল একটি উপলব্ধ উপস্থাপনযোগ্য ছবি অর্জন করা এবং এটি ব্লক করতেও পারে আবার নাও করতে পারে। একইভাবে, vkQueuePresentKHR একটি ছবি প্রদর্শনের জন্য একটি অনুরোধ সারিবদ্ধ করে এবং ব্লক করতেও পারে আবার নাও করতে পারে।
কোনও ফাংশনই সম্পর্কহীন CPU কাজ বা GPU ক্রিয়াকলাপ সিঙ্ক্রোনাইজ করার জন্য নির্ভরযোগ্য গ্যারান্টি প্রদান করে না।
শক্তিশালী সিঙ্ক্রোনাইজেশনের জন্য, সর্বদা স্পষ্ট ভলকান প্রিমিটিভ ব্যবহার করুন যেমন GPU-GPU নির্ভরতার জন্য সেমাফোর (যেমন, রেন্ডার-টু-প্রেজেন্ট), GPU-CPU সিঙ্ক্রোনাইজেশনের জন্য বেড়া (যেমন, CPU-তে রেন্ডারিং শেষ হওয়ার সময় জানা), এবং সূক্ষ্ম-গ্রেইনড GPU এক্সিকিউশন এবং মেমরি নির্ভরতার জন্য পাইপলাইন বাধা বা ইভেন্ট। স্পষ্ট সিঙ্ক্রোনাইজেশন ব্যবহার করে পূর্বাভাসযোগ্য আচরণ নিশ্চিত করা হয় এবং অ্যান্ড্রয়েডের বিভিন্ন হার্ডওয়্যার ইকোসিস্টেমের অন্তর্নিহিত বাস্তবায়ন-নির্দিষ্ট সময় পরিবর্তনের কারণে সৃষ্ট সূক্ষ্ম বাগগুলি এড়ানো যায়।
প্রাক-ঘূর্ণন বাস্তবায়ন করুন
অ্যান্ড্রয়েড ডিভাইসগুলি একাধিক ওরিয়েন্টেশনে প্রদর্শন করতে পারে। ডিভাইস ওরিয়েন্টেশন রেন্ডার পৃষ্ঠের ওরিয়েন্টেশন থেকে আলাদা হতে পারে। অ্যান্ড্রয়েডে OpenGL ES এর বিপরীতে, Vulkan দুটির মধ্যে পার্থক্য পরিচালনা করে না। Vulkan ব্যবহার করার সময় ওরিয়েন্টেশন প্রক্রিয়া কীভাবে কাজ করে এবং ওরিয়েন্টেশন পার্থক্য পরিচালনা করার সর্বোত্তম পদ্ধতিটি বুঝতে, Vulkan প্রি-রোটেশন দিয়ে ডিভাইস রোটেশন পরিচালনা করুন দেখুন।
সমস্যা সমাধান এবং প্রোফাইল ভলকান রেন্ডারিং
Vulkan রেন্ডারিং কোডের সাথে রেন্ডারিং সমস্যা এবং কর্মক্ষমতা সমস্যা নির্ণয়ে আপনাকে সাহায্য করার জন্য একাধিক সরঞ্জাম উপলব্ধ।
Vulkan এর ডিবাগিং এবং প্রোফাইলিং টুল সম্পর্কে আরও তথ্যের জন্য, টুলস এবং অ্যাডভান্সড ফিচারস বিভাগটি দেখুন।
ভলকান যাচাইকরণ স্তরগুলি
Vulkan ভ্যালিডেশন লেয়ার হল রানটাইম লাইব্রেরি যা Vulkan API-তে আপনার কলগুলি পরিদর্শন করতে এবং ভুল বা অনুকূল ব্যবহার সম্পর্কে সতর্কতা বা ত্রুটি প্রদান করতে সক্ষম হতে পারে। এই ভ্যালিডেশন লেয়ারগুলি ডিফল্টরূপে সক্রিয় থাকে না, কারণ ভ্যালিডেশন প্রক্রিয়া রানটাইম ওভারহেড যোগ করে এবং আপনার গেমের পারফরম্যান্সকে প্রভাবিত করে। আপনার গেমের সাথে ভ্যালিডেশন লেয়ারগুলি কীভাবে ব্যবহার করবেন সে সম্পর্কে তথ্যের জন্য, ভ্যালিডেশন লেয়ার সহ ডিবাগিং দেখুন।
ফ্রেম ক্যাপচার টুল
গেম ফ্রেম চলাকালীন করা Vulkan API কল রেকর্ড এবং রিপ্লে করতে ফ্রেম ক্যাপচার টুল ব্যবহার করুন। এই টুলগুলি আপনাকে এগুলি করতে দেয়:
- সক্রিয় গ্রাফিক রিসোর্স সম্পর্কে তথ্য এবং ভিজ্যুয়ালাইজেশন দেখুন
- আপনার গেম দ্বারা করা API কলগুলির ক্রম দেখুন এবং API প্যারামিটারগুলি দেখুন।
- ড্র কলের সময় গ্রাফিক্স পাইপলাইনের অবস্থা অন্বেষণ করুন
- ফ্রেমে একটি নির্দিষ্ট ড্র কল পর্যন্ত রেন্ডারিংয়ের ফলাফল কল্পনা করুন।
অ্যান্ড্রয়েডে চলমান গেমগুলি থেকে ফ্রেম ক্যাপচার করতে ওপেন সোর্স RenderDoc টুল ব্যবহার করুন। RenderDoc Vulkan এবং OpenGL ES উভয়ের ফ্রেম ক্যাপচার সমর্থন করে।
ভলকান ফ্রেম ক্যাপচার করতে অ্যান্ড্রয়েড জিপিইউ ইন্সপেক্টর (এজিআই) ব্যবহার করা যেতে পারে।
কর্মক্ষমতা বিশ্লেষণ সরঞ্জাম
আপনার গেমের রেন্ডারিং সমস্যাগুলি তদন্ত করতে পারফরম্যান্স বিশ্লেষণ সরঞ্জামগুলি ব্যবহার করুন যা সর্বোত্তম ফ্রেম রেট তৈরি করে। পৃথক GPU বিক্রেতারা আপনার গেমের প্রোফাইল তৈরি করার জন্য ডিজাইন করা সরঞ্জাম সরবরাহ করে এবং তাদের GPU আর্কিটেকচারের জন্য নির্দিষ্ট পারফরম্যান্স ডেটা সরবরাহ করে। বিভিন্ন বিক্রেতার GPU তে অথবা একই বিক্রেতার বিভিন্ন GPU প্রজন্মের GPU তে রেন্ডার করার সময় আপনার গেমের পারফরম্যান্স বৈশিষ্ট্য এবং বাধাগুলি উল্লেখযোগ্যভাবে পরিবর্তিত হতে পারে।
আপনি পারফরম্যান্স ডেটা সংগ্রহ এবং বিশ্লেষণ করতে অ্যান্ড্রয়েড জিপিইউ ইন্সপেক্টরও ব্যবহার করতে পারেন। বিক্রেতা সরঞ্জামগুলির বিপরীতে, অ্যান্ড্রয়েড জিপিইউ ইন্সপেক্টর বিভিন্ন বিক্রেতার একাধিক জিপিইউর সাথে সামঞ্জস্যপূর্ণ। তবে, অ্যান্ড্রয়েড জিপিইউ ইন্সপেক্টর পুরানো অ্যান্ড্রয়েড ডিভাইসগুলিকে সমর্থন করে না এবং সমস্ত নতুন ডিভাইসের সাথে সামঞ্জস্যপূর্ণ নাও হতে পারে।
CTS-D দিয়ে ভলকান পরীক্ষা উন্নত করুন
অ্যান্ড্রয়েড-চালিত ডিভাইস নির্মাতারা তাদের ডিভাইসগুলি সামঞ্জস্যপূর্ণ কিনা তা নিশ্চিত করতে সামঞ্জস্যতা পরীক্ষা স্যুট (CTS) ব্যবহার করে। ডেভেলপার-চালিত CTS (CTS-D) হল অ্যান্ড্রয়েড অ্যাপ্লিকেশন ডেভেলপারদের দ্বারা জমা দেওয়া পরীক্ষা যা নিশ্চিত করে যে ভবিষ্যতের অ্যান্ড্রয়েড ডিভাইসগুলি তাদের ব্যবহারের ক্ষেত্রে সন্তুষ্ট এবং তাদের অ্যাপ্লিকেশনগুলি মসৃণভাবে এবং বাগ ছাড়াই চালাতে সক্ষম।
যদি আপনার Vulkan অ্যাপ্লিকেশনে এমন কোনও নতুন বাগ দেখা দেয় যা কোনও নির্দিষ্ট Android-চালিত ডিভাইসকে প্রভাবিত করে, তাহলে আপনি একটি নতুন পরীক্ষা প্রস্তাব জমা দিতে পারেন, যেখানে আপনার সমস্যা এবং এটি পরীক্ষা করার উপায়গুলি বর্ণনা করা হবে। এটি নিশ্চিত করে যে ডিভাইসের ভবিষ্যতের আপডেটে সমস্যাটি ঠিক করা হয়েছে এবং একই বাগ অন্য কোনও ডিভাইসে ঘটবে না তাও নিশ্চিত করে।
পরীক্ষার প্রস্তাব জমা দেওয়ার ধাপে ধাপে নির্দেশাবলীর জন্য CTS জমা দেওয়ার প্রক্রিয়াটি দেখুন।