You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I merged the code produced by https://github.com/Francesco149/stubgen and this project prior to "massive rewrite". I believe the merged code does not suffer from some issues reported here.
The major differences from this project are:
lack of hooking race conditions: client game calls to the affected APIs will wait until the hook is fully initialized
correct stub parameter handling in respect to the complicated x64 calling convention
The major difference from stubgen is that to create the dummy swap chain we need access to the original dxgi.dll functions, which in stubgen are not available (spinlock wait in the asm_wait_init). So the hook installation thread exposes a thread local variable, that bypasses the wait in asm_wait_init.
I tested it on my 64-bit Factorio. For 32 bit version to work one needs check_init_thread and check_init_thread_end MACROs implemented in trampolines32.asm (they aren't)
NOTE: the dxgi.dll exports were recreated from Windows 11 22H2 (e.g. build 22621)
I merged the code produced by https://github.com/Francesco149/stubgen and this project prior to "massive rewrite". I believe the merged code does not suffer from some issues reported here.
The major differences from this project are:
The major difference from
stubgen
is that to create the dummy swap chain we need access to the originaldxgi.dll
functions, which instubgen
are not available (spinlock wait in theasm_wait_init
). So the hook installation thread exposes a thread local variable, that bypasses the wait inasm_wait_init
.I tested it on my 64-bit Factorio. For 32 bit version to work one needs
check_init_thread
andcheck_init_thread_end
MACROs implemented in trampolines32.asm (they aren't)NOTE: the
dxgi.dll
exports were recreated from Windows 11 22H2 (e.g. build 22621)DXGI-Stub.zip
The text was updated successfully, but these errors were encountered: