From: Junkyeong Kim Date: Thu, 13 Feb 2020 11:42:48 +0000 (+0900) Subject: tdm_virtual: use tdm.ini flag to select virtual hwc target buffer bo type X-Git-Tag: accepted/tizen/unified/20200303.032539~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F49%2F224849%2F2;p=platform%2Fcore%2Fuifw%2Flibtdm.git tdm_virtual: use tdm.ini flag to select virtual hwc target buffer bo type use virtual_output_hwc_target_bo_default flag. if set to 1, use TBM_BO_DEFAULT flag to make hwc target buffer queue. if set to 0 or not defined, use TBM_BO_SCANOUT flag. Change-Id: I3b6a9fca456f49cbe67bebab9ad614336f35552f Signed-off-by: Junkyeong Kim --- diff --git a/src/tdm.c b/src/tdm.c index dc66bbf..6375b53 100644 --- a/src/tdm.c +++ b/src/tdm.c @@ -771,6 +771,7 @@ _tdm_display_setup(tdm_private_display *private_display) tdm_error ret = TDM_ERROR_NONE; int output_count = 0; int virtual = 0; + int virtual_hwc_target_buffer_bo_default = 0; if (private_display->pp_module) { ret = _tdm_display_update_caps_pp(private_display->pp_module, @@ -836,6 +837,10 @@ _tdm_display_setup(tdm_private_display *private_display) ret = _tdm_display_load_module_with_file(private_display, TDM_VIRTUAL_MODULE); TDM_GOTO_IF_FAIL(ret == TDM_ERROR_NONE, failed_update); TDM_GOTO_IF_FAIL(private_display->virtual_module != NULL, failed_update); + + virtual_hwc_target_buffer_bo_default = tdm_config_get_int(TDM_CONFIG_KEY_GENERAL_VIRTUAL_OUTPUT_HWC_TARGET_BO_DEFAULT, 0); + if (virtual_hwc_target_buffer_bo_default) + private_display->virtual_module->use_default_type_bo = 1; } return TDM_ERROR_NONE; diff --git a/src/tdm_config.h b/src/tdm_config.h index a9ed0fd..39563a1 100644 --- a/src/tdm_config.h +++ b/src/tdm_config.h @@ -120,6 +120,12 @@ tdm_config_set_string(const char *key, const char *value); */ #define TDM_CONFIG_KEY_GENERAL_VIRTUAL_OUTPUT "general:virtual_output" +/* set the tdm virtual output hwc target buffer bo to default. [0(unset), 1(set)] + * default: 0 + * ex) 1 + */ +#define TDM_CONFIG_KEY_GENERAL_VIRTUAL_OUTPUT_HWC_TARGET_BO_DEFAULT "general:virtual_output_hwc_target_bo_default" + /*** debug keys **************************************************************/ diff --git a/src/tdm_display.c b/src/tdm_display.c index 4deea99..e6c6df8 100644 --- a/src/tdm_display.c +++ b/src/tdm_display.c @@ -1081,6 +1081,13 @@ tdm_display_voutput_create(tdm_display *dpy, const char *name, tdm_error *error) return NULL; } + if (func_voutput->voutput_set_target_buffer_queue_flag) { + if (private_module->use_default_type_bo == 1) + func_voutput->voutput_set_target_buffer_queue_flag(voutput_backend, TBM_BO_DEFAULT); + else + func_voutput->voutput_set_target_buffer_queue_flag(voutput_backend, TBM_BO_SCANOUT); + } + ret = tdm_display_update_output(private_display->current_module, output_backend); if (ret != TDM_ERROR_NONE) { TDM_ERR("tdm_display_update_output fail"); diff --git a/src/tdm_private_types.h b/src/tdm_private_types.h index bbc83cd..289033f 100644 --- a/src/tdm_private_types.h +++ b/src/tdm_private_types.h @@ -157,6 +157,9 @@ struct _tdm_private_module { int fd; tdm_event_loop_source *event_source; + + /* backend virtual output target buffer type default set for hwc */ + int use_default_type_bo; }; struct _tdm_private_display {