নেটিভ এবং মালিকানাধীন ইঞ্জিন

অ্যান্ড্রয়েডে ভলকান দিয়ে শুরু করুন

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

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

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

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

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 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 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 লোডার নয়। এই লোডার সিস্টেমটি ভলকান এপিআইয়ের স্তর আর্কিটেকচারের অংশ। বিল্ড টাইমে সিস্টেম লাইব্রেরিতে লিঙ্ক করার ফলে প্রদত্ত এপিআই কলের জন্য অতিরিক্ত প্রেরণ স্তরের ফলাফল হয়। ওভারহেড ছোট হলেও, এটি এমন গেমগুলির জন্য লক্ষণীয় হতে পারে যা ভলকান কলগুলির উচ্চ পরিমাণে সঞ্চালন করে।

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

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

উপলভ্য ভলকান এপিআই সংস্করণ নির্ধারণ করুন

অ্যান্ড্রয়েড নিম্নলিখিত ভলকান এপিআই সংস্করণগুলিকে সমর্থন করে:

  • 1.0.3
  • 1.1
  • 1.3

প্রদত্ত ডিভাইসে উপলব্ধ সর্বাধিক ভলকান এপিআই সংস্করণ নম্বরটি অ্যান্ড্রয়েড সংস্করণ এবং ভলকান ড্রাইভার সমর্থন দ্বারা নির্ধারিত হয়।

অ্যান্ড্রয়েড সংস্করণ

একটি ভলকান এপিআই সংস্করণের জন্য প্ল্যাটফর্ম সমর্থন ন্যূনতম অ্যান্ড্রয়েড সংস্করণ (এপিআই স্তর) এর উপর নির্ভরশীল:

  • 1.3 - অ্যান্ড্রয়েড 13.0 (এপিআই স্তর 33) এবং উচ্চতর
  • 1.1 - অ্যান্ড্রয়েড 10.0 (এপিআই স্তর 29) এবং উচ্চতর
  • 1.0.3 - অ্যান্ড্রয়েড 7.0 (এপিআই স্তর 24) এবং উচ্চতর

ভলকান ড্রাইভার সমর্থন

একটি ভলকান এপিআই সংস্করণের জন্য অ্যান্ড্রয়েড প্ল্যাটফর্ম সমর্থনটি এপিআই সংস্করণটি ডিভাইসের ভলকান ড্রাইভার দ্বারা সমর্থিত গ্যারান্টি দেয় না। অ্যান্ড্রয়েড 13 চলমান একটি ডিভাইস কেবল ভলকান এপিআইয়ের সংস্করণ 1.1 সমর্থন করতে পারে।

ভলকান শুরু করার সময়, এর চেয়ে বড় কোনও এপিআই সংস্করণটির জন্য অনুরোধ করবেন না:

সর্বাধিক সমর্থিত ভলকান এপিআই সংস্করণ নির্ধারণের একটি উদাহরণ নিম্নলিখিত:

// 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;
}

ভলকান প্রোফাইলের সামঞ্জস্য নির্ধারণ করুন

ভলকান প্রোফাইলগুলি হ'ল জেএসএন ফাইল যা প্রয়োজনীয় বৈশিষ্ট্য, এক্সটেনশন, ক্ষমতা এবং ন্যূনতম প্যারামিটার সীমাগুলির একটি সেটকে সংজ্ঞায়িত করে যা একটি ভলকান ডিভাইসকে প্রোফাইলের সাথে সামঞ্জস্যপূর্ণ হওয়ার জন্য সমর্থন করতে হবে। 2022 অ্যান্ড্রয়েড বেসলাইন প্রোফাইলের মতো কোনও ডিভাইস নির্দিষ্ট ভলকান প্রোফাইলের সাথে সামঞ্জস্যপূর্ণ কিনা তা নির্ধারণ করতে, ওপেন সোর্স ভলকান প্রোফাইলগুলি এপিআই লাইব্রেরি ব্যবহার করুন। আপনি প্রোফাইলের সামঞ্জস্যতা নির্ধারণের জন্য প্রোফাইল জেএসএন ফাইল এবং ক্যোয়ারী ডিভাইস ক্ষমতাগুলি ব্যবহার করে পার্স করতে পারেন।

