我正在用Vulkan做一些包装工作,以使API更安全,我想知道是否可以先创建一个实例或设备,然后启用扩展或功能。
首先,根据规范:
VUID-VkDeviceCreateInfo-p属性-04451
如果VK_KHR_portability_subset扩展包含在的pProperties中vkEnumerateDeviceExtensionProperties,ppEnabledExtensionNames必须包括";VK_ KHR_;
这看起来不错,但请注意,要在设备上启用VK_KHR_portability_subset
扩展,必须启用其依赖项VK_KHR_get_physical_device_properties2
,这是一个实例扩展。这使得一个实例无论如何都必须启用VK_KHR_get_physical_device_properties2
,以防04451在创建设备时进行检查。
其次,稍后启用功能会很方便,例如,如果用户传入了一些参数,这需要一些功能,我可以为该用户隐式启用它们。
功能和扩展是在创建时指定的。从那时起,它们就是实例或设备的固有部分。以后不能修改它们。
您可以创建新的实例或设备。但你不能改变现有的。