-
Notifications
You must be signed in to change notification settings - Fork 111
DRM: Explicit synchorisation support #3717
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: main
Are you sure you want to change the base?
Conversation
At least two things should be resolved before landing this:
|
@RAOF FYI there are non-trivial conflicts trying to rebase on |
I don't see any conflicts? (But do see things to fix) |
Sorry, was looking at a wrong branch. |
NB: I've rebased #3595 on top of this and I can still see artifacts when running: MIR_SERVER_PLATFORM_DISPLAY_LIBS=mir:atomic-kms \
MIR_SERVER_CURSOR=null \
./build-Debug/bin/mir_performance_tests |
The CI failures are all over the place:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mostly some "housekeeping" notes before I get into reviewing the implementation.
One question that needs an answer: What properties do we get from PosixClock<CLOCK_MONOTONIC>
that are not provided by std::chrono::steady_clock
(which we use elsewhere)?
src/common/symbols.map
Outdated
mir::time::clock_gettime_checked*; | ||
mir::time::is_steady_specialisation::is_steady*; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wrong stanza - Mir 2.19 has shipped
src/common/time/posix_clock.cpp
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing copyright nonsense
src/platform/graphics/drm_syncobj.h
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Conflicts with include/platform/mir/graphics/drm_syncobj.h
(but I don't think it is used)
@@ -0,0 +1,89 @@ | |||
#include "mir/graphics/drm_syncobj.h" | |||
|
|||
#include "mir/log.h" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unused?
Well, no trouble reproducing the test failures locally:
|
NB: I did just rebase this on |
Well, here's one of the segfaults:
(Not sure why there's no symbols for |
To get even I just pushed the "housekeeping" fixes without fixing the tests |
Fundamentally, we get the property that |
Bah! This is because you've got different hardware to me (and CI) - none of those fail in CI. The ones that fail in CI look to be mostly races, I think - the miral config file one, the window on disconnected output looks like maybe a 1sec timeout? The ones that aren't seem to be the ubsan ones, which are still worth examining. |
In the interest of making reviews easier - and isolating the CI failures - this has been rebased on #3924. |
699502a
to
12bf5d5
Compare
As that landed, rebased on main and... |
TICS Quality Gate❌ Failedmir1 Condition(s) failed❌ Condition “Δ Average Code Coverage ≥ 0.00% for each file with respect to Previous analysis” failed for 3 files.
See the results in the TICS Viewer The following files have been checked for this project
|
This implements the
linux_drm_syncobj_v1
explicit synchronisation protocol.Currently only the simplest support - we accept
acquire
fences and wait for them to become ready before we process the associatedwl_surface.commit
, and we signal therelease
fence once we have finished with the buffer.There are optimisation opportunities at both ends here - we could push the
acquire
fence deeper into the pipeline, and trigger therelease
fence sooner.