qemu: Generate 'xres' and 'yres' for QEMU video devices

This commit let QEMU command line define 'xres' and 'yres' properties
if XML contains both properties from video model: based on resolution
fields 'x' and 'y'. There is a conditional structure inside
qemuDomainDeviceDefValidateVideo() that validates if video model
supports this feature. This commit includes the necessary changes to
cover resolution for 'video-qxl-resolution' test cases too.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Julio Faracco <jcfaracco@gmail.com>
This commit is contained in:
Julio Faracco 2019-10-17 01:30:32 -03:00 committed by Cole Robinson
parent 7286279797
commit 71519d4638
5 changed files with 23 additions and 3 deletions

View File

@ -4598,6 +4598,11 @@ qemuBuildDeviceVideoStr(const virDomainDef *def,
virBufferAsprintf(&buf, ",vgamem=%uk", video->vram);
}
if (video->res && video->res->x && video->res->y) {
/* QEMU accepts resolution xres and yres. */
virBufferAsprintf(&buf, ",xres=%u,yres=%u", video->res->x, video->res->y);
}
if (qemuBuildDeviceAddressStr(&buf, def, &video->info, qemuCaps) < 0)
return NULL;

View File

@ -5774,6 +5774,17 @@ qemuDomainDeviceDefValidateVideo(const virDomainVideoDef *video)
}
}
if (video->type != VIR_DOMAIN_VIDEO_TYPE_VGA &&
video->type != VIR_DOMAIN_VIDEO_TYPE_QXL &&
video->type != VIR_DOMAIN_VIDEO_TYPE_VIRTIO &&
video->type != VIR_DOMAIN_VIDEO_TYPE_BOCHS) {
if (video->res) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("model resolution is not supported"));
return -1;
}
}
if (video->type == VIR_DOMAIN_VIDEO_TYPE_VGA ||
video->type == VIR_DOMAIN_VIDEO_TYPE_VMVGA) {
if (video->vram && video->vram < 1024) {

View File

@ -28,5 +28,5 @@ server,nowait \
-drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-ide0-0-0 \
-device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \
-device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vgamem_mb=8,\
bus=pci.0,addr=0x2 \
xres=1280,yres=720,bus=pci.0,addr=0x2 \
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3

View File

@ -30,7 +30,9 @@
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<video>
<model type='qxl' ram='65536' vram='65536' vgamem='8192' heads='1' primary='yes'/>
<model type='qxl' ram='65536' vram='65536' vgamem='8192' heads='1' primary='yes'>
<resolution x='1280' y='720'/>
</model>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>

View File

@ -30,7 +30,9 @@
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<video>
<model type='qxl' ram='65536' vram='65536' vgamem='8192' heads='1' primary='yes'/>
<model type='qxl' ram='65536' vram='65536' vgamem='8192' heads='1' primary='yes'>
<resolution x='1280' y='720'/>
</model>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>