path: root/src/lib/ecore_drm2 (follow)
AgeCommit message (Collapse)Author
2020-09-04ecore drm - increase timeout for flips from 0.05 to 2.0 secCarsten Haitzler (Rasterman)
so our timeout is far too agressive. we cant stay hung on buggy devices/drivers though so make the timeout 2s instead of 0.05s so we dont go retrying flips too agressively which causes stuttering @fix
2020-05-27refactor buildMarcel Hollerbach
libraries are split into deps, external deps, and pub deps. Evas engines are refactored to use the predefined engine deps. this is preparation work for efl-one. Reviewed-by: Stefan Schmidt <> Differential Revision:
2020-05-26lib: add more c_args handling for places we missed beforeStefan Schmidt
These meson files did not have the c_args handling before. Make sure we use package_c_args here as well. Reviewed-by: Vincent Torri <> Reviewed-by: João Paulo Taylor Ienczak Zanette <> Differential Revision:
2020-05-15ecore-drm2: Add missing params for doxygenChristopher Michael
2020-05-15ecore-drm2: Add API function to return default depthChristopher Michael
Rather than hard-coding depth & bpp in the evas drm engines, we can use this function to return the default depth & bpp. @feature
2020-05-01ecore-drm2: Add support for using page_flip_handler2Christopher Michael
In our current Ecore_Drm2_Context structure, we are missing support for using page_flip_handler2. This patch adds that ability. This could prove useful when working with ecore_drm2 as it allows page_flip_handler callbacks to setup a handler for page_flip_handler2, which when the callback gets received, passes back the crtc_id which the pageflip occured on. @feature
2020-04-28ecore-drm2: Change _output_crtc_find to accept an intChristopher Michael
There is no reason to be passing the whole device structure here just to get the fd
2020-04-20ecore-drm2: Change ERR to WRNChristopher Michael
No real need for these to be ERR because we are not going to crash if these happen anyway.
2020-04-20doxygen docs: Fix all invalid @param namesXavi Artigas
There were quite a few of these...
2019-11-14ecore-drm2: Fix issue of shifting 1 by more than 32bitsChris Michael
Based on 9ca573f40f1065cc717c0c5aabb787671bab852b, this patch fixes potential undefined behaviour on 64 bit systems. @fix
2019-05-22ecore-drm2: Add API to check if vblank is supportedChristopher Michael
This patch adds a small API that we can use to check if the current video driver supports the usage of drmWaitVBlank. This check is required for certain drivers (like vbox) which do not support drmWaitVBlank and thus are causing our animators in ecore_evas to freeze. We can now use this API from within Ecore_Evas to disable vsync'd animators and fall back to timer based ones. @feature
2019-05-13ecore drm2 - fix warnigns in DBG eina logs for long typesCarsten Haitzler (Rasterman)
on 32bit longs are 32bit so cast appropriately to not have warnings.
2019-04-30ecore drm2 - fix timeout in case case called from threadCarsten Haitzler (Rasterman)
so sw rendering make call ecore drm2 calls from a thread - i didnt know that. so this makes my fix for gl hangs add hangs in sw as a result. this fixes that. not perfect but better. do need refcoutnts on outputs to be perfect... also sometimes the commits fail so retry a few times... this still leaves us wth another hang that is a separate issue. @fix
2019-04-18ecore-drm2: Fix API function parameters for background color setChristopher Michael
Passing int as parameters here is too small for left shifting the colors so make these parameters uint64_t
2019-04-18ecore-drm2: Update printf format to match changed value typeChristopher Michael
Commit 8e0c4d83edd changed the atomic property value type to be uint64_t so we need to update the printf's to reflect that
2019-04-18ecore-drm2: Add API function to set crtc background colorChristopher Michael
This patch adds a new API function we can be called in order to set the crtc background color of a given output. @feature
2019-04-18ecore-drm2: Fill in crtc background color (if supported) during atomicChristopher Michael
commits Small patch to add the crtc background_color property (if supported) to any atomic tests/commits @feature
2019-04-18ecore-drm2: Add background_color to crtc atomic propertiesChristopher Michael
This patch adds a new field to the crtc atomic state which will be used to support crtc background_color property, and also fills in that state during crtc atomic state fill. @feature
2019-04-18ecore-drm2: Make atomic property values support uint64_tChristopher Michael
Some Atomic property values are actually uint64_t, so fix the structure to reflect that. @fix
2019-04-10ecore drm2 - handle possible NULL fb when doing a flipCarsten Haitzler (Rasterman)
2019-04-01ecore-drm2: Add missing @ingroup for some doxyChristopher Michael
Small patch to add missing @ingroup for doxygen comments, and correct one that was in the wrong group @fix
2019-03-22ecore-drm2: Factor in output rotation when getting output infoChristopher Michael
Summary: Enlightenment uses this function to get information about a given output, so we should be accounting for output rotation when returning width/height values. ref T7690 @fix Depends on D8114 Reviewers: raster, cedric, zmike Reviewed By: cedric Subscribers: cedric Tags: #efl, #do_not_merge Maniphest Tasks: T7690 Differential Revision:
2019-03-22ecore-drm2: Add API function to return output rotationChristopher Michael
Summary: Small patch to add an API function which can be used to return a given output's rotation value ref T7690 @feature Depends on D8113 Reviewers: raster, cedric, zmike, stefan_schmidt, bu5hm4n Reviewed By: cedric Subscribers: cedric Tags: #efl, #do_not_merge Maniphest Tasks: T7690 Differential Revision:
2019-03-22ecore-drm2: Set output rotation valueChristopher Michael
Summary: When we call ecore_drm2_output_rotation_set we need to store that value in the Output structure so that it can be checked later when needed. ref T7690 Depends on D8112 Reviewers: raster, cedric, zmike Reviewed By: cedric Subscribers: cedric Tags: #efl, #do_not_merge Maniphest Tasks: T7690 Differential Revision:
2019-03-22ecore-drm2: Disable hardware rotation for outputsChristopher Michael
Summary: Setting output primary plane rotation is broken at the moment, so this commit will disable that for now until this can be investigated ref T7690 Depends on D8111 Reviewers: raster, cedric, zmike Subscribers: cedric Tags: #efl, #do_not_merge Maniphest Tasks: T7690 Differential Revision:
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:
2019-03-22ecore-drm2: Don't use AtomicAddProperty for plane rotationChristopher Michael
Summary: Apparently something has been changed recently in libdrm that causes AtomicAddProperty to fail when trying to set plane rotation. Until this can be found & fixed, let's just disable trying to rotate hardware planes with atomic commits. ref T7690 @fix Reviewers: raster, cedric, zmike Subscribers: zmike, cedric Tags: #efl, #do_not_merge Maniphest Tasks: T7690 Differential Revision:
2019-02-21ecore drm2 - work around kms/drm bug seemingly when no flip event comesCarsten Haitzler (Rasterman)
so we request a flip so we can do vsync events. the flip event never comes. i am not sure why it never comes, but we ask and nothing arrives, and this basically halts all rendering in wayland compositor mode as we are syncing rendering to vsync (of course). put in a timeout of 0.05s (50ms) to try ask again if the event never comes and log the error. this is a pretty useful workaround becauswe having your entire display freeze is a ... bad thing. @fix
2019-02-06ecore-drm2: Minor formatting fixes.Christopher Michael
NB: No functional changes
2019-02-06ecore-drm2: Reduce duplicated codeChristopher Michael
No need for this line to be there twice as it is going to be called in either case. NB: No functional changes
2019-02-06ecore-drm2: Remove useless if checkChristopher Michael
_ecore_drm2_use_atomic is already checked just above this, so there is no need for this if statement
2019-01-31ecore_drm2: Add API to allow settings tap-to-click on pointer deviceMichaël Bouchaud (yoz)
Summary: Add a way to configure pointer device with tap-to-click features. @feature Depends on D7843 Reviewers: devilhorns Reviewed By: devilhorns Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2019-01-28ecore-drm2: Support multiple gpus during vblankChristopher Michael
Summary: When we try to calculate a drm vblank type, we should take into account the output's pipe value which is used to determine if we are using multiple gpus (if so, we need to use the high_crtc_mask. Reviewers: ManMower Reviewed By: ManMower Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2019-01-17ecore-drm2: Fix formattingChristopher Michael
NB: No functional changes
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:
2019-01-02ecore-drm2: Add support for specifying a particular drm cardChristopher Michael
Summary: There are cases where the drm card that we wish to run on is not always the first card (ie: card1, card2, etc). In our previous code, we would always start searching at card0 and if found we would always use that card. This patch allows a card to be specified in the environment that can be searched for and used. For example, if we specify ECORE_DRM2_CARD=card1 than that card will be searched and used if found. This also allows wildcard searches such as ECORE_DRM2_CARD=card[1-9]* which can be used to skip the first card (card0). Reviewers: ManMower Reviewed By: ManMower Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2019-01-02ecore-drm2: Fix drmModeSetCrtc call during fb flipChristopher Michael
drmModeSetCrtc x & y values are actually offsets into the framebuffer memory. As such, we should not be sending output position here. @fix
2019-01-02ecore-drm2: Minor formatting fixesChristopher Michael
NB: No functional changes
2018-10-02here comes mesonMarcel Hollerbach
a new shiny buildtool that currently completes in the total of ~ 4 min.. 1 min. conf time 2:30 min. build time Where autotools takes: 1:50 min. conf time 3:40 min. build time. meson was taken because it went quite good for enlightenment, and is a traction gaining system that is also used by other mayor projects. Additionally, the DSL that is defined my meson makes the configuration of the builds a lot easier to read. Further informations can be gathered from the README.meson Right now, bindings & windows support are missing. It is highly recommented to use meson 0.48 due to optimizations in meson that reduced the time the meson call would need. Co-authored-by: Mike Blumenkrantz <> Differential Revision: Depends on D7011
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:
2018-02-27ecore-drm2: Add API function to retrieve output user dataChris Michael
With the rework of Ecore_Evas drm engine, we need to get the ecore_evas itself in the pageflip callback so we have to reassign output->user_data to the ecore_evas which we can then use to retrieve via this function This is needed as the pageflip callback will pass us the output on which the pageflip completed. @feature Signed-off-by: Chris Michael <>
2018-02-27ecore-drm2: Free stringshare for relative output during output_freeChris Michael
When we destroy a given output, we should be freeing the eina_stringshare for Signed-off-by: Chris Michael <>
2018-02-27ecore-drm2: Add API to get/set which output is relative to anotherChris Michael
In order to know which output we should clone, we need a way to store/retrieve the output which should be cloned. This patch adds a small api we can use in randr config dialog to get/set that value. @feature Signed-off-by: Chris Michael <>
2018-02-20ecore-drm2: Fix typo when comparing output relative modeChris Michael
Signed-off-by: Chris Michael <>
2018-02-20ecore-drm2: Account for output relative mode when getting cloned valueChris Michael
As an output may have it's relative mode set to clone from the E randr dialog, we should account for that also when returning output cloned mode. Signed-off-by: Chris Michael <>
2018-02-13ecore-drm2: Add API functions to get/set output relative modeChris Michael
These API functions will be used inside Enlightenment in order to determine the proper extended screen size based on outputs relative position. @feature Signed-off-by: Chris Michael <>
2018-02-06ecore-drm2: Ensure output changed event is sent for removed outputsChris Michael
If an output gets disconnected, we would still like to be notified of that. In the _outputs_update function, we mark an output as disconnected by setting output->connected and output->enabled to FALSE. With this line in place (in the output_event_send function) we would never get notified if an output was disconnected. @fix Signed-off-by: Chris Michael <>
2018-01-22ecore_drm2: fix seat matching when checking for a device with a null seatChris Michael
Summary: Check to make sure that the seat from the matching device is still null. Test Plan: Make sure that devices are not being rejected while on seat1. This depends on another patch Reviewers: ManMower, devilhorns Reviewed By: devilhorns Subscribers: ManMower, devilhorns, cedric, jpeg Differential Revision:
2018-01-10ecore_drm2: simplify device selection codeDerek Foreman
The platform check was added for systems (like ARM) that don't generally have PCI graphics devices. However, now we pick a fallback device that doesn't have a PCI constraint, so the platform check should no longer be necessary.
2018-01-10ecore_drm2: Allow non-pci DRM devices to be selectedDerek Foreman
Summary: This is a tweak to c264ef264f0936632a1603fef45c59a50369631d for D5712 . chosen_dev in the loop was only being set for DRM devices attached to PCI devices. While this is useful for determining if the device is the preferred boot_vga device, There is no apparent requirement (comparing to Weston) for all DRM devices to be attached to a PCI device. (This is considering USB DisplayLink devices. I am not sure how the parent device tree is with these...) Reviewers: devilhorns, ManMower Reviewed By: devilhorns, ManMower Subscribers: cedric, jpeg, #efl Tags: #efl Differential Revision: