From 5fb6c73263fb195a01f598806b6090d21723f8a4 Mon Sep 17 00:00:00 2001 From: Jonathan Rubenstein Date: Fri, 7 May 2021 02:34:26 -0400 Subject: [PATCH] [doc] host: Imported from host/README.md Placed at bottom of Technical FAQ to hide it host/README.md removed --- doc/host.rst | 126 +++++++++++++++++++++++++++++++++++++++++++++++ doc/tech_faq.rst | 15 ++++++ host/README.md | 123 --------------------------------------------- 3 files changed, 141 insertions(+), 123 deletions(-) create mode 100644 doc/host.rst delete mode 100644 host/README.md diff --git a/doc/host.rst b/doc/host.rst new file mode 100644 index 00000000..b3e66442 --- /dev/null +++ b/doc/host.rst @@ -0,0 +1,126 @@ +Looking Glass Host +################## + +.. _host_building: + +Building +-------- + +For Windows on Windows +~~~~~~~~~~~~~~~~~~~~~~ + +1. download and install msys2 x86_64 from + `http://www.msys2.org/ `__ following the setup + instructions provided +2. execute ``pacman -Fy`` and then + ``pacman -Sy git make mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake`` +3. run "C:\msys64\mingw64.exe" +4. checkout the project + ``git clone https://github.com/gnif/LookingGlass.git`` +5. configure the project and build it + +.. code:: bash + + mkdir LookingGlass/host/build + cd LookingGlass/host/build + cmake -G "MSYS Makefiles" .. + make + +For Linux on Linux +~~~~~~~~~~~~~~~~~~ + +.. code:: bash + + mkdir build + cd build + cmake .. + make + +For Windows cross compiling on Linux +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code:: bash + + mkdir build + cd build + cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain-mingw64.cmake .. + make + +Building the Windows installer +------------------------------ + +Install NSIS compiler Build the host program, see above sections. Build +installer with ``makensis platform/Windows/installer.nsi`` The resulting +installer will be at ``platform/Windows/looking-glass-host-setup.exe`` + +.. _host_questions: + +Questions and Answers +--------------------- + +Where is the log? +~~~~~~~~~~~~~~~~~ + +The log file for the host application is located at:: + + %ProgramData%\Looking Glass (host)\looking-glass-host.txt + +You can also find out where the file is by right clicking on the tray +icon and selecting "Log File Location". + +The log file for the looking glass service is located at:: + + %ProgramData%\Looking Glass (host)\looking-glass-host-service.txt + +This is useful for troubleshooting errors related to the host +application not starting. + +High priority capture using DXGI and Secure Desktop (UAC) capture support +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +By default Windows gives priority to the foreground application for any +GPU work which causes issues with capture if the foreground application +is consuming 100% of the available GPU resources. The looking glass host +application is able to increase the kernel GPU thread to realtime +priority which fixes this, but in order to do so it must run as the +``SYSTEM`` user account. To do this, Looking Glass needs to run as a +service. This can be accomplished by either using the NSIS installer +which will do this for you, or you can use the following command to +Install the service manually: + +:: + + looking-glass-host.exe InstallService + +To remove the service use the following command: + +:: + + looking-glass-host.exe UninstallService + +This will also enable the host application to capture the secure desktop +which includes things like the lock screen and UAC prompts. + +Why does this version require Administrator privileges? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This is intentional for several reasons. + +1. NvFBC requires a system wide hook to correctly obtain the cursor + position as NVIDIA decided to not provide this as part of the cursor + updates. +2. NvFBC requires administrator level access to enable the interface in + the first place. (WIP) +3. DXGI performance can be improved if we have this. (WIP) + +NvFBC (NVIDIA Frame Buffer Capture) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Why can't I compile NvFBC support into the host? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +You must download and install the NVidia Capture SDK. Please note that +by doing so you will be agreeing to NVIDIA's SDK License agreement. + +*-Geoff* + diff --git a/doc/tech_faq.rst b/doc/tech_faq.rst index 3c0a8726..f1090842 100644 --- a/doc/tech_faq.rst +++ b/doc/tech_faq.rst @@ -64,3 +64,18 @@ Initially, we were using interrupts in early designs however it became clear that the performance, especially for high update rate mice was extremely poor. This may have improved in recent QEMU versions and perhaps should be re-evaluated at some point. + +.. _how_do_i_build_the_host: + +How do I build the looking-glass-host? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +It is not recommended to build the looking-glass-host program, and instead +download it from the `website `_. However, +if you know what you're doing, you can follow the +:doc:`build instructions `. + +.. toctree:: + :hidden: + + host diff --git a/host/README.md b/host/README.md deleted file mode 100644 index 69d6223a..00000000 --- a/host/README.md +++ /dev/null @@ -1,123 +0,0 @@ -# General Questions - -## What is this? - -The Looking Glass Host application for the Guest Virtual Machine. - -## What platforms does this support? - -Currently only Windows is supported however there is some initial support for Linux at this time. - -## How do I build it? - -#### For Windows on Windows - -1. download and install msys2 x86_64 from http://www.msys2.org/ following the setup instructions provided -3. execute `pacman -Fy` and then `pacman -Sy git make mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake` -4. run "C:\msys64\mingw64.exe" -5. checkout the project - `git clone https://github.com/gnif/LookingGlass.git` -6. configure the project and build it - -``` -mkdir LookingGlass/host/build -cd LookingGlass/host/build -cmake -G "MSYS Makefiles" .. -make -``` - -#### For Linux on Linux - -``` -mkdir build -cd build -cmake .. -make -``` - -#### For Windows cross compiling on Linux - -``` -mkdir build -cd build -cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain-mingw64.cmake .. -make -``` - -## Building the Windows installer - -Install NSIS compiler -Build the host program, see above sections. -Build installer with `makensis platform/Windows/installer.nsi` -The resulting installer will be at -`platform/Windows/looking-glass-host-setup.exe` - -## Where is the log? - -The log file for the host application is located at: - - %ProgramData%\Looking Glass (host)\looking-glass-host.txt - -You can also find out where the file is by right clicking on the tray icon and -selecting "Log File Location". - -The log file for the looking glass service is located at: - - %ProgramData%\Looking Glass (host)\looking-glass-host-service.txt - -This is useful for troubleshooting errors related to the host application not -starting. - -### High priority capture using DXGI and Secure Desktop (UAC) capture support - -By default Windows gives priority to the foreground application for any GPU -work which causes issues with capture if the foreground application is consuming -100% of the available GPU resources. The looking glass host application is able -to increase the kernel GPU thread to realtime priority which fixes this, but in -order to do so it must run as the `SYSTEM` user account. To do this, Looking -Glass needs to run as a service. This can be accomplished by either using the -NSIS installer which will do this for you, or you can use the following command -to Install the service manually: - - looking-glass-host.exe InstallService - -To remove the service use the following command: - - looking-glass-host.exe UninstallService - -This will also enable the host application to capture the secure desktop which -includes things like the lock screen and UAC prompts. - -## Why does this version require Administrator privileges - -This is intentional for several reasons. - -1. NvFBC requires a system wide hook to correctly obtain the cursor position as NVIDIA decided to not provide this as part of the cursor updates. -2. NvFBC requires administrator level access to enable the interface in the first place. (WIP) -3. DXGI performance can be improved if we have this. (WIP) - -## NvFBC (NVIDIA Frame Buffer Capture) - -### Why isn't there a build with NvFBC support available. - -~~Because NVIDIA have decided to put restrictions on the NvFBC API that simply make it incompatible with the GPL/2 licence. Providing a pre-built binary with NvFBC support would violate the EULA I have agreed to in order to access the NVidia Capture SDK.~~ - -Either I miss-read the License Agreement or it has been updated, it is now viable to produce a "derived work" from the capture SDK. - -> 1.1 License Grant. Subject to the terms of this Agreement, NVIDIA hereby grants you a nonexclusive, non-transferable, worldwide, -revocable, limited, royalty-free, fully paid-up license during the term of this Agreement to: -> (i) install, use and reproduce the Licensed Software delivered by NVIDIA plus make modifications and create derivative -works of the source code and header files delivered by NVIDIA, provided that the software is executed only in hardware products as -specified by NVIDIA in the accompanying documentation (such as release notes) as supported, to develop, test and service your -products (each, a “Customer Product”) that are interoperable with supported hardware products. If the NVIDIA documentation is -silent, the supported hardware consists of certain NVIDIA GPUs; and - -To be safe we are still not including the NVIDIA headers in the repository, but I am now providing pre-built binaries with NvFBC support included. - -See: https://looking-glass.hostfission.com/downloads - -### Why can't I compile NvFBC support into the host - -You must download and install the NVidia Capture SDK. Please note that by doing so you will be agreeing to NVIDIA's SDK License agreement. - -_-Geoff_