tdm_error vc4_output_set_status_handler(tdm_output *output, tdm_output_status_handler func, void *user_data);
tdm_hwc_window * vc4_output_hwc_window_create(tdm_output *output, tdm_error *error);
tdm_error vc4_output_hwc_window_destroy(tdm_output *output, tdm_hwc_window *hwc_window);
-tdm_error vc4_output_hwc_validate(tdm_output *output, uint32_t *num_types);
+tdm_error vc4_output_hwc_validate(tdm_output *output, tdm_hwc_window **composited_wnds,
+ uint32_t num_wnds, uint32_t *num_types);
tdm_error vc4_output_hwc_get_changed_composition_types(tdm_output *output, uint32_t *num_elements,
tdm_hwc_window **hwc_window,
tdm_hwc_window_composition *composition_types);
tdm_error vc4_output_hwc_accept_changes(tdm_output *output);
tbm_surface_queue_h vc4_output_hwc_get_target_buffer_queue(tdm_output *output, tdm_error *error);
-tdm_error vc4_output_hwc_set_client_target_buffer(tdm_output *output, tbm_surface_h buffer,
- tdm_hwc_region damage, tdm_hwc_window **composited_wnds,
- uint32_t num_wnds);
+tdm_error vc4_output_hwc_set_client_target_buffer(tdm_output *output, tbm_surface_h buffer, tdm_hwc_region damage);
tdm_error vc4_layer_get_capability(tdm_layer *layer, tdm_caps_layer *caps);
tdm_error vc4_layer_set_property(tdm_layer *layer, unsigned int id, tdm_value value);
tdm_error vc4_layer_get_property(tdm_layer *layer, unsigned int id, tdm_value *value);
tdm_error vc4_layer_unset_buffer(tdm_layer *layer);
tdm_error vc4_layer_get_buffer_flags(tdm_layer *layer, unsigned int *flags);
tbm_surface_queue_h vc4_hwc_window_get_tbm_buffer_queue(tdm_hwc_window *hwc_window, tdm_error *error);
-tdm_error vc4_hwc_window_set_zpos(tdm_hwc_window *hwc_window, int32_t zpos);
tdm_error vc4_hwc_window_set_composition_type(tdm_hwc_window *hwc_window,
tdm_hwc_window_composition composition_type);
tdm_error vc4_hwc_window_set_buffer_damage(tdm_hwc_window *hwc_window, tdm_hwc_region damage);
tdm_vc4_output_data *output_data;
/* not fixed data below */
- int zpos;
-
tdm_hwc_window_info info;
int info_changed;
return TDM_ERROR_NONE;
}
-tdm_error
-tdm_vc4_output_insert_hwc_window(tdm_vc4_output_data *output, tdm_vc4_hwc_window_data *hwc_window)
-{
- tdm_vc4_hwc_window_data *item = NULL;
- LIST_FOR_EACH_ENTRY_REV(item, &output->hwc_window_list, link) {
- if (item == hwc_window)
- return TDM_ERROR_OPERATION_FAILED;
-
- if (item->zpos <= hwc_window->zpos)
- break;
- }
-
- LIST_INSERT_AFTER(&item->link, &hwc_window->link);
-
- return TDM_ERROR_NONE;
-}
-
int
_vc4_output_get_changed_number(tdm_vc4_output_data *vc4_output)
{
}
vc4_hwc_window->output_data = output;
- vc4_hwc_window->zpos = 0;
if (info)
memcpy(&vc4_hwc_window->info, info, sizeof(tdm_hwc_window_info));
{
tdm_vc4_hwc_window_data *vc4_hwc_window = NULL;
tdm_vc4_output_data *vc4_output = output;
- tdm_error err;
vc4_hwc_window = _vc4_output_hwc_window_create(vc4_output, NULL, error);
if (vc4_hwc_window == NULL)
return NULL;
- err = tdm_vc4_output_insert_hwc_window(vc4_output, vc4_hwc_window);
- if (err != TDM_ERROR_NONE) {
- if (error)
- *error = err;
- free(vc4_hwc_window);
- return NULL;
- }
+ LIST_ADDTAIL(&vc4_hwc_window->link, &vc4_output->hwc_window_list);
TDM_DBG("hwc_window(%p) create", vc4_hwc_window);
if (error)
}
tdm_error
-vc4_output_hwc_validate(tdm_output *output, uint32_t *num_types)
+vc4_output_hwc_validate(tdm_output *output, tdm_hwc_window **composited_wnds,
+ uint32_t num_wnds, uint32_t *num_types)
{
tdm_vc4_output_data *vc4_output = output;
tdm_vc4_data *vc4_data = NULL;
}
tdm_error
-vc4_output_hwc_set_client_target_buffer(tdm_output *output, tbm_surface_h buffer,
- tdm_hwc_region damage, tdm_hwc_window **composited_wnds,
- uint32_t num_wnds)
+vc4_output_hwc_set_client_target_buffer(tdm_output *output, tbm_surface_h buffer, tdm_hwc_region damage)
{
tdm_vc4_output_data *vc4_output = output;
tdm_error err;
}
tdm_error
-vc4_hwc_window_set_zpos(tdm_hwc_window *hwc_window, int32_t zpos)
-{
- tdm_vc4_hwc_window_data *vc4_hwc_window = hwc_window;
- tdm_vc4_output_data *vc4_output;
-
- RETURN_VAL_IF_FAIL(vc4_hwc_window != NULL, TDM_ERROR_INVALID_PARAMETER);
- RETURN_VAL_IF_FAIL(zpos < 256, TDM_ERROR_INVALID_PARAMETER);
-
- vc4_output = vc4_hwc_window->output_data;
- RETURN_VAL_IF_FAIL(vc4_output != NULL, TDM_ERROR_INVALID_PARAMETER);
-
- if (vc4_hwc_window->zpos == zpos)
- return TDM_ERROR_NONE;
-
- LIST_DEL(&vc4_hwc_window->link);
-
- vc4_hwc_window->zpos = zpos;
-
- tdm_vc4_output_insert_hwc_window(vc4_output, vc4_hwc_window);
-
- vc4_output->need_validate = 1;
-
- return TDM_ERROR_NONE;
-
-}
-
-tdm_error
vc4_hwc_window_set_composition_type(tdm_hwc_window *hwc_window,
tdm_hwc_window_composition comp_type)
{