/**
* Check the surface can support fence sync mechanism.
*
* It is recommended that checking fence sync is available
* for every frame because the results may change depending on
* frontbuffer rendering is activated or not.
*
* @param surface surface to check fence sync is available.
* @return TPL_TRUE if tpl_surface can support it.
*/
tpl_bool_t
tpl_surface_fence_sync_is_available(tpl_surface_t *surface);
- This API helps DDK to determine whether to deliver the acquire_fence
to signal the render complete when call the surface_enqueue.
- In backend where waiting fence is not implemented,
the result of fixed to TPL_FALSE will be returned.
- The result from the backend with the waiting fence implementation
depends on whether the frontbuffer rendering is activated.
Change-Id: I779718fdc7e8efc7890e17b0d4df4d81974a7907
Signed-off-by: Joonbum Ko <joonbum.ko@samsung.com>
tbm_surface_h tbm_surface);
/**
+ * Check the surface can support fence sync mechanism.
+ *
+ * It is recommended that checking fence sync is available
+ * for every frame because the results may change depending on
+ * frontbuffer rendering is activated or not.
+ *
+ * @param surface surface to check fence sync is available.
+ * @return TPL_TRUE if tpl_surface can support it.
+ */
+tpl_bool_t
+tpl_surface_fence_sync_is_available(tpl_surface_t *surface);
+
+/**
* Present mode types.
*
* @TPL_DISPLAY_MODE_IMMEDIATE_KHR: The presentation engine does not wait for
tpl_result_t (*set_post_interval)(tpl_surface_t *surface, int post_interval);
void (*get_size)(tpl_surface_t *surface, int *width, int *height);
+ tpl_bool_t (*fence_sync_is_available)(tpl_surface_t *surface);
};
struct _tpl_object {
return ret;
}
+
+tpl_bool_t
+tpl_surface_fence_sync_is_available(tpl_surface_t *surface)
+{
+ tpl_bool_t ret = TPL_FALSE;
+
+ if (!surface || (surface->type != TPL_SURFACE_TYPE_WINDOW)) {
+ TPL_ERR("Invalid surface!");
+ return ret;
+ }
+
+ TPL_OBJECT_LOCK(surface);
+ if (surface->backend.fence_sync_is_available)
+ ret = surface->backend.fence_sync_is_available(surface);
+
+ TPL_OBJECT_UNLOCK(surface);
+
+ return ret;
+}