Yerel ve tescilli motorlar

Android'de Vulkan'ı kullanmaya başlama

Vulkan, Android'deki birincil düşük düzey grafik API'sidir. Vulkan, en iyi sonuçları .

Vulkan'ı oyun motorunuza başarıyla uygulamak için:

  • Vulkan ile kullanılacak Android cihazları belirleme
  • Eski Android cihazları desteklemenin avantajlarını ve dezavantajlarını anlama
  • Vulkan'ı Android derleme hedefinize ekleyin
  • Vulkan için SPIR-V oluşturmak üzere bir gölgelendirici derleyici seçin
  • Çalışma zamanında kullanılabilen Vulkan API sürümünü belirleme
  • Vulkan profilleri ile Vulkan oluşturma işlemlerinizi nasıl optimize edeceğinizi öğrenin. kare hızı ve önceden döndürme
  • Hata ayıklama ve performans analizi için grafik araçları seçme
    Not: Android'de Unity veya Unreal oyun motorlarıyla Vulkan'ı kullanma hakkında bilgi edinmek için şu makaleleri inceleyin:
  • Unity'de Vulkan
  • Unreal'da Vulkan

Vulkan için minimum cihaz özelliklerini seçme

Vulkan, Android 7.0 (API düzeyi 24) sürümünden itibaren Android'de kullanılabilir. Android 7.0 veya sonraki sürümleri çalıştıran tüm Android cihazlar Vulkan'ı desteklemez. Oyununuzun hangi Vulkan özellikli Android cihazları desteklediğini belirlemeniz gerekir.

Öneriler

Vulkan desteği için minimum gereksinimler olarak aşağıdaki spesifikasyonları kullanın:

  • Cihazınızda Android 10.0 (API düzeyi 29) veya daha yeni bir sürüm yüklü olmalıdır.
  • Cihaz, Vulkan API 1.1 veya sonraki sürümleri desteklemelidir.
  • Cihaz, 2022 ile uyumlu donanım özelliklerine ve özelliklere sahip Android Baseline profili

Eski cihaz desteği

Oyununuz, farklı grafik düzeylerine sahip çok çeşitli cihazlarda çalışacak şekilde tasarlandıysa Vulkan için minimum cihaz özelliklerini seçme bölümünde önerilenlerden daha eski cihazları desteklemeniz gerekebilir. Eski cihazlar için destek oluşturmadan önce Vulkan'ın bazı avantajlar sağlar. Çok sayıda çizim çağrısı içeren ve OpenGL ES kullanan oyunlar Çekim çağrısı yapmanın yüksek maliyeti nedeniyle sürücünün önemli ölçüde ek yüküne neden olabilir. tıklayın. Bu oyunlar, kare sürelerinin büyük bir kısmını grafik sürücüsünde harcayarak CPU'ya bağlı hale gelebilir. OpenGL ES'den Vulkan'a geçiş yaparak oyunlarda CPU ve güç kullanımında da önemli düşüşler görülebilir. Bu, özellikle oyununuzda çizim çağrılarını azaltmak için örneklemeyi etkili bir şekilde kullanamayan karmaşık sahneler varsa geçerlidir. Hedef cihaz listenizdeki bazı cihazlarda oyununuzu güvenilir bir şekilde çalıştıramayan Vulkan uygulamaları olabileceğinden, eski cihazları hedeflerken yedek olarak OpenGL ES oluşturma desteği ekleyin.

Vulkan özellikli eski cihazları desteklemek istemeyebilirsiniz çünkü bunlarda veya kararlılık sorunları varsa.

Performans ve Özellikler

Vulkan özellikli eski Android cihazlar, oluşturma performansını bulamayabilir veya Oyununuzu çalıştırmak için gereken özellikler için donanım desteği. Bu, özellikle son zamanlarda Oyununuzda yüksek kaliteli grafiklere sahipse ve Vulkan başvurduğunuz tek API ise hedeflemenize olanak tanır. Birçok eski cihaz, Vulkan API'nin 1.0.3 sürümüyle sınırlıdır ve genellikle daha modern donanımlarda bulunan yaygın olarak kullanılan Vulkan uzantılarını içermez.

