Quantum
f1b1da60ea
[client] imgui: improve method for high DPI
...
We now give ImGui the true logical size of the window and tell it to scale
the framebuffer. To fix the blurry fonts, we continue to load fonts at the
scale necessary for the DPI and use FontGlobalScale to shrink the fonts back
to the logical size. The font rectangle is then expanded by the framebuffer
scaling, resulting in good text rendering.
This method has the advantage of not messing up the sizes of resizable
overlays when moving across monitors.
2021-07-31 14:56:49 +10:00
Quantum
0402dd521a
[client] imgui: ask display server to display cursors
2021-07-31 14:56:04 +10:00
Quantum
11a5864969
[client] wayland: implement support for other cursors
2021-07-31 14:56:04 +10:00
Quantum
da28db2ca4
[client] ds: change showPointer to setPointer for more cursors
...
Currently everything only supports LG_POINTER_NONE and LG_POINTER_SQUARE.
2021-07-31 14:56:04 +10:00
Quantum
c991de7ccd
[client] imgui: improved overlay input handling
...
1. Overlay always releases confines.
2. Overlay turns off mouse sync with guest.
2021-07-31 14:54:53 +10:00
Netboy3
d9a3b6523c
[doc] install: Update client keybindings and command line options
2021-07-31 14:54:40 +10:00
Quantum
ea2651e39b
[client] imgui: darken background when rendering overlays
...
This replaces the alert that says whether the overlay is enabled or not.
Also, we now always display the help menu in overlay mode.
2021-07-29 19:10:15 +10:00
Quantum
a980cd9406
[client] egl: log when EGL_EXT_image_dma_buf_import is unavailable
2021-07-29 17:03:44 +10:00
Quantum
1c58b3a087
[client] imgui: implement keyboard input forwarding and capture
2021-07-29 17:02:59 +10:00
Quantum
065d90c3f7
[client] imgui: add mode to forward mouse input to imgui
2021-07-29 17:02:59 +10:00
Quantum
6c64965703
[client] egl: make functions that do not need linking static
2021-07-29 16:54:56 +10:00
Quantum
134829cbf2
[client] imgui: make graph y-axis configurable
...
The default of [0, 50] makes sense for FPS/UPS graphs, but does not for
things like the import graph. The latter should not take more than 5 ms
for sure.
This commit allows the min/max y-axis value to be specified when registering
the graph.
2021-07-29 15:54:15 +10:00
Quantum
aff3bff8b0
[common] framebuffer: fix copy when source and dest pitch differs
...
We used to increment the source buffer index by width * bpp, not by pitch.
This is incorrect and the root cause behind #670 .
This is a regression that appeared in 196050bd23
.
2021-07-29 10:18:35 +10:00
Quantum
2ea84cd07e
[common] ivshmem: use consistent device numbering on Windows
...
We now enumerate all IVSHMEM devices, sort them based on PCI bus, slot,
and function numbers, then index from the resulting order. This should
be consistent across boots.
To help the user identify the correct IVSHMEM device, we also print the
list of IVSHMEM devices on startup.
2021-07-29 10:17:33 +10:00
Quantum
996b9e7e7b
[common] time: fully implement all functionality for windows
...
We implement nanotime by converting QueryPerformanceTimer output with
floating point arithmetic. This is necessary to preserve precision on
platforms where each tick is not an integer number of nanoseconds.
Furthermore, struct timespec is included C11 and appears to be supported
on Windows, so we no longer need to #ifdef it out.
2021-07-29 10:16:52 +10:00
Quantum
009ae02e32
[client] egl: add graph tracking time taken to import frame
...
This tracks the time taken to load the frame buffer into an OpenGL texture.
2021-07-29 10:08:52 +10:00
arcnmx
552a37122a
[host] app: add throttleFPS option
2021-07-28 02:47:24 +10:00
Quantum
6ed1f4662d
[client] imgui: report failed font atlas building
...
Also removed the inefficient code to build the default atlas.
2021-07-26 17:08:02 +10:00
Geoffrey McRae
5f5f497cbd
[host/common] windows: provide delayExecution
via nsleep
...
This change moves this platform specific sleep to `common` as the OS
agnostic `nsleep` function.
Ref PR #661
2021-07-26 16:36:56 +10:00
Quantum
120fe63c0f
[client] egl: keep x/y coordinates of cursor rectangle non-negative
...
This shifts the rectangles upwards instead of cutting off the rectangles,
but it keeps the code simple.
2021-07-26 07:56:46 +10:00
Quantum
181b165a4b
[client] egl: generate correct cursor damage with cursor rotation
2021-07-25 17:35:29 +10:00
Geoffrey McRae
dafd7e7b42
[host] app: when running in sync mode send frame repeats as needed
2021-07-25 17:10:51 +10:00
Quantum
d9cdc8d26c
[client] egl: rotate damage rectangles according to client side rotation
2021-07-25 16:56:48 +10:00
Quantum
d0722349e6
[client] egl: make damage overlay support rendering rotated rectangles
2021-07-25 16:56:48 +10:00
Geoffrey McRae
2ef80a5d34
[client] overlay: cosmetic changes to the overlay display
2021-07-25 16:49:25 +10:00
Quantum
e7761abf3c
[client] wayland: invalidate window on configure
...
This avoids sending potentially meaningless damage values after a surface
configuration event.
2021-07-25 15:36:44 +10:00
Geoffrey McRae
3905834807
[client] x11: call app_invalidateWindow
on expose
2021-07-25 15:30:56 +10:00
Geoffrey McRae
60a58d4d8d
[client] all: make it possible to signal full window invalidation
...
Now that we are drawing with damage rects, when the window is hidden and
then exposed the window may not get fully redrawn. This provides
`app_invalidateWindow` for the display server backend to call when the
screen needs a full redraw.
2021-07-25 15:29:29 +10:00
Geoffrey McRae
8c2a77e84e
[client] don't skip the first frame if we do not yet have a frame
...
A frame serial of `0` is valid and will happen if either the host app
has just started, or the serial has overflowed.
2021-07-25 15:10:40 +10:00
Geoffrey McRae
e35facbb15
[spice] bump PureSpice version
2021-07-25 15:10:40 +10:00
Quantum
8528969efd
[host] nvfbc: clamp damage rectangles to screen size
2021-07-25 14:34:10 +10:00
Geoffrey McRae
9dffde74b2
[client] main: skip duplicate frames
...
When a new client connects to our session the host will repeat the last
valid frame for the new client. This change will detect this and skip
the duplicated frame.
2021-07-25 13:46:48 +10:00
Geoffrey McRae
b39f38350f
[common] kvmfr: add a new frameSerial
field to the KVMFRFrame struct
...
This new field is used so that when a new client connects an already
connected client can identify any repeated frame that is sent and ignore
it.
2021-07-25 13:46:48 +10:00
Quantum
f4daa9f527
[all] cmake: fix OptimizeForNative
...
1. Correctly detect ON state so that host is not built as -march=native by
default.
2. Merge OFF and GENERIC options as we need at least -march=nehalem to build
properly.
2021-07-25 13:46:13 +10:00
arcnmx
2c745db544
[host] windows: use CMAKE_DLLTOOL if available
...
cmake automatically finds dlltool as of version 3.16
2021-07-24 14:52:32 +10:00
arcnmx
3b37898eb2
[all] use cmake FindPkgConfig IMPORTED_TARGETs
2021-07-24 12:35:48 +10:00
arcnmx
aa2ea05af9
[client] removed unused GMP dependency
2021-07-24 12:35:48 +10:00
arcnmx
7316c1c46c
[all] include OPTIMIZE_FOR_NATIVE in feature summary
2021-07-24 12:35:17 +10:00
arcnmx
38cb348201
[all] make OPTIMIZE_FOR_NATIVE a tristate option
2021-07-24 12:35:17 +10:00
arcnmx
be664c49c8
[all] cmake: use -march=x86-64-v2 when it becomes available
...
Moves the logic in 0525515
to a common cmake include, and applies it to
the other binaries.
2021-07-24 12:35:17 +10:00
Quantum
f09738678e
[client] fonts: remove font rendering machinery
2021-07-23 20:18:12 +10:00
Quantum
0c35d9b057
[client] opengl: remove font management
2021-07-23 20:18:12 +10:00
Quantum
cb9774bbd2
[client] egl: remove font management
2021-07-23 20:18:12 +10:00
Quantum
dd0edc1394
[client] renderers: remove alert handling
2021-07-23 20:18:12 +10:00
Quantum
be44249c05
[client] imgui: converted alerts to use imgui
2021-07-23 20:18:12 +10:00
Quantum
efb5019176
[client] overlay/help: switch to using ImGui's table facility
2021-07-23 18:04:05 +10:00
Quantum
5153d35bb5
[client] renderer: remove on_help from renderer interface
2021-07-23 18:04:05 +10:00
Quantum
036f16b9ef
[client] imgui: convert help overlay to use imgui
2021-07-23 18:04:05 +10:00
Quantum
436986d182
[client] imgui: make UI font and size configurable
2021-07-23 16:07:42 +10:00
Quantum
5d053128ac
[client] imgui: use improved high DPI rendering
...
This actually makes imgui render at a higher resolution, avoiding scaling
and resulting blurriness.
2021-07-23 16:07:42 +10:00