Skip to content

fix(vulkan): return nullptr on initialization failure instead of calling abort - #118

Closed
charliesbot wants to merge 1 commit into
rive-app:mainfrom
charliesbot:fix-vulkan-init-fallback
Closed

fix(vulkan): return nullptr on initialization failure instead of calling abort#118
charliesbot wants to merge 1 commit into
rive-app:mainfrom
charliesbot:fix-vulkan-init-fallback

Conversation

@charliesbot

Copy link
Copy Markdown

When Vulkan initialization or GPU object creation fails (such as on Android devices missing required Vulkan 1.1 features or hardware support), VK_CHECK previously called abort(), causing process death (SIGABRT). This prevented higher level callers, such as the Android Kotlin CommandQueue runCatching block, from catching the initialization failure and gracefully falling back to OpenGL ES.

This change updates vk_check in vkutil.hpp to return false on error instead of calling abort(), and adds a check in RenderContextVulkanImpl::MakeContext() to return nullptr if GPU object creation fails.

Corresponding unit tests have been added to pls_render_context_test.cpp to verify vk_check error handling and context initialization failure fallback.

@ErikUggeldahl ErikUggeldahl added the enhancement New feature or request label Aug 18, 2026
@ErikUggeldahl

Copy link
Copy Markdown
Contributor

Thanks for the PR Charlie. We took inspiration from this to strengthen the Vulkan initialization story. That has now been merged in this commit.

Vulkan initialization has many more pathways which fail gracefully than before. Closing this issue as I believe the intent has been addressed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants