Trong số API-Samples đi kèm với Vulkan, có vẻ như luôn có một cuộc gọi đến vkWaitForFences
sau khi gọi tới số vkQueueSubmit
, trực tiếp hoặc qua execute_queue_command_buffer
(trong util_init.hpp). Cuộc gọi đến vkWaitForFences
sẽ chặn thực thi CPU cho đến khi GPU hoàn tất tất cả công việc trong vkQueueSubmit
trước đó. Điều này có hiệu lực không cho phép nhiều khung được xây dựng đồng thời, mà (theo lý thuyết) đang hạn chế hiệu suất đáng kể.Mẫu Vulkan: vkQueueSubmit luôn theo sau bởi vkWaitForFences?
Các cuộc gọi này có cần thiết không và nếu có, có cách nào khác không yêu cầu GPU không hoạt động trước khi xây dựng khung mới không?
dường như giống với các mẫu D3D12 đầu mà cũng chỉ làm mô hình one-frame-và-chờ đợi. –
vâng, trớ trêu thay, một trong những mục tiêu chính của việc giới thiệu các API là đạt được tính song song cao hơn, và sau đó các mẫu chỉ ra cách * không * làm điều đó;). – MuertoExcobito