提交 ac987148 编写于 作者: P Pavel Hrdina

qemu_command: introduce enum of secondary models for video device

There are two video devices with models without VGA compatibility mode.
They are primary used as secondary video devices, but in some cases it
is required to use them also as primary video devices.
Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
上级 724d5178
...@@ -114,6 +114,18 @@ VIR_ENUM_IMPL(qemuDeviceVideo, VIR_DOMAIN_VIDEO_TYPE_LAST, ...@@ -114,6 +114,18 @@ VIR_ENUM_IMPL(qemuDeviceVideo, VIR_DOMAIN_VIDEO_TYPE_LAST,
"", /* don't support parallels */ "", /* don't support parallels */
"virtio-vga"); "virtio-vga");
VIR_ENUM_DECL(qemuDeviceVideoSecondary)
VIR_ENUM_IMPL(qemuDeviceVideoSecondary, VIR_DOMAIN_VIDEO_TYPE_LAST,
"", /* no secondary device for VGA */
"", /* no secondary device for cirrus-vga */
"", /* no secondary device for vmware-svga */
"", /* don't support xen */
"", /* don't support vbox */
"qxl",
"", /* don't support parallels */
"virtio-gpu-pci");
VIR_ENUM_DECL(qemuSoundCodec) VIR_ENUM_DECL(qemuSoundCodec)
VIR_ENUM_IMPL(qemuSoundCodec, VIR_DOMAIN_SOUND_CODEC_TYPE_LAST, VIR_ENUM_IMPL(qemuSoundCodec, VIR_DOMAIN_SOUND_CODEC_TYPE_LAST,
...@@ -4258,18 +4270,20 @@ qemuBuildDeviceVideoStr(const virDomainDef *def, ...@@ -4258,18 +4270,20 @@ qemuBuildDeviceVideoStr(const virDomainDef *def,
virBuffer buf = VIR_BUFFER_INITIALIZER; virBuffer buf = VIR_BUFFER_INITIALIZER;
const char *model; const char *model;
if (video->primary) { /* We try to chose the best model for primary video device by preferring
* model with VGA compatibility mode. For some video devices on some
* architectures there might not be such model so fallback to one
* without VGA compatibility mode. */
if (video->primary && qemuDomainSupportsVideoVga(video, qemuCaps))
model = qemuDeviceVideoTypeToString(video->type); model = qemuDeviceVideoTypeToString(video->type);
if (!model || STREQ(model, "")) { else
virReportError(VIR_ERR_INTERNAL_ERROR, model = qemuDeviceVideoSecondaryTypeToString(video->type);
_("invalid model for video type '%s'"),
virDomainVideoTypeToString(video->type)); if (!model || STREQ(model, "")) {
goto error; virReportError(VIR_ERR_INTERNAL_ERROR,
} _("invalid model for video type '%s'"),
if (!qemuDomainSupportsVideoVga(video, qemuCaps)) virDomainVideoTypeToString(video->type));
model = "virtio-gpu-pci"; goto error;
} else {
model = "qxl";
} }
virBufferAsprintf(&buf, "%s,id=%s", model, video->info.alias); virBufferAsprintf(&buf, "%s,id=%s", model, video->info.alias);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册