venus: add event and fence feedback
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 callingvkGetFenceStatus
- 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