mirror of
https://github.com/open-goal/jak-project.git
synced 2024-11-22 21:59:53 +00:00
game: Update game's GPU test to output the GPU vendor info (#3717)
Some checks failed
Build / 🖥️ Windows (push) Has been cancelled
Build / 🐧 Linux (push) Has been cancelled
Build / 🍎 MacOS (push) Has been cancelled
Inform Pages Repo / Generate Documentation (push) Has been cancelled
Lint / 📝 Formatting (push) Has been cancelled
Lint / 📝 Required Checks (push) Has been cancelled
Lint / 📝 Optional Checks (push) Has been cancelled
Update Controller Database / update-controller-db (push) Has been cancelled
Some checks failed
Build / 🖥️ Windows (push) Has been cancelled
Build / 🐧 Linux (push) Has been cancelled
Build / 🍎 MacOS (push) Has been cancelled
Inform Pages Repo / Generate Documentation (push) Has been cancelled
Lint / 📝 Formatting (push) Has been cancelled
Lint / 📝 Required Checks (push) Has been cancelled
Lint / 📝 Optional Checks (push) Has been cancelled
Update Controller Database / update-controller-db (push) Has been cancelled
This is so I can get rid of wgpu from the launcher, where it's only purpose is to figure out the GPU name for the support package. The problem with it is that on some environments, it errors, but the function cannot have it's errors gracefully handled (it panics and crashes instead). So I'm tired of it, do it ourselves. ![image](https://github.com/user-attachments/assets/fa8ae365-b3f7-4794-81ed-fde0c2ffc651)
This commit is contained in:
parent
e144406c16
commit
e76a4399e5
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,6 +1,7 @@
|
||||
# logs
|
||||
/log
|
||||
prof.json
|
||||
/gpu-test.json
|
||||
|
||||
# for CMake
|
||||
/Testing
|
||||
|
@ -138,6 +138,19 @@
|
||||
"-debug"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "default",
|
||||
"project": "CMakeLists.txt",
|
||||
"projectTarget": "gk.exe (bin\\gk.exe)",
|
||||
"name": "Game - GPU Test",
|
||||
"args": [
|
||||
"-v",
|
||||
"--gpu-test",
|
||||
"opengl",
|
||||
"--gpu-test-out-path",
|
||||
"./gpu-test.json"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "default",
|
||||
"project": "CMakeLists.txt",
|
||||
|
@ -164,6 +164,13 @@ tasks:
|
||||
lint:
|
||||
cmds:
|
||||
- python ./scripts/ci/lint-trailing-whitespace.py
|
||||
run-gpu-test:
|
||||
desc: "Runs the game's built in GPU test"
|
||||
preconditions:
|
||||
- sh: test -f {{.GK_BIN_RELEASE_DIR}}/gk{{.EXE_FILE_EXTENSION}}
|
||||
msg: "Couldn't locate runtime executable in '{{.GK_BIN_RELEASE_DIR}}/gk'"
|
||||
cmds:
|
||||
- "{{.GK_BIN_RELEASE_DIR}}/gk -v --gpu-test opengl --gpu-test-out-path ./gpu-test.json"
|
||||
# TESTS
|
||||
offline-tests: # ran by jenkins
|
||||
cmds:
|
||||
|
@ -2,13 +2,15 @@
|
||||
|
||||
#include "game/system/hid/sdl_util.h"
|
||||
|
||||
#include "third-party/glad/include/glad/glad.h"
|
||||
|
||||
namespace tests {
|
||||
void to_json(json& j, const GPUTestOutput& obj) {
|
||||
j = json{
|
||||
{"success", obj.success},
|
||||
{"error", obj.error},
|
||||
{"errorCause", obj.errorCause},
|
||||
};
|
||||
json_serialize(success);
|
||||
json_serialize(error);
|
||||
json_serialize(errorCause);
|
||||
json_serialize_optional(gpuRendererString);
|
||||
json_serialize_optional(gpuVendorString);
|
||||
}
|
||||
|
||||
GPUTestOutput run_gpu_test(const std::string& test_type) {
|
||||
@ -40,7 +42,20 @@ GPUTestOutput run_gpu_test(const std::string& test_type) {
|
||||
output = {false, "Required OpenGL Version is not supported",
|
||||
sdl_util::log_and_return_error("SDL initialization failed")};
|
||||
} else {
|
||||
output = {true, "", ""};
|
||||
gladLoadGLLoader((GLADloadproc)SDL_GL_GetProcAddress);
|
||||
if (!gladLoadGL()) {
|
||||
output = {false, "Unable to init GLAD", ""};
|
||||
} else {
|
||||
output = {true, "", ""};
|
||||
const auto rendererString = glGetString(GL_RENDERER);
|
||||
if (rendererString) {
|
||||
output.gpuRendererString = (const char*)rendererString;
|
||||
}
|
||||
const auto vendorString = glGetString(GL_VENDOR);
|
||||
if (vendorString) {
|
||||
output.gpuVendorString = (const char*)vendorString;
|
||||
}
|
||||
}
|
||||
SDL_GL_DeleteContext(glContext);
|
||||
}
|
||||
SDL_DestroyWindow(window);
|
||||
|
@ -9,6 +9,8 @@ struct GPUTestOutput {
|
||||
bool success;
|
||||
std::string error;
|
||||
std::string errorCause;
|
||||
std::optional<std::string> gpuRendererString;
|
||||
std::optional<std::string> gpuVendorString;
|
||||
};
|
||||
void to_json(json& j, const GPUTestOutput& obj);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user