path: root/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c (follow)
AgeCommit message (Collapse)Author
2020-05-23ecore evas - tick printf debugs - disabled right now so no noiseCarsten Haitzler (Rasterman)
this is here so it can be turned on and off to see what's happening with ticking and tick latency
2020-05-06ecore-evas-drm: Remove useless check for visibilityChristopher Michael
This is already checked above so having a second check here is just silliness
2020-04-28ecore-evas-drm: Fix broken init countChristopher Michael
We should not assume that there is only ever 1 drm ecore_evas here so we need to handle init count properly @fix
2019-08-07ecore evas drm - fix code that forgets to del an fd handlerCarsten Haitzler (Rasterman)
also.. note the badness of the code design mixing a global singleton with a "per struct" set of data like fd handlers for the same devices initted only once but... anyway. it's messy.
2019-08-05ecore evas drm - fix multi-dlopening of lib into symbol spaceCarsten Haitzler (Rasterman)
only load libglapi once... not multiple times by storing static ptr to lib handle. fix CID 1402692
2019-05-22ecore-evas-drm: Check if vblank is supportedChristopher Michael
Small patch to check if the video driver supports drmWaitVBlank. If not, we can fall back to timer based animators and avoid freezing (due to usage of vsync'd animators). @fix
2019-04-30ecore evas drm - make vsync animators a possible ifdefCarsten Haitzler (Rasterman)
this makes it easyeir to swizzle on and off
2019-03-22ecore-evas-drm: Enable rotation to work againChristopher Michael
Summary: This patch removes the ability to do hardware rotation (it's broken anyway), and refactors the _drm_rotation_do function to just use software (ecore_evas & evas) rotation. ref T7690 Depends on D8115 Reviewers: raster, cedric, zmike Subscribers: cedric Tags: #efl, #do_not_merge Maniphest Tasks: T7690 Differential Revision:
2019-01-17ecore-evas-drm: Minor formatting fixChristopher Michael
NB: No functional changes
2019-01-17ecore-evas-drm: Refactor _ecore_evas_new_internalChristopher Michael
This patch does a small refactor of _ecore_evas_new_internal function to separate canvas setup for gl & software. This was done so that when we create a canvas on a per-output bases (multi-output support), the code inside _ecore_evas_new_internal will be cleaner and easier to follow. NB: No real functional changes here until muti-output lands Differential Revision:
2019-01-17ecore-drm2: Pass output as data to drmModePageFlip and drmModeAtomicCommitChristopher Michael
In order to support per-output ticking, the drmModePageFlip and drmModeAtomicCommit functions need to pass the actual Output as data to the pageflip callback so that the pageflip callback function can pass the proper rectangle to ecore_evas_animator_tick Differential Revision:
2018-08-08ee_drm: Fix tick job timestamps for funny GPU clocksDerek Foreman
Summary: The animator timestamps were only getting the offset applied when they came from page flips. The "early tick" logic failed to apply the offset. This likely only changes behaviour on vmware's graphics stack, and only the env var ECORE_EVAS_DRM_GPU_CLOCK_WRONG is set. Reviewers: devilhorns Reviewed By: devilhorns Subscribers: bu5hm4n, cedric, #reviewers, #committers, zmike Tags: #efl Differential Revision:
2018-04-02ecore_evas: refactor logic for creating Ecore_Evas.Cedric Bail
2018-03-23ecore_drm2: Improve early tick logicDerek Foreman
We should only have to actually force a tick if we can't set up the tick job, as the evas changed callback or a following render from the tick job's tick will cause a flip. Should remove a potential for a missed tick near the start of ticking.
2018-03-15ee_drm: prevent extra flipsDerek Foreman
Similarly to commit 8b962d24acf192bd6c22de779c57eac73dd2f4db prevent extra flips in the drm engine. These are potentially more harmful to DRM as they can cause frame drops and missed render opportunities.
2018-02-26ecore evas - drm engine - fix focus set on show to work correctlyCarsten Haitzler (Rasterman)
2018-02-13ecore-evas-drm: Use output viewport in ecore_evas_animator_tick callsChris Michael
@fix Signed-off-by: Chris Michael <>
2017-12-01ecore-evas-drm: Check for XDG_SEAT existenceChris Michael
Small patch to allow specifying a different seat via XDG_SEAT env variable. If no seat name is passed as ecore_evas options, then we would always default to 'seat0'. As this may not be desirable in all situations, allow for an override via XDG_SEAT env var. ref T6455 @fix Signed-off-by: Chris Michael <>
2017-10-11ecore-evas-drm: Reduce code duplicationChris Michael
Minor code cleanup to reduce duplicated function calls. NB: No functional changes Signed-off-by: Chris Michael <>
2017-10-04ecore-evas-drm: Implement support for hardware output rotationsChris Michael
This patch adds support for doing output rotations via hardware. This is implemented inside the Ecore_Evas engine so that it is transparent to the caller of ecore_evas_rotation_set. ref T5999 Signed-off-by: Chris Michael <>
2017-09-19ecore-evas-drm: Implement actual evas engine rotations in drmChris Michael
This patch implements handling of evas output rotation for the ecore_evas drm engine. ref T5999 Signed-off-by: Chris Michael <>
2017-09-19ecore-evas-drm: FormattingChris Michael
NB: No functional changes Signed-off-by: Chris Michael <>
2017-08-11ecore_evas_drm: Tick from the animator registration callbackDerek Foreman
If we're not ticking already when a new animator is started then we have to wait for a vblank to get a tick. That's not great. If we can, use the time of the last vblank to generate an immediate tick to avoid this latency.
2017-08-11ecore_evas_drm: Let ecore_drm2 track pending page flipsDerek Foreman
Since the engines can call the flip functions, we need to protect the ticker from missing those flips. Thus, we let ecore_drm2, which obviously sees all flips, track them.
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: 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: 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-07-29ecore_evas_drm: Only check for gpu time offset if env var setDerek Foreman
Since most systems shouldn't need this, and it's possible that it's causing trouble for some systems, make it off by default. Fix T5806
2017-07-28ecore_evas_drm: Calculate gpu blank time offset once at startupDerek Foreman
So vmware's graphics driver reports the MONOTONIC drm cap, yet uses CLOCK_REALTIME instead. This leaves us with a gigantic offset between the gpu timestamp and the times ecore_time_get() gets from CLOCK_MONOTONIC. Since ticking screws directly with loop time this results in some long distance clock jumping. This commit fixes drm/gl_drm operation under vmware.
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-13ecore_evas_drm: Provide a last_tick_get callbackDerek Foreman
Allow the drm engine to provide a tick timestamp for the previous vblank interval. ref T5462
2017-07-13ecore_evas: Add a function pointer for last_tick_getDerek Foreman
Engines that provide their own tickers may need to be able to provide the time of the last tick even if they weren't sending ticks to EFL at the time. This is a feature added during freeze as it's necessary to resolve a bug. ref T5462
2017-07-13ecore_evas engines: Add some nulls to the func arraysDerek Foreman
Purely cosmetic, but gets the comments back in sync with reality.
2017-07-11ecore_evas_drm: Partially revert "Refuse to start a ticker for a manually ↵Derek Foreman
rendered canvas" BAILing here can break animators permanently, so best to just log the issue and move on (and potentially allow the ticker to wake us from DPMS). ref T5462 Partially reverts a795629e8c9d7a7f444f8ce655eb9e24dce51429
2017-07-10ecore_evas_drm: Refuse to start a ticker for a manually rendered canvasDerek Foreman
With atomic mode setting this has the hilarious side effect of waking up the display from dpms. Attempting to tick when manual render is set is likely a bug, so log an ERR. fix T5462
2017-06-09ecore-evas-drm: Remove borrowed fourcc_code from source fileChris Michael
As we will now use static_libs/libdrm for building ecore_evas_drm, we no longer need to include this bit of borrowed four_cc code from libdrm Signed-off-by: Chris Michael <>
2017-06-02ee drm: null elput device pointer when deleting deviceMike Blumenkrantz
2017-06-02ecore_evas_drm: Send a spurious pageflip when showing a canvasDerek Foreman
This is a quick and harmless hack to make sure we don't come back to a dead compositor on a vc switch. A proper fix will follow eventually, I promise. Really. Would I lie?
2017-05-31drm: Fix build warning (invalid enum type)Jean-Philippe Andre
2017-05-26wayland/drm: create evas_devices and add device pointer to input eventsMike Blumenkrantz
this is still semi-broken if a seat has many pointer-ish type devices since pointer devices in ecore-evas were never correctly implemented to be 1:1 with seat:cursor relationships @feature
2017-05-08ecore_evas: refactor drm backend to use generic render infrastructure.Cedric BAIL
2017-05-05ecore_evas: first step into refactoring drm backend.Cedric Bail
2017-02-13ecore-evas-drm: Fix setting rotation during async renderChris Michael
If we are in async render and a call to rotation_set has been made, then we should delay setting that rotation until rendering is completed. This patch fixes that issue by setting ee->delayed.rotation and handling it during _drm_render_updates @fix Signed-off-by: Chris Michael <>
2017-01-06eina: rename EINA_{FLT,DBL}_CMP to EINA_{FLT,DBL}_EQ.Cedric BAIL
2016-12-20Ecore Evas: Add support to set cursor icon per mouse device.Guilherme Iscaro
Since Ecore Evas now supports multiple mouses new APIs were added in order to be able to set the cursor image to any device.
2016-12-20Ecore Evas: Add API to set/get the pointer position per device.Guilherme Iscaro
Since Ecore Evas now support multiple mouse devices new APIs were added in order to fetch the mouse position.
2016-12-19ecore_evas: remove float comparison warning from DRM backend.Cedric BAIL
2016-11-28Ecore_Evas: Add support for per-seat focus.Guilherme Iscaro