Apa itu Vulkan dan apa bedanya dengan OpenGL?


151

Khronos Group (badan standar di belakang OpenGL) baru saja mengumumkan Vulkan :

Vulkan adalah generasi baru, API standar terbuka untuk akses efisiensi tinggi ke grafik dan menghitung pada GPU modern. Desain dari atas ke bawah ini, yang sebelumnya disebut sebagai Next Generation OpenGL Initiative, memberikan aplikasi kendali langsung atas akselerasi GPU untuk kinerja dan kemampuan prediksi yang maksimal.

Halaman mereka cukup marketese / jargon -heavy, seperti halnya siaran pers ... Secara sederhana, apa arti Vulkan bagi pengembang game? (Gabe Newell dikutip sangat mendukung, tanpa penjelasan lebih lanjut.)

Apa sebenarnya hubungan Vulkan dengan OpenGL? Nama sebelumnya "glNext" (kependekan dari "Next Generation OpenGL Initiative") membuatnya terdengar seperti pengganti.


Pembaruan: Vulkan 1.0 spec dirilis pada 16-02-2016.


3
Qo'noS dan Vulcan ...
IllidanS4

14
Terjemahan untuk orang-orang yang tidak menangkap arus Star Trek : Khronos dan Vulkan terdengar seperti Qo'noS dan Vulcan ; planet-planet homeworld dari ras Klingon dan Vulcan. Leonard Nimoy , aktor Spock (karakter yang sangat populer) baru-baru ini meninggal pada 2015-02-27, jadi spekulasi berlimpah bahwa nama itu merupakan penghargaan. Namun, itu kebetulan: The Vulkan permintaan merek dagang diajukan pada 2015/02/19; sebelum kematian Nimoy.
Anko

7
Juga Mantel -> Lava -> Gunung Berapi -> Vulkan.
jmegaffin

1
@ Borore Vulkan == Gunung berapi dalam banyak bahasa (Jerman, Rusia (disesuaikan dengan cyr.), Dll). Jadi itu Mantle -> Lava -> Vulkan (Volcano) really :)
user362515

Jawaban:


119

Vulkan adalah API baru untuk grafik akselerasi perangkat keras (dan perhitungan umum) melalui GPU tradisional. OpenGL akan terus dikembangkan, karena ini adalah API tingkat lebih tinggi dari yang dimaksudkan Vulkan. Awalnya disebut "glNext," orang dapat menyimpulkan bahwa Vulkan kemungkinan akan berakhir menjadi "OpenGL 5," tetapi badan standar akhirnya memutuskan bahwa nama baru akan lebih baik bertepatan dengan pemecahan yang relatif bersih dari maksud API untuk membuat dari yang sudah ada Paradigma OpenGL.

Keuntungan praktis Vulkan untuk pengembang game terutama tentang kontrol (seperti pada, memungkinkan lebih banyak darinya, berpotensi memungkinkan untuk optimalisasi yang lebih baik dengan biaya lebih banyak pekerjaan di muka pada bagian pengembang). Secara khusus:

  • API berorientasi di sekitar pembuatan buffer perintah yang tidak sinkron di beberapa utas dan pemrosesan yang berurutan dari buffer tersebut ke pipa perintah. Ini mencerminkan realitas perangkat keras modern. Sebagian besar perangkat lunak berprofil tinggi dan / atau berkinerja tinggi yang dibangun pada OpenGL hari ini mengimplementasikan perilaku semacam ini sendiri; memiliki dukungan API ini sendiri berarti bahwa pengembang tidak perlu menerapkan dan memelihara kerangka itu sendiri, atau bahwa mereka dapat melakukannya dengan sedikit usaha.
  • Utas dan tugas manajemen memori diserahkan kepada aplikasi, bukan driver, yang memungkinkan pengembang game lebih mengontrol perilaku tersebut dan dengan demikian berpotensi menyesuaikan perilaku tersebut dengan kebutuhan masing-masing game.
  • Lapisan validasi dan diagnostik dapat diaktifkan secara independen, memungkinkan secara teori untuk integrasi alat yang lebih baik dengan API (sesuatu yang dialami OpenGL sendiri) dan menonaktifkan validasi yang berlebihan, secara teori memungkinkan " grafik pada level tiga " menjadi jauh lebih berkinerja lebih baik.
  • Tidak ada diferensial API yang keras antara versi mobile dan desktop, yang secara teori akan memudahkan porting game lintas platform dan jika tidak ada yang mengurangi sakit kepala pengecekan versi yang dibenci semua orang.

