Tony Wasserka
ae07958577
Library Forwarding: Add GUI for enabling use of individual host libraries
2025-02-16 13:15:40 +01:00
Tony Wasserka
cc6ff5e9e6
Config: When saving Config.json, preserve ThunksDB entries
2025-02-16 13:15:40 +01:00
Tony Wasserka
b968ea7e7e
Windows: Add atoll symbol used by json_getInteger
2025-02-16 13:15:40 +01:00
Ryan Houdek
a7c6fdb1fc
Merge pull request #4357 from Sonicadvance1/fix_negative_return
...
FileManagement: Throw a warning if `/proc` can't be opened
2025-02-13 10:55:00 -08:00
Ryan Houdek
b76a2963cf
Merge pull request #4355 from Sonicadvance1/move_instead_of_copy
...
Fixes a couple locations where is variable is copied when it could be moved
2025-02-13 10:54:46 -08:00
Ryan Houdek
42b0fbd34c
Merge pull request #4354 from Sonicadvance1/use_of_auto_copy
...
Fixes some instances of auto usage with unintentional copy
2025-02-13 10:54:29 -08:00
Ryan Houdek
f69ef8606f
Merge pull request #4353 from Sonicadvance1/seccomp_fixes
...
Seccomp: Fix a couple minor things.
2025-02-13 10:54:12 -08:00
Ryan Houdek
afa5ad5f9f
Merge pull request #4351 from Sonicadvance1/fix_pagesize_check
...
Linux: Fixes PAGESIZE checks that could return <= 0
2025-02-13 10:54:01 -08:00
Ryan Houdek
1fc82708e9
Merge pull request #4349 from Sonicadvance1/relative_portable
...
Config: Correctly handle relative paths with portable
2025-02-13 10:53:41 -08:00
Ryan Houdek
917cbbadde
Fixes a couple locations where is variable is copied when it could be moved
2025-02-13 02:07:00 -08:00
LC
c37dc81839
Merge pull request #4356 from Sonicadvance1/remove_elf_symbol_database
...
CommonTools: Removes ELFSymbolDatabase
2025-02-13 05:06:13 -05:00
Ryan Houdek
116268b275
FileManagement: Throw a warning if /proc can't be opened
...
We use this for ProcFD collision checking. Give a warning if it can't be
opened, also not doing the additional work when it fails.
This isn't likely to occur unless someone messes up their rootfs mounts.
2025-02-13 00:43:13 -08:00
Ryan Houdek
73802492b8
CommonTools: Removes ELFSymbolDatabase
...
This is completely unused.
2025-02-13 00:14:08 -08:00
Ryan Houdek
7cd4d53fa9
Fixes some instances of auto usage with unintentional copy
...
Just switch the uses over to `const auto&`
2025-02-12 23:51:57 -08:00
Ryan Houdek
c44757975e
Seccomp: Fix a couple minor things.
...
If fcntl fails then report a log message, and fix a potential overflow
before widen bug.
2025-02-12 23:45:06 -08:00
Ryan Houdek
f25cdcdf63
Profiler: Fixes zeroing of allocated slots.
...
Was accidentally zeroing size of ThreadStatsHeader instead of
ThreadStats. So 64 bytes instead of 48, which would have overrunned a
slot.
2025-02-12 23:36:15 -08:00
Ryan Houdek
5d37253e85
Linux: Fixes PAGESIZE checks that could return <= 0
...
If any `sysconf(_SC_PAGESIZE);` errors then we can get bad values, make
sure to at minimum use the x86 page size.
Also changes a hardcoded page size to use the FEX pagesize define.
2025-02-12 23:32:15 -08:00
Ryan Houdek
e3ee579f92
Config: Correctly handle relative paths with portable
...
It is desired that FEX_APP_CONFIG and FEX_APP_CONFIG_LOCATION support
relative paths when portable is used. Support this.
2025-02-12 12:08:28 -08:00
Tony Wasserka
391f9aa97d
Profiler: Add Tracy backend
...
This differs from the existing GPUVis backend in a number of ways:
* Tracy is optimized for minimal overhead and nanosecond-resolution profiling
* Tracy supports live tracing (in addition to capture-based operation)
* Tracy has a richer feature set and a more polished UI (notably, statistics and histograms are generated out-of-the-box)
* GPUVis supports tracing multiple processes, whereas Tracy is single-process only
To use this backend, one of the environment variables FEX_PROFILE_TARGET_NAME
or FEX_PROFILE_TARGET_PATH must be defined to select the application under
profile by name or by path suffix.
Additionally, FEX_PROFILE_WAIT_FOR_FORK=1 may be needed for games that fork on startup.
2025-02-12 19:35:15 +01:00
Ryan Houdek
602c530615
Wine: Add support for magic fex+wine shm path
...
Fallback to the previous path if it doesn't exist.
2025-02-11 13:42:45 -08:00
Ryan Houdek
c8c27f26f7
Review
2025-02-11 13:42:45 -08:00
Ryan Houdek
dcebe85f3a
Wine: Implements support for profile stats
...
This is a little trickier, we actually open the
`/dev/shm/fex-<pid>-stats` file directly using Windows APIs that way
Mangohud (which is going to be on the Linux side, or potentially even
embedded in to Gamescope) can safely pick up the stats.
A little quirky plus doesn't support expanding its size since WINE
doesn't support NtExtendSection, but that's fine.
2025-02-11 12:56:11 -08:00
Ryan Houdek
2ba0b66426
LinuxSyscalls: Implements support for Linux side profile stats
...
This is fairly straightforward. It creates the shared memory region in
/dev/shm/fex-<pid>-stats so that Mangohud can sample it.
2025-02-11 12:56:11 -08:00
Ryan Houdek
5c9543f159
Common: Implement a base profiler implementation
...
Not wired up to anything. Requires the frontends to allocate shared
memory in the expected way.
2025-02-11 12:56:11 -08:00
Ryan Houdek
f6e3689f30
WinAPI: Implement support for DeleteFile
2025-02-11 12:56:11 -08:00
Ryan Houdek
a761343717
Profiler: Sprinkle the profile stats around
...
For the four things we care about
2025-02-11 12:56:10 -08:00
Ryan Houdek
906988c49b
Windows: Expose support for NtCreateSection and NtMapViewOfSection
2025-02-11 12:56:10 -08:00
Tony Wasserka
53ac5579fb
Remove unused IMGui header and obsolete debugger documentation
2025-02-11 15:41:35 +01:00
LC
dce9de222d
Merge pull request #4344 from Sonicadvance1/fix_fexserver_compressedimage_start
...
FEXServer: Fixes background startup
2025-02-11 07:56:37 -05:00
Ryan Houdek
75793300f2
Merge pull request #4333 from neobrain/feature_fasio
...
Async: Add framework for multiplexing IO on network sockets and other file descriptors
2025-02-10 11:35:37 -08:00
Ryan Houdek
aff3914a66
FEXServerClient: Fix searching for FEXServer
...
argv[0] is whatever the user passed in and may not directly be
FEXLoader/FEXInterpreter's path. Make sure get the full path.
2025-02-10 01:22:47 -08:00
Ryan Houdek
8876047875
FEXServer: Fixes background startup
...
The problem here is that the pipe we used for telling FEXInterpreter
that the FEXServer is ready to accept connections was inherited by
erofsfuse or squashfuse. So the closing of the pipe from the FEXServer
side would leave a reference open in squashfuse or erofsfuse.
Fix this by setting FD_CLOEXEC on the pipe, but also pass the pipe FD
through an argument instead of scanning for all pipes.
Then once we execve the squashfuse/erofsfuse application, the FD isn't
inherited.
Fixes #4329
2025-02-09 23:59:32 -08:00
Ryan Houdek
ee47b5bbc9
Merge pull request #4331 from Sonicadvance1/fix_portable_fexserver
...
FEXServer: Fixes FEX_PORTABLE usage
2025-02-07 12:15:58 -08:00
Tony Wasserka
d80daf2692
FEXServerClient: Migrate RequestPIDFDPacket to fasio
...
The other operations in this file are simple reads/writes, so they don't
need to be changed.
2025-02-07 16:08:18 +01:00
Tony Wasserka
0e5c9e8b06
Async: Add helper for fixed-length reads
2025-02-07 16:08:17 +01:00
Tony Wasserka
6bc4aed82c
Async: Fix receiving FDs via tcp_socket
2025-02-07 16:08:16 +01:00
Tony Wasserka
e69e1200f5
Async: Qualify system call wrappers with ::
2025-02-07 10:50:40 +01:00
Tony Wasserka
81e253b06b
Async: Handle EINTR and EAGAIN
2025-02-07 10:49:45 +01:00
Ryan Houdek
854e699589
WINE: Fixes FEX_PORTABLE usage
...
Completely didn't listen to FEX_PORTABLE. Necessary otherwise it can
read configs from some random locations when portable is enabled.
2025-02-06 15:36:27 -08:00
Tony Wasserka
43dcc84c07
Async: Move ownership of file descriptors out of poll_reactor
2025-02-06 22:35:29 +01:00
Tony Wasserka
6e9d5f00de
Async: Check function signature for callbacks
2025-02-06 22:35:29 +01:00
Tony Wasserka
a65ca9663f
Async: Rename read_callbacks to callbacks
2025-02-06 22:35:29 +01:00
Tony Wasserka
02b767c0ea
GdbServer: Migrate to fasio
2025-02-06 22:35:29 +01:00
Tony Wasserka
4b1c1d266d
FEXServer: Migrate ProcessPipe to fasio
2025-02-06 22:35:29 +01:00
Tony Wasserka
d9bf140971
FEXServer: Migrate Logger to fasio
2025-02-06 22:35:29 +01:00
Tony Wasserka
1402776ba6
FEXServer: Clean up socket path setup
...
The character counting logic isn't actually needed, since bind() doesn't
need the exact byte length of the input data. Dropping the manual bookkeeping
cleans up this code considerably.
2025-02-06 22:35:29 +01:00
Tony Wasserka
e36fb47d98
FEXServer: Use a pipe to register new log clients instead of signaling across threads
2025-02-06 22:35:29 +01:00
Tony Wasserka
2bb37357c0
FEXConfig: Migrate inotify monitoring to fasio
2025-02-06 22:35:29 +01:00
Tony Wasserka
7494ac7615
Add framework for multiplexing IO on network sockets and other file descriptors
...
The design leans heavily on Boost.Asio, a battle-tested library that's widely
used and that forms the basis of upcoming C++ networking support.
2025-02-06 22:35:29 +01:00
Billy Laws
5ec4d3125a
ARM64EC: Set EC_ENTRY_CPUAREA_REG at inline SMC dispatcher entry
2025-02-06 00:00:38 +00:00