Geoffrey McRae
8cdeaceed9
[client] main: fix reversed check logic from testing/debug
2022-01-06 14:40:34 +11:00
Geoffrey McRae
7bcd0dd97f
[client] main: if spice is in use check the guest uuid matches
...
If the guest supports sending us it's UUID and PureSpice has also
reported the guest's UUID, check them to see if the user has
accidentially connected to the wrong spice socket.
2022-01-06 14:38:46 +11:00
Geoffrey McRae
7ccd202d36
[client] main: fix out by one error in the bounds check for os type
2022-01-05 20:40:13 +11:00
Geoffrey McRae
177a997883
[client] main: parse the KVMFR records and log the details
2022-01-05 20:27:43 +11:00
Geoffrey McRae
952ebea2c5
[all] refresh copyright dates
2022-01-05 19:42:46 +11:00
Geoffrey McRae
0d27092ef5
[all] move min/max and upcast macros into common/util.h
2022-01-05 19:41:57 +11:00
Geoffrey McRae
ba9f2b85b6
[host/client] kvmfr: update to include extra user data about the VM
...
This change allows the host to provide information to the client about
how the VM is configured, information such as the UUID, CPU
configuration and capture method both for informational display in the
client as well as debugging in the client's logs.
The format of the records allows this to be extended later with new
record types without needing to bump the KVMFR version.
2022-01-05 19:18:43 +11:00
Geoffrey McRae
d708651c53
[client] egl: check for null gl strings
2022-01-05 12:38:38 +11:00
Geoffrey McRae
0d00936aac
[client] spice: update PureSpice submodule
2022-01-04 19:06:14 +11:00
Geoffrey McRae
4b8255aa28
[client] spice: allow spice startup to happen in parallel
2022-01-01 21:07:55 +11:00
Geoffrey McRae
c8b4787cb1
[client] don't report a spice error on graceful shutdown
2021-12-30 21:02:53 +11:00
Geoffrey McRae
d43126f433
[client] main: release the grab if the host application is stopped
2021-12-30 17:08:19 +11:00
Geoffrey McRae
764e52fb20
[client] undo commented code from debugging
2021-12-30 13:19:59 +11:00
Geoffrey McRae
6f17e89b16
[host] lgmp: update to fix regression in initialization of the header
2021-12-30 13:00:56 +11:00
Geoffrey McRae
c74d48691f
[client] spice: update submodule and update to use new PSConfig members
2021-12-29 20:22:07 +11:00
Geoffrey McRae
d1a765c179
[client] spice: update PureSpice submodule and adjust for new API usage
2021-12-29 16:02:22 +11:00
Geoffrey McRae
17b77cfbc1
[client] spice: update PureSpice submodule and update includes
2021-12-29 00:18:25 +11:00
Geoffrey McRae
65ba2e8df9
[client] spice: update submodule and refactor calls & types
2021-12-28 22:04:35 +11:00
Geoffrey McRae
35efa551ef
[client] egl: determine mouse scale using both horiz and vert size
2021-12-28 19:04:24 +11:00
Quantum
136737f25b
[client] egl: simplify EGL torus code
2021-12-28 10:19:36 +11:00
Geoffrey McRae
95987a9c91
[client] core: set the correct cursor when exiting overlay
2021-12-27 11:52:06 +11:00
Geoffrey McRae
bbd9c84896
[client] core: invalidate the pointer state when overlay is disabled
2021-12-27 11:22:12 +11:00
Geoffrey McRae
bb74a9d9c8
[client] core: don't try to send LGMP messages if the video is stopped
...
If the video stream is stopped the LGMP session is not valid, so we
can't send messages to the client.
2021-12-27 09:55:56 +11:00
Geoffrey McRae
02ec25b008
[client] audio/pw: it's Looking Glass, not LookingGlass
2021-12-26 18:49:35 +11:00
Geoffrey McRae
90dd1f3913
[client] audio/pa: added initial pulseaudio implementation
2021-12-26 18:22:51 +11:00
Geoffrey McRae
9fa643484c
[client] audio/pw: use scaling forumula provided by quantum
2021-12-26 11:09:42 +11:00
Geoffrey McRae
64b64b61be
[client] audio/pw: implement volume and mute control
2021-12-26 11:09:42 +11:00
Geoffrey McRae
433a5420cb
[client] audio: update PureSpice and add support for volume control/mute
2021-12-26 11:09:42 +11:00
Geoffrey McRae
e408ea51e2
[client] audio/pw: gracefully shutdown when asked to
2021-12-26 11:09:42 +11:00
Geoffrey McRae
cca6492069
[client] audio: call audioDev->free on spice thread exit
2021-12-26 11:09:42 +11:00
Geoffrey McRae
ebdc847ef1
[client] audio/pw: don't re-create an idle stream with matching format
2021-12-26 11:09:42 +11:00
Geoffrey McRae
2ea24516d2
[client] audio/pw: limit how much data gets buffered to reduce latency
2021-12-26 11:09:42 +11:00
Geoffrey McRae
dd04a46403
[client] audio/pw: make use of the new ringbuffer consume/append funcs
2021-12-26 11:09:42 +11:00
Geoffrey McRae
f403033ab1
[client] audio/pw: properly manage the stream state
2021-12-26 11:09:42 +11:00
Geoffrey McRae
11ef94c134
[client] audio/pw: set the node name
2021-12-26 11:09:42 +11:00
Geoffrey McRae
75e46128d4
[client] audio/pw: don't actually stop when SPICE signals a stop
2021-12-26 11:09:42 +11:00
Geoffrey McRae
e810577317
[client] audio: initial addition of PipeWire audio support via SPICE
2021-12-26 11:09:42 +11:00
Geoffrey McRae
d69069fb09
[client] egl: keep the mouse cursor 1:1 when downscaling
...
This keeps the cursor a usable size when the guest is running a high
resolution and downscaling (ie, 4K -> FHD).
2021-12-26 11:08:42 +11:00
Quantum
15ec80e80d
[client] input: fix race between window size and guest cursor
...
g_state.posInfoValid could become valid after the guest reports the
cursor position, in which case we did not show the cursor until another
update occurs.
This commit eliminates the race by performing the update when
g_state.posInfoValid becomes true.
2021-12-24 13:16:52 +11:00
Quantum
eea0ced627
[client] wayland: handle NULL wl_keyboard on destruction
2021-12-24 10:22:23 +11:00
Quantum
94684324f4
[client] wayland: don't create confines on uncapture without wl_pointer
2021-12-24 10:17:16 +11:00
Quantum
194afa2d75
[client] wayland: create wl_relative_pointer when creating wl_pointer
2021-12-24 10:17:16 +11:00
Quantum
d96b2ef1fb
[client] wayland: clean up objects when wl_pointer disappears
2021-12-24 10:17:16 +11:00
Geoffrey McRae
ad40ea4195
[client] x11: don't override the focus state if no EWMH focus support
2021-12-22 11:25:54 +11:00
Geoffrey McRae
65948034dd
[client] x11: be more agressive grabbing the pointer
2021-12-21 21:51:43 +11:00
Geoffrey McRae
27c7054505
[client] x11: protect against msc overflow with jitRender
2021-12-21 10:47:55 +11:00
Geoffrey McRae
02b59ba8f7
[client] x11: don't use the atomic msc value when we already have it
2021-12-21 10:47:11 +11:00
Quantum
a5727262cd
[client] wayland: make cursor change work without wl_pointer
2021-12-16 11:36:39 +11:00
Geoffrey McRae
43545a4e17
[all] cmake: refuse to perform in-source builds
2021-12-15 10:56:27 +11:00
Geoffrey McRae
adbe333414
[client] egl: dmabuf can be used without GL_EXT_buffer_storage support
2021-12-15 06:10:30 +11:00
Geoffrey McRae
5f80ce91e8
[client] x11: fix broken grab retry logic
2021-12-15 01:43:09 +11:00
Geoffrey McRae
b6fa296d5a
[client] x11: work around issue with desktop switch on i3
...
For an unknwon reason when LG is on another desktop (hidden) and the
user switches to that desktop, the first attempt to grab the pointer
results in a GrabFrozen result. This adds some simple retry logic to
attempt again after a short (100ms) delay which seems to resolve the
issue.
2021-12-15 00:23:44 +11:00
Geoffrey McRae
2e170ad06f
[client] x11: properly detect WMEH support for focus events
2021-12-15 00:17:33 +11:00
Quantum
15066c7345
[client] egl: handle eglQuerySurface(EGL_BUFFER_AGE_EXT) error
2021-12-14 14:35:30 +11:00
Geoffrey McRae
88a95aeab0
[client] x11: fix issue with grab when clicking on the unfocused window
...
Fixes #856
2021-12-10 05:27:58 +11:00
Geoffrey McRae
abd6502c9d
[client] x11: cosmetics
2021-12-09 19:53:34 +11:00
Quantum
58f83da7bb
[client] egl: increase the damage box for the cursor
2021-12-02 22:07:37 +11:00
Quantum
3e9a21d3b9
[client] egl: use linear filter when not scaling
...
This appears to eliminate artifacts related to non-full screen paints
due to precision errors with the nearest filter.
2021-12-02 22:07:24 +11:00
Geoffrey McRae
9780f51558
[client] x11: fix failure to set window position correctly when set
2021-11-30 13:04:39 +11:00
Geoffrey McRae
8167ef2c4a
[client] egl: make use of glsl's textureSize function
2021-11-12 07:41:59 +11:00
Geoffrey McRae
a21eee26ab
[client] main: fix buffer overflow due to cursor data size change
2021-11-02 01:01:17 +11:00
Geoffrey McRae
e82f8911a6
[client] main: malloc buffer for cursor data instead of using the stack
2021-11-01 13:45:30 +11:00
Geoffrey McRae
67ea8e06ba
[client] egl: use alloca
instead of typecasted char array
2021-10-24 22:57:21 +11:00
Quantum
ad6e3f96e6
[client] egl: reset damage on renderer restart
2021-10-23 18:38:21 +11:00
Geoffrey McRae
fe712b7ec9
[client] egl: damage the full screen if the frame format changes
2021-10-22 18:51:49 +11:00
Geoffrey McRae
9c5e34df0f
[client] x11: handle EINTR properly in epoll loop
2021-10-20 15:40:50 +11:00
Geoffrey McRae
dca5da02a0
[client] egl: fix undefined behaviour with zero size array
2021-10-20 13:34:16 +11:00
Quantum
2858ad3f7e
[client] egl: fallback when EGL_RENDER_BUFFER fails
...
This allows the client to work when the OpenGL implementation fails if
EGL_RENDER_BUFFER is passed, printing a warning. This should fix issues
with Nvidia proprietary drivers on Wayland.
2021-10-20 11:31:00 +11:00
Quantum
9ddd260b22
[client] egl: log glCheckFramebufferStatus error
2021-10-20 11:30:40 +11:00
Geoffrey McRae
bc34dc9e24
[client] egl: blame NVIDIA if dmabuf fails on NVIDIA hardware
...
NVIDIA still do not implement a complete/working DMABUF implementation
yet advertise support. Best to tell the public to complain to NVIDIA
instead of assuming it's a LG bug or an issue with their system.
2021-10-20 11:28:29 +11:00
Geoffrey McRae
edc9825c04
[client] egl: check for invalid desktop render dimensions
2021-10-20 11:17:29 +11:00
Geoffrey McRae
70a751b58d
[client] egl/filters: bypass setup/prepare logic if disabled/inactive
...
filters are now not run if `egl_filterSetup` returns false, as such we
do not need additional `enable` checks in `prepare` or `run` and we can
bypass the filters even earlier if they are not enabled reducing load.
2021-10-20 10:57:53 +11:00
Quantum
fc037ccc95
[client] egl: handle filter setup returning false
...
As discussed, this should just skip the filter as if it's disabled.
2021-10-20 10:48:18 +11:00
Quantum
74418106de
[client] egl: skip downscale filter setup when not enabled
...
Since this->prepared will never be set to true unless the filter is
enabled, this results in the framebuffer setup being done every frame
for no reason, causing a lot of texture reallocations.
2021-10-20 10:47:59 +11:00
Quantum
8dcf7af791
[client] egl: fix parentheses in IDX_AGO definition
...
The old definition could break if complex expressions were passed in
as arguments.
2021-10-17 06:10:30 +11:00
Quantum
2d858da0f1
[client] egl: fix egl_bufferAge naming
2021-10-17 06:10:30 +11:00
Quantum
ee211803e4
[client] egl: fix letterbox rendering
...
Add additional half pixel in all directions to ensure erasure of
content in the letterbox area under all circumstances.
2021-10-17 06:10:30 +11:00
Netboy3
c3d2ad92c5
[client] Change default grabKeyboardOnFocus to false
2021-10-15 11:36:38 +11:00
SytheZN
12321a8880
[client] wayland: implement resizing for libdecor
2021-10-14 18:17:00 +11:00
Quantum
148ab0278e
[client] egl: add debug options to disable damage tracking
...
This should aid in figuring out the source of damage tracking bugs.
2021-10-14 17:01:48 +11:00
Quantum
d60dcb718b
[client] cmake: correctly detect non-gawk awks
...
Forgetting NAMES meant that cmake was searching for gawk only.
2021-10-14 17:01:37 +11:00
Geoffrey McRae
e914e56c48
[client] stop the cursorThread if video feed is disabled
...
The cursorThread prevents the host from going to sleep when the
video feed is disabled as it's subscribed to the cursor queue. Stopping
the cursorThread will unsubscribe from the queue and allow the host
application to disable capture.
2021-10-06 20:05:31 +11:00
Quantum
24fa580519
[client] opengl: fix getProcAddressGL2 naming
...
TabNine autocompleted the function too hard.
2021-10-01 10:12:55 +10:00
Quantum
6370350006
[client] opengl: indirectly access non-OpenGL 1.3 functions
...
This commit adds check for the extensions that we need and then calls
the functions indirectly through gl_dynprocs.
This should improve compatibility with older versions of OpenGL, as we
now fallback to the ARB extensions if possible, and in the case of
glGenerateMipmap, we can handle the function not existing at all.
2021-10-01 01:45:11 +10:00
Quantum
ad4b40fad6
[client] opengl: add gl_dynprocs module
...
This is similar to egl_dynprocs, except for OpenGL functions.
2021-10-01 01:45:11 +10:00
Quantum
3f72de78da
[client] opengl: use util_hasGLExt instead of custom logic
2021-10-01 01:45:11 +10:00
Quantum
4a76401c34
[client] egl: make the last eglDestroyImage call indirect
...
Missed this one in the last PR.
2021-09-29 18:28:07 +10:00
Quantum
072c54977e
[client] egl: use eglCreateImage and eglDestroyImage indirectly
...
The dmabuf path is optional, so we shouldn't require those functions to
link our program.
2021-09-29 17:48:50 +10:00
Quantum
5c7f168370
[client] egl_dynprocs: use official prototypes from system headers
2021-09-29 17:48:50 +10:00
Quantum
12840a8324
[client] x11: load glXSwapIntervalEXT dynamically
...
The Linux OpenGL ABI does not guarantee that glXSwapIntervalEXT will be
exported statically from any library, and indeed on some systems this
function does not link at load time, e.g. with amdgpu-pro. All other
GLX functions that we use are from GLX 1.0, which is guaranteed to be
exported statically.
This commit solves this issue by using glXGetProcAddressARB to load the
function. Note that only the ARB version of glXGetProcAddress is
guaranteed to exist by the Linux OpenGL ABI, which is why we must use
it.
2021-09-29 17:47:36 +10:00
Quantum
df4a964496
[client] spice: stop if pointer left during guest warp
...
This prevents attempts to grab the pointer after the guest side warp
finishes if the pointer has left the window in the meantime. On Wayland,
this would result in the pointer moving to the middle of the window when
the confine is created.
2021-09-16 06:25:45 +10:00
Quantum
72f3a9f3cf
[client] wayland: free presentation objects
...
Since the display server owns a graph, it was necessary to move the overlay
graphs destruction so that it happens after display server destruction.
2021-09-11 11:52:52 +10:00
Geoffrey McRae
3cefe9f9b5
[client] config: window width & height are unsigned values
2021-09-11 10:30:31 +10:00
Geoffrey McRae
e249106ddf
[client] app: remove dead code
2021-09-11 10:22:44 +10:00
Geoffrey McRae
ab3738624f
[client] x11: reduce the scope of deltats
2021-09-11 10:11:00 +10:00
Geoffrey McRae
25ed3632f7
[client] x11: remove dead code
2021-09-11 10:06:52 +10:00
Geoffrey McRae
3adb7ca4b2
[client] wayland: fix possible memory leak
2021-09-11 10:03:27 +10:00
Quantum
ce091fd4e4
[client] main: correctly handle EINTR from nanosleep
...
Previously, all progress made during sleep is reset, so if the thread keeps
getting interrupted before the sleep finishes, the sleep will never complete.
2021-09-04 13:31:30 +10:00
Quantum
1b58f2592c
[client] egl: make filters damage aware
...
This saves a lot of GPU power for partial updates. Running testufo with
lanczos downscaling and FSR upscaling consumed over 90 W, but with this
commit, consumed only 75 W.
2021-09-04 13:30:24 +10:00
Quantum
e9bf225c75
[client] egl: remove useless RenderStep struct
2021-09-04 13:28:49 +10:00
Quantum
f287b4625d
[client] config: fix usage of "ie"
2021-09-04 13:28:34 +10:00
Quantum
92155de98d
[client] config: fix spelling of synchronize
2021-09-04 13:28:15 +10:00
Quantum
ac926e4458
[client] egl: support debug contexts on older EGL versions
2021-09-04 13:24:45 +10:00
Quantum
26d2feb4d8
[client] egl: remove warning disabling in ffx.c
2021-09-04 13:24:34 +10:00
Quantum
977a4f6323
[client] egl: remove useless comment in filter_downscale.c
2021-08-31 20:14:39 +10:00
Quantum
c7666b065a
[client] main: print out CPU information on startup
2021-08-31 20:14:10 +10:00
Quantum
79a9127c04
[client] imgui: use consistent modal background colours
...
The translucent white modal background sort of cancels out the dark
background we apply to the overlay, which is undesirable. It should
instead further darken the background.
For consistency, we now use igGetColorU32Col(ImGuiCol_ModalWindowDimBg)
to draw the overlay background, to avoid hardcoding the same colour in
multiple places.
2021-08-31 09:09:26 +10:00
Quantum
31249da533
[client] imgui: run animations at consistent speeds
...
Currently, this is visible through how fast the cursor blinks, with it
blinking faster at higher refresh rates. This commit makes the timing
consistent.
2021-08-31 08:16:07 +10:00
Quantum
f4df690d9f
[client] egl: fix preset tooltip always showing
2021-08-30 18:47:48 +10:00
Quantum
239cb6a92b
[client] egl: add separator after presets
2021-08-30 18:45:21 +10:00
Quantum
876a4125bf
[client] egl: correctly select the preset when saving over it
2021-08-30 18:45:21 +10:00
Quantum
ffbf6cd8b4
[client] egl: make preset UI more intuitive
...
This commit makes selecting a preset load it, and changes "Create preset" to
"Save preset as...".
2021-08-30 18:45:21 +10:00
Quantum
39e42ba735
[common] option: change option_dump to option_dump_preset
...
This new function dumps all options marked as preset instead of dumping
individual sections. This should allow filter options to not be all grouped
into the [eglFilter] section.
2021-08-30 18:32:16 +10:00
Quantum
3345ff8448
[client] egl: mark all preset-only options as such
2021-08-30 18:21:54 +10:00
Quantum
8a2ae6860e
[client] egl: warn when attempting to save without preset selected
2021-08-30 18:21:54 +10:00
Quantum
1717555187
[client] egl: implement preset deletion
2021-08-30 18:21:54 +10:00
Quantum
dc27638025
[client] egl: implement loading and saving of filter order
2021-08-30 18:21:54 +10:00
Quantum
c85cc7d668
[client] egl: show preset errors as modal dialogs
2021-08-30 18:21:54 +10:00
Quantum
311f7241c6
[client] egl: implement preset loading/saving logic
2021-08-30 18:21:54 +10:00
Quantum
b7b93f624c
[client] egl: implement options loading/saving for downscale
2021-08-30 18:21:54 +10:00
Quantum
084837b936
[client] egl: add loadState and saveState for filters
2021-08-30 18:21:54 +10:00
Quantum
4adb425337
[client] egl: add UI for presets list
2021-08-30 18:21:54 +10:00
Quantum
5225d2e97f
[client] egl: fix framebuffer leaking textures
2021-08-28 19:17:24 +10:00
Quantum
e6df0acad9
[common] vector: eliminate double allocation when possible
...
This commit creates two constructor/destructor pairs for vector:
* vector_alloc/vector_free dynamically allocates the vector itself
* vector_create/vector_destroy uses existing Vector objects
2021-08-28 19:17:15 +10:00
Quantum
ceff9dca9b
[client] egl: simplify filter moving logic with memmove
...
This avoids duplicating the entire array of filters.
2021-08-25 05:35:50 +10:00
Quantum
7c7eff8dba
[client] egl: make texture_dmabuf.c use vector
...
This replaces the custom memory management code.
2021-08-24 22:10:36 +10:00
Geoffrey McRae
b118c3b681
[client] egl: implement nicer drag & drop re-ordering of filters
2021-08-24 22:05:46 +10:00
Quantum
e5e76d784e
[client] egl: allow postprocessing filters to be reordered by dragging
2021-08-22 21:36:13 +10:00
Quantum
99761b195f
[client] egl: switch postprocessing filters to use vectors
...
This will allow them to be reordered much more easily.
2021-08-22 21:36:13 +10:00
Quantum
9bd205a527
[client] imgui: fix modifier key modification race
...
imgui really hates it when we update the modifier key state after igNewFrame.
The result is:
void ImGui::ErrorCheckEndFrameSanityChecks(): Assertion
`(key_mod_flags == 0 || g.IO.KeyMods == key_mod_flags) &&
"Mismatching io.KeyCtrl/io.KeyShift/io.KeyAlt/io.KeySuper vs io.KeyMods"'
failed.
Therefore, we buffer the modifier state information and update it in the IO
object right before we call igNewFrame.
2021-08-20 13:21:50 +10:00
Quantum
c0fa6c414c
[client] spice: do not warp host cursor if guest cursor is not visible
...
This avoids warping the host cursor when the guest-side warp has not finished,
which will result in the host cursor exiting at the wrong position if it exits
at that moment.
2021-08-20 13:21:26 +10:00
Quantum
11a661ce3a
[client] spice: don't display mouse before realignment finishes
...
This avoids showing the mouse briefly at the old position when reentering
the window.
2021-08-20 13:21:26 +10:00
Geoffrey McRae
c246b4a719
Revert "[client] core: realign in the enter/focus handlers if possible"
...
This reverts commit 17617cc421
.
2021-08-19 23:19:59 +10:00
Geoffrey McRae
17617cc421
[client] core: realign in the enter/focus handlers if possible
2021-08-19 22:57:03 +10:00
Geoffrey McRae
e1a4401ffa
[client] core: wait for the host to process the cursor move
2021-08-19 22:17:22 +10:00
Geoffrey McRae
4b3a79c110
[client] x11: remove print from debugging
2021-08-19 21:35:54 +10:00
Geoffrey McRae
3c3c0f70be
[all] bump the LGMP version to obtain access to data serial tracking
2021-08-19 21:29:03 +10:00
Geoffrey McRae
2d470b8deb
[client] x11: filter out virtual/grabbed XIEnterEvents
2021-08-19 21:29:03 +10:00
Quantum
9aa0d3ddab
[client] egl: fix context creation on EGL 1.4
...
EGL_CONTEXT_OPENGL_DEBUG is only defined in EGL 1.5, and therefore, we should
not be passing it on older versions of EGL.
2021-08-19 21:28:56 +10:00
Quantum
429620c48b
[client] egl: dynamically import glBufferStorageEXT
...
On some implementations (e.g. llvmpipe), the function can only be queried via
eglGetProcAddress.
2021-08-19 21:28:45 +10:00
Quantum
5a906131eb
[all] cmake: tell users to clone submodules when they haven't
...
This gives users a command to run that will automagically fix the submodule
situation, and should reduce the amount of support requests.
2021-08-19 21:28:36 +10:00
Quantum
1021c9ce92
[client] x11: implement keyboard modifiers
2021-08-19 21:28:21 +10:00
Quantum
ce3f11fd40
[client] x11: implement keyboard typing
2021-08-19 21:28:21 +10:00
Quantum
bb91b41c64
[client] egl: look at 3x3 around the pixel instead of 4x4
...
Using 4x4 means that some pixels will be outside of the lanczos window. The
ideal lanczos function should in fact be zero in those areas, so we shouldn't
waste time processing those pixels.
I can't notice any difference in the results.
2021-08-19 15:52:44 +10:00
Quantum
520460669c
[client] egl: set gl_Position.z in cursor vertex shader
2021-08-19 12:24:55 +10:00
Quantum
1c7d14169e
[client] kb: rename key code arrays from xfree86_* to linux_*
...
We are using Linux key codes defined in input-event-codes.h, not XFree86
stuff.
2021-08-17 19:08:07 +10:00
Quantum
2ff32b230e
[client] cmake: don't install cimgui.a into CMAKE_INSTALL_PREFIX
2021-08-16 20:02:43 +10:00
Quantum
2dbd4f168e
[all] cmake: provide an uninstall target
2021-08-16 19:56:37 +10:00
Quantum
81c38e825c
[client] remove all casts around malloc
...
The cast is unnecessary in C and should be removed to avoid clutter.
2021-08-16 16:26:58 +10:00
Quantum
fd4a4114e6
[client] egl: pad areas of the desktop repainted to cover overlays
...
We pad the screen coordinates and then convert to desktop coordinates,
so that the padding will always be a pixel wide on screen.
2021-08-16 16:26:18 +10:00
Quantum
104141eec1
[client] use correct argument order for calloc
2021-08-16 16:25:59 +10:00
Quantum
b7d3bbbd82
[client] egl: use standard-compliant way of EGL detection
...
According to the documentation for eglQueryString:
> EGL_BAD_DISPLAY is generated if display is not an EGL display connection,
> unless display is EGL_NO_DISPLAY and name is EGL_EXTENSIONS.
Therefore, we should check EGL by doing:
eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS)
Indeed, the old way of eglQueryString(EGL_NO_DISPLAY, EGL_VERSION) works on
libglvnd but not using mesa's libEGL.so directly.
Also added a warning to make it more obvious that EGL is not available.
2021-08-16 16:25:48 +10:00
Quantum
8a5efef622
[client] spice: avoid spice_key_modifiers when input is disabled
2021-08-16 16:25:11 +10:00
Tudor Brindus
14ad83c6b8
[client] use variable-relative sizeof where possible
2021-08-16 16:22:55 +10:00
Quantum
8f5afe1848
[client] egl: clamp sharpness settings in filters
...
While the slider does not allow you to get out of range by dragging,
the user could still type in out of range values, so we clamp the values.
2021-08-15 18:01:03 +10:00
Quantum
36073586e7
[client] egl: add tooltip about Ctrl+Click on sharpness sliders
...
With the new keymap feature, we are now able to properly support letting
the user enter exact values into the sliders. This commit adds a tooltip
to help the user discover this feature.
Note that this currently only works on Wayland. The X11 backend will need
to call app_handleKeyboardModifiers.
2021-08-15 18:01:03 +10:00
Quantum
7cd0c55847
[client] wayland: support high DPI cursors when needed
2021-08-15 09:49:38 +10:00
Quantum
2dd1ad53f8
[client] wayland: respect XCURSOR_THEME and XCURSOR_SIZE env variables
2021-08-15 09:46:55 +10:00
Quantum
d35c448058
[client] wayland: set keyboard LED state when changed
2021-08-15 09:46:31 +10:00
Quantum
3a00277e93
[client] spice: add ability to set keyboard LED state in guest
...
FIXME: update PureSpice
2021-08-15 09:46:31 +10:00
Quantum
bbd173000f
[client] egl: clamp downscale factor range
2021-08-14 14:57:33 +10:00
Quantum
96738ab9d0
[client] egl: make downscale filter use text input widget
...
The major/minor pixel size hack is too confusing. This commit replaces
that with a text input and a slider.
2021-08-14 14:44:26 +10:00
Quantum
7045760490
[client] wayland: add keyboard typing handling with xkbcommon
2021-08-14 14:44:26 +10:00
Quantum
9414449408
[client] app: add ability to receive keyboard typing in overlays
2021-08-14 14:44:26 +10:00
Quantum
5f3bd778c0
[client] egl: add debug prints for renderStartup errors
2021-08-14 12:20:12 +10:00
Quantum
f66486b0c7
[client] egl/downscale: implement filter switching
2021-08-14 12:19:50 +10:00
Quantum
2c02e6c4a0
[client] egl: add linear downscale filter shader
2021-08-14 12:19:50 +10:00
Quantum
94de061587
[client] egl: implement lanczos filter shader
2021-08-14 12:19:50 +10:00
Quantum
16adbab5d4
[client] all: remove needless initalization
2021-08-14 12:19:07 +10:00
Quantum
579f998519
[client] all: replace assert with DEBUG_ASSERT
2021-08-14 12:19:07 +10:00
Quantum
85a96d1e06
[client] all: use DEBUG_UNREACHABLE instead of assert
...
Due to the way assert is defined in standard C, compilers in release mode
will not treat it as unreachable. This explains a lot about those pesky
uninitialized variable bugs, actually.
2021-08-14 12:19:07 +10:00
Quantum
a76b274e1a
[client] main: use ARRAY_LENGTH macro
2021-08-13 20:24:01 +10:00
Quantum
8c18817e2d
[client] egl: don't generate mipmaps in downscale filter
...
When using DMABUF, the mipmaps can cause driver hangs and crashes.
2021-08-12 17:03:18 +10:00
Geoffrey McRae
35bd641d2a
[client] overlay: remove the unused menu bar
2021-08-12 15:54:16 +10:00
Geoffrey McRae
117e88c240
[client] egl: add new downscale filter
2021-08-12 15:54:16 +10:00
Geoffrey McRae
6387bf2d2e
[client] rework the configuration overlay to allow for tabs
2021-08-12 09:04:45 +10:00
Geoffrey McRae
fe6339fc77
[client] egl: re-order CAS to before FSR for better results
2021-08-12 06:56:16 +10:00
Quantum
3f8c7c8d0d
[client] egl: fix buffer overflow in desktop_rects module
...
The module has been changed to support variable amount of rectangles,
so we should just allocate a VLA.
2021-08-11 21:23:13 +10:00
Quantum
543c97987b
[client] egl: remove needless precision quantifiers
...
We simply use precision mediump float; for everything. We don't actually
need highp anyways, and we don't use it for stuff like CAS or FSR.
2021-08-11 20:47:46 +10:00
Geoffrey McRae
06da52acfc
[client] egl/fsr: release consts
when no longer needed
2021-08-11 20:47:03 +10:00
Geoffrey McRae
5a2f34d71c
[client] egl/cas: release consts
when no longer needed
2021-08-11 20:42:56 +10:00
Quantum
8b2db071d8
[client] egl: precompute CAS filter constants on CPU
2021-08-11 20:38:42 +10:00
Quantum
3a1a9121eb
[client] egl: make FSR filter show inactive in config when disabled
2021-08-11 20:17:17 +10:00
Quantum
f80b67bc50
[client] egl: precompute FSR filter constants on CPU
2021-08-11 20:16:39 +10:00
Quantum
fe823b6172
[client] egl: display FSR equivalent quality mode
...
This also displays a tooltip to explain that quality can be changed by
altering guest resolution and also show the resolutions needed to achieve
each quality mode.
2021-08-11 20:05:27 +10:00
Quantum
c4c60fd330
[client] egl: update FSR filter state upon resolution change
2021-08-11 20:05:27 +10:00
Geoffrey McRae
5a5b867c73
Revert "[client] egl: make FSR detect an input size change and activate if valid"
...
This reverts commit 73f125dcc7
.
2021-08-11 20:05:07 +10:00
Geoffrey McRae
73f125dcc7
[client] egl: make FSR detect an input size change and activate if valid
2021-08-11 20:02:29 +10:00
Quantum
7e982a6658
[client] util: replace util_mergeOverlappingRects with common version
2021-08-11 19:01:52 +10:00
Quantum
22bbc2457e
[client] wayland: fix deadlock when using wayland:warpSupport=no
2021-08-11 19:01:18 +10:00
Geoffrey McRae
f0ea882165
[client] egl: cleanup texture filtering/post-processing
2021-08-11 18:53:36 +10:00
Geoffrey McRae
f78154d282
[client] egl: fixes to shader post-process pipeline
2021-08-11 06:31:01 +10:00
Quantum
cd5ecf3e5a
[client] egl: don't erase damage when invalidating whole window
2021-08-11 02:43:08 +10:00
Quantum
a850a1b51b
[client] egl: implement C wrappers for FidelityFX constant computation
2021-08-11 02:42:55 +10:00
Quantum
4a06f7cfd5
[client] cmake: make MakeObject use relative paths
...
This prevents issues like obscure characters getting transformed in symbol
names, resulting in an endless game of whack-a-mole finding symbols that are
replaced, such as 58964ce317
.
2021-08-11 02:42:12 +10:00
Quantum
c1a362f8d3
[client] egl: handle \r character when processing #includes
2021-08-11 02:41:54 +10:00
Geoffrey McRae
4f1136d0cd
[client] core: dont warp the cursor if the overlay is active
2021-08-10 16:08:13 +10:00
Geoffrey McRae
127d3acd96
[client] egl: use a texel based version of textureGather for FSR
2021-08-10 14:21:46 +10:00
Quantum
ccee347740
[client] egl: don't define FSR_RCAS_F in ffx_fsr1_rcas.frag
2021-08-10 13:57:23 +10:00
Geoffrey McRae
c3a143732c
[client] egl: cosmetics
2021-08-10 13:46:48 +10:00
Geoffrey McRae
dc0b3a8d45
[client] egl: rework post process filters and add AMD FXR
2021-08-10 13:46:48 +10:00
Quantum
3b751a2017
[client] egl: perform full copy for framebuffer textures after resize
...
This prevents the code from using damage rectangles that are no longer on the
screen, causing an out-of-bounds write.
2021-08-10 13:42:25 +10:00
Geoffrey McRae
230ce81eb8
[client] egl: allocate space for the initial texture dimensions
...
This fixes a buffer overrun when writing to the dimensions array
2021-08-10 09:41:56 +10:00
Geoffrey McRae
e707f9d933
[client] egl: enable ffxCAS if disabled and the sharpness is changed
2021-08-10 07:56:24 +10:00
Geoffrey McRae
64ed383128
[client] egl: re-process the texture and invalidate if a setting changed
2021-08-10 07:51:23 +10:00
Quantum
685499a0e0
[client] egl: prefer gawk and mawk when building shaders
...
We'd rather use known versions of awk if possible for ease of troubleshooting.
2021-08-10 06:17:38 +10:00
Quantum
705250f23d
[client] egl: correct assign to gl_Position in basic.vert
...
gl_Position is expected to be using homogeneous coordinates, which requires
w to be a coordinate scale factor, usually 1.0. z should also be set in order
for depth to be well-defined. Therefore, we should set gl_Position.zw to
vec2(0.0, 1.0).
2021-08-10 06:10:42 +10:00
Quantum
eb680086ef
[client] egl: correctly use flexible array members for BindData
...
Array size of 0 is a gcc extension, the standard C is not declaring a size.
2021-08-10 06:10:42 +10:00
Geoffrey McRae
58964ce317
[client] cmake: replace -
with _
too
2021-08-10 02:35:16 +10:00
Geoffrey McRae
1128eb0e84
[client] x11: don't hang when there are no message pending
2021-08-10 01:47:03 +10:00
Geoffrey McRae
f2b8ff9e8d
[client] app: make overlay mode more transparent
2021-08-10 01:15:31 +10:00
Geoffrey McRae
cc3494437a
[client] egl: add ffx cas configuration options
2021-08-10 01:10:08 +10:00
Geoffrey McRae
37faccd014
[client] egl: allow ffxCAS sharpness configuration
2021-08-10 00:54:54 +10:00
Geoffrey McRae
30e6a258ad
[client] egl: cleanup pointer mess in egl_desktopInit
2021-08-10 00:48:41 +10:00
Geoffrey McRae
d24bc75519
[client] egl: added missing vertex shader file
2021-08-09 23:14:01 +10:00
Geoffrey McRae
92de467edc
[client] egl: add ffx_cas post process filter
2021-08-09 23:12:58 +10:00
Quantum
9b1d03fcfe
[client] egl: implement #include for shaders with awk
2021-08-09 22:04:07 +10:00
Geoffrey McRae
4eda01949d
[client] egl: give pp filters the dimensions of all prior textures
2021-08-09 22:02:07 +10:00
Geoffrey McRae
062d18d5fa
[client] egl: don't allocate the texture ringbuffer unless needed
2021-08-09 18:28:52 +10:00
Geoffrey McRae
04a54598b3
[client] egl: set a default scale for textures without filters
2021-08-09 18:27:10 +10:00
Geoffrey McRae
79dcc6d4f1
Revert "[client] egl: set a default scale for textures without filters"
...
This reverts commit 57a74c156b
.
Pushed a ton of changes that should not have been pushed
2021-08-09 18:26:30 +10:00
Geoffrey McRae
57a74c156b
[client] egl: set a default scale for textures without filters
2021-08-09 18:24:33 +10:00
Geoffrey McRae
6882e5c59f
[client] egl: provide the texture scale to the desktop shader
...
If the texture has a post-processing filter that has scaled the texture,
the desktop fragment shader needs to know this if it's doing linear
scaling.
2021-08-09 18:22:28 +10:00
Geoffrey McRae
f7f8060447
[client] egl: allow setting an output scale for a post-process shader
2021-08-09 17:57:36 +10:00
Quantum
53461d7515
[client] egl: simplify desktop vertex shader
...
In GLSL, using the / operator on two vectors of the same size divides the
vector component-wise, i.e. vec2(a, b) / vec2(c, d) == vec2(a / c, b / d).
2021-08-09 17:51:13 +10:00
Quantum
9b87f4ba5e
[client] egl: cycle through multiple textures for dmabuf
...
This avoids race conditions in GL drivers when attempting to render and
call glEGLImageTargetTexture2DOES on the same texture.
Also, when using glEGLImageTargetTexture2DOES, we do not need to allocate
storage for textures.
2021-08-09 17:12:11 +10:00
Geoffrey McRae
1fd726eed7
[client] x11: be less sensitive to frame skips
...
External events like launching other applications can cause latency
spikes while X11 initializes the application, we should only start
adjusting our delay if we see excessive skips over a 1s period.
2021-08-09 15:51:01 +10:00
Geoffrey McRae
bc7e59c9d7
[client] x11: prevent present event loop underruns
...
Queue up and maintain a list of presentation timestamps to avoid spikes
caused by X11 event processing latency.
2021-08-09 15:24:12 +10:00
Geoffrey McRae
179eaef29d
[client] x11: switch to epoll for event wait loop
2021-08-09 15:23:44 +10:00
Geoffrey McRae
f50ef4c23c
[client] egl: remove includes from testing
2021-08-09 14:13:03 +10:00
Geoffrey McRae
86d6b67337
[client] egl: rework egl to accomodate post-processing filtering
2021-08-09 14:08:10 +10:00
Geoffrey McRae
69f6532b8d
[common] ringbuffer: allow reverse iteration
2021-08-09 14:06:32 +10:00
Geoffrey McRae
91d1b8d2cd
[client] egl: refactor egl_texture_free to use project naming standards
2021-08-08 17:52:13 +10:00
Geoffrey McRae
baf9661530
[client] egl: remove texture->ops indirection
2021-08-08 17:31:52 +10:00
Geoffrey McRae
2141046da9
[client] opengl: refactor to use project naming standards
2021-08-08 17:21:25 +10:00
Geoffrey McRae
266ad27998
[client] egl: refactor to use project naming standard
2021-08-08 17:16:10 +10:00
Geoffrey McRae
f4a925a750
[client] main: destroy and finish fontconfig usage
...
Fixes ASAN reported memory leak
2021-08-08 16:21:48 +10:00
Geoffrey McRae
30ed563504
[client] interface: refactor to use camlCase function names
2021-08-08 15:43:42 +10:00
Geoffrey McRae
d347b28481
[client] egl: implement free for texture frambuffer
2021-08-08 15:35:13 +10:00
Geoffrey McRae
f8ae291090
[client] interface: switch to using UPCAST for the renderer's data
2021-08-08 15:32:01 +10:00
Geoffrey McRae
45d1f27fb4
[client] interface: rename LG_Renderer to LG_RendererOps
...
Part of the standardisation of using the `Ops` suffix for all interfaces
2021-08-08 14:43:04 +10:00
Geoffrey McRae
1a8267d55a
[client] interface: cleanup the renderer interface
...
Removes the silly typedefs and adds some basic documentation as to the
usage of each function.
2021-08-08 14:39:40 +10:00
Quantum
b822e255d8
[client] egl: attempt DMABUF import and fallback if it fails
...
This should deal with drivers not supporting our DMABUF without attempting
to identify the drivers and blacklist them.
2021-08-08 09:53:47 +10:00
Geoffrey McRae
037b76750a
[client] egl: revert glsync changes
...
`process` and `bind` are called from the same thread in order, there is
no need for atomic usage here.
This reverts commit 3d7dbd6371
.
This reverts commit b3db1ba10b
.
2021-08-08 09:44:59 +10:00
Geoffrey McRae
e949f2f8d2
[client] egl: texture_framebuffer should call the stream init
2021-08-08 09:43:28 +10:00
Geoffrey McRae
88c91d4752
[egl] texture: use more appropriate vairable names (parent & this)
2021-08-08 09:35:56 +10:00
Geoffrey McRae
3d7dbd6371
[client] egl: sync
is now an atomic, access it as such
2021-08-08 09:26:36 +10:00
Quantum
b3db1ba10b
[client] egl: eliminate GLsync object leaks
...
It used to be the case that we overwrite this->sync even if it was non-zero
when updating the texture, without deleting the sync object. If we update
faster than we render, the result would be leaking sync objects.
This commit ensures that sync objects are deleted when they are replaced.
2021-08-08 09:19:04 +10:00
Geoffrey McRae
16f68d6b1b
[client] main: don't call stopWaitFrame if jitRender is not enabled
2021-08-08 09:01:48 +10:00
Geoffrey McRae
64da3465b8
[client] x11: invalidate the full window after timeout from expose
...
Invalidating the entire window on an Expose event causes poor WM
performance when dragging the window around. Instead flag to redraw and
wait for the expose events to stop for 100ms before doing it.
2021-08-08 08:49:46 +10:00