Looking Glass - Triage

Try disabling in windows the QXL, or other video card you have present in device manager. Sounds crazy but is exactly what I’m doing. When you do this you will loose video in your spice client and only have looking-glass and external displays to use.

1 Like

thank you, now it just works.
however, the windows desktop is very low resolution, and windows is unable to change its resolution in display settings. is there any way to fix that?
under the “radeon RX 590 Series properties” tab from the display settings, if i hit “list all Modes” it only shows “640x480, true color (32bit), 59 hertz” and “640x480, true color (32bit), 60 hertz” as options.
UPDATE: ive tried running the half life 2 lost coast benchmark on my VM with looking glass while stuck in this low-re mode. it got 82fps, which is very odd as the host has the same GPU and gets several hundred FPS in that game,

What kind of external display do you have connected? You will need to have some sort of termination on the GPU still. Can be a monitor or if you are solely wanting to use looking glass, a dummy connector.

1 Like

i do not have any physical monitor connected to the VM’s GPU. Looking-Glass’ website frontpage states that it eliminates the need for a physical monitor.

i do not currently own a monitor that is compatible with the VM’s GPU.

Without something on the GPU, it will not be able to negotiate resolutions. I recommend a HDMI dummy plug like this.

As for the preformance, is it a q35 or a 440 based VM?

pc-i440fx-3.1

so is it not possible to create a true headless gaming VM? only one with a false monitor on the GPU?

Not without a dummy plug. Nothing looking glass can do to bypass that. The GPU needs to see a display connected.

As for more performance, a q35 based machine will give better results. Check out this thread, time of info in it.

2 Likes

so i now have a monitor and am trying to play a game with looking glass. but everytime i launch a game looking glass host crashes with this error

DXGI.cpp:328 | Capture::DXGI::Initialize | DuplicateOutput1 Failed: 0x80070005 (Access is denied.)
[E] Service.cpp:190 | Service::ReInit | ReInitialize Failed

not sure if it matters, but i have looking glass running at login by having it added to the registry setting stated in the quickstart guide. i appened the -f switch to this registry setting so that i could see on the monitor any errors that might happen.

Please provide the full output from the host when running it in foreground mode.

looking-glass-host.exe -f

1 Like

Make sure that you have set the permissions on the shm and that it is added to the virtual machines definition.

https://looking-glass.hostfission.com/quickstart/linux/libvirt

DuplicateOutput1 Failed: 0x80070005 (Access is denied.) is a capture API failure and has nothing to do with the ivshmem device. I really need to see the entire output to have a hope of diagnosis.

2 Likes

here you go, hope this helps.

[I]     CaptureFactory.h:83   | CaptureFactory::DetectDevice   | Trying DXGI
[I]             DXGI.cpp:232  | Capture::DXGI::Initialize      | Device Descripion: Radeon RX 590 Series
[I]             DXGI.cpp:233  | Capture::DXGI::Initialize      | Device Vendor ID : 0x1002
[I]             DXGI.cpp:234  | Capture::DXGI::Initialize      | Device Device ID : 0x67df
[I]             DXGI.cpp:235  | Capture::DXGI::Initialize      | Device Video Mem : 8172 MB
[I]             DXGI.cpp:236  | Capture::DXGI::Initialize      | Device Sys Mem   : 0 MB
[I]             DXGI.cpp:237  | Capture::DXGI::Initialize      | Shared Sys Mem   : 4094 MB
[I]             DXGI.cpp:241  | Capture::DXGI::Initialize      | Capture Size     : 1920 x 1080
[I]             DXGI.cpp:298  | Capture::DXGI::Initialize      | Feature Level    : 0xc000
[I]             DXGI.cpp:335  | Capture::DXGI::Initialize      | Source Format    : DXGI_FORMAT_B8G8R8A8_UNORM
[I]     CaptureFactory.h:86   | CaptureFactory::DetectDevice   | Using DXGI
[I]          Service.cpp:125  | Service::InitPointers          | Total Available :  32 MB
[I]          Service.cpp:126  | Service::InitPointers          | Max Cursor Size :   1 MB
[I]          Service.cpp:127  | Service::InitPointers          | Max Frame Size  :  15 MB
[I]          Service.cpp:128  | Service::InitPointers          | Cursor          : 00000209A3FD0080 (0x00000080)
[I]          Service.cpp:134  | Service::InitPointers          | Frame 0         : 00000209A40D0080 (0x00100080)
[I]          Service.cpp:134  | Service::InitPointers          | Frame 1         : 00000209A5050000 (0x01080000)
[I]             DXGI.cpp:654  | Capture::DXGI::Capture         | Pixel Format     : DXGI_FORMAT_B8G8R8A8_UNORM
[I]          Service.cpp:214  | Service::Process               | Restart Requested
[I]             DXGI.cpp:232  | Capture::DXGI::Initialize      | Device Descripion: Radeon RX 590 Series
[I]             DXGI.cpp:233  | Capture::DXGI::Initialize      | Device Vendor ID : 0x1002
[I]             DXGI.cpp:234  | Capture::DXGI::Initialize      | Device Device ID : 0x67df
[I]             DXGI.cpp:235  | Capture::DXGI::Initialize      | Device Video Mem : 8172 MB
[I]             DXGI.cpp:236  | Capture::DXGI::Initialize      | Device Sys Mem   : 0 MB
[I]             DXGI.cpp:237  | Capture::DXGI::Initialize      | Shared Sys Mem   : 4094 MB
[I]             DXGI.cpp:241  | Capture::DXGI::Initialize      | Capture Size     : 1920 x 1080
[I]             DXGI.cpp:298  | Capture::DXGI::Initialize      | Feature Level    : 0xc000
[I]             DXGI.cpp:335  | Capture::DXGI::Initialize      | Source Format    : DXGI_FORMAT_B8G8R8A8_UNORM
[I]             DXGI.cpp:654  | Capture::DXGI::Capture         | Pixel Format     : DXGI_FORMAT_B8G8R8A8_UNORM
[I]          Service.cpp:175  | Service::ReInit                | ReInitialize Requested
[I]             DXGI.cpp:232  | Capture::DXGI::Initialize      | Device Descripion: Radeon RX 590 Series
[I]             DXGI.cpp:233  | Capture::DXGI::Initialize      | Device Vendor ID : 0x1002
[I]             DXGI.cpp:234  | Capture::DXGI::Initialize      | Device Device ID : 0x67df
[I]             DXGI.cpp:235  | Capture::DXGI::Initialize      | Device Video Mem : 8172 MB
[I]             DXGI.cpp:236  | Capture::DXGI::Initialize      | Device Sys Mem   : 0 MB
[I]             DXGI.cpp:237  | Capture::DXGI::Initialize      | Shared Sys Mem   : 4094 MB
[I]             DXGI.cpp:241  | Capture::DXGI::Initialize      | Capture Size     : 1680 x 1050
[I]             DXGI.cpp:298  | Capture::DXGI::Initialize      | Feature Level    : 0xc000
[E]             DXGI.cpp:328  | Capture::DXGI::Initialize      | DuplicateOutput1 Failed: 0x80070005 (Access is denied.)
[E]          Service.cpp:190  | Service::ReInit                | ReInitialize Failed
Capture process returned error
Press enter to terminate...

In future please use the Preformatted Text option for log posts, I have edited your post to do so.

Clearly it isn’t just crashing, it is switching modes several times and then fails with a permission denied error.

  • What game/application are you launching when this occurs?
  • Is it every single time, or random?
  • Are you running any other capture software that might be competing for access to the capture API when you launch a game?
1 Like

i am using no other capture software when this happens.
this happens everytime i launch any steam game (from the 4 that I’ve tried) in fullscreen mode.
i have tried these games: half-life 2: lost cost, Left 4 Dead 2, Resident Evil 5, and Half Life 2.
I’ve noticed that everything works just fine when i launch the games in windowed mode, only fullscreen causes this.

1 Like

Have you enabled steam in house streaming? This is competing capture software.

2 Likes

No, Steam’s In-home streaming is disabled.
i’ve done some testing, this problem does not happen with Resident evil 6 on Steam.
i plan to test more games as my VM downloads them.
this problem also does not happen with subnautica
ive noticed that the only games that give me issues are the one’s that run at resolutions other than 1920x1080

I’m trying to setup looking glass, however I’m stuck at this message when running the host application on windows:

