Commit Graph

121 Commits

Author SHA1 Message Date
Derek Foreman aa8d9c1829 ecore_evas: Add a function pointer for last_tick_get
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-13 18:07:42 -05:00
Derek Foreman e69cc0f552 ecore_evas engines: Add some nulls to the func arrays
Purely cosmetic, but gets the comments back in sync with reality.
2017-07-13 18:07:41 -05:00
Derek Foreman d3c10fb1eb ecore_evas_drm: Partially revert "Refuse to start a ticker for a manually 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 a795629e8c
2017-07-11 16:50:23 -05:00
Derek Foreman a795629e8c ecore_evas_drm: Refuse to start a ticker for a manually rendered canvas
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-07-10 16:25:59 -05:00
Chris Michael 53bfe00351 ecore-evas-drm: Remove borrowed fourcc_code from source file
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 <cp.michael@samsung.com>
2017-06-09 13:47:47 -04:00
Mike Blumenkrantz cb18ce4a90 ee drm: null elput device pointer when deleting device 2017-06-02 18:23:42 -04:00
Derek Foreman cc70806497 ecore_evas_drm: Send a spurious pageflip when showing a canvas
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-06-02 15:50:09 -05:00
Jean-Philippe Andre 07da746194 drm: Fix build warning (invalid enum type) 2017-05-31 17:48:26 +09:00
Mike Blumenkrantz ed4e54ebe2 wayland/drm: create evas_devices and add device pointer to input events
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-26 16:27:43 -04:00
Cedric BAIL 3fd01561ae ecore_evas: refactor drm backend to use generic render infrastructure. 2017-05-08 15:01:49 -07:00
Cedric Bail 9129adc993 ecore_evas: first step into refactoring drm backend. 2017-05-05 17:55:06 -07:00
Chris Michael 6aad6d27f2 ecore-evas-drm: Fix setting rotation during async render
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 <cp.michael@samsung.com>
2017-02-13 13:43:21 -05:00
Cedric BAIL 8f1c071d6a eina: rename EINA_{FLT,DBL}_CMP to EINA_{FLT,DBL}_EQ. 2017-01-06 15:58:46 -08:00
Guilherme Iscaro e5acc5604a Ecore Evas: Add support to set cursor icon per mouse device.
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-20 18:34:39 -02:00
Guilherme Iscaro 64986bccac Ecore Evas: Add API to set/get the pointer position per device.
Since Ecore Evas now support multiple mouse devices new APIs were
added in order to fetch the mouse position.
2016-12-20 18:34:39 -02:00
Cedric BAIL ae51b841d9 ecore_evas: remove float comparison warning from DRM backend. 2016-12-19 16:33:46 -08:00
Guilherme Iscaro be609118c6 Ecore_Evas: Add support for per-seat focus. 2016-11-28 13:57:55 -02:00
Chris Michael 8d97b8b204 ecore-evas-drm: Implement ecore_evas_screen_dpi_get for drm canvas
Small patch to implement support for ecore_evas_screen_dpi get on the
drm canvas. This will be used in enlightenment (e_scale) to get the
screen dpi of the compositor canvas when we call e_scale_update.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-11-28 10:09:41 -05:00
Derek Foreman f2fa8f67f5 ecore_evas_drm: Fix render freezes
Missed setting pending to true in one of the paths, this resulted in
an extra pageflip being scheduled too soon and returning EBUSY.

