Vulkan là gì và nó khác với OpenGL như thế nào?


150

Khronos Group (cơ quan tiêu chuẩn đứng sau OpenGL) vừa công bố Vulkan :

Vulkan là API tiêu chuẩn mở, thế hệ mới để truy cập hiệu quả cao vào đồ họa và tính toán trên các GPU hiện đại. Thiết kế nền tảng này, trước đây được gọi là Sáng kiến ​​OpenGL thế hệ tiếp theo, cung cấp cho các ứng dụng kiểm soát trực tiếp khả năng tăng tốc GPU để tối đa hóa hiệu suất và dự đoán.

Trang của họ khá thị trường / biệt ngữ , như thông cáo báo chí, Nói một cách đơn giản, Vulkan có ý nghĩa gì với các nhà phát triển trò chơi? (Gabe Newell được trích dẫn là ủng hộ mạnh mẽ, mà không cần giải thích thêm.)

Chính xác thì mối quan hệ của Vulkan với OpenGL là gì? Tên trước đó của nó "glNext" (viết tắt của "Sáng kiến ​​OpenGL thế hệ tiếp theo") làm cho nó có vẻ như là một sự thay thế.


Cập nhật: Thông số Vulkan 1.0 được phát hành vào ngày 16-02-2016.


3
Qo'noS và Vulcan ...
IllidanS4

14
Bản dịch cho những người không bắt được sự trôi dạt của Star Trek : KhronosVulkan nghe như Qo'noSVulcan ; các hành tinh homewworld của các chủng tộc Klingon và Vulcan. Leonard Nimoy , nam diễn viên của Spock (một nhân vật rất nổi tiếng) gần đây đã qua đời vào ngày 2015-2-27, vì vậy rất nhiều suy đoán rằng cái tên này là một cống nạp. Tuy nhiên, đó là trùng hợp ngẫu nhiên: Các Vulkan yêu cầu nhãn hiệu đã được nộp vào 2015/02/19; trước cái chết của Nimoy.
Anko

7
Ngoài ra Thần chú -> Lava -> Núi lửa -> Vulkan.
jmegaffin

1
@Boreal Vulkan == Núi lửa bằng nhiều ngôn ngữ (tiếng Đức, tiếng Nga (được điều chỉnh theo cyr.), V.v.). Vì vậy, đó là Thần chú -> Lava -> Vulkan (Núi lửa) thực sự :)
user362515 11/07/2015

Câu trả lời:


118

Vulkan là một API mới cho đồ họa được tăng tốc phần cứng (và tính toán chung) thông qua các GPU truyền thống. OpenGL sẽ tiếp tục được phát triển, vì đây là API cấp cao hơn Vulkan dự định. Ban đầu được gọi là "glNext", người ta có thể suy luận rằng Vulkan có khả năng sẽ trở thành "OpenGL 5", nhưng cơ quan tiêu chuẩn cuối cùng đã quyết định rằng một tên mới sẽ trùng hợp hơn với việc phá vỡ các mục đích API tương đối sạch sẽ hiện có Mô hình OpenGL.

Những lợi thế thực tế của Vulkan đối với các nhà phát triển trò chơi chủ yếu là về kiểm soát (như, cho phép nhiều hơn, có khả năng cho phép tối ưu hóa tốt hơn với chi phí làm việc đáng kể hơn về phía nhà phát triển). Đặc biệt:

  • API được định hướng xoay quanh việc tạo bộ đệm lệnh không đồng bộ qua nhiều luồng và xử lý tuần tự các bộ đệm đó thành một đường ống lệnh. Điều này phản ánh thực tế của phần cứng hiện đại. Hầu hết các phần mềm cấu hình cao và / hoặc hiệu năng cao được xây dựng trên OpenGL ngày nay đều tự thực hiện loại hành vi này; Có API hỗ trợ điều này có nghĩa là các nhà phát triển không cần phải tự thực hiện và duy trì khung đó hoặc họ có thể làm điều đó với ít nỗ lực hơn.
  • Các tác vụ quản lý luồng và bộ nhớ được dành cho ứng dụng, không phải trình điều khiển, cho phép các nhà phát triển trò chơi kiểm soát nhiều hơn các hành vi đó và do đó có khả năng điều chỉnh chính xác hơn các hành vi đó theo nhu cầu của từng trò chơi.
  • Các lớp xác thực và chẩn đoán có thể được kích hoạt độc lập, về mặt lý thuyết cho phép tích hợp các công cụ tốt hơn với API (thứ mà OpenGL phải chịu) và vô hiệu hóa xác thực quá mức, theo lý thuyết cho phép " đồ họa ở cấp ba " có hiệu suất cao hơn nhiều.
  • Không có sự khác biệt API cứng giữa phiên bản di động và máy tính để bàn, về lý thuyết sẽ giúp dễ dàng chuyển các trò chơi đa nền tảng và nếu không có gì khác làm giảm đau đầu kiểm tra phiên bản mà mọi người ghét.

