নেটিভ ও মালিকানাধীন ইঞ্জিন

Android-এ Vulkan ব্যবহার শুরু করা

Vulkan হল Android-এ প্রাথমিক লো-লেভেল গ্রাফিক্স API। Vulkan সেইসব গেমের জন্য সেরা পারফর্ম্যান্স প্রদান করে যেগুলি নিজস্ব গেম ইঞ্জিন ও রেন্ডারার প্রয়োগ করে।

আপনার গেম ইঞ্জিনে Vulkan সঠিকভাবে প্রয়োগ করতে আপনাকে অবশ্যই:

  • Vulkan-এর সাথে কোন Android ডিভাইস ব্যবহার করতে হবে তা শনাক্ত করা
  • পুরনো Android ডিভাইসে সাপোর্ট দেওয়ার ক্ষেত্রে কী কী সুবিধা ও অসুবিধা আছে তা বোঝা
  • আপনার Android বিল্ড টার্গেটে Vulkan যোগ করুন
  • Vulkan-এর জন্য SPIR-V তৈরি করতে শেডার কম্পাইলার বেছে নিন
  • রানটাইমে উপলভ্য Vulkan API ভার্সন নির্ধারণ করুন
  • Vulkan প্রোফাইল, ফ্রেম পেসিং ও প্রি-রোটেশনের মাধ্যমে কীভাবে Vulkan রেন্ডারিং অপারেশন অপ্টিমাইজ করবেন তা জানুন
  • ডিবাগিং ও পারফর্ম্যান্স বিশ্লেষণের জন্য গ্রাফিক্স টুল বেছে নিন
    মনে রাখবেন: Unity বা Unreal গেম ইঞ্জিনের সাথে Android-এ Vulkan ব্যবহার করার বিষয়ে তথ্যের জন্য, দেখুন:
  • Unity-তে Vulkan
  • Unreal-এ Vulkan

Vulkan-এর জন্য ন্যূনতম ডিভাইস স্পেসিফিকেশন বেছে নিন

Android 7.0 (API লেভেল ২৪) থেকে শুরু করে Android-এ Vulkan উপলভ্য। Android 7.0 বা তার পরবর্তী ভার্সন চলছে এমন সব Android ডিভাইসে Vulkan কাজ করে না। আপনার গেম কোন কোন Vulkan-সক্ষম Android ডিভাইসে কাজ করে তা আপনাকে নির্ধারণ করতে হবে।

সাজেশন

Vulkan-এর জন্য ন্যূনতম প্রয়োজনীয়তা হিসেবে নিম্নলিখিত স্পেসিফিকেশন ব্যবহার করুন:

  • ডিভাইসটি Android 10.0 (API লেভেল 29) বা তার পরবর্তী যেকোনও ভার্সনে চলছে
  • ডিভাইসে Vulkan API ভার্সন 1.1 বা তার পরবর্তী যেকোনও ভার্সন কাজ করে
  • ডিভাইসে হার্ডওয়্যার ক্ষমতা ও ফিচার আছে যা ২০২২ Android বেসলাইন প্রোফাইলের সাথে মানানসই

পুরনো ডিভাইসে কাজ করা

