virtio-gpu: refactor generate_edid function to virtio_gpu_base
This functionality can be shared with upcoming use in vhost-user-gpu, so move it to the shared file to avoid duplicating it. Signed-off-by: Erico Nunes <ernunes@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20230626164708.1163239-2-ernunes@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
cd9b834688
commit
ee3729d9b0
@ -17,6 +17,7 @@
|
|||||||
#include "migration/blocker.h"
|
#include "migration/blocker.h"
|
||||||
#include "qapi/error.h"
|
#include "qapi/error.h"
|
||||||
#include "qemu/error-report.h"
|
#include "qemu/error-report.h"
|
||||||
|
#include "hw/display/edid.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -51,6 +52,22 @@ virtio_gpu_base_fill_display_info(VirtIOGPUBase *g,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
virtio_gpu_base_generate_edid(VirtIOGPUBase *g, int scanout,
|
||||||
|
struct virtio_gpu_resp_edid *edid)
|
||||||
|
{
|
||||||
|
qemu_edid_info info = {
|
||||||
|
.width_mm = g->req_state[scanout].width_mm,
|
||||||
|
.height_mm = g->req_state[scanout].height_mm,
|
||||||
|
.prefx = g->req_state[scanout].width,
|
||||||
|
.prefy = g->req_state[scanout].height,
|
||||||
|
.refresh_rate = g->req_state[scanout].refresh_rate,
|
||||||
|
};
|
||||||
|
|
||||||
|
edid->size = cpu_to_le32(sizeof(edid->edid));
|
||||||
|
qemu_edid_generate(edid->edid, sizeof(edid->edid), &info);
|
||||||
|
}
|
||||||
|
|
||||||
static void virtio_gpu_invalidate_display(void *opaque)
|
static void virtio_gpu_invalidate_display(void *opaque)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,6 @@
|
|||||||
#include "hw/virtio/virtio-gpu-bswap.h"
|
#include "hw/virtio/virtio-gpu-bswap.h"
|
||||||
#include "hw/virtio/virtio-gpu-pixman.h"
|
#include "hw/virtio/virtio-gpu-pixman.h"
|
||||||
#include "hw/virtio/virtio-bus.h"
|
#include "hw/virtio/virtio-bus.h"
|
||||||
#include "hw/display/edid.h"
|
|
||||||
#include "hw/qdev-properties.h"
|
#include "hw/qdev-properties.h"
|
||||||
#include "qemu/log.h"
|
#include "qemu/log.h"
|
||||||
#include "qemu/module.h"
|
#include "qemu/module.h"
|
||||||
@ -207,23 +206,6 @@ void virtio_gpu_get_display_info(VirtIOGPU *g,
|
|||||||
sizeof(display_info));
|
sizeof(display_info));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
virtio_gpu_generate_edid(VirtIOGPU *g, int scanout,
|
|
||||||
struct virtio_gpu_resp_edid *edid)
|
|
||||||
{
|
|
||||||
VirtIOGPUBase *b = VIRTIO_GPU_BASE(g);
|
|
||||||
qemu_edid_info info = {
|
|
||||||
.width_mm = b->req_state[scanout].width_mm,
|
|
||||||
.height_mm = b->req_state[scanout].height_mm,
|
|
||||||
.prefx = b->req_state[scanout].width,
|
|
||||||
.prefy = b->req_state[scanout].height,
|
|
||||||
.refresh_rate = b->req_state[scanout].refresh_rate,
|
|
||||||
};
|
|
||||||
|
|
||||||
edid->size = cpu_to_le32(sizeof(edid->edid));
|
|
||||||
qemu_edid_generate(edid->edid, sizeof(edid->edid), &info);
|
|
||||||
}
|
|
||||||
|
|
||||||
void virtio_gpu_get_edid(VirtIOGPU *g,
|
void virtio_gpu_get_edid(VirtIOGPU *g,
|
||||||
struct virtio_gpu_ctrl_command *cmd)
|
struct virtio_gpu_ctrl_command *cmd)
|
||||||
{
|
{
|
||||||
@ -242,7 +224,7 @@ void virtio_gpu_get_edid(VirtIOGPU *g,
|
|||||||
trace_virtio_gpu_cmd_get_edid(get_edid.scanout);
|
trace_virtio_gpu_cmd_get_edid(get_edid.scanout);
|
||||||
memset(&edid, 0, sizeof(edid));
|
memset(&edid, 0, sizeof(edid));
|
||||||
edid.hdr.type = VIRTIO_GPU_RESP_OK_EDID;
|
edid.hdr.type = VIRTIO_GPU_RESP_OK_EDID;
|
||||||
virtio_gpu_generate_edid(g, get_edid.scanout, &edid);
|
virtio_gpu_base_generate_edid(VIRTIO_GPU_BASE(g), get_edid.scanout, &edid);
|
||||||
virtio_gpu_ctrl_response(g, cmd, &edid.hdr, sizeof(edid));
|
virtio_gpu_ctrl_response(g, cmd, &edid.hdr, sizeof(edid));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -242,6 +242,8 @@ void virtio_gpu_base_reset(VirtIOGPUBase *g);
|
|||||||
void virtio_gpu_base_fill_display_info(VirtIOGPUBase *g,
|
void virtio_gpu_base_fill_display_info(VirtIOGPUBase *g,
|
||||||
struct virtio_gpu_resp_display_info *dpy_info);
|
struct virtio_gpu_resp_display_info *dpy_info);
|
||||||
|
|
||||||
|
void virtio_gpu_base_generate_edid(VirtIOGPUBase *g, int scanout,
|
||||||
|
struct virtio_gpu_resp_edid *edid);
|
||||||
/* virtio-gpu.c */
|
/* virtio-gpu.c */
|
||||||
void virtio_gpu_ctrl_response(VirtIOGPU *g,
|
void virtio_gpu_ctrl_response(VirtIOGPU *g,
|
||||||
struct virtio_gpu_ctrl_command *cmd,
|
struct virtio_gpu_ctrl_command *cmd,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user