ভলকান প্রোফাইল

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

অ্যান্ড্রয়েড বেসলাইন প্রোফাইল (এবিপি) হ'ল ভলকান প্রোফাইল তৈরির প্রথম প্রচেষ্টা। ABP2021 এবং ABP2022 সেই সময়ে 85% সক্রিয় ডিভাইসগুলি কভার করার লক্ষ্যে ব্যাকওয়ার্ড লুকিং প্রোফাইলগুলি। কোনও নতুন এবিপি এগিয়ে যাবে না।

অ্যান্ড্রয়েডের জন্য ভলকান প্রোফাইলগুলি (ভিপিএ) হ'ল সফটওয়্যার বিকাশকারীদের প্রয়োজনীয়তা প্রতিফলিত করার এবং হার্ডওয়্যার বিকাশকারীরা তাদের সরবরাহ করতে পারার সাথে সাথে সামঞ্জস্যপূর্ণ বৈশিষ্ট্যগুলি চালানোর লক্ষ্যে নতুন ফরোয়ার্ড লুকিং প্রোফাইল। ভিপিএ 15_minimums অ্যান্ড্রয়েড 15 এর জন্য প্রথম প্রোফাইল এবং প্রতিটি বড় অ্যান্ড্রয়েড রিলিজটি কভার করার জন্য প্রতি বছর একটি নতুন ভিপিএ থাকবে।

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

যথাযথ ফ্রেম প্যাসিং একটি উচ্চমানের গেমপ্লে অভিজ্ঞতা সরবরাহের একটি অপরিহার্য অঙ্গ। অ্যান্ড্রয়েড গেম ডেভলপমেন্ট কিটটিতে আপনার গেমটি অনুকূল ফ্রেম প্যাসিং অর্জনে সহায়তা করতে ফ্রেম প্যাসিং লাইব্রেরি অন্তর্ভুক্ত রয়েছে। আরও বাস্তবায়নের তথ্যের জন্য, আপনার ভলকান রেন্ডারারে ইন্টিগ্রেট অ্যান্ড্রয়েড ফ্রেম প্যাসিংটি দেখুন।

প্রাক-ঘূর্ণন বাস্তবায়ন করুন

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

সমস্যা সমাধান এবং প্রোফাইল ভলকান রেন্ডারিং

ভলকান রেন্ডারিং কোড সহ রেন্ডারিং সমস্যা এবং পারফরম্যান্স সমস্যাগুলি নির্ণয় করতে আপনাকে একাধিক সরঞ্জাম উপলব্ধ।

ভলকানের ডিবাগিং এবং প্রোফাইলিং সরঞ্জামগুলি সম্পর্কে আরও তথ্যের জন্য, সরঞ্জামগুলি এবং উন্নত বৈশিষ্ট্য বিভাগটি চেকআউট করুন।

ভলকান বৈধতা স্তর

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

ফ্রেম ক্যাপচার সরঞ্জাম

গেম ফ্রেমের সময় তৈরি ভলকান এপিআই কলগুলি রেকর্ড এবং পুনরায় খেলতে ফ্রেম ক্যাপচার সরঞ্জামগুলি ব্যবহার করুন। এই সরঞ্জামগুলি আপনাকে দেয়:

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

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

অ্যান্ড্রয়েড জিপিইউ ইন্সপেক্টর (এজিআই) ভলকান ফ্রেমগুলি ক্যাপচার করতেও ব্যবহার করা যেতে পারে।

কর্মক্ষমতা বিশ্লেষণ সরঞ্জাম

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

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

সিটিএস-ডি দিয়ে ভলকান পরীক্ষার উন্নতি করুন

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

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

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