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
Tony Wasserka
bba0625a57
Thunks: Use libclang-based code generation for libxcb-dri3
2021-12-10 11:24:59 +01:00
Tony Wasserka
c9a7b36210
Thunks: Use libclang-based code generation for libxcb-dri2
2021-12-10 11:24:59 +01:00
Tony Wasserka
99bf02f27f
Thunks/gen: Add support for libraries with "-" in the filename
2021-12-10 11:24:59 +01:00
Tony Wasserka
a2c02ae51e
Thunks: Use libclang-based code generation for libxcb
...
Notably, xcb_take_socket uses the callback_guest annotation, since the
given callback is never called on the host (instead it's manually forwarded
back to a helper guest thread for calling).
2021-12-10 11:24:59 +01:00
Tony Wasserka
c7b59143c6
Thunks/gen: Add custom guest entrypoint annotation
2021-12-10 11:24:59 +01:00
Tony Wasserka
1e23e61572
Thunks: Use libclang-based code generation for libEGL
2021-12-10 11:24:59 +01:00
Tony Wasserka
f4dd1a895e
Thunks: Use libclang-based code generation for libGL
2021-12-10 11:24:58 +01:00
Tony Wasserka
3a2f9a4d46
Thunks/gen: Support guest-side symbol tables and custom host symbol loaders
2021-12-10 11:24:58 +01:00
Tony Wasserka
4a848d7202
Thunks: Use libclang-based code generation for libX11
2021-12-10 11:24:58 +01:00
Tony Wasserka
1b58ed9f57
Thunks/X11: Fix incorrect library version
2021-12-10 11:24:58 +01:00
Tony Wasserka
1c86f7ed36
Thunks/gen: Support annotating guest-exclusive function pointers
...
Function pointer arguments given to the guest thunk library aren't
callable on the host, so they need special handling on a case-by-case
basis. Similar problems arise when the guest-side tries to consume a
pointer returned from a native host library. To automate some common
scenarios, this change adds two new annotations:
"callback_guest" indicates the callback parameter is never called on the
host and hence can be marshalled like any other argument. Accidental host
calls to the function pointer are prevented by wrapping it in an opaque
type alias.
"returns_guest_pointer" indicates that the host function returns a pointer
usable in the guest context. This applies e.g. to functions that derive
the returned pointer from input guest pointer arguments.
2021-12-10 11:24:58 +01:00
Tony Wasserka
2733b2ee1e
Thunks/gen: Add annotation for custom host implementations
2021-12-10 11:24:58 +01:00
Tony Wasserka
4ceb2dfdf2
Thunks: Use libclang-based code generation for libXext
2021-12-10 11:24:58 +01:00
Tony Wasserka
bd380e0f15
Thunks: Use libclang-based code generation for libXrender
2021-12-10 11:24:58 +01:00
Tony Wasserka
73ec786c60
Thunks: Use libclang-based code generation for libasound
2021-12-10 11:24:57 +01:00
Tony Wasserka
e3a2c8dc80
Thunks: Use libclang-based code generation for libXfixes
2021-12-10 11:24:57 +01:00
Tony Wasserka
d3b14df840
Thunks/gen: Add versioning support
2021-12-10 11:24:57 +01:00
Tony Wasserka
a12ab8f98a
Thunks/gen: Add support for "callback_stub" annotations
...
Some applications set callbacks that never get called in practice (such as
error handlers). It's sensible to just not implement these instead of
cluttering the code with effectively unused callback wrappers.
2021-12-10 11:24:57 +01:00
Tony Wasserka
966b9a69d8
Thunks/gen: Add support for function pointer parameters ("callbacks")
2021-12-10 11:24:57 +01:00
Tony Wasserka
927d3d00e2
Thunks/gen: Add support for thunking variadic functions
2021-12-10 11:24:57 +01:00
Tony Wasserka
bfb9cabeb8
Thunks/gen: Add support for generation of host library functions
2021-12-10 11:24:57 +01:00
Tony Wasserka
c05e1c9797
Thunks: Add a new code generator based on libclang
2021-12-10 11:24:56 +01:00
Tony Wasserka
5542360948
Thunks: Fail if thunking is enabled for a library that isn't installed
...
Previously, the host thunk would seemingly succeed to load even when
the corresponding host library could not be loaded, leading to obscure
crashes later throughout execution.
2021-11-30 17:39:01 +01:00
Tony Wasserka
7490d15369
Thunks: Clean up helper macro formatting
2021-11-30 17:39:01 +01:00
Tony Wasserka
08bfc5e0c0
Thunks: Catch unresolved function references at build time
...
This could also prove useful for guest libraries, however the implicit
dependency of libEGL on libGL (via glXGetProcAddress) cannot be resolved
easily with the current build setup.
2021-11-18 19:27:09 +01:00
Tony Wasserka
f62ec61e4f
Thunks: Add missing includes
2021-11-18 19:27:09 +01:00
Tony Wasserka
06881af363
Thunks/xcb: Remove unused function
...
The callback mechanism is not used for this API since the function pointer
argument is called on the guest itself (if through some indirection).
2021-11-18 19:27:09 +01:00
Tony Wasserka
598533555d
Thunks/vulkan: Small cleanup for pointer lookup logic
2021-11-18 19:27:09 +01:00
Tony Wasserka
85651ad090
Thunks/vulkan: Simplify API entrypoint lookup
...
This avoids the need for the heap-allocated string->symbol map that had
to be kept around previously.
2021-11-18 19:27:09 +01:00
Tony Wasserka
25545dcd66
Thunks/vulkan: Use more efficient unordered_map initialization
...
Dynamically adding each entry involves unneeded map rehashing that can be
avoided by constructing the container using an initializer_list.
2021-11-18 19:27:09 +01:00
Tony Wasserka
a5ac66c1ce
Thunks/vulkan: Use std::string_view to look up API entrypoints
...
This eliminates unneeded memory allocations on library initialization
without change of behavior.
2021-11-18 19:27:09 +01:00
Tony Wasserka
b6effa7a9b
Thunks/vulkan: Ignore null-instances when looking up symbols and remove obsolete code
2021-11-18 19:27:08 +01:00
Tony Wasserka
50c165d291
Thunks/vulkan: Suppress compiler warnings about unknown attributes
2021-10-15 10:47:16 +02:00
Ryan Houdek
48955da5f3
Thunks: Fix missing libdrm include path
2021-10-11 19:43:36 -07:00
Ryan Houdek
6cd73a6724
Merge pull request #1303 from Sonicadvance1/destdir_thunks
...
Thunks: Respect DESTDIR environment variable
2021-10-11 06:18:58 -07:00
Ryan Houdek
f2ef58630c
Thunks: Respect DESTDIR environment variable
...
This allows local install to actually work
2021-10-08 20:57:23 -07:00
Ryan Houdek
de8d8d8751
Thunks: XCB Add missing header file
2021-10-08 20:49:19 -07:00