Fixes CTS on nvidia.
Example code given by the driver devs in the nvidia forums was
VkBool32 dedicatedAllocation = (memDedicatedReq.requiresDedicatedAllocation != VK_FALSE) ||
(memDedicatedReq.prefersDedicatedAllocation != VK_FALSE);
However on GTX 1080, nvidia 470.103 with
./conformance_cli "Timed Pipelined Frame Submission" -G Vulkan2
we are to create a VkImage with
DEBUG [create_image] create_image: Use dedicated allocation: 0 (preferred: 0, required: 0)
doing so causes the VkFence wait in vk_submit_cmd_buffer to fail randomly with
either VK_TIMEOUT or VK_ERROR_DEVICE_LOST.
On AMD radv we are told to use dedicated allocation:
DEBUG [create_image] create_image: Use dedicated allocation: 1 (preferred: 1, required: 1)
This also fixes two errors:
* VK_IMAGE_USAGE_SAMPLED_BIT was not always added to depth formats.
* VK_IMAGE_ASPECT_DEPTH_BIT and VK_IMAGE_ASPECT_STENCIL_BIT was added to image
views for sampling, where the spec only allows one of them.
On tegra, when VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT is set for color image usage
with VK_FORMAT_R16G16B16A16_SFLOAT, dedicated allocation is preferred, but not required.
When using dedicated allocation in this case, we get only a black texture,
and when blitting from that texture, we get a kernel driver error:
gk20a_fifo_handle_mmu_fault_locked:1721 [ERR] fake mmu fault on engine 0, engine subid 1 (hub), client 1 (ce0), addr 0x46cd8aa000, type 15 (poisoned), access_type 0x00000000,inst_ptr 0x212ef3000
Only using dedicated allocation when it is required works around this issue.
This adds some Android support in composition clients,
and fixes the breakage from 2 commits ago.
Thanks to Jakob for finding my error in an earlier version.