RFC: vulkan/wsi: support queue ownership transfer
This RFC makes the wsi code performs queue ownership transfers when the driver sets
wsi_device::ownership_transfer to true.
This moves the wsi code a bit closer to a proper middle layer, because queue ownership transfers to/from
VK_QUEUE_FAMILY_FOREIGN_EXT are required before sharing the external memories to the presentation engine. This is also required for venus because venus must follow the spec strictly. While there are other conformance issues, this should be one of the biggest ones.
Commit 1-4 are general cleanups. They move cmd buffer building code (for prime blits) to its own files.
Commit 5-6 generalize the cmd buffer builder to support cmd buffers other than those used at image present time.
Commt 7-8 add ownership transfer cmd buffers. When enabled, they can release ownership on image present and acquire ownership on image acquire.
The last commit enables the feature in venus.
This is marked RFC and I might be sloppy here and there. I will do more testing and spec reading before dropping the RFC tag.