Skip to content

venus: force async pipeline create on threads creating descriptor pools

Yiwei Zhang requested to merge zzyiwei/mesa:vn-angle-tls-ring into main

What does this MR do and why?

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: d17ddcc8477 ("venus: dispatch background shader tasks to secondary ring")
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>

Test:

  • ROTTR and Dota 2 still work as intended with parallel shader compile
  • Genshin Impact with ANGLE on Venus now does async pipeline creation on Unity render thread

Notes for backporting:

  • between d17ddcc8 and 30316246, use vn_tls_set_primary_ring_submission
  • after 30316246, use vn_tls_set_async_pipeline_create

/cc @justonli @ryanneph

Merge request reports