Vulkan (API) - Vulkan (API)

vulkan
Vulkan logosu.svg
Orijinal yazar(lar) AMD , DICE (orijinal Mantle tasarımı)
Geliştirici(ler) Khronos Grubu (bağışlanmış ve türetilmiş varyant, Vulkan olarak)
İlk sürüm 16 Şubat 2016 ; 5 yıl önce ( 2016-02-16 )
kararlı sürüm 1.2.195 (5 Ekim 2021 ; 7 gün önce ) [±] ( 2021-10-05 )
depo
Yazılmış C
İşletim sistemi Android , Linux , Fuşya , BSD Unix , QNX , Windows , Nintendo Switch , Stadia , Tizen , macOS , IOS , Raspberry Pi
Tip 3D grafikler ve hesaplama API'si
Lisans Apache Lisansı 2.0
İnternet sitesi vulkan .org

Vulkan , 3D grafikler ve bilgi işlem için açık standart , düşük maliyetli , platformlar arası bir API'dir . Vulkan, video oyunları ve etkileşimli medya gibi yüksek performanslı gerçek zamanlı 3D grafik uygulamalarını hedefler . Kıyasla OpenGL , Direct3D'ye 11 ve Metal , Vulkan daha yüksek performans ve daha dengeli amaçlanmıştır CPU ve grafik işlemcisi kullanım ve uygulama için önemli ölçüde daha düşük düzeyde bir API ve paralel tasking içerir. Vulkan, daha düşük CPU kullanımına ek olarak, geliştiricilerin işi birden çok CPU çekirdeği arasında daha iyi dağıtmasına olanak sağlamak için tasarlanmıştır .

Vulkan ilk olarak GDC 2015'te kar amacı gütmeyen Khronos Grubu tarafından duyuruldu . Vulkan API'si başlangıçta Khronos tarafından "yeni nesil OpenGL girişimi" veya "Sonraki OpenGL " olarak anıldı , ancak Vulkan duyurulduğunda bu isimlerin kullanımı durduruldu. .

Vulkan türetilmiştir ve bileşenleri üzerine inşa edilmiştir AMD 'nin Manto Khronos onlar sanayi genelinde standardize verebilecek bir alt düzey API geliştirirken başlamak için bir temel vermek niyeti ile Khronos AMD tarafından bağışlanan API.

Vulkan, OpenGL ile geriye dönük uyumlu değildir.

Özellikleri

OpenGL ve Vulkan, her ikisi de oluşturma API'leridir. Her iki durumda da GPU gölgelendiricileri yürütürken CPU diğer her şeyi yürütür.

Vulkan bir diğer aktif ilaç avantajları çeşitli yanı sıra selefi temin etmek üzere tasarlanmıştır OpenGL . Vulkan, daha düşük ek yük, GPU üzerinde daha doğrudan kontrol ve daha düşük CPU kullanımı sunar. Vulkan'ın genel konsepti ve özellikleri, daha sonra Microsoft tarafından Direct3D 12 ve Apple with Metal ile benimsenen Mantle'a benzer.

Vulkan'ın önceki nesil API'lere göre amaçlanan avantajları aşağıdakileri içerir.

Birleşik API

Hem masaüstü hem de mobil grafik cihazları için tek bir API, daha önce bunlar sırasıyla OpenGL ve OpenGL ES arasında bölünmüştü .

Çapraz platform

Direct3D 12'nin aksine birden fazla modern işletim sisteminde kullanılabilirlik; OpenGL gibi, Vulkan API de tek bir işletim sistemine veya cihaz form faktörüne kilitlenmez. Vulkan, piyasaya sürüldüğü andan itibaren Android , Linux , BSD Unix , QNX , Nintendo Switch , Raspberry Pi , Stadia , Fuchsia , Tizen , Windows 7 , Windows 8 ve Windows 10'da çalışır ( MoltenVK , iOS için ücretsiz lisanslı üçüncü taraf desteği sağlar ve Metal tabanlı macOS )

Daha düşük cpu kullanımı

Azaltılmış sürücü yükü, CPU iş yüklerini azaltır.

Toplu işlem kullanımı yoluyla CPU'larda daha az yük, CPU'yu başka türlü olduğundan daha fazla hesaplama veya işleme yapmak için serbest bırakır.

çok iş parçacığı dostu