Kararlılık

Eski Android cihazlarda güncel olmayan Vulkan sürücüleri kullanılıyor olabilir. Bu sürücü sürümleri, oyununuzun kararlılığını etkileyebilecek hatalar içerebilir. Sürücü hatalarını gidermek, önemli miktarda test ve mühendislik süresi gerektirebilir.

Vulkan'ı projenize ekleyin

Vulkan'ı projenize eklemek için şunları yapmanız gerekir:

  • Vulkan API üstbilgilerini dahil etme
  • Gölgelendirici kodunu SPIR-V olarak derleme
  • Çalışma zamanında Vulkan API'yi çağırın

Vulkan API başlıklarını dahil et

Kullanılan kodu derlemek için oyununuzun Vulkan API başlık dosyalarını içermesi gerekir: Vulkan. Vulkan başlıklarının bir kopyasını Android NDK'da veya Vulkan SDK sürümlerinde sunulur. Belirli bir NDK sürümü yalnızca NDK sürümü yayınlandığı sırada mevcut olan Vulkan başlıklarını içerir. NDK'dan Vulkan üstbilgilerini kullanıyorsanız Vulkan 1.3 sürümünü destekleyen üstbilgi dosyalarını içeren NDK 25 veya sonraki bir sürümü kullanın. Vulkan SDK'sında başlıkların en güncel sürümü bulunur.

Gölgelendirici kodunu SPIR-V için derleyin

Vulkan API, gölgelendirici programların SPIR-V ikili ara biçiminde sağlanmasını bekler. Bu kural, yüksek performansa sahip OpenGL ES'den farklıdır. dilinde yazılmış kaynak kodunu gönderebilir Metin olarak OpenGL Gölgelendirme Dili (GLSL) dizeler için geçerlidir. Gölgelendiricide yazılan kodu almak için gölgelendirici derleyici kullanma GLSL veya High-level Shader Language (HLSL) gibi bir dil kullanabilirsiniz. ve Vulkan ile kullanılmak üzere SPIR-V modüllerinde derledi.

shaderc derleyicisi, GLSL'de yazılmış gölgelendirici programlarını SPIR-V'ye derlemek için kullanılabilir. Oyununuz HLSL kullanıyorsa DirectXShaderCompiler SPIR-V çıkışını destekler. Genellikle, oyununuzun öğe oluşturma sürecinin bir parçası olarak gölgelendirici programlarını çevrimdışı olarak derleyip SPIR-V modüllerini çalışma zamanındaki öğelerinize dahil edersiniz.

Çalışma zamanında Vulkan API'yi çağırma

Vulkan API'yi çağırmak için oyununuzun Vulkan API çağrılarına yönelik işlev işaretçileri alması gerekir. Bunu yapmanın en kolay yolu, Android NDK'ya dahil olan libvulkan.so paylaşılan kitaplığına bağlantı oluşturmaktır. Bağlantı oluşturma iki eksikliğe sahip: ek işlev dağıtım ek yükü ve Vulkan API işlevi işaretçilerinin otomatik olarak çözüme ulaştırıldı.

Bir Vulkan API işlevini çağırdığınızda, kontrol bir görevden geçer tablosunu Vulkan yükleyici adı verilen bir yapı tarafından yönetilir. Android, LunarG yükleyicisini değil kendi Vulkan yükleyici uygulamasını kullanır. Bu yükleyici sistemi, Vulkan API'nin katman mimarisinin bir parçasıdır. Derleme sırasında sistem kitaplığına bağlantı oluşturmak, belirli bir API çağrısı için ek bir dağıtım düzeyine neden olur. Ek yük küçük olsa da fark edilebilir yüksek hacimli Vulkan çağrıları yapan oyunlar için

Sistem kitaplığı genellikle işaretçileri yalnızca temel API'nin bir parçası olarak değerlendirilebilir. Vulkan, ek Vulkan işlevlerini tanımlayan çok sayıda uzantıya sahiptir. Bu uzantıların çoğu sistem kitaplığı tarafından otomatik olarak çözülmez. Bu Vulkan işlevlerine ait işaretçileri kullanmadan önce manuel olarak çözmeniz gerekir.

