Quantum
f49f2af6cd
[client] egl: implement error reporting callback
...
This reports useful information from OpenGL on supported platforms.
2021-07-18 13:54:16 +10:00
Quantum
061b9ba6c2
[client] egl: use vertex array objects in model.c
...
This eliminates the need to bind the buffers and set up the vertices on
every frame.
2021-07-18 11:58:47 +10:00
Quantum
d4f8426ae4
[client] egl: correctly clean up vertex buffer objects
...
The code used to use hasBuffer, which was never set to true, so buffer
objects were always leaked instead.
2021-07-18 11:58:47 +10:00
Quantum
ad974cfa0a
[common] dpi: remove no longer used library
2021-07-18 10:50:57 +10:00
Quantum
e1fae8927f
[common] kvmfr: remove mouseScalingPercent which is no longer used
...
This used to contain DPI information, but is no longer used.
2021-07-18 10:50:57 +10:00
Quantum
9ab85fd0b8
[host] capture: stop sending DPI information
...
The client doesn't need DPI information anymore, so there is no point
fetching it.
2021-07-18 10:50:57 +10:00
Quantum
e0c9a71cd8
[client] spice: remove dpi which is no longer used
...
DPI was originally added to workaround cursor movement scaling, but since
due to changes with mouse handling, it's no longer required.
2021-07-18 10:50:57 +10:00
Geoffrey McRae
d44d87ee7f
[client] spice: update to use the new epoll version of PureSpice
2021-07-18 10:48:56 +10:00
Quantum
2b3f31700b
[client] egl: implement frame damage display
2021-07-18 10:41:50 +10:00
Quantum
12cb3e512f
[client] util: add function for merging overlapping rectangles
...
This will be used to merge overlapping rectangles in order to avoid copying
the same rectangles multiple times.
2021-07-18 10:41:50 +10:00
Tudor Brindus
92706caddc
[common]: move array length into a common helper
...
Since it is more generally useful, and less cryptic this way.
2021-07-18 10:41:50 +10:00
Quantum
893b2500c2
[host] nvfbc: copy damaged areas only
...
This commit tracks the damage made to the framebuffer and only updates those
areas. Damage is tracked directly with NvFBC provided diffmaps.
2021-07-18 10:41:50 +10:00
Quantum
ef2da1902e
[common] framebuffer: allow custom framebuffer write implementations
...
This is helpful for only copying damaged areas.
2021-07-18 10:41:50 +10:00
Quantum
9ce4990793
[host] capture: pass frameIndex to capture backends
...
This allows capture backends to track damage made to each frame.
2021-07-18 10:41:50 +10:00
Tudor Brindus
f274bec8fc
[host] dxgi: compute damage rectangles from moved rectangles
...
This is untested in that I don't have a Windows 8 VM where move rects
are supplied, but seems sound.
2021-07-18 10:41:50 +10:00
Quantum
00eb26a34f
[client] egl: do not use damage when overlays are visible
...
This allows the overlays to show up correctly.
2021-07-18 10:41:50 +10:00
Quantum
e42747f4e3
[host] nvfbc: better algorithm for merging adjacent regions
...
Use a proper disjoint-set to give a more accurate result.
2021-07-18 10:41:50 +10:00
Quantum
5ed3301cf5
[host] nvfbc: merge adjacent changed regions
...
For adjacent changed regions, we actually use the bounding box for the
entire polygon. This may result in more area being damaged than strictly
necessary, but is nevertheless desirable since it reduces the number of
rectangles.
2021-07-18 10:41:50 +10:00
Quantum
442ab318fd
[client] egl: use desktop frame damage information
2021-07-18 10:41:50 +10:00
Quantum
6b16bb3ea1
[host] nvfbc: populate damage rectangles
2021-07-18 10:41:50 +10:00
Tudor Brindus
d7f9afb3ba
[host] dxgi: populate damage rectangles
...
Co-Authored-By: Quantum <quantum2048@gmail.com>
2021-07-18 10:41:50 +10:00
Quantum
80ab4b5393
[host] capture: add damage rectangles to capture interface
2021-07-18 10:41:50 +10:00
Quantum
69b20aee05
[common] kvmfr: add damage rectangles to the protocol
...
Co-Authored-By: Tudor Brindus <me@tbrindus.ca>
2021-07-18 10:41:50 +10:00
Quantum
38a018ebfa
[doc] build: remove mentions of SDL
2021-07-18 10:34:41 +10:00
Quantum
6695ca3f34
[client] ds: remove SDL display server
2021-07-18 10:34:41 +10:00
Quantum
eb357fa58a
[client] egl: use glCopyTexSubImage2D to copy when using DMA
...
This removes the need for the driver to allocate texture storage and deleting
the previous allocation on every frame update.
2021-07-18 10:34:21 +10:00
Quantum
e32494f684
[client] ci: fix clang build by using clang++
2021-07-18 10:32:27 +10:00
Quantum
39ec32b2ef
[client] cimgui: build as static library
2021-07-18 10:31:45 +10:00
Geoffrey McRae
d8b37a8d81
[git] update workflow to include new libglew-dev dependency
2021-07-18 10:03:30 +10:00
Geoffrey McRae
df2f623599
[client] app: add keybind to toggle frame timing information display
2021-07-18 09:59:37 +10:00
Geoffrey McRae
73357988e6
[client] main: don't trigger redraws if the video feed is disabled
...
If the video feed is disabled we are not drawing the cursor, so don't
cause needless redraws
2021-07-17 21:09:51 +10:00
Geoffrey McRae
03c247a9ff
[client] x11: make use of eglSwapBuffersWithDamage if it's available
2021-07-17 21:09:51 +10:00
Geoffrey McRae
092ce61908
[client] main: copy & release KVMFR messages sooner
...
The renderer may take time to process the cursor update due to various
internal factors, as such it's best we copy the data and mark the
message as done ASAP. This prevents the host from filling up the queue
as easily when a high dpi mouse is in use.
2021-07-17 21:09:51 +10:00
Geoffrey McRae
b9d7674b20
[client] imgui: calculate min/max/avg/fps and add them to the plots
2021-07-17 21:09:51 +10:00
Geoffrey McRae
8e3df5a38f
[client] main: dont push an invalid value into the timings buffers
2021-07-17 21:09:51 +10:00
Geoffrey McRae
23f9855768
[common] ringbuffer: add forEach iterator
2021-07-17 21:09:51 +10:00
Geoffrey McRae
2e76c874cc
[client] app: initial imgui frame timings
2021-07-17 21:09:51 +10:00
Geoffrey McRae
41403286d1
[common] ringbuffer: add getLength method
2021-07-17 21:09:51 +10:00
Geoffrey McRae
c3bc5fb0ff
[client] app: collect render and frame timing information
2021-07-17 21:09:51 +10:00
Geoffrey McRae
94ae9a95d7
[common] added new ringbuffer helper for metrics collection
2021-07-17 21:09:51 +10:00
Geoffrey McRae
bcffd70270
[client] app: init/destroy imgui context on run/shutdown
2021-07-17 21:09:51 +10:00
Geoffrey McRae
f08163fd72
[client] imgui: added imgui to the client and OpenGL/EGL renderers
2021-07-17 21:09:51 +10:00
Geoffrey McRae
c9d469fb91
[repos] added cimgui
@ version 1.82
2021-07-17 21:09:51 +10:00
Jonathan Rubenstein
25c88a1c6c
[doc] faq: Correct misinformed question about mouse warp issue
2021-07-17 15:20:22 +10:00
Geoffrey McRae
7decb58bf7
[host] windows: fix build on Linux due to case sensitive filenames
2021-07-17 15:05:32 +10:00
Geoffrey McRae
d1ec19b30b
[host] windows: fix delayExecution order of magnitude bug
2021-07-17 15:02:58 +10:00
Geoffrey McRae
74468cf799
[host] windows: remove accidental addition of some junk
2021-07-17 15:02:36 +10:00
Geoffrey McRae
411a6b1e49
[host] windows: add delayExecution
function for more accurate sleeps
...
This change not only exposes and allows use of NtDelayExecution, but
also moves the code to set the system timer resolution.
2021-07-17 14:55:22 +10:00
Geoffrey McRae
e228165ff9
[host] windows: fix system timer resolution message units
...
ZwSetTimerResolution works in units of 100ns
2021-07-17 14:31:31 +10:00
Geoffrey McRae
d615514799
[host] windows: do not callback from the mouse hook context
...
The windows hook WH_MOUSE_LL is called in such a way that any delay in
processing causes a system wide stall. This change spawns an extra
thread which waits on an event set by the hook which is then used to
call the callback with an artifical limit of 1000Hz.
2021-07-17 14:03:52 +10:00