This was more likely to happen on slow systems, and is hopefully the last
remaining cause of render freeze on the RPI3.
2016-11-21 16:23:03 -06:00
Derek Foreman 24608d9950 ecore_evas_drm: Stop errant page from flip handler
This was required due to bugs elsewhere, and could potentially cause
stutters in display.  Now that we don't need it we're better off without.
2016-11-16 14:26:58 -06:00
Derek Foreman 8611aa83bc ecore_evas_drm: Don't do a flip if we know a frame is coming
If the async renderer is running then something's going to trigger a
pageflip naturally, and if we do one now we'll block it.
2016-11-16 14:26:58 -06:00
Chris Michael c58de1ce1d ecore-evas-drm: Fix call to drmHandleEvent
As we don't compile-time link to libdrm anymore, we need to make a
call to ecore_drm2_event_handle in order to process drm events.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-11-15 08:42:07 -05:00
Derek Foreman 20f52cd607 ecore_evas_drm: Fix bugs in pending tracking
This has been dead wrong for a while but only recently became a
showstopper when another bug was fixed that made this one manifest.
2016-11-14 14:30:11 -06:00
Derek Foreman bf7814aca0 ecore_evas_drm: Use timestamp from pageflip event for animator time
Should be more accurate this way.
2016-11-14 14:12:58 -06:00
Cedric BAIL 8215d9832c ecore: introduce adjusting main loop time on animator. 2016-11-14 11:53:01 -08:00
Carsten Haitzler b07cc74107 evas drm engine - fix build if gl not enabled for drm engine build
this fixes the build after a derek b0rk :)
2016-09-09 19:21:53 +09:00
Derek Foreman 0f534dc3bd ecore_evas_drm: Use pageflips, not vblanks, to drive animation
This should sort some timing problems.
2016-09-08 13:55:24 -05:00
Derek Foreman b4cbf860b9 ecore_drm2: Add a page flip completion call
Add a function for ecore_evas_drm to call after a page flip happens so
ecore_drm2 can track busy status for fbs itself (including for the fb
that's currently being flipped to scanout)

Also, call the completion function from ecore_evas_drm
2016-09-08 13:55:24 -05:00
Derek Foreman ce7991b993 ecore_drm2: Implicitly set buffer busy status when flipping
This simplifies other code that shouldn't need to deal with this.
2016-09-08 13:55:23 -05:00
Derek Foreman 794798f559 ee_drm: Move all ticking into ecore_evas_drm and use new tick system
Combines all the gl_drm and drm ticking code into one set in
ecore_evas_drm and uses the new evas tick register/unregister callbacks
to set it up.
2016-09-08 13:55:23 -05:00
Derek Foreman 316ca09b0d ecore_evas_drm: Refactor common code
ecore_evas_gl_drm_new_internal and ecore_Evas_drm_new_internal are huge
functions differing in very few lines.  Combined them.
2016-09-08 13:55:23 -05:00
Derek Foreman 31de16d408 ecore_evas_drm: check for libglapi presence first
Minor refactor
2016-09-08 13:55:23 -05:00
Derek Foreman 398771bf8a evas_engines: Add fn_evas_changed callback
To allow using the pageflip completion event to drive timing in the DRM
engine we need to know as soon as possible that a render has been after
a render has been considered if it will cause a page flip or not.

The fn_evas_changed callback sends this information.
2016-09-08 13:55:23 -05:00
Chris Michael fb569d7eb0 ecore-evas-drm: Re-enable direct input callback
As it seems the jpeg breakage is over wrt direct input callbacks, we
can re-enable these for the drm engines

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-06-13 16:19:46 -04:00
Chris Michael e01ac62e5f ecore-evas-drm: Disable direct input callback
For ecore_evas drm engine(s), disable setting of
ecore_event_window_direct_callback as this Completely Breaks all input
when running Enlightenment Wayland.

NB: This can likely be re-enabled at some point, when the jpeg
breakage is over ;)

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-31 09:49:43 -04:00
Chris Michael 1ca1f8b06d ecore-evas-drm: Register direct input callback for gl_drm also
@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-31 09:23:20 -04:00
Jean-Philippe Andre 5aa00004a5 ecore_evas: Register direct input cb from modules
If the ecore_evas modules were using
ecore_event_window_register() then they can also redirect
everything though the direct callback instead.
2016-05-31 19:03:04 +09:00
Chris Michael 593961c2e2 ecore-evas-drm: Fix issue of mouse pointer not centering on startup
This patch fixes an issue where starting Enlightenment would not
center the mouse pointer. Basically the issue is that we cannot warp
the mouse pointer until After the ee->prop.window has been set else
E will not process the mouse_move event

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-27 11:57:53 -04:00
Mike Blumenkrantz da8bcbc7c6 ecore-drm2: update to latest elput 2016-05-27 11:57:53 -04:00
Chris Michael 93178199a6 ecore-evas: Port ecore_evas drm engine to use Ecore_Drm2 library
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-27 11:57:53 -04:00
Derek Foreman d53e1d6748 ecore_evas_drm: enable pointer warping
Use ecore_drm_device_pointer_warp() to warp the pointer
2016-02-18 15:50:16 -05:00
Cedric BAIL bb1a1eef65 ecore_evas: introduce support for per window animator trigger.
This code is currently only using the older fallback code and not any
new event source, so all animator on all window are still triggered
whatever the case are.
2016-02-02 10:47:25 -08:00
Chris Michael 479bf37aec ecore-evas-drm: Cleanup drm outputs during shutdown
As we no longer cleanup outputs inside the ecore_drm_device_free
function (see previous commit), we should be cleaning up outputs here
as they are created during the _ecore_evas_drm_init function.

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-01-21 09:24:06 -05:00
Derek Foreman 943f2df006 ecore_drm/ecore_wl2: logging: remove errant usage of %m
Summary:
printf %m stringifies and prints errno.  I've tried to remove its use
anywhere that the immediately preceding function might not set errno
or is a complicated function for which knowing errno doesn't really
give any useful information.

I've left a few of the drmMode calls because they're just wrappers
around ioctl, which legitimately sets errno.

@fix

Reviewers: zmike, devilhorns

Reviewed By: zmike, devilhorns

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3572
2016-01-14 13:06:02 -05:00
Chris Michael 85b04c188a ecore-evas-drm: Send fake mouse_move event after registering
This fixes an issue where ecore_drm was sending an initial mouse_move
event too early in the startup process. Instead, we will send the
event from Ecore_Evas after it has been registered with Ecore_Input.
This is done here to address and Fix T2854.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-11-17 15:55:41 -05:00
Mike Blumenkrantz 2a7d4d62db ecore-evas drm: null global device pointer after free
ref T2844

@fix
2015-11-16 14:11:18 -05:00
Chris Michael b8ebd5b356 ecore-evas-gl-drm: Don't create software dumb buffers when using gl
Summary: If we are rendering using gl_drm, then we don't need to be
creating extra software dumb buffers.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-11-04 09:43:35 -05:00
Chris Michael 444926923f ecore-evas-drm: Use GBM_FORMAT_XRGB8888 when creating new canvas
Summary: With linux kernels >= 4.2.x, we need to use
GBM_FORMAT_XRGB8888 when creating a new canvas else we end up with a
format mismatch when trying to add the framebuffer

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-11-02 09:30:19 -05:00
Chris Michael 49442d5615 ecore-evas-gl-drm: Disable async rendering for EGL
Summary: Disable async rendering for EGL engine as EGL is sync only.
This fixes gl_drm engine to work (in my tests) using ecore_evas
example apps.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-10-06 09:39:36 -04:00
Chris Michael 7d6b142ca7 ecore-evas-drm: Default to GBM_FORMAT_ARGB8888
Summary: Seems some platforms (my setup here at least) don't have EGL
configs which suppose GBM_FORMAT_XRGB8888, so default to ARGB

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-06-17 10:19:29 -04:00