I am in the process of trying to bring-up Vulkan based application on a new distro of linux based on Automotive Grade Linux (AGL) with Xserver running on a Raspberry Pi 4, but receiving memory based errors. I can run the applications and Vulkan demos on Raspbian on the same hardware so I know this is purely a software issue. I believe I’m missing either a library, or some initialization/config. I’m using Yocto to build the distro and have it setup to compile mesa with native Vulkan support (-Dvulkan-drivers=broadcom)
When I attempt to run vkcube, I get this error:
# vkcube Selected GPU 0: V3D 4.2, type: 1 memory wait for map failed failed to map command list buffer memory wait for map failed failed to map command list buffer memory wait for map failed failed to map command list buffer vkcube: /usr/src/debug/vulkan-tools/188.8.131.52-r0/git/cube/cube.c:1338: demo_prepare_buffers: Assertion `!err' failed. Aborted
That line number points back to this in cube.c:
err = demo->fpCreateSwapchainKHR(demo->device, &swapchain_ci, NULL, &demo->swapchain); assert(!err); // note: fpCreateSwapchainKHR is a pointer to vkCreateSwapchainKHR
So this issue appears to be with creating the swapchain. Swapchain as an extension appears to be included/enabled:
Device Extensions: count = 6 ---------------------------- ... VK_KHR_swapchain : extension revision 68
What could be missing that would prevent the creation of the swapchain?
I initially followed this tutorial for the testing applications on Raspbian:
And I believe I pulled all the requirements/dependencies (libdrm, libxcb, etc) from that tutorial into my new AGL distro and their versions match or exceed those in Raspbian.
Another data point: When I run my custom application I get this error:
memory wait for map failed
[2020.06.29-03.11.55:019][ 0]LogVulkanRHI: Error: VulkanRHI::vkCreateDescriptorPool(Device->GetInstanceHandle(), &PoolInfo, VULKAN_CPU_ALLOCATOR, &DescriptorPool) failed, VkResult=-2 at /home/ken/source/UnrealEngine/Engine/Source/Runtime/VulkanRHI/Private/VulkanPendingState.cpp:723 with error VK_ERROR_OUT_OF_DEVICE_MEMORY The "memory wait for map failed" aligns with the vkcube error, but this also throws VK_ERROR_OUT_OF_DEVICE_MEMORY which seems misleading because this is an 8GB Pi and the same application can run on Raspbian.
# vulkaninfo ========== VULKANINFO ========== Vulkan Instance Version: 1.2.168 Instance Extensions: count = 9 ============================== VK_EXT_debug_report : extension revision 9 VK_EXT_debug_utils : extension revision 2 VK_KHR_display : extension revision 23 VK_KHR_external_memory_capabilities : extension revision 1 VK_KHR_get_physical_device_properties2 : extension revision 1 VK_KHR_get_surface_capabilities2 : extension revision 1 VK_KHR_surface : extension revision 25 VK_KHR_xcb_surface : extension revision 6 VK_KHR_xlib_surface : extension revision 6