Geoffrey McRae
2901e7aec5
[client] egl: only upload the damage rects if they actually changed
...
Profiling shows that a considerable amount of time is spent in
glBindBuffer and glBufferSubData when the damage rects are updated.
Since the amount of data here is quite small it's far faster to check if
it's different then to just blindly overwrite the buffer on each call.
Profiled on an Intel CPU with UHD P630 Graphics using magic-trace
2022-05-17 00:51:13 +10:00
Geoffrey McRae
6afd262a27
[client] egl: update AMD FSR to 1.0.2
2022-05-04 15:29:21 +10:00
Geoffrey McRae
eae559b4c9
[client/obs] update to support downscaled frames coming from the host
2022-05-01 19:51:25 +10:00
Geoffrey McRae
3a8cb6a613
[client/common] fixes for issues detected through static analysis.
2022-03-07 10:14:52 +11:00
Paul Hollinsky
3890c72159
[client] egl: use texture sampler for desktop
...
The desktop doesn't need its own sampler, there is already an identically
configured one in the `desktop->texture`.
For some reason, using the texture sampler fixes a black screen issue
with my GTX 660 using the 470.86 driver. Maybe hitting some limit
for how many samplers can be allocated?
2022-02-08 15:34:54 +11:00
Paul Hollinsky
4223a5e38f
[client] egl: remove extra sampler from TextureBuffer
...
It was unused, there is a sampler in EGL_Texture (base).
2022-02-08 15:34:54 +11:00
Geoffrey McRae
b0568ca404
[client] egl: use a sigmoid curve for nv
2022-01-26 23:03:35 +11:00
Geoffrey McRae
fb4bdaee2b
[client] egl: set the active preset if specified at launch
2022-01-26 16:07:17 +11:00
Geoffrey McRae
c7389285f9
[client] egl: fix null pointer access when no preset is set
2022-01-26 16:04:15 +11:00
Geoffrey McRae
aa426d13a7
[client] egl: added egl:preset
to load a default preset at startup
2022-01-26 16:00:07 +11:00
Geoffrey McRae
89c83dafc1
[client] egl: make egl less noisy unless debug is specified
2022-01-26 15:42:33 +11:00
Geoffrey McRae
22f3cf5ba6
[client] egl: fix masked color cursor blend operation for xor drawing
2022-01-26 12:23:05 +11:00
Geoffrey McRae
3067bdaa15
[client] egl: properly apply xor mask to masked color cursors
2022-01-26 12:11:43 +11:00
Geoffrey McRae
96fa8891c8
[client] egl: fixed incorrect drawing of masked color cursors
2022-01-24 06:56:32 +11:00
Quantum
9a6aa3ce66
[client] egl: remove duplicate #include "app.h"
2022-01-23 08:49:15 +11:00
Geoffrey McRae
464fee3e20
[client] overlay/graphs: allow the graph to have a custom title format
2022-01-17 22:08:56 +11:00
Chris Spencer
f635077a2c
[client] egl: increase texture processing timeout
...
On my machine (Intel UHD Graphics 770), texture processing occasionally
(about 5% of the time) takes more than 20ms (the highest I have seen is
around 32ms) when the host resolution is 2560x1440. This results in the
frame being discarded and the client displays a stale image. Increase the
timeout to 40ms.
2022-01-14 12:31:02 +11:00
Geoffrey McRae
6bba9bc25d
[client/common] move ll from the client into the common code module
2022-01-12 12:22:18 +11:00
Geoffrey McRae
1851002fc1
[client] all: remove ll_walk
and migrate over to ll_forEachNL
2022-01-12 12:17:29 +11:00
Geoffrey McRae
ec0bd6adc8
[client] imgui: update to cimgui 1.86
2022-01-08 00:26:12 +11:00
Geoffrey McRae
952ebea2c5
[all] refresh copyright dates
2022-01-05 19:42:46 +11:00
Geoffrey McRae
d708651c53
[client] egl: check for null gl strings
2022-01-05 12:38:38 +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
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
Geoffrey McRae
adbe333414
[client] egl: dmabuf can be used without GL_EXT_buffer_storage support
2021-12-15 06:10:30 +11:00
Quantum
15066c7345
[client] egl: handle eglQuerySurface(EGL_BUFFER_AGE_EXT) error
2021-12-14 14:35:30 +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
8167ef2c4a
[client] egl: make use of glsl's textureSize function
2021-11-12 07:41:59 +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
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
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
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
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