Yerel ve tescilli motorlar

Android'de Vulkan'ı kullanmaya başlayın

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

Vulkan'ı oyun motorunuza başarılı bir şekilde uygulamak için şunları yapmanız gerekir:

  • Vulkan ile kullanılacak Android cihazları belirleme
  • Eski Android cihazları desteklemenin artılarını ve eksilerini anlayın
  • Vulkan'ı Android derleme hedefinize ekleyin
  • Vulkan için SPIR-V oluşturmak üzere bir gölgelendirici derleyici seçin
  • Çalışma zamanında kullanılabilir 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ını seçme
ziyaret edin.

Vulkan için minimum cihaz özelliklerini seçin

Vulkan, Android 7.0 (API düzeyi 24) sürümünden itibaren Android'de kullanılabilir. Değil Android 7.0 veya sonraki sürümleri çalıştıran tüm Android cihazlar Vulkan'ı destekler. Şunları yapmanız gerekir: oyununuzun Vulkan özellikli hangi Android cihazları desteklediğini belirleyin.

Öneriler

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

  • Cihazda Android 10.0 (API düzeyi 29) veya sonraki bir sürüm yüklüyse
  • Cihaz, Vulkan API'nin 1.1 veya sonraki bir sürümünü destekler
  • Cihaz, 2022 ile uyumlu donanım özelliklerine ve özelliklere sahip Android Baseline profili
ziyaret edin.

Eski cihaz desteği

Oyununuz farklı seviyelere sahip çok çeşitli cihazlarda çalışacak şekilde tasarlanmışsa daha eski grafik özelliklerini desteklemeniz gerekebilir Vulkan için minimum cihaz özelliklerini seçin bölümünde önerilmiştir. 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üke neden olabilir. tıklayın. Bu oyunlar, CPU çekirdeğinin büyük bölümünü kare sürelerinin %80'i kadar olabilir. Ayrıca oyunlar, OpenGL ES'den Vulkan'a geçiş yaparak CPU ve güç kullanımında azalma sağladı. Bu Özellikle oyununuzda etkili bir şekilde kullanamayacağınız karmaşık sahneler varsa ayarlamak çizim çağrılarını azaltmak için kullanılır. Eski cihazları hedeflerken OpenGL ES'yi dahil edin oluşturma desteğini yedek olarak kullanabilirsiniz. Bunun nedeni, oyununuzu güvenilir bir şekilde çalıştıramayan Vulkan uygulamaları vardır.

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. Eski cihazların çoğu ve Vulkan API'lerinde genellikle bulunan Vulkan uzantılarından çoğu zaman modern donanımlar.

Kararlılık

Eski Android cihazlar güncel olmayan Vulkan sürücülerini kullanıyor olabilir. Bu sürücüler sürümleri, oyununuzun kararlılığını etkileyebilecek hatalar içerebilir. Çalışıyor test ve mühendislik ekiplerinin, yazılım sistemlerinin gerekir.

Vulkan'ı projenize ekleyin

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

  • Vulkan API başlıklarını dahil et
  • Gölgelendirici kodunu SPIR-V için derleyin
  • Ç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ü sırasında mevcut olan Vulkan başlıklarını içerir. Şu durumda: NDK'nın Vulkan başlıklarını, NDK sürüm 25 veya üstünü kullanın. Vulkan sürüm 1.3'ü destekleyen üstbilgi dosyalarını kullanabilirsiniz. Vulkan SDK'sında en çok üstbilgilerin güncel sürümünü kullanır.

Gölgelendirici kodunu SPIR-V için derleyin

Vulkan API, gölgelendirici programlarının SPIR-V ikili dosyasında sağlanmasını bekler ara biçimdedir. 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, gölgelendirici programlarını derlemek için kullanılabilir. SPIR-V olarak yazılır. Oyununuzda HLSL kullanılıyorsa DirectXShaderCompiler, SPIR-V çıkışını destekler. Genellikle için öğe oluşturma işleminin bir parçası olarak gölgelendirici programlarını çevrimdışı olarak derleyin: ve SPIR-V modüllerini çalışma zamanı öğelerinizin bir parçası olarak dahil etmelisiniz.

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

Vulkan API'sini çağırmak için oyununuzun Vulkan'ın işlev işaretçileri edinmesi gerekir API çağrıları. Bunu yapmanın en basit yolu, Android NDK'ya dahil olan libvulkan.so paylaşılan kitaplık. 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 yerine kendi Vulkan yükleyici uygulamasını kullanır yükleyin. Bu yükleyici sistemi, Vulkan API'nin katman mimarisinin bir parçasıdır. Derleme sırasında sistem kitaplığına bağlanıldığında ek dağıtım oluşturulur düzeyini belirleyin. 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'ın çok sayıda uzantısı var. çoğu otomatik olarak çözümlenmeyen ek Vulkan işlevleri tanımlayabilirsiniz. yenileniyor. Bu Vulkan'ın işaretçilerini manuel olarak çözümlemeniz gerekir işlevlerine göz atın.

Bu sorunları azaltmak için işaretçileri tüm Vulkan işlevlerine dinamik olarak çözümleyin kullanmayı hedeflediğinizi varsayalım. Bunu yapmanın bir yolu, volk gibi açık kaynak meta yükleyici kitaplığını kullanabilirsiniz. İlgili içeriği oluşturmak için kullanılan AGDKTunnel örnek oyunu bu amaç için volk'u entegre etmektedir. Eğer bir meta yükleyici kitaplığı kullanıyorsunuz, libvulkan.so öğesine bağlantı vermeyin paylaşılan kitaplığınız ekleyebilirsiniz.

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 cihazdaki mevcut en yüksek Vulkan API sürüm numarası belirlenir Android sürümüne ve Vulkan sürücü desteğine göre.

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 Baseline gibi belirli bir Vulkan profiliyle uyumludur. profili için açık kaynak Vulkan Profiller 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. Oyuncuların kullanımına sunmak için her yıl yeni bir VPA ele alacağız.

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 sahip olacaksınız. 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österilebilir. Cihazın yönü oluşturma yüzeyinin yönünden farklı olmalıdır. Şunda OpenGL ES'nin aksine: Android, Vulkan bu ikisi 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 ekleyin.

Vulkan doğrulama katmanları

Vulkan doğrulama katmanları, denetlemek için etkinleştirilebilen çalışma zamanı kitaplıklarıdır çağrılarınızı ve Vulkan API'ye çağrılarınızı iletip yanlış ya da olduğunu duymuştuk. doğrulama işlemi, çalışma zamanı ek yükü ekler ve web sitenizin performansını etkiler. bir oyundur. 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ı

Bir sırasında yapılan Vulkan API çağrılarını kaydetmek ve tekrar oynatmak için oyun çerçevesine sahip. Bu araçlar sayesinde:

  • Etkin grafik kaynaklarıyla ilgili bilgileri ve bu kaynakların görselleştirmelerini görüntüleme
  • Oyununuz tarafından yapılan API çağrılarının sırasını görme 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.

Şu kaynaktan kareleri yakalamak için açık kaynak RenderDoc aracını kullanın: oyunlarında çalışır. RenderDoc, hem Vulkan hem de OpenGL ES.

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. Bağımsız GPU tedarikçileri, işletmelerin Oyununuzun profilini çıkarın ve GPU'larına özgü performans verileri sağlayın inceleyebilirsiniz. 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ı kullanabilirsiniz. Ancak Android GPU Denetleyicisi eski Android cihazları desteklemez ve yeni cihazların tümüyle uyumlu olmayabilir cihazlar.

CTS-D ile Vulkan testlerini iyileştirin

Android destekli cihaz üreticileri, Uyumluluk Test Paketi'ni (CTS) kullanarak ve cihazlarınızın uyumlu olduğundan emin olun. Geliştirici Destekli CTS (CTS-D) emin olmak için uygulama geliştiricileri tarafından gönderilen testlerde Android cihazlar, kullanım alanlarını karşılar ve uygulamalarını çalıştırabilir sorunsuz bir şekilde yürütmeniz gerekir.

Vulkan uygulamanızda yeni bir hata tetiklemeyi başarabilirseniz ve Vulkan yeni bir test teklifi gönderebilirsiniz. Bu teklifle, ve bunu kontrol etmenin yolları. Bu, sorunun güncelleme olmasını sağlar ve aynı hatanın tekrar yaşanmamasını tüm diğer cihazlara yönlendirebilirsiniz.

CTS gönderim sürecine göz atın nasıl göndereceğinizle ilgili adım adım talimatlar için test teklifi.