Vulkan中两种检查图像格式支持用法的方法是否等价?
两种Vulkan格式检查方法的区别
这两种方法并不等价,核心差异在于检查的粒度和适用场景不同:
vkGetPhysicalDeviceFormatProperties2()是从格式本身的维度做检查:
它返回的imageFeatures字段,仅表示该格式作为图像时,理论上支持的所有用法集合。但这个结果不考虑其他图像创建参数(比如图像平铺模式tiling、采样数sampleCount等)的限制,只是格式层面的通用支持性。vkGetPhysicalDeviceImageFormatProperties2()是从具体图像创建参数组合的维度做检查:
你需要传入格式、平铺模式、目标用法、采样数等完整参数,它会返回该组合下的实际可用属性(比如最大宽高、内存对齐要求等);如果返回结构体全零,说明这个特定参数组合不被硬件支持。
举个实际场景的例子:
假设某格式VK_FORMAT_X的imageFeatures包含VK_IMAGE_USAGE_SAMPLED_BIT,但当你指定VK_IMAGE_TILING_LINEAR和VK_IMAGE_USAGE_SAMPLED_BIT调用vkGetPhysicalDeviceImageFormatProperties2()时,可能返回全零——因为该格式在线性平铺模式下,硬件不支持采样用法。
内容的提问来源于stack exchange,提问作者Zebrafish
相关产品推荐
相关产品推荐

