mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-05-04 16:23:52 +00:00
fix(vulkan): MSAA crash on AMD RADV due to vkCreateRenderPass2 null dispatch
Some checks are pending
Build / Build (arm64) (push) Waiting to run
Build / Build (x86-64) (push) Waiting to run
Build / Build (macOS arm64) (push) Waiting to run
Build / Build (windows-arm64) (push) Waiting to run
Build / Build (windows-x86-64) (push) Waiting to run
Security / CodeQL (C/C++) (push) Waiting to run
Security / Semgrep (push) Waiting to run
Security / Sanitizer Build (ASan/UBSan) (push) Waiting to run
Some checks are pending
Build / Build (arm64) (push) Waiting to run
Build / Build (x86-64) (push) Waiting to run
Build / Build (macOS arm64) (push) Waiting to run
Build / Build (windows-arm64) (push) Waiting to run
Build / Build (windows-x86-64) (push) Waiting to run
Security / CodeQL (C/C++) (push) Waiting to run
Security / Semgrep (push) Waiting to run
Security / Sanitizer Build (ASan/UBSan) (push) Waiting to run
Instance was created with Vulkan 1.1 but depthResolveSupported_ was gated on the physical device's API version (1.2+ on RADV). This caused vkCreateRenderPass2 (core 1.2) to dispatch through a null function pointer when MSAA was enabled. Now requests 1.2 instance with 1.1 minimum fallback and gates depth resolve on the actual instance API version. Also removes all diagnostic crash-phase instrumentation from the previous investigation.
This commit is contained in:
parent
9c4e61a227
commit
17c16150d6
6 changed files with 22 additions and 89 deletions
|
|
@ -2133,22 +2133,15 @@ void Application::update(float deltaTime) {
|
|||
}
|
||||
}
|
||||
|
||||
// Render-phase marker from game_screen.cpp — updated here for 3D/submit phases
|
||||
} } // close wowee::core temporarily
|
||||
extern volatile const char* g_crashRenderPhase;
|
||||
namespace wowee { namespace core {
|
||||
|
||||
void Application::render() {
|
||||
if (!renderer) {
|
||||
return;
|
||||
}
|
||||
|
||||
g_crashRenderPhase = "beginFrame";
|
||||
renderer->beginFrame();
|
||||
|
||||
// Only render 3D world when in-game
|
||||
if (state == AppState::IN_GAME) {
|
||||
g_crashRenderPhase = "renderWorld";
|
||||
if (world) {
|
||||
renderer->renderWorld(world.get(), gameHandler.get());
|
||||
} else {
|
||||
|
|
@ -2158,19 +2151,15 @@ void Application::render() {
|
|||
|
||||
// Render performance HUD (within ImGui frame, before UI ends the frame)
|
||||
if (renderer) {
|
||||
g_crashRenderPhase = "renderHUD";
|
||||
renderer->renderHUD();
|
||||
}
|
||||
|
||||
// Render UI on top (ends ImGui frame with ImGui::Render())
|
||||
if (uiManager) {
|
||||
g_crashRenderPhase = "uiRender";
|
||||
uiManager->render(state, authHandler.get(), gameHandler.get());
|
||||
}
|
||||
|
||||
g_crashRenderPhase = "endFrame";
|
||||
renderer->endFrame();
|
||||
g_crashRenderPhase = "idle";
|
||||
}
|
||||
|
||||
void Application::setupUICallbacks() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue