Ryan Houdek
aec5b21d2a
Merge pull request #1833 from neobrain/feature_generic_callbacks
...
Thunks: Implement generic callback support
2022-07-07 10:02:02 -07:00
Tony Wasserka
2b35dd829c
Thunks: Mark inline assembly in CallHostThunkFromRuntimePointer as volatile
2022-07-07 17:33:31 +02:00
Tony Wasserka
686895802a
Thunks/GL: Drop unused manual function implementations
...
These functions are annotated with fexgen::callback_stub nowadays, so
they don't need custom host endpoints anymore.
2022-07-07 17:33:31 +02:00
Tony Wasserka
72d0228cd7
Thunks/gen: Remove now unneeded callback_structs and callback_typedefs files
2022-07-07 17:33:31 +02:00
Tony Wasserka
298e6cad0c
Thunks/Xext: Enable automatic handling of callbacks
2022-07-07 17:33:31 +02:00
Tony Wasserka
66f74a431f
Thunks/gen: Clean up implementation of generic callbacks
2022-07-07 17:33:31 +02:00
Tony Wasserka
83c2e52ba5
Vulkan: Handle queries for unknown functions more gracefully
2022-07-07 17:00:15 +02:00
Stefanos Kornilios Misis Poiitidis
9c01dd9d9f
Thunks: PoC Callbacks using sha256 exports from host
2022-07-06 18:41:53 +02:00
Stefanos Kornilios Misis Poiitidis
f4a4b2c14b
ThunkLibs: Fix Guest.h
2022-06-30 14:08:01 +03:00
Stefanos Kornilios Mitsis Poiitidis
88b94bef54
Merge pull request #1812 from FEX-Emu/skmp/add-thunks-islibloaded
...
Thunks: Add fex:is_lib_loaded
2022-06-30 04:45:37 +00:00
Ryan Houdek
a82d41ee22
Thunks/vulkan: Disable debug report callback
...
This was checking for the wrong debug structure and it wasn't actually
unlinking it correctly from the linked list.
Since it was talking directly to a_0 instead of the current modifying
struct.
Instead of having a stubbed debug report struct, we can just remove the
structure from the linked list. Since we are already abusing a const
cast there anyway.
Fixes Vulkan thunks on Snapdragon.
2022-06-29 20:02:52 -07:00
Stefanos Kornilios Misis Poiitidis
21fc6bedcb
Thunks: Add fex:is_lib_loaded
2022-06-29 19:20:08 +03:00
Ryan Houdek
ad6fd5ab72
Merge pull request #1804 from neobrain/fix_cmake_thunks_portability
...
Allow building thunks on a wider range of platforms
2022-06-29 02:08:55 -07:00
Tony Wasserka
4771a340f5
Merge pull request #1803 from neobrain/fix_vulkan_debug_report
...
ThunkLibs/vulkan: Work around lack of generic callback support in VK_EXT_debug_report
2022-06-28 16:39:37 +02:00
Tony Wasserka
498d0fc145
CMake: Use toolchain files to set up x86 cross compilation
2022-06-25 14:00:36 +02:00
Tony Wasserka
4a547fe95f
Thunks/CMake: Link against clang-cpp instead of clangTooling
2022-06-25 13:54:12 +02:00
Tony Wasserka
ca906589d4
Thunks/CMake: Automatically discover the clang resource directory
2022-06-25 13:53:48 +02:00
Tony Wasserka
8bafae2262
ThunkLibs/vulkan: Work around lack of generic callback support in VK_EXT_debug_report
2022-06-25 12:44:58 +02:00
Tony Wasserka
4ef82c82b5
Revert "Thunks/vulkan: Disable support for debug extensions as they require callback support"
...
This reverts commit c04d2409da .
2022-06-25 11:48:39 +02:00
Stefanos Kornilios Misis Poiitidis
48c45da2de
ThunkLibs: silence warnings
2022-06-25 08:27:57 +03:00
Tony Wasserka
ec49100c63
Thunks/CMake: Remove now unneeded helper functionality
...
This was needed for libvulkan_device. With libvulkan thunked directly now,
there is no further use of this code.
2022-06-24 11:56:36 +02:00
Tony Wasserka
c04d2409da
Thunks/vulkan: Disable support for debug extensions as they require callback support
2022-06-24 11:56:36 +02:00
Tony Wasserka
b93b713179
Thunks/vulkan: Thunk libvulkan directly instead of libvulkan_device
2022-06-24 11:56:36 +02:00
Tony Wasserka
fe2f54fc3d
Thunks/GL: Use guest-callable host function pointers to implement glXGetProcAddress
2022-06-24 11:56:36 +02:00
Tony Wasserka
599f8f99ed
Thunks/gen: Add support for thunking APIs that return host function pointers
...
Interface definitions must enable this functionality by enclosing functions
that may be called through function pointers in a namespace annotated with
`fexgen::indirect_guest_calls`. The guest thunk must further link any host
function pointers to a guest-side instance of CallHostThunkFromRuntimePointer.
2022-06-24 11:56:36 +02:00
Tony Wasserka
b1b338ed5a
Thunks: Simplify guest helper macros
2022-06-24 11:56:36 +02:00
Stefanos Kornilios Misis Poiitidis
dacdfd5c02
CMAKE: Create directories during configuration, fixes endless generation of unittests
2022-06-15 01:10:33 +03:00
Stefanos Kornilios Misis Poiitidis
a6a816fb38
CMake: C/C++ flags for defined singed overflow warping
2022-05-10 17:14:17 +03:00
Ryan Houdek
364b3380fc
Fixes Host and guest thunks install path
...
Hosts were using the cmake install path with $DESTDIR which duplicates
paths.
GuestThunks were doing some magic that wasn't actually necessary
2022-02-15 15:36:31 -08:00
Tony Wasserka
68426735a5
Thunks: Clean up ASTMatcher-based testing helpers
...
The run_thunkgen* helpers now parse generated source code and return its AST
representation, so HasASTMatching helper calls don't each need to redundantly
compile it themselves. This also ensures the generator output actually compiles
in tests where we didn't explicitly check that before.
This also allows printing the full AST of the generator output on test
failures. This must be enabled manually by changing a variable in the ostream
output operator for SourceWithAST.
2022-02-10 12:11:52 +01:00
Tony Wasserka
ee6b558000
Thunks: Fix warning about unused field
2022-02-10 12:11:52 +01:00
Tony Wasserka
3c7872c6d5
Thunks: Rename FrontendAction to GenerateThunkLibsAction
2022-02-10 12:11:52 +01:00
Tony Wasserka
4aed6fc56c
Thunks/gen: Remove now unneeded code
2022-02-10 12:11:52 +01:00
Tony Wasserka
5d555a10a2
Thunks: Explicitly put thunks into the text library section
...
Previously, defining zero-initialized variables right before LOAD_LIB
could cause the compiler to put thunk definitions into bss, hence triggering
errors during assembly ("attempt to store non-zero value in section `.bss'").
2022-02-10 12:11:52 +01:00
Tony Wasserka
bd6999eb87
CMake: Clean up build architecture for ThunkLibs
...
Host thunk libraries are always built as part of the main project now.
Guest thunk libraries are still cross-compiled in a CMake ExternalProject,
but *additionally* there are CMake targets in the main project to make
sure IDE engines can properly handle guest source files.
2022-02-10 11:23:43 +01:00
Tony Wasserka
3ebb2eaf0d
Thunks: Fix guest libs build on clang
2022-02-10 11:23:41 +01:00
Seas0
8fc5f66a5b
ThunkLibs: Add meta data to libvulkan_device
2022-01-05 14:28:26 +08:00
Tony Wasserka
b6e46fd44d
Thunks: Update documentation to reflect generator changes
2021-12-10 11:25:01 +01:00
Tony Wasserka
32a0e37569
Thunks: Remove now unneeded generator files
2021-12-10 11:25:01 +01:00
Tony Wasserka
0285e35c87
Thunks: Use libclang-based code generation for libvulkan
2021-12-10 11:25:01 +01:00
Tony Wasserka
bbfb8713a7
Thunks: Drop struct verifier tests for Vulkan
...
This is currently not supported with the new generator.
2021-12-10 11:25:00 +01:00
Tony Wasserka
c1d6967cb6
Thunks/gen: Add support for expanding symbol lists using a macro
2021-12-10 11:25:00 +01:00
Tony Wasserka
20e24eae9c
Thunks: Use libclang-based code generation for libdrm
2021-12-10 11:25:00 +01:00
Tony Wasserka
b8d9027680
Thunks: Use libclang-based code generation for libxshmfence
2021-12-10 11:25:00 +01:00
Tony Wasserka
688ef9f5af
Thunks: Use libclang-based code generation for libxcb-xfixes
2021-12-10 11:25:00 +01:00
Tony Wasserka
181c9074ab
Thunks: Use libclang-based code generation for libxcb-sync
2021-12-10 11:25:00 +01:00
Tony Wasserka
6f85f64bfd
Thunks: Use libclang-based code generation for libxcb-shm
2021-12-10 11:25:00 +01:00
Tony Wasserka
ba6ee61db2
Thunks: Use libclang-based code generation for libxcb-randr
2021-12-10 11:25:00 +01:00
Tony Wasserka
e735281b2c
Thunks: Use libclang-based code generation for libxcb-present
2021-12-10 11:24:59 +01:00
Tony Wasserka
c8b2d714a8
Thunks: Use libclang-based code generation for libxcb-glx
2021-12-10 11:24:59 +01:00