Vulkan
Thiết kế bởi | AMD, DICE (thiết kế Mantle gốc) |
---|---|
Phát triển bởi | Khronos Group (đóng góp và phát triển các biến thể Vulkan) |
Phát hành lần đầu | 16 tháng 2 năm 2016[1] |
Kho mã nguồn | |
Viết bằng | C[2] |
Hệ điều hành | Android, Linux, Haiku, Fuchsia, BSD Unix,[3] QNX,[4] Windows, Nintendo Switch,[5][6][7] Stadia, Tizen,[8][9] macOS,[10] iOS,[10] iPadOS,[10] tvOS,[10] Raspberry Pi,[11] vxWorks[12] |
Thể loại | API đồ hoạ 3D và tính toán[13] |
Giấy phép | Giấy phép Apache 2.0[14] |
Website | vulkan |
Vulkan là một API đa nền tảng, phí tổn thấp, tiêu chuẩn mở cho đồ hoạ 3D và tính toán.[15][16][17] Ban đầu Vulkan được AMD phát triển với tên gọi Mantle, nhưng sau đó được giao cho Khronos Group. Vulkan được tạo ra để giải quyết những thiếu sót của OpenGL và cho phép các nhà phát triển kiểm soát GPU nhiều hơn.
Tổng quan
[sửa | sửa mã nguồn]Vulkan nhắm đến các ứng dụng đồ hoạ 3D thời gian thực yêu cầu hiệu suất cao, như trò chơi video và phương tiện tương tác, cũng như tính toán song song mức độ cao. Vulkan được thiết kế để cung cấp hiệu suất cao hơn và sử dụng CPU và GPU hiệu quả hơn so với các API OpenGL và Direct3D 11 cũ. Điều này được thực hiện bằng cách cung cấp một API bậc thấp hơn nhiều cho ứng dụng, giống hơn với cách làm việc của các GPU hiện đại.
Vulkan tương tự như API Metal của Apple và Direct3D 12 của Microsoft, và khó sử dụng hơn so với các API OpenGL và Direct3D 11 bậc cao hơn. Ngoài việc sử dụng CPU ít hơn, thiết kế của Vulkan cho phép các nhà phát triển phân phối công việc tốt hơn trên nhiều nhân CPU.[18]
Vulkan được công bố lần đầu bởi tổ chức phi lợi nhuận Khronos Group tại GDC 2015.[13][19][20] Ban đầu, API Vulkan được gọi là "sáng kiến OpenGL thế hệ tiếp theo" hoặc "OpenGL next"[21] bởi Khronos, nhưng việc sử dụng những tên này đã bị ngừng khi "Vulkan" được công bố.[22]
Vulkan được phát triển và xây dựng dựa trên các thành phần của API Mantle của AMD, mà AMD đã đóng góp cho Khronos với ý định cung cấp cho Khronos một nền tảng để bắt đầu phát triển một API bậc thấp mà họ có thể tiêu chuẩn hóa trên cả ngành công nghiệp.[13]
Tính năng
[sửa | sửa mã nguồn]Vulkan được thiết kế để cung cấp nhiều lợi ích so với các API khác cũng như người tiền nhiệm của nó, OpenGL. Vulkan có phí tổn thấp hơn, cung cấp sự kiểm soát trực tiếp hơn đối với GPU và sử dụng CPU ít hơn.[20] Tổng quan về khái niệm và tập tính năng của Vulkan tương tự với những khái niệm được thấy trong Mantle và sau đó được Microsoft áp dụng với Direct3D 12 cũng như Apple với Metal.
API thống nhất
[sửa | sửa mã nguồn]Vulkan cung cấp một API duy nhất cho các thiết bị đồ hoạ để bàn và di động, trong khi trước đây từng có sự phân chia giữa OpenGL và OpenGL ES.
Đa nền tảng
[sửa | sửa mã nguồn]Vulkan khả dụng trên nhiều hệ điều hành hiện đại. Tương tự như OpenGL và khác với Direct3D 12, Vulkan không bị ràng buộc bởi một hệ điều hành cụ thể hoặc một số thiết bị cụ thể. Vulkan chạy trên Android, Linux, BSD Unix, QNX, Haiku,[23] Nintendo Switch, Raspberry Pi, Stadia, Fuchsia, Tizen, and Windows 7, 8, 10, and 11. MoltenVK cung cấp hỗ trợ từ bên thứ ba với giấy phép tự do[24][25][26] cho macOS, iOS và tvOS thông qua API Metal của Apple.[27]
Sử dụng CPU ít hơn
[sửa | sửa mã nguồn]Vulkan giảm tải cho CPU thông qua việc sử dụng batching và các tối ưu hóa cấp thấp khác, do đó giảm tải công việc cho CPU và giúp CPU có thể thực hiện nhiều tính toán hoặc hiển thị hơn.[28][29]
Thiết kế thân thiện với việc đa luồng
[sửa | sửa mã nguồn]Direct3D 11 và OpenGL 4 ban đầu được thiết kế để sử dụng với CPU đơn nhân và sau đó mới được bổ sung để thực thi trên nhiều nhân. Ngay cả khi các nhà phát triển ứng dụng sử dụng các tính năng bổ sung, các API này thường không có khả năng mở rộng tốt trên nhiều nhân. Vulkan cung cấp tính khả thi tốt hơn trên CPU đa nhân nhờ kiến trúc đa luồng hiện đại.[30][31]
Shader được biên dịch trước
[sửa | sửa mã nguồn]OpenGL sử dụng ngôn ngữ bậc cao GLSL để viết shader, điều này đòi hỏi mỗi driver OpenGL phải triển khai một trình biên dịch riêng cho GLSL. Sau đó, trình biên dịch này thực tại thời điểm ứng dụng chạy để chuyển đổi mã nguồn shader của chương trình thành mã máy của GPU. Ngược lại, driver Vulkan được thiết kế để nhận các shader đã được chuyển đổi thành định dạng nhị phân trung gian gọi là SPIR-V, tương tự với định dạng nhị phân mà các shader HLSL được biên dịch thành trong Direct3D. Bằng việc cho phép tiền biên dịch shader, tốc độ khởi tạo ứng dụng được cải thiện và một loạt các shader khác nhau có thể được sử dụng trong mỗi cảnh. Một driver Vulkan chỉ cần thực hiện tối ưu hóa và tạo mã cụ thể cho GPU, dẫn đến việc bảo trì driver dễ dàng hơn và có thể tạo ra các gói driver nhỏ hơn.[32] Các nhà phát triển ứng dụng có thể che giấu mã shader độc quyền dễ dàng hơn bây giờ, do các shader không được lưu trữ trực tiếp dưới dạng mã nguồn, tuy nhiên, các công cụ được cung cấp để giải mã SPIR-V thành mã nguồn bậc cao có thể đọc được bởi con người.[17][31]
Những điều khác
[sửa | sửa mã nguồn]- Vulkan cung cấp sự quản lý thống nhất cho các kernel tính toán và shader đồ họa, loại bỏ sự cần thiết của việc sử dụng một API tính toán riêng biệt kết hợp với một API đồ họa.
- Ray tracing được cung cấp thông qua một tập hợp các phần mở rộng được hỗ trợ bởi nhiều nhà sản xuất, cùng tổng hợp tạo ra một chức năng tương tự như các API Raytracing OptiX và DirectX Raytracing.[33] Không có chức năng tương tự được tiết lộ trong OpenGL.
OpenGL so với Vulkan
[sửa | sửa mã nguồn]OpenGL | Vulkan[34] |
---|---|
Một máy có trạng thái toàn cục duy nhất | Dựa trên đối tượng, không có trạng thái toàn cục |
Trạng thái bị ràng buộc với một ngữ cảnh duy nhất | Tất cả khái niệm về trạng thái được giới hạn trong bộ đệm lệnh |
Các thao tác chỉ có thể được thực hiện tuần tự | Cho phép lập trình đa luồng |
Bộ nhớ GPU và sự đồng bộ thường được ẩn | Cung cấp sự kiểm soát sâu về quản lý bộ nhớ GPU và sự đồng bộ |
Kiểm tra lỗi mở rộng | Driver Vulkan không kiểm tra lỗi tại thời gian chạy; có một lớp kiểm tra lỗi dành cho nhà phát triển |
NVIDIA đề cập rằng "OpenGL vẫn là một lựa chọn tốt cho nhiều trường hợp, vì nó có độ phức tạp và gánh nặng bảo trì thấp hơn nhiều so với Vulkan, trong khi nhiều trường hợp vẫn cung cấp hiệu suất tổng thể tốt."[35][36]
AMD nói rằng "Vulkan hỗ trợ kiểm soát gần với phần cứng (close-to-metal), cho phép hiệu suất nhanh hơn và chất lượng hình ảnh tốt hơn trên Windows 7, Windows 8.1, Windows 10 và Linux. Không có API đồ họa nào khác cung cấp sự kết hợp mạnh mẽ giữa tính tương thích hệ điều hành, tính năng kết xuất và hiệu suất phần cứng như vậy."[37]
Phiên bản
[sửa | sửa mã nguồn]Vulkan 1.1
[sửa | sửa mã nguồn]Tại SIGGRAPH 2016, Khronos công bố rằng Vulkan sẽ được hỗ trợ tính năng đa GPU tự động, tương tự như những gì được cung cấp bởi Direct3D 12.[38] Hỗ trợ đa GPU trong API loại bỏ nhu cầu sử dụng SLI hoặc Crossfire, mà yêu cầu các card đồ họa phải cùng một mẫu mã. Thay vào đó, đa GPU trong API cho phép API chia công việc một cách thông minh giữa hai hoặc nhiều GPU hoàn toàn khác nhau.[39] Ví dụ, các GPU tích hợp trong CPU có thể được sử dụng cùng với một GPU chuyên dụng cao cấp để tăng nhẹ hiệu suất.
Vào ngày 7 tháng 3 năm 2018, Khronos Group đã phát hành Vulkan 1.1.[40] Bản cập nhật lớn đầu tiên cho API này đã tiêu chuẩn hóa một số phần mở rộng, chẳng hạn như multi-view, device groups, chia sẻ giữa quá trình và giữa các API khác nhau, tính năng tính toán nâng cao, hỗ trợ HLSL và hỗ trợ YCbCr.[41] Đồng thời, nó cũng mang lại khả năng tương thích tốt hơn với DirectX 12, hỗ trợ đa GPU rõ ràng, hỗ trợ ray tracing,[42][43] và đặt nền tảng cho thế hệ GPU tiếp theo.[44] Cùng với Vulkan 1.1, SPIR-V đã được cập nhật lên phiên bản 1.3.[41]
Vulkan 1.2
[sửa | sửa mã nguồn]Vào ngày 15 tháng 1 năm 2020, Khronos Group đã phát hành Vulkan 1.2.[45][46] Đây là bản cập nhật chính thứ hai cho API này, tích hợp thêm 23 phần mở rộng Vulkan thường được sử dụng vào tiêu chuẩn cơ bản của Vulkan. Một số tính năng quan trọng bao gồm "timeline semaphores để quản lý đồng bộ hóa một cách dễ dàng", "một mô hình bộ nhớ chính thức để định rõ ngữ nghĩa của sự đồng bồ và các thao tác bộ nhớ trong các luồng khác nhau", và "mô hình chỉ mục để cho phép sử dụng lại bố cục chỉ mục bởi nhiều shader khác nhau". Các tính năng bổ sung của Vulkan 1.2 cải thiện tính linh hoạt khi triển khai các API đồ họa khác trên nền Vulkan, bao gồm "bố cục chuẩn của bộ đệm đồng nhất", "bố cục khối cố định" và "sử dụng stencil riêng biệt".[47]
Vulkan 1.3
[sửa | sửa mã nguồn]Vào ngày 25 tháng 1 năm 2022, Khronos Group đã phát hành Vulkan 1.3.[48] Đây là bản cập nhật lớn thứ ba cho API này, tích hợp thêm 23 phần mở rộng Vulkan thường được sử dụng vào tiêu chuẩn cơ bản của Vulkan.[49] Vulkan 1.3 tập trung vào việc giảm thiểu sự phân mảnh bằng cách làm cho các tính năng mới là bắt buộc để một thiết bị được coi là có hỗ trợ Vulkan 1.3.[48][50] Các tính năng mới trong Vulkan 1.3 bao gồm kỹ thuật vẽ động, trạng thái động bổ sung, API đồng bộ hóa cải thiện và hồ sơ thiết bị.
Tính năng dự kiến
[sửa | sửa mã nguồn]Khi phát hành OpenCL 2.2, Khronos Group đã thông báo rằng OpenCL sẽ kết hợp trong mức có thể với Vulkan để cho phép tính linh hoạt của việc triển khai phần mềm OpenCL qua cả hai API.[51][52] Điều này đã được thể hiện bởi Adobe's Premiere Rush bằng cách sử dụng trình biên dịch mã nguồn mở clspv[53] để biên dịch một lượng lớn mã nguồn kernel OpenCL C để chạy trên một phiên bản Vulkan để triển khai trên Android.[54]
Lịch sử
[sửa | sửa mã nguồn]Khronos Group đã bắt đầu dự án để tạo một API đồ họa thế hệ tiếp theo vào tháng 7 năm 2014 với cuộc họp tại Valve.[55] Tại SIGGRAPH 2014, Tại SIGGRAPH 2014, dự án được công bố công khai với lời kêu gọi tham gia cho các bên tham dự.[13]
Theo Cục Sở hữu Trí tuệ và Nhãn hiệu Hoa Kỳ, việc đăng ký thương hiệu cho Vulkan đã được thực hiện vào ngày 19 tháng 2 năm 2015.[56]
Vulkan được đặt tên và công bố chính thức tại Game Developers Conference 2015, mặc dù đã có những đồn đoán và tin đồn xoay quanh một API mới tồn tại trước đó và được gọi là "glNext".[57]
2015
[sửa | sửa mã nguồn]Vào đầu năm 2015, LunarG (được tài trợ bởi Valve) đã phát triển và trình diễn một driver Linux cho Intel, cho phép sự tương thích với Vulkan trên các card đồ họa tích hợp dòng HD 4000, mặc dù driver Mesa nguồn mở không hoàn toàn tương thích với OpenGL 4.0 cho đến cuối năm đó.[58][59] Vẫn còn khả năng hỗ trợ cho Sandy Bridge,[60] vì nó hỗ trợ tính toán thông qua Direct3D11.
Vào ngày 10 tháng 8 năm 2015, Google đã công bố rằng các phiên bản tương lai của Android sẽ hỗ trợ Vulkan.[61] Android 7.x "Nougat" đã hỗ trợ Vulkan vào ngày 22 tháng 8 năm 2016. Android 8.0 "Oreo" có sự hỗ trợ đầy đủ.
ào ngày 18 tháng 12 năm 2015, Khronos Group đã thông báo rằng phiên bản 1.0 của quy tắc Vulkan đã gần hoàn thiện và sẽ được phát hành khi các driver tuân thủ theo khả dụng.[20]
2016
[sửa | sửa mã nguồn]Toàn bộ bộ quy tắc Vulkan và SDK Vulkan nguồn mở đã được phát hành vào ngày 16 tháng 2 năm 2016.[1]
2018
[sửa | sửa mã nguồn]Vào ngày 26 tháng 2 năm 2018, Khronos Group công rằng API Vulkan đã khả dụng trên macOS và iOS thông qua thư viện MoltenVK, cho phép Vulkan chạy trên nền tảng Metal.[62] Các sự phát triển mới khác đã được trình diễn tại SIGGRAPH 2018.[63] Trước đây, MoltenVK là một giải pháp độc quyền và được cấp giấy phép thương mại, nhưng Valve đã thỏa thuận với nhà phát triển Brenwill Workshop Ltd để mở mã nguồn MoltenVK dưới giấy phép Apache 2.0 và như một kết quả, thư viện này hiện đã có sẵn trên GitHub.Valve cũng thông báo rằng tính đến ngày 26 tháng 2 năm 2018, trò chơi Dota 2 có thể chạy trên macOS bằng cách sử dụng API Vulkan, dựa trên MoltenVK.[64]
2019
[sửa | sửa mã nguồn]Vào ngày 25 tháng 2 năm 2019, nhóm làm việc Vulkan Safety Critical (SC) đã được công bố để đưa gia tốc GPU của Vulkan vào các ngành công nghiệp chú trọng an toàn.[65]
Dịch vụ chơi game trực tuyến trên đám mây Stadia của Google sử dụng Vulkan trên các máy chủ Linux với GPU của AMD.[66]
2020
[sửa | sửa mã nguồn]Vào ngày 15 tháng 1 năm 2020, Vulkan 1.2 đã được phát hành.
Cùng với việc phát hành Vulkan 1.2, Khronos Group đã đăng một bài viết trên blog xem xét rằng hỗ trợ HLSL trong Vulkan đã đạt tình trạng "sẵn sàng cho môi trường production" do sự cải tiến trong trình biên dịch DXC của Microsoft và trình biên dịch glslang của Khronos, và các tính năng mới trong Vulkan 1.2 cải thiện hỗ trợ HLSL.[67]
Vào ngày 3 tháng 2 năm 2020, Raspberry Pi Foundation đã thông báo rằng họ đang làm việc trên một driver Vulkan mã nguồn mở cho Raspberry Pi, một máy tính bo mạch đơn phổ biến.[68] Vào ngày 20 tháng 6 năm 2020, một kỹ sư đồ họa tiết lộ rằng anh đã tạo ra driver sau hai năm làm việc, có khả năng chạy VkQuake3 với hơn 100 FPS trên máy tính nhỏ này.[69]
Vào ngày 17 tháng 3 năm 2020, Khronos Group phát hành các phần mở rộng Ray Tracing, dựa trên phần mở rộng độc quyền của Nvidia, với một số phần mở rộng quan trọng và nhiều thay đổi nhỏ, dựa trên API OptiX của Nvidia.[70][71] Vào ngày 23 tháng 11 năm 2020, các phần mở rộng Ray Tracing này đã được hoàn thiện.[72]
Vào ngày 24 tháng 11 năm 2020, Raspberry Pi Foundation thông báo rằng driver cho Raspberry Pi 4 đã đạt chuẩn Vulkan 1.0.[73]
2022
[sửa | sửa mã nguồn]Ngày 25 tháng 1 năm 2022, Vulkan 1.3 đã được phát hành.
Ngày 1 tháng 3 năm 2022, Vulkan SC 1.0 đã được phát hành, mang đến khả năng đồ họa và tính toán của Vulkan cho ngành công nghiệp chú trọng an toàn, dựa trên tiêu chuẩn Vulkan 1.2.[74]
Ngày 1 tháng 8 năm 2022, Raspberry Pi Foundation thông báo rằng driver cho Raspberry Pi 4 đã đạt chuẩn Vulkan 1.2.[75]
Ngày 1 tháng 9 năm 2022, Mesh Shading cho Vulkan đã được phát hành.[76][77]
Hỗ trợ giữa các nhà cung cấp
[sửa | sửa mã nguồn]Các quy tắc ban đầu đã nêu rõ rằng driver Vulkan có thể được triển khai trên bất kỳ phần cứng nào hỗ trợ OpenGL ES 3.1 hoặc OpenGL 4.x trở lên.[78] Tuy nhiên, việc hỗ trợ Vulkan đòi hỏi các driver đồ họa mới, vì vậy điều này không nhất thiết ngụ ý rằng tất cả các thiết bị hiện có hỗ trợ OpenGL ES 3.1 hoặc OpenGL 4.x sẽ có driver Vulkan khả dụng.
Intel
[sửa | sửa mã nguồn]Vào tháng 3 năm 2023, Intel đã chia tách sự hỗ trợ Vulkan trên Windows[79] và Linux.[80] Tất cả driver được phát triển bởi Intel.
Trên Windows, Skylake đến Ice Lake hỗ trợ đến Vulkan 1.3,[81] với sự hỗ trợ giới hạn sau tháng 7 năm 2022 vì các bản cập nhật tương lai sẽ chỉ bao gồm việc sửa lỗi bảo mật.[79] Card đồ họa Iris và mới hơn đều được hỗ trợ hoàn toàn tính đến tháng 3 năm 2023.[82]
Trên Linux, tính đến tháng 3 năm 2023, có sự hỗ trợ Vulkan chưa hoàn chỉnh cho Haswell[83] vì nó không đạt chuẩn Vulkan 1.0.[84] Ngoại trừ Haswell, Ivy Bridge và Broadwell cũng được hỗ trợ bởi một driver Vulkan cũ trong Mesa được gọi là HASVK.[80] Skylake và mới hơn được hỗ trợ bởi một driver trong Mesa có tên ANV.[80]
AMD
[sửa | sửa mã nguồn]Trên Windows, Vulkan 1.2 được hỗ trợ từ GCN 1.0 đến GCN 3.0,[85][86][87] và không có bản cập nhật nào được dự định từ tháng 6 năm 2021.[88] GCN 4.0 và mới hơn hỗ trợ Vulkan 1.3.[89]
Trên Linux, có nhiều driver Vulkan khác nhau hỗ trợ phần cứng khác nhau và trùng nhau. Có một driver Vulkan nguồn mở tên là AMDVLK, phát triển bởi AMD với sự hỗ trợ nhỏ cho Windows.[90] Cũng có một driver độc quyền tên là AMDGPU-PRO, không được khuyến nghị sử dụng cho hầu hết người dùng tính đến tháng 3 năm 2023.[91]
Ngoài ra còn có driver được khuyến nghị gọi là RADV trong Mesa, được phát triển bởi Valve, Red Hat,[92] Google[93] và những nhà phát triển khác. Driver này tính đến tháng 3 năm 2023 hỗ trợ tất cả các card GCN và RDNA.[94] Hỗ trợ của driver RADV cho GCN 1.0 và GCN 2.0 yêu cầu phải bật chế độ hỗ trợ thử nghiệm trong mô-đun nhân amdgpu.[95]
NVIDIA
[sửa | sửa mã nguồn]Trên Windows và Linux, có driver Vulkan được phát triển bởi NVIDIA, hỗ trợ Vulkan 1.2 trên các card Kepler[96] và không kế hoạch cập nhật nào sau tháng 9 năm 2021.[97] Các card Maxwell và mới hơn hỗ trợ Vulkan 1.3.[98]
Tính đến tháng 3 năm 2023, trên Linux có driver Vulkan nguồn mở thử nghiệm và chưa hoàn chỉnh được lên kế hoạch cho Mesa, gọi là NVK, với dự định hỗ trợ các card Turing và mới hơn.[99]
GPU cho Android và thiết bị di động
[sửa | sửa mã nguồn]Hầu hết các thiết bị Android hiện đại hỗ trợ Vulkan. Android 7.0 Nougat bao gồm hỗ trợ tùy chọn cho Vulkan 1.0,[100] Android 9.0 Pie bao gồm hỗ trợ tùy chọn cho Vulkan 1.1, và Android 10 yêu cầu tất cả các thiết bị 64-bit hỗ trợ Vulkan 1.1.[101][102] Trên Linux và một số thiết bị ChromeOS, driver nguồn mở Mesa cung cấp sự hỗ trợ cho phần cứng Arm Mali (Midgard và Bifrost), Qualcomm Adreno, và Broadcom VideoCore VI.[103]
Apple
[sửa | sửa mã nguồn]Tính đến tháng 6 năm 2022, các thiết bị của Apple vẫn không hỗ trợ API Vulkan.[104] Hỗ trợ Vulkan khả dụng thông qua thư viện mã nguồn mở MoltenVK, cung cấp một bản triển khai Vulkan trên cơ sở API đồ họa Metal được cung cấp trên các thiết bị iOS và macOS, tuy nhiên, thư viện này có một số hạn chế đối với một số tính năng API nâng cao.[27]
Vào tháng 6 năm 2022, phiên bản 1.3.217 của Vulkan đã thêm hỗ trợ cho các đối tượng Metal, giúp thuận tiện trong việc nhập và xuất giữa hai API này.[105] Vào tháng 12 năm 2022, phiên bản Vulkan 1.3.236 đã sửa một số lỗi nhỏ liên quan đến tương tác với Apple Metal.[106]
Tương thích ngược
[sửa | sửa mã nguồn]Vulkan không tương thích ngược với OpenGL,[17][107][note 1] mặc dù có một số dự án triển khai OpenGL trên cơ sở Vulkan, chẳng hạn như ANGLE của Google và Zink của Mesa.[108]
Vulkan cũng không tương thích với các API đồ họa khác như Direct3D, Metal và Mantle, tuy nhiên, có một số bản triển khai của các API này trên cơ sở Vulkan:
- Direct3D có một số bản triển khai, cụ thể là DXVK cho Direct3D 9, 10 và 11, và VKD3D-Proton cho hỗ trợ Direct3D 12. Các phiên bản Direct3D khác, cũ hơn, có thể khả dụng dưới dạng thư viện bên thứ ba, chẳng hạn như D8VK cho Direct3D 8.
- Metal có một bản triển khai bên thứ ba đang trong quá trình phát triển được gọi là Indium, dự kiến được sử dụng với lớp tương thích Darling.
- Mantle có một bản triển khai bên thứ ba đang trong quá trình phát triển được gọi là GRVK, để hỗ trợ các trò chơi Mantle cũ.
Các API đồ họa cụ thể cho từng nền tảng được triển khai trên cơ sở Vulkan có thể chạy trên các nền tảng thay thế. Ví dụ, DXVK cung cấp một thư viện chia sẻ thay thế dự kiến được sử dụng trên Linux một cách tự nhiên (không cần tới lớp tương thích Wine) để hỗ trợ việc chuyển game sang hệ điều hành Linux.
Xem thêm
[sửa | sửa mã nguồn]Ghi chú
[sửa | sửa mã nguồn]- ^ Quá trình thiết lập một pipeline kết xuất đồ hoạ không khác biệt một cách đáng kể so với OpenGL [ES]. Ví dụ, các shader được viết bằng GLSL vẫn có thể được sử dụng lại: mã nguồn có thể được biên dịch/dịch bởi một trình biên dịch độc lập thành định dạng nhị phân trung gian mới gọi là SPIR-V, sau đó có thể được sử dụng bởi Vulkan API.
Tham khảo
[sửa | sửa mã nguồn]- ^ a b “Khronos Releases Vulkan 1.0 Specification”. Khronos.org. Khronos Group Press Release. 16 tháng 2 năm 2016. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021.
- ^ “KhronosGroup/Vulkan-Docs”. GitHub. 10 tháng 10 năm 2021. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021.
- ^ “Vulkan on FreeBSD”. Vulkan GPU info. 28 tháng 10 năm 2021.
- ^ “Vulkan on QNX”. khronos.org. 14 tháng 7 năm 2021. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021.
- ^ “Nintendo Switch Listed as Vulkan and OpenGL Conformant – My Nintendo News”. My Nintendo News. Excite Global Media. 19 tháng 12 năm 2016. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021.
- ^ Palumbo, Alessio (19 tháng 12 năm 2016). “Nintendo Switch Officially Supports Vulkan, OpenGL 4.5 & OpenGL ES”. WCCF Tech. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021.
- ^ “Conformant Products”. khronos.org. The Khronos Group. 28 tháng 4 năm 2018. Lưu trữ bản gốc ngày 28 tháng 1 năm 2017. Truy cập ngày 28 tháng 2 năm 2018.
- ^ Bright, Peter & Walton, Mark (16 tháng 2 năm 2016). “Vulkan now official, with 1.0 API release and AMD driver [Updated]”. Ars Technica. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021. Truy cập ngày 18 tháng 2 năm 2016.
- ^ Valich, Theo (17 tháng 2 năm 2016). “Mantle Cycle is Complete as Khronos Releases Vulkan 1.0”. VR World. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021. Truy cập ngày 19 tháng 2 năm 2016.
- ^ a b c d “GitHub – KhronosGroup/MoltenVK: MoltenVK is an implementation of the high-performance, industry-standard Vulkan graphics and compute API, that runs on Apple's Metal graphics framework, bringing Vulkan to iOS and macOS”. GitHub. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021. Truy cập ngày 12 tháng 9 năm 2019.
- ^ “Vulkan on Raspberry Pi”. raspberrypi.org. 14 tháng 7 năm 2021. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021.
- ^ “VxWorks offers support for many standard graphic libraries, such as ..., and Vulkan” (PDF). WinDriver.
- ^ a b c d “More on Vulkan and SPIR – V: The future of high-performance graphics” (PDF). Khronos Group. tr. 10. Lưu trữ (PDF) bản gốc ngày 11 tháng 8 năm 2016. Truy cập ngày 27 tháng 6 năm 2015.
Thanks AMD!
- ^ “LICENSE file”. 3 tháng 10 năm 2018. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021. Truy cập ngày 30 tháng 10 năm 2020 – qua GitHub.
- ^ “Vulkan”. NVIDIA Developer (bằng tiếng Anh). 2 tháng 12 năm 2015. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021. Truy cập ngày 8 tháng 7 năm 2021.
- ^ “Vulkan®”. GPUOpen (bằng tiếng Anh). Bản gốc lưu trữ ngày 20 tháng 10 năm 2021. Truy cập ngày 8 tháng 7 năm 2021.
- ^ a b c “Developing 3D Graphics with Vulkan on Mobile”. Qualcomm Developer Network (bằng tiếng Anh). Bản gốc lưu trữ ngày 20 tháng 10 năm 2021. Truy cập ngày 8 tháng 7 năm 2021.
- ^ Hruska, Joel. “Next-generation Vulkan API could be Valve's killer advantage in battling Microsoft”. ExtremeTech. Bản gốc lưu trữ ngày 13 tháng 3 năm 2015. Truy cập ngày 26 tháng 6 năm 2015.
- ^ “Vulkan: Graphics and compute Belong Together” (PDF). Khronos Group. tháng 3 năm 2015. Lưu trữ (PDF) bản gốc ngày 18 tháng 12 năm 2016. Truy cập ngày 5 tháng 3 năm 2015.
- ^ a b c “Vulkan – Graphics and compute belong together”. Khronos Group. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021. Truy cập ngày 5 tháng 3 năm 2015.
- ^ Smith, Ryan. “Khronos Announces Next Generation OpenGL Initiative”. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021. Truy cập ngày 24 tháng 9 năm 2016.
- ^ Batchelor, James (3 tháng 3 năm 2015). “glNext revealed as Vulkan graphics API”. Develop.
- ^ “Vulkan lavapipe software rendering is working on Haiku”. Haiku Community (bằng tiếng Anh). 24 tháng 9 năm 2021. Truy cập ngày 21 tháng 9 năm 2022.
- ^ “MoltenVK, popular Vulkan development tool for macOS, goes open-source”. Neowin (bằng tiếng Anh). Bản gốc lưu trữ ngày 20 tháng 10 năm 2021. Truy cập ngày 28 tháng 2 năm 2018.
- ^ “Vulkan graphics will enable faster games and apps on Apple platforms”. VentureBeat (bằng tiếng Anh). 26 tháng 2 năm 2018. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021. Truy cập ngày 28 tháng 2 năm 2018.
- ^ “Vulkan Is Now Available on macOS/iOS By MoltenVK Being Open-Sourced, Vulkan SDK for Mac – Phoronix”. phoronix.com (bằng tiếng Anh). Truy cập ngày 28 tháng 2 năm 2018.
- ^ a b “MoltenVK”. Molten. Lưu trữ bản gốc ngày 5 tháng 1 năm 2018. Truy cập ngày 5 tháng 4 năm 2016.
- ^ “Vulkan: High efficiency on mobile”. Imagination Technologies. 5 tháng 11 năm 2015. Lưu trữ bản gốc ngày 9 tháng 11 năm 2015. Truy cập ngày 23 tháng 1 năm 2016.
- ^ “Khronos Group Announces The Next-Generation 'Vulkan' Graphics And Compute API”. Tom's Hardware. 3 tháng 3 năm 2015. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021.
- ^ “Vulkan: Scaling to multiple threads”. Imagination Technologies. 24 tháng 11 năm 2015. Lưu trữ bản gốc ngày 26 tháng 11 năm 2015. Truy cập ngày 23 tháng 1 năm 2016.
- ^ a b “Adreno Vulkan Developer Guide” (PDF). 31 tháng 8 năm 2017. tr. 9–10, 22. Lưu trữ (PDF) bản gốc ngày 20 tháng 10 năm 2021.
- ^ Kessenich, John. “An Introduction to SPIR-V” (PDF). Khronos Group. Bản gốc (PDF) lưu trữ ngày 9 tháng 3 năm 2015. Truy cập ngày 5 tháng 3 năm 2015.
- ^ “Ray tracing in Vulkan”. Khronos Group. 15 tháng 12 năm 2020. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021.
- ^ “FOSDEM 2016 – Vulkan in Open-Source”. FOSDEM. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021. Truy cập ngày 27 tháng 2 năm 2016.
- ^ “Transitioning from OpenGL to Vulkan”. Nvidia. 11 tháng 2 năm 2016. Lưu trữ bản gốc ngày 20 tháng 10 năm 2021.
- ^ “NVIDIA 545 Linux Driver To Support Vulkan Apps With PRIME On Wayland”. www.phoronix.com (bằng tiếng Anh). Truy cập ngày 14 tháng 7 năm 2023.
- ^ “AMD Vulkan API”. AMD. Lưu trữ bản gốc ngày 20 tháng 10 năm 2021.
- ^ “Vulkan Next will bring better support for VR and multiple GPUs”. PC World. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021.
- ^ Smith, Daniel Williams, Ryan. “Ashes of the Singularity Revisited: A Beta Look at Direct3D 12 & Asynchronous Shading”. AnandTech. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021.
- ^ “Khronos Group Releases Vulkan 1.1”. The Khronos Group (Thông cáo báo chí) (bằng tiếng Anh). 7 tháng 3 năm 2018. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021. Truy cập ngày 21 tháng 3 năm 2018.
- ^ a b Larabel, Michael (7 tháng 3 năm 2018). “Vulkan 1.1 Released As The First Major Update To This Graphics/Compute API”. Phoronix. Truy cập ngày 7 tháng 3 năm 2018.
- ^ Larabel, Michael (19 tháng 9 năm 2018). “Vulkan 1.1.85 Released With Raytracing, Mesh Shaders & Other New NVIDIA Extensions”. Phoronix. Truy cập ngày 19 tháng 9 năm 2018.
- ^ Larabel, Michael (4 tháng 11 năm 2018). “Vulkan 1.1.91 Released With NV_ray_tracing, AMD Memory Overallocation Behavior”. Phoronix. Truy cập ngày 4 tháng 11 năm 2018.
- ^ Bright, Peter (7 tháng 3 năm 2018). “Vulkan 1.1 out today, with multi-GPU support, better DirectX compatibility”. Ars Terchnica. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021. Truy cập ngày 7 tháng 3 năm 2018.
- ^ “Vulkan 1.2 Specifications Released | Geeks3D”. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021.
- ^ “Khronos Group Releases Vulkan 1.2”. The Khronos Group (Thông cáo báo chí) (bằng tiếng Anh). 15 tháng 1 năm 2020. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021. Truy cập ngày 27 tháng 2 năm 2020.
- ^ “Vulkan 1.2 Arrives with an Eye on Greater Performance, Better Compatibility With Other 3D APIs on Top”. Phoronix (Thông cáo báo chí) (bằng tiếng Anh). 15 tháng 1 năm 2020. Truy cập ngày 27 tháng 2 năm 2020.
- ^ a b “Khronos Strengthens Vulkan Ecosystem with Release of Vulkan 1.3, Public Roadmap and Profiles”. 25 tháng 1 năm 2022.
- ^ “Vulkan® 1.3.206 – A Specification (with all registered Vulkan extensions)”. khronos.org.
- ^ “Vulkan 1.3 Specification Released”. 25 tháng 1 năm 2022.
- ^ “Breaking: OpenCL Merging Roadmap into Vulkan | PC Perspective”. pcper.com. Bản gốc lưu trữ ngày 1 tháng 11 năm 2017. Truy cập ngày 17 tháng 5 năm 2017.
- ^ “SIGGRAPH 2018: OpenCL-Next Taking Shape, Vulkan Continues Evolving – Phoronix”. phoronix.com.
- ^ Clspv is a prototype compiler for a subset of OpenCL C to Vulkan compute shaders: google/clspv, 17 tháng 8 năm 2019, Bản gốc lưu trữ ngày 20 tháng 10 năm 2021, truy cập ngày 20 tháng 8 năm 2019
- ^ “Vulkan Update SIGGRAPH 2019” (PDF). Bản gốc (PDF) lưu trữ ngày 20 tháng 8 năm 2019.
- ^ SIGGRAPH 2015: 3D Graphics API State of the Union (Video). SIGGRAPH 2015. Khronos Group. 16 tháng 9 năm 2015. Sự kiện xảy ra vào lúc 57:24. Truy cập ngày 12 tháng 11 năm 2015 – qua YouTube.
- ^ “US Patent and Trademark Office”. Bản gốc lưu trữ ngày 11 tháng 5 năm 2013. Truy cập ngày 7 tháng 3 năm 2015.
- ^ Batchelor, James (3 tháng 3 năm 2015). “glNext revealed as Vulkan graphics API | Latest news from the game development industry | Develop”. MCV. Develop. Truy cập ngày 5 tháng 3 năm 2015.
- ^ Larabel, Michael (5 tháng 3 năm 2015). “Valve Developed An Intel Linux Vulkan GPU Driver”. Phoronix. Truy cập ngày 8 tháng 8 năm 2017.
- ^ Larabel, Michael (12 tháng 3 năm 2015). “Learning More About The Intel Vulkan Driver, Linux Vulkan Plans”. Phoronix. Truy cập ngày 8 tháng 8 năm 2017.
- ^ “Evan Odabashian on Twitter”. Lưu trữ bản gốc ngày 19 tháng 8 năm 2020. Truy cập ngày 22 tháng 7 năm 2015.
- ^ Woods, Shannon (12 tháng 8 năm 2015). “Low-overhead rendering with Vulkan”. Android Developers Blog. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021.
- ^ Bright, Peter (26 tháng 2 năm 2018). “Vulkan is coming to macOS and iOS, but no thanks to Apple”. Ars Technica. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021. Truy cập ngày 26 tháng 2 năm 2018.
- ^ https://www.khronos.org/assets/uploads/developers/library/2018-siggraph/Vulkan-and-OpenGL-BOF-SIGGRAPH_Aug18.pdf [liên kết URL chỉ có mỗi PDF]
- ^ Larabel, Michael (26 tháng 2 năm 2018). “Vulkan Is Now Available on macOS/iOS By MoltenVK Being Open-Sourced, Vulkan SDK for Mac”. Phoronix. Truy cập ngày 26 tháng 2 năm 2018.
- ^ “Khronos Group Begins Work on a New Standards Initiative to Bring Vulkan GPU Acceleration to Safety Critical Industries”. The Khronos Group (bằng tiếng Anh). 25 tháng 2 năm 2019. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021. Truy cập ngày 3 tháng 8 năm 2019.
- ^ “Stadia Is Google's Cloud Gaming Service Using Linux, Vulkan & A Custom AMD GPU”. www.phoronix.com (bằng tiếng Anh). Truy cập ngày 15 tháng 10 năm 2023.
- ^ “HLSL as a First Class Vulkan Shading Language”. The Khronos Group (bằng tiếng Anh). 15 tháng 1 năm 2020. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021. Truy cập ngày 31 tháng 3 năm 2020.
- ^ February 2020, Nathaniel Mott 03 (3 tháng 2 năm 2020). “Raspberry Pi to Get Vulkan Graphics Driver (Eventually)”. Tom's Hardware. Lưu trữ bản gốc ngày 19 tháng 8 năm 2020. Truy cập ngày 20 tháng 6 năm 2020.
- ^ June 2020, Zhiye Liu 20 (20 tháng 6 năm 2020). “Nvidia Engineer's Vulkan Driver For Raspberry Pi Runs Quake III Over 100 FPS at 720p”. Tom's Hardware. Lưu trữ bản gốc ngày 19 tháng 8 năm 2020. Truy cập ngày 20 tháng 6 năm 2020.
- ^ “Khronos Group Releases Vulkan Ray Tracing”. The Khronos Group. 17 tháng 3 năm 2020. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021.
- ^ “Vulkan Ray-Tracing Arrives With New Khronos Extension – Phoronix”. phoronix.com. Truy cập ngày 17 tháng 3 năm 2020.
- ^ “Vulkan Ray Tracing Final Specification Release”. The Khronos Group. 23 tháng 11 năm 2020. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021.
- ^ “Vulkan update: we're conformant!”. Raspberry Pi Foundation. 24 tháng 11 năm 2020.
- ^ “Vulkan SC – Vulkan graphics for the safety critical industry”. The Khronos Group (bằng tiếng Anh). 22 tháng 2 năm 2019. Truy cập ngày 30 tháng 3 năm 2022.
- ^ “Vulkan update: version 1.2 conformance for Raspberry Pi 4”. Raspberry Pi Foundation. 1 tháng 8 năm 2022.
- ^ “Mesh Shading for Vulkan”. tháng 9 năm 2022.
- ^ “VK_EXT_mesh_shader”.
- ^ “Vulkan Overview” (PDF). Khronos Group. tháng 6 năm 2015. Lưu trữ (PDF) bản gốc ngày 8 tháng 12 năm 2015. Truy cập ngày 18 tháng 8 năm 2015. p. 19 "Vulkan Status"
- ^ a b “Graphics Driver Support Update for 10th Generation and Older Intel Processor Graphics”. community.intel.com (bằng tiếng Anh). 27 tháng 7 năm 2022. Truy cập ngày 14 tháng 2 năm 2023.
- ^ a b c “Intel Vulkan Driver Split Happens - "HASVK" Introduced For Older Gen7/Gen8 Graphics”. www.phoronix.com (bằng tiếng Anh). Truy cập ngày 14 tháng 2 năm 2023.
- ^ “Intel® 6th-10th Gen Processor Graphics - Windows”. Intel (bằng tiếng Anh). Truy cập ngày 14 tháng 2 năm 2023.
- ^ “Intel® Arc™ & Iris® Xe Graphics - WHQL - Windows*”. Intel (bằng tiếng Anh). Truy cập ngày 14 tháng 2 năm 2023.
- ^ “Haswell Vulkan support is incomplete (#6008) · Issues · Mesa / mesa · GitLab”. GitLab (bằng tiếng Anh). 9 tháng 2 năm 2022. Truy cập ngày 14 tháng 2 năm 2023.
- ^ “intel: split vulkan driver between gfx7/8 and above (!18208) · Merge requests · Mesa / mesa · GitLab”. GitLab (bằng tiếng Anh). 23 tháng 8 năm 2022. Truy cập ngày 14 tháng 2 năm 2023.
- ^ “AMD Radeon R7 265 Specs”. TechPowerUp (bằng tiếng Anh). Truy cập ngày 14 tháng 2 năm 2023.
- ^ “AMD Radeon HD 7790 Specs”. TechPowerUp (bằng tiếng Anh). Truy cập ngày 14 tháng 2 năm 2023.
- ^ “AMD Radeon R9 285 Specs”. TechPowerUp (bằng tiếng Anh). Truy cập ngày 14 tháng 2 năm 2023.
- ^ “Product and OS Support Update for Radeon Software Adrenalin 21.6.1”. AMD.com (bằng tiếng Anh). 21 tháng 6 năm 2021. Truy cập ngày 14 tháng 2 năm 2023.
- ^ “Radeon™ Software Adrenalin 22.1.2 with Vulkan 1.3 Support Release Notes”. Truy cập ngày 14 tháng 2 năm 2023.
- ^ AMD Open Source Driver for Vulkan®, GPUOpen Drivers, 11 tháng 2 năm 2023, truy cập ngày 14 tháng 2 năm 2023
- ^ “Radeon Software For Linux 22.10 Driver Being Prepared For Release”. Phoronix Forums (bằng tiếng Anh). 31 tháng 3 năm 2022. Truy cập ngày 14 tháng 2 năm 2023.
- ^ “AMD RDNA2 Vulkan: RADV vs. RADV+NGGC vs. AMDVLK vs. PRO Driver Benchmarks”. www.phoronix.com (bằng tiếng Anh). Truy cập ngày 14 tháng 2 năm 2023.
- ^ “Mesa's RADV Radeon Vulkan Ray-Tracing Performance Continues Improving”. www.phoronix.com (bằng tiếng Anh). Truy cập ngày 14 tháng 2 năm 2023.
- ^ “RADV — The Mesa 3D Graphics Library latest documentation”. docs.mesa3d.org. Truy cập ngày 14 tháng 2 năm 2023.
- ^ “AMDGPU - ArchWiki”. wiki.archlinux.org. Truy cập ngày 14 tháng 2 năm 2023.
- ^ “NVIDIA GeForce GTX 770 Specs”. TechPowerUp (bằng tiếng Anh). Truy cập ngày 14 tháng 2 năm 2023.
- ^ “Support Plan for Kepler-series GeForce GPUs for Desktop | NVIDIA”. nvidia.custhelp.com. Truy cập ngày 14 tháng 2 năm 2023.
- ^ “Vulkan Driver Support”. NVIDIA Developer (bằng tiếng Anh). 10 tháng 2 năm 2016. Truy cập ngày 14 tháng 2 năm 2023.
- ^ “Introducing NVK”. Collabora | Open Source Consulting (bằng tiếng Anh). Truy cập ngày 14 tháng 2 năm 2023.
- ^ “Android N's second preview build supports Vulkan and new emoji”. Ars Technica. 13 tháng 4 năm 2016. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021.
- ^ “Support for Vulkan Graphics API 1.1 is coming in Android P”. 8 tháng 4 năm 2018. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021.
- ^ “What's New in Android: Q Beta 3 & More”. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021.
- ^ “Mesamatrix: The OpenGL vs Mesa matrix”. mesamatrix.net. Bản gốc lưu trữ ngày 20 tháng 10 năm 2021.
- ^ “The State of Vulkan on Apple Devices” (PDF). LunarG. tháng 6 năm 2021. Lưu trữ (PDF) bản gốc ngày 9 tháng 7 năm 2021.
- ^ Larabel, Michael (9 tháng 6 năm 2022). “Vulkan 1.3.217 Adds Extension To Interact With Apple Metal Objects”. phoronix.com. Truy cập ngày 22 tháng 10 năm 2022.
- ^ “Release Release for Vulkan SDK 1.3.236 · KhronosGroup/MoltenVK”. GitHub (bằng tiếng Anh). Truy cập ngày 29 tháng 12 năm 2022.
- ^ Tim Anderson (3 tháng 3 năm 2015). “Here comes Vulkan: The next generation of the OpenGL graphics API”. theregister.com (bằng tiếng Anh). Lưu trữ bản gốc ngày 20 tháng 10 năm 2021. Truy cập ngày 8 tháng 7 năm 2021.
- ^ “Zink – The Mesa 3D Graphics Library latest documentation”. docs.mesa3d.org. Truy cập ngày 10 tháng 3 năm 2022.
Đọc tiếp
[sửa | sửa mã nguồn]- Vulkan Programming Guide: The Official Guide to Learning Vulkan (OpenGL), ngày 10 tháng 11 2016, bởi Graham Sellers và John Kessenich ISBN 978-0-1344-64541
- Learning Vulkan, Dec 2016, bởi Parminder Singh ISBN 978-1-78646-980-9
- Introduction to Computer Graphics and the Vulkan API, ngày 1 tháng 7 năm 2017, bởi Kenwright ISBN 978-1-5486-16175
- Vulkan Cookbook, ngày 28 tháng 4 năm 2017, bởi Pawel Lapinski ISBN 978-1-7864-68154