mirror of
https://github.com/spice2x/spice2x.github.io.git
synced 2026-08-01 22:30:42 -07:00
launcher: check for custom d3d9.dll in user's game directory (#309)
## Link to GitHub Issue, if one exists n/a ## Description of change Log a message if d3d9.dll (and friends) are found in the game root or the modules directory. This is to help with troubleshooting in cases where the user is unaware that d3d9 is being used to inject other DLLs (e.g., ifs_layeredfs), or when DX9 reimplementation is causing issues / crashes (e.g., dxvk). ## Testing Observed the new messages being logged in both modules / root directory.
This commit is contained in:
@@ -1820,6 +1820,16 @@ int main_implementation(int argc, char *argv[]) {
|
||||
exit(spicecfg_run(sextet_devices));
|
||||
}
|
||||
|
||||
// log some DLLs found in path (purely for troubleshooting purposes to detect
|
||||
// dxvk, ForceD3D9On12, ifs_layeredfs, etc)
|
||||
libutils::warn_if_dll_exists("d3d8.dll");
|
||||
libutils::warn_if_dll_exists("d3d9.dll");
|
||||
libutils::warn_if_dll_exists("d3d10core.dll");
|
||||
libutils::warn_if_dll_exists("d3d11.dll");
|
||||
libutils::warn_if_dll_exists("d3d12.dll");
|
||||
libutils::warn_if_dll_exists("dxgi.dll");
|
||||
libutils::warn_if_dll_exists("opengl32.dll");
|
||||
|
||||
// complain loudly & early about dll load ordering issue
|
||||
libutils::check_duplicate_dlls();
|
||||
|
||||
|
||||
@@ -356,3 +356,15 @@ void libutils::check_duplicate_dlls() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void libutils::warn_if_dll_exists(const std::string &file_name) {
|
||||
if (fileutils::file_exists(MODULE_PATH / file_name)) {
|
||||
log_info("libutils", "found user-supplied {} in modules directory", file_name);
|
||||
return;
|
||||
}
|
||||
const auto &spice_bin_path = libutils::module_file_name(nullptr).parent_path();
|
||||
if (fileutils::file_exists(spice_bin_path / file_name)) {
|
||||
log_info("libutils", "found user-supplied {} next to spice executable path", file_name);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -25,6 +25,7 @@ namespace libutils {
|
||||
}
|
||||
|
||||
void check_duplicate_dlls();
|
||||
void warn_if_dll_exists(const std::string &file_name);
|
||||
|
||||
// get module handle helpers
|
||||
HMODULE get_module(const char *module_name);
|
||||
|
||||
Reference in New Issue
Block a user