summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlat9nq <lat9nq@gmail.com>2022-07-10 23:18:31 +0200
committerlat9nq <lat9nq@gmail.com>2022-07-10 23:18:31 +0200
commitd57cd8bcddab1dadec76dc7274f63e8bdf30a32b (patch)
treeee972ad2ce800d317b51992a3e430fca771427dd
parentstartup_checks: Implement unix side code (diff)
downloadyuzu-d57cd8bcddab1dadec76dc7274f63e8bdf30a32b.tar
yuzu-d57cd8bcddab1dadec76dc7274f63e8bdf30a32b.tar.gz
yuzu-d57cd8bcddab1dadec76dc7274f63e8bdf30a32b.tar.bz2
yuzu-d57cd8bcddab1dadec76dc7274f63e8bdf30a32b.tar.lz
yuzu-d57cd8bcddab1dadec76dc7274f63e8bdf30a32b.tar.xz
yuzu-d57cd8bcddab1dadec76dc7274f63e8bdf30a32b.tar.zst
yuzu-d57cd8bcddab1dadec76dc7274f63e8bdf30a32b.zip
-rw-r--r--src/yuzu/startup_checks.cpp15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/yuzu/startup_checks.cpp b/src/yuzu/startup_checks.cpp
index 6bd895400..b27b9c8d9 100644
--- a/src/yuzu/startup_checks.cpp
+++ b/src/yuzu/startup_checks.cpp
@@ -14,17 +14,12 @@
#endif
#include <cstdio>
-#include <filesystem>
-#include <fstream>
-#include "common/fs/fs.h"
-#include "common/fs/path_util.h"
-#include "common/logging/log.h"
#include "video_core/vulkan_common/vulkan_instance.h"
#include "video_core/vulkan_common/vulkan_library.h"
#include "yuzu/startup_checks.h"
-#include "yuzu/uisettings.h"
void CheckVulkan() {
+ // Just start the Vulkan loader, this will crash if something is wrong
try {
Vulkan::vk::InstanceDispatch dld;
const Common::DynamicLibrary library = Vulkan::OpenLibrary();
@@ -32,7 +27,7 @@ void CheckVulkan() {
Vulkan::CreateInstance(library, dld, VK_API_VERSION_1_0);
} catch (const Vulkan::vk::Exception& exception) {
- LOG_ERROR(Frontend, "Failed to initialize Vulkan: {}", exception.what());
+ std::fprintf(stderr, "Failed to initialize Vulkan: %s\n", exception.what());
}
}
@@ -63,7 +58,7 @@ bool StartupChecks(const char* arg0, bool* has_broken_vulkan) {
return false;
}
- // wait until the processs exits
+ // Wait until the processs exits and get exit code from it
DWORD exit_code = STILL_ACTIVE;
while (exit_code == STILL_ACTIVE) {
const int err = GetExitCodeProcess(process_info.hProcess, &exit_code);
@@ -73,6 +68,7 @@ bool StartupChecks(const char* arg0, bool* has_broken_vulkan) {
}
}
+ // Vulkan is broken if the child crashed (return value is not zero)
*has_broken_vulkan = (exit_code != 0);
if (CloseHandle(process_info.hProcess) == 0) {
@@ -93,6 +89,7 @@ bool StartupChecks(const char* arg0, bool* has_broken_vulkan) {
return false;
}
+ // Get exit code from child process
int status;
const int r_val = wait(&status);
if (r_val == -1) {
@@ -100,6 +97,7 @@ bool StartupChecks(const char* arg0, bool* has_broken_vulkan) {
std::fprintf(stderr, "wait failed with error %d\n", err);
return false;
}
+ // Vulkan is broken if the child crashed (return value is not zero)
*has_broken_vulkan = (status != 0);
#endif
return false;
@@ -115,7 +113,6 @@ bool SpawnChild(const char* arg0, PROCESS_INFORMATION* pi) {
char p_name[255];
std::strncpy(p_name, arg0, 255);
- // TODO: use argv[0] instead of yuzu.exe
const bool process_created = CreateProcessA(nullptr, // lpApplicationName
p_name, // lpCommandLine
nullptr, // lpProcessAttributes