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 13*db81dd6bSDongwon 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