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

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:
Kelsi 2026-04-03 20:58:32 -07:00
parent 9c4e61a227
commit 17c16150d6
6 changed files with 22 additions and 89 deletions

View file

@ -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() {