-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
core: refactor and improve surface commit #9805
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
core: refactor and improve surface commit #9805
Conversation
currently discord typing is occasionally delayed, not updating. minecraft flickers, cs2 flickers. |
and obs -> right click preview -> open windowed projector should die with
as it does on -git, currently doesnt. |
fixed |
860ed07
to
cbecc98
Compare
works on nvidia now, no flicker or delayed frames :) |
Did you test this with the vkcube FIFO mode Tom mentioned was broken? That might've been from another PR but still worth testing here |
tested with explicit_sync both on and off, all work on nvidia
I'm also daily running this pr on an old Intel laptop with no issues (explicit enabled) |
@vaxerski do you mind if we just merge this as one pr lol, cause I don't really wanna go through all the combinations of testing all over again for #9804 if I know this works maybe we can do something like or just merge the entire pr into one commit like normal p.s. the other two prs aren't required for this, still drafts until I get the time to clean/fix them up, discuss, and test |
I've been running this PR for a couple days and it seems to be working well for my usecases on NVIDIA. |
TODO: use CHLBufferReference in direct scanout properly the only problem is the scanout buffer release timing, specifically the onBackendRelease mechanism
"The content update is placed in a queue until it becomes active." - wl_surface::commit
"A wl_buffer that has been attached and then replaced by another attach instead of committed will not receive a release event, and is not used by the compositor." - wl_surface::attach
cbecc98
to
3002845
Compare
rebased to main also should be good for final review/merge |
my question is what is this supposed to fix? |
there isn't a specific bug this pr is fixing, but it is building towards more well defined surface commit behavior this pr also follows wayland surface protocol closer, like in the last 2 commits
p.s. here are some exmaples of previously not well defined behavior
|
cs works fine on my end so yea |
* make CHLBufferReference not a SP anymore * copy over release and acquire points in CHLBufferReference * use CHLBufferReference in screencopy and toplevel export TODO: use CHLBufferReference in direct scanout properly the only problem is the scanout buffer release timing, specifically the onBackendRelease mechanism * cleanup SSurfaceState and surface pending commit tracking * move surface code from DRMSyncobj, and move acquire to SSurfaceState * use queue for comitted pending surface states like proto says "The content update is placed in a queue until it becomes active." - wl_surface::commit * drop, not release, prev buffer if 2nd buffer wl_surface.attach is sent "A wl_buffer that has been attached and then replaced by another attach instead of committed will not receive a release event, and is not used by the compositor." - wl_surface::attach
Describe your PR, what does it fix/add?
part 2 of #9774
relevant commits:
cleanup SSurfaceState and surface pending commit tracking
move surface code from DRMSyncobj, and move acquire to SSurfaceState
use queue for comitted pending surface states like proto says
drop, not release, prev buffer if 2nd buffer wl_surface.attach is sent
Is there anything you want to mention? (unchecked code, possible bugs, found problems, breaking compatibility, etc.)
based on part 1
Is it ready for merging, or does it need work?
should be gtg nownvm lol nvidia borkde again (╥_╥)yes finally