From ad10e954309bb18f7f3eb57dac8ab676a562ce49 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Wed, 1 Jul 2020 19:48:12 +0900 Subject: [PATCH 01/16] log : remove print on stdout Change-Id: I3d697c277a50928ac5b3a769f8f31fee249f0dca --- include/tdm_log.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/include/tdm_log.h b/include/tdm_log.h index 0a9bbf3..67ea4df 100644 --- a/include/tdm_log.h +++ b/include/tdm_log.h @@ -121,9 +121,6 @@ extern unsigned int tdm_log_debug_level; if (tdm_log_debug_level >= TDM_LOG_LEVEL_INFO) { \ struct timespec ts; \ clock_gettime(CLOCK_MONOTONIC, &ts); \ - tdm_log_printf(TDM_LOG_LEVEL_INFO, "[%5d.%06d][%d][%s %d]"fmt, \ - (int)ts.tv_sec, (int)ts.tv_nsec / 1000, \ - (int)syscall(SYS_gettid), __FUNCTION__, __LINE__, ##args); \ tdm_log_print(TDM_LOG_LEVEL_INFO, "[%5d.%06d][%d][%s %d]"fmt, \ (int)ts.tv_sec, (int)ts.tv_nsec / 1000, \ (int)syscall(SYS_gettid), __FUNCTION__, __LINE__, ##args); \ -- 2.7.4 From 39e38fe40536c62bc8ca4033d74442141e830915 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Thu, 2 Jul 2020 11:40:55 +0900 Subject: [PATCH 02/16] package version up to 2.11.0 Change-Id: Iaca15648a348d85d7b4b09edc7e7e44714b22969 --- packaging/libtdm.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/libtdm.spec b/packaging/libtdm.spec index 26b893d..944f09d 100644 --- a/packaging/libtdm.spec +++ b/packaging/libtdm.spec @@ -2,7 +2,7 @@ %define HALTESTS_GCOV 0 Name: libtdm -Version: 2.10.11 +Version: 2.11.0 Release: 0 Summary: User Library of Tizen Display Manager Group: Development/Libraries -- 2.7.4 From 37335f67be48cb35940137d8b8f104e2fec72513 Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Fri, 10 Jul 2020 19:28:47 +0900 Subject: [PATCH 03/16] tdm: fix ordered output setting bug if same type connected output checked, do not set second one. if set the second one, it changes the right sequence. Change-Id: I91ad69fb5c7409e4319314a16ee59f2ab056c4b4 Signed-off-by: Junkyeong Kim --- src/tdm.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/tdm.c b/src/tdm.c index 6375b53..6742bd2 100644 --- a/src/tdm.c +++ b/src/tdm.c @@ -702,18 +702,22 @@ _tdm_display_get_ordered_outputs(tdm_private_module *private_module, int *count) switch (caps.type) { case TDM_OUTPUT_TYPE_DSI: + if (output_dsi != NULL) continue; output_dsi = outputs[i]; index_dsi = i; break; case TDM_OUTPUT_TYPE_LVDS: + if (output_lvds != NULL) continue; output_lvds = outputs[i]; index_lvds = i; break; case TDM_OUTPUT_TYPE_HDMIA: + if (output_hdmia != NULL) continue; output_hdmia = outputs[i]; index_hdmia = i; break; case TDM_OUTPUT_TYPE_HDMIB: + if (output_hdmib != NULL) continue; output_hdmib = outputs[i]; index_hdmib = i; break; -- 2.7.4 From aa67e4ac20fbbfd62a6140f55fbc3e04cfa093b3 Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Fri, 10 Jul 2020 19:31:39 +0900 Subject: [PATCH 04/16] package version up to 2.11.1 Change-Id: Id49f34b679ff8bd13e9e25cc805b3811dee2cf75 Signed-off-by: Junkyeong Kim --- packaging/libtdm.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/libtdm.spec b/packaging/libtdm.spec index 944f09d..8ae63af 100644 --- a/packaging/libtdm.spec +++ b/packaging/libtdm.spec @@ -2,7 +2,7 @@ %define HALTESTS_GCOV 0 Name: libtdm -Version: 2.11.0 +Version: 2.11.1 Release: 0 Summary: User Library of Tizen Display Manager Group: Development/Libraries -- 2.7.4 From d86b422db570900901fefb714a882b623a9553e2 Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Fri, 24 Jul 2020 14:18:42 +0900 Subject: [PATCH 05/16] haltest: init preferred_align_vertical Change-Id: Ic1b1c12b4bd4de23a01f0e72c7f4a348173d8f52 Signed-off-by: Junkyeong Kim --- haltests/src/tc_tdm_backend_pp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/haltests/src/tc_tdm_backend_pp.cpp b/haltests/src/tc_tdm_backend_pp.cpp index 1dd8760..47932ae 100644 --- a/haltests/src/tc_tdm_backend_pp.cpp +++ b/haltests/src/tc_tdm_backend_pp.cpp @@ -83,7 +83,7 @@ TDMBackendPP::TDMBackendPP() capabilities = (tdm_pp_capability)0; formats = NULL; format_count = 0; - min_w = min_h = max_w = max_h = preferred_align = -1; + min_w = min_h = max_w = max_h = preferred_align = preferred_align_vertical = -1; for (int b = 0; b < 3; b++) srcbuf[b] = dstbuf[b] = NULL; -- 2.7.4 From dcefb9ce56a7a4c86272c98cc9fee7f04ef66968 Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Fri, 24 Jul 2020 14:19:15 +0900 Subject: [PATCH 06/16] package version up to 2.11.2 Change-Id: Id0998628a17481627f0db7d7bf2021ea07e411f3 Signed-off-by: Junkyeong Kim --- packaging/libtdm.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/libtdm.spec b/packaging/libtdm.spec index 8ae63af..8f0be6f 100644 --- a/packaging/libtdm.spec +++ b/packaging/libtdm.spec @@ -2,7 +2,7 @@ %define HALTESTS_GCOV 0 Name: libtdm -Version: 2.11.1 +Version: 2.11.2 Release: 0 Summary: User Library of Tizen Display Manager Group: Development/Libraries -- 2.7.4 From 6e73c676768d938c669efbb0a9feebeb101ed722 Mon Sep 17 00:00:00 2001 From: Seunghun Lee Date: Thu, 6 Aug 2020 22:13:46 +0900 Subject: [PATCH 07/16] tdm_common: clarify TDM_TRANSFORM enumaration. An Enumeration for TDM_TRANSFORM was ambiguous because there wasn't description for direction of rotation. Change-Id: Ie3a9dc5fc3eb3c328a57dd880c31cd9aa2df9951 --- include/tdm_common.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/tdm_common.h b/include/tdm_common.h index a661a6d..a3ccede 100644 --- a/include/tdm_common.h +++ b/include/tdm_common.h @@ -78,13 +78,13 @@ typedef enum { */ typedef enum { TDM_TRANSFORM_NORMAL = 0, /**< no transform */ - TDM_TRANSFORM_90 = 1, /**< rotate 90 */ - TDM_TRANSFORM_180 = 2, /**< rotate 180 */ - TDM_TRANSFORM_270 = 3, /**< rotate 270 */ + TDM_TRANSFORM_90 = 1, /**< rotate 90 degrees clockwise */ + TDM_TRANSFORM_180 = 2, /**< rotate 180 degrees clockwise */ + TDM_TRANSFORM_270 = 3, /**< rotate 270 degrees clockwise */ TDM_TRANSFORM_FLIPPED = 4, /**< no rotate and horizontal flip */ - TDM_TRANSFORM_FLIPPED_90 = 5, /**< rotate 90 and horizontal flip */ - TDM_TRANSFORM_FLIPPED_180 = 6, /**< rotate 180 and horizontal flip */ - TDM_TRANSFORM_FLIPPED_270 = 7, /**< rotate 270 and horizontal flip */ + TDM_TRANSFORM_FLIPPED_90 = 5, /**< rotate 90 degrees clockwise and horizontal flip */ + TDM_TRANSFORM_FLIPPED_180 = 6, /**< rotate 180 degrees clockwise and horizontal flip */ + TDM_TRANSFORM_FLIPPED_270 = 7, /**< rotate 270 degrees clockwise and horizontal flip */ } tdm_transform; /** -- 2.7.4 From 134df1cbf9e43ade0cf0ba068ece70ecde951c03 Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Tue, 1 Sep 2020 19:11:03 +0900 Subject: [PATCH 08/16] Revert "tdm_vblank: execute hwc_vblank set and unset when tdm_vblank_enable_global_fps called" This reverts commit d2fa49d3857fe065de1eefcb8afb5acdc69ca346. Change-Id: Ib8afae091f13caef0643cf92f443f0d3e112cf9f Signed-off-by: Junkyeong Kim --- src/tdm_vblank.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/tdm_vblank.c b/src/tdm_vblank.c index fd3d08a..206abf5 100644 --- a/src/tdm_vblank.c +++ b/src/tdm_vblank.c @@ -597,12 +597,6 @@ tdm_vblank_enable_global_fps(unsigned int enable, unsigned int fps) v->check_HW_or_SW = 1; } - - if (enable) - tdm_hwc_set_vblank(fps); - else - tdm_hwc_unset_vblank(); - pthread_mutex_unlock(&valid_list_lock); return TDM_ERROR_NONE; -- 2.7.4 From a382b7796e4e01c61e0a795f0dea103dfa137801 Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Tue, 1 Sep 2020 19:11:42 +0900 Subject: [PATCH 09/16] package version up to 2.11.3 Change-Id: I2c84845eda4af6c581eb4e42023fed47a09bdf34 Signed-off-by: Junkyeong Kim --- packaging/libtdm.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/libtdm.spec b/packaging/libtdm.spec index 8f0be6f..e6cb9f5 100644 --- a/packaging/libtdm.spec +++ b/packaging/libtdm.spec @@ -2,7 +2,7 @@ %define HALTESTS_GCOV 0 Name: libtdm -Version: 2.11.2 +Version: 2.11.3 Release: 0 Summary: User Library of Tizen Display Manager Group: Development/Libraries -- 2.7.4 From cbfded011a9a37e49c043b4b576037af51b561a2 Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Fri, 4 Sep 2020 19:59:20 +0900 Subject: [PATCH 10/16] tdm_config: add TDM_CONFIG_KEY_GENERAL_HWC_COMMIT_USE_GLOBAL_FPS config define 1: when global fps set, use global fps to commit. 0: when global fps set, do not use global fps to commit. Change-Id: I13ad07f4468798bc7085c5104aec6da96b4f3446 Signed-off-by: Junkyeong Kim --- src/tdm_config.h | 5 +++++ src/tdm_vblank.c | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/tdm_config.h b/src/tdm_config.h index 39563a1..f9d43a9 100644 --- a/src/tdm_config.h +++ b/src/tdm_config.h @@ -126,6 +126,11 @@ tdm_config_set_string(const char *key, const char *value); */ #define TDM_CONFIG_KEY_GENERAL_VIRTUAL_OUTPUT_HWC_TARGET_BO_DEFAULT "general:virtual_output_hwc_target_bo_default" +/* use the global fps to commit. [0(disable), 1(enable)] + * default: 0 + * ex) 1 + */ +#define TDM_CONFIG_KEY_GENERAL_HWC_COMMIT_USE_GLOBAL_FPS "general:hwc_commit_use_global_fps" /*** debug keys **************************************************************/ diff --git a/src/tdm_vblank.c b/src/tdm_vblank.c index 206abf5..9526926 100644 --- a/src/tdm_vblank.c +++ b/src/tdm_vblank.c @@ -167,6 +167,7 @@ static struct list_head valid_wait_list; static struct list_head create_handler_list; static unsigned int vblank_list_inited; static unsigned int vblank_global_fps; +static unsigned int hwc_commit_use_global_fps; static double stamp = 0; static void _tdm_vblank_cb_vblank_SW(tdm_private_display *private_display, void *object, tdm_thread_cb_base *cb_base, void *user_data); @@ -597,6 +598,14 @@ tdm_vblank_enable_global_fps(unsigned int enable, unsigned int fps) v->check_HW_or_SW = 1; } + + if (hwc_commit_use_global_fps) { + if (enable) + tdm_hwc_set_vblank(fps); + else + tdm_hwc_unset_vblank(); + } + pthread_mutex_unlock(&valid_list_lock); return TDM_ERROR_NONE; @@ -738,6 +747,8 @@ tdm_vblank_init(tdm_display *dpy) tdm_thread_cb_set_find_func(TDM_THREAD_CB_VBLANK_SW, _tdm_vblank_find_object); tdm_thread_cb_set_find_func(TDM_THREAD_CB_VBLANK_CREATE, _tdm_vblank_find_display); + hwc_commit_use_global_fps = tdm_config_get_int(TDM_CONFIG_KEY_GENERAL_HWC_COMMIT_USE_GLOBAL_FPS, 0); + vblank_list_inited = 1; return TDM_ERROR_NONE; -- 2.7.4 From 89a561cc4eeda090867bbd99e61062f88c8f9526 Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Wed, 7 Oct 2020 18:27:08 +0900 Subject: [PATCH 11/16] haltest: add skip condition to pp transform test Change-Id: I690d47be08425aaf9e70020c7848f1049ca66c42 Signed-off-by: Junkyeong Kim --- haltests/src/tc_tdm_backend_pp.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/haltests/src/tc_tdm_backend_pp.cpp b/haltests/src/tc_tdm_backend_pp.cpp index 47932ae..c59a381 100644 --- a/haltests/src/tc_tdm_backend_pp.cpp +++ b/haltests/src/tc_tdm_backend_pp.cpp @@ -733,6 +733,7 @@ retry: TEST_P(TDMBackendPP, PPConvertTransform) { TDM_UT_SKIP_FLAG(tc_tdm_display_has_pp_capability(dpy)); + TDM_UT_SKIP_FLAG(!(capabilities & TDM_PP_CAPABILITY_NO_TRANSFORM_ROTATION)); FindLayerUnderPrimary(); -- 2.7.4 From 85931bcd4f6443b638a1a159268403b7b7ace72a Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Wed, 21 Oct 2020 11:27:30 +0900 Subject: [PATCH 12/16] hwc: change use_vblank flag set position Change-Id: I4d7aeb5d879429a1380bccaffb7259f8feb2f3ec Signed-off-by: Junkyeong Kim --- src/tdm_hwc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tdm_hwc.c b/src/tdm_hwc.c index 47b6abb..a0109bf 100644 --- a/src/tdm_hwc.c +++ b/src/tdm_hwc.c @@ -268,7 +268,6 @@ _tdm_hwc_vblank(tdm_private_hwc *private_hwc, tdm_private_hwc_commit_handler *hw if (ret != TDM_ERROR_NONE) goto done; - hwc_commit_handler->use_vblank = 1; private_output->layer_waiting_vblank = 1; /* tdm_vblank APIs is for server. it should be called in unlock status*/ @@ -277,7 +276,6 @@ _tdm_hwc_vblank(tdm_private_hwc *private_hwc, tdm_private_hwc_commit_handler *hw _pthread_mutex_lock(&private_display->lock); if (ret != TDM_ERROR_NONE) { if (!TDM_OUTPUT_DPMS_VSYNC_IS_OFF(private_output->current_dpms_value)) { - hwc_commit_handler->use_vblank = 0; private_output->layer_waiting_vblank = 0; } } @@ -779,6 +777,8 @@ tdm_hwc_commit(tdm_hwc *hwc, int sync, tdm_hwc_commit_handler func, void *user_d hwc_commit_handler->func = func; hwc_commit_handler->user_data = user_data; hwc_commit_handler->owner_tid = syscall(SYS_gettid); + if (hwc_use_vblank) + hwc_commit_handler->use_vblank = 1; if (private_module == private_display->virtual_module) { private_voutput = private_output->private_voutput; -- 2.7.4 From 309ad21aba76781c724a00a8fd5a136664934b09 Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Fri, 23 Oct 2020 19:17:45 +0900 Subject: [PATCH 13/16] haltest: add line coverage excluding comments exclude virtual output related codes. (default off on mobile) exclude output commit reated codes. (vendor driven hwc is default) exclude hwc commit vblank related codes. (default off) Change-Id: I50c6f8625b63d192c464080f47a1eb791f984064 Signed-off-by: Junkyeong Kim --- src/tdm_display.c | 4 ++++ src/tdm_hwc.c | 4 ++++ src/tdm_output.c | 20 +++++++++++++++++--- src/tdm_server.c | 10 ++-------- 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/tdm_display.c b/src/tdm_display.c index e6c6df8..6603603 100644 --- a/src/tdm_display.c +++ b/src/tdm_display.c @@ -371,6 +371,7 @@ tdm_display_call_thread_cb_output_create(tdm_private_display *private_display, t return TDM_ERROR_NONE; } +/* LCOV_EXCL_START */ INTERN void tdm_display_thread_cb_output_create(tdm_private_display *private_display, void *object, tdm_thread_cb_base *cb_base, void *user_data) { @@ -466,6 +467,7 @@ tdm_display_remove_output_create_handler(tdm_display *dpy, _pthread_mutex_unlock(&private_display->lock); } +/* LCOV_EXCL_STOP */ EXTERN tdm_error tdm_display_get_capabilities(tdm_display *dpy, @@ -1016,6 +1018,7 @@ tdm_module_check_abi(tdm_private_module *private_module, int abimaj, int abimin) return 1; } +/* LCOV_EXCL_START */ INTERN tdm_voutput * tdm_display_voutput_create(tdm_display *dpy, const char *name, tdm_error *error) { @@ -1138,3 +1141,4 @@ tdm_display_voutput_create(tdm_display *dpy, const char *name, tdm_error *error) return private_voutput; } +/* LCOV_EXCL_STOP */ diff --git a/src/tdm_hwc.c b/src/tdm_hwc.c index a0109bf..ccf85ce 100644 --- a/src/tdm_hwc.c +++ b/src/tdm_hwc.c @@ -194,6 +194,7 @@ _tdm_hwc_cb_commit(tdm_hwc *hwc_backend, unsigned int sequence, TDM_WARNING_IF_FAIL(ret == TDM_ERROR_NONE); } +/* LCOV_EXCL_START */ static void _tdm_hwc_got_wait_vblank(unsigned int sequence, unsigned int tv_sec, unsigned int tv_usec, void *user_data) @@ -284,6 +285,7 @@ _tdm_hwc_vblank(tdm_private_hwc *private_hwc, tdm_private_hwc_commit_handler *hw done: return ret; } +/* LCOV_EXCL_STOP */ INTERN tdm_error tdm_hwc_init(tdm_private_display *private_display) @@ -793,6 +795,7 @@ tdm_hwc_commit(tdm_hwc *hwc, int sync, tdm_hwc_commit_handler func, void *user_d TDM_GOTO_IF_FAIL(ret == TDM_ERROR_NONE, commit_failed); if (hwc_use_vblank) { + /* LCOV_EXCL_START */ ret = _tdm_hwc_vblank(private_hwc, hwc_commit_handler); if (ret == TDM_ERROR_NONE) { if (tdm_debug_module & TDM_DEBUG_COMMIT) @@ -800,6 +803,7 @@ tdm_hwc_commit(tdm_hwc *hwc, int sync, tdm_hwc_commit_handler func, void *user_d private_hwc->index, hwc_commit_handler, func, user_data); } else goto commit_failed; + /* LCOV_EXCL_STOP */ } else { if (tdm_debug_module & TDM_DEBUG_COMMIT) TDM_INFO("hwc(%d) backend commit: handle(%p) func(%p) user_data(%p)", diff --git a/src/tdm_output.c b/src/tdm_output.c index 9dc60a9..c7cf2c6 100644 --- a/src/tdm_output.c +++ b/src/tdm_output.c @@ -159,6 +159,7 @@ tdm_output_call_thread_cb_destroy(tdm_private_output *private_output) return TDM_ERROR_NONE; } +/* LCOV_EXCL_START */ INTERN void tdm_output_thread_cb_destroy(tdm_private_display *private_display, void *object, tdm_thread_cb_base *cb_base, void *user_data) { @@ -254,6 +255,7 @@ tdm_output_remove_destroy_handler(tdm_output *output, _pthread_mutex_unlock(&private_display->lock); } +/* LCOV_EXCL_STOP */ EXTERN tdm_module * tdm_output_get_backend_module(tdm_output *output, tdm_error *error) @@ -401,6 +403,7 @@ _tdm_output_call_thread_cb_dpms(tdm_private_output *private_output, tdm_output_d return TDM_ERROR_NONE; } +/* LCOV_EXCL_START */ INTERN void tdm_output_cb_status(tdm_output *output_backend, tdm_output_conn_status status, void *user_data) { @@ -438,6 +441,7 @@ tdm_output_cb_dpms(tdm_output *output_backend, tdm_output_dpms dpms, void *user_ ret = _tdm_output_call_thread_cb_dpms(private_output, dpms); TDM_WARNING_IF_FAIL(ret == TDM_ERROR_NONE); } +/* LCOV_EXCL_STOP */ EXTERN tdm_error tdm_output_add_change_handler(tdm_output *output, @@ -501,6 +505,7 @@ tdm_output_add_change_handler(tdm_output *output, return ret; } +/* LCOV_EXCL_START */ EXTERN tdm_error tdm_output_add_mode_change_request_handler(tdm_output *output, tdm_output_mode_change_request_handler func, @@ -579,6 +584,7 @@ tdm_output_remove_mode_change_request_handler(tdm_output *output, return TDM_ERROR_INVALID_PARAMETER; } +/* LCOV_EXCL_STOP */ EXTERN void tdm_output_remove_change_handler(tdm_output *output, @@ -1000,6 +1006,7 @@ _tdm_output_cb_vblank(tdm_output *output_backend, unsigned int sequence, TDM_WARNING_IF_FAIL(ret == TDM_ERROR_NONE); } +/* LCOV_EXCL_START */ static void _tdm_output_thread_cb_commit(tdm_private_display *private_display, void *object, tdm_thread_cb_base *cb_base, void *user_data) { @@ -1075,7 +1082,9 @@ _tdm_output_cb_commit(tdm_output *output_backend, unsigned int sequence, ret = tdm_thread_cb_call(private_output, &output_commit.base, 1); TDM_WARNING_IF_FAIL(ret == TDM_ERROR_NONE); } +/* LCOV_EXCL_STOP */ +/* LCOV_EXCL_START */ static void _tdm_voutput_thread_cb_commit(tdm_private_display *private_display, void *object, tdm_thread_cb_base *cb_base, void *user_data) { @@ -1156,6 +1165,7 @@ _tdm_voutput_cb_commit(tdm_voutput *voutput_backend, unsigned int sequence, ret = tdm_thread_cb_call(private_voutput, &voutput_commit.base, 1); TDM_WARNING_IF_FAIL(ret == TDM_ERROR_NONE); } +/* LCOV_EXCL_STOP */ /* add_front: To distinguish between the user vblank handlers and the layer * commit vblank handlers. The layer commit handlers will be called @@ -1334,6 +1344,7 @@ tdm_output_remove_vblank_handler_internal(tdm_output *output, tdm_output_vblank_ } } +/* LCOV_EXCL_START */ INTERN void tdm_output_remove_commit_handler_internal(tdm_output *output, tdm_output_commit_handler func, void *user_data) { @@ -1352,6 +1363,7 @@ tdm_output_remove_commit_handler_internal(tdm_output *output, tdm_output_commit_ } } } +/* LCOV_EXCL_STOP */ EXTERN tdm_error tdm_output_remove_vblank_handler(tdm_output *output, tdm_output_vblank_handler func, void *user_data) @@ -1367,6 +1379,7 @@ tdm_output_remove_vblank_handler(tdm_output *output, tdm_output_vblank_handler f return ret; } +/* LCOV_EXCL_START */ EXTERN tdm_error tdm_output_remove_commit_handler(tdm_output *output, tdm_output_commit_handler func, void *user_data) { @@ -1380,7 +1393,9 @@ tdm_output_remove_commit_handler(tdm_output *output, tdm_output_commit_handler f return ret; } +/* LCOV_EXCL_STOP */ +/* LCOV_EXCL_START */ INTERN void tdm_output_request_mode_set(tdm_output *output, unsigned int index) { @@ -1448,11 +1463,9 @@ tdm_output_set_voutput_commit(tdm_voutput *voutput) voutput_commit_handler = calloc(1, sizeof(tdm_private_voutput_commit_handler)); if (!voutput_commit_handler) { - /* LCOV_EXCL_START */ TDM_ERR("failed: alloc memory"); _pthread_mutex_unlock(&private_display->lock); return TDM_ERROR_OUT_OF_MEMORY; - /* LCOV_EXCL_STOP */ } ret = tdm_thread_cb_add(private_output->private_voutput, TDM_THREAD_CB_VOUTPUT_COMMIT, voutput_commit_handler, _tdm_voutput_thread_cb_commit, NULL); @@ -1528,6 +1541,7 @@ tdm_output_unset_voutput_commit(tdm_voutput *voutput) return TDM_ERROR_NONE; } +/* LCOV_EXCL_STOP */ /* LCOV_EXCL_START */ INTERN tdm_error @@ -2166,6 +2180,7 @@ tdm_output_choose_commit_per_vblank_mode(tdm_private_output *private_output, int return TDM_ERROR_NONE; } +/* LCOV_EXCL_START */ INTERN tdm_error tdm_voutput_destroy(tdm_voutput *voutput) { @@ -2319,7 +2334,6 @@ tdm_voutput_disconnect(tdm_voutput *voutput) return ret; } -/* LCOV_EXCL_START */ INTERN tdm_error tdm_voutput_set_commit_func(tdm_voutput *voutput, tdm_voutput_commit_handler func) { diff --git a/src/tdm_server.c b/src/tdm_server.c index a54e482..7e8fb20 100644 --- a/src/tdm_server.c +++ b/src/tdm_server.c @@ -821,6 +821,7 @@ _tdm_server_cb_create_output(struct wl_client *client, struct wl_resource *resou } } +/* LCOV_EXCL_START */ static void _tdm_voutput_cb_destroy(struct wl_client *client, struct wl_resource *resource) { wl_resource_destroy(resource); @@ -1173,25 +1174,17 @@ _tdm_output_get_voutput_buffer(tdm_server_voutput_info *voutput_info, tbm_surfac tbm_surface_internal_ref(buffer); voutput_buffer = calloc(1, sizeof *voutput_buffer); if (!voutput_buffer) { - /* LCOV_EXCL_START */ - TDM_ERR("fail calloc"); tbm_surface_internal_unref(buffer); return NULL; - - /* LCOV_EXCL_STOP */ } voutput_buffer->wl_buffer = _tdm_voutput_export_buffer(voutput_info, buffer); if (!voutput_buffer->wl_buffer) { - /* LCOV_EXCL_START */ - TDM_ERR("fail export buffer"); free(voutput_buffer); tbm_surface_internal_unref(buffer); return NULL; - - /* LCOV_EXCL_STOP */ } voutput_buffer->buffer = buffer; @@ -1371,6 +1364,7 @@ _tdm_server_cb_create_virtual_output(struct wl_client *client, struct wl_resourc wl_tdm_voutput_send_ack_message(voutput_resource, WL_TDM_VOUTPUT_MESSAGE_ADDED); } +/* LCOV_EXCL_STOP */ /* LCOV_EXCL_START */ static void -- 2.7.4 From 8877845d1e0c862778c6422e1799ae952f51abb5 Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Fri, 23 Oct 2020 19:21:42 +0900 Subject: [PATCH 14/16] haltest: add full path name for dump Change-Id: I738c31aed2de05dab3480aab947e78b8d59fe0b1 Signed-off-by: Junkyeong Kim --- haltests/src/tc_tdm_helper.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/haltests/src/tc_tdm_helper.cpp b/haltests/src/tc_tdm_helper.cpp index 6ac40da..fa94091 100644 --- a/haltests/src/tc_tdm_helper.cpp +++ b/haltests/src/tc_tdm_helper.cpp @@ -69,7 +69,7 @@ TEST_P(TDMHelper, HelperDumpBufferXR24) tdm_test_buffer_fill(buffer, PATTERN_SMPTE); char filename[256]; - snprintf(filename, sizeof filename, "%s.png", typeid(*this).name()); + snprintf(filename, sizeof filename, "/tmp/%s.png", typeid(*this).name()); tdm_helper_dump_buffer(buffer, (const char*)filename); tbm_surface_destroy(buffer); @@ -85,7 +85,7 @@ TEST_P(TDMHelper, HelperDumpBufferAR24) tdm_test_buffer_fill(buffer, PATTERN_SMPTE); char filename[256]; - snprintf(filename, sizeof filename, "%s.png", typeid(*this).name()); + snprintf(filename, sizeof filename, "/tmp/%s.png", typeid(*this).name()); tdm_helper_dump_buffer(buffer, (const char*)filename); tbm_surface_destroy(buffer); -- 2.7.4 From 8909a95085772f73dd6bbf6bfef6eb277843a6ca Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Tue, 27 Oct 2020 14:53:53 +0900 Subject: [PATCH 15/16] tdm_hwc: add tdm_hwc_get_commit_interval interface Change-Id: Iacc89ddf45f5f7bea9b50f1292b7186c035a0a41 --- include/tdm.h | 9 +++++++++ include/tdm_backend.h | 8 ++++++++ include/tdm_types.h | 8 ++++++++ src/tdm_hwc.c | 27 +++++++++++++++++++++++++++ 4 files changed, 52 insertions(+) diff --git a/include/tdm.h b/include/tdm.h index 4a9d60d..92718f7 100644 --- a/include/tdm.h +++ b/include/tdm.h @@ -1094,6 +1094,15 @@ tdm_hwc_get_release_fences(tdm_hwc *hwc, uint32_t *num_elements, tdm_hwc_window **hwc_windows, int *fences); /** + * @brief Get the commit interval + * @param[in] hwc A hwc object + * @param[out] interval commit interval of backend + * @return #TDM_ERROR_NONE if success. Otherwise, error value. + */ +tdm_error +tdm_hwc_get_commit_interval(tdm_hwc *hwc, tdm_hwc_commit_interval *interval); + +/** * @brief Set the property which has a given id on the hwc object. * @param[in] hwc A hwc object * @param[in] id The property id diff --git a/include/tdm_backend.h b/include/tdm_backend.h index f1f8084..5fe3f34 100644 --- a/include/tdm_backend.h +++ b/include/tdm_backend.h @@ -1016,6 +1016,14 @@ typedef struct _tdm_func_hwc { * @return #TDM_ERROR_NONE if success. Otherwise, error value. */ tdm_error (*hwc_get_property)(tdm_hwc *hwc, uint32_t id, tdm_value *value); + + /** + * @brief Get the commit interval + * @param[in] hwc A hwc object + * @param[out] interval commit interval of backend + * @return #TDM_ERROR_NONE if success. Otherwise, error value. + */ + tdm_error (*hwc_get_commit_interval)(tdm_hwc *hwc, tdm_hwc_commit_interval *interval); } tdm_func_hwc; /** diff --git a/include/tdm_types.h b/include/tdm_types.h index d9ab984..4846002 100644 --- a/include/tdm_types.h +++ b/include/tdm_types.h @@ -222,6 +222,14 @@ typedef enum { TDM_HWC_WIN_CONSTRAINT_BUFFER_QUEUE = (1 << 0), } tdm_hwc_window_constraint; +typedef enum { + TDM_HWC_COMMIT_INTERVAL_NONE = 0, + /** If this interval is set by tdm backend, the compositor call commit per vblank + * even if the handler of commit isn't called. + */ + TDM_HWC_COMMIT_INTERVAL_VBLANK = 1, +} tdm_hwc_commit_interval; + /** * @brief The tdm display object */ diff --git a/src/tdm_hwc.c b/src/tdm_hwc.c index ccf85ce..76865e0 100644 --- a/src/tdm_hwc.c +++ b/src/tdm_hwc.c @@ -964,3 +964,30 @@ tdm_hwc_get_property(tdm_hwc *hwc, uint32_t id, tdm_value *value) return ret; } + +tdm_error +tdm_hwc_get_commit_interval(tdm_hwc *hwc, tdm_hwc_commit_interval *refresh) +{ + tdm_private_module *private_module; + tdm_func_hwc *func_hwc = NULL; + + HWC_FUNC_ENTRY(); + + _pthread_mutex_lock(&private_display->lock); + + private_module = private_hwc->private_module; + func_hwc = &private_module->func_hwc; + + /* LCOV_EXCL_START */ + if (!func_hwc->hwc_get_commit_interval) { + _pthread_mutex_unlock(&private_display->lock); + return TDM_ERROR_NOT_IMPLEMENTED; + } + + ret = func_hwc->hwc_get_commit_interval(private_hwc->hwc_backend, refresh); + /* LCOV_EXCL_STOP */ + + _pthread_mutex_unlock(&private_display->lock); + + return ret; +} -- 2.7.4 From f52a1a3b70600d9e53f23ee5d40ac8544b2e9e61 Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Fri, 23 Oct 2020 19:22:20 +0900 Subject: [PATCH 16/16] package version up to 2.12.0 Change-Id: I9cf74a439a8d04d1215319d704ed8ad28ff79f92 Signed-off-by: Junkyeong Kim --- packaging/libtdm.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/libtdm.spec b/packaging/libtdm.spec index e6cb9f5..651fc00 100644 --- a/packaging/libtdm.spec +++ b/packaging/libtdm.spec @@ -2,7 +2,7 @@ %define HALTESTS_GCOV 0 Name: libtdm -Version: 2.11.3 +Version: 2.12.0 Release: 0 Summary: User Library of Tizen Display Manager Group: Development/Libraries -- 2.7.4