![]() The API and implementations don't always make this clear, so you may have to benchmark different circumstances. Sometimes queues within a family do execute on different hardware, and sometimes queues between families use much of the same hardware. Such hardware will typically expose a queue family that only allows transfer operations, and those transfer operations may be restricted in their byte alignment compared to transfers done on graphics-capable queues. Several GPUs have specialized DMA hardware for doing copies to/from device-local memory. Of course, distinct underlying execution hardware is typically distinct for a reason. If a mouth eats, that food need not wait for food from a different mouth to digest. This would be like a creature with multiple mouths and multiple digestive tracts. Queues from different families may (or may not) have distinct underlying execution hardware. Food eaten by one mouth may have to wait for food previously eaten by another to pass through the digestive tract. How much food they can eat is separate from how much food they can digest. This would be like a creature with multiple mouths but all of them connect to the same digestive tract. Queues within a queue family typically execute commands using the same underlying hardware to process them. You can think of a queue as a mouth, with commands as food. I just don't understand why queues with different features exist, and even after searching through the Vulkan doc, StackOverflow, vulkan-tutorial and vkguide, the only thing I found was "Queues in Vulkan are an “execution port” for GPUs.", which I don't really understand and on which I can't find anything on google.Ī queue is a thing that consumes and executes commands, such that each queue (theoretically) executes separately from every other queue. Is it only tied to vulkan implementation? Or is it related to hardware specific things? I heard that using queues with less features could be faster, but why? However, if a GPU is able to do Graphics work, why are there queues unable to do so? presentation, as well as graphics computations, transfer, etc). I understand as well that QueueFamilies groups queues depending on the features they can do (the extensions available for them e.g. That is why I understand the fact there can be multiple queues. We are supposed to record commands with VkCommandBuffers and send them through queues to, potentially, multithread the work we send to the gpu. In my understanding, VkPhysicalDevice represents an implementation of Vulkan, which could be represented as a GPU and its drivers.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |