Guard renderWorld/renderHUD against null command buffer after device lost

After VK_ERROR_DEVICE_LOST, beginFrame returns VK_NULL_HANDLE but
renderWorld() and renderHUD() were still called, passing the null
handle to vkCmdBindPipeline which triggered a validation abort.
This commit is contained in:
Kelsi 2026-03-02 08:58:48 -08:00
parent 4cd1abd5a6
commit 0c5a915db3

View file

@ -3166,6 +3166,9 @@ void Renderer::renderOverlay(const glm::vec4& color) {
void Renderer::renderWorld(game::World* world, game::GameHandler* gameHandler) {
(void)world;
// Guard against null command buffer (e.g. after VK_ERROR_DEVICE_LOST)
if (currentCmd == VK_NULL_HANDLE) return;
// GPU crash diagnostic: skip ALL world rendering to isolate crash source
static const bool skipAll = (std::getenv("WOWEE_SKIP_ALL_RENDER") != nullptr);
if (skipAll) return;
@ -3731,6 +3734,7 @@ void Renderer::setTerrainStreaming(bool enabled) {
}
void Renderer::renderHUD() {
if (currentCmd == VK_NULL_HANDLE) return;
if (performanceHUD && camera) {
performanceHUD->render(this, camera.get());
}