tdm_virtual: use target_buffer_queue_flag to make voutput buffer queue 74/225874/1
authorJunkyeong Kim <jk0430.kim@samsung.com>
Tue, 25 Feb 2020 06:30:04 +0000 (15:30 +0900)
committerJunkyeong Kim <jk0430.kim@samsung.com>
Tue, 25 Feb 2020 06:30:08 +0000 (15:30 +0900)
Change-Id: Icac49125d90f5e346bd6e2ada9249f32c9fe19a1
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
backends/virtual/tdm_virtual_hwc.c

index cd72e5c..91f5641 100644 (file)
@@ -71,7 +71,7 @@ _print_validate_result(tdm_virtual_hwc_data *hwc_data, tdm_hwc_window **composit
 }
 
 static tbm_surface_queue_h
-_virtual_hwc_window_get_tbm_buffer_queue(tdm_hwc_window *hwc_window, tdm_error *error)
+_virtual_hwc_window_get_tbm_buffer_queue(tdm_hwc_window *hwc_window, tdm_error *error, int flags)
 {
        tdm_virtual_hwc_window_data *hwc_window_data = NULL;
        tbm_surface_queue_h tqueue = NULL;
@@ -89,7 +89,7 @@ _virtual_hwc_window_get_tbm_buffer_queue(tdm_hwc_window *hwc_window, tdm_error *
        height = hwc_window_data->info.src_config.size.v;
        format = hwc_window_data->info.src_config.format;
 
-       tqueue = tbm_surface_queue_create(NUM_BUFFERS, width, height, format, TBM_BO_SCANOUT);
+       tqueue = tbm_surface_queue_create(NUM_BUFFERS, width, height, format, flags);
        if (error)
                *error = TDM_ERROR_OPERATION_FAILED;
        RETURN_VAL_IF_FAIL(tqueue != NULL, NULL);
@@ -307,6 +307,8 @@ tbm_surface_queue_h
 virtual_hwc_get_client_target_buffer_queue(tdm_hwc *hwc, tdm_error *error)
 {
        tdm_virtual_hwc_data *hwc_data = hwc;
+       tdm_virtual_output_data *output_data = NULL;
+       tdm_virtual_voutput_data *voutput_data = NULL;
        tbm_surface_queue_h tqueue = NULL;
 
        if (error)
@@ -314,13 +316,19 @@ virtual_hwc_get_client_target_buffer_queue(tdm_hwc *hwc, tdm_error *error)
 
        RETURN_VAL_IF_FAIL(hwc_data != NULL, NULL);
 
+       output_data = hwc_data->output_data;
+       RETURN_VAL_IF_FAIL(output_data != NULL, NULL);
+
+       voutput_data = output_data->voutput_data;
+       RETURN_VAL_IF_FAIL(voutput_data != NULL, NULL);
+
        if (hwc_data->target_hwc_window == NULL) {
                if (error)
                        *error = TDM_ERROR_OPERATION_FAILED;
                return NULL;
        }
 
-       tqueue = _virtual_hwc_window_get_tbm_buffer_queue(hwc_data->target_hwc_window, error);
+       tqueue = _virtual_hwc_window_get_tbm_buffer_queue(hwc_data->target_hwc_window, error, voutput_data->target_buffer_queue_flag);
        RETURN_VAL_IF_FAIL(tqueue, NULL);
 
        if (error)