Skip to content
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](https://github.com/sponsors/gnif)
* [Ko-Fi](https://ko-fi.com/lookingglass)
* [Patreon](https://www.patreon.com/gnif)
* [Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=ESQ72XUPGKXRY)
* BTC - 14ZFcYjsKPiVreHqcaekvHGL846u3ZuT13
* ETH - 0x6f8aEe454384122bF9ed28f025FBCe2Bce98db85
* XMR - 47xM4zG7b2tEj4mnSywHve4ydZzn3wzhf22snDRB7aSEcXrgUBpoT2Z4phTnyFMi1sMyQtHbdufMYRQ2PzMn3PGUJAE1dpc

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.

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.

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.

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.

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.

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.