tdm_virtual: use tdm.ini flag to select virtual hwc target buffer bo type 49/224849/2
authorJunkyeong Kim <jk0430.kim@samsung.com>
Thu, 13 Feb 2020 11:42:48 +0000 (20:42 +0900)
committerJunkyeong Kim <jk0430.kim@samsung.com>
Tue, 25 Feb 2020 06:32:21 +0000 (06:32 +0000)
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 <jk0430.kim@samsung.com>
src/tdm.c
src/tdm_config.h
src/tdm_display.c
src/tdm_private_types.h

index dc66bbf..6375b53 100644 (file)
--- 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;
index a9ed0fd..39563a1 100644 (file)
@@ -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 **************************************************************/
 
index 4deea99..e6c6df8 100644 (file)
@@ -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");
index bbc83cd..289033f 100644 (file)
@@ -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 {