Looking Glass Beta 3 Release Candidate 1

With 364 commits since Beta 2 I am very excited to announce the Beta 3 release Candidate 1.

If you are still using Beta 2 please be sure to read through the changelog below before upgrading.

A big thank you to the contributors that have helped to get Looking Glass to where it is today! Your support is greatly valued!

As usual, you can find the latest source archive and host executable on the LG website at: https://looking-glass.io/downloads

If you like this project and find it useful and would like to help out you can support me directly using the following platforms.

Changelog:

  • OBS: Added full cursor support
  • All: Added HDR RGB16 support
  • Client: show system strerrr for failure to open shmem file
  • All: added frame format version field and format change events to avoid checking on every frame.
  • Client: new option win:dontUpscale to prevent upscaling.
  • Client: new shortcut, ScrLck+V to toggle the video feed when using a dedicated monitor.
  • Client: reworked event logic fixing several stutter issues
  • Host: service won’t start if there is no IVSHMEM devices available.
  • Client: Direct DMA Upload from IVSHMEM for VM-VM configurations using the KVMFR module. (Removes a CPU memory copy). Note: Will not work with NVidia Linux GPU binary drivers due to lack of DMABUF support.
  • Host: increased the cursor shape buffer size for large cursors (you may need to increase your ivshmem memory size!)
  • Client: EGL only - Added Color Blind support for Protanope, Deuteranope and Tritanope (option egl:cbMode) as per Daltonize.org: Daltonize
  • Client: added large clipboard transfer support
  • Client: now defaults to grabbing the keyboard when focused (shortcuts are now passed to the VM), can be disabled with input:grabKeyboardOnFocus=n
  • Client: Spice input handling has been re-designed and is far improved.
  • Cilent: Fixed bug with EGL initialization which prevented front-buffer rendering when doubleBuffering is disabled (default).
  • Host: Installer much prettier thanks to @JJRcop
  • Host: Fixed issue with launching on pre-windows 10 systems (note: I am not testing on anything older then Windows 10, YMMV)
  • VM-VM Module: fixed building on 5.10 (note, /dev/uio0 is now gone, use /dev/kvmfr0 instead)
  • Client: New option input:ignoreWindowsKeys to work around WMs that bind the key
  • Client: New keybind ScrLck+Windows to passthrough the key to the guest for WMs that bind this key.
  • Client: Now processes mouse input via XInput, giving access to raw mouse input while in capture mode (enable with input:rawMouse).
  • Client: New autoCapture mode (disabled by default, enable with input:autoCapture), tries to keep the mouse captured without entering full capture mode when a game/application in the guest also has captured the mouse. Note this is NOT full capture mode and as such will not benefit from input:mouseSens or input:rawMouse. (please no bug reports for failure to hold onto the mouse, this is best effort only).
  • Client: New input:mouseSmoothing option (enabled by default) which applies basic integration on the mouse movements when not in raw mode (capture enabled and input:rawMouse on). This helps to reduce aliasing artifacts in movements on the guest.
  • Client: New input:captureOnly feature (default disabled) to only enable input via SPICE while in capture mode.
  • Client: New win:rotate feature to rotate the display output (EGL only at this time).
  • Client: New hotkey ScrLck+R to rotate the display on demand.
  • Host: Now properly supports rotated display outputs.
  • Client: Thanks to xyene and quantum on the VFIO discord, Wayland is mouse support is greatly improved and clipboard sync is now working. (NOTE: this is not an announcement of general Wayland support, Xorg is still the preferred platform due to Wayland limitations).
  • Host: when installed as a service it is now able to capture the windows login screen.
  • Host: Numerous QOL NvFBC fixes.
  • Host: The service will now terminate if the application reports a fatal error, or the application is closed by the user via the tray icon.
14 Likes

Great work! When can we expect install binaries?

You can download them now at Looking Glass - Download Looking Glass (as noted in the OP)

1 Like

