Skip to content

venus: add event and fence feedback

Yiwei Zhang requested to merge zzyiwei/mesa:vn-feedback into main

The issue: #6266 (closed)

Brief:

  • commit 1-3 are tiny fixes
  • commit 4-5 queue wait_fence creation requires to adjust init to prepares for the feedback core
  • commit 6-8 adds a feedback pool implementation along with host sync operation helpers
  • commit 9 adds event feedback integration
  • commit 10 disables sparse resource due to the difficulty in handling vkQueueBindSparse
  • commit 11-13 adds fence feedback integration
  • requires virgl/virglrenderer!821 (merged)

Test:

  • dEQP-VK.* pass on kukui
  • dEQP-EGL.*, dEQP-GLES2.*, dEQP-GLES3.*, dEQP-GLES31.* pass with angle on kukui
  • no regressions in VVL violations

Perf gain:

  • general perf wins for any titles use VkEvent host ops and those calling vkGetFenceStatus
  • gfxbench gl_driver2_off
    • 49% -> 91% of native gl performance with a-on-v on radv on zork
    • 93% -> 165% of native gl performance with a-on-v on mali on kukui
    • 50% -> 79% of native gl performacne with a-on-v on turnip on trogdor
      • turnip driver overhead is high, the host side cmd re-recording makes it gpu bound

Timeline semaphore and query pool feedback will follow soon. They are too much to squeeze into this single MR

  • timeline semaphore: feedback cmd caching/recycling + cmd interception
  • query pool: asynchronous query results transfer with a different vn_feedback_pool config
Edited by Yiwei Zhang

Merge request reports