-
Couldn't load subscription status.
- Fork 282
rendervulkan: Use general queue for Intel devices #1975
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
|
@cgbowman I think it would be best to link the data here. |
|
This sounds like the compute only queue is just broken and should be disabled in Mesa or fixed somehow. |
1f8c6fe to
896318d
Compare
I think the syncing mechanisms could definitely use a lot more improvement, but it seems that some applications fare better with lower usage of the compute-only queue (for example, I still see Elden Ring making use of it at times, but ccs usage never goes above 4%). I'm unsure what the effects would be on other applications if we disabled the compute-only queue completely (possibly hangs?). Without broader testing, I think such a move could have negative impacts. I'll be sure to bring it up to our teams as something to fix, but for the time being, I think this is the best move we can currently make to keep performance from degrading for gamescope specifically and not regress other applications. Once we have a fix for syncing on the compute-only queue (or a better usage model), I think it would be good to remove this. |
|
Outside of Gamescope, we also use async compute in a very similar way in Steam Link VR. It might be worth looking at Doom Eternal which has present from compute also. I would imagine these apps would be broken in a similar way to how every app under Gamescope + composition is. |
If Doom Eternal shows similar symptoms, that could likely bump the severity of the issue. I'll do some profiling on it next week and see if it's being similarly affected. Thanks for the heads up! |
|
I have Doom Eternal on my Lunar Lake handheld. There's no meaningful difference between present from compute on/off in terms of pure FPS. If anything, it actually performs worse with present from compute disabled if I watch the frame time graph. Steam Link VR would be an interesting test but I don't have any compatible headsets. |
|
Checking out Doom Eternal on my device yielded similar results as @matte-schwartz, showing CCS usage around 15% and RCS usage around 90%, but the app runs well. We'll need to explore more into the sync mechanisms and why Gamescope's composition is affected more by using CCS than standalone apps like Doom Eternal. Would this PR suffice as a workaround in the meantime? If it helps, I could add a TODO comment prompting removal once a fix is found. |
|
Ya, please add a comment explaining why and a log. |
896318d to
ce21f95
Compare
|
@matte-schwartz is this with or without @cgbowman workaround? |
|
@msatwood this is with the workaround, sorry for not clarifying. I can grab the same data without the workaround in a little bit. added a vk_log to confirm it was being used |
|
No apologies necessary. Given that this is with the workaround, I suspect this is an entirely different issue. |
|
that makes sense, I can file a follow-up issue for it in that case. think mesa or drm/xe would be a better tracker? |
|
I am going to say Mesa |
|
There are multiple locations where this could be occurring, but yeah, Mesa sounds like the correct place to file this. You can assign to me and I'll follow up with it in there. |
|
@matte-schwartz, could you include instructions on how to test the cursor composition? I'll include that in my own testing. |
|
@cgbowman I put instructions in here: https://gitlab.freedesktop.org/mesa/mesa/-/issues/14159#any-extra-information-would-be-greatly-appreciated, or i can write instructions for how to install an Intel-compatible version of SteamOS in that issue tomorrow. |
During forced composition, work sent to the compute-only queue is starved for resources, competing with the general queue. When resources are freed up for the compute-only queue, the general queue is waiting at a sync point for the compute work to finish. This can be beneficial for some workloads, but it causes applications running with gamescope's forced composition to slow down when the queues are competing for resources. By forcing the compositing work to be done in the general queue, we avoid the wait for sync points and the performance loss is not observed. This is a workaround to be removed once resolved. See: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/4452 Signed-off-by: Casey Bowman <[email protected]>
ce21f95 to
7da2449
Compare
My apologies for not adding this. Added the log & the regressed Intel ID (I had made the changes on another machine and didn't see the vendor ID had not updated). |
I think this is sufficient information to get started, I'll let you know if we'll need further instructions after trying to replicate the issue in our environment. I greatly appreciate the detail! :) |










During forced composition, work sent to the compute-only queue is starved for resources, competing with the general queue. When resources are freed up for the compute-only queue, the general queue is waiting at a sync point for the compute work to finish.
This can be beneficial for some workloads, but it causes applications running with gamescope's forced composition to slow down when the queues are competing for resources.
By forcing the compositing work to be done in the general queue, we avoid the wait for sync points and the performance loss is not observed.