Bu sorunları azaltmak için çalışma zamanında kullanmayı planladığınız tüm Vulkan işlevlerinin işaretçilerini dinamik olarak çözün. Bunu yapmanın bir yolu, volk gibi açık kaynak bir meta yükleyici kitaplığı kullanmaktır. AGDKTunnel örnek oyunu, bu amaçla volk'u entegre eder. Meta yükleyici kitaplığı kullanıyorsanız derleme komut dosyalarınızda libvulkan.sopaylaşılan kitaplığa bağlantı vermeyin.

Kullanılabilir Vulkan API sürümünü belirleme

Android aşağıdaki Vulkan API sürümlerini destekler:

  • 1.0.3
  • 1,1
  • 1.3

Belirli bir cihazda kullanılabilen en yüksek Vulkan API sürüm numarası, Android sürümü ve Vulkan sürücü desteğine göre belirlenir.

Android sürümü

Vulkan API sürümleri için platform desteği, minimum Android sürümüne bağlıdır sürümü (API düzeyi):

  • 1.3 — Android 13.0 (API düzeyi 33) ve sonraki sürümler
  • 1.1 — Android 10.0 (API düzeyi 29) ve sonraki sürümler
  • 1.0.3 — Android 7.0 (API düzeyi 24) ve sonraki sürümler

Vulkan sürücü desteği

Vulkan API sürümleri için Android platformu desteği, API'nin sunulacağını garanti etmez. sürümü, cihazın Vulkan sürücüsü tarafından destekleniyor. Android 13 çalıştıran bir cihaz, Vulkan API'nin yalnızca 1.1 sürümünü destekleyebilir.

Vulkan'ı başlatırken şundan yüksek bir API sürümü istemeyin:

Desteklenen en yüksek Vulkan API sürümünü belirleme örneği şu şekildedir:

// 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 profili uyumluluğunu belirleme

Vulkan profilleri, bir dizi gerekli özelliği tanımlayan JSON dosyalarıdır. bir Vulkan cihazının kullanması gereken uzantılar, özellikler ve minimum parametre sınırları destek ekibi ile uyumludur. Bir cihazın 2022 Android temel profili gibi belirli bir Vulkan profiliyle uyumlu olup olmadığını belirlemek için açık kaynak Vulkan Profiles API kitaplığını kullanın. Dilerseniz profil JSON dosyasını kendiniz ayrıştırabilir ve cihaz özelliklerini sorgulayabilirsiniz profil uyumluluğunu belirlemek için ilgili Vulkan API'lerini kullanın.

Vulkan Profilleri

Android, Vulkan Profillerini kullanıyor Her biri için hangi özelliklerin ve uzantıların kullanılabileceğini Android çalıştıran cihazlar.

Android Temel Profili (ABP), Vulkan Profili oluşturma girişimidir. ABP2021 ve ABP2022 araştırılması amaçlanan geriye dönük profillerdir > Şu andaki etkin cihazların% 85'i: gerekir. Artık yeni bir ABP sunulmayacak.

Android için Vulkan Profilleri (VPA), yeni ileriye dönük profille kısa sürede tutarlı özellikler sunarak, yazılım geliştiricilerin ihtiyaçlarını yansıtarak teslim etme fırsatı bulur. VPA15_minimums, Android 15 için ilk profildir ve her büyük Android sürümünü kapsayacak şekilde her yıl yeni bir VPA yayınlanır.

Kare ilerleme hızını uygulayın

Doğru kare hızı, yüksek kaliteli bir oyun deneyimi sunmanın önemli bir parçasıdır. Android Oyun Geliştirme Kiti, Çerçeve İlerlemesi kitaplığını inceleyin. Daha fazla uygulama ayrıntıları için Android Çerçeve İlerleme Hızı'nı Vulkan oluşturucunuza entegre edin.

Ön rotasyon uygulama

Android cihazlar birden fazla yönde görüntülenebilir. Cihaz yönü, oluşturma yüzeyinin yönünden farklı olabilir. Android'deki OpenGL ES'in aksine Vulkan, bu iki sürüm arasındaki tutarsızlıkları ele almaz. Google Ads'in doğru işleme ve yönü işleme için optimum yöntem Vulkan kullanılırken ortaya çıkan farklılıklar için Vulkan ile cihaz döndürmeyi yönetme rotasyonu ile ilgili daha fazla bilgi edinin.

