added backend hwc_window func for reserved memory 30/186430/2
authorChangyeon Lee <cyeon.lee@samsung.com>
Thu, 9 Aug 2018 11:14:35 +0000 (20:14 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Thu, 9 Aug 2018 12:17:46 +0000 (21:17 +0900)
sprd_hwc_window_get_buffer_queue
sprd_hwc_window_free_buffer_queue
sprd_hwc_window_get_preparation_types

Change-Id: I3497b8635c1fa4b53c1575e872a34e7a27a72fc2

src/tdm_sprd.c
src/tdm_sprd.h
src/tdm_sprd_display.c

index 5cc4b7a..62ed79d 100644 (file)
@@ -193,7 +193,8 @@ tdm_sprd_init(tdm_display *dpy, tdm_error *error)
 
                memset(&sprd_func_hwc_window, 0, sizeof(sprd_func_hwc_window));
                sprd_func_hwc_window.hwc_window_destroy = sprd_hwc_window_destroy;
-               sprd_func_hwc_window.hwc_window_get_buffer_queue = NULL;
+               sprd_func_hwc_window.hwc_window_get_buffer_queue = sprd_hwc_window_get_buffer_queue;
+               sprd_func_hwc_window.hwc_window_free_buffer_queue = sprd_hwc_window_free_buffer_queue;
                sprd_func_hwc_window.hwc_window_set_composition_type = sprd_hwc_window_set_composition_type;
                sprd_func_hwc_window.hwc_window_set_buffer_damage = sprd_hwc_window_set_buffer_damage;
                sprd_func_hwc_window.hwc_window_set_info = sprd_hwc_window_set_info;
@@ -201,6 +202,7 @@ tdm_sprd_init(tdm_display *dpy, tdm_error *error)
                sprd_func_hwc_window.hwc_window_set_buffer = sprd_hwc_window_set_buffer;
                sprd_func_hwc_window.hwc_window_set_property = sprd_hwc_window_set_property;
                sprd_func_hwc_window.hwc_window_get_property = sprd_hwc_window_get_property;
+               sprd_func_hwc_window.hwc_window_get_preparation_types = sprd_hwc_window_get_preparation_types;
        }
 
        memset(&sprd_func_layer, 0, sizeof(sprd_func_layer));
index 1bcf528..5d1fed4 100644 (file)
@@ -63,14 +63,17 @@ tdm_error           sprd_hwc_accept_changes(tdm_hwc *hwc);
 tdm_error           sprd_hwc_commit(tdm_hwc *hwc, int sync, void *user_data);
 tdm_error           sprd_hwc_set_commit_handler(tdm_hwc *hwc, tdm_hwc_commit_handler func);
 
-void         sprd_hwc_window_destroy(tdm_hwc_window *hwc_window);
-tdm_error    sprd_hwc_window_set_composition_type(tdm_hwc_window *hwc_window, tdm_hwc_window_composition composition_type);
-tdm_error    sprd_hwc_window_set_buffer_damage(tdm_hwc_window *hwc_window, tdm_region damage);
-tdm_error    sprd_hwc_window_set_info(tdm_hwc_window *hwc_window, tdm_hwc_window_info *info);
-tdm_error    sprd_hwc_window_get_info(tdm_hwc_window *hwc_window, tdm_hwc_window_info *info);
-tdm_error    sprd_hwc_window_set_buffer(tdm_hwc_window *hwc_window, tbm_surface_h surface);
-tdm_error    sprd_hwc_window_set_property(tdm_hwc_window *hwc_window, unsigned int id, tdm_value value);
-tdm_error    sprd_hwc_window_get_property(tdm_hwc_window *hwc_window, unsigned int id, tdm_value *value);
+void                sprd_hwc_window_destroy(tdm_hwc_window *hwc_window);
+tdm_error           sprd_hwc_window_set_composition_type(tdm_hwc_window *hwc_window, tdm_hwc_window_composition composition_type);
+tdm_error           sprd_hwc_window_set_buffer_damage(tdm_hwc_window *hwc_window, tdm_region damage);
+tdm_error           sprd_hwc_window_set_info(tdm_hwc_window *hwc_window, tdm_hwc_window_info *info);
+tdm_error           sprd_hwc_window_get_info(tdm_hwc_window *hwc_window, tdm_hwc_window_info *info);
+tdm_error           sprd_hwc_window_set_buffer(tdm_hwc_window *hwc_window, tbm_surface_h surface);
+tdm_error           sprd_hwc_window_set_property(tdm_hwc_window *hwc_window, unsigned int id, tdm_value value);
+tdm_error           sprd_hwc_window_get_property(tdm_hwc_window *hwc_window, unsigned int id, tdm_value *value);
+tbm_surface_queue_h sprd_hwc_window_get_buffer_queue(tdm_hwc_window *hwc_window, tdm_error *error);
+void                sprd_hwc_window_free_buffer_queue(tdm_hwc_window *hwc_window, tbm_surface_queue_h queue);
+tdm_error           sprd_hwc_window_get_preparation_types(tdm_hwc_window *hwc_window, int *preparation_types);
 
 void         sprd_pp_destroy(tdm_pp *pp);
 tdm_error    sprd_pp_set_info(tdm_pp *pp, tdm_info_pp *info);
index d8f7efb..8ffcd76 100644 (file)
@@ -2303,4 +2303,52 @@ sprd_hwc_window_set_property(tdm_hwc_window *hwc_window, unsigned int id, tdm_va
        //TODO:
 
        return TDM_ERROR_NONE;
-}
\ No newline at end of file
+}
+
+tbm_surface_queue_h
+sprd_hwc_window_get_buffer_queue(tdm_hwc_window *hwc_window, tdm_error *error)
+{
+       tdm_sprd_hwc_data *hwc_data = NULL;
+       tdm_sprd_hwc_window_data *hwc_window_data = NULL;
+       tdm_sprd_hwc_window_data *target_hwc_window_data = NULL;
+
+       if (error)
+               *error = TDM_ERROR_INVALID_PARAMETER;
+
+       hwc_window_data = (tdm_sprd_hwc_window_data *)hwc_window;
+       RETURN_VAL_IF_FAIL(hwc_window_data != NULL, NULL);
+
+       hwc_data = hwc_window_data->hwc_data;
+       RETURN_VAL_IF_FAIL(hwc_data != NULL, NULL);
+
+       target_hwc_window_data = hwc_data->target_hwc_window;
+       RETURN_VAL_IF_FAIL(target_hwc_window_data != NULL, NULL);
+
+       RETURN_VAL_IF_FAIL(target_hwc_window_data->tqueue != NULL, NULL);
+
+       if (error)
+               *error = TDM_ERROR_NONE;
+
+       return target_hwc_window_data->tqueue;
+}
+
+void
+sprd_hwc_window_free_buffer_queue(tdm_hwc_window *hwc_window, tbm_surface_queue_h queue)
+{
+       return;
+}
+
+tdm_error
+sprd_hwc_window_get_preparation_types(tdm_hwc_window *hwc_window, int *preparation_types)
+{
+       tdm_sprd_hwc_window_data *hwc_window_data = NULL;
+
+       hwc_window_data = (tdm_sprd_hwc_window_data *)hwc_window;
+
+       RETURN_VAL_IF_FAIL(hwc_window_data != NULL, TDM_ERROR_INVALID_PARAMETER);
+       RETURN_VAL_IF_FAIL(preparation_types != NULL, TDM_ERROR_INVALID_PARAMETER);
+
+       *preparation_types = hwc_window_data->preparation_types;
+
+       return TDM_ERROR_NONE;
+}