diff options
| author | Simon Rettberg | 2025-03-11 14:24:19 +0100 |
|---|---|---|
| committer | Simon Rettberg | 2025-03-11 14:24:19 +0100 |
| commit | 2667c98c9d9787ef68318d3faf252b63cf1c1783 (patch) | |
| tree | 2da49fe4c5b0d9eaf086b33342e96d5f6572a3db | |
| parent | [run-virt] Trim leading/trailing spaces from fields in shares.dat (diff) | |
| download | mltk-2667c98c9d9787ef68318d3faf252b63cf1c1783.tar.gz mltk-2667c98c9d9787ef68318d3faf252b63cf1c1783.tar.xz mltk-2667c98c9d9787ef68318d3faf252b63cf1c1783.zip | |
[qemu] Make sure qxl's vgamem is at least 48MB, ram at least 64MB
| -rw-r--r-- | core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuGraphics.java | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuGraphics.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuGraphics.java index bb94a8d8..ca947e1f 100644 --- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuGraphics.java +++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuGraphics.java @@ -1,11 +1,15 @@ package org.openslx.runvirt.plugin.qemu.configuration; +import java.util.List; + import org.openslx.libvirt.domain.Domain; import org.openslx.libvirt.domain.device.Graphics.ListenType; import org.openslx.libvirt.domain.device.GraphicsSpice; import org.openslx.libvirt.domain.device.GraphicsSpice.ImageCompression; import org.openslx.libvirt.domain.device.GraphicsSpice.StreamingMode; import org.openslx.libvirt.domain.device.GraphicsVnc; +import org.openslx.libvirt.domain.device.Video; +import org.openslx.libvirt.domain.device.Video.Model; import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs; import org.openslx.runvirt.plugin.qemu.virtualization.LibvirtHypervisorQemu; import org.openslx.virtualization.configuration.transformation.TransformationException; @@ -20,6 +24,10 @@ import org.openslx.virtualization.configuration.transformation.TransformationSpe public class TransformationSpecificQemuGraphics extends TransformationSpecific<Domain, CommandLineArgs, LibvirtHypervisorQemu> { + + private static final int MIN_VGA_MEM = 48 * 1024; + private static final int MIN_RAM = 16 * 1024; + /** * Name of the configuration transformation. */ @@ -57,7 +65,7 @@ public class TransformationSpecificQemuGraphics * * @return created SPICE graphics device instance. */ - public GraphicsSpice addLocalSpiceGraphics( Domain config, boolean openGlEnabled ) + private GraphicsSpice addLocalSpiceGraphics( Domain config, boolean openGlEnabled ) { final GraphicsSpice newGraphicsSpiceDevice = config.addGraphicsSpiceDevice(); @@ -68,13 +76,30 @@ public class TransformationSpecificQemuGraphics newGraphicsSpiceDevice.setImageCompression( ImageCompression.OFF ); newGraphicsSpiceDevice.setPlaybackCompression( false ); newGraphicsSpiceDevice.setStreamingMode( StreamingMode.OFF ); - + // enable OpenGL acceleration if necessary newGraphicsSpiceDevice.setOpenGl( openGlEnabled ); return newGraphicsSpiceDevice; } + private void adjustVideoMemory( Domain config ) + { + // adjust vgamem, so higher resolutions work properly + List<Video> list = config.getVideoDevices(); + for ( Video dev : list ) { + if ( dev.getModel() == Model.QXL || dev.getVgaMem() > 0 ) { + // See https://lists.gnu.org/archive/html/qemu-devel/2012-06/msg01898.html + if ( dev.getVgaMem() < MIN_VGA_MEM ) { + dev.setVgaMem( MIN_VGA_MEM ); + } + if ( dev.getRam() < dev.getVgaMem() + MIN_RAM ) { + dev.setRam( dev.getVgaMem() + MIN_RAM ); + } + } + } + } + @Override public void transform( Domain config, CommandLineArgs args ) throws TransformationException { @@ -95,6 +120,8 @@ public class TransformationSpecificQemuGraphics // remove VNC graphics device graphicsSpiceDevice.remove(); } + // in case vmem is low, adjust to support large resolutions (4k+) + this.adjustVideoMemory( config ); // finally, add one SPICE graphics device with local Unix domain socket access this.addLocalSpiceGraphics( config, isOGL ); |
