venus: force async pipeline create on threads creating descriptor pools

This works around some Unity engine behaivor with ANGLE-on-Venus, when
cmd pools are created on main thread once while the render thread only
does descriptor pool creation for set allocations during recording time.

This change also explicitly forces async pipeline create for threads
creating the device instead of implicitly via feedback cmd pool create.
This ensures intended behavior when feedback is disabled.

Fixes: d17ddcc847 ("venus: dispatch background shader tasks to secondary ring")
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27347>
This commit is contained in:
Yiwei Zhang 2024-01-29 14:41:50 -08:00 committed by Marge Bot
parent 62797f036f
commit 1718980e85
2 changed files with 4 additions and 0 deletions

View file

@ -390,6 +390,8 @@ vn_CreateDescriptorPool(VkDevice device,
vn_async_vkCreateDescriptorPool(dev->primary_ring, device, pCreateInfo,
NULL, &pool_handle);
vn_tls_set_async_pipeline_create();
*pDescriptorPool = pool_handle;
return VK_SUCCESS;

View file

@ -570,6 +570,8 @@ vn_CreateDevice(VkPhysicalDevice physicalDevice,
vn_log(instance, "%s", physical_dev->properties.vulkan_1_2.driverInfo);
}
vn_tls_set_async_pipeline_create();
*pDevice = vn_device_to_handle(dev);
return VK_SUCCESS;