xref: /qemu/include/ui/dmabuf.h (revision db81dd6b)
16e6ae491SDongwon Kim /*
26e6ae491SDongwon Kim  * SPDX-License-Identifier: GPL-2.0-or-later
36e6ae491SDongwon Kim  *
46e6ae491SDongwon Kim  * QemuDmaBuf struct and helpers used for accessing its data
56e6ae491SDongwon Kim  *
66e6ae491SDongwon Kim  * This work is licensed under the terms of the GNU GPL, version 2 or later.
76e6ae491SDongwon Kim  * See the COPYING file in the top-level directory.
86e6ae491SDongwon Kim  */
96e6ae491SDongwon Kim 
106e6ae491SDongwon Kim #ifndef DMABUF_H
116e6ae491SDongwon Kim #define DMABUF_H
126e6ae491SDongwon Kim 
13db81dd6bSDongwon Kim typedef struct QemuDmaBuf QemuDmaBuf;
146e6ae491SDongwon Kim 
156e6ae491SDongwon Kim QemuDmaBuf *qemu_dmabuf_new(uint32_t width, uint32_t height,
166e6ae491SDongwon Kim                             uint32_t stride, uint32_t x,
176e6ae491SDongwon Kim                             uint32_t y, uint32_t backing_width,
186e6ae491SDongwon Kim                             uint32_t backing_height, uint32_t fourcc,
196e6ae491SDongwon Kim                             uint64_t modifier, int dmabuf_fd,
206e6ae491SDongwon Kim                             bool allow_fences, bool y0_top);
216e6ae491SDongwon Kim void qemu_dmabuf_free(QemuDmaBuf *dmabuf);
226e6ae491SDongwon Kim 
236e6ae491SDongwon Kim G_DEFINE_AUTOPTR_CLEANUP_FUNC(QemuDmaBuf, qemu_dmabuf_free);
246e6ae491SDongwon Kim 
256e6ae491SDongwon Kim int qemu_dmabuf_get_fd(QemuDmaBuf *dmabuf);
266e6ae491SDongwon Kim int qemu_dmabuf_dup_fd(QemuDmaBuf *dmabuf);
276e6ae491SDongwon Kim void qemu_dmabuf_close(QemuDmaBuf *dmabuf);
286e6ae491SDongwon Kim uint32_t qemu_dmabuf_get_width(QemuDmaBuf *dmabuf);
296e6ae491SDongwon Kim uint32_t qemu_dmabuf_get_height(QemuDmaBuf *dmabuf);
306e6ae491SDongwon Kim uint32_t qemu_dmabuf_get_stride(QemuDmaBuf *dmabuf);
316e6ae491SDongwon Kim uint32_t qemu_dmabuf_get_fourcc(QemuDmaBuf *dmabuf);
326e6ae491SDongwon Kim uint64_t qemu_dmabuf_get_modifier(QemuDmaBuf *dmabuf);
336e6ae491SDongwon Kim uint32_t qemu_dmabuf_get_texture(QemuDmaBuf *dmabuf);
346e6ae491SDongwon Kim uint32_t qemu_dmabuf_get_x(QemuDmaBuf *dmabuf);
356e6ae491SDongwon Kim uint32_t qemu_dmabuf_get_y(QemuDmaBuf *dmabuf);
366e6ae491SDongwon Kim uint32_t qemu_dmabuf_get_backing_width(QemuDmaBuf *dmabuf);
376e6ae491SDongwon Kim uint32_t qemu_dmabuf_get_backing_height(QemuDmaBuf *dmabuf);
386e6ae491SDongwon Kim bool qemu_dmabuf_get_y0_top(QemuDmaBuf *dmabuf);
396e6ae491SDongwon Kim void *qemu_dmabuf_get_sync(QemuDmaBuf *dmabuf);
406e6ae491SDongwon Kim int32_t qemu_dmabuf_get_fence_fd(QemuDmaBuf *dmabuf);
416e6ae491SDongwon Kim bool qemu_dmabuf_get_allow_fences(QemuDmaBuf *dmabuf);
426e6ae491SDongwon Kim bool qemu_dmabuf_get_draw_submitted(QemuDmaBuf *dmabuf);
436e6ae491SDongwon Kim void qemu_dmabuf_set_texture(QemuDmaBuf *dmabuf, uint32_t texture);
446e6ae491SDongwon Kim void qemu_dmabuf_set_fence_fd(QemuDmaBuf *dmabuf, int32_t fence_fd);
456e6ae491SDongwon Kim void qemu_dmabuf_set_sync(QemuDmaBuf *dmabuf, void *sync);
466e6ae491SDongwon Kim void qemu_dmabuf_set_draw_submitted(QemuDmaBuf *dmabuf, bool draw_submitted);
476e6ae491SDongwon Kim void qemu_dmabuf_set_fd(QemuDmaBuf *dmabuf, int32_t fd);
486e6ae491SDongwon Kim 
496e6ae491SDongwon Kim #endif
50