|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [RFC QEMU PATCH 17/18] virtio-gpu: Add video hardware accelerate support for virgl
From: Honglei Huang <honglei1.huang@xxxxxxx>
Add get_drm_fd callback let the guest OS can get render node to using hw accel
codec.
Signed-off-by: Honglei Huang <honglei1.huang@xxxxxxx>
Signed-off-by: Huang Rui <ray.huang@xxxxxxx>
---
hw/display/virtio-gpu-virgl.c | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c
index d5214e0f43..aef735a427 100644
--- a/hw/display/virtio-gpu-virgl.c
+++ b/hw/display/virtio-gpu-virgl.c
@@ -13,6 +13,7 @@
#include "qemu/osdep.h"
#include "qemu/iov.h"
+#include "qemu/drm.h"
#include "trace.h"
#include "hw/virtio/virtio.h"
#include "hw/virtio/virtio-gpu.h"
@@ -827,12 +828,22 @@ static int virgl_make_context_current(void *opaque, int
scanout_idx,
qctx);
}
+static int virgl_get_drm_fd(void *opaque)
+{
+ int fd = -1;
+
+ fd = qemu_drm_rendernode_open(NULL);
+
+ return fd;
+}
+
static struct virgl_renderer_callbacks virtio_gpu_3d_cbs = {
.version = 1,
.write_fence = virgl_write_fence,
.create_gl_context = virgl_create_context,
.destroy_gl_context = virgl_destroy_context,
.make_current = virgl_make_context_current,
+ .get_drm_fd = virgl_get_drm_fd,
};
static void virtio_gpu_print_stats(void *opaque)
@@ -886,14 +897,20 @@ void virtio_gpu_virgl_reset(VirtIOGPU *g)
virgl_renderer_reset();
}
+
+
int virtio_gpu_virgl_init(VirtIOGPU *g)
{
int ret;
+#ifndef VIRGL_RENDERER_USE_VIDEO
+#define VIRGL_RENDERER_USE_VIDEO (1 << 11)
+#endif
+
#ifdef VIRGL_RENDERER_VENUS
- ret = virgl_renderer_init(g, VIRGL_RENDERER_VENUS, &virtio_gpu_3d_cbs);
+ ret = virgl_renderer_init(g, VIRGL_RENDERER_VENUS |
VIRGL_RENDERER_USE_VIDEO, &virtio_gpu_3d_cbs);
#else
- ret = virgl_renderer_init(g, 0, &virtio_gpu_3d_cbs);
+ ret = virgl_renderer_init(g, 0 | VIRGL_RENDERER_USE_VIDEO,
&virtio_gpu_3d_cbs);
#endif
if (ret != 0) {
error_report("virgl could not be initialized: %d", ret);
--
2.25.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |