typedef struct pepper_wl_region pepper_wl_region_t;
typedef struct pepper_surface_state pepper_surface_state_t;
typedef struct pepper_plane_entry pepper_plane_entry_t;
+typedef struct pepper_hwc_entry pepper_hwc_entry_t;
typedef struct pepper_input pepper_input_t;
typedef struct pepper_touch_point pepper_touch_point_t;
pepper_bool_t clock_used;
struct sockaddr_un addr;
+ pepper_bool_t use_hwc;
};
void
uint32_t total_time;
} frame;
+ pepper_hwc_t *hwc;
+
pepper_list_t plane_list;
pepper_list_t view_list;
};
pepper_list_t link;
};
+struct pepper_hwc_entry {
+ pepper_render_item_t base;
+
+ pepper_hwc_t *hwc;
+ pepper_bool_t need_damage;
+ pepper_bool_t need_transform_update;
+
+ pepper_bool_t active; // active means that this entry is active on render target.
+
+ pepper_list_t link;
+};
+
enum {
PEPPER_VIEW_GEOMETRY_DIRTY = 0x00000001,
PEPPER_VIEW_ACTIVE_DIRTY = 0x00000002,
/* Output info. */
uint32_t output_overlap;
pepper_plane_entry_t plane_entries[PEPPER_MAX_OUTPUT_COUNT];
+ pepper_hwc_entry_t hwc_entries[PEPPER_MAX_OUTPUT_COUNT];
/* Temporary resource. */
pepper_list_t link;
pepper_plane_update(pepper_plane_t *plane, const pepper_list_t *view_list,
pepper_region_t *clip);
+struct pepper_hwc {
+ pepper_object_t base;
+ pepper_output_t *output;
+
+ pepper_list_t entry_list; // source render_list on the render_target
+ pepper_region_t damage_region;
+ pepper_region_t clip_region;
+};
+
+
void
pepper_surface_flush_damage(pepper_surface_t *surface);
#endif
/**
+ * @typedef pepper_hwc_t
+ *
+ * A #pepper_hwc_t is a hw compositor of an output.
+ */
+typedef struct pepper_hwc pepper_hwc_t;
+
+/**
* @typedef pepper_plane_t
*
* A #pepper_plane_t is a separate layer of an output stacked from bottom to top.
* - #pepper_touch_t
* - #pepper_input_device_t
* - #pepper_plane_t (used internally)
+ * - #pepper_hwc_t (used internally)
*
* Casting the above objects into #pepper_object_t is safe.
*/
PEPPER_OBJECT_TOUCH, /**< #pepper_touch_t */
PEPPER_OBJECT_INPUT_DEVICE, /**< #pepper_input_device_t */
PEPPER_OBJECT_PLANE, /**< #pepper_plane_t (internally used) */
+ PEPPER_OBJECT_HWC, /**< #pepper_hwc_t (internally used) */
PEPPER_OBJECT_SUBCOMPOSITOR,/**< #pepper_compositor_t */
} pepper_object_type_t;