Haven't really build stuff with the new(ish) chain extensions, and man that opens up some awesome uses that I didn't even think of when this was designed:
var queueProps = new QueueFamilyProperties2[(int)queuePropCount];var queueGlobalPrios = new QueueFamilyGlobalPriorityPropertiesKHR[(int)queuePropCount];for (var i = 0; i < queueProps.Length; i++){ QueueFamilyProperties2.Chain(out queueProps[i]) .AddNext(out queueGlobalPrios[i]);}
var queueProps = new QueueFamilyProperties2[(int)queuePropCount];var queueGlobalPrios = new QueueFamilyGlobalPriorityPropertiesKHR[(int)queuePropCount];for (var i = 0; i < queueProps.Length; i++){ QueueFamilyProperties2.Chain(out queueProps[i]) .AddNext(out queueGlobalPrios[i]);}
apparently if you leak GPU local memory the driver has a hard time tracking which it was and just... clears all of it, bringing the audio memory down with it xD
Looks like the main thing slowing this down is the CPU waiting for things to complete. If there is stuff to load at all times 90% throughput is possible
as the last parameter on line 96 an ideal scenario can be created, where there is no wasted memory. This seems to have little to no influence on speed)
Also note that my device has 2 Transfer queues (I'm using both in round-robin here) & I'm not using Graphics or Compute queue here, so in theory there is zero interference with other parts, other then memory usage