1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /*
- * Virtio vhost-user GPU Device
- *
- * GBM helpers
- *
- * This work is licensed under the terms of the GNU GPL, version 2 or later.
- * See the COPYING file in the top-level directory.
- */
- #ifndef VHOST_USER_GPU_VUGBM_H
- #define VHOST_USER_GPU_VUGBM_H
- #include "qemu/osdep.h"
- #ifdef CONFIG_MEMFD
- #include <sys/mman.h>
- #include <sys/ioctl.h>
- #endif
- #ifdef CONFIG_GBM
- #include <gbm.h>
- #endif
- struct vugbm_buffer;
- struct vugbm_device {
- bool inited;
- int fd;
- #ifdef CONFIG_GBM
- struct gbm_device *dev;
- #endif
- bool (*alloc_bo)(struct vugbm_buffer *buf);
- void (*free_bo)(struct vugbm_buffer *buf);
- bool (*get_fd)(struct vugbm_buffer *buf, int *fd);
- bool (*map_bo)(struct vugbm_buffer *buf);
- void (*unmap_bo)(struct vugbm_buffer *buf);
- void (*device_destroy)(struct vugbm_device *dev);
- };
- struct vugbm_buffer {
- struct vugbm_device *dev;
- #ifdef CONFIG_MEMFD
- int memfd;
- #endif
- #ifdef CONFIG_GBM
- struct gbm_bo *bo;
- void *mmap_data;
- #endif
- uint8_t *mmap;
- uint32_t width;
- uint32_t height;
- uint32_t stride;
- uint32_t format;
- };
- bool vugbm_device_init(struct vugbm_device *dev, int fd);
- void vugbm_device_destroy(struct vugbm_device *dev);
- bool vugbm_buffer_create(struct vugbm_buffer *buffer, struct vugbm_device *dev,
- uint32_t width, uint32_t height);
- bool vugbm_buffer_can_get_dmabuf_fd(struct vugbm_buffer *buffer);
- bool vugbm_buffer_get_dmabuf_fd(struct vugbm_buffer *buffer, int *fd);
- void vugbm_buffer_destroy(struct vugbm_buffer *buffer);
- #endif
|