Vulkan sangat mirip C / mirip OpenGL dalam struktur superfisial (tampilan dan nuansa panggilan API, dan lain-lain. Namun demikian, diketik lebih baik (dalam hal itu tidak semuanya telanjang int; ada typedef yang relevan dan sebagainya).

Levelnya jauh lebih rendah dari OpenGL. Seseorang dapat mengharapkan lompatan dalam pengaturan operasional dan kompleksitas antara OpenGL dan Vulkan seperti yang terlihat dalam transisi D3D9 ke D3D10, yang mengekspos lebih banyak detail operasi perangkat GPU di bawah penutup untuk klien API. Transisi ini sebenarnya lebih mirip dengan D3D11 hingga 12, karena D3D12 sendiri merupakan API yang sangat mirip dengan Vulkan, berdasarkan kemampuan.


18
Mungkin bermanfaat untuk menunjukkan bahwa Vulkan pada dasarnya adalah versi Mantle yang sangat iterasi: community.amd.com/community/amd-blogs/amd-gaming/blog/2015/03/... Konvensi API agak mirip dengan DSA OpenGL, kecuali dengan glawalan di mana-mana diganti dengan vk: blog.imgtec.com/powervr/…
jmegaffin

Saya berasumsi ini adalah masalahnya, tetapi belum melihat bukti sampai tautan itu, terima kasih.
Josh

3
FYI, Anda akan dapat mengganti spekulasi dan menebak dengan (beberapa) fakta sulit setelah presentasi Valve pada hari Kamis dan moratorium anggota Khronos mengungkapkan lebih banyak detail yang (sebagian besar) dicabut.
Sean Middleditch

4
Saya menemukan hal bytecode shader sedikit menghibur, mengingat dulu ada bahasa seperti perakitan sederhana untuk shader, dan kemudian digantikan oleh bahasa kompleks (GLSL), dan sekarang kita akan kembali ke bahasa bytecode sederhana.
immibis

2
Saya pikir Vulkan, seperti Mantle, akan berdiri di sebelah OpenGL untuk akses lebih rendah, tidak menggantinya sepenuhnya. Setidaknya itulah yang saya baca sejauh ini. Atau akankah Vulkan mencakup operasi level rendah dan level tinggi?
Roy T.

18

Untuk menguraikan masa depan OpenGL:

OpenGL mungkin mencapai kinerja yang sebanding dengan Vulkan, dalam panggilan undian per detik, tetapi juga mengenai overhead driver umum:

  • Ekstensi OpenGL terbaru benar-benar menghapus banyak overhead driver dengan membuat semuanya tidak mengikat (mis. ARB_direct_state_access(4.5 core) ARB_bindless_texture,, ...).
  • Dengan pemetaan persisten ( ARB_buffer_storage, inti dalam 4.4) memori buffer dapat diakses langsung oleh CPU, sehingga sinkronisasi dengan GPU juga eksplisit, seperti halnya Vulkan.
  • Perpanjangan masa depan seperti NV_command_list(lihat presentasi Siggraph Asia 2014 dari Tristan Lorach ) kemungkinan akan memberikan "paradigma pemberian makan" kepada OpenGL yang sama dengan Vulkan.

11
Ini sebenarnya bukan jawaban atas pertanyaan itu sendiri.
MichaelHouse

1

Khronos baru-baru ini mengumumkan perilisan API Vulkan yang semuanya baru, yang akan melengkapi (dan dalam beberapa kasus menggantikan) OpenGL dan OpenGL ES. Vulkan adalah API overhead rendah yang dirancang untuk membawa kode "lebih dekat ke logam", meningkatkan kinerja dan efisiensi. Ini didasarkan pada AMD's Mantle API, dan spesifikasi akhir diharapkan akhir tahun ini.

Dalam posting ini - Tinjauan Singkat Dari Vulkan API - Editor Teknis Toptal Nermin Hajdarbegovic menjelaskan mengapa Vulkan bisa menjadi masalah besar dalam jangka panjang. Mungkin perlu waktu, tetapi lintas-platform API ini dapat secara drastis meningkatkan kinerja 3D pada perangkat tertentu, terutama prosesor aplikasi multi-core yang digunakan dalam miliaran smartphone dan tablet.


2
"Khronos baru-baru ini mengumumkan perilisan API Vulkan yang semuanya baru" Um, bukan per 18 Agustus belum. Itu belum "dirilis" oleh definisi istilah itu. Sekarang 8 Desember, dan masih belum dirilis.
Nicol Bolas

2
@NicolBolas - Sekarang. Diluncurkan hari ini: khronos.org/vulkan
beatgammit
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.