-
Notifications
You must be signed in to change notification settings - Fork 190
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
extensions/khr: Implement additional Swapchain
functions since Vulkan 1.1
#629
Conversation
260ef50
to
2a81efc
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I feel like conditionally-available function pointers are undermining the value of having separate extension structs. More weight in favor of globbing everything together?
@Ralith You want to:
|
…an 1.1 These are also made available by `VK_KHR_device_group` when `VK_KHR_swapchain` (and for certain functions only the underlying `VK_KHR_surface` extension) is enabled.
2a81efc
to
937d277
Compare
Out of scope of this particular PR, but broadly:
I'm not sure this would be maintainable long term, especially in the absence of clear computer-readable grouping of conditionally available functions for dependent cases like this.
Right, for a long time I've been going back and forth on whether a single monolithic |
There is, apparently. Taking Inside <require feature="VK_VERSION_1_1">
...
<command name="vkGetDeviceGroupPresentCapabilitiesKHR"/>
...
</require> Clearly stating the 1.1 requirement. Same for access through <require extension="VK_KHR_surface">
<enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"/>
...
<command name="vkGetDeviceGroupPresentCapabilitiesKHR"/>
...
</require> We could possibly support this by smacking the two names together for a separate loader struct, stating that these functions are only available in the combined case? Seems like a thing for a future API break if we feel strongly about it.
And I have enjoyed that feature quite often in my codebases, cleanly wrapping optional extension structures inside |
I think it's fine to move forwards with this PR for now; it's just food for thought about future directions. |
Also, nice! I have mixed feelings about proliferating fine-grained tables--we'll have to see how big the impact would be--but it's good that we have options to explore. |
Exactly, I haven't really thought out how to best represent these. A struct including both names seems like the only obvious and clear way. Let's create a followup issue to discuss and track this. |
Gobbled a short write-up together in #635, hope it's clear as I'm beyond tired 😩 |
…an 1.1 (#629) * extensions/khr: Reorder `Swapchain` functions to match `KhrSwapchainFn` * extensions/khr: Implement additional `Swapchain` functions since Vulkan 1.1 These are also made available by `VK_KHR_device_group` when `VK_KHR_swapchain` (and for certain functions only the underlying `VK_KHR_surface` extension) is enabled.
Looks good, thanks! |
These are also made available by
VK_KHR_device_group
whenVK_KHR_swapchain
(and for certain functions only the underlyingVK_KHR_surface
extension) is enabled.