github gnif/LookingGlass B7-rc1

pre-releaseone month ago

B7 Release Candidate 1 (B7-rc1)

After many months of hard work from our team, I am pleased to announce Beta 7 Release Candidate 1 which again contains a huge amount of changes along with some very exciting new features.

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

  • GitHub
  • Ko-Fi
  • Patreon
  • Paypal
  • BTC - 14ZFcYjsKPiVreHqcaekvHGL846u3ZuT13
  • ETH - 0x6f8aEe454384122bF9ed28f025FBCe2Bce98db85
  • XMR - 47xM4zG7b2tEj4mnSywHve4ydZzn3wzhf22snDRB7aSEcXrgUBpoT2Z4phTnyFMi1sMyQtHbdufMYRQ2PzMn3PGUJAE1dpc

DirectX12

As many of you might be aware, LG has had a D3D12 back end in the DXGI capture interface for a while now. Unfortunately this back end has always been bugged with some synchronisation issues that have caused all sorts of issues which is why we never encouraged it's use and disabled it by default.

With a few recent discoveries and misuses (abuses?) of the DirectX12 API, we have found a way to create a ID3D12Resource (DX12's version of a texture) that is directly backed by memory we provide. As such we can create this texture directly inside the IVSHMEM shared memory, and then use the GPUs hardware copy engine to stream the textures directly from GPU directly into the shared memory segment.

We have been looking for a way do to this since the creation of this project, not only does it remove an additional memory copy, it offloads the copy we still need to perform from the GPU's render and compute engine.

Note: D12 still is using Microsoft's DXGI layer, but in a very different way, so it's still technically DXGI. It was just unfortunate that we
named the capture interface DXGI in Looking Glass in the first instance, confusing things.

Known Issues

It seems that some earlier AMD GPUs such as the RX570 and RX580 do not work with this new capture engine. If you have one of these GPUs if LG fails to initialize D12 it will fall back to the older capture engine, dxgi. This appears to be a driver bug in Windows and has been reported to the AMD Radeon Technology Group.

What does all this mean for you?

Lower latency, higher frame rates, lower memory bandwidth pressure, better performance in the guest, and enormously lower CPU usage. The difference this has made can not be overstated, this new capture backed is now faster and lighter then even the proprietary NvFBC interface from NVIDIA.

Combine this with the KVMFR module (provided you set it up) on the host system allowing the GPU to perform DMA transfers from shared memory, the CPU is no longer involved at all in shuffling any frame data directly anymore.

For laptop/iGPU users especially this has made a night and day difference. We have users reporting 300+UPS using the D12 capture interface, while also reporting an increased rendering performance in the guest VM.

What will happen to the old D3D12 copy backend?

We have removed the buggy and broken DirectX12 support from the older DXGI capture interface, and the new D12 capture interface is now the default unless you have overridden it in your looking-glass-host.ini file.

If you had dxgi configured to use the d3d12 copy backend in the host application's configuration file, it will now be ignored.

What will happen to the old DXGI capture interface?

It's not going anywhere, we know many people are using this on older versions of windows, and as the new D12 capture interface requires DirectX 12, obviously Windows 10 or later is required.

What about the Indirect Display Driver (IDD)

This was put on hold while the above was developed, debugged and tested to avoid needlessly duplicating testing and debugging effort. Once B7 has released focus will move almost entirely onto fininshing the Looking Glass IDD host.

Change Log

B7-rc1

  • Added the ability to specify the default playback and record devices
    for PipeWire
  • [EGL] fixed a rounding issue in the shaders on hardware that actually
    uses half precision floats (nvidia)
  • [X11] fixed issue with window managers (i3) that prevented focus
    following the mouse from working correctly
  • Detect and warn on improper guest CPU configuration
  • Update LGMP to support building under MSVC for the incoming Idd
    support
  • Fixed RGB10 support to handle both HDR and non-HDR content by means of
    HDR to SDR mapping (this does not mean HDR support in linux yet!)
  • added new input:captureOnFocus feature to automatically enter capture
    mode when the window has been focused by the user.
  • If the client is running on i3, make use of the IPC to allow LG to run
    global full screen (spans all monitors) if the new option
    i3:globalFullScreen is enabled.
  • added new win:requestActivation option to opt-out of activation
    requests from the guest
  • [X11] changed the cursor dot to a more visible cursor and added an
    optional larger cursor for the vision impared which may be enabled
    with the new option spice:largeCursorDot
  • [EGL] Added configuration parameters to disable and adjust the HDR to
    SDR mapping
  • [D12] Implemented new DirectX12 capture engine using DXGI Desktop
    Duplication
  • [DXGI & D12] Convert RGB16 to RGB10 when in HDR for a 50% memory
    transfer bandwidth saving (note that this has overheads and may not
    benefit everyone)
  • [DXGI] Removed buggy/broken D3D12 copyBackend
  • [doc] updated and restructured the documentation addressing various
    issues people have had with the installation and configuraiton of
    Looking Glass.

Don't miss a new LookingGlass release

NewReleases is sending notifications on new releases.