path: root/src/lib/ecore_drm2/ecore_drm2_plane.c (follow)
AgeCommit message (Collapse)Author
2019-03-22ecore-drm2: Update plane state values based on FBChristopher Michael
Summary: When we are trying to set an FB onto a plane, we need to update the plane state values to reflect any changes in the FB. Failure to do this will result in Atomic Commit failures as the plane state values will not match what the FB is. ref T7690 @fix Depends on D8110 Reviewers: raster, cedric, zmike Reviewed By: cedric Subscribers: cedric Tags: #efl, #do_not_merge Maniphest Tasks: T7690 Differential Revision:
2018-06-26ecore_drm2: Fix failure to properly set up new planeDerek Foreman
Summary: When we add a plane we need to add it to the list before doing the atomic test to ensure we're testing new state that includes the plane, and to ensure the next screen update includes the plane we just added. Fix T7066 Reviewers: devilhorns Subscribers: cedric, #committers, zmike Tags: #efl Maniphest Tasks: T7066 Differential Revision:
2017-06-23ecore_drm2: Add callbacks for plane assign/releaseDerek Foreman
E will need these to gate wayland buffer releases.
2017-06-23ecore_drm2: Move fb from plane state struct to plane structDerek Foreman
The plane state struct needs the fb id for drm updates, and the plane state can be updated even if it's pointed to by a dead plane. Dead planes need to keep their fb so we can properly handle the fb lifetime.
2017-06-23ecore_drm2: Don't clear plane fb on releaseDerek Foreman
We'll need this later for post-page flip bookkeeping, and nothing will notice that it's not cleared now anyway.
2017-05-30ecore-drm2: Minor formatting fixChris Michael
NB: No functional changes Signed-off-by: Chris Michael <>
2017-05-12ecore_drm2: refcount fbsDerek Foreman
Removes the previous "busy" flag, as now we might have an fb attached to multiple outputs at once, and need to be careful to destroy them only after they've been removed from all outputs. Removed the old "busy_set" API which nothing used, and renames fb_destroy to fb_discard to make it more clear that it's not immediately destroyed. It's all beta api, so I can do this.
2017-05-09ecore-drm2: Add start of refcounting for FB objectsChris Michael
Small patch which starts to implement refcounting on framebuffer objects. This will be needed so that we do not free FB objects while they are on the screen. Signed-off-by: Chris Michael <>
2017-05-05ecore_drm2: Add checks for using a plane after deathDerek Foreman
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.
2017-05-05ecore_drm2: Replace plane state release flag with plane dead flagDerek Foreman
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.
2017-05-05ecore_drm2: Call flip test in plane releaseDerek Foreman
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.
2017-05-05ecore_drm2: Require x and y value in plane assignDerek Foreman
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.
2017-05-05ecore-drm2: Add 'release' flag for planesChris Michael
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 <>
2017-05-05ecore-drm2: Don't remove plane from output list on releaseChris Michael
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 <>
2017-05-05ecore-drm2: Don't assign plane to output list if test failsChris Michael
There is little point in assigning a plane to the output list if the atomic flip test fails. Signed-off-by: Chris Michael <>
2017-05-05ecore_drm2: Use stricter cursor plane size checkDerek Foreman
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.
2017-05-05ecore_drm2: Add API to update the fb for a planeDerek Foreman
2017-05-05ecore_drm2: Rebuild atomic state from plane_destination_setDerek Foreman
Call a test commit to rebuild the atomic_req
2017-05-05ecore_drm2: Perform test flip during plane assignmentDerek Foreman
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.
2017-05-05ecore_drm2: Add ecore_drm2_plane_release to release planesDerek Foreman
Opposite of plane assign.
2017-05-05ecore_drm2: Store output in plane structureDerek Foreman
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.
2017-05-05ecore_drm2: Remove next, current, pending from plane stateDerek Foreman
These will be output state eventually
2017-05-05ecore_drm2: Assign planes in ecore_drm2_plane_assignDerek Foreman
Don't just test, allocate the resource, and then prevent further assignments from trying to use it as well.
2017-05-05ecore-drm2: Remove #ifdef for HAVE_ATOMIC in plane_assign functionChris Michael
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 <>
2017-04-18ecore-drm2: Add fields to plane structure for current, next, pendingChris Michael
FBOs Signed-off-by: Chris Michael <>
2017-04-18ecore-drm2: Add API function to set plane destinationChris Michael
When we do an atomic commit, we need to know where to place a given plane (in the case of overlays) in relation to the CRTC, so provide an API function that can be used for that purpose. @feature Signed-off-by: Chris Michael <>
2017-04-18ecore-drm2: Store plane src values on assignChris Michael
As we will need the plane state source values when we do an atomic commit, we can store them when plane_assign is called as we already have the FBO available. Signed-off-by: Chris Michael <>
2017-04-18ecore-drm2: Add hardware plane functionsChris Michael
This patch adds a new file where we can store any additional functions we may need to work with hardware planes. Currently the file contains a public function that can be used to assign a given Ecore_Drm2_Fb to a hardware plane @feature Signed-off-by: Chris Michael <>