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;
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);
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;
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)
{