Color Renderable format通常指的是作为GPU输出缓冲区的attachment的资源格式。
OpenGL纹理的Color Renderable是确定的,种类也很少。
Vulkan的Image/Texture资源可以分为两种: Sampleable,Renderable。其中Vulkan的Renderable,比OpenGL的要复杂,种类相对要多很多。
本文介绍两者在使用上的区别。
OpenGL ES 2.0
OpenGL的Renderable很简单,根据OpenGL ES 2.0的规范,下面这些格式才是Renderable(包括了Color Renderable):

Vulkan
Vulkan的情形要复杂一些,每个不同用途的Image,支持的格式都是有区别的。
所以Vulkan在处理Image的格式的时候分为两步:
-
先确定Image的用途
通过VkFormatFeatureFlagBits来确定Image的不同用途。譬如作为输出的Swap chain Image 通常是VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT 类型。 -
每种用途的Image有着对应的Image格式
在https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html, “37.3. Required Format Support”里面提到了每种格式。
但是Spec里面确实也有Color Renderable Format的描述。主要的意思是,在VkImageFormatProperties::linearTilingFeatures或者VkImageFormatProperties::optimalTilingFeatures里面设置了VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT属性的VkFormat就是Color Renderable的。所以Color Renderable可以理解为:
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT && VkFormat
有意思的是,在SW的Vulkan例子程序里面,并没有找到VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT的使用。但是在Spec里面还有一个说法:在创建ImageView的时候,如果VkImageViewCreateInfo.usage包括了VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
那么image view’s format features必须包含VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT。例子里面确实包含了VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT。所以我理解的是,检测到VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,系统会自动给image view’s format features追加属性VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT。
那么,什么是Image View Format Features呢?其实和前面提到的VkImageFormatProperties很类似:
typedef struct VkFormatProperties {
VkFormatFeatureFlags linearTilingFeatures;
VkFormatFeatureFlags optimalTilingFeatures;
VkFormatFeatureFlags bufferFeatures;
} VkFormatProperties;
Vulkan spec还提供了一个表格,汇合了所有的Image格式:
“The following image formats can be passed to, and may be returned from Vulkan commands.”:
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkFormat
本文探讨了OpenGL ES 2.0和Vulkan在颜色渲染格式上的差异。OpenGL的渲染格式相对简单,而Vulkan则更为复杂,需要考虑Sampleable和Renderable两种资源类型,并通过VkFormatFeatureFlagBits来确定不同用途的Image格式。Vulkan中,创建ImageView时,如果包含VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,系统会自动追加VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT属性,表明该格式可用于颜色附件。
254

被折叠的 条评论
为什么被折叠?