আপনার গেম যদি বিভিন্ন গ্রাফিক্স ক্ষমতা সহ বিভিন্ন ধরনের ডিভাইসে চালানোর জন্য ডিজাইন করা হয়, তাহলে আপনাকে Vulkan-এর জন্য ন্যূনতম ডিভাইসের স্পেসিফিকেশন বেছে নিন-এ সাজেস্ট করা ডিভাইসের চেয়ে পুরনো ডিভাইসেও সাপোর্ট দিতে হতে পারে। পুরনো ডিভাইসের জন্য সাপোর্ট তৈরি করার আগে, Vulkan আপনার গেমের জন্য সুবিধা প্রদান করে কিনা তা মূল্যায়ন করুন। যেসব গেমে অনেক ড্র কল থাকে এবং যেগুলি OpenGL ES ব্যবহার করে সেগুলিতে OpenGL ES-এর মধ্যে ড্র কল করার জন্য বেশি খরচ হওয়ার কারণে উল্লেখযোগ্য ড্রাইভার ওভারহেড দেখা যেতে পারে। এইসব গেম গ্রাফিক্স ড্রাইভারের ফ্রেম টাইমের বড় অংশ ব্যবহার করার জন্য CPU বাউন্ড হয়ে যেতে পারে। এছাড়াও, OpenGL ES থেকে Vulkan-এ পাল্টে নিলে, গেমের ক্ষেত্রে CPU ও পাওয়ারের ব্যবহার উল্লেখযোগ্যভাবে কমে যায়। আপনার গেমে জটিল দৃশ্য থাকলে, এটি বিশেষভাবে প্রযোজ্য হয়। এইসব দৃশ্যে ড্র কল কমানোর জন্য ইনস্ট্যান্সিং কার্যকরভাবে ব্যবহার করা যায় না। পুরনো ডিভাইস টার্গেট করার সময়, ফলব্যাক হিসেবে OpenGL ES রেন্ডারিং সাপোর্ট অন্তর্ভুক্ত করুন, কারণ আপনার টার্গেট ডিভাইসের তালিকায় থাকা কিছু ডিভাইসে Vulkan ইমপ্লিমেন্টেশন থাকতে পারে যা আপনার গেম নির্ভরযোগ্যভাবে চালাতে পারে না।

আপনি হয়ত পুরনো Vulkan-উপযোগী ডিভাইসে সাপোর্ট দিতে চাইবেন না কারণ সেগুলিতে পারফর্ম্যান্স ও ফিচারের অভাব রয়েছে অথবা স্থিতিশীলতা সংক্রান্ত সমস্যা রয়েছে।

পারফর্ম্যান্স ও ফিচার

পুরনো Vulkan-সক্ষম Android ডিভাইসে আপনার গেম চালানোর জন্য প্রয়োজনীয় ফিচারগুলির জন্য রেন্ডারিং পারফর্ম্যান্স বা হার্ডওয়্যার সাপোর্ট নাও থাকতে পারে। আপনার গেমে হাই-ফিডেলিটি গ্রাফিক্স থাকলে এবং Android-এ Vulkan একমাত্র API হলে, এটি হওয়ার সম্ভাবনা বেশি। অনেক পুরনো ডিভাইসে Vulkan API-এর 1.0.3 ভার্সন ব্যবহার করা হয় এবং আধুনিক হার্ডওয়্যারে উপলভ্য Vulkan এক্সটেনশন প্রায়ই থাকে না।

স্থায়িত্ব

পুরনো Android ডিভাইসে Vulkan ড্রাইভারের পুরনো ভার্সন ব্যবহার করা হতে পারে। এইসব ড্রাইভার ভার্সনে বাগ থাকতে পারে যা আপনার গেমের স্টেবিলিটির উপর প্রভাব ফেলতে পারে। ড্রাইভারের বাগ সমাধান করতে অনেক সময় পরীক্ষা ও ইঞ্জিনিয়ারিংয়ের প্রয়োজন হয়।

আপনার প্রোজেক্টে Vulkan যোগ করা

আপনার প্রোজেক্টে Vulkan যোগ করতে আপনাকে এগুলি করতে হবে:

  • Vulkan API হেডার অন্তর্ভুক্ত করুন
  • SPIR-V-তে শেডার কোড কম্পাইল করুন
  • রানটাইমে Vulkan API কল করুন

Vulkan API হেডার অন্তর্ভুক্ত করুন

Vulkan ব্যবহার করে এমন কোড কম্পাইল করার জন্য আপনার গেমে Vulkan API হেডার ফাইল অন্তর্ভুক্ত করতে হবে। আপনি Android NDK-তে Vulkan হেডারের কপি খুঁজে পেতে পারেন অথবা Vulkan SDK রিলিজ-এ প্যাকেজ করা আছে। NDK-এর যেকোনও নির্দিষ্ট ভার্সনে শুধুমাত্র NDK রিলিজের সময় উপলভ্য Vulkan হেডার অন্তর্ভুক্ত থাকে। আপনি NDK থেকে Vulkan হেডার ব্যবহার করলে, NDK ভার্সন ২৫ বা তার পরবর্তী ভার্সন ব্যবহার করুন, যার মধ্যে Vulkan ভার্সন 1.3-কে সাপোর্ট করে এমন হেডার ফাইল অন্তর্ভুক্ত থাকে। Vulkan SDK-তে হেডারের সবচেয়ে লেটেস্ট ভার্সন আছে।

SPIR-V-তে শেডার কোড কম্পাইল করুন

Vulkan API আশা করে যে SPIR-V বাইনারি ইন্টারমিডিয়েট ফর্ম্যাটে শেডার প্রোগ্রাম প্রদান করা হবে। এই কনভেনশন OpenGL ES-এর থেকে আলাদা, যেখানে আপনি OpenGL Shading Language (GLSL)-এ লেখা সোর্স কোড টেক্সট স্ট্রিং হিসেবে জমা দিতে পারেন। GLSL বা হাই-লেভেল শেডার ল্যাঙ্গুয়েজ (HLSL)-এর মতো শেডার ল্যাঙ্গুয়েজে লেখা কোড নিতে শেডার কম্পাইলার ব্যবহার করুন এবং Vulkan-এর সাথে ব্যবহার করার জন্য SPIR-V মডিউলে কম্পাইল করুন।

GLSL-এ লেখা শেডার প্রোগ্রাম SPIR-V-তে কম্পাইল করার জন্য shaderc কম্পাইলার ব্যবহার করা যেতে পারে। আপনার গেম HLSL ব্যবহার করলে, DirectXShaderCompiler SPIR-V আউটপুট সাপোর্ট করে। সাধারণত, আপনি আপনার গেমের জন্য অ্যাসেট বিল্ড প্রসেসের অংশ হিসেবে অফলাইনে শেডার প্রোগ্রাম কম্পাইল করেন এবং আপনার রানটাইম অ্যাসেটের অংশ হিসেবে SPIR-V মডিউল অন্তর্ভুক্ত করেন।

রানটাইমে Vulkan API কল করুন

Vulkan API কল করার জন্য, আপনার গেমকে Vulkan API কলের ফাংশন পয়েন্টার পেতে হবে। এটি করার সবচেয়ে সহজ উপায় হল libvulkan.so শেয়ার করা লাইব্রেরির সাথে লিঙ্ক করা, যা Android NDK-তে অন্তর্ভুক্ত থাকে। লাইব্রেরির সাথে লিঙ্ক করার দুটি অসুবিধা আছে: অতিরিক্ত ফাংশন ডিসপ্যাচ ওভারহেড এবং কোন Vulkan API ফাংশন পয়েন্টার অটোমেটিক সমাধান করা হবে তার উপর সীমাবদ্ধতা।

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

সিস্টেম লাইব্রেরি সাধারণত শুধুমাত্র Vulkan ফাংশনের পয়েন্টার সমাধান করে যা কোর API-এর অংশ হিসেবে বিবেচিত হয়। Vulkan-এর অনেক এক্সটেনশন আছে, যা অতিরিক্ত Vulkan ফাংশন নির্ধারণ করে, যার মধ্যে অনেকগুলি সিস্টেম লাইব্রেরি দ্বারা অটোমেটিক সমাধান করা হয় না। এই Vulkan ফাংশন ব্যবহার করার আগে আপনাকে ম্যানুয়ালি পয়েন্টার সমাধান করতে হবে।

এইসব সমস্যা কমাতে, রানটাইমে আপনি ব্যবহার করতে চান এমন সব Vulkan ফাংশনের জন্য ডায়নামিকভাবে পয়েন্টার সমাধান করুন। এটি করার একটি উপায় হল volk-এর মতো ওপেন সোর্স মেটা-লোডার লাইব্রেরি ব্যবহার করা। AGDKTunnel স্যাম্পেল গেম এই উদ্দেশ্যে volk ইন্টিগ্রেট করে। আপনি মেটা-লোডার লাইব্রেরি ব্যবহার করলে, আপনার বিল্ড স্ক্রিপ্টে libvulkan.so শেয়ার করা লাইব্রেরির সাথে লিঙ্ক করবেন না।

উপলভ্য Vulkan API ভার্সন নির্ধারণ করুন

Android-এ নিম্নলিখিত Vulkan API ভার্সন কাজ করে:

  • 1.0.3
  • ১.১
  • ১.৩

কোনও ডিভাইসে উপলভ্য Vulkan API-এর সবচেয়ে উন্নত ভার্সন নম্বর Android ভার্সন ও Vulkan ড্রাইভারের সহায়তার মাধ্যমে নির্ধারণ করা হয়।

Android ভার্সন

Vulkan API ভার্সনের জন্য প্ল্যাটফর্ম সাপোর্ট ন্যূনতম Android ভার্সনের (API লেভেল) উপর নির্ভর করে:

  • 1.3 — Android 13.0 (API লেভেল 33) এবং তার পরবর্তী যেকোনও ভার্সন
  • ১.১ — Android 10.0 (API লেভেল ২৯) এবং তার পরবর্তী যেকোনও ভার্সন
  • ১.০.৩ — Android 7.0 (API লেভেল ২৪) এবং তার পরবর্তী ভার্সন

Vulkan ড্রাইভার সাপোর্ট

Vulkan API ভার্সনের জন্য Android প্ল্যাটফর্ম সাপোর্ট, API ভার্সনটি ডিভাইসের Vulkan ড্রাইভার দ্বারা সমর্থিত হওয়ার গ্যারান্টি দেয় না। Android 13-এ চলা ডিভাইস শুধুমাত্র Vulkan API-এর 1.1 ভার্সন সাপোর্ট করতে পারে।

Vulkan শুরু করার সময়, এর থেকে বেশি API ভার্সনের জন্য অনুরোধ করবেন না:

  • ডিভাইসে চলা Android ভার্সনের জন্য 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 প্রোফাইল কম্প্যাটিবিলিটি নির্ধারণ করুন

Vulkan প্রোফাইল হল JSON ফাইল যা প্রয়োজনীয় ফিচার, এক্সটেনশন, ক্ষমতা ও ন্যূনতম প্যারামিটার সীমার সেটকে সংজ্ঞায়িত করে। প্রোফাইলের সাথে মানানসই হতে Vulkan ডিভাইসকে অবশ্যই এগুলি সাপোর্ট করতে হবে। কোনও ডিভাইস ২০২২ Android Baseline প্রোফাইল-এর মতো নির্দিষ্ট Vulkan প্রোফাইলের সাথে মানানসই কিনা তা নির্ধারণ করতে, ওপেন সোর্স Vulkan Profiles API লাইব্রেরি ব্যবহার করুন। এছাড়াও, আপনি নিজেই প্রোফাইল JSON ফাইল পার্স করতে এবং প্রোফাইলের মানানসই হওয়ার বিষয়টি নির্ধারণ করতে প্রাসঙ্গিক Vulkan API ব্যবহার করে ডিভাইসের ক্ষমতা কোয়েরি করতে পারেন।

Vulkan প্রোফাইল

Android Vulkan প্রোফাইল ব্যবহার করছে যা Android-এ চলা প্রতিটি ডিভাইসের জন্য কোন কোন ফিচার ও এক্সটেনশন উপলভ্য তা নির্ধারণ করে।

Android Baseline Profile (ABP) হল Vulkan Profile তৈরি করার প্রথম প্রচেষ্টা। ABP2021 এবং ABP2022 হল ব্যাকওয়ার্ড লুকিং প্রোফাইল যার লক্ষ্য হল সেই সময়ে অ্যাক্টিভ ডিভাইসের > ৮৫% কভার করা। এখন থেকে আর কোনও নতুন ABP থাকবে না।

Vulkan Profiles for Android (VPA) হল নতুন প্রোফাইল যা সফ্টওয়্যার ডেভেলপারদের প্রয়োজনীয়তা পূরণ করার জন্য এবং হার্ডওয়্যার ডেভেলপাররা যত তাড়াতাড়ি সম্ভব ফিচার ডেলিভার করতে পারেন তার জন্য তৈরি করা হয়েছে। VPA15_minimums হল Android 15-এর প্রথম প্রোফাইল এবং প্রতি বছর নতুন VPA থাকবে যাতে প্রতিটি প্রধান Android রিলিজ কভার করা যায়।

ফ্রেম পেসিং প্রয়োগ করা

খুব ভাল কোয়ালিটির গেমপ্লে অভিজ্ঞতা প্রদান করার জন্য সঠিক ফ্রেম পেসিং একটি অপরিহার্য অংশ। Android Game Development Kit-এ ফ্রেম পেসিং লাইব্রেরি অন্তর্ভুক্ত থাকে যা আপনার গেমকে ফ্রেম পেসিং অপ্টিমাইজ করতে সাহায্য করে। আরও প্রয়োগ সংক্রান্ত বিবরণের জন্য, আপনার Vulkan রেন্ডারারে Android ফ্রেম পেসিং ইন্টিগ্রেট করুন দেখুন।

