From bbd18510d690cfc02c20e36850a0aea75fd4e4a0 Mon Sep 17 00:00:00 2001 From: Chris Michael Date: Fri, 9 Jun 2017 14:20:05 -0400 Subject: [PATCH] ecore-drm2: Remove #ifdef HAVE_ATOMIC_DRM 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 --- src/lib/ecore_drm2/ecore_drm2.c | 4 -- src/lib/ecore_drm2/ecore_drm2_device.c | 10 ++--- src/lib/ecore_drm2/ecore_drm2_fb.c | 57 +++++++++++++------------ src/lib/ecore_drm2/ecore_drm2_outputs.c | 16 ------- src/lib/ecore_drm2/ecore_drm2_private.h | 4 -- 5 files changed, 33 insertions(+), 58 deletions(-) diff --git a/src/lib/ecore_drm2/ecore_drm2.c b/src/lib/ecore_drm2/ecore_drm2.c index 48d2d2ffc7..a43b11366a 100644 --- a/src/lib/ecore_drm2/ecore_drm2.c +++ b/src/lib/ecore_drm2/ecore_drm2.c @@ -17,14 +17,12 @@ int (*sym_drmIoctl)(int fd, unsigned long request, void *arg) = NULL; void *(*sym_drmModeObjectGetProperties)(int fd, uint32_t object_id, uint32_t object_type) = NULL; void (*sym_drmModeFreeObjectProperties)(drmModeObjectPropertiesPtr ptr) = NULL; int (*sym_drmModeCreatePropertyBlob)(int fd, const void *data, size_t size, uint32_t *id) = NULL; -# ifdef HAVE_ATOMIC_DRM void *(*sym_drmModeAtomicAlloc)(void) = NULL; void (*sym_drmModeAtomicFree)(drmModeAtomicReqPtr req) = NULL; int (*sym_drmModeAtomicAddProperty)(drmModeAtomicReqPtr req, uint32_t object_id, uint32_t property_id, uint64_t value) = NULL; int (*sym_drmModeAtomicCommit)(int fd, drmModeAtomicReqPtr req, uint32_t flags, void *user_data) = NULL; void (*sym_drmModeAtomicSetCursor)(drmModeAtomicReqPtr req, int cursor) = NULL; int (*sym_drmModeAtomicMerge)(drmModeAtomicReqPtr base, drmModeAtomicReqPtr augment); -# endif void *(*sym_drmModeGetEncoder)(int fd, uint32_t encoder_id) = NULL; void (*sym_drmModeFreeEncoder)(drmModeEncoderPtr ptr) = NULL; void *(*sym_drmModeGetCrtc)(int fd, uint32_t crtcId) = NULL; @@ -96,14 +94,12 @@ _ecore_drm2_link(void) SYM(drm_lib, drmModeObjectGetProperties); SYM(drm_lib, drmModeFreeObjectProperties); SYM(drm_lib, drmModeCreatePropertyBlob); -#ifdef HAVE_ATOMIC_DRM SYM(drm_lib, drmModeAtomicAlloc); SYM(drm_lib, drmModeAtomicFree); SYM(drm_lib, drmModeAtomicAddProperty); SYM(drm_lib, drmModeAtomicCommit); SYM(drm_lib, drmModeAtomicSetCursor); SYM(drm_lib, drmModeAtomicMerge); -#endif SYM(drm_lib, drmModeGetEncoder); SYM(drm_lib, drmModeFreeEncoder); SYM(drm_lib, drmModeGetCrtc); diff --git a/src/lib/ecore_drm2/ecore_drm2_device.c b/src/lib/ecore_drm2/ecore_drm2_device.c index 9cc8c37046..bc3eca0d0d 100644 --- a/src/lib/ecore_drm2/ecore_drm2_device.c +++ b/src/lib/ecore_drm2/ecore_drm2_device.c @@ -4,9 +4,7 @@ # define DRM_CAP_DUMB_PREFER_SHADOW 0x4 #endif -#ifdef HAVE_ATOMIC_DRM -# include -#endif +#include Eina_Bool _ecore_drm2_use_atomic = EINA_TRUE; @@ -143,7 +141,6 @@ out: return ret; } -#ifdef HAVE_ATOMIC_DRM # if 0 static Eina_Bool _drm2_atomic_usable(int fd) @@ -187,7 +184,6 @@ _drm2_atomic_usable(int fd) return ret; } # endif -#endif static void _drm2_atomic_state_crtc_fill(Ecore_Drm2_Crtc_State *cstate, int fd) @@ -614,15 +610,15 @@ ecore_drm2_device_open(Ecore_Drm2_Device *device) DBG("Device Path: %s", device->path); DBG("Device Fd: %d", device->fd); -#ifdef HAVE_ATOMIC_DRM # if 0 /* check that this system can do atomic */ _ecore_drm2_use_atomic = _drm2_atomic_usable(device->fd); # endif + if (getenv("ECORE_DRM2_ATOMIC_DISABLE")) _ecore_drm2_use_atomic = EINA_FALSE; + if (_ecore_drm2_use_atomic) -#endif { if (sym_drmSetClientCap(device->fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1) < 0) diff --git a/src/lib/ecore_drm2/ecore_drm2_fb.c b/src/lib/ecore_drm2/ecore_drm2_fb.c index c6683f4d3d..56b397ece8 100644 --- a/src/lib/ecore_drm2/ecore_drm2_fb.c +++ b/src/lib/ecore_drm2/ecore_drm2_fb.c @@ -248,11 +248,12 @@ _ecore_drm2_fb_buffer_release(Ecore_Drm2_Output *output, Ecore_Drm2_Output_State if (output->release_cb) output->release_cb(output->release_data, s->fb); _ecore_drm2_fb_deref(s->fb); s->fb = NULL; -#ifdef HAVE_ATOMIC_DRM - if (s->atomic_req) - sym_drmModeAtomicFree(s->atomic_req); - s->atomic_req = NULL; -#endif + if (_ecore_drm2_use_atomic) + { + if (s->atomic_req) + sym_drmModeAtomicFree(s->atomic_req); + s->atomic_req = NULL; + } } EAPI Eina_Bool @@ -268,21 +269,22 @@ ecore_drm2_fb_flip_complete(Ecore_Drm2_Output *output) output->current.fb = output->pending.fb; output->pending.fb = NULL; -#ifdef HAVE_ATOMIC_DRM - Eina_List *l, *ll; - Ecore_Drm2_Plane *plane; - - output->current.atomic_req = output->pending.atomic_req; - output->pending.atomic_req = NULL; - - EINA_LIST_FOREACH_SAFE(output->planes, l, ll, plane) + if (_ecore_drm2_use_atomic) { - if (!plane->dead) continue; - output->planes = eina_list_remove_list(output->planes, l); - free(plane); + Eina_List *l, *ll; + Ecore_Drm2_Plane *plane; + + output->current.atomic_req = output->pending.atomic_req; + output->pending.atomic_req = NULL; + + EINA_LIST_FOREACH_SAFE(output->planes, l, ll, plane) + { + if (!plane->dead) continue; + output->planes = eina_list_remove_list(output->planes, l); + free(plane); + } } -#endif EINA_LIST_FREE(output->fbs, fb) _ecore_drm2_fb_deref(fb); output->fbs = NULL; @@ -293,7 +295,6 @@ ecore_drm2_fb_flip_complete(Ecore_Drm2_Output *output) Eina_Bool _fb_atomic_flip_test(Ecore_Drm2_Output *output) { -#ifdef HAVE_ATOMIC_DRM int ret = 0; Eina_List *l; Ecore_Drm2_Crtc_State *cstate; @@ -303,6 +304,8 @@ _fb_atomic_flip_test(Ecore_Drm2_Output *output) uint32_t flags = DRM_MODE_ATOMIC_NONBLOCK | DRM_MODE_ATOMIC_ALLOW_MODESET | DRM_MODE_ATOMIC_TEST_ONLY; + if (!_ecore_drm2_use_atomic) return EINA_FALSE; + req = sym_drmModeAtomicAlloc(); if (!req) return EINA_FALSE; @@ -401,7 +404,6 @@ _fb_atomic_flip_test(Ecore_Drm2_Output *output) err: DBG("Failed Atomic Test: %m"); sym_drmModeAtomicFree(req); -#endif return EINA_FALSE; } @@ -409,12 +411,13 @@ err: static int _fb_atomic_flip(Ecore_Drm2_Output *output) { -#ifdef HAVE_ATOMIC_DRM int res = 0; uint32_t flags = DRM_MODE_ATOMIC_NONBLOCK | DRM_MODE_PAGE_FLIP_EVENT | DRM_MODE_ATOMIC_ALLOW_MODESET; + if (!_ecore_drm2_use_atomic) return -1; + /* If we have no req yet, we're flipping to current state. * rebuild the current state in the prep state */ if (!output->prep.atomic_req) _fb_atomic_flip_test(output); @@ -433,9 +436,6 @@ _fb_atomic_flip(Ecore_Drm2_Output *output) } return 0; -#endif - - return -1; } static int @@ -578,10 +578,13 @@ ecore_drm2_fb_flip(Ecore_Drm2_Fb *fb, Ecore_Drm2_Output *output) } output->pending.fb = output->prep.fb; output->prep.fb = NULL; -#ifdef HAVE_ATOMIC_DRM - output->pending.atomic_req = output->prep.atomic_req; - output->prep.atomic_req = NULL; -#endif + + if (_ecore_drm2_use_atomic) + { + output->pending.atomic_req = output->prep.atomic_req; + output->prep.atomic_req = NULL; + } + return 0; } diff --git a/src/lib/ecore_drm2/ecore_drm2_outputs.c b/src/lib/ecore_drm2/ecore_drm2_outputs.c index e760c02d74..89a6767133 100644 --- a/src/lib/ecore_drm2/ecore_drm2_outputs.c +++ b/src/lib/ecore_drm2/ecore_drm2_outputs.c @@ -193,7 +193,6 @@ _output_edid_parse(Ecore_Drm2_Output *output, const uint8_t *data, size_t len) return 0; } -//#ifdef HAVE_ATOMIC_DRM static void _output_edid_atomic_find(Ecore_Drm2_Output *output) { @@ -213,7 +212,6 @@ _output_edid_atomic_find(Ecore_Drm2_Output *output) eina_stringshare_replace(&output->serial, output->edid.serial); } } -//#endif static void _output_edid_find(Ecore_Drm2_Output *output, const drmModeConnector *conn) @@ -576,7 +574,6 @@ _output_matrix_update(Ecore_Drm2_Output *output) eina_matrix4_inverse(&output->inverse, &output->matrix); } -//#ifdef HAVE_ATOMIC_DRM static Ecore_Drm2_Crtc_State * _atomic_state_crtc_duplicate(Ecore_Drm2_Crtc_State *state) { @@ -673,7 +670,6 @@ _output_plane_states_get(Ecore_Drm2_Atomic_State *state, unsigned int crtc_id, i return states; } -//#endif static Eina_Bool _output_create(Ecore_Drm2_Device *dev, const drmModeRes *res, const drmModeConnector *conn, int x, int y, int *w, Eina_Bool cloned) @@ -756,11 +752,9 @@ _output_create(Ecore_Drm2_Device *dev, const drmModeRes *res, const drmModeConne _output_modes_create(dev, output, conn); -#ifdef HAVE_ATOMIC_DRM if (_ecore_drm2_use_atomic) _output_edid_atomic_find(output); else -#endif _output_edid_find(output, conn); if (output->connected) output->enabled = EINA_TRUE; @@ -887,13 +881,11 @@ _output_destroy(Ecore_Drm2_Device *dev, Ecore_Drm2_Output *output) Ecore_Drm2_Plane *plane; Ecore_Drm2_Plane_State *pstate; -#ifdef HAVE_ATOMIC_DRM if (_ecore_drm2_use_atomic) { if (output->prep.atomic_req) sym_drmModeAtomicFree(output->prep.atomic_req); } -#endif if (_ecore_drm2_use_atomic) { @@ -1055,11 +1047,9 @@ ecore_drm2_output_edid_get(Ecore_Drm2_Output *output) EINA_SAFETY_ON_NULL_RETURN_VAL(output, NULL); -#ifdef HAVE_ATOMIC_DRM if (_ecore_drm2_use_atomic) blob = output->conn_state->edid.data; else -#endif { EINA_SAFETY_ON_NULL_RETURN_VAL(output->edid.blob, NULL); blob = output->edid.blob; @@ -1266,7 +1256,6 @@ ecore_drm2_output_mode_info_get(Ecore_Drm2_Output_Mode *mode, int *w, int *h, un if (flags) *flags = mode->flags; } -#ifdef HAVE_ATOMIC_DRM static Eina_Bool _output_mode_atomic_set(Ecore_Drm2_Output *output, Ecore_Drm2_Output_Mode *mode) { @@ -1337,7 +1326,6 @@ err: sym_drmModeAtomicFree(req); return ret; } -#endif EAPI Eina_Bool ecore_drm2_output_mode_set(Ecore_Drm2_Output *output, Ecore_Drm2_Output_Mode *mode, int x, int y) @@ -1351,11 +1339,9 @@ ecore_drm2_output_mode_set(Ecore_Drm2_Output *output, Ecore_Drm2_Output_Mode *mo output->y = y; output->current_mode = mode; -#ifdef HAVE_ATOMIC_DRM if (_ecore_drm2_use_atomic) ret = _output_mode_atomic_set(output, mode); else -#endif { if (mode) { @@ -1553,7 +1539,6 @@ ecore_drm2_output_rotation_set(Ecore_Drm2_Output *output, int rotation) EINA_SAFETY_ON_NULL_RETURN_VAL(output, EINA_FALSE); -#ifdef HAVE_ATOMIC_DRM if (_ecore_drm2_use_atomic) { Eina_List *l; @@ -1596,7 +1581,6 @@ ecore_drm2_output_rotation_set(Ecore_Drm2_Output *output, int rotation) err: sym_drmModeAtomicFree(req); } -#endif return ret; } diff --git a/src/lib/ecore_drm2/ecore_drm2_private.h b/src/lib/ecore_drm2/ecore_drm2_private.h index 55b6fef424..6270b2d7a4 100644 --- a/src/lib/ecore_drm2/ecore_drm2_private.h +++ b/src/lib/ecore_drm2/ecore_drm2_private.h @@ -192,9 +192,7 @@ struct _Ecore_Drm2_Output_Mode typedef struct _Ecore_Drm2_Output_State { Ecore_Drm2_Fb *fb; -# ifdef HAVE_ATOMIC_DRM drmModeAtomicReq *atomic_req; -# endif } Ecore_Drm2_Output_State; struct _Ecore_Drm2_Output @@ -314,14 +312,12 @@ extern int (*sym_drmIoctl)(int fd, unsigned long request, void *arg); extern void *(*sym_drmModeObjectGetProperties)(int fd, uint32_t object_id, uint32_t object_type); extern void (*sym_drmModeFreeObjectProperties)(drmModeObjectPropertiesPtr ptr); extern int (*sym_drmModeCreatePropertyBlob)(int fd, const void *data, size_t size, uint32_t *id); -# ifdef HAVE_ATOMIC_DRM extern void *(*sym_drmModeAtomicAlloc)(void); extern void (*sym_drmModeAtomicFree)(drmModeAtomicReqPtr req); extern int (*sym_drmModeAtomicAddProperty)(drmModeAtomicReqPtr req, uint32_t object_id, uint32_t property_id, uint64_t value); extern int (*sym_drmModeAtomicCommit)(int fd, drmModeAtomicReqPtr req, uint32_t flags, void *user_data); extern void (*sym_drmModeAtomicSetCursor)(drmModeAtomicReqPtr req, int cursor); extern int (*sym_drmModeAtomicMerge)(drmModeAtomicReqPtr base, drmModeAtomicReqPtr augment); -# endif extern void *(*sym_drmModeGetEncoder)(int fd, uint32_t encoder_id); extern void (*sym_drmModeFreeEncoder)(drmModeEncoderPtr ptr); extern void *(*sym_drmModeGetCrtc)(int fd, uint32_t crtcId);