Khronos Group vừa cho ra mắt Vulkan 1.1, phiên bản cập nhật lớn đầu tiên của các tập lệnh dành cho card đồ họa (API GPU), cross-platform với nhiều nền tảng và trung lập phần cứng GPU.
Bản cập nhật này chuẩn hóa một số các tính năng trước đây chỉ được cung cấp dưới dạng mở rộng, trong đó có cả việc cải thiện khả năng tương thích với nền tảng DirectX 12 của Microsoft trong một số lĩnh vực mà trước đây Vulkan không hỗ trợ. Trước đó, Vulkan cũng vừa mới hỗ trợ Mac và iOS, hứa hẹn nhiều tựa game đồ họa “khủng” có thể sẽ góp mặt trên hai nền tảng này của Apple.
Một trong những tính năng mới trong tiêu chuẩn kỹ thuật 1.1 đó là khả năng hỗ trợ nhiều card đồ họa, cho phép phần mềm có thể chia sẻ gánh nặng xử lý sang cho nhiều GPU. Tuy nhiên, không như SLI hay Crossfire giao việc dựng hình giữa các GPU cho driver thực hiện, thì tính năng này trao quyền “cầm tay chỉ việc” các GPU cho nhà phát triển. Ngoài ra, các nhà phát triển còn có thể tạo các nhóm thiết bị để biến nhiều card đồ họa thành một thiết bị ảo duy nhất, từ đó toàn quyền thiết lập việc sử dụng các GPU khác nhau như thế nào theo chủ đích của họ. Chẳng hạn như tài nguyên từ GPU A có thể được GPU B sử dụng, các tập lệnh khác nhau có thể vận hành trên các GPU khác nhau hay GPU này thậm chí có thể hiển thị các hình ảnh được dựng bởi một GPU khác.
Thế nhưng, tính năng này có một điểm thua kém DirectX 12 là đòi hỏi cấu hình GPU đồng nhất, tức là các GPU này phải phù hợp với nhau, hoặc ít nhất là có “mối quan hệ” gần gũi nhau (cùng dòng chip) và sử dụng chung một driver. DirectX 12 thì khác và đã đi xa hơn một bước, cho phép cấu hình GPU có thể pha trộn giữa các GPU khác nhau từ những nhà sản xuất khác nhau. Thiết lập của Vulkan về nhiều card GPU rời không thông dụng trên thực tế sử dụng, và chỉ thường xuất hiện trong các hệ thống máy tính chơi game đắt tiền. Trong khi đó, cách thiết lập của DirectX 12 có nhiều lợi thế và thông dụng hơn, vì có rất nhiều hệ thống máy tính trên thị trường, nhất là các laptop có một GPU rời và một GPU tích hợp.
Vulkan 1.1 cũng hỗ trợ tốt hơn cho các ứng dụng thực tại ảo. Về mặt công nghệ thì VR đòi hỏi dựng hình hai hình ảnh khác nhau cho mỗi mắt của cùng một cảnh 3D. Hiện nay công nghệ này sử dụng brute force, chuyển các lệnh dựng hình cho mắt trái đến GPU, sau đó lại chuyển tất cả lệnh dựng hình cho mắt phải. Còn với Vulkan 1.1, nhà phát triển có thể tận dụng multiview, trong đó một loạt các lệnh dựng hình sẽ tạo ra nhiều output có đôi chút khác biệt, và chỉ bằng việc gọi một hàm.
Một tính năng cũng đáng chú ý khác của Vulkan 1.1 là cho phép sử dụng các shader program HLSL của Microsoft. Như chúng ta đã biết thì cách bố trí bộ nhớ giữa OpenGL/Vulkan và Direct3D là khác biệt. Phần cứng hỗ trợ cả hai API này đều có thể làm việc với từng cách bố trí bộ nhớ khác nhau của chúng, nhưng các tập lệnh đồ họa trước đây vốn chỉ hoạt động với cái nào được ưu tiên hơn. Với Vulkan 1.1 thì cách bố trí bộ nhớ sử dụng giống như API Direct3D, và các shader program HLSL khi đó cũng sẽ được xử lý như đang sử dụng Direct3D thôi. Điều này giúp các nhà phát triển có thể chuyển mã Direct3D sang Vulkan một cách dễ dàng, không cần phải viết lại các shader program của họ nữa.
Để hỗ trợ tính năng nói trên, SPIR-V cũng được cập nhật lên phiên bản 1.3 và phát hành song song với Vulkan 1.1. SPIR-V cũng được thử nghiệm khá thú vị bởi “tổ hợp tác” gồm các “ông lớn” Adobe, Google và Codeplay để tạo ra Clspv, một trình biên dịch các chương trình OpenCL sang SPIR-V. Nếu bạn không biết thì OpenCL là một đặc tả kỹ thuật, cho phép tính toán song song CPU, GPU và DSP. Và điều này có nghĩa là các chương trình viết cho OpenCL cũng có thể chạy trên bất kỳ GPU nào hỗ trợ Vulkan, bao gồm cả các nền tảng không hỗ trợ OpenCL.
Phiên bản mới của Vulkan còn hỗ trợ các định dạng màu mới, chủ yếu là chuẩn màu YUV/YCbCr được sử dụng rất nhiều bởi các video codec. Chính nhờ tính năng này mà Vulkan 1.1 còn có thêm tính năng mới hỗ trợ sẵn cho các nội dung được bảo vệ. Thông thường, các nội dung truyền thông dù là trên disc hay digital đều yêu cầu nội dung phải được mã hóa và bảo vệ chống sao chép, và để làm được điều này phải nhờ đến sự hỗ trợ từ trình điều khiển (driver) của card màn hình. Tính năng bảo vệ nội dung của Vulkan cho phép các nội dung này có thể sử dụng như thành phần trong một cảnh do GPU dựng hình, nhưng vẫn bảo đảm tuân thủ yêu cầu bảo vệ chống sao chép. Điều này có nghĩa là các hệ thống dùng để sáng tạo nội dung chẳng hạn như máy tính, có thể vừa sử dụng được Vulkan mà vẫn đảm bảo việc hỗ trợ nội dung được bảo vệ này, điều mà với đặc tả kỹ thuật Vulkan trước đây là không thể.
Đặc tả kỹ thuật mới này cũng cải thiện khả năng lập trình của các GPU với hoạt động của nhóm con (subgroup). Nó cho phép dữ liệu được chia sẻ theo nhiều cách khác nhau giữa các luồng tính toán khác nhau bằng GPU và các dạng dữ liệu 16-bit, cũng như hỗ trợ chia sẻ và đồng bộ hóa tiến trình chéo giữa các đối tượng và bộ nhớ GPU.
Ngoài việc chỉ hỗ trợ GPU đồng nhất nói trên là điểm yếu, còn lại thì đặc tả kỹ thuật Vulkan 1.1 thật sự đều là điểm sáng. Suốt nhiều năm qua, các tập lệnh DirectX của Microsoft đã cho OpenGL “hít khói”, cả về yếu tố dễ sử dụng đối với các nhà phát triển lẫn khả năng hỗ trợ tốt hơn cho các GPU hiện đại. OpenGL thì ngày càng tệ hơn dù đã có nỗ lực hiện đại hóa API này, nhưng các vấn đề trong ngành công nghiệp đã khiến nỗ lực đó bị trật đường và loại bỏ. Trong suốt thời gian này, Microsoft lại đứng đằng sau khuyến khích các nhà sản xuất GPU đổi mới ở một số lĩnh vực nhất định để đáp ứng nhu cầu của Windows.
Việc sáng lập Khronos Group, một nhóm gồm nhiều nhà sản xuất đã xây dựng nên đặc tả OpenGL, Vulkan, và các API khác, đã đưa mọi thứ về con đường đúng của nó. Tổ chức này đã cập nhật đều đặn tiêu chuẩn kỹ thuật OpenGL lên 3.x và 4.x, giúp các tập lệnh này giành lại những gì đã mất với DirectX. Tương tự, Vulkan tuy được phát hành sau Direct3D 12, nhưng lại cung cấp mức độ truy xuất cấp thấp vào GPU như API của Microsoft. Có thể nói, Vulkan 1.1 gần như giải quyết được mọi vấn đề mà Direct3D 12 có thể làm được, thậm chí còn vượt trội hơn trong một số lĩnh vực không có trên các hệ thống máy tính để bàn mà chỉ là tiêu chuẩn sử dụng trong các bộ xử lý của smartphone.
Với các tính năng mới trong bảng đặc tả kỹ thuật 1.1, Vulkan giờ gần như “ngang cơ” và không còn phải chơi trò đuổi bắt với đối thủ nữa. Vị trí hiện tại nó đang là dẫn dắt việc thiết kế tính năng cho GPU, thúc đẩy những tính năng có ý nghĩa nhất với các nhà phát triển game, phát triển web và các nền tảng di động.
Theo ARS Technica