int zpos;
unsigned int format_count; /**< The count of available formats */
- tbm_format
- *formats; /**< The @b newly-allocated array of formats. will be freed in frontend. */
+ tbm_format *formats; /**< The @b newly-allocated array of formats. will be freed in frontend. */
unsigned int prop_count; /**< The count of available properties */
tdm_prop *props; /**< The @b newly-allocated array of properties. will be freed in frontend. */
* @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.
* @brief Set the client(relative to the TDM) target buffer
* @details This function lets the backend know the target buffer.
* The target buffer contains the result of the gl composition with the
- * tdm_hwc_windows which marked as TDM_COMPOSITION_CLIENT.
+ * tdm_hwc_windows which marked as TDM_HWC_WIN_COMPOSITION_CLIENT.
* @param[in] hwc A hwc object
* @param[in] target_buffer The new target buffer
* @param[in] damage The buffer damage region
* @details Retrieves the windows for which the backend requires a different
* composition types that had been set prior to the last call to tdm_hwc_validate().
* The client will either update its state with these types and call
- * tdm_hwc_accept_changes, or will set new types and attempt to validate the
+ * tdm_hwc_accept_validation, or will set new types and attempt to validate the
* display again. The number of elements returned must be the same as the
* value returned in num_types from the last call to tdm_hwc_validate().
* @param[in] hwc A hwc object
tdm_hwc_window **hwc_window,
tdm_hwc_window_composition *composition_types);
/**
- * @brief Accepts the changes required by the backend
- * @details Accepts the changes required by the backend from the previous
+ * @brief Accepts the validation required by the backend
+ * @details Accepts the validation required by the backend from the previous
* tdm_hwc_validate() and tdm_hwc_get_chaged_composition_types().
* @param[in] hwc A hwc object
* @return #TDM_ERROR_NONE if success. Otherwise, error value.
* @since 2.0.0
*/
- tdm_error (*hwc_accept_changes)(tdm_hwc *hwc);
+ tdm_error (*hwc_accept_validation)(tdm_hwc *hwc);
/**
* @brief Commit changes for 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;
/**