Vulkan实例版本1.2时,能否查询/附加VkPhysicalDeviceVulkan13Features?
Vulkan实例版本1.2下的特性结构体附加问题
问题1:是否仍可将VkPhysicalDeviceVulkan13Features结构体附加到pNext指针?
可以。Vulkan的pNext链式结构允许附加任何符合规范的特性结构体,无论当前实例创建时指定的API版本。只要正确设置VkPhysicalDeviceVulkan13Features的sType字段为VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES,并将其pNext指针正确链接到链中,驱动会自行识别该结构体。如果物理设备不支持Vulkan 1.3,结构体中所有特性字段会被自动设为VK_FALSE(即0);若物理设备支持1.3,则会如实填充对应的支持状态。
问题2:是否能无视API版本支持情况,直接附加13Features及扩展状态等所有结构体,使其自动被设为0?还是必须先检查实例版本或物理设备的API版本?
可以直接附加所有相关结构体,驱动会自动将不支持的特性字段设为VK_FALSE。不过从工程实践角度,建议先通过vkGetPhysicalDeviceProperties查询物理设备的apiVersion字段,这样可以避免附加完全不必要的结构体,减少内存开销和驱动处理成本。
需要注意的是,这种“全量附加”的方式符合Vulkan规范:驱动会识别所有规范定义的结构体类型,对自身不支持的版本特性结构体,会将其中的特性统一置为不支持状态(0);如果是自定义扩展的结构体,仍需确保驱动支持该扩展,否则相关字段也会被置为0。
内容的提问来源于stack exchange,提问作者Zebrafish
相关产品推荐
相关产品推荐

