অ্যান্ড্রয়েডে ভলকান দিয়ে শুরু করুন
ভলকান হল অ্যান্ড্রয়েডে প্রাথমিক নিম্ন-স্তরের গ্রাফিক্স API। Vulkan গেমগুলির জন্য সর্বোত্তম কার্যক্ষমতা প্রদান করে যেগুলি তাদের নিজস্ব গেম ইঞ্জিন এবং রেন্ডারার বাস্তবায়ন করে।
আপনার গেম ইঞ্জিনে ভলকান সফলভাবে বাস্তবায়ন করতে আপনাকে অবশ্যই:
- Vulkan এর সাথে কোন Android ডিভাইস ব্যবহার করতে হবে তা শনাক্ত করুন
- পুরানো অ্যান্ড্রয়েড ডিভাইসগুলিকে সমর্থন করার ট্রেডঅফগুলি বুঝুন৷
- আপনার অ্যান্ড্রয়েড বিল্ড টার্গেটে ভলকান যোগ করুন
- ভলকানের জন্য SPIR-V তৈরি করতে একটি শেডার কম্পাইলার বেছে নিন
- রানটাইমে উপলব্ধ Vulkan API সংস্করণ নির্ধারণ করুন
- ভলকান প্রোফাইল, ফ্রেম পেসিং এবং প্রাক-ঘূর্ণন সহ আপনার ভলকান রেন্ডারিং অপারেশনগুলিকে কীভাবে অপ্টিমাইজ করবেন তা শিখুন
- ডিবাগিং এবং কর্মক্ষমতা বিশ্লেষণের জন্য গ্রাফিক্স টুল নির্বাচন করুন
- দ্রষ্টব্য: ইউনিটি বা অবাস্তব গেম ইঞ্জিনগুলির সাথে অ্যান্ড্রয়েডে ভলকান ব্যবহারের তথ্যের জন্য, দেখুন:
- ঐক্যের উপর ভলকান
- অবাস্তব উপর Vulkan
ভলকানের জন্য ন্যূনতম ডিভাইসের স্পেসিফিকেশন বেছে নিন
Vulkan Android 7.0 (API স্তর 24) দিয়ে শুরু হওয়া Android-এ উপলব্ধ। অ্যান্ড্রয়েড 7.0 বা উচ্চতর সংস্করণে চলমান সমস্ত Android ডিভাইস Vulkan সমর্থন করে না। আপনার গেমটি কোন Vulkan-সক্ষম অ্যান্ড্রয়েড ডিভাইসগুলি সমর্থন করে তা আপনাকে নির্ধারণ করতে হবে৷
সুপারিশ
ভলকান সমর্থনের জন্য ন্যূনতম প্রয়োজনীয়তা হিসাবে নিম্নলিখিত স্পেসিফিকেশনগুলি ব্যবহার করুন:
- ডিভাইসটি Android 10.0 (API লেভেল 29) বা উচ্চতর চালাচ্ছে
- ডিভাইস Vulkan API সংস্করণ 1.1 বা উচ্চতর সমর্থন করে
- ডিভাইসটির হার্ডওয়্যার ক্ষমতা এবং বৈশিষ্ট্য রয়েছে যা 2022 অ্যান্ড্রয়েড বেসলাইন প্রোফাইলের সাথে সামঞ্জস্যপূর্ণ
পুরানো ডিভাইস সমর্থন
যদি আপনার গেমটি বিভিন্ন স্তরের গ্রাফিক্স ক্ষমতা সহ বিস্তৃত ডিভাইসে চালানোর জন্য ডিজাইন করা হয়, তাহলে আপনাকে Vulkan-এর জন্য সর্বনিম্ন ডিভাইসের স্পেসিফিকেশন চয়ন করুন -এ প্রস্তাবিত ডিভাইসগুলির চেয়ে পুরানো ডিভাইসগুলিকে সমর্থন করতে হতে পারে। পুরানো ডিভাইসগুলির জন্য সমর্থন তৈরি করার আগে, Vulkan আপনার গেমের সুবিধা প্রদান করে কিনা তা মূল্যায়ন করুন। যে গেমগুলিতে প্রচুর ড্র কল আছে এবং যেগুলি OpenGL ES ব্যবহার করে সেগুলি OpenGL ES-এর মধ্যে ড্র কল করার উচ্চ খরচের কারণে উল্লেখযোগ্য ড্রাইভার ওভারহেড দেখতে পারে। এই গেমগুলি গ্রাফিক্স ড্রাইভারে তাদের ফ্রেম সময়ের বড় অংশ ব্যয় করে CPU আবদ্ধ হতে পারে। গেমগুলি OpenGL ES থেকে Vulkan-এ স্যুইচ করে CPU এবং পাওয়ার ব্যবহারে উল্লেখযোগ্য হ্রাসও দেখতে পারে। এটি বিশেষভাবে প্রযোজ্য যদি আপনার গেমে জটিল দৃশ্য থাকে যা ড্র কল কমাতে কার্যকরভাবে ইন্সট্যান্সিং ব্যবহার করতে পারে না। পুরানো ডিভাইসগুলিকে লক্ষ্য করার সময়, একটি ফলব্যাক হিসাবে OpenGL ES রেন্ডারিং সমর্থন অন্তর্ভুক্ত করুন, কারণ আপনার লক্ষ্য ডিভাইস তালিকার কিছু ডিভাইসে ভলকান বাস্তবায়ন থাকতে পারে যা আপনার গেমটি নির্ভরযোগ্যভাবে চালাতে পারে না।
আপনি পুরানো ভলকান-সক্ষম ডিভাইসগুলিকে সমর্থন করতে চান না কারণ তাদের কার্যকারিতা এবং বৈশিষ্ট্যগুলির অভাব রয়েছে বা স্থিতিশীলতার সমস্যা রয়েছে।
কর্মক্ষমতা এবং বৈশিষ্ট্য
পুরানো ভলকান-সক্ষম অ্যান্ড্রয়েড ডিভাইসগুলিতে আপনার গেম চালানোর জন্য প্রয়োজনীয় বৈশিষ্ট্যগুলির জন্য রেন্ডারিং কার্যক্ষমতা বা হার্ডওয়্যার সমর্থন নাও থাকতে পারে। এটি বিশেষত সম্ভবত যদি আপনার গেমটিতে উচ্চ-বিশ্বস্ত গ্রাফিক্স থাকে এবং Vulkan একমাত্র API যা আপনি Android এ লক্ষ্য করছেন৷ অনেক পুরানো ডিভাইস Vulkan API এর 1.0.3 সংস্করণে সীমাবদ্ধ এবং প্রায়শই আরও আধুনিক হার্ডওয়্যারে উপলব্ধ ব্যাপকভাবে ব্যবহৃত Vulkan এক্সটেনশন অনুপস্থিত থাকে।
স্থিতিশীলতা
পুরানো অ্যান্ড্রয়েড ডিভাইসগুলি পুরানো ভলকান ড্রাইভার ব্যবহার করতে পারে। এই ড্রাইভার সংস্করণে বাগ অন্তর্ভুক্ত থাকতে পারে যা আপনার গেমের স্থায়িত্বকে প্রভাবিত করতে পারে। ড্রাইভার বাগগুলির আশেপাশে কাজ করা উল্লেখযোগ্য পরিমাণে পরীক্ষা এবং প্রকৌশল সময় জড়িত হতে পারে।
আপনার প্রকল্পে Vulkan যোগ করুন
আপনার প্রকল্পে ভলকান যোগ করতে আপনাকে এটি করতে হবে:
- Vulkan API হেডার অন্তর্ভুক্ত করুন
- SPIR-V এ শেডার কোড কম্পাইল করুন
- রানটাইমে Vulkan API কল করুন
Vulkan API হেডার অন্তর্ভুক্ত করুন
ভলকান ব্যবহার করে এমন কোড কম্পাইল করার জন্য আপনার গেমটিতে Vulkan API হেডার ফাইল অন্তর্ভুক্ত করতে হবে। আপনি Android NDK- এ Vulkan শিরোনামগুলির একটি অনুলিপি খুঁজে পেতে পারেন বা Vulkan SDK রিলিজে প্যাকেজ করা আছে। যেকোন নির্দিষ্ট NDK সংস্করণে শুধুমাত্র NDK প্রকাশের সময় উপলব্ধ ভলকান শিরোনাম অন্তর্ভুক্ত থাকে। আপনি যদি NDK থেকে Vulkan শিরোনাম ব্যবহার করেন, NDK সংস্করণ 25 বা উচ্চতর ব্যবহার করুন, যার মধ্যে ভলকান সংস্করণ 1.3 সমর্থনকারী হেডার ফাইলগুলি অন্তর্ভুক্ত রয়েছে। ভলকান SDK-এ হেডারগুলির সবচেয়ে বর্তমান সংস্করণ রয়েছে৷
SPIR-V এ শেডার কোড কম্পাইল করুন
Vulkan API আশা করে যে shader প্রোগ্রামগুলি SPIR-V বাইনারি মধ্যবর্তী বিন্যাসে প্রদান করা হবে। এই কনভেনশনটি OpenGL ES থেকে আলাদা, যেখানে আপনি টেক্সট স্ট্রিং হিসাবে OpenGL শেডিং ল্যাঙ্গুয়েজে (GLSL) লেখা সোর্স কোড জমা দিতে পারেন। জিএলএসএল বা হাই-লেভেল শেডার ল্যাঙ্গুয়েজ (এইচএলএসএল) এর মতো শেডার ভাষায় লেখা কোড নিতে একটি শেডার কম্পাইলার ব্যবহার করুন এবং ভলকানের সাথে ব্যবহারের জন্য এটি 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 ফাংশন কল করেন, তখন নিয়ন্ত্রণ ভলকান লোডার নামে একটি গঠন দ্বারা পরিচালিত একটি প্রেরণ টেবিলের মধ্য দিয়ে যায়। Android তার নিজস্ব Vulkan লোডার বাস্তবায়ন ব্যবহার করে এবং LunarG লোডার নয়। এই লোডার সিস্টেমটি Vulkan API-এর লেয়ার আর্কিটেকচারের অংশ। বিল্ড টাইমে সিস্টেম লাইব্রেরির সাথে লিঙ্ক করার ফলে একটি প্রদত্ত API কলের জন্য একটি অতিরিক্ত প্রেরণ স্তর দেখা যায়। ওভারহেড ছোট হলেও, এটি এমন গেমগুলির জন্য লক্ষণীয় হতে পারে যেগুলি উচ্চ ভলিউম ভলকান কলগুলি সম্পাদন করে৷
সিস্টেম লাইব্রেরি সাধারণত শুধুমাত্র Vulkan ফাংশনগুলির পয়েন্টারগুলি সমাধান করে যা মূল API এর অংশ হিসাবে বিবেচিত হয়। ভলকানের প্রচুর সংখ্যক এক্সটেনশন রয়েছে, যা অতিরিক্ত ভলকান ফাংশনকে সংজ্ঞায়িত করে, যার অনেকগুলি সিস্টেম লাইব্রেরি দ্বারা স্বয়ংক্রিয়ভাবে সমাধান করা হয় না। এই Vulkan ফাংশনগুলি ব্যবহার করার আগে আপনাকে ম্যানুয়ালি পয়েন্টারগুলি সমাধান করতে হবে।
এই সমস্যাগুলি প্রশমিত করতে, আপনি রানটাইমে ব্যবহার করতে চান এমন সমস্ত ভলকান ফাংশনগুলির গতিশীলভাবে পয়েন্টারগুলি সমাধান করুন৷ এটি সম্পন্ন করার একটি উপায় হল একটি ওপেন সোর্স মেটা-লোডার লাইব্রেরি যেমন volk ব্যবহার করা। AGDKTunnel নমুনা গেম এই উদ্দেশ্যে volk সংহত করে। আপনি যদি একটি মেটা-লোডার লাইব্রেরি ব্যবহার করেন, তাহলে আপনার বিল্ড স্ক্রিপ্টে libvulkan.so
শেয়ার করা লাইব্রেরির সাথে লিঙ্ক করবেন না।
উপলব্ধ Vulkan API সংস্করণ নির্ধারণ করুন
অ্যান্ড্রয়েড নিম্নলিখিত Vulkan API সংস্করণ সমর্থন করে:
- 1.0.3
- 1.1
- 1.3
একটি প্রদত্ত ডিভাইসে উপলব্ধ সর্বোচ্চ Vulkan API সংস্করণ নম্বর Android সংস্করণ এবং Vulkan ড্রাইভার সমর্থন দ্বারা নির্ধারিত হয়।
অ্যান্ড্রয়েড সংস্করণ
Vulkan API সংস্করণের জন্য প্ল্যাটফর্ম সমর্থন ন্যূনতম Android সংস্করণের (API স্তর) উপর নির্ভরশীল:
- 1.3 — Android 13.0 (API স্তর 33) এবং উচ্চতর
- 1.1 — Android 10.0 (API স্তর 29) এবং উচ্চতর
- 1.0.3 — Android 7.0 (API স্তর 24) এবং উচ্চতর
ভলকান ড্রাইভার সমর্থন
Vulkan API সংস্করণের জন্য Android প্ল্যাটফর্ম সমর্থন গ্যারান্টি দেয় না যে API সংস্করণটি ডিভাইসের Vulkan ড্রাইভার দ্বারা সমর্থিত। Android 13 চালিত একটি ডিভাইস Vulkan API-এর শুধুমাত্র সংস্করণ 1.1 সমর্থন করতে পারে।
Vulkan আরম্ভ করার সময়, এর চেয়ে বড় একটি API সংস্করণের অনুরোধ করবেন না:
- ডিভাইসে চলমান Android এর সংস্করণের জন্য সর্বাধিক Vulkan API সংস্করণ
- VkEnumerateInstanceVersion দ্বারা রিপোর্ট করা Vulkan API সংস্করণ
- VkPhysicalDeviceProperties কাঠামোর
apiVersion
বৈশিষ্ট্য দ্বারা রিপোর্ট করা ভলকান 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 ডিভাইসকে প্রোফাইলের সাথে সামঞ্জস্যপূর্ণ হতে সমর্থন করতে হবে। একটি ডিভাইস নির্দিষ্ট ভলকান প্রোফাইলের সাথে সামঞ্জস্যপূর্ণ কিনা তা নির্ধারণ করতে, যেমন 2022 অ্যান্ড্রয়েড বেসলাইন প্রোফাইল , ওপেন সোর্স ভলকান প্রোফাইল API লাইব্রেরি ব্যবহার করুন। এছাড়াও আপনি প্রোফাইল JSON ফাইলটি নিজে পার্স করতে পারেন এবং প্রোফাইল সামঞ্জস্যতা নির্ধারণ করতে প্রাসঙ্গিক Vulkan API ব্যবহার করে ডিভাইসের ক্ষমতা জিজ্ঞাসা করতে পারেন।
ভলকান প্রোফাইল
অ্যান্ড্রয়েড ভলকান প্রোফাইল ব্যবহার করছে যা সংজ্ঞায়িত করে যে অ্যান্ড্রয়েড চালিত প্রতিটি ডিভাইসের জন্য কোন বৈশিষ্ট্য এবং এক্সটেনশন উপলব্ধ।
অ্যান্ড্রয়েড বেসলাইন প্রোফাইল (এবিপি) হল ভলকান প্রোফাইল তৈরির প্রথম প্রচেষ্টা। ABP2021 এবং ABP2022 হল পিছনের দিকের চেহারার প্রোফাইল যা সেই সময়ে সক্রিয় ডিভাইসগুলির 85% থেকে বেশি কভার করার লক্ষ্যে। সামনে কোনো নতুন এবিপি থাকবে না।
Vulkan Profiles for Android (VPA) হল নতুন অগ্রগামী প্রোফাইল যার লক্ষ্য সফ্টওয়্যার ডেভেলপারদের চাহিদা প্রতিফলিত করা এবং হার্ডওয়্যার বিকাশকারীরা সেগুলি সরবরাহ করার সাথে সাথে সামঞ্জস্যপূর্ণ বৈশিষ্ট্যগুলি চালান। VPA15_minimums হল Android 15 এর জন্য প্রথম প্রোফাইল এবং প্রতিটি বড় Android রিলিজ কভার করার জন্য প্রতি বছর একটি নতুন VPA থাকবে।
ফ্রেম পেসিং প্রয়োগ করুন
সঠিক ফ্রেম পেসিং একটি উচ্চ-মানের গেমপ্লে অভিজ্ঞতা প্রদানের একটি অপরিহার্য অংশ। অ্যান্ড্রয়েড গেম ডেভেলপমেন্ট কিটে আপনার গেমের সর্বোত্তম ফ্রেম পেসিং অর্জনে সহায়তা করার জন্য ফ্রেম পেসিং লাইব্রেরি অন্তর্ভুক্ত রয়েছে। আরও বাস্তবায়নের বিশদ বিবরণের জন্য, আপনার Vulkan রেন্ডারারে ইন্টিগ্রেট অ্যান্ড্রয়েড ফ্রেম পেসিং দেখুন।
প্রাক ঘূর্ণন বাস্তবায়ন
অ্যান্ড্রয়েড ডিভাইস একাধিক ওরিয়েন্টেশনে প্রদর্শন করতে পারে। ডিভাইসের অভিযোজন রেন্ডার পৃষ্ঠের অভিযোজন থেকে ভিন্ন হতে পারে। অ্যান্ড্রয়েডে OpenGL ES এর বিপরীতে, Vulkan উভয়ের মধ্যে অসঙ্গতিগুলি পরিচালনা করে না। ভলকান ব্যবহার করার সময় ওরিয়েন্টেশন প্রক্রিয়া কীভাবে কাজ করে এবং অভিযোজন পার্থক্যগুলি পরিচালনা করার সর্বোত্তম পদ্ধতি বুঝতে, ভলকান প্রি-রোটেশনের সাথে ডিভাইসের ঘূর্ণন পরিচালনা করুন দেখুন।
সমস্যা সমাধান এবং প্রোফাইল ভলকান রেন্ডারিং
ভলকান রেন্ডারিং কোডের সাথে রেন্ডারিং সমস্যা এবং পারফরম্যান্স সমস্যাগুলি নির্ণয় করতে আপনাকে সহায়তা করার জন্য একাধিক সরঞ্জাম উপলব্ধ।
Vulkan এর ডিবাগিং এবং প্রোফাইলিং সরঞ্জাম সম্পর্কে আরও তথ্যের জন্য, সরঞ্জাম এবং উন্নত বৈশিষ্ট্য বিভাগটি চেকআউট করুন।
Vulkan বৈধতা স্তর
ভলকান যাচাইকরণ স্তরগুলি হল রানটাইম লাইব্রেরি যা ভলকান API-তে আপনার কলগুলি পরিদর্শন করতে এবং ভুল বা অ-অনুকূল ব্যবহার সম্পর্কে সতর্কতা বা ত্রুটি প্রদান করতে সক্ষম করা যেতে পারে। এই বৈধকরণ স্তরগুলি ডিফল্টরূপে সক্রিয় নয়, কারণ বৈধকরণ প্রক্রিয়া রানটাইম ওভারহেড যোগ করে এবং আপনার গেমের কার্যকারিতাকে প্রভাবিত করে৷ আপনার গেমের সাথে বৈধতা স্তরগুলি কীভাবে ব্যবহার করবেন সে সম্পর্কে তথ্যের জন্য, যাচাইকরণ স্তরের সাথে ডিবাগিং দেখুন।
ফ্রেম ক্যাপচার টুল
একটি গেম ফ্রেমের সময় করা Vulkan API কলগুলি রেকর্ড করতে এবং পুনরায় প্লে করতে ফ্রেম ক্যাপচার সরঞ্জামগুলি ব্যবহার করুন৷ এই সরঞ্জামগুলি আপনাকে অনুমতি দেয়:
- সক্রিয় গ্রাফিক সংস্থান সম্পর্কে তথ্য এবং ভিজ্যুয়ালাইজেশন দেখুন
- আপনার গেমের দ্বারা করা API কলগুলির ক্রম দেখুন এবং API পরামিতিগুলি দেখুন
- ড্র কলের সময় গ্রাফিক্স পাইপলাইনের অবস্থা অন্বেষণ করুন
- ফ্রেমে একটি নির্দিষ্ট ড্র কল পর্যন্ত রেন্ডারিংয়ের ফলাফলগুলি কল্পনা করুন৷
অ্যান্ড্রয়েডে চলমান গেম থেকে ফ্রেম ক্যাপচার করতে ওপেন সোর্স রেন্ডারডক টুল ব্যবহার করুন। RenderDoc Vulkan এবং OpenGL ES উভয়ের ফ্রেম ক্যাপচার সমর্থন করে।
অ্যান্ড্রয়েড জিপিইউ ইন্সপেক্টর (এজিআই) ভলকান ফ্রেমগুলি ক্যাপচার করতেও ব্যবহার করা যেতে পারে।
কর্মক্ষমতা বিশ্লেষণ সরঞ্জাম
আপনার গেমের রেন্ডারিং সমস্যাগুলি তদন্ত করতে পারফরম্যান্স বিশ্লেষণ সরঞ্জামগুলি ব্যবহার করুন যা সাবঅপ্টিমাল ফ্রেম রেট সৃষ্টি করে। স্বতন্ত্র GPU বিক্রেতারা আপনার গেম প্রোফাইল করার জন্য ডিজাইন করা টুল সরবরাহ করে এবং তাদের GPU আর্কিটেকচারের জন্য নির্দিষ্ট কর্মক্ষমতা ডেটা প্রদান করে। আপনার গেমের পারফরম্যান্সের বৈশিষ্ট্য এবং বাধাগুলি উল্লেখযোগ্যভাবে পরিবর্তিত হতে পারে যখন বিভিন্ন বিক্রেতাদের থেকে GPU তে রেন্ডার করা হয় বা এমনকি একই বিক্রেতার থেকে বিভিন্ন GPU জেনারেশনে।
আপনি কর্মক্ষমতা ডেটা সংগ্রহ এবং বিশ্লেষণ করতে Android GPU ইন্সপেক্টর ব্যবহার করতে পারেন। বিক্রেতা সরঞ্জামগুলির বিপরীতে, Android GPU ইন্সপেক্টর বিভিন্ন বিক্রেতার একাধিক GPU-এর সাথে সামঞ্জস্যপূর্ণ। যাইহোক, অ্যান্ড্রয়েড জিপিইউ ইন্সপেক্টর পুরানো অ্যান্ড্রয়েড ডিভাইস সমর্থন করে না এবং সমস্ত নতুন ডিভাইসের সাথে সামঞ্জস্যপূর্ণ নাও হতে পারে।
CTS-D দিয়ে ভলকান টেস্টিং উন্নত করুন
অ্যান্ড্রয়েড-চালিত ডিভাইস নির্মাতারা তাদের ডিভাইসগুলি সামঞ্জস্যপূর্ণ কিনা তা নিশ্চিত করতে সাহায্য করার জন্য সামঞ্জস্য পরীক্ষা স্যুট (CTS) ব্যবহার করে। বিকাশকারী-চালিত CTS (CTS-D) হল Android অ্যাপ্লিকেশন বিকাশকারীদের দ্বারা জমা দেওয়া পরীক্ষাগুলি যাতে ভবিষ্যতে Android ডিভাইসগুলি তাদের ব্যবহারের ক্ষেত্রে সন্তুষ্ট হয় এবং তাদের অ্যাপ্লিকেশনগুলিকে মসৃণভাবে এবং বাগ ছাড়াই চালাতে সক্ষম হয়।
আপনি যদি আপনার Vulkan অ্যাপ্লিকেশনের সাথে একটি নতুন বাগ ট্রিগার করতে পরিচালনা করেন যা কোনো নির্দিষ্ট Android-চালিত ডিভাইসকে প্রভাবিত করে, আপনি একটি নতুন পরীক্ষার প্রস্তাব জমা দিতে পারেন, আপনার সমস্যা এবং এটি পরীক্ষা করার উপায় বর্ণনা করে। এটি নিশ্চিত করে যে ডিভাইসের জন্য ভবিষ্যতের আপডেটে সমস্যাটি স্থির করা হয়েছে এবং এটিও নিশ্চিত করে যে একই বাগ অন্য কোনও ডিভাইসে ঘটবে না।
পরীক্ষার প্রস্তাব কিভাবে জমা দিতে হয় তার ধাপে ধাপে নির্দেশাবলীর জন্য CTS জমা দেওয়ার প্রক্রিয়াটি দেখুন।
,অ্যান্ড্রয়েডে ভলকান দিয়ে শুরু করুন
ভলকান হল অ্যান্ড্রয়েডে প্রাথমিক নিম্ন-স্তরের গ্রাফিক্স API। Vulkan গেমগুলির জন্য সর্বোত্তম কার্যক্ষমতা প্রদান করে যেগুলি তাদের নিজস্ব গেম ইঞ্জিন এবং রেন্ডারার বাস্তবায়ন করে।
আপনার গেম ইঞ্জিনে ভলকান সফলভাবে বাস্তবায়ন করতে আপনাকে অবশ্যই:
- Vulkan এর সাথে কোন Android ডিভাইস ব্যবহার করতে হবে তা শনাক্ত করুন
- পুরানো অ্যান্ড্রয়েড ডিভাইসগুলিকে সমর্থন করার ট্রেডঅফগুলি বুঝুন৷
- আপনার অ্যান্ড্রয়েড বিল্ড টার্গেটে ভলকান যোগ করুন
- ভলকানের জন্য SPIR-V তৈরি করতে একটি শেডার কম্পাইলার বেছে নিন
- রানটাইমে উপলব্ধ Vulkan API সংস্করণ নির্ধারণ করুন
- ভলকান প্রোফাইল, ফ্রেম পেসিং এবং প্রাক-ঘূর্ণন সহ আপনার ভলকান রেন্ডারিং অপারেশনগুলিকে কীভাবে অপ্টিমাইজ করবেন তা শিখুন
- ডিবাগিং এবং কর্মক্ষমতা বিশ্লেষণের জন্য গ্রাফিক্স টুল নির্বাচন করুন
- দ্রষ্টব্য: ইউনিটি বা অবাস্তব গেম ইঞ্জিনগুলির সাথে অ্যান্ড্রয়েডে ভলকান ব্যবহারের তথ্যের জন্য, দেখুন:
- ঐক্যের উপর ভলকান
- অবাস্তব উপর Vulkan
ভলকানের জন্য ন্যূনতম ডিভাইসের স্পেসিফিকেশন বেছে নিন
Vulkan Android 7.0 (API স্তর 24) দিয়ে শুরু হওয়া Android-এ উপলব্ধ। অ্যান্ড্রয়েড 7.0 বা উচ্চতর সংস্করণে চলমান সমস্ত Android ডিভাইস Vulkan সমর্থন করে না। আপনার গেমটি কোন Vulkan-সক্ষম অ্যান্ড্রয়েড ডিভাইসগুলি সমর্থন করে তা আপনাকে নির্ধারণ করতে হবে৷
সুপারিশ
ভলকান সমর্থনের জন্য ন্যূনতম প্রয়োজনীয়তা হিসাবে নিম্নলিখিত স্পেসিফিকেশনগুলি ব্যবহার করুন:
- ডিভাইসটি Android 10.0 (API লেভেল 29) বা উচ্চতর চালাচ্ছে
- ডিভাইস Vulkan API সংস্করণ 1.1 বা উচ্চতর সমর্থন করে
- ডিভাইসটির হার্ডওয়্যার ক্ষমতা এবং বৈশিষ্ট্য রয়েছে যা 2022 অ্যান্ড্রয়েড বেসলাইন প্রোফাইলের সাথে সামঞ্জস্যপূর্ণ
পুরানো ডিভাইস সমর্থন
যদি আপনার গেমটি বিভিন্ন স্তরের গ্রাফিক্স ক্ষমতা সহ বিস্তৃত ডিভাইসে চালানোর জন্য ডিজাইন করা হয়, তাহলে আপনাকে Vulkan-এর জন্য সর্বনিম্ন ডিভাইসের স্পেসিফিকেশন চয়ন করুন -এ প্রস্তাবিত ডিভাইসগুলির চেয়ে পুরানো ডিভাইসগুলিকে সমর্থন করতে হতে পারে। পুরানো ডিভাইসগুলির জন্য সমর্থন তৈরি করার আগে, Vulkan আপনার গেমের সুবিধা প্রদান করে কিনা তা মূল্যায়ন করুন। যে গেমগুলিতে প্রচুর ড্র কল আছে এবং যেগুলি OpenGL ES ব্যবহার করে সেগুলি OpenGL ES-এর মধ্যে ড্র কল করার উচ্চ খরচের কারণে উল্লেখযোগ্য ড্রাইভার ওভারহেড দেখতে পারে। এই গেমগুলি গ্রাফিক্স ড্রাইভারে তাদের ফ্রেম সময়ের বড় অংশ ব্যয় করে CPU আবদ্ধ হতে পারে। গেমগুলি OpenGL ES থেকে Vulkan-এ স্যুইচ করে CPU এবং পাওয়ার ব্যবহারে উল্লেখযোগ্য হ্রাসও দেখতে পারে। এটি বিশেষভাবে প্রযোজ্য যদি আপনার গেমে জটিল দৃশ্য থাকে যা ড্র কল কমাতে কার্যকরভাবে ইন্সট্যান্সিং ব্যবহার করতে পারে না। পুরানো ডিভাইসগুলিকে লক্ষ্য করার সময়, একটি ফলব্যাক হিসাবে OpenGL ES রেন্ডারিং সমর্থন অন্তর্ভুক্ত করুন, কারণ আপনার লক্ষ্য ডিভাইস তালিকার কিছু ডিভাইসে ভলকান বাস্তবায়ন থাকতে পারে যা আপনার গেমটি নির্ভরযোগ্যভাবে চালাতে পারে না।
আপনি পুরানো ভলকান-সক্ষম ডিভাইসগুলিকে সমর্থন করতে চান না কারণ তাদের কার্যকারিতা এবং বৈশিষ্ট্যগুলির অভাব রয়েছে বা স্থিতিশীলতার সমস্যা রয়েছে।
কর্মক্ষমতা এবং বৈশিষ্ট্য
পুরানো ভলকান-সক্ষম অ্যান্ড্রয়েড ডিভাইসগুলিতে আপনার গেম চালানোর জন্য প্রয়োজনীয় বৈশিষ্ট্যগুলির জন্য রেন্ডারিং কার্যক্ষমতা বা হার্ডওয়্যার সমর্থন নাও থাকতে পারে। এটি বিশেষত সম্ভবত যদি আপনার গেমটিতে উচ্চ-বিশ্বস্ত গ্রাফিক্স থাকে এবং Vulkan একমাত্র API যা আপনি Android এ লক্ষ্য করছেন৷ অনেক পুরানো ডিভাইস Vulkan API এর 1.0.3 সংস্করণে সীমাবদ্ধ এবং প্রায়শই আরও আধুনিক হার্ডওয়্যারে উপলব্ধ ব্যাপকভাবে ব্যবহৃত Vulkan এক্সটেনশন অনুপস্থিত থাকে।
স্থিতিশীলতা
পুরানো অ্যান্ড্রয়েড ডিভাইসগুলি পুরানো ভলকান ড্রাইভার ব্যবহার করতে পারে। এই ড্রাইভার সংস্করণে বাগ অন্তর্ভুক্ত থাকতে পারে যা আপনার গেমের স্থায়িত্বকে প্রভাবিত করতে পারে। ড্রাইভার বাগগুলির আশেপাশে কাজ করা উল্লেখযোগ্য পরিমাণে পরীক্ষা এবং প্রকৌশল সময় জড়িত হতে পারে।
আপনার প্রকল্পে Vulkan যোগ করুন
আপনার প্রকল্পে ভলকান যোগ করতে আপনাকে এটি করতে হবে:
- Vulkan API হেডার অন্তর্ভুক্ত করুন
- SPIR-V এ শেডার কোড কম্পাইল করুন
- রানটাইমে Vulkan API কল করুন
Vulkan API হেডার অন্তর্ভুক্ত করুন
ভলকান ব্যবহার করে এমন কোড কম্পাইল করার জন্য আপনার গেমটিতে Vulkan API হেডার ফাইল অন্তর্ভুক্ত করতে হবে। আপনি Android NDK- এ Vulkan শিরোনামগুলির একটি অনুলিপি খুঁজে পেতে পারেন বা Vulkan SDK রিলিজে প্যাকেজ করা আছে। যেকোন নির্দিষ্ট NDK সংস্করণে শুধুমাত্র NDK প্রকাশের সময় উপলব্ধ ভলকান শিরোনাম অন্তর্ভুক্ত থাকে। আপনি যদি NDK থেকে Vulkan শিরোনাম ব্যবহার করেন, NDK সংস্করণ 25 বা উচ্চতর ব্যবহার করুন, যার মধ্যে ভলকান সংস্করণ 1.3 সমর্থনকারী হেডার ফাইলগুলি অন্তর্ভুক্ত রয়েছে। ভলকান SDK-এ হেডারগুলির সবচেয়ে বর্তমান সংস্করণ রয়েছে৷
SPIR-V এ শেডার কোড কম্পাইল করুন
Vulkan API আশা করে যে shader প্রোগ্রামগুলি SPIR-V বাইনারি মধ্যবর্তী বিন্যাসে প্রদান করা হবে। এই কনভেনশনটি OpenGL ES থেকে আলাদা, যেখানে আপনি টেক্সট স্ট্রিং হিসাবে OpenGL শেডিং ল্যাঙ্গুয়েজে (GLSL) লেখা সোর্স কোড জমা দিতে পারেন। জিএলএসএল বা হাই-লেভেল শেডার ল্যাঙ্গুয়েজ (এইচএলএসএল) এর মতো শেডার ভাষায় লেখা কোড নিতে একটি শেডার কম্পাইলার ব্যবহার করুন এবং ভলকানের সাথে ব্যবহারের জন্য এটি 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 ফাংশন কল করেন, তখন নিয়ন্ত্রণ ভলকান লোডার নামে একটি গঠন দ্বারা পরিচালিত একটি প্রেরণ টেবিলের মধ্য দিয়ে যায়। Android তার নিজস্ব Vulkan লোডার বাস্তবায়ন ব্যবহার করে এবং LunarG লোডার নয়। এই লোডার সিস্টেমটি Vulkan API-এর লেয়ার আর্কিটেকচারের অংশ। বিল্ড টাইমে সিস্টেম লাইব্রেরির সাথে লিঙ্ক করার ফলে একটি প্রদত্ত API কলের জন্য একটি অতিরিক্ত প্রেরণ স্তর দেখা যায়। ওভারহেড ছোট হলেও, এটি এমন গেমগুলির জন্য লক্ষণীয় হতে পারে যেগুলি উচ্চ ভলিউম ভলকান কলগুলি সম্পাদন করে।
সিস্টেম লাইব্রেরি সাধারণত শুধুমাত্র Vulkan ফাংশনগুলির পয়েন্টারগুলি সমাধান করে যা মূল API এর অংশ হিসাবে বিবেচিত হয়। ভলকানের প্রচুর সংখ্যক এক্সটেনশন রয়েছে, যা অতিরিক্ত ভলকান ফাংশনকে সংজ্ঞায়িত করে, যার অনেকগুলি সিস্টেম লাইব্রেরি দ্বারা স্বয়ংক্রিয়ভাবে সমাধান করা হয় না। এই Vulkan ফাংশনগুলি ব্যবহার করার আগে আপনাকে ম্যানুয়ালি পয়েন্টারগুলি সমাধান করতে হবে।
এই সমস্যাগুলি প্রশমিত করতে, আপনি রানটাইমে ব্যবহার করতে চান এমন সমস্ত ভলকান ফাংশনগুলির গতিশীলভাবে পয়েন্টারগুলি সমাধান করুন৷ এটি সম্পন্ন করার একটি উপায় হল একটি ওপেন সোর্স মেটা-লোডার লাইব্রেরি যেমন volk ব্যবহার করা। AGDKTunnel নমুনা গেম এই উদ্দেশ্যে volk সংহত করে। আপনি যদি একটি মেটা-লোডার লাইব্রেরি ব্যবহার করেন, তাহলে আপনার বিল্ড স্ক্রিপ্টে libvulkan.so
শেয়ার করা লাইব্রেরির সাথে লিঙ্ক করবেন না।
উপলব্ধ Vulkan API সংস্করণ নির্ধারণ করুন
অ্যান্ড্রয়েড নিম্নলিখিত Vulkan API সংস্করণ সমর্থন করে:
- 1.0.3
- 1.1
- 1.3
একটি প্রদত্ত ডিভাইসে উপলব্ধ সর্বোচ্চ Vulkan API সংস্করণ নম্বর Android সংস্করণ এবং Vulkan ড্রাইভার সমর্থন দ্বারা নির্ধারিত হয়।
অ্যান্ড্রয়েড সংস্করণ
Vulkan API সংস্করণের জন্য প্ল্যাটফর্ম সমর্থন ন্যূনতম Android সংস্করণের (API স্তর) উপর নির্ভরশীল:
- 1.3 — Android 13.0 (API স্তর 33) এবং উচ্চতর
- 1.1 — Android 10.0 (API স্তর 29) এবং উচ্চতর
- 1.0.3 — Android 7.0 (API স্তর 24) এবং উচ্চতর
ভলকান ড্রাইভার সমর্থন
Vulkan API সংস্করণের জন্য Android প্ল্যাটফর্ম সমর্থন গ্যারান্টি দেয় না যে API সংস্করণটি ডিভাইসের Vulkan ড্রাইভার দ্বারা সমর্থিত। Android 13 চালিত একটি ডিভাইস Vulkan API-এর শুধুমাত্র সংস্করণ 1.1 সমর্থন করতে পারে।
Vulkan আরম্ভ করার সময়, এর চেয়ে বড় একটি API সংস্করণের অনুরোধ করবেন না:
- ডিভাইসে চলমান Android এর সংস্করণের জন্য সর্বাধিক Vulkan API সংস্করণ
- VkEnumerateInstanceVersion দ্বারা রিপোর্ট করা Vulkan API সংস্করণ
- VkPhysicalDeviceProperties কাঠামোর
apiVersion
বৈশিষ্ট্য দ্বারা রিপোর্ট করা ভলকান 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 ডিভাইসকে প্রোফাইলের সাথে সামঞ্জস্যপূর্ণ হতে সমর্থন করতে হবে। একটি ডিভাইস নির্দিষ্ট ভলকান প্রোফাইলের সাথে সামঞ্জস্যপূর্ণ কিনা তা নির্ধারণ করতে, যেমন 2022 অ্যান্ড্রয়েড বেসলাইন প্রোফাইল , ওপেন সোর্স ভলকান প্রোফাইল API লাইব্রেরি ব্যবহার করুন। এছাড়াও আপনি প্রোফাইল JSON ফাইলটি নিজে পার্স করতে পারেন এবং প্রোফাইল সামঞ্জস্যতা নির্ধারণ করতে প্রাসঙ্গিক Vulkan API ব্যবহার করে ডিভাইসের ক্ষমতা জিজ্ঞাসা করতে পারেন।
ভলকান প্রোফাইল
অ্যান্ড্রয়েড ভলকান প্রোফাইল ব্যবহার করছে যা সংজ্ঞায়িত করে যে অ্যান্ড্রয়েড চালিত প্রতিটি ডিভাইসের জন্য কোন বৈশিষ্ট্য এবং এক্সটেনশন উপলব্ধ।
অ্যান্ড্রয়েড বেসলাইন প্রোফাইল (এবিপি) হল ভলকান প্রোফাইল তৈরির প্রথম প্রচেষ্টা। ABP2021 এবং ABP2022 হল পিছনের দিকের চেহারার প্রোফাইল যা সেই সময়ে সক্রিয় ডিভাইসগুলির 85% থেকে বেশি কভার করার লক্ষ্যে। সামনে কোনো নতুন এবিপি থাকবে না।
Vulkan Profiles for Android (VPA) হল নতুন অগ্রগামী প্রোফাইল যার লক্ষ্য সফ্টওয়্যার ডেভেলপারদের চাহিদা প্রতিফলিত করা এবং হার্ডওয়্যার বিকাশকারীরা সেগুলি সরবরাহ করার সাথে সাথে সামঞ্জস্যপূর্ণ বৈশিষ্ট্যগুলি চালান। VPA15_minimums হল Android 15 এর জন্য প্রথম প্রোফাইল এবং প্রতিটি বড় Android রিলিজ কভার করার জন্য প্রতি বছর একটি নতুন VPA থাকবে।
ফ্রেম পেসিং প্রয়োগ করুন
সঠিক ফ্রেম পেসিং একটি উচ্চ-মানের গেমপ্লে অভিজ্ঞতা প্রদানের একটি অপরিহার্য অংশ। অ্যান্ড্রয়েড গেম ডেভেলপমেন্ট কিটে আপনার গেমের সর্বোত্তম ফ্রেম পেসিং অর্জনে সহায়তা করার জন্য ফ্রেম পেসিং লাইব্রেরি অন্তর্ভুক্ত রয়েছে। আরও বাস্তবায়নের বিশদ বিবরণের জন্য, আপনার Vulkan রেন্ডারারে ইন্টিগ্রেট অ্যান্ড্রয়েড ফ্রেম পেসিং দেখুন।
প্রাক ঘূর্ণন বাস্তবায়ন
অ্যান্ড্রয়েড ডিভাইস একাধিক ওরিয়েন্টেশনে প্রদর্শন করতে পারে। ডিভাইসের অভিযোজন রেন্ডার পৃষ্ঠের অভিযোজন থেকে ভিন্ন হতে পারে। অ্যান্ড্রয়েডে OpenGL ES এর বিপরীতে, Vulkan উভয়ের মধ্যে অসঙ্গতিগুলি পরিচালনা করে না। ভলকান ব্যবহার করার সময় ওরিয়েন্টেশন প্রক্রিয়া কীভাবে কাজ করে এবং অভিযোজন পার্থক্যগুলি পরিচালনা করার সর্বোত্তম পদ্ধতি বুঝতে, ভলকান প্রি-রোটেশনের সাথে ডিভাইসের ঘূর্ণন পরিচালনা করুন দেখুন।
সমস্যা সমাধান এবং প্রোফাইল ভলকান রেন্ডারিং
ভলকান রেন্ডারিং কোডের সাথে রেন্ডারিং সমস্যা এবং পারফরম্যান্স সমস্যাগুলি নির্ণয় করতে আপনাকে সহায়তা করার জন্য একাধিক সরঞ্জাম উপলব্ধ।
Vulkan এর ডিবাগিং এবং প্রোফাইলিং সরঞ্জাম সম্পর্কে আরও তথ্যের জন্য, সরঞ্জাম এবং উন্নত বৈশিষ্ট্য বিভাগটি চেকআউট করুন।
Vulkan বৈধতা স্তর
ভলকান যাচাইকরণ স্তরগুলি হল রানটাইম লাইব্রেরি যা ভলকান API-তে আপনার কলগুলি পরিদর্শন করতে এবং ভুল বা অ-অনুকূল ব্যবহার সম্পর্কে সতর্কতা বা ত্রুটি প্রদান করতে সক্ষম করা যেতে পারে। এই বৈধকরণ স্তরগুলি ডিফল্টরূপে সক্রিয় নয়, কারণ বৈধকরণ প্রক্রিয়া রানটাইম ওভারহেড যোগ করে এবং আপনার গেমের কার্যকারিতাকে প্রভাবিত করে৷ আপনার গেমের সাথে বৈধতা স্তরগুলি কীভাবে ব্যবহার করবেন সে সম্পর্কে তথ্যের জন্য, যাচাইকরণ স্তরের সাথে ডিবাগিং দেখুন।
ফ্রেম ক্যাপচার টুল
একটি গেম ফ্রেমের সময় করা Vulkan API কলগুলি রেকর্ড করতে এবং পুনরায় প্লে করতে ফ্রেম ক্যাপচার সরঞ্জামগুলি ব্যবহার করুন৷ এই সরঞ্জামগুলি আপনাকে অনুমতি দেয়:
- সক্রিয় গ্রাফিক সংস্থান সম্পর্কে তথ্য এবং ভিজ্যুয়ালাইজেশন দেখুন
- আপনার গেমের দ্বারা করা API কলগুলির ক্রম দেখুন এবং API পরামিতিগুলি দেখুন
- ড্র কলের সময় গ্রাফিক্স পাইপলাইনের অবস্থা অন্বেষণ করুন
- ফ্রেমে একটি নির্দিষ্ট ড্র কল পর্যন্ত রেন্ডারিংয়ের ফলাফলগুলি কল্পনা করুন৷
অ্যান্ড্রয়েডে চলমান গেম থেকে ফ্রেম ক্যাপচার করতে ওপেন সোর্স রেন্ডারডক টুল ব্যবহার করুন। RenderDoc Vulkan এবং OpenGL ES উভয়ের ফ্রেম ক্যাপচার সমর্থন করে।
অ্যান্ড্রয়েড জিপিইউ ইন্সপেক্টর (এজিআই) ভলকান ফ্রেমগুলি ক্যাপচার করতেও ব্যবহার করা যেতে পারে।
কর্মক্ষমতা বিশ্লেষণ সরঞ্জাম
আপনার গেমের রেন্ডারিং সমস্যাগুলি তদন্ত করতে পারফরম্যান্স বিশ্লেষণ সরঞ্জামগুলি ব্যবহার করুন যা সাবঅপ্টিমাল ফ্রেম রেট সৃষ্টি করে। স্বতন্ত্র GPU বিক্রেতারা আপনার গেম প্রোফাইল করার জন্য ডিজাইন করা টুল সরবরাহ করে এবং তাদের GPU আর্কিটেকচারের জন্য নির্দিষ্ট পারফরম্যান্স ডেটা প্রদান করে। আপনার গেমের পারফরম্যান্সের বৈশিষ্ট্য এবং বাধাগুলি উল্লেখযোগ্যভাবে পরিবর্তিত হতে পারে যখন বিভিন্ন বিক্রেতাদের থেকে GPU তে রেন্ডার করা হয় বা এমনকি একই বিক্রেতার থেকে বিভিন্ন GPU জেনারেশনে।
আপনি কর্মক্ষমতা ডেটা সংগ্রহ এবং বিশ্লেষণ করতে Android GPU ইন্সপেক্টর ব্যবহার করতে পারেন। বিক্রেতা সরঞ্জামগুলির বিপরীতে, Android GPU ইন্সপেক্টর বিভিন্ন বিক্রেতার একাধিক GPU-এর সাথে সামঞ্জস্যপূর্ণ। যাইহোক, অ্যান্ড্রয়েড জিপিইউ ইন্সপেক্টর পুরানো অ্যান্ড্রয়েড ডিভাইস সমর্থন করে না এবং সমস্ত নতুন ডিভাইসের সাথে সামঞ্জস্যপূর্ণ নাও হতে পারে।
CTS-D দিয়ে ভলকান টেস্টিং উন্নত করুন
অ্যান্ড্রয়েড-চালিত ডিভাইস নির্মাতারা তাদের ডিভাইসগুলি সামঞ্জস্যপূর্ণ কিনা তা নিশ্চিত করতে সাহায্য করার জন্য সামঞ্জস্য পরীক্ষা স্যুট (CTS) ব্যবহার করে। বিকাশকারী-চালিত CTS (CTS-D) হল Android অ্যাপ্লিকেশন বিকাশকারীদের দ্বারা জমা দেওয়া পরীক্ষাগুলি যাতে ভবিষ্যতে Android ডিভাইসগুলি তাদের ব্যবহারের ক্ষেত্রে সন্তুষ্ট হয় এবং তাদের অ্যাপ্লিকেশনগুলিকে মসৃণভাবে এবং বাগ ছাড়াই চালাতে সক্ষম হয়।
আপনি যদি আপনার Vulkan অ্যাপ্লিকেশনের সাথে একটি নতুন বাগ ট্রিগার করতে পরিচালনা করেন যা কোনো নির্দিষ্ট Android-চালিত ডিভাইসকে প্রভাবিত করে, আপনি একটি নতুন পরীক্ষার প্রস্তাব জমা দিতে পারেন, আপনার সমস্যা এবং এটি পরীক্ষা করার উপায় বর্ণনা করে। এটি নিশ্চিত করে যে ডিভাইসের জন্য ভবিষ্যতের আপডেটে সমস্যাটি স্থির করা হয়েছে এবং এটিও নিশ্চিত করে যে একই বাগ অন্য কোনও ডিভাইসে ঘটবে না।
পরীক্ষার প্রস্তাব কিভাবে জমা দিতে হয় তার ধাপে ধাপে নির্দেশাবলীর জন্য CTS জমা দেওয়ার প্রক্রিয়াটি দেখুন।