Looking Glass - Changelog

Ditto on the catch up for this post too


Looking Glass Host Crash Fixed
In my previous post I mentioned that the host application is randomly crashing. I managed to isolate the cause yesterday and implemented a fix, it’s been 24 hours now and I am yet to see the host crash like it was prior :smiley:

1 Like

I can understand not wanting to waste the few free hours you have to document changes.

Would you like to pursue alternatives, including but not limited to: automation or Trello boards?

Funny you should mention that, only yesterday I was looking for some tool to help me track project’s and their progress. I am yet to really give Trello a go, any advice?

If you’ve used the board feature in GitLab, these boards, Trello, work the exact same way.

Whether you want to go agile, waterfall, or scrum.

Other than that, its should just help people graphically realize the state of the project so you can be less burdened with questions.

If you would like to see what a well managed large scale project looks like, take a look at the one from the Subnautica team. Note, you can even interact with the trello boards here once the link is embedded (somewhat).

1 Like

Thanks, I have actually been following the Subnautica Trello for a while, I think it would best suit my needs. I will get that sorted out as I am in desperate need to start tracking things in better detail in general, not just LG :slight_smile:

1 Like

Glad I could help. :slight_smile:

If you would like some further help with housekeeping tasks just let me know.

1 Like

Ok, let’s give this a go…

2 Likes

Looking good! :+1:

I went ahead and made the news public.

2 Likes

Last night I added DXGI 1.5 suport to Looking Glass which in some cases may improve performance substantially. As part of this the EGL renderer and DXGI capture both now also support RGB 10-bit HDR without any performance overhead. If anything it will be faster then prior.

The older DXGI API captures the desktop and then converts it to BGRA if it is not already in that format, which as it turns out many titles are not. The new API lets us bypass this conversion and take the raw frame data in it’s native format.

This locks us to requring windows 10, and I believe this new API is only available in the October 2018 update for Windows 10, it would be greaat if people could confirm. While I do not like enforcing an updated Windows install, this change is too major to ignore it’s potential benefits.

For the technical, the new API is:

6 Likes

Details of the above change are described in my latest video:

3 Likes

Good news everyone, all pending tasks holding back the Alpha 12 release have been completed! The changes between A11 and A12 are substantial and listed below. I will have A12 released within the next hour or so.

67 files changed, 6694 insertions(+), 1688 deletions(-)

Code Cleanup:

  • [client] egl: move cursor code into a separate unit
  • [client] egl: move fps code into a separate unit
  • [client] egl: move desktop code into a separate unit

Features

  • [host] Continual build integration
  • [client] add switch to disable alert messages
  • [client] Add OpenGL ES support (EGL)
  • [client] Add YUV420 support to EGL
  • [client] Add cursor rendering to EGL
  • [client] Move SDL text rendering into a separate ABI
  • [client] Update OpenGL renderer to use new font ABI
  • [client] move FPS calculations out of OpenGL
  • [client] Add FPS rendering to EGL
  • [client] Add text rendering to EGL
  • [client] Add splash rendering to EGL
  • [client] Add alert rendering to EGL
  • [client] Replicate mipmaping from OpenGL into EGL
  • [client] Make EGL the default renderer

Bugs fixed:

  • [client] don’t scale the mouse when in capture mode
  • [client] Add support for wayland
  • [host] Remove accidental usage of AVX instructions
  • [host] Fix random host re-initialization crash
  • [host] Fix rare cursor invisible bugs
  • [client] fix early pre-connect rendering

Tuning:

  • [client] Decouple host/client mouse sync
  • [host] Profile DXGI
  • [client] Schedule frame updates instead of using timeouts

Edit: Correction, the next release will be A12 to give some testing time before releasing B1.

8 Likes

A few minor changes have gone into git master, this is not a release notice but a notice of a commit that may improve spice cursor performance considerably. Please see:

5 Likes

I am working on some more updates to the Spice interface that will help both performance and hopefully bring spice guest agent communications (read, Clipboard Sync).

It’s slow going due to the fact that RedHat have not updated the spice protocol documentation since 2009 which is full of errors, typos and missing a ton of information about the later versions of the protocol. It’s even a “Draft” according to the title page.

I have opened a ticket to try to get some traction on this being updated over here:

I am honestly not surprised that it hasn’t been maintained however, as far as I am aware Looking Glass is the first and only third party spice client implementation to date.

2 Likes

Made some more progress today, the latest version in git now supports client to host clipboard sync for text. To make it work you will need to ensure you have the spice-agent tools installed in windows and the appopriate spicevmc device on the guest.

 -device virtio-serial-pci \
 -chardev spicevmc,debug=10,id=vdagent,name=vdagent \
 -device virtserialport,chardev=vdagent,name=com.redhat.spice.0
3 Likes

Demo of new Clipboard Functionality:

4 Likes

Good news, as of a few minutes ago Looking Glass just got host to guest clipboard sync! I will make a demo video when I get a chance a bit later on.

2 Likes
1 Like

Just a status update. Over the past week I have been working on rewriting the host application for several reasons.

  1. It’s written in C++ and the rest of the project is written in C
  2. It require’s Microsoft VS to build it which is a pain
  3. It’s very windows specific
  4. The code is very convoluted from all the DXGI experimentation early on.

I am very pleased to announce there is a new c-host directory in the git repository. This is a pure C rewrite with DXGI support and preliminary XCA SHM support (Yes, you read that right, Linux support!)

Bug reports for the c-host will be ignored until I announce an official release!

This code is extremely new and experimental, expect bugs and missing features.

The state of DXGI is good, it works but with a few minor issues. XCA capture on the other hand requires some TLC to get it working correctly.

If you would like to build this application under windows it couldn’t be easier, simply install mingw64 and ensure your path is configured correctly, then run gmake.

Again there is ZERO support for the c-host at this time so please DO NOT open any issues for it unless they are Pull Requests to contribute code to the project.

6 Likes

Another long awaited update that will make many people happy. I have updated the project to make far better use of cmake. There are now options to enable/disable core features for people that want to build on platforms that may not have support for them.

It is now possible to disable the following features:

Feature cmake option default description
OpenGL ENABLE_OPENGL Enabled The Legacy OpenGL Renderer
EGL ENABLE_EGL Enabled The modern OpenGL ES Renderer
X11 Clipboard ENABLE_CB_X11 Enabled X11/Xorg Clipboard Integration

For those unfamiliar with cmake, to specify these you must pass the -D switch, for example:

mkdir build
cd build
cmake -DENABLE_OPENGL=0 ..
make
4 Likes

New feature, Scroll Lock is now also a super/escape key for additional commands.

For now there is only additional command bound which is ScrollLock+N for the EGL renderer which increases the gain/brightness of the capture source to assist with monitors with poor brightness when playing games that are dark.

Note that I am streaming at the moment, if you would like a demo just ask in the chat box.

Edit: Two more new keybinds.

ScrollLock+F= Full Screen Toggle
ScrollLock+I = Spice KB/Mouse Input Enable Toggle

3 Likes