* @remark
* A backend module doesn't need to implement this function if doesn't support virtual output.
*/
- tdm_voutput *(*voutput_create)(tdm_backend_data *bdata, const char *name, tdm_error *error);
+ tdm_voutput *(*display_voutput_create)(tdm_backend_data *bdata, const char *name, tdm_error *error);
void (*reserved2)(void);
void (*reserved3)(void);
* #output_set_dpms_handler, a backend module needs to call the output dpms handler
* to let the TDM frontend know the output DPMS change indeed.
* @param[in] dpms_value DPMS value
+ * @param[out] sync A flag for sync call
* @return #TDM_ERROR_NONE if success. Otherwise, error value.
* @see #output_set_dpms_handler, #TDM_OUTPUT_CAPABILITY_ASYNC_DPMS
* @since 1.7.0
*/
- tdm_error (*output_set_dpms_async)(tdm_output *output, tdm_output_dpms dpms_value);
+ tdm_error (*output_set_dpms_async)(tdm_output *output, tdm_output_dpms dpms_value, int *sync);
/**
* @brief Get a hwc object of a output object
*/
tdm_hwc *(*output_get_hwc)(tdm_output *output, tdm_error *error);
- void (*reserved3)(void);
+ /**
+ * @brief Set the mirror image of the src_output to the output
+ * @details This function set the mirro image of the src_output to the output.
+ * If there is the hardware or the implementation to display the mirror image
+ * of the src_output to the output, the backend does it in this function.
+ * If the backend output gets the ability of the mirror displaying, it has to
+ * set the TDM_OUTPUT_CAPABILITY_MIRROR on the output capability.
+ * @param[in] output A output object to display the src_output image
+ * @param[in] src_output A src output object of which image is displayed on the output
+ * @param[in] transform A transform value
+ * @return #TDM_ERROR_NONE if success. Otherwise, error value.
+ * @see #output_set_mirror, #TDM_OUTPUT_CAPABILITY_MIRROR
+ */
+ tdm_error (*output_set_mirror)(tdm_output *output,
+ tdm_output *src_output,
+ tdm_transform transform);
+ /**
+ * @brief Unset the mirror image
+ * @details This function unset the mirro image of the output.
+ * @param[in] output A output object to display the src_output image
+ * @return #TDM_ERROR_NONE if success. Otherwise, error value.
+ * @see #output_set_mirror, #TDM_OUTPUT_CAPABILITY_MIRROR
+ */
+ tdm_error (*output_unset_mirror)(tdm_output *output);
+
void (*reserved4)(void);
void (*reserved5)(void);
void (*reserved6)(void);
* @brief Destroy a virtual output object of a backend module
* @param[in] voutput The voutput object
* @return #TDM_ERROR_NONE if success. Otherwise, error value.
- * @see voutput_create() function
+ * @see display_voutput_create() function
* @remark
* A backend module doesn't need to implement this function if doesn't support virtual output.
*/
tdm_error (*hwc_get_video_supported_formats)(tdm_hwc *hwc, const tbm_format **formats,
int *count);
/**
- * @brief Get the hwc video capability
+ * @brief Get the available video property array of a hwc object.
* @param[in] hwc A hwc object
- * @param[out] video_capability A hwc hwc video capability
+ * @param[out] props The available video property array
+ * @param[out] count The count of video properties
* @return #TDM_ERROR_NONE if success. Otherwise, error value.
*/
- tdm_error (*hwc_get_video_capability)(tdm_hwc *hwc,
- tdm_hwc_video_capability *video_capability);
+ tdm_error (*hwc_get_video_available_properties)(tdm_hwc *hwc, const tdm_prop **props,
+ int *count);
+
+ /**
+ * @brief Get the hwc capabilities
+ * @param[in] hwc A hwc object
+ * @param[out] capabilities A hwc hwc capability
+ * @return #TDM_ERROR_NONE if success. Otherwise, error value.
+ */
+ tdm_error (*hwc_get_capabilities)(tdm_hwc *hwc, tdm_hwc_capability *capabilities);
/**
* @brief Get the available property array of a hwc object.
* @return #TDM_ERROR_NONE if success. Otherwise, error value.
*/
tdm_error (*hwc_set_commit_handler)(tdm_hwc *hwc, tdm_hwc_commit_handler func);
+
+ /**
+ * @brief Set the property which has a given id on the hwc object.
+ * @param[in] hwc A hwc object
+ * @param[in] id The property id
+ * @param[in] value The value of the propery id
+ * @return #TDM_ERROR_NONE if success. Otherwise, error value.
+ */
+ tdm_error (*hwc_set_property)(tdm_hwc *hwc, uint32_t id, tdm_value value);
+
+ /**
+ * @brief Get the property which has a given id on the hwc object.
+ * @param[in] hwc A hwc object
+ * @param[in] id The property id
+ * @param[in] value The value of the propery id
+ * @return #TDM_ERROR_NONE if success. Otherwise, error value.
+ */
+ tdm_error (*hwc_get_property)(tdm_hwc *hwc, uint32_t id, tdm_value *value);
} tdm_func_hwc;
/**
*/
tdm_error (*hwc_window_get_constraints)(tdm_hwc_window *hwc_window,
int *constraints);
+
+ /**
+ * @brief Set the name of hwc_window
+ * @param[in] hwc_window A hwc window object
+ * @param[in] name of the hwc_window
+ * @return #TDM_ERROR_NONE if success. Otherwise, error value.
+ */
+ tdm_error (*hwc_window_set_name)(tdm_hwc_window *hwc_window,
+ const char *name);
+
+ /**
+ * @brief Get buffer flags of cursor hwc_window
+ * @param[in] hwc_window A hwc window object
+ * @param[in] width of the cursor image
+ * @param[in] height of the cursor image
+ * @param[in] stride of the cursor image
+ * @param[in] virtual address of the cursor image
+ * @return #TDM_ERROR_NONE if success. Otherwise, error value.
+ */
+ tdm_error (*hwc_window_set_cursor_image)(tdm_hwc_window *hwc_window,
+ int width, int height, int stride, void *ptr);
} tdm_func_hwc_window;
/**