linux-dmabuf-v1: add basic helpers for feedback

This commit is contained in:
Simon Ser 2022-12-09 18:06:26 +01:00 committed by Simon Zeni
parent 5cd14dfc91
commit b264ec7767
2 changed files with 33 additions and 0 deletions

View file

@ -98,4 +98,17 @@ bool wlr_linux_dmabuf_v1_set_surface_feedback(
struct wlr_linux_dmabuf_v1 *linux_dmabuf, struct wlr_surface *surface, struct wlr_linux_dmabuf_v1 *linux_dmabuf, struct wlr_surface *surface,
const struct wlr_linux_dmabuf_feedback_v1 *feedback); const struct wlr_linux_dmabuf_feedback_v1 *feedback);
/**
* Append a tranche at the end of the DMA-BUF feedback list.
*
* Tranches must be added with decreasing priority.
*/
struct wlr_linux_dmabuf_feedback_v1_tranche *wlr_linux_dmabuf_feedback_add_tranche(
struct wlr_linux_dmabuf_feedback_v1 *feedback);
/**
* Release resources allocated by a DMA-BUF feedback object.
*/
void wlr_linux_dmabuf_feedback_v1_finish(struct wlr_linux_dmabuf_feedback_v1 *feedback);
#endif #endif

View file

@ -1056,3 +1056,23 @@ bool wlr_linux_dmabuf_v1_set_surface_feedback(
return true; return true;
} }
struct wlr_linux_dmabuf_feedback_v1_tranche *wlr_linux_dmabuf_feedback_add_tranche(
struct wlr_linux_dmabuf_feedback_v1 *feedback) {
struct wlr_linux_dmabuf_feedback_v1_tranche *tranche =
wl_array_add(&feedback->tranches, sizeof(*tranche));
if (tranche == NULL) {
wlr_log_errno(WLR_ERROR, "Allocation failed");
return NULL;
}
memset(tranche, 0, sizeof(*tranche));
return tranche;
}
void wlr_linux_dmabuf_feedback_v1_finish(struct wlr_linux_dmabuf_feedback_v1 *feedback) {
struct wlr_linux_dmabuf_feedback_v1_tranche *tranche;
wl_array_for_each(tranche, &feedback->tranches) {
wlr_drm_format_set_finish(&tranche->formats);
}
wl_array_release(&feedback->tranches);
}