mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
contrib: add vhost-user-gpu
Add a vhost-user gpu backend, based on virtio-gpu/3d device. It is associated with a vhost-user-gpu device. Various TODO and nice to have items: - multi-head support - crash & resume handling - accelerated rendering/display that avoids the waiting round trips - edid support Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-id: 20190524130946.31736-6-marcandre.lureau@redhat.com Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
b213fee8a7
commit
d52c454aad
13 changed files with 2427 additions and 2 deletions
67
contrib/vhost-user-gpu/vugbm.h
Normal file
67
contrib/vhost-user-gpu/vugbm.h
Normal file
|
@ -0,0 +1,67 @@
|
|||
/*
|
||||
* 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_GBM_H
|
||||
#define VHOST_USER_GPU_GBM_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
|
Loading…
Add table
Add a link
Reference in a new issue