Sorun giderme ve Vulkan profili oluşturma

Oluşturma sorunlarını teşhis etmenize ve gerektiğinde performans sorunlarına yol açabilir.

Vulkan'ın hata ayıklama ve profil oluşturma araçları hakkında daha fazla bilgi için Araçlar ve ileri seviye özellikler bölümüne bakın.

Vulkan doğrulama katmanları

Vulkan doğrulama katmanları, Vulkan API'ye yaptığınız çağrıları incelemek ve yanlış veya optimum olmayan kullanımla ilgili uyarılar ya da hatalar sağlamak için etkinleştirilebilen çalışma zamanı kitaplıklarıdır. Doğrulama işlemi çalışma zamanı yükü eklediği ve oyununuzun performansını etkilediği için bu doğrulama katmanları varsayılan olarak etkin değildir. Doğrulama katmanlarını oyununuzda nasıl kullanacağınızla ilgili bilgi için bkz. Doğrulama katmanıyla hata ayıklama.

Kare yakalama araçları

Oyun karesi sırasında yapılan Vulkan API çağrılarını kaydetmek ve yeniden oynatmak için kare yakalama araçlarını kullanın. Bu araçlar sayesinde:

  • Etkin grafik kaynaklarıyla ilgili bilgileri ve görselleştirmeleri görüntüleme
  • Oyununuz tarafından yapılan API çağrılarının sırasını ve API parametrelerini görme
  • Çizim çağrısı sırasındaki grafik ardışık düzeninin durumunu keşfetme
  • Karede belirli bir çizim çağrısına kadar oluşturma sonuçlarını görselleştirin.

Android'de çalışan oyunlardan kare yakalamak için açık kaynak RenderDoc aracını kullanın. RenderDoc, hem Vulkan hem de OpenGL ES kare yakalamayı destekler.

Vulkan karelerini yakalamak için Android GPU Denetleyici (AGI) de kullanılabilir.

Performans analizi araçları

Oyununuzdaki oluşturma sorunlarını araştırmak için performans analizi araçlarını kullanın. kare hızlarına neden olabilir. GPU tedarikçileri, oyununuzun profilini oluşturmak ve GPU mimarilerine özgü performans verileri sağlamak için tasarlanmış araçlar sağlar. Oyununuzun performans özellikleri ve performans sorunları, farklı tedarikçilerin GPU'larında oluşturma sırasında önemli ölçüde farklılık göstermektedir. aynı tedarikçiden farklı GPU oluşturmaları var.

Ayrıca, Google Etiket Yöneticisi'ni kullanarak performans verileri. Tedarikçi araçlarından farklı olarak Android GPU Denetleyicisi, GPU'ları daha verimli şekilde kullanabilirsiniz. Ancak Android GPU Inspector, eski Android cihazları desteklemez ve tüm yeni cihazlarla uyumlu olmayabilir.

CTS-D ile Vulkan testlerini iyileştirin

Android destekli cihaz üreticileri, cihazlarının uyumlu olmasını sağlamak için Compatibility Test Suite'i (CTS) kullanır. Geliştirici Tarafından Güçlendirilmiş CTS (CTS-D), gelecekteki Android cihazların kullanım alanlarını karşıladığından ve uygulamalarının sorunsuz ve hatasız bir şekilde çalışabildiğinden emin olmak için Android uygulama geliştiricileri tarafından gönderilen testlerdir.

Vulkan uygulamanızla belirli bir Android cihazı etkileyen yeni bir hatayı tetiklemeyi başarırsanız sorununuzu ve kontrol etme yöntemlerini açıklayan yeni bir test önerisi gönderebilirsiniz. Bu, sorunun güncelleme olmasını sağlar ve aynı hatanın tekrar yaşanmamasını tüm diğer cihazlara yönlendirebilirsiniz.

Test teklifinin nasıl gönderileceğine dair adım adım talimatlar için CTS gönderim sürecine göz atın.