DirectX 12 hiển thị hàng đợi lệnh cho đồ họa (được gọi là "Trực tiếp"), tính toán hoặc sao chép các tác vụ. Về chức năng được cung cấp, mỗi cái là một siêu tập hợp của cái sau. Thông số kỹ thuật nói rằng hàng đợi lệnh có thể được thực thi đồng thời bởi thiết bị. Tuy nhiên, API không giới hạn số lượng hàng đợi lệnh theo bất kỳ cách nào (ít nhất tôi không nhận thấy bất kỳ giới hạn nào).
Rõ ràng, các nhà cung cấp khác nhau xử lý điều này rất khác nhau:
- Intel tuyên bố trong một bài thuyết trình gần đây (slide 23) rằng hiện tại GPU của họ không thể xử lý song song Đồ họa & Điện toán và công cụ sao chép có thông lượng yếu. Họ khuyên không nên sử dụng nhiều hàng đợi đồ họa / tính toán.
- AMD đã bắt đầu từ lâu để quảng cáo việc sử dụng hàng đợi / "trình tạo bóng không đồng bộ" bắt đầu với Mantle và bảng điều khiển gen hiện tại. Ngoài ra còn có một số nhà phát triển ( ví dụ ) xác nhận tăng hiệu suất đáng kể bằng cách thực hiện song song các tác vụ tính toán và đồ họa.
- Gần đây đã có một số ồn ào về việc Nvidia không hỗ trợ trình đổ bóng không đồng bộ trong phần cứng: Sử dụng hàng đợi Đồ họa và Tính toán riêng biệt cùng một lúc dường như làm mọi thứ chậm hơn cho thấy trình giả lập trình điều khiển. Các hoạt động sao chép song song, mặt khác, đã được CUDA hỗ trợ trong một thời gian rất dài, điều này cho thấy rõ rằng động cơ DMA có thể hoạt động độc lập.
Có cách nào để quyết định trong thời gian chạy nếu việc đưa CommandLists vào nhiều CommandQueues thay vì một lệnh có ý nghĩa không? (cho rằng trường hợp trước đây không liên quan đến nhiều chi phí kỹ thuật)
Mặc dù tôi có thể dễ dàng thấy nó hữu ích như thế nào khi thực hiện các hoạt động bộ nhớ song song với các hoạt động tính toán / đồ họa, nhưng điều đó gây cho tôi sự phức tạp không cần thiết để chạy song song nhiều quá trình tính toán và đồ họa (trừ khi không có lợi ích chính.). Tôi cũng không rõ, làm thế nào điều này có thể dẫn đến hiệu suất tốt hơn đáng kể; ngoại trừ các trường hợp bệnh lý trong đó nhiều tác vụ tuần tự nhỏ không thể tạo đủ tải GPU.