Commit graph

2486 commits

Author SHA1 Message Date
Quantum
e0c1394c33 [client] add gl-check script to check GL function calls
This prevents us from exceeding the minimum GL/EGL versions that we are
targetting or forced to use indirection for due to lack of guarantee in
the ABI.
2021-10-01 10:12:40 +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
778d27f08a [common] debug: fix incorrect use of #elif defined 2021-09-29 17:48:03 +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
1f24ab0742 [host] nvfbc: avoid waking up pointer thread for no reason
If the wait times out, we used to simply restart the loop, which causes
it to check this->stop and exit if set to true. However, nvfbc_stop
already calls lgSignalEvent, which would wake up the pointer thread to
perform the check, so there is no need to set a timeout on the wait.
2021-09-29 17:47:02 +10:00
Quantum
57d220a43b [common] open: detach xdg-open instead of waiting for it
Sometimes, e.g. when xdg-open has to start the browser, the xdg-open
process can stay around until the browser exits, which freezes the
client. Instead, we should not wait for xdg-open to exit.

However, we can't simply not call wait, as that would leave the
xdg-open process around as a zombie. We could turn off the SIGCHLD
handler, but that's a global solution to a local problem. Instead, we
call setsid and fork again to detach the xdg-open process as if it's a
daemon, and let init take care of the reaping process.

Co-Authored-By: Tudor Brindus <me@tbrindus.ca>
2021-09-27 13:35:08 +10:00
Quantum
bc65de5987 [host] installer: build 64-bit NSIS installers
The host is a 64-bit application, so requiring 64-bit Windows isn't an
issue. However, not using 32-bit installers has an advantage: we don't
need to require WoW64.
2021-09-21 22:26:10 +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
09d93abf1a [all] update submodules 2021-09-11 10:50:16 +10:00
Geoffrey McRae
2aa236e1f9 [common] options: check for realloc failure 2021-09-11 10:38:07 +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
5fbb34f8f3 [doc] add upscale/downscale and related words to dictionary 2021-09-04 17:23:13 +10:00
Quantum
20acb9002a [doc] install: fix missing new line warning 2021-09-04 13:35:08 +10:00
Quantum
4ee83a2b31 [client] ci: check --help spelling 2021-09-04 13:31:55 +10:00
Quantum
909a9a903f [doc] lgspell: allow spell checking arbitrary text 2021-09-04 13:31:55 +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
49725c9ea4 [doc] ci: run CI build with spell check 2021-09-04 13:30:51 +10:00
Quantum
753b44e34f [doc] support building with spell check 2021-09-04 13:30:51 +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
43b0e80f93 [common] ivshmem: use e.g. instead of incorrect ie for example 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
94d7ed300e [docs] ci: build documentation on GitHub Actions 2021-09-04 13:27:51 +10:00
Netboy3
924bd9e543 [doc] Correct a few spelling mistakes 2021-09-04 13:27:35 +10:00
Netboy3
c4eadda389 [doc] install: Add Configuration Widget section
Add a section to cover the configuration widget, the
various tabs and settings and the new post-processing
filter stack.
2021-09-04 13:27:35 +10:00
Netboy3
f563e67e19 [doc] install: Remove scale toggle from key bindings 2021-09-04 13:27:35 +10:00
Netboy3
d7e4536e57 [doc] install: Add additional command line options
Add wayland:fractionScale and reorder options.
2021-09-04 13:27:35 +10:00
Quantum
ab033d84b1 [common] cpuinfo: handle more than 64 threads on Windows
The old code will not correctly report the number of threads on CPUs with
more than one processor group, i.e. when there are more than 64 logical
processors (threads).
2021-09-04 13:25:24 +10:00
Quantum
286da11172 [host] windows: don't register exit event when none exists 2021-09-04 13:25:06 +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
ffabdd348c [common] cpuinfo: trim trailing whitespace from model name on Windows 2021-08-31 20:57:34 +10:00
Geoffrey McRae
5fc561fa63 [common] cpuinfo: trim any trailing whitespace from CPU model 2021-08-31 20:20:11 +10:00
Quantum
977a4f6323 [client] egl: remove useless comment in filter_downscale.c 2021-08-31 20:14:39 +10:00
Quantum
8514f35474 [common] windebug: handle FormatMessage failure 2021-08-31 20:14:29 +10:00
Quantum
e05bb196f0 [host] app: print CPU information on startup 2021-08-31 20:14:10 +10:00
Quantum
c7666b065a [client] main: print out CPU information on startup 2021-08-31 20:14:10 +10:00
Quantum
0faafbff47 [common] cpuinfo: implement for Windows 2021-08-31 20:14:10 +10:00
Quantum
34fb2f9076 [common] cpuinfo: implement lgDebugCPU
This is a helper function that can be run at startup to quickly generate
a debug print containing CPU information.
2021-08-31 20:14:10 +10:00