KhronosGroup / KhronosGroup/Vulkan-Docs
Not clear if extension use in vkCreateDevice require enabled extension
- Dominant language
- JavaScript
- Stars
- 3.3k
- Forks
- 549
- Avg merge
- 5d 5h
- Merged PRs (30d)
- 2
Description
It is not clear if extension use in `vkCreateDevice` does require the extension to be enabled in `ppEnabledExtensions`.
The spec says this:
> Each structure present in the `pNext` chain **must** be defined at runtime by either:
>
> - a core version which is supported
> - an extension which is enabled
> - **a supported device extension in the case of physical-device-level functionality added by the device extension**
Technically `vkCreateDevice` is a physical-device-level functionality, so this says putting anything in the chain that is _supported_ is valid. But I find it likely not true, as `vkCreateDevice` does have a `ppEnabledExtensions` parameter, and it feels like the extension should be in there if one wants to use some `pNext` struct from it.
Similar concern for other parameters, such as `VkDeviceCreateInfo::flags`. The spec says:
> physical-device-level functionality of a device extension **can** be used with a physical device if the corresponding extension is enumerated by `vkEnumerateDeviceExtensionProperties` for that physical device, even before a logical device has been created.
Again, `vkCreateDevice` is technically a physical-device-level functionality, because glossary says:
> **Physical-Device-Level Command:**
> Any command that is dispatched from a physical device.
Contributor guide
Assessment
This issue has not been assessed yet.