Add reserved flag at img layer and implement get buffer flag 51/84651/2
authorChangyeon Lee <cyeon.lee@samsung.com>
Sun, 21 Aug 2016 08:26:53 +0000 (17:26 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Sun, 21 Aug 2016 08:31:07 +0000 (17:31 +0900)
Change-Id: I938171db3ea5029e85830f11810c59c472a65943

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

index 6254455..d0e2e65 100755 (executable)
@@ -173,6 +173,7 @@ tdm_sprd_init(tdm_display *dpy, tdm_error *error)
        sprd_func_layer.layer_get_info = sprd_layer_get_info;
        sprd_func_layer.layer_set_buffer = sprd_layer_set_buffer;
        sprd_func_layer.layer_unset_buffer = sprd_layer_unset_buffer;
+       sprd_func_layer.layer_get_buffer_flags = sprd_layer_get_buffer_flags;
 
        memset(&sprd_func_pp, 0, sizeof(sprd_func_pp));
        sprd_func_pp.pp_destroy = sprd_pp_destroy;
index 69cc060..4891480 100644 (file)
@@ -46,6 +46,7 @@ tdm_error    sprd_layer_set_info(tdm_layer *layer, tdm_info_layer *info);
 tdm_error    sprd_layer_get_info(tdm_layer *layer, tdm_info_layer *info);
 tdm_error    sprd_layer_set_buffer(tdm_layer *layer, tbm_surface_h buffer);
 tdm_error    sprd_layer_unset_buffer(tdm_layer *layer);
+tdm_error    sprd_layer_get_buffer_flags(tdm_layer *layer, unsigned int *flags);
 void         sprd_pp_destroy(tdm_pp *pp);
 tdm_error    sprd_pp_set_info(tdm_pp *pp, tdm_info_pp *info);
 tdm_error    sprd_pp_attach(tdm_pp *pp, tbm_surface_h src, tbm_surface_h dst);
index b6d6409..426c14e 100644 (file)
@@ -650,6 +650,7 @@ _tdm_sprd_display_create_layer_list_LCD(tdm_sprd_output_data *output_data)
        layer_data_img->capabilities = TDM_LAYER_CAPABILITY_OVERLAY |
                                       TDM_LAYER_CAPABILITY_GRAPHIC |
                                       TDM_LAYER_CAPABILITY_SCANOUT |
+                                      TDM_LAYER_CAPABILITY_RESEVED_MEMORY |
                                       TDM_LAYER_CAPABILITY_NO_CROP;
        layer_data_img->zpos = 0;
 
@@ -1384,6 +1385,23 @@ sprd_layer_unset_buffer(tdm_layer *layer)
        return TDM_ERROR_NONE;
 }
 
+tdm_error
+sprd_layer_get_buffer_flags(tdm_layer *layer, unsigned int *flags)
+{
+       tdm_sprd_layer_data *layer_data = layer;
+
+       switch (layer_data->zpos) {
+               case 0:
+               case 1:
+                       *flags = TBM_BO_SCANOUT;
+                       break;
+               default:
+                       return TDM_ERROR_INVALID_PARAMETER;
+       }
+
+       return TDM_ERROR_NONE;
+}
+
 static int
 _sprd_drm_user_handler(struct drm_event *event)
 {