Cấu trúc bề ngoài rất giống C / OpenGL của Vulkan (giao diện và cảm nhận của các lệnh gọi API, et cetera. Tuy nhiên, nó được đánh máy tốt hơn (trong đó không phải mọi thứ đều trần trụi int, có những kiểu đánh máy có liên quan, v.v.).

Nó ở cấp độ thấp hơn nhiều so với OpenGL. Người ta có thể mong đợi một bước nhảy trong thiết lập vận hành và độ phức tạp giữa OpenGL và Vulkan như đã thấy trong quá trình chuyển đổi D3D9 sang D3D10, điều này đã tiết lộ rất nhiều chi tiết hoạt động của thiết bị GPU cho máy khách API. Việc chuyển đổi thực sự gần giống với D3D11 thành 12, vì D3D12 tự nó là một API rất giống với Vulkan, có khả năng khôn ngoan.


18
Có thể đáng để chỉ ra rằng Vulkan về cơ bản là một phiên bản được lặp đi lặp lại của Mantle: Community.amd.com/community/amd-bloss/amd-gaming/blog/2015/03/ . Các quy ước API có vẻ hơi giống với DSA OpenGL, ngoại trừ gltiền tố phổ biến được thay thế bằng vk: blog.imgtec.com/powervr/ mẹo
jmegaffin 3/03/2015

Tôi đã cho rằng đây là trường hợp, nhưng đã không thấy bất kỳ bằng chứng nào cho đến khi liên kết đó, cảm ơn.
Josh

3
FYI, bạn sẽ có thể thay thế suy đoán và đoán bằng (một số) thực tế khó khăn sau bài thuyết trình của Valve hôm thứ Năm và lệnh cấm các thành viên Khronos tiết lộ thêm chi tiết (hầu hết) được dỡ bỏ.
Sean Middleditch 04/03/2015

4
Tôi thấy thứ shader bytecode hơi gây cười, vì đã từng có một ngôn ngữ giống như lắp ráp đơn giản cho các shader, và sau đó nó được thay thế bằng một ngôn ngữ phức tạp (GLSL), và bây giờ chúng ta sẽ trở lại với ngôn ngữ bytecode đơn giản.
Immibis 4/03/2015

2
Tôi nghĩ Vulkan, giống như Mantle, sẽ đứng cạnh OpenGL để có quyền truy cập cấp thấp hơn, chứ không thay thế hoàn toàn. Ít nhất đó là những gì tôi đã đọc cho đến nay. Hay Vulkan sẽ bao gồm cả hoạt động cấp thấp và cấp cao?
Roy T.

18

Để giải thích về tương lai của OpenGL:

OpenGL có thể đạt được hiệu suất tương đương với Vulkan, trong các cuộc gọi rút thăm mỗi giây, nhưng cũng liên quan đến chi phí chung cho trình điều khiển:

  • Các tiện ích mở rộng OpenGL gần đây nhất thực sự loại bỏ rất nhiều chi phí trình điều khiển bằng cách làm cho mọi thứ không bị ràng buộc (ví dụ ARB_direct_state_access(lõi 4,5) ARB_bindless_texture, ...).
  • Với ánh xạ liên tục ( ARB_buffer_storage, lõi trong 4.4), bộ nhớ đệm có thể được CPU truy cập trực tiếp, do đó việc đồng bộ hóa với GPU cũng rõ ràng, giống như Vulkan.
  • Các tiện ích mở rộng trong tương lai như NV_command_list(xem bản trình bày Siggraph Asia 2014 của Tristan Lorach ) có thể sẽ cung cấp cho OpenGL giống như "mô hình cho ăn GPU" như Vulkan.

11
Đây thực sự không phải là một câu trả lời cho câu hỏi.
MichaelHouse

1

Khronos gần đây đã công bố phát hành API Vulkan hoàn toàn mới, sẽ bổ sung (và trong một số trường hợp thay thế) OpenGL và OpenGL ES. Vulkan là một API có chi phí thấp được thiết kế để mang mã đến gần hơn với kim loại, tăng hiệu suất và hiệu quả. Nó dựa trên API Mantle của AMD và thông số cuối cùng dự kiến ​​vào cuối năm nay.

Trong bài đăng này - Tổng quan ngắn gọn về API Vulkan - Biên tập viên kỹ thuật hàng đầu Nermin Hajdarbegovic giải thích lý do tại sao Vulkan có thể là một vấn đề lớn trong thời gian dài. Có thể mất một lúc, nhưng API đa nền tảng này có thể cải thiện đáng kể hiệu suất 3D trên một số thiết bị nhất định, đặc biệt là bộ xử lý ứng dụng đa lõi được sử dụng trong hàng tỷ điện thoại thông minh và máy tính bảng.


2
"Khronos gần đây đã công bố phát hành API Vulkan hoàn toàn mới" Um, không phải vào ngày 18 tháng 8. Nó đã không được "phát hành" bởi bất kỳ định nghĩa của thuật ngữ đó. Bây giờ là ngày 8 tháng 12 và nó vẫn chưa được phát hành.
Nicol Bolas

2
@NicolBolas - Bây giờ đã có. Nó đã được đưa ra ngày hôm nay: khronos.org/vulkan
beatgammit 16/2/2016
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.