Dự án Wine đã phát hành phiên bản mới của gói vkd3d 1.2 với khả năng hỗ trợ Direct3D 12 , hoạt động bằng cách chuyển đổi các lệnh gọi sang API đồ họa Vulkan.
Phiên bản vkd3d 1.2 mới này chứa một số cải tiến, nhưng những cải tiến nổi bật nhất là việc cung cấp thư viện libvkd3d-shader dưới dạng thư viện công cộng , hỗ trợ shader tạo lưới (tessellation shaders), cũng như hỗ trợ xuất dữ liệu dạng luồng (stream output).
Gói phần mềm này bao gồm thư viện libvkd3d với các triển khai Direct3D 12, thư viện libvkd3d-shader với trình dịch shader model 4 và 5, và thư viện libvkd3d-utils với các chức năng để đơn giản hóa việc chuyển đổi các ứng dụng Direct3D 12, cũng như một bộ các bản demo, bao gồm cả việc chuyển đổi glxgears sang Direct3D 12. Mã nguồn dự án được phân phối theo giấy phép LGPLv2.1.
Thư viện libvkd3d hỗ trợ hầu hết các tính năng của Direct3D 12, bao gồm các chức năng đồ họa và tính toán, danh sách lệnh và hàng đợi, mô tả và mô tả vùng nhớ heap, chữ ký gốc, truy cập không theo thứ tự, bộ lấy mẫu, chữ ký lệnh, hằng số gốc, kết xuất gián tiếp, v.v.
Libvkd3d-shader thực hiện việc chuyển đổi mã bytecode 4 và 5 của các mô hình shader thành dạng biểu diễn SPIR-V trung gian. Nó hỗ trợ các shader hình học đơn giản và tính toán, tuần tự hóa chữ ký gốc và giải tuần tự hóa.
Các lệnh shader bao gồm các phép toán số học, phép toán nguyên tử và phép toán từng bit, các toán tử điều khiển luồng dữ liệu và so sánh, các lệnh lấy mẫu, thu thập và tải dữ liệu, cũng như các thao tác truy cập không theo thứ tự (UAV, Unordered Access View).
Ở giai đoạn phát triển này, không phải tất cả các lệnh gọi Direct3D 12 đều được triển khai và việc thử nghiệm chủ yếu được thực hiện trên một tập hợp các ứng dụng demo. Phiên bản này không bao gồm các tính năng đang được phát triển như hỗ trợ cho tessellation và các shader hình học phức tạp, cũng như một số cải tiến liên quan đến shader và các phương thức cốt lõi của Direct3D 12. Các tính năng này sẽ được cung cấp trong bản phát hành tiếp theo.
Các tính năng mới chính của Vkd3d 1.2
Một trong những thay đổi quan trọng nhất trong phiên bản mới là việc cung cấp thư viện libvkd3d-shader để sử dụng trong các dự án của bên thứ ba, vì một số tính năng Direct3D 12 đã được thêm vào, chẳng hạn như:
- Đa mẫu.
- Tài nguyên dự trữ.
- Tỷ lệ truyền dữ liệu phiên bản.
- API "Dữ liệu riêng tư" cho tất cả các giao diện.
- Ánh xạ thành phần chế độ xem tài nguyên Shader.
- Phần mở rộng VK_KHR_draw_indirect_count.
- Vị ngữ / biểu diễn điều kiện.
- Hiển thị độ sâu mà không có trình đổ bóng pixel.
- Độ sâu cắt bỏ. Điều này yêu cầu phần mở rộng VK_EXT_depth_clip_enable.
- Bỏ bộ lọc.
- Trộn nguồn kép.
- Lập bản đồ các tài nguyên đã đặt.
- Phương thức ReadFromSubresource () và WriteToSubresource () ID3D12Resource.
- Truy cập đồng thời vào các tài nguyên nhiều hàng đợi.
- Lượt xem rỗng. Đó là, các lượt xem không có tài nguyên cơ bản.
- Một số yêu cầu hỗ trợ tính năng khác.
Ngoài ra, việc bổ sung hỗ trợ chuyển đổi, tuần tự hóa và giải tuần tự hóa chữ ký gốc (vkd3d_serialize_versioned_root_signature() và vkd3d_create_versioned_root_signature_deserializer()) cũng đáng chú ý , cũng như hỗ trợ đầu ra dạng luồng.
Một thay đổi đáng chú ý khác là việc triển khai các biến môi trường: VKD3D_CONFIG để thiết lập các tùy chọn nhằm thay đổi hành vi của libvkd3d và VKD3D_VULKAN_DEVICE để ghi đè thiết bị cho API Vulkan.
Ngoài ra, đã bổ sung hỗ trợ cho các lệnh đổ bóng bufinfo, eval_centroid, eval_sample_index, ld2ms, sample_b, sample_d, sample_info, samplepos và hỗ trợ sơ bộ cho các shader model 5.1.
Và cũng hỗ trợ cho các môi trường đích OpenGL SPIR-V. Điều này cho phép SPIR-V do libvkd3d-shader tạo ra được sử dụng với GL_ARB_gl_spirv. Điều này bao gồm hỗ trợ cho bộ đếm nguyên tử OpenGL và bộ lấy mẫu kết hợp.
Cuối cùng, nếu bạn muốn tìm hiểu thêm về phiên bản mới này, bạn có thể tham khảo danh sách đầy đủ các thay đổi tại liên kết sau.
Làm thế nào để cài đặt vkd3d trên Linux?
Đối với những người quan tâm đến việc có thể cài đặt vkd3d trên hệ thống của họ, họ nên lấy mã nguồn và tiến hành biên dịch, mặc dù vì mục đích thực tế hoặc cho những người mới, họ có thể thử thư viện này mà không cần nỗ lực nhiều. Để làm điều này, họ chỉ phải cài đặt lutris và trong các cấu hình của nó.
Đối với những người quan tâm đến việc biên dịch, họ phải lấy mã bằng:
git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"
Cuối cùng, các lớp Vulkan phải được kích hoạt:
export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug