Sự khác biệt giữa DirectX 11 và DirectX 12 là gì?

DirectX 12 được phát hành cùng với Windows 10 vào năm 2015. Việc phát hành DirectX 12 của Microsoft đã mở ra một kỷ nguyên mới cho các game thủ và nhà phát triển game. Có khả năng giảm chi phí sử dụng CPU trong khi tăng hiệu suất GPU, DirectX 12 nhanh chóng tạo được tên tuổi cho mình.

Tuy nhiên, việc tăng hiệu suất có thực sự đơn giản là chuyển từ DirectX 11 sang DirectX 12 không? Hãy cùng tìm hiểu bằng cách xem xét sự khác biệt giữa DirectX 11 và 12 qua bài viết sau đây!

Sự khác biệt giữa DirectX 11 và DirectX 12 là gì?

Sự khác biệt giữa DirectX 11 và DirectX 12 là gì? Nói một cách đơn giản, DirectX 12 là phiên bản mới nhất của DirectX. Một trong những khác biệt đáng chú ý nhất là cách chúng tương tác với phần cứng của bạn. Hầu hết các game được phát triển bằng DirectX 11 chỉ sử dụng từ hai đến bốn lõi CPU. Một trong những lõi này thường cho GPU biết phải làm gì.

Sau đó, game sẽ sử dụng các lõi còn lại để xử lý những cài đặt tiêu tốn nhiều CPU khác nhau. Mặt khác, DirectX 12 phân bổ khối lượng công việc của CPU trên nhiều lõi và cho phép mọi lõi giao tiếp đồng thời với GPU.

DirectX 12 cũng đi kèm với một số tính năng thú vị. Điều này bao gồm tính toán không đồng bộ và các PSO. Tính toán không đồng bộ làm tăng mức sử dụng GPU bằng cách cho phép nhiều khối lượng công việc hoạt động song song. Điều này về cơ bản sẽ giải phóng toàn bộ tiềm năng của GPU.

Ngoài kết xuất đồ họa, GPU của bạn còn xử lý nhiều tác vụ khác, chẳng hạn như chạy thuật toán Machine Learning. Với DirectX 11, GPU chỉ có thể thực hiện một trong các tác vụ này tại một thời điểm và theo một thứ tự nhất định. Hiệu suất bị ảnh hưởng khi điều này xảy ra do tài nguyên GPU của bạn không được sử dụng hiệu quả.

Hãy coi nó giống như một người phục vụ tại một nhà hàng. Khi người phục vụ nhận đơn đặt hàng của bạn, họ sẽ hỏi bạn muốn uống gì trước. Khi bạn nhận được đồ uống của mình, họ sẽ hỏi bạn muốn chọn gì cho món chính. Đơn hàng của bạn được thực hiện theo từng bước. Người phục vụ sẽ không hỏi bạn muốn ăn món tráng miệng gì trước khi bạn ăn món chính. Mặc dù điều này có vẻ hợp lý nhưng nó không hiệu quả như mong đợi.

Trong điện toán, một tài nguyên GPU khác sẽ xử lý từng nhiệm vụ của người phục vụ. Cho đến khi bạn nhận được đồ uống của mình, tài nguyên GPU cần thiết để thực hiện đơn hàng món chính của bạn sẽ không hoạt động. Với khả năng tính toán không đồng bộ của DirectX 12, người phục vụ sẽ có thể nhận nhiều đơn đặt hàng của bạn cùng một lúc, giống như trong chuỗi cửa hàng thức ăn nhanh. Điều này tối đa hóa việc sử dụng GPU và cải thiện hiệu suất chơi game của bạn.

DirectX 12 cũng giới thiệu các PSO. Với DirectX 11, phần hình của game được gửi tới GPU để hiển thị, trong đó nhiều cài đặt phần cứng khác nhau sẽ chịu trách nhiệm diễn giải và hiển thị dữ liệu này. Đây được gọi là đường dẫn đồ họa và luồng dữ liệu đầu vào và đầu ra xảy ra khi GPU của bạn hiển thị các khung hình. Tuy nhiên, hệ thống đồ họa của DirectX 11 không hoàn hảo.

Đường dẫn này chứa một tập hợp các trạng thái khác nhau, bao gồm trạng thái rasterize, trạng thái blend và trạng thái depth stencil, cùng với nhiều thành phần khác. Trong DirectX 11, có sự phụ thuộc giữa các trạng thái khác nhau này. Kết quả là một trạng thái không thể được hoàn thành cho đến khi trạng thái trước đó được xác định. Điều này làm giảm mức sử dụng GPU và tăng chi phí sử dụng CPU nhưng phải trả giá bằng hiệu năng.

Để giải quyết vấn đề này, DirectX 12 đã giới thiệu PSO, các đối tượng mô tả trạng thái của toàn bộ hệ thống đồ họa. PSO giống như một cái chai chứa nhiều trạng thái và thành phần cần thiết để tạo ra một hình ảnh. Điều này cho phép GPU xử lý trước mọi trạng thái phụ thuộc thay vì liên tục tính toán lại các trạng thái dựa trên quy trình đồ họa hiện tại.

Điều này làm giảm đáng kể chi phí sử dụng CPU trong DirectX 11 và cải thiện hiệu suất. Vì vậy, sự khác biệt này sẽ như thế nào? Theo Microsoft, DirectX 12 giảm tới 50% chi phí sử dụng CPU và cải thiện hiệu suất GPU tới 20%. Mặc dù đó là một số cải tiến đáng kể nhưng điều này không có nghĩa là bạn sẽ thấy kết quả tương tự.

Tại sao việc chuyển từ DirectX 11 sang DirectX 12 không đơn giản?

DirectX 11 được phát hành lần đầu tiên cho Windows Vista vào ngày 27 tháng 10 năm 2009. Vì vậy, với DirectX 12 ra mắt vào năm 2015, có khoảng cách 6 năm giữa DirectX 11 và DirectX 12. Trong thời gian này, hàng nghìn game đã được phát triển bằng DirectX 11. Thật không may, việc chuyển từ DirectX 11 sang DirectX 12 không hề dễ dàng.

DirectX 11 được gọi là API cấp cao. Nói một cách đơn giản, những API cấp cao sẽ dễ dàng làm việc hơn với các nhà phát triển. Kết quả là các game ổn định, hấp dẫn và có thể chơi được. Mặt khác, DirectX 12 là một API cấp thấp và khác biệt so với DirectX 11. Mặc dù nó cho phép các nhà phát triển tinh chỉnh tối ưu hóa ở cấp độ chi tiết nhưng nó cũng đòi hỏi kiến thức sâu rộng để sử dụng.

Điều đó có nghĩa là, một game được phát triển trong DirectX 12 có thể có hiệu suất kém hơn tùy thuộc vào kiến thức của nhà phát triển về API. Một số cải tiến đi kèm với DirectX 12, nhưng nó thực sự phụ thuộc vào việc nhà phát triển có thể triển khai nó tốt như thế nào. Vì lý do này, nhiều nhà phát triển chọn sử dụng các API cấp cao như DirectX 11.

Nên chọn DX 11 hay DX 12?

Câu trả lời phụ thuộc vào một số điều, chẳng hạn như game bạn đang cố gắng chạy. Ví dụ, Guild Wars 2 chạy trên DirectX 11. Ngay cả khi hệ điều hành và phần cứng của bạn có thể sử dụng DirectX 12, bạn sẽ không có tùy chọn chọn DirectX 11 trong Guild Wars 2 vì game không hỗ trợ. Đây hoàn toàn là quyết định của nhà phát triển ArenaNet.

Hình ảnh trong game Guild Wars 2
Hình ảnh trong game Guild Wars 2

Dù bạn có tin hay không thì cũng phải mất 9 năm để ArenaNet thực hiện chuyển đổi từ DirectX 9 sang DirectX 11. Tuy nhiên, một số game hỗ trợ cả DirectX 11 và DirectX 12, bao gồm Fortnite, Battlefield 5, Shadow of Tomb Raider, v.v... Người dùng có thể chuyển đổi giữa DirectX 11 và DirectX 12 trong cài đặt game.

Hiện tại, việc một số game hỗ trợ cả DirectX 11 và 12 có thể khiến bạn thắc mắc về hiệu suất trong game. Việc chọn DX 11 hay DX 12 có mang lại hiệu suất trong game tốt hơn không? Video sau đây minh họa sự khác biệt giữa DirectX 11 và DirectX 12 trong một loạt game, giới thiệu các thông số quan trọng như số khung hình trung bình trên giây, mức sử dụng CPU, mức sử dụng GPU, v.v..., sử dụng AMD Ryze 3600, Nvidia GeForce RTX 3060 Ti và RAM 16GB DDR4.

Kết quả thật đáng ngạc nhiên về nhiều mặt, đôi khi có rất ít sự khác biệt về mặt hình ảnh giữa DX 11 và DX 12, mặc dù thời gian ra mắt của chúng cách nhau nhiều năm. Bạn cũng có thể đã lưu ý sự khác biệt về tải GPU và CPU giữa cả hai phiên bản DirectX, với phiên bản DX 12 của mỗi game thường yêu cầu ít tài nguyên hơn DX 11 cũ.

Ngoài hỗ trợ trong game, việc lựa chọn giữa DirectX 11 và DirectX 12 cũng sẽ phụ thuộc vào phần cứng của bạn. Hầu như bất kỳ GPU hiện đại nào cũng sẽ hỗ trợ DirectX 12, nhưng điều tương tự không xảy ra với các GPU cũ hơn như Radeon HD 4870. Được phát hành vào năm 2008, GPU này chỉ hỗ trợ tối đa DirectX 10. Điều này có nghĩa là nó sẽ không có khả năng chạy hầu hết các GPU hiện đại. game chạy bằng DirectX 11 và DirectX 12.

Thứ Hai, 23/10/2023 09:09
52 👨 1.851
0 Bình luận
Sắp xếp theo
    ❖ Kiến thức cơ bản