Just upgraded from B2 to B3-rc1. Recompiled the binary for Linux and went into Windows using an external monitor and installed the new version. However I get no video output on Linux. Is there something else I need to change?

 48839042089 [I]               main.c:2272 | main                           | Looking Glass (B3-rc1-0-g185c7764ba)
 48839042103 [I]               main.c:2273 | main                           | Locking Method: Atomic
 48839112020 [I]            ivshmem.c:127  | ivshmemOpenDev                 | KVMFR Device     : /dev/shm/looking-glass
 48839141771 [I]                egl.c:225  | egl_initialize                 | Double buffering is off
 48839141780 [I]               main.c:1646 | try_renderer                   | Using Renderer: EGL
 48839142151 [I]                x11.c:104  | x11Init                        | X11 XInput 2.3 in use
 48839167485 [I]                egl.c:505  | egl_render_startup             | use native: false
 48839186762 [I]                egl.c:565  | egl_render_startup             | Multisampling enabled, max samples: 4
 48839187113 [I]                egl.c:616  | egl_render_startup             | Single buffer mode
 48839190598 [I]                egl.c:632  | egl_render_startup             | EGL       : 1.5
 48839190605 [I]                egl.c:633  | egl_render_startup             | Vendor    : AMD
 48839190607 [I]                egl.c:634  | egl_render_startup             | Renderer  : Radeon RX550/550 Series (POLARIS12, DRM 3.40.0, 5.10.7-3-MANJARO, LLVM 11.0.1)
 48839190608 [I]                egl.c:635  | egl_render_startup             | Version   : OpenGL ES 3.2 Mesa 20.3.3
 48839190610 [I]                egl.c:636  | egl_render_startup             | EGL APIs  : OpenGL OpenGL_ES 
 48839190614 [I]                egl.c:637  | egl_render_startup             | Extensions: EGL_ANDROID_blob_cache EGL_ANDROID_native_fence_sync EGL_CHROMIUM_sync_control EGL_EXT_buffer_age EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_EXT_swap_buffers_with_damage EGL_KHR_cl_event2 EGL_KHR_config_attribs EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_KHR_swap_buffers_with_damage EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_image_dma_buf_export EGL_MESA_query_driver EGL_NOK_texture_from_pixmap EGL_WL_bind_wayland_display 
 48839400262 [ ]               main.c:2098 | lg_run                         | ================================================================================
 48839400270 [I]               main.c:2099 | lg_run                         | The host application seems to not be running
 48839400271 [I]               main.c:2100 | lg_run                         | Waiting for the host application to start...
   117827849 [I]           platform.c:339  | app_init                       | System timer resolution: 48.82 ns
   117829584 [I]                app.c:445  | app_main                       | Looking Glass Host (B3-rc1)
   117841468 [E]            ivshmem.c:140  | ivshmemOpen                    | DeviceIoControl Failed: 0x00000224 (An attempt was made to attach to a device that was already attached to another device.)
   117844442 [E]                app.c:456  | app_main                       | Failed to open the IVSHMEM device
   153009380 [I]           platform.c:339  | app_init                       | System timer resolution: 48.82 ns
   153010399 [I]                app.c:445  | app_main                       | Looking Glass Host (B3-rc1)
   153023583 [I]                app.c:461  | app_main                       | IVSHMEM Size     : 32 MiB
   153024161 [I]                app.c:462  | app_main                       | IVSHMEM Address  : 0x2D30000
   153024727 [I]                app.c:463  | app_main                       | Max Pointer Size : 1024 KiB
   153025299 [I]                app.c:464  | app_main                       | KVMFR Version    : 8
   153025958 [I]                app.c:518  | app_main                       | Max Frame Size   : 13 MiB
   153026524 [I]                app.c:534  | app_main                       | Trying           : NVFBC (NVidia Frame Buffer Capture)
   153027651 [E]          wrapper.cpp:60   | NvFBCInit                      | Failed to load NvFBC64.dll: 0x0000007e (The specified module could not be found.)
   153028516 [I]                app.c:534  | app_main                       | Trying           : DXGI
   153073450 [I]               dxgi.c:416  | dxgi_init                      | Device Descripion: AMD Radeon RX 5700 XT
   153073856 [I]               dxgi.c:417  | dxgi_init                      | Device Vendor ID : 0x1002
   153074134 [I]               dxgi.c:418  | dxgi_init                      | Device Device ID : 0x731f
   153074493 [I]               dxgi.c:419  | dxgi_init                      | Device Video Mem : 8152 MiB
   153074839 [I]               dxgi.c:420  | dxgi_init                      | Device Sys Mem   : 0 MiB
   153075122 [I]               dxgi.c:421  | dxgi_init                      | Shared Sys Mem   : 14998 MiB
   153075488 [I]               dxgi.c:422  | dxgi_init                      | Feature Level    : 0xb100
   153075756 [I]               dxgi.c:423  | dxgi_init                      | Capture Size     : 2560 x 1440
   153076118 [I]               dxgi.c:424  | dxgi_init                      | AcquireLock      : enabled
   153076509 [W]               dxgi.c:439  | dxgi_init                      | Failed to set realtime GPU priority.
   153076924 [I]               dxgi.c:440  | dxgi_init                      | This is not a failure, please do not report this as an issue.
   153077303 [I]               dxgi.c:441  | dxgi_init                      | To fix this, install and run the Looking Glass host as a service.
   153077773 [I]               dxgi.c:442  | dxgi_init                      | looking-glass-host.exe InstallService
   153079836 [I]               dxgi.c:547  | dxgi_init                      | Source Format    : DXGI_FORMAT_B8G8R8A8_UNORM
   153080886 [I]                app.c:556  | app_main                       | Using            : DXGI
   207262769 [E]                app.c:272  | captureStart                   | Maximum frame size of 14745600 bytes excceds maximum space available
    98590289 [I]           platform.c:339  | app_init                       | System timer resolution: 48.82 ns
    98590737 [I]                app.c:445  | app_main                       | Looking Glass Host (B3-rc1)
    98599783 [I]                app.c:461  | app_main                       | IVSHMEM Size     : 32 MiB
    98600338 [I]                app.c:462  | app_main                       | IVSHMEM Address  : 0x2C10000
    98600891 [I]                app.c:463  | app_main                       | Max Pointer Size : 1024 KiB
    98601476 [I]                app.c:464  | app_main                       | KVMFR Version    : 8
    98602278 [I]                app.c:518  | app_main                       | Max Frame Size   : 13 MiB
    98602823 [I]                app.c:534  | app_main                       | Trying           : NVFBC (NVidia Frame Buffer Capture)
    98603978 [E]          wrapper.cpp:60   | NvFBCInit                      | Failed to load NvFBC64.dll: 0x0000007e (The specified module could not be found.)
    98604848 [I]                app.c:534  | app_main                       | Trying           : DXGI
    98646353 [I]               dxgi.c:416  | dxgi_init                      | Device Descripion: AMD Radeon RX 5700 XT
    98646994 [I]               dxgi.c:417  | dxgi_init                      | Device Vendor ID : 0x1002
    98647550 [I]               dxgi.c:418  | dxgi_init                      | Device Device ID : 0x731f
    98648109 [I]               dxgi.c:419  | dxgi_init                      | Device Video Mem : 8152 MiB
    98648661 [I]               dxgi.c:420  | dxgi_init                      | Device Sys Mem   : 0 MiB
    98649195 [I]               dxgi.c:421  | dxgi_init                      | Shared Sys Mem   : 14998 MiB
    98649759 [I]               dxgi.c:422  | dxgi_init                      | Feature Level    : 0xb100
    98650296 [I]               dxgi.c:423  | dxgi_init                      | Capture Size     : 2560 x 1440
    98650858 [I]               dxgi.c:424  | dxgi_init                      | AcquireLock      : enabled
    98651420 [W]               dxgi.c:439  | dxgi_init                      | Failed to set realtime GPU priority.
    98652027 [I]               dxgi.c:440  | dxgi_init                      | This is not a failure, please do not report this as an issue.
    98652763 [I]               dxgi.c:441  | dxgi_init                      | To fix this, install and run the Looking Glass host as a service.
    98653505 [I]               dxgi.c:442  | dxgi_init                      | looking-glass-host.exe InstallService
    98655456 [I]               dxgi.c:547  | dxgi_init                      | Source Format    : DXGI_FORMAT_B8G8R8A8_UNORM
    98656470 [I]                app.c:556  | app_main                       | Using            : DXGI
    98957977 [E]                app.c:272  | captureStart                   | Maximum frame size of 14745600 bytes excceds maximum space available
   212923587 [I]           platform.c:339  | app_init                       | System timer resolution: 48.82 ns
   212924000 [I]                app.c:445  | app_main                       | Looking Glass Host (B3-rc1)
   212932282 [I]                app.c:461  | app_main                       | IVSHMEM Size     : 32 MiB
   212932645 [I]                app.c:462  | app_main                       | IVSHMEM Address  : 0x2C80000
   212932921 [I]                app.c:463  | app_main                       | Max Pointer Size : 1024 KiB
   212933271 [I]                app.c:464  | app_main                       | KVMFR Version    : 8
   212933782 [I]                app.c:518  | app_main                       | Max Frame Size   : 13 MiB
   212934117 [I]                app.c:534  | app_main                       | Trying           : NVFBC (NVidia Frame Buffer Capture)
   212934776 [E]          wrapper.cpp:60   | NvFBCInit                      | Failed to load NvFBC64.dll: 0x0000007e (The specified module could not be found.)
   212935274 [I]                app.c:534  | app_main                       | Trying           : DXGI
   212977728 [I]               dxgi.c:416  | dxgi_init                      | Device Descripion: AMD Radeon RX 5700 XT
   212978043 [I]               dxgi.c:417  | dxgi_init                      | Device Vendor ID : 0x1002
   212978384 [I]               dxgi.c:418  | dxgi_init                      | Device Device ID : 0x731f
   212978757 [I]               dxgi.c:419  | dxgi_init                      | Device Video Mem : 8152 MiB
   212979030 [I]               dxgi.c:420  | dxgi_init                      | Device Sys Mem   : 0 MiB
   212979430 [I]               dxgi.c:421  | dxgi_init                      | Shared Sys Mem   : 14998 MiB
   212979778 [I]               dxgi.c:422  | dxgi_init                      | Feature Level    : 0xb100
   212980054 [I]               dxgi.c:423  | dxgi_init                      | Capture Size     : 2560 x 1440
   212980400 [I]               dxgi.c:424  | dxgi_init                      | AcquireLock      : enabled
   212980742 [W]               dxgi.c:439  | dxgi_init                      | Failed to set realtime GPU priority.
   212981042 [I]               dxgi.c:440  | dxgi_init                      | This is not a failure, please do not report this as an issue.
   212981468 [I]               dxgi.c:441  | dxgi_init                      | To fix this, install and run the Looking Glass host as a service.
   212981900 [I]               dxgi.c:442  | dxgi_init                      | looking-glass-host.exe InstallService
   212983654 [I]               dxgi.c:547  | dxgi_init                      | Source Format    : DXGI_FORMAT_B8G8R8A8_UNORM
   212984717 [I]                app.c:556  | app_main                       | Using            : DXGI

Help is appreciated!

Increase your IVSHMEM memory size

1 Like

Thank you a lot, this solved my problem!

I have a different question still. On version B2 I opened the LG window and pressed F11 for fullscreen and then ScrollLock to capture the input devices. To get out of LG and work in a different window I did the reverse, first ScrollLock and then F11 to decrease the window size. Currently I do not know how I can got to fullscreen mode since when I hover the mouse over the LG window or the LG window border and press F11 the key press is redirected into the VM and whatever window I have open in the VM goes fullscreen not LG.

Please update to B3-rc1, it implements full keyboard grab.

I am on B3-rc1-0-g185c7764ba.

I am sorry but your WM then is grabbing the key in such a way that we can not override it. We see the same behaviour on KDE with the Windows Key.

Thank you for your quick answer. Then I will revert back to B2 for now, which worked fairly well and update to B3 as soon as this is resolved.

I am on Gnome by the way.

Sorry I misunderstood your problem… it is supposed to redirect the key press to the VM when it’s focused, however there is an option to revert to the old behaviour. Set input:grabKeyboardOnFocus=no

2 Likes

Thank you, that’s it! I often switch in and out of the VM and this helps a lot. Everything is working great now.