Hi,
My understanding of the API is that we can only allocate descriptors via a full descriptor set from a specific pool, providing a descriptor layout for that.
So in common situations, there would be several descriptor types within the layout/set. In that case, I guess the pool must have been created with all the requested types using the pPoolSizes array or it leads to an error, am I right ?
So my questions is
- When creating a pool for several types, will the driver directly reserve memory for all of them or are provided sizes just a hint ?
- If I have to use a pattern where a full pools are recycled for another (after GPU completion) using a reset. What’s happening when the pull is full for a specific descriptor type but not the others. Does the reserved memory wasted until the pool is reset and re-used or is the driver smart enough to re-use the associated memory for another pool ?
If the memory is wasted, that means allocation API design is not flexible enough imho, having only one descriptor type per pools would be a solution to avoid any waste BUT as the allocation is related to full descriptors layout & sets on just one pool, this involves having different descriptor sets for each descriptor type, which sounds a little bit overkill on the performance side…
Again it would have been great to get something more flexible such as allocating partial descriptors within a set, or being able to provide several pools for the allocation of one single set.
I would like to get your thoughts about that.
Thanks.