Çok çekirdekli CPU'larda daha iyi ölçekleme. Direct3D 11 ve OpenGL 4, başlangıçta tek çekirdekli CPU'larla kullanılmak üzere tasarlandı ve yalnızca çok çekirdekli üzerinde yürütülecek güçlendirme aldı. Uygulama geliştiricileri genişletmeleri kullansa bile, API düzenli olarak çok çekirdekli üzerinde iyi ölçeklenmez.

Önceden derlenmiş gölgelendiriciler

OpenGL, gölgelendiriciler yazmak için her OpenGL sürücüsünü GLSL için kendi derleyicisini uygulamaya zorlayan üst düzey dil GLSL'yi kullanır . Bu daha sonra programın gölgelendiricilerini GPU'nun makine koduna çevirmek için uygulama çalışma zamanında yürütülür. Vulkan sürücülerinin aksine , HLSL gölgelendiricilerinin Direct3D'de derlendiği ikili biçime benzer şekilde SPIR-V (Standart Taşınabilir Orta Düzey Temsil) adlı bir ara ikili biçime çevrilmiş gölgelendiricileri alması beklenir . Gölgelendiricinin ön derlemesine izin verilerek, uygulama başlatma hızı iyileştirilir ve sahne başına daha geniş çeşitlilikte gölgelendiriciler kullanılabilir. Bir Vulkan sürücüsünün yalnızca GPU'ya özel optimizasyon ve kod oluşturma yapması gerekir, bu da daha kolay sürücü bakımı ve nihayetinde daha küçük sürücü paketleri sağlar (şu anda GPU satıcıları hala OpenGL/CL'yi dahil etmek zorundadır). Uygulama geliştiricileri artık özel gölgelendirici kodunu gizleyebilir.

Diğerleri

  • Hesaplama çekirdeklerinin ve grafik gölgelendiricilerin birleşik yönetimi, bir grafik API'si ile birlikte ayrı bir işlem API'si kullanma ihtiyacını ortadan kaldırır.
  • VK_KHR_ray_tracing uzantısı aracılığıyla ışın izleme

OpenGL vs Vulkan

OpenGL vulkan
Tek bir küresel durum makinesi Küresel durum olmadan nesne tabanlı
Devlet tek bir bağlama bağlıdır Tüm durum kavramları bir komut arabelleğine yerelleştirilir
İşlemler yalnızca sıralı olarak yürütülebilir Çok iş parçacıklı programlama mümkündür
GPU belleği ve senkronizasyon genellikle gizlidir Bellek yönetimi ve senkronizasyon üzerinde açık kontrol
Kapsamlı hata kontrolü Vulkan sürücüleri çalışma zamanında hata denetimi yapmaz;
geliştiriciler için bir doğrulama katmanı var

NVIDIA, "OpenGL, Vulkan'dan çok daha düşük bir karmaşıklığa ve bakım yüküne sahip olduğu ve çoğu durumda hala mükemmel bir genel performans sağladığı için, birçok kullanım durumu için hala harika bir seçenek" olduğunu belirtiyor.

AMD şunları iddia ediyor: "Vulkan, Windows 7, Windows 8.1, Windows 10 ve Linux'ta daha hızlı performans ve daha iyi görüntü kalitesi sağlayan metale yakın denetimi destekliyor. Başka hiçbir grafik API'si, aynı güçlü OS uyumluluğu, işleme özellikleri, ve donanım verimliliği."

Sürümler

Volkan 1.1

At SIGGRAPH 2016, Khronos Vulkan olması grafik kartları gerektirir SLI veya Crossfire ihtiyacı içinde API dahil Direct3D 12. Çoklu-GPU desteği sunduğu ne benzer otomatik çoklu GPU özellikleri için destek kaldırır alma duyurdu aynı model. API çoklu GPU, bunun yerine API'nin iş yükünü iki veya daha fazla tamamen farklı GPU arasında akıllıca bölmesine olanak tanır. Örneğin, CPU'da bulunan tümleşik GPU'lar, hafif bir performans artışı için üst düzey özel GPU ile birlikte kullanılabilir.

7 Mart 2018'de Vulkan 1.1, Khronos Grubu tarafından piyasaya sürüldü. API'ye yönelik bu ilk büyük güncelleme, çoklu görünüm, cihaz grupları, çapraz süreç ve çapraz API paylaşımı, gelişmiş bilgi işlem işlevselliği, HLSL desteği ve YCbCr desteği gibi çeşitli uzantıları standartlaştırdı. Aynı zamanda DirectX 12 ile daha iyi uyumluluk, açık çoklu GPU desteği, ışın izleme desteği getirdi ve yeni nesil GPU'ların temelini attı. Vulkan 1.1'in yanı sıra SPIR-V, 1.3 sürümüne güncellendi.

Volkan 1.2

15 Ocak 2020'de Vulkan 1.2, Khronos Grubu tarafından piyasaya sürüldü. API'ye yönelik bu ikinci büyük güncelleme, yaygın olarak kullanılan 23 ek, kanıtlanmış Vulkan uzantısını temel Vulkan standardına entegre eder. En önemli özelliklerden bazıları, "kolayca yönetilen senkronizasyon için zaman çizelgesi semaforları", "farklı iş parçacıklarında senkronizasyon ve bellek işlemlerinin anlamını tam olarak tanımlamak için resmi bir bellek modeli" ve "tanımlayıcı düzenlerinin birden fazla gölgelendirici tarafından yeniden kullanılmasını sağlamak için tanımlayıcı indeksleme" . Vulkan 1.2'nin ek özellikleri, "tek tip arabellek standart düzeni", "skaler blok düzeni" ve "ayrı şablon kullanımı" dahil olmak üzere diğer grafik API'lerinin Vulkan'ın üzerine uygulanması söz konusu olduğunda esnekliğini artırır.

Planlanan özellikler

OpenCL 2.2'yi piyasaya sürerken , Khronos Group, OpenCL'nin her iki API üzerinde OpenCL yazılım dağıtım esnekliğini etkinleştirmek için mümkün olduğunda Vulkan ile birleşeceğini duyurdu. Bu, Android'de dağıtım için bir Vulkan çalışma zamanında çalıştırmak üzere önemli miktarda OpenCL C çekirdek kodunu derlemek için clspv açık kaynak derleyicisini kullanan Adobe'nin Premiere Rush'ı tarafından gösterilmiştir.

Tarih

Khronos Grup bir başlama toplantısı ile 2014 Temmuz yeni nesil grafik API oluşturmak için bir projeye başladı Vana . At SIGGRAPH 2014, proje alenen katılımcılar için bir çağrıyla açıklandı.

ABD Patent ve Ticari Marka Ofisi'ne göre, Vulkan'ın ticari markası 19 Şubat 2015'te dosyalandı.

Vulkan, daha önce yeni bir API etrafında odaklanan spekülasyonlar ve söylentiler olmasına ve buna " glNext " olarak atıfta bulunmasına rağmen, 2015 Oyun Geliştiricileri Konferansı'nda resmen seçildi ve duyuruldu .

2015

2015'in başlarında, LunarG ( Valf tarafından finanse edildi ), Intel için, HD 4000 serisi tümleşik grafiklerde Vulkan uyumluluğunu etkinleştiren bir Linux sürücüsü geliştirdi ve sergiledi. Direct3D11 aracılığıyla hesaplamayı desteklediğinden, Sandy Bridge desteği hala mümkündür.

10 Ağustos 2015'te Google , Android'in gelecekteki sürümlerinin Vulkan'ı destekleyeceğini duyurdu . Android 7.x "Nougat" , 22 Ağustos 2016'da Vulkan için desteği başlattı. Android 8.0 "Oreo" tam desteğe sahip.

18 Aralık 2015'te Khronos Group, Vulkan spesifikasyonunun 1.0 versiyonunun neredeyse tamamlandığını ve uygun sürücüler mevcut olduğunda piyasaya sürüleceğini duyurdu.

2016

Spesifikasyon ve açık kaynaklı Vulkan SDK, 16 Şubat 2016'da yayınlandı.

2018

26 Şubat 2018'de Khronos Group, Vulkan API'sinin , Vulkan'ın Metal üzerinde çalışmasını sağlayan MoltenVK kitaplığı aracılığıyla macOS ve iOS'ta herkes tarafından kullanılabilir hale geldiğini duyurdu . Diğer yeni gelişmeler SIGGRAPH 2018'de gösterildi. Daha önce MoltenVK tescilli ve ticari olarak lisanslı bir çözümdü, ancak Valve , geliştirici Brenwill Workshop Ltd ile MoltenVK'yi Apache 2.0 lisansı altında açık kaynaklı hale getirmek için bir anlaşma yaptı ve sonuç olarak kütüphane artık GitHub'da mevcut . Valve ayrıca Dota 2'nin 26 Şubat 2018'den itibaren MoltenVK tabanlı Vulkan API'sini kullanarak macOS üzerinde çalışabileceğini duyurdu.

2019

25 Şubat 2019'da Vulkan Güvenlikle İlgili Kritik (SC) Çalışma Grubu'nun, güvenlik açısından kritik sektörlere Vulkan GPU hızlandırma getireceği duyuruldu.

Google'ın Stadia akışlı bulut oyun hizmeti, AMD GPU'lara sahip Linux tabanlı sunucularda Vulkan'ı kullanır .

2020

15 Ocak 2020'de Vulkan 1.2 yayınlandı.

Vulkan 1.2 sürümünün yanı sıra, Khronos Grubu, Microsoft'un DXC derleyicisindeki ve Khronos'un glslang derleyicisindeki iyileştirmeler ve Vulkan 1.2'de HLSL desteğini artıran yeni özellikler göz önüne alındığında, Vulkan'daki HLSL desteğinin "üretime hazır" durumuna ulaştığını değerlendiren bir blog yazısı yayınladı. .

3 Şubat 2020'de Raspberry Pi Vakfı , popüler bir tek kartlı bilgisayar olan Raspberry Pi için açık kaynaklı bir Vulkan sürücüsü üzerinde çalıştığını duyurdu . 20 Haziran 2020'de bir grafik mühendisi, iki yıllık bir çalışmanın ardından VkQuake3'ü küçük bilgisayarda 100 FPS'nin üzerinde çalıştırabilen bir tane oluşturduğunu açıkladı.

17 Mart 2020'de Khronos Group, daha önce var olan Nvidia uygulamasını bazı küçük değişikliklerle benimseyerek Işın İzleme uzantılarını yayınladı . 23 Kasım 2020'de bu Işın İzleme uzantıları sonlandırıldı.

24 Kasım 2020'de Raspberry Pi Vakfı, Raspberry Pi 4 sürücüsünün Vulkan 1.0 uyumlu olduğunu duyurdu .

Satıcılar arasında destek

vulkaninfoDesteklenen Vulkan örnekleriyle ilgili bilgileri gösteren ekran görüntüsü

İlk spesifikasyonlar, Vulkan'ın şu anda OpenGL ES 3.1 veya OpenGL 4.x ve üstünü destekleyen donanımlar üzerinde çalışacağını belirtti. Vulkan desteği yeni grafik sürücüleri gerektirdiğinden, bu mutlaka OpenGL ES 3.1 veya OpenGL 4.x'i destekleyen her mevcut aygıtta Vulkan sürücülerinin bulunacağı anlamına gelmez.

Intel, Nvidia ve AMD

Üç büyük PC satıcısının tümü, Linux ve Windows sistemleri için sürücüler biçiminde Vulkan API uygulamalarını ücretsiz olarak sağlar. Vulkan 1.1, Intel Skylake ve üstü, AMD GCN 2. ve üstü ve Nvidia Kepler ve üstü gibi daha yeni donanım hatları tarafından desteklenir . AMD, Arm, Imagination Technologies, Intel, Nvidia ve Qualcomm, 2018'in ikinci yarısından bu yana Vulkan 1.1 sürücüleriyle gerçek donanımı destekliyor. Mesa 18.1, RADV ve ANVIL sürücüsü AMD ve Intel donanımı ile destekler. RADV ve ANVIL'in Mesa 3D'sindeki gerçek durum, bkz. Mesamatrix.

Google Android

Birçok Android cihazının donanımı OpenGL ES spesifikasyonunu destekler. Örnekler Android 7.0 Nougat (Vulkan 1.0). Vulkan 1.1 için Android 9.0 Pasta ve Android 10 .

elma

3 Haziran 2021 itibariyle, Apple cihazları tarafından sağlanan Vulkan API için yerel destek yoktur. iOS ve macOS desteği Apple tarafından açıklanmadı. iOS ve macOS cihazlarında Metal grafik API'sinin üstünde Vulkan uygulaması sağlayan açık kaynaklı MoltenVK kitaplığı ile bu soruna geçici bir çözüm bulunmaya çalışılmaktadır . Yine de bazı sınırlamaları var.

Qualcomm

Mobil Qualcomm Snapdragon platformları için Adreno 5xx (2018) ve 6xx serisi (Snapdragon 820 vb.) GPU'lar, Adreno GPU SDK aracılığıyla Vulkan 1.1'i destekler. SDK, Android Studio IDE'ye dayanmaktadır ve tüm özelliklerinden yararlanmak için Android NDK gereklidir.

Ayrıca bakınız

Notlar

Referanslar

daha fazla okuma

Dış bağlantılar