[I]     CaptureFactory.h:83   | CaptureFactory::DetectDevice   | Trying DXGI                                            
[I]             DXGI.cpp:232  | Capture::DXGI::Initialize      | Device Descripion: AMD Radeon HD 7700 Series           
[I]             DXGI.cpp:233  | Capture::DXGI::Initialize      | Device Vendor ID : 0x1002                              
[I]             DXGI.cpp:234  | Capture::DXGI::Initialize      | Device Device ID : 0x683f                              
[I]             DXGI.cpp:235  | Capture::DXGI::Initialize      | Device Video Mem : 2028 MB                             
[I]             DXGI.cpp:236  | Capture::DXGI::Initialize      | Device Sys Mem   : 0 MB                                
[I]             DXGI.cpp:237  | Capture::DXGI::Initialize      | Shared Sys Mem   : 4094 MB                             
[I]             DXGI.cpp:241  | Capture::DXGI::Initialize      | Capture Size     : 1920 x 1080                         
[I]             DXGI.cpp:298  | Capture::DXGI::Initialize      | Feature Level    : 0xb100                              
[I]             DXGI.cpp:335  | Capture::DXGI::Initialize      | Source Format    : DXGI_FORMAT_B8G8R8A8_UNORM          
[I]     CaptureFactory.h:86   | CaptureFactory::DetectDevice   | Using DXGI                                             
[E]          ivshmem.cpp:64   | IVSHMEM::Initialize            | Unable to enumerate the device, is it attached?        
[E]          Service.cpp:59   | Service::Initialize            | IVSHMEM failed to initalize 

What did I do wrong?

EDIT: formatting

Did you add the ivshmem device to your vms xml?

my xml:

<domain type='kvm'>
  <name>win10</name>
  <uuid>fc19726c-d695-4bde-97a6-d202fc218d6b</uuid>
  <metadata>
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
      <libosinfo:os id="http://microsoft.com/win/10"/>
    </libosinfo:libosinfo>
  </metadata>
  <memory unit='KiB'>8388608</memory>
  <currentMemory unit='KiB'>8388608</currentMemory>
  <vcpu placement='static'>6</vcpu>
  <os>
    <type arch='x86_64' machine='pc-q35-3.0'>hvm</type>
    <loader readonly='yes' type='pflash'>/usr/share/ovmf/x64/OVMF_CODE.fd</loader>
    <nvram>/var/lib/libvirt/qemu/nvram/win10_VARS.fd</nvram>
    <boot dev='hd'/>
    <bootmenu enable='yes'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
      <vendor_id state='on' value='0123456789ab'/>
    </hyperv>
    <kvm>
      <hidden state='on'/>
    </kvm>
    <vmport state='off'/>
  </features>
  <cpu mode='host-passthrough' check='partial'>
    <topology sockets='1' cores='6' threads='1'/>
  </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>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/win10.qcow2'/>
      <target dev='sda' bus='sata'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none' io='native'/>
      <source dev='/dev/sdb'/>
      <target dev='sdb' bus='sata'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/images/virtio-win.iso'/>
      <target dev='sdc' bus='sata'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
    </disk>
    <controller type='usb' index='0' model='qemu-xhci' ports='15'>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
    </controller>
    <controller type='sata' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
    </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-to-pci-bridge'>
      <model name='pcie-pci-bridge'/>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
    </controller>
    <serial type='pty'>
      <target type='isa-serial' port='0'>
        <model name='isa-serial'/>
      </target>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <input type='tablet' bus='usb'>
      <address type='usb' bus='0' port='1'/>
    </input>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='spice' autoport='yes' keymap='sl'>
      <listen type='address'/>
      <image compression='off'/>
      <gl enable='no'/>
    </graphics>
    <sound model='ich9'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/>
    </sound>
    <video>
      <model type='qxl' ram='65536' vram='65536' vgamem='65536' heads='1' primary='yes'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
    </video>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x1e' slot='0x00' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x1f' slot='0x00' function='0x1'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x1f' slot='0x00' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
    </hostdev>
    <redirdev bus='usb' type='spicevmc'>
      <address type='usb' bus='0' port='2'/>
    </redirdev>
    <redirdev bus='usb' type='spicevmc'>
      <address type='usb' bus='0' port='3'/>
    </redirdev>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
    </memballoon>
    <shmem name='looking-glass'>
      <model type='ivshmem-plain'/>
      <size unit='M'>32</size>
      <address type='pci' domain='0x0000' bus='0x08' slot='0x01' function='0x0'/>
    </shmem>
  </devices>
</domain>

Okay, did you install the driver?


More importantly, are you following this guide?

https://looking-glass.hostfission.com/quickstart