KhronosGroup / KhronosGroup/Vulkan-Docs

Not clear if extension use in vkCreateDevice require enabled extension

Open
#1,540 2 comments 1 reaction 1 assignee Assigned to @spencer-lunarg View on GitHub
Resolving Inside Khronos
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.