X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=include%2Ftdm_types.h;h=d9ab9848ce5d4e6f476090a3e8a816ef0c8014cc;hb=c1f7ee3070a2cf11d5eaaede1312ef13a0f036cf;hp=c596ac672986ad97f57fd09ee6eceeec6d754bc0;hpb=d47abbabf3332fcc8c410810f12216e79a25c459;p=platform%2Fcore%2Fuifw%2Flibtdm.git diff --git a/include/tdm_types.h b/include/tdm_types.h index c596ac6..d9ab984 100644 --- a/include/tdm_types.h +++ b/include/tdm_types.h @@ -161,67 +161,66 @@ typedef struct _tdm_info_capture { */ typedef enum { - /** Set by the client for an invisible window. The value by default. + /** The composition type for an invisible window. The value by default. * - * The device ignores windows of this type. + * The backend ignores windows of this type. */ - TDM_COMPOSITION_NONE = 0, + TDM_HWC_WIN_COMPOSITION_NONE = 0, - /** The client will composite this window into the client target window + /** The compostion type for an window to be compsoited by the client. * - * User can choose this type for window to avoid a hardware composition for - * this window. + * When the client sets this composition type, + * the backend MUST NOT modify this composition type into other types. * - * The device must not request any composition type changes for windows of - * this type. + * When the backend changes TDM_HWC_WIN_COMPOSITION_DEVICE or TDM_HWC_WIN_COMPOSITION_CURSOR + * to this composition type at the time of tdm_hwc_validate and + * tdm_hwc_get_changed_composition_types, + * the client has to composite this window with gl or other drawing operations. */ - TDM_COMPOSITION_CLIENT = 1, + TDM_HWC_WIN_COMPOSITION_CLIENT = 1, - /** Set by the HWC after tdm_hwc_validate(). + /** The compostion type for an window to be set to the hw overlay. * - * The device will handle the composition of this window through a hardware - * overlay or other similar means. - * - * Upon tdm_hwc_validate(), the device may request a change from this type to - * TDM_COMPOSITION_CLIENT or TDM_COMPOSITION_DEVICE_CANDIDATE. */ - TDM_COMPOSITION_DEVICE = 3, - - /** Similar to DEVICE, but the position of this layer may also be set - * asynchronously through layer_set_cursor_position. If this functionality is not - * supported on a layer that the client sets to TDM_COMPOSITION_CURSOR, the - * device must request that the composition type of that layer is changed to - * TDM_COMPOSITION_CLIENT upon the next call to tdm_hwc_validate(). + * The client sets this composition type to the visible windows before requesting + * the tdm_hwc_validate. + * Nomally, the backend leave it if the backend sets the window to the hw overlay. + * If the backend does not set the window to the hw overlay at the time of + * tdm_hwc_validate, the backend changes the composition type of the window into + * TDM_HWC_WIN_COMPOSITION_CLIENT. + */ + TDM_HWC_WIN_COMPOSITION_DEVICE = 3, + + /** The compostion type for an window to be set to the cursor hw overlay. * - * Upon tdm_hwc_validate(), the device may request a change from this type to - * either TDM_COMPOSITION_DEVICE or TDM_COMPOSITION_CLIENT. Changing to - * TDM_COMPOSITION_DEVICE will prevent the use of layer_set_cursor_position but - * still permit the device to composite the layer. */ - TDM_COMPOSITION_CURSOR = 4, - - /** This type is for the VIDEO window which can be set to the reserved hw overlay - * which is assigned by the device. + * The client sets this composition type to the cursor window before requesting + * the tdm_hwc_validate. + * If the backend does not support the cursor hw overlay, the backend can change + * the comopsition type into the TDM_HWC_WIN_COMPOSITION_CLIENT. + */ + TDM_HWC_WIN_COMPOSITION_CURSOR = 4, + + /** The compostion type for an window to be set to the video hw overlay. * - * Normally, this VIDEO window displays under the primary hw overlayer of the output. */ - TDM_COMPOSITION_VIDEO = 5, + * The client sets this composition type to the video window before requesting + * the tdm_hwc_validate. + * If the backend does not support the video hw overlay, the backend can change + * the comopsition type into the TDM_HWC_WIN_COMPOSITION_CLIENT. + * Normally, this VIDEO window displays under the primary hw overlayer of the output. + */ + TDM_HWC_WIN_COMPOSITION_VIDEO = 5, } tdm_hwc_window_composition; typedef enum { - TDM_PREPARATION_NONE = 0, + TDM_HWC_WIN_CONSTRAINT_NONE = 0, /** If the client needs to render to a specific buffer for compositing - * with TDM_COMPOSITION_DEVICE, Set TDM_PREPARATION_BUFFER_QUEUE type to hwc_window. - * The client will render next frame on buffers of queue which got by - * tdm_hwc_window_get_buffer_queue. + * with TDM_HWC_WIN_COMPOSITION_DEVICE, the backend needs to set + * TDM_HWC_WIN_CONSTRAINT_BUFFER_QUEUE to hwc_window until the hwc_window is not + * TDM_HWC_WIN_COMPOSITION_DEVICE. The client gets the tbm_surface_queue_h through + * the tdm_hwc_window_aquire_buffer_queue. It will render the frames on + * the buffers which gets from the tbm_surface_queue_h. */ - TDM_PREPARATION_BUFFER_QUEUE = (1 << 0), -} tdm_hwc_window_preparation; - -/** - * @brief The hwc window flag enumeration - * @since 2.0.0 - */ -typedef enum { - TDM_HWC_WINDOW_FLAG_NONE = 0, -} tdm_hwc_window_flag; + TDM_HWC_WIN_CONSTRAINT_BUFFER_QUEUE = (1 << 0), +} tdm_hwc_window_constraint; /** * @brief The tdm display object @@ -239,6 +238,11 @@ typedef void tdm_module; typedef void tdm_output; /** + * @brief The tdm voutput object + */ +typedef void tdm_voutput; + +/** * @brief The tdm layer object */ typedef void tdm_layer; @@ -271,6 +275,20 @@ typedef void tdm_pp; typedef void tdm_vblank; /** + * @brief The output create handler + * @details This handler will be called when the output object is + * createed in runtime. + */ +typedef void (*tdm_output_create_handler)(tdm_display *dpy, tdm_output *output, void *user_data); + +/** + * @brief The output destroy handler + * @details This handler will be called when the output object is + * destroied in runtime. + */ +typedef void (*tdm_output_destroy_handler)(tdm_output *output, void *user_data); + +/** * @brief The output change handler * @details This handler will be called when the status of a output object is * changed in runtime. @@ -297,6 +315,12 @@ typedef void (*tdm_output_commit_handler)(tdm_output *output, unsigned int seque void *user_data); /** + * @brief The output mode change request handler + */ +typedef void (*tdm_output_mode_change_request_handler)(tdm_output *output, + unsigned int index, void *user_data); + +/** * @brief The layer commit handler */ typedef void (*tdm_layer_commit_handler)(tdm_layer *layer, unsigned int sequence, @@ -328,6 +352,11 @@ typedef void (*tdm_hwc_commit_handler)(tdm_hwc *hwc, unsigned int sequence, unsigned int tv_sec, unsigned int tv_usec, void *user_data); +typedef void (*tdm_voutput_commit_handler)(tdm_voutput *voutput, unsigned int sequence, + unsigned int tv_sec, unsigned int tv_usec, + void *user_data); + +typedef void (*tdm_voutput_commit_func)(tdm_voutput *voutput, tbm_surface_h buffer); #ifdef __cplusplus } #endif