ইমপ্লিসিট সিঙ্ক্রোনাইজেশন ও ফ্রেম পেসিংয়ের উপর নির্ভর করবেন না

vkAcquireNextImageKHR এবং vkQueuePresentKHR ব্যবহার করে সোয়াপচেন ম্যানেজ করা হয়। সাধারণ অ্যাপ্লিকেশন বা GPU সিঙ্ক্রোনাইজেশনের জন্য তাদের সম্ভাব্য ব্লকিং আচরণের উপর নির্ভর করা এড়িয়ে চলুন।

এইসব ফাংশনের সুনির্দিষ্ট ব্লকিং আচরণ যথেষ্ট আলাদা হতে পারে এগুলির মধ্যে:

  • Android ডিভাইস
  • GPU ড্রাইভার
  • প্রেজেন্টেশন ইঞ্জিন স্টেট (VkPresentModeKHR)

vkAcquireNextImageKHR-এর একমাত্র উদ্দেশ্য হল উপলভ্য প্রেজেন্ট করা যায় এমন ছবি অ্যাকোয়ার করা এবং এটি ব্লক করতে পারে বা নাও করতে পারে। একইভাবে, vkQueuePresentKHR একটি ছবি দেখানোর জন্য অনুরোধকে সারিবদ্ধ করে এবং ব্লক করতেও পারে বা নাও করতে পারে।

কোনও ফাংশনই সম্পর্কহীন CPU টাস্ক বা GPU অপারেশন সিঙ্ক্রোনাইজ করার জন্য নির্ভরযোগ্য গ্যারান্টি প্রদান করে না।

রোবাস্ট সিঙ্ক্রোনাইজেশনের জন্য, সবসময় এক্সপ্লিসিট Vulkan প্রিমিটিভ ব্যবহার করুন, যেমন GPU-GPU ডিপেন্ডেন্সির জন্য সেমাফোর (যেমন, রেন্ডার-টু-প্রেজেন্ট), GPU-CPU সিঙ্ক্রোনাইজেশনের জন্য ফেন্স (যেমন, CPU-তে রেন্ডারিং কখন শেষ হচ্ছে তা জানা) এবং আরও সূক্ষ্ম GPU এক্সিকিউশন ও মেমরি ডিপেন্ডেন্সির জন্য পাইপলাইন ব্যারিয়ার বা ইভেন্ট। স্পষ্ট সিঙ্ক্রোনাইজেশন ব্যবহার করলে তা অনুমানযোগ্য আচরণ নিশ্চিত করে এবং Android-এর বিভিন্ন হার্ডওয়্যার ইকোসিস্টেমে অন্তর্নিহিত ইমপ্লিমেন্টেশন-নির্দিষ্ট টাইমিং ভেরিয়েশনের কারণে হওয়া সূক্ষ্ম বাগ এড়ায়।

প্রি-রোটেশন প্রয়োগ করুন

Android ডিভাইস একাধিক ওরিয়েন্টেশনে ডিসপ্লে করতে পারে। ডিভাইসের ওরিয়েন্টেশন, রেন্ডার সারফেসের ওরিয়েন্টেশনের থেকে আলাদা হতে পারে। Android-এ OpenGL ES-এর মতো, Vulkan দুটির মধ্যে অমিল ম্যানেজ করে না। Vulkan ব্যবহার করার সময় ওরিয়েন্টেশন প্রসেস কীভাবে কাজ করে এবং ওরিয়েন্টেশন সংক্রান্ত পার্থক্য ম্যানেজ করার সবচেয়ে ভালো পদ্ধতি সম্পর্কে বুঝতে, Vulkan প্রি-রোটেশনের মাধ্যমে ডিভাইস রোটেশন ম্যানেজ করা নিবন্ধটি দেখুন।

Vulkan রেন্ডারিংয়ের সমস্যার সমাধান ও প্রোফাইল করা

