创建 instance/device 后,有什么方法可以启用扩展或功能吗?
Is there any way to enable extensions or features after an instance/device is created?
我正在用 Vulkan 做一些包装工作,使 API 更安全,我想知道我是否可以先创建一个实例或设备,然后再启用扩展或功能。
首先,根据规范:
VUID-VkDeviceCreateInfo-pProperties-04451
If the VK_KHR_portability_subset extension is included in pProperties of
vkEnumerateDeviceExtensionProperties, ppEnabledExtensionNames must
include "VK_KHR_portability_subset"
这看起来不错,但请注意,要在设备上启用 VK_KHR_portability_subset
扩展,您必须启用其依赖项 VK_KHR_get_physical_device_properties2
,这是一个 实例 扩展.这使得实例必须启用 VK_KHR_get_physical_device_properties2
以防 04451 将检查设备何时创建。
其次,以后开启功能会很方便,比如用户传入了一些参数,需要一些功能,我可以隐式为这个用户开启。
功能和扩展在创建时指定。从那时起,它们就是实例或设备的固有部分。以后不能修改。
您可以创建新的实例或设备。但是你不能改变现有的。
我正在用 Vulkan 做一些包装工作,使 API 更安全,我想知道我是否可以先创建一个实例或设备,然后再启用扩展或功能。
首先,根据规范:
VUID-VkDeviceCreateInfo-pProperties-04451
If the VK_KHR_portability_subset extension is included in pProperties of vkEnumerateDeviceExtensionProperties, ppEnabledExtensionNames must include "VK_KHR_portability_subset"
这看起来不错,但请注意,要在设备上启用 VK_KHR_portability_subset
扩展,您必须启用其依赖项 VK_KHR_get_physical_device_properties2
,这是一个 实例 扩展.这使得实例必须启用 VK_KHR_get_physical_device_properties2
以防 04451 将检查设备何时创建。
其次,以后开启功能会很方便,比如用户传入了一些参数,需要一些功能,我可以隐式为这个用户开启。
功能和扩展在创建时指定。从那时起,它们就是实例或设备的固有部分。以后不能修改。
您可以创建新的实例或设备。但是你不能改变现有的。