path: root/src/lib/ecore_drm2 (follow)
AgeCommit message (Collapse)Author
2017-09-19ecore-drm2: Minor formatting fixChris Michael
NB: No functional changes Signed-off-by: Chris Michael <>
2017-09-05ecore_drm2: Better handling of blank time checksDerek Foreman
On some systems we'll successfully complete the vblank ioctl but get a reply of 0. When that happens we can't use that time for ticking as it will break all of the entire world. Fixes immediate screen blank on rpi3. @ref T5977
2017-08-24ecore-drm2: Add API to allow setting pointer acceleration profileChris Michael
Small patch to allow setting pointer acceleration profile (for wayland) from within Enlightenment. ref T4736 @feature Signed-off-by: Chris Michael <>
2017-08-24ecore-drm2: Add API function to allow setting pointer acceleration speedChris Michael
Small patch to add a new API function which can be called from Enlightenment in order to allow setting pointer acceleration speed. ref T4736 @feature Signed-off-by: Chris Michael <>
2017-08-11ecore_drm2: Add query for pending pageflipDerek Foreman
We've been tracking this in ecore_evas, but ecore_evas isn't the only caller, and it doesn't know about flips initiated by the evas engines.
2017-08-09ecore_drm2: Remove ecore_drm2_output_resolution_get()Derek Foreman
No local callers. Superseded by ecore_drm2_output_info_get()
2017-08-09ecore_drm2: Remove ecore_drm2_output_crtc_size_get()Derek Foreman
Replaced with ecore_drm2_output_info_get()
2017-08-09ecore_drm2: Remove ecore_drm2_output_geometry_get()Derek Foreman
Replaced with ecore_drm2_output_info_get()
2017-08-09ecore_drm2: Add ecore_drm2_output_info_getDerek Foreman
We've got too many ways to query output information, so let's add more. (this will soon replace all of them)
2017-08-09ecore_drm2: Remove useless safety checksDerek Foreman
Now that the device is opened and found in one operation it's impossible to have fd == -1, so we can stop testing for it.
2017-08-09ecore_drm2: Merge ecore_drm2_device_free and _closeDerek Foreman
There's no reason to have them be separate, all callers must do them back to back, so let's just combine them.
2017-08-09ecore_drm2: Merge ecore_drm2_device_find and ecore_drm2_device_openDerek Foreman
There's never a reason to find a device and not open it, so all callers end up calling these two functions back to back.
2017-08-09ecore_drm2: Remove connector bitfieldDerek Foreman
This is unreliable - there's no reason to expect these connector ids will be low enough to sensibly store in a bit field.
2017-08-09ecore_drm2: remove unused crtc bitfieldDerek Foreman
We'll need something like this when multi-head works, but it can't be implemented this way anyway. There's no guarantee that crtc ids will be low enough to fit sensibly in a bitfield.
2017-08-09ecore_drm2: Pass Ecore_Drm2_Device instead of fd to most functionsDerek Foreman
Intended to simplify the upcoming commit that merges device find and device open into a single function that returns a device. The fd is something callers shouldn't really need to get their hands on, right now there are still a few places where it's needed, but those will be gone soon too.
2017-08-04ecore_drm2: Fix linker problemsDerek Foreman
Accidentally used functions in the library directly instead of through the sym_* dlsym looked-up variants. Why this only caused problems in some installations may still be worth investigating - we may be pulling in libdrm at link time from some other library?
2017-07-31ecore_drm2: Stop making dumb fbs and mmapping for gbm fdsDerek Foreman
We were doing this so E could do screenshots in a hackish way, E has been fixed so this hack here no longer needs to live.
2017-07-31ecore_drm2: Remove dead code in blank time getDerek Foreman
When I added the fallback block I left an if statement that could never evaluate to true. Remove it.
2017-07-30ecore_drm2 - fix startup if edid blob is null.. assume all 0'sCarsten Haitzler (Rasterman)
this causes a crash when no edid is available. survive and dont crash. this causes e wayland to not work at all on my baytrail laptop. @fix
2017-07-28ecore_drm2: Add a fallback method for vblank waitingDerek Foreman
We can't depend on vblank waits being implemented by the driver, but we can count on page flips functioning, so add a fallback that does a page flip and waits for it.
2017-07-28ecore_drm2: Allow picking a sequence number for blanktime_getDerek Foreman
This lets us do a blocking wait for a vsync. Something we should try to do as infrequently as possible, but in some cases we need it one time at startup to catch graphics driver bugs.
2017-07-21ecore_drm2: Ensure device we find can mode setDerek Foreman
Some systems have dri devices that can't mode set, and if they're first in the directory they'll get picked by our code and things fall apart later. So, open the potential device and ensure it has basic functionality before selecting it. This is a little inefficient as it gets the device via elput twice before it can be used - this will be addressed later as the changes are a little more invasive to optimize.
2017-07-21ecore_drm2: Open elput manager before drm deviceDerek Foreman
We're going to need to access the device as part of the find process, so we need a manager.
2017-07-13ecore_drm2: Add a query for the next vblank timeDerek Foreman
I guess this is a feature, and we're deep in freeze, but: a) this is critical for fixing T5462 properly without any side effects. b) ecore_drm2 is all beta api c) this should only affect wayland users ref T5462
2017-06-30ecore_drm2: fix scanout_on callback firing too oftenDerek Foreman
We need to increase the on scanout count for a buffer only when the plane it's on makes its transition from pending to visible. Previously it was firing for every refresh which would break refcounting for any plane using surface that didn't change every frame.
2017-06-23ecore_drm2: Add scanout status callbacksDerek Foreman
This generates callbacks when a fb becomes scanned out on a hardware plane or when it no longer is.
2017-06-23ecore_drm2: Add callbacks for plane assign/releaseDerek Foreman
E will need these to gate wayland buffer releases.
2017-06-23ecore_drm2: Add Fb deleted eventDerek Foreman
2017-06-23ecore_drm2: Track number of times an fb is on scanoutDerek Foreman
The same fb can be placed in multiple hardware planes, we need to keep track of the number of planes it's on at any time so we can send events to a compositor in a later commit.
2017-06-23ecore_drm2: Track whether an Ecore_Drm2_Plane has ever been on scanoutDerek Foreman
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-06-23ecore_drm2: Remove obsolete per output fb callback apiDerek Foreman
It's all beta API so I can throw this away now that there are no in-tree users anymore.
2017-06-23ecore_drm2: Stop using the old per output release callbacksDerek Foreman
2017-06-23ecore_drm2: Update buffer release mechanism to send new status informationDerek Foreman
Begin moving internals over to the new per fb status updates.
2017-06-23ecore_drm2: Add ecore_drm2_fb_status_handler_setDerek Foreman
The old per output release handler is no longer complicated enough. In the near future we'll need to be able to tell an engine that its fb has been placed on scanout via hardware plane, or removed from a hardware plane. It's simpler to provide that information as well as release information through a single callback.
2017-06-16ecore-drm2: add ecore_drm2_output_subpixel_get()Mike Blumenkrantz
2017-06-09ecore-drm2: Remove #ifdef HAVE_ATOMIC_DRMChris Michael
As we now use static_libs/libdrm for compiling ecore-drm2, we can remove the atomic #ifdefs as we can run-time check this now. Signed-off-by: Chris Michael <>
2017-06-09ecore-drm2: Fix drm_mode variables to work with static libChris Michael
As we now use static_libs/libdrm to build ecore_drm2, we need to fix how our drm_mode variables are declared so we can use them. @fix Signed-off-by: Chris Michael <>
2017-06-09ecore-drm2: Use static libdrm to build ecore-drm2Chris Michael
As we will now use static_libs/libdrm to build ecore_drm2, we no longer need to include the copied code from the libdrm headers so remove all of the copied code from our source files. @fix Signed-off-by: Chris Michael <>
2017-06-09ecore-drm2: Group API functions within their doxy groupChris Michael
NB: No functional changes Signed-off-by: Chris Michael <>
2017-06-08ecore-drm2: Fix potential SIGFPE when adding output modeChris Michael
If we receive bad crtc info from libdrm, then we could end up with a SIGFPE here due to division by zero if info h/v total are not set. @fix Signed-off-by: Chris Michael <>
2017-06-08ecore-drm2: Add API function to set pointer rotationChris Michael
This patch adds a new API function which can be used to swap x & y pointer axis and invert them according to rotation angle. Mouse input events occur according to canvas coordinates so this can be used when a canvas is rotated. @feature Signed-off-by: Chris Michael <>
2017-06-06ecore-drm2: Don't use Atomic functions to set DPMS levelsChris Michael
This was initially an experiment in trying to use Atomic properties to set dpms on/off, however it does not turn off backlight support when triggered so it is useless. Fixes T5462 @fix Signed-off-by: Chris Michael <>
2017-06-06ecore-drm2: Fix output backlight value type definitionsChris Michael
When we go to set output backlight level we use doubles, so lets just store these values as doubles in the structure. @fix Signed-off-by: Chris Michael <>
2017-06-06ecore-drm2: Add internal functions to get backlight valuesChris Michael
Small patch to add an internal function which can be used to retrieve backlight values on output creation. Signed-off-by: Chris Michael <>
2017-06-05ecore_drm2: Fix error handling in _output_dpms_atomic_setDerek Foreman
This was skipping the error path on failure and setting some state as if it was successful. Then the next attempt at a page flip was actually setting this state. So _output_dpms_atomic_set (which has always been broken) wasn't actually the function that successfully disabled dpms. This is confounding attempts to debug why dpms isn't coming back on properly. Now it won't turn *off* either, because it really never should have. Ref T5462
2017-06-02ecore_drm2: Don't try to disable all devices when session deactivatesDerek Foreman
We get this callback after we've lost the drm device to logind, so deactivating stuff here will just generate a lot of ERR messages and break our internal book-keeping. Instead, we just turn on DPMS on session activation instead of trying to go through the output enable path (that will bail if it's already enabled) This could potentially result in a display that's enabled and DPMS off being switched back on during session activation - if that's a real problem we can restore the previous dpms state instead... @fix T5483
2017-06-02ecore_drm2: Fix dpms shutdown while disabling outputsDerek Foreman
We need to set output->enabled to disabled *after* dpms takes place or set it to enabled *before* dpms takes place. We can't just set it at the start of the function or one of enable/disable will hit the dpms path with a disabled display.
2017-06-02ecore_drm2: Properly release buffers on output disableDerek Foreman
Give back all buffers, and do it through the release mechanism that can fire a callback into the engine. Previously we just leaked one and left the rest.