Break QueuePresentKHR into more manageable pieces

Instead of QueuePresentKHR doing everything, let's decompose to:

QueuePresentKHR
 -> PresentOneSwapchain     (considers just one swapchain in the list)
     -> SetSwapchainSurfaceDamage      (does KHR_incremental_present)
     -> SetSwapchainFrameTimestamp     (does GOOGLE_display_timing)

As part of the decomposition, stop trying to be so clever about reusing
allocations for KHR_incremental_present; it's not worth threading it
through the list of swapchains. Also just use a vector; it's not worth
using the app-provided allocator from the device scope.

Note some issues with the multi-swapchain case in general. We should
also refine the fd handling to be leak-free by construction; handling
raw fds is asking for trouble.

Bug: b/255376900

Change-Id: Iaa66b7b1bfd2be2a1fda578fcb8141607be1e360
1 file changed