Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support hardware cursor? #1200

Open
317764920 opened this issue Nov 25, 2024 · 6 comments
Open

Support hardware cursor? #1200

317764920 opened this issue Nov 25, 2024 · 6 comments
Assignees

Comments

@317764920
Copy link

I compared QXL with virtio and found that the QXL mouse also performed much more smoothly, especially when playing videos. I have windows10 installed in the virtual machine, and when playing videos using edge, the mouse can appear very sluggish in some video frames. Any suggestions or plans to implement this part?

@YanVugenfirer
Copy link
Collaborator

We don't have any special plans for this topic.

Do you use virtio-input for the mouse?

@vrozenfe
Copy link
Collaborator

@317764920
Do you mean the cursor is sluggish with or without HW cursor enabled?
Does it depend on screen resolution?
Thanks,
Vadim.

@317764920
Copy link
Author

@vrozenfe So, the contents of my libvirt are as follows:

<domain type="kvm"> <name>xcb-app</name> <uuid>5482dd26-dad8-4419-aba5-89f747be85b9</uuid> <memory unit="KiB">8388608</memory> <currentMemory unit="KiB">8388608</currentMemory> <vcpu placement="static">3</vcpu> <iothreads>1</iothreads> <cputune> <vcpupin vcpu="0" cpuset="0"/> <vcpupin vcpu="1" cpuset="1"/> <vcpupin vcpu="2" cpuset="2"/> <emulatorpin cpuset="0-2"/> <iothreadpin iothread="1" cpuset="0-2"/> </cputune> <resource> <partition>/machine</partition> </resource> <os> <type arch="x86_64" machine="pc-q35-8.2">hvm</type> <boot dev="hd"/> <boot dev="cdrom"/> <bootmenu enable="yes" timeout="0"/> </os> <features> <acpi/> <apic/> <hyperv mode="custom"> <relaxed state="on"/> <vapic state="on"/> <spinlocks state="on" retries="8191"/> <vpindex state="on"/> <runtime state="on"/> <synic state="on"/> <stimer state="on"/> <vendor_id state="on" value="4aeb3e780c4a"/> <frequencies state="on"/> <tlbflush state="on"/> </hyperv> <kvm> <hidden state="on"/> </kvm> <vmport state="off"/> </features> <cpu mode="custom" match="exact" check="full"> <model fallback="forbid">Skylake-Client-IBRS</model> <vendor>Intel</vendor> <topology sockets="1" dies="1" cores="3" threads="1"/> <feature policy="require" name="ss"/> <feature policy="require" name="vmx"/> <feature policy="require" name="hypervisor"/> <feature policy="require" name="tsc_adjust"/> <feature policy="require" name="clflushopt"/> <feature policy="require" name="umip"/> <feature policy="require" name="md-clear"/> <feature policy="require" name="stibp"/> <feature policy="require" name="arch-capabilities"/> <feature policy="require" name="ssbd"/> <feature policy="require" name="xsaves"/> <feature policy="require" name="pdpe1gb"/> <feature policy="require" name="ibpb"/> <feature policy="require" name="ibrs"/> <feature policy="require" name="amd-stibp"/> <feature policy="require" name="amd-ssbd"/> <feature policy="require" name="rsba"/> <feature policy="require" name="skip-l1dfl-vmentry"/> <feature policy="require" name="pschange-mc-no"/> <feature policy="disable" name="hle"/> <feature policy="disable" name="rtm"/> <feature policy="disable" name="mpx"/> </cpu> <clock offset="localtime"> <timer name="rtc" tickpolicy="catchup"/> <timer name="pit" tickpolicy="delay"/> <timer name="hpet" present="no"/> <timer name="hypervclock" present="yes"/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <pm> <suspend-to-mem enabled="no"/> <suspend-to-disk enabled="no"/> </pm> <devices> <emulator>/opt/apps/xcb-base/qemu/bin/qemu-system-x86_64</emulator> <disk type="file" device="disk"> <driver name="qemu" type="qcow2" cache="none" io="native" discard="unmap" iothread="1" detect_zeroes="unmap"/> <source file="/data/xcb-app/images/41c418ebe2884e67a40cb75cc962ee9b"/> <target dev="vda" bus="virtio"/> <alias name="ua-xcb-disk0"/> <address type="pci" domain="0x0000" bus="0x06" slot="0x00" function="0x0"/> </disk> <controller type="usb" index="0" model="nec-xhci" ports="15"> <address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/> </controller> <controller type="scsi" index="0" model="virtio-scsi"> <address type="pci" domain="0x0000" bus="0x04" slot="0x00" function="0x0"/> </controller> <controller type="virtio-serial" index="0"> <address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/> </controller> <controller type="pci" index="0" model="pcie-root"/> <controller type="pci" index="1" model="pcie-root-port"> <model name="pcie-root-port"/> <target chassis="1" port="0x10"/> <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0" multifunction="on"/> </controller> <controller type="pci" index="2" model="pcie-root-port"> <model name="pcie-root-port"/> <target chassis="2" port="0x11"/> <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x1"/> </controller> <controller type="pci" index="3" model="pcie-root-port"> <model name="pcie-root-port"/> <target chassis="3" port="0x12"/> <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x2"/> </controller> <controller type="pci" index="4" model="pcie-root-port"> <model name="pcie-root-port"/> <target chassis="4" port="0x13"/> <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x3"/> </controller> <controller type="pci" index="5" model="pcie-root-port"> <model name="pcie-root-port"/> <target chassis="5" port="0x14"/> <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x4"/> </controller> <controller type="pci" index="6" model="pcie-root-port"> <model name="pcie-root-port"/> <target chassis="6" port="0x15"/> <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x5"/> </controller> <controller type="pci" index="7" model="pcie-root-port"> <model name="pcie-root-port"/> <target chassis="7" port="0x16"/> <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x6"/> </controller> <controller type="pci" index="8" model="pcie-root-port"> <model name="pcie-root-port"/> <target chassis="8" port="0x17"/> <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x7"/> </controller> <controller type="pci" index="9" model="pcie-root-port"> <model name="pcie-root-port"/> <target chassis="9" port="0x18"/> <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0" multifunction="on"/> </controller> <controller type="pci" index="10" model="pcie-root-port"> <model name="pcie-root-port"/> <target chassis="10" port="0x19"/> <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x1"/> </controller> <controller type="pci" index="11" model="pcie-to-pci-bridge"> <model name="pcie-pci-bridge"/> <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/> </controller> <controller type="sata" index="0"> <address type="pci" domain="0x0000" bus="0x00" slot="0x1f" function="0x2"/> </controller> <interface type="network"> <mac address="52:54:00:b9:5a:5a"/> <source network="xcb-app"/> <model type="virtio"/> <alias name="ua-xcb-network0"/> <address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/> </interface> <serial type="pty"> <target type="pci-serial" port="0"> <model name="pci-serial"/> </target> <address type="pci" domain="0x0000" bus="0x0b" slot="0x01" function="0x0"/> </serial> <console type="pty"> <target type="virtio" port="0"/> </console> <channel type="unix"> <target type="virtio" name="org.qemu.guest_agent.0"/> <address type="virtio-serial" controller="0" bus="0" port="1"/> </channel> <channel type="spicevmc"> <target type="virtio" name="com.redhat.spice.0"/> <address type="virtio-serial" controller="0" bus="0" port="2"/> </channel> <input type="tablet" bus="usb"> <address type="usb" bus="0" port="2"/> </input> <input type="tablet" bus="virtio"> <address type="pci" domain="0x0000" bus="0x08" slot="0x00" function="0x0"/> </input> <input type="keyboard" bus="ps2"/> <input type="mouse" bus="usb"> <address type="usb" bus="0" port="3"/> </input> <input type="mouse" bus="ps2"/> <graphics type="spice"> <listen type="socket"/> <image compression="off"/> <gl enable="no"/> </graphics> <sound model="ich9"> <address type="pci" domain="0x0000" bus="0x00" slot="0x1b" function="0x0"/> </sound> <audio id="1" type="spice"/> <video> <model type="virtio" heads="1" primary="yes"/> <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x0"/> </video> <redirdev bus="usb" type="spicevmc"> <address type="usb" bus="0" port="4"/> </redirdev> <hub type="usb"> <address type="usb" bus="0" port="1"/> </hub> <watchdog model="itco" action="reset"/> <memballoon model="virtio"> <stats period="1"/> <address type="pci" domain="0x0000" bus="0x07" slot="0x00" function="0x0"/> </memballoon> </devices> <seclabel type="dynamic" model="dac" relabel="yes"/> </domain>
I used a virtio-gpu-dod paravirtualized graphics card, and the result was, as I said, poor mouse fluency compared to the QXL, and my resolution was set at 1920x1080

@317764920
Copy link
Author

317764920 commented Nov 26, 2024

@vrozenfe I found this issues https://github.com/virtio-win/kvm-guest-drivers-windows/issues/977
When I made the registry usable, the mouse became smooth, but was there any new progress on the issue?

@vrozenfe
Copy link
Collaborator

@317764920
I have some internal fixes to support monochrome cursor. But overall I'm still not happy with the way how HW cursor works in general. Btw, do you use it over VNC or locally?

@317764920
Copy link
Author

@vrozenfe
I used the spice client to connect, and I installed vdagent on the virtual machine. So can you refer to your implementation of internal repair?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants