Try using vulkan queue family ownership transfers?
Right now, the vulkan code assumes all resources are shared across all queue families - even resources that will only ever be used from a single queue family. This is because it's difficult for us to know in advance when to submit an optimal queue release operation, and also to predict whether or not we'll be using an image from multiple queues or not.
Ideally, we would want to
- Submit and use queue family ownership operations in cases where resources infrequently transition between queue families
- Identify cases where concurrent sharing is excessive (e.g. non-storable, non-transferrable image) and use exclusive sharing instead
- Benchmark the above changes and determine when concurrent sharing is better than frequent queue family transfers