Vulkan রেন্ডারিং কোডের মাধ্যমে রেন্ডারিং সংক্রান্ত সমস্যা ও পারফর্ম্যান্সের সমস্যা ডায়াগনসিস করার জন্য একাধিক টুল উপলভ্য আছে।

Vulkan-এর ডিবাগিং ও প্রোফাইলিং টুল সম্পর্কে আরও জানতে, টুল ও উন্নত ফিচার বিভাগ দেখুন।

Vulkan যাচাইকরণ লেয়ার

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

ফ্রেম ক্যাপচার টুল

গেম ফ্রেম চলাকালীন Vulkan API কল রেকর্ড ও রিপ্লে করতে ফ্রেম ক্যাপচার টুল ব্যবহার করুন। এইসব টুলের সাহায্যে আপনি এগুলি করতে পারবেন:

  • অ্যাক্টিভ গ্রাফিক রিসোর্স সম্পর্কে তথ্য ও ভিজ্যুয়ালাইজেশন দেখুন
  • আপনার গেমের মাধ্যমে করা API কলের ক্রম এবং API প্যারামিটার দেখুন
  • ড্র কলের সময় গ্রাফিক্স পাইপলাইনের স্ট্যাটাস এক্সপ্লোর করুন
  • ফ্রেমে নির্দিষ্ট ড্র কল পর্যন্ত রেন্ডারিংয়ের ফলাফল ভিজ্যুয়ালাইজ করুন

Android-এ চলা গেম থেকে ফ্রেম ক্যাপচার করতে ওপেন সোর্স RenderDoc টুল ব্যবহার করুন। RenderDoc-এ Vulkan ও OpenGL ES, উভয়েরই ফ্রেম ক্যাপচার করা যায়।

এছাড়াও, Vulkan ফ্রেম ক্যাপচার করতে Android GPU Inspector (AGI) ব্যবহার করা যেতে পারে।

পারফর্ম্যান্স বিশ্লেষণ টুল

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

এছাড়াও, পারফর্ম্যান্স ডেটা সংগ্রহ ও বিশ্লেষণ করতে আপনি Android GPU Inspector ব্যবহার করতে পারেন। ভেন্ডর টুলের মতো নয়, Android GPU Inspector বিভিন্ন ভেন্ডরের একাধিক GPU-এর সাথে মানানসই। তবে, Android GPU Inspector পুরনো Android ডিভাইসে কাজ করে না এবং সব নতুন ডিভাইসের সাথে মানানসই নাও হতে পারে।

CTS-D-এর মাধ্যমে Vulkan টেস্টিং উন্নত করুন

Android-চালিত ডিভাইস প্রস্তুতকারকরা তাদের ডিভাইসগুলি সামঞ্জস্যপূর্ণ কিনা তা নিশ্চিত করতে কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) ব্যবহার করে। ডেভেলপার-পরিচালিত CTS (CTS-D) হল Android অ্যাপ্লিকেশন ডেভেলপারদের জমা দেওয়া টেস্ট, যাতে নিশ্চিত করা যায় যে ভবিষ্যতের Android ডিভাইসগুলি তাদের ব্যবহারের ক্ষেত্রে উপযুক্ত এবং কোনও সমস্যা ছাড়াই তাদের অ্যাপ্লিকেশনগুলি মসৃণভাবে চালাতে সক্ষম।

আপনার Vulkan অ্যাপ্লিকেশনের মাধ্যমে আপনি যদি কোনও নতুন বাগ ট্রিগার করতে পারেন যা কোনও নির্দিষ্ট Android-চালিত ডিভাইসকে প্রভাবিত করে, তাহলে আপনি একটি নতুন টেস্ট প্রস্তাব জমা দিতে পারেন, যেখানে আপনার সমস্যা এবং এটি চেক করার উপায় বর্ণনা করা থাকবে। এটি নিশ্চিত করে যে ডিভাইসের জন্য ভবিষ্যতের আপডেটে সমস্যাটি সমাধান করা হয়েছে এবং এটিও নিশ্চিত করে যে একই সমস্যা অন্য কোনও ডিভাইসে ঘটবে না।

কীভাবে টেস্টের প্রস্তাব জমা দিতে হবে তার ধাপে ধাপে নির্দেশাবলীর জন্য CTS জমা দেওয়ার প্রসেস দেখুন।