| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
We keep planes on the plane list to ensure a released plane is removed
from display - however this means that if a caller starts messing with
a plane after release, that it could potentially reposition a plane it
doesn't own anymore.
Use EINA_SAFETY macros to prevent this.
|
|
|
|
|
|
|
|
|
|
|
|
| |
The release flag is actually less useful than the existing in_use flag
for determining if a plane is unused. If a new plane is assigned before
the next flip cleans up released planes, then it can point to a released
plane state, and both it and the previous user will be freed on the next
commit, leaking a plane.
Putting the flag in the plane structure fixes this while still allowing us
to keep released planes around to ensure a recently released plane is
cleared from atomic state.
|
|
|
|
|
|
| |
If we don't do a flip test, the atomic state isn't updated. This fixes
a potential problem where the last operation in state preparation is
a release - the following commit wouldn't include state from the release.
|
|
|
|
|
| |
We need to free the atomic req if commit fails, so let's merge these
failure paths and simplify code a bit.
|
|
|
|
|
| |
Saves us a flip test, and gaurantees that we're always testing with a
reasonable x, y and not something leftover from a previous assignment.
|
|
|
|
|
|
|
|
| |
This patch fixes plane_state values during atomic flip test for any
planes marked for release. When the fb_flip actually completes, we
will remove the marked plane(s) from the output.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
|
|
|
|
|
|
|
|
|
| |
As we cannot immediately remove a plane from an output, due to needing
an atomic commit to actually remove the plane from screen, we can use
a 'release' flag to indicate that a given plane needs removal from the
screen during our next atomic commit.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
|
|
|
|
|
|
|
| |
As we need to be able to commit a new plane state for any released
planes, we should not be removing them from the output list just yet.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
|
|
|
|
|
|
| |
NB: No functional changes
Signed-off-by: Chris Michael <cp.michael@samsung.com>
|
|
|
|
|
|
|
| |
There is little point in assigning a plane to the output list if the
atomic flip test fails.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
|
|
|
|
|
|
|
| |
Unfortunately the plane sized returned from the cursor plane query isn't
a limit, it's an exact size. Sometimes you can use a different size,
but that's completely hardware dependent - so stick to the advertised
size.
|
|
|
|
| |
Assign a plane at startup and update it in flip.
|
|
|
|
|
| |
Grab a plane and lock it down for displaying the canvas, update it on
page flip.
|
| |
|
|
|
|
| |
Call a test commit to rebuild the atomic_req
|
|
|
|
| |
We don't have an atomic state, so we need to create one before the flip
|
|
|
|
|
| |
We need the user_data to come back to us in the flip handler like it does
in the non atomic flip.
|
|
|
|
|
|
|
|
| |
I think we're now at the point where the two paths are merged.
Still no atomic functionality because nothing assigned the primary plane,
so we have no atomic state to commit. The machinery should be in place
though.
|
|
|
|
| |
Further merging of atomic and non-atomic paths
|
|
|
|
| |
Lets us push the NULL set into _release_buffer for some clean up
|
|
|
|
| |
We'll need to perform all this for atomic operations as well.
|
| |
|
|
|
|
|
| |
We should use the safety macro here instead of silently continuing so we
can get something in the log if this happens.
|
|
|
|
| |
Time to start smashing the atomic and non-atomic paths together.
|
|
|
|
|
| |
next, pending, and current are going to have to deal with atomic state
instead of just fbs soon
|
|
|
|
|
| |
This should make it easier to share code paths between atomic and non
atomic operations.
|
|
|
|
|
| |
Make sure we can commit that plane at assign time so when we hook up to
the scene graph it knows when it can safely use a plane.
|
|
|
|
| |
We're going to need this one in plane assign to test commits
|
|
|
|
|
|
|
| |
We'll be doing tests as we build up plane state assignment. it's too late
to do anything about it if we fail here - failed tests will block plane
assignment in the first place so the scene graph knows it still has to
render those visual elements.
|
|
|
|
| |
Opposite of plane assign.
|
|
|
|
|
|
| |
This will simplify a bunch of API that would otherwise have to pass in
both output and plane - and in some cases we might not have the output
handy anyway.
|
|
|
|
| |
These will be output state eventually
|
|
|
|
|
| |
Don't just test, allocate the resource, and then prevent further
assignments from trying to use it as well.
|
|
|
|
|
| |
We're creating the entire state from scratch already - trying to merge
with the old state will likely bring in state we just tried to replace.
|
|
|
|
| |
It's the same as the previous one, so combine them.
|
|
|
|
| |
Stop printing "commit test failed" from non-test commits.
|
|
|
|
| |
Allows testing non-atomic paths without a reboot or a rebuild.
|
|
|
|
|
|
|
|
| |
In cases where output monitors have different frequencies, we need to
be doing atomic commits on a per-output basis. This patch modifies the
ecore_drm2_fb_flip function to support doing atomic commits per output.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
|
|
|
|
|
|
|
| |
When we free an output, make sure we cleanup any existing atomic
commit requests
Signed-off-by: Chris Michael <cp.michael@samsung.com>
|
|
|
|
|
|
|
|
| |
As we need to do atomic commits on a per-output basis, these 2 newly
added API functions can go because these functions did one atomic
commit for all outputs
Signed-off-by: Chris Michael <cp.michael@samsung.com>
|
|
|
|
|
|
|
|
|
|
| |
As there is nothing inside this function which requires any Atomic API
calls, this #ifdef can be removed and the function can then still be
used to assign Primary planes for non-atomic use cases.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
|
|
|
|
|
|
| |
NB: No functional changes
Signed-off-by: Chris Michael <cp.michael@samsung.com>
|
|
|
|
|
|
|
|
|
|
| |
This commit fills in various output 'state' structures during creation
so that those state structures can be reused for pageflip handling
even if Atomic support is not enabled.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
|
|
|
|
|
|
|
|
|
|
|
| |
This commit enables the ability to fill our state structures even if
atomic support is not enabled. This will allow us to reuse those state
structures for dealing with pageflip in both the atomic & non-atomic
use cases.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
|
|
|
|
|
|
|
|
|
|
| |
As there is nothing 'atomic' specific in these structures, we can move
them outside the atomic ifdef and make use of them for handling
pageflip for both atomic and non-atomic use cases.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
|
|
|
|
|
|
| |
NB: No functional changes
Signed-off-by: Chris Michael <cp.michael@samsung.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There have been cases where the logic of _event_callback_call break'ed
too early in the event submission.
Reason for that was the line ((const unsigned char *) desc -
(const unsigned char *) it->desc) producing a overflow.
This means the if statement
if (!legacy_compare &&
((const unsigned char *) desc - (const unsigned char *) it->desc) < 0)
was true while the pointer desc was smaller than it->desc, which means
the event subscription got aborted, even if it should not.
This turned out on two 32 bit maschines. And led to not rendering apps
anymore.
It was introduced by commit in 605fec91ee7.
@fix
|
| |
|
| |
|
| |
|