HgiVulkan: Allow Headless Rendering on X11 #3931
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a change to allow headless rendering on Linux systems. In this case the
instance will have enabled
VK_KHR_surfaceandVK_KHR_xlib_surfacebut noX11 display could be created.
XOpenDisplaywill returnnullptr(See https://www.x.org/releases/X11R7.7/doc/man/man3/XOpenDisplay.3.xhtml)but
vkGetPhysicalDeviceXlibPresentationSupportKHRrequires a valid pointer toa display struct.
Other solutions would be to check this during instance creation. I didn't go for
that solution as instance creation only does extension checking and not usage
checking.
A more future proof solution would be for the client to tell the renderer in what setup
it is being used. Now it is a bit hardcoded.
This fixes an issue in Blender to be able to render usd/Hydra images headless.
See https://projects.blender.org/blender/blender/issues/149631
Description of Change(s)
Link to proposal (if applicable)
Fixes Issue(s)
Checklist
I have created this PR based on the dev branch
I have followed the coding conventions
I have added unit tests that exercise this functionality (Reference:
testing guidelines)
I have verified that all unit tests pass with the proposed changes
I have submitted a signed Contributor License Agreement (Reference:
Contributor License Agreement instructions)