格式
支持的缓冲区和图像格式在不同实现中可能会有所不同。保证了最少的一组格式功能,但其他功能在使用前必须显式查询,以确保它们受实现支持。
可以使用 vkGetPhysicalDeviceFormatProperties 命令单独查询实现支持的格式集 (VkFormat) 的功能。
格式定义
// Provided by VK_VERSION_1_0
typedef enum VkFormat {
VK_FORMAT_UNDEFINED = 0,
VK_FORMAT_R4G4_UNORM_PACK8 = 1,
VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
VK_FORMAT_R8_UNORM = 9,
VK_FORMAT_R8_SNORM = 10,
VK_FORMAT_R8_USCALED = 11,
VK_FORMAT_R8_SSCALED = 12,
VK_FORMAT_R8_UINT = 13,
VK_FORMAT_R8_SINT = 14,
VK_FORMAT_R8_SRGB = 15,
VK_FORMAT_R8G8_UNORM = 16,
VK_FORMAT_R8G8_SNORM = 17,
VK_FORMAT_R8G8_USCALED = 18,
VK_FORMAT_R8G8_SSCALED = 19,
VK_FORMAT_R8G8_UINT = 20,
VK_FORMAT_R8G8_SINT = 21,
VK_FORMAT_R8G8_SRGB = 22,
VK_FORMAT_R8G8B8_UNORM = 23,
VK_FORMAT_R8G8B8_SNORM = 24,
VK_FORMAT_R8G8B8_USCALED = 25,
VK_FORMAT_R8G8B8_SSCALED = 26,
VK_FORMAT_R8G8B8_UINT = 27,
VK_FORMAT_R8G8B8_SINT = 28,
VK_FORMAT_R8G8B8_SRGB = 29,
VK_FORMAT_B8G8R8_UNORM = 30,
VK_FORMAT_B8G8R8_SNORM = 31,
VK_FORMAT_B8G8R8_USCALED = 32,
VK_FORMAT_B8G8R8_SSCALED = 33,
VK_FORMAT_B8G8R8_UINT = 34,
VK_FORMAT_B8G8R8_SINT = 35,
VK_FORMAT_B8G8R8_SRGB = 36,
VK_FORMAT_R8G8B8A8_UNORM = 37,
VK_FORMAT_R8G8B8A8_SNORM = 38,
VK_FORMAT_R8G8B8A8_USCALED = 39,
VK_FORMAT_R8G8B8A8_SSCALED = 40,
VK_FORMAT_R8G8B8A8_UINT = 41,
VK_FORMAT_R8G8B8A8_SINT = 42,
VK_FORMAT_R8G8B8A8_SRGB = 43,
VK_FORMAT_B8G8R8A8_UNORM = 44,
VK_FORMAT_B8G8R8A8_SNORM = 45,
VK_FORMAT_B8G8R8A8_USCALED = 46,
VK_FORMAT_B8G8R8A8_SSCALED = 47,
VK_FORMAT_B8G8R8A8_UINT = 48,
VK_FORMAT_B8G8R8A8_SINT = 49,
VK_FORMAT_B8G8R8A8_SRGB = 50,
VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
VK_FORMAT_R16_UNORM = 70,
VK_FORMAT_R16_SNORM = 71,
VK_FORMAT_R16_USCALED = 72,
VK_FORMAT_R16_SSCALED = 73,
VK_FORMAT_R16_UINT = 74,
VK_FORMAT_R16_SINT = 75,
VK_FORMAT_R16_SFLOAT = 76,
VK_FORMAT_R16G16_UNORM = 77,
VK_FORMAT_R16G16_SNORM = 78,
VK_FORMAT_R16G16_USCALED = 79,
VK_FORMAT_R16G16_SSCALED = 80,
VK_FORMAT_R16G16_UINT = 81,
VK_FORMAT_R16G16_SINT = 82,
VK_FORMAT_R16G16_SFLOAT = 83,
VK_FORMAT_R16G16B16_UNORM = 84,
VK_FORMAT_R16G16B16_SNORM = 85,
VK_FORMAT_R16G16B16_USCALED = 86,
VK_FORMAT_R16G16B16_SSCALED = 87,
VK_FORMAT_R16G16B16_UINT = 88,
VK_FORMAT_R16G16B16_SINT = 89,
VK_FORMAT_R16G16B16_SFLOAT = 90,
VK_FORMAT_R16G16B16A16_UNORM = 91,
VK_FORMAT_R16G16B16A16_SNORM = 92,
VK_FORMAT_R16G16B16A16_USCALED = 93,
VK_FORMAT_R16G16B16A16_SSCALED = 94,
VK_FORMAT_R16G16B16A16_UINT = 95,
VK_FORMAT_R16G16B16A16_SINT = 96,
VK_FORMAT_R16G16B16A16_SFLOAT = 97,
VK_FORMAT_R32_UINT = 98,
VK_FORMAT_R32_SINT = 99,
VK_FORMAT_R32_SFLOAT = 100,
VK_FORMAT_R32G32_UINT = 101,
VK_FORMAT_R32G32_SINT = 102,
VK_FORMAT_R32G32_SFLOAT = 103,
VK_FORMAT_R32G32B32_UINT = 104,
VK_FORMAT_R32G32B32_SINT = 105,
VK_FORMAT_R32G32B32_SFLOAT = 106,
VK_FORMAT_R32G32B32A32_UINT = 107,
VK_FORMAT_R32G32B32A32_SINT = 108,
VK_FORMAT_R32G32B32A32_SFLOAT = 109,
VK_FORMAT_R64_UINT = 110,
VK_FORMAT_R64_SINT = 111,
VK_FORMAT_R64_SFLOAT = 112,
VK_FORMAT_R64G64_UINT = 113,
VK_FORMAT_R64G64_SINT = 114,
VK_FORMAT_R64G64_SFLOAT = 115,
VK_FORMAT_R64G64B64_UINT = 116,
VK_FORMAT_R64G64B64_SINT = 117,
VK_FORMAT_R64G64B64_SFLOAT = 118,
VK_FORMAT_R64G64B64A64_UINT = 119,
VK_FORMAT_R64G64B64A64_SINT = 120,
VK_FORMAT_R64G64B64A64_SFLOAT = 121,
VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
VK_FORMAT_D16_UNORM = 124,
VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
VK_FORMAT_D32_SFLOAT = 126,
VK_FORMAT_S8_UINT = 127,
VK_FORMAT_D16_UNORM_S8_UINT = 128,
VK_FORMAT_D24_UNORM_S8_UINT = 129,
VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
VK_FORMAT_BC2_UNORM_BLOCK = 135,
VK_FORMAT_BC2_SRGB_BLOCK = 136,
VK_FORMAT_BC3_UNORM_BLOCK = 137,
VK_FORMAT_BC3_SRGB_BLOCK = 138,
VK_FORMAT_BC4_UNORM_BLOCK = 139,
VK_FORMAT_BC4_SNORM_BLOCK = 140,
VK_FORMAT_BC5_UNORM_BLOCK = 141,
VK_FORMAT_BC5_SNORM_BLOCK = 142,
VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
VK_FORMAT_BC7_UNORM_BLOCK = 145,
VK_FORMAT_BC7_SRGB_BLOCK = 146,
VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
// Provided by VK_VERSION_1_1
VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000,
// Provided by VK_VERSION_1_1
VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001,
// Provided by VK_VERSION_1_1
VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002,
// Provided by VK_VERSION_1_1
VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003,
// Provided by VK_VERSION_1_1
VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004,
// Provided by VK_VERSION_1_1
VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005,
// Provided by VK_VERSION_1_1
VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006,
// Provided by VK_VERSION_1_1
VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007,
// Provided by VK_VERSION_1_1
VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008,
// Provided by VK_VERSION_1_1
VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009,
// Provided by VK_VERSION_1_1
VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010,
// Provided by VK_VERSION_1_1
VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011,
// Provided by VK_VERSION_1_1
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012,
// Provided by VK_VERSION_1_1
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013,
// Provided by VK_VERSION_1_1
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014,
// Provided by VK_VERSION_1_1
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015,
// Provided by VK_VERSION_1_1
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016,
// Provided by VK_VERSION_1_1
VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017,
// Provided by VK_VERSION_1_1
VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018,
// Provided by VK_VERSION_1_1
VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019,
// Provided by VK_VERSION_1_1
VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020,
// Provided by VK_VERSION_1_1
VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021,
// Provided by VK_VERSION_1_1
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022,
// Provided by VK_VERSION_1_1
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023,
// Provided by VK_VERSION_1_1
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024,
// Provided by VK_VERSION_1_1
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025,
// Provided by VK_VERSION_1_1
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026,
// Provided by VK_VERSION_1_1
VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027,
// Provided by VK_VERSION_1_1
VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028,
// Provided by VK_VERSION_1_1
VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029,
// Provided by VK_VERSION_1_1
VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030,
// Provided by VK_VERSION_1_1
VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031,
// Provided by VK_VERSION_1_1
VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032,
// Provided by VK_VERSION_1_1
VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033,
// Provided by VK_VERSION_1_3
VK_FORMAT_G8_B8R8_2PLANE_444_UNORM = 1000330000,
// Provided by VK_VERSION_1_3
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 = 1000330001,
// Provided by VK_VERSION_1_3
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 = 1000330002,
// Provided by VK_VERSION_1_3
VK_FORMAT_G16_B16R16_2PLANE_444_UNORM = 1000330003,
// Provided by VK_VERSION_1_3
VK_FORMAT_A4R4G4B4_UNORM_PACK16 = 1000340000,
// Provided by VK_VERSION_1_3
VK_FORMAT_A4B4G4R4_UNORM_PACK16 = 1000340001,
// Provided by VK_VERSION_1_3
VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK = 1000066000,
// Provided by VK_VERSION_1_3
VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK = 1000066001,
// Provided by VK_VERSION_1_3
VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK = 1000066002,
// Provided by VK_VERSION_1_3
VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK = 1000066003,
// Provided by VK_VERSION_1_3
VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK = 1000066004,
// Provided by VK_VERSION_1_3
VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK = 1000066005,
// Provided by VK_VERSION_1_3
VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK = 1000066006,
// Provided by VK_VERSION_1_3
VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK = 1000066007,
// Provided by VK_VERSION_1_3
VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK = 1000066008,
// Provided by VK_VERSION_1_3
VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK = 1000066009,
// Provided by VK_VERSION_1_3
VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK = 1000066010,
// Provided by VK_VERSION_1_3
VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011,
// Provided by VK_VERSION_1_3
VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012,
// Provided by VK_VERSION_1_3
VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013,
// Provided by VK_VERSION_1_4
VK_FORMAT_A1B5G5R5_UNORM_PACK16 = 1000470000,
// Provided by VK_VERSION_1_4
VK_FORMAT_A8_UNORM = 1000470001,
// Provided by VK_IMG_format_pvrtc
VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
// Provided by VK_IMG_format_pvrtc
VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
// Provided by VK_IMG_format_pvrtc
VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
// Provided by VK_IMG_format_pvrtc
VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
// Provided by VK_IMG_format_pvrtc
VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
// Provided by VK_IMG_format_pvrtc
VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
// Provided by VK_IMG_format_pvrtc
VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
// Provided by VK_IMG_format_pvrtc
VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
// Provided by VK_NV_optical_flow
VK_FORMAT_R16G16_SFIXED5_NV = 1000464000,
// Provided by VK_EXT_texture_compression_astc_hdr
VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK,
// Provided by VK_EXT_texture_compression_astc_hdr
VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK,
// Provided by VK_EXT_texture_compression_astc_hdr
VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK,
// Provided by VK_EXT_texture_compression_astc_hdr
VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK,
// Provided by VK_EXT_texture_compression_astc_hdr
VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK,
// Provided by VK_EXT_texture_compression_astc_hdr
VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK,
// Provided by VK_EXT_texture_compression_astc_hdr
VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK,
// Provided by VK_EXT_texture_compression_astc_hdr
VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK,
// Provided by VK_EXT_texture_compression_astc_hdr
VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK,
// Provided by VK_EXT_texture_compression_astc_hdr
VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK,
// Provided by VK_EXT_texture_compression_astc_hdr
VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK,
// Provided by VK_EXT_texture_compression_astc_hdr
VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK,
// Provided by VK_EXT_texture_compression_astc_hdr
VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK,
// Provided by VK_EXT_texture_compression_astc_hdr
VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G8B8G8R8_422_UNORM_KHR = VK_FORMAT_G8B8G8R8_422_UNORM,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_B8G8R8G8_422_UNORM_KHR = VK_FORMAT_B8G8R8G8_422_UNORM,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_R10X6_UNORM_PACK16_KHR = VK_FORMAT_R10X6_UNORM_PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_R12X4_UNORM_PACK16_KHR = VK_FORMAT_R12X4_UNORM_PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G16B16G16R16_422_UNORM_KHR = VK_FORMAT_G16B16G16R16_422_UNORM,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_B16G16R16G16_422_UNORM_KHR = VK_FORMAT_B16G16R16G16_422_UNORM,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM,
// Provided by VK_EXT_ycbcr_2plane_444_formats
VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT = VK_FORMAT_G8_B8R8_2PLANE_444_UNORM,
// Provided by VK_EXT_ycbcr_2plane_444_formats
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16,
// Provided by VK_EXT_ycbcr_2plane_444_formats
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16,
// Provided by VK_EXT_ycbcr_2plane_444_formats
VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT = VK_FORMAT_G16_B16R16_2PLANE_444_UNORM,
// Provided by VK_EXT_4444_formats
VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = VK_FORMAT_A4R4G4B4_UNORM_PACK16,
// Provided by VK_EXT_4444_formats
VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = VK_FORMAT_A4B4G4R4_UNORM_PACK16,
// Provided by VK_NV_optical_flow
// VK_FORMAT_R16G16_S10_5_NV is a deprecated alias
VK_FORMAT_R16G16_S10_5_NV = VK_FORMAT_R16G16_SFIXED5_NV,
// Provided by VK_KHR_maintenance5
VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = VK_FORMAT_A1B5G5R5_UNORM_PACK16,
// Provided by VK_KHR_maintenance5
VK_FORMAT_A8_UNORM_KHR = VK_FORMAT_A8_UNORM,
} VkFormat;
-
VK_FORMAT_UNDEFINED
指定未指定格式。 -
VK_FORMAT_R4G4_UNORM_PACK8
指定一个双分量、8 位打包无符号归一化格式,其在位 4..7 中具有 4 位 R 分量,在位 0..3 中具有 4 位 G 分量。 -
VK_FORMAT_R4G4B4A4_UNORM_PACK16
指定一个四分量、16 位打包无符号归一化格式,其在位 12..15 中具有 4 位 R 分量,在位 8..11 中具有 4 位 G 分量,在位 4..7 中具有 4 位 B 分量,在位 0..3 中具有 4 位 A 分量。 -
VK_FORMAT_B4G4R4A4_UNORM_PACK16
指定一个四分量、16 位打包无符号归一化格式,其在位 12..15 中具有 4 位 B 分量,在位 8..11 中具有 4 位 G 分量,在位 4..7 中具有 4 位 R 分量,在位 0..3 中具有 4 位 A 分量。 -
VK_FORMAT_A4R4G4B4_UNORM_PACK16
指定一个四分量、16 位打包无符号归一化格式,其在位 12..15 中具有 4 位 A 分量,在位 8..11 中具有 4 位 R 分量,在位 4..7 中具有 4 位 G 分量,在位 0..3 中具有 4 位 B 分量。 -
VK_FORMAT_A4B4G4R4_UNORM_PACK16
指定一个四分量、16 位打包无符号归一化格式,其在位 12..15 中具有 4 位 A 分量,在位 8..11 中具有 4 位 B 分量,在位 4..7 中具有 4 位 G 分量,在位 0..3 中具有 4 位 R 分量。 -
VK_FORMAT_R5G6B5_UNORM_PACK16
指定一个三分量、16 位打包无符号归一化格式,其在位 11..15 中具有 5 位 R 分量,在位 5..10 中具有 6 位 G 分量,在位 0..4 中具有 5 位 B 分量。 -
VK_FORMAT_B5G6R5_UNORM_PACK16
指定一个三分量、16 位打包无符号归一化格式,其在位 11..15 中具有 5 位 B 分量,在位 5..10 中具有 6 位 G 分量,在位 0..4 中具有 5 位 R 分量。 -
VK_FORMAT_R5G5B5A1_UNORM_PACK16
指定一个四分量、16 位打包无符号归一化格式,其在位 11..15 中具有 5 位 R 分量,在位 6..10 中具有 5 位 G 分量,在位 1..5 中具有 5 位 B 分量,在位 0 中具有 1 位 A 分量。 -
VK_FORMAT_B5G5R5A1_UNORM_PACK16
指定一个四分量、16 位打包无符号归一化格式,其在位 11..15 中具有 5 位 B 分量,在位 6..10 中具有 5 位 G 分量,在位 1..5 中具有 5 位 R 分量,在位 0 中具有 1 位 A 分量。 -
VK_FORMAT_A1R5G5B5_UNORM_PACK16
指定一个四分量、16 位打包无符号归一化格式,其在位 15 中具有 1 位 A 分量,在位 10..14 中具有 5 位 R 分量,在位 5..9 中具有 5 位 G 分量,在位 0..4 中具有 5 位 B 分量。 -
VK_FORMAT_A1B5G5R5_UNORM_PACK16
指定一个四分量、16 位打包无符号归一化格式,其在位 15 中具有 1 位 A 分量,在位 10..14 中具有 5 位 B 分量,在位 5..9 中具有 5 位 G 分量,在位 0..4 中具有 5 位 R 分量。 -
VK_FORMAT_A8_UNORM
指定一个单分量、8 位无符号归一化格式,它具有单个 8 位 A 分量。 -
VK_FORMAT_R8_UNORM
指定一个单分量、8 位无符号归一化格式,它具有单个 8 位 R 分量。 -
VK_FORMAT_R8_SNORM
指定一个单分量、8 位有符号归一化格式,它具有单个 8 位 R 分量。 -
VK_FORMAT_R8_USCALED
指定一个单分量、8 位无符号缩放整数格式,它具有单个 8 位 R 分量。 -
VK_FORMAT_R8_SSCALED
指定一个单分量、8 位有符号缩放整数格式,它具有单个 8 位 R 分量。 -
VK_FORMAT_R8_UINT
指定一个单分量、8 位无符号整数格式,它具有单个 8 位 R 分量。 -
VK_FORMAT_R8_SINT
指定一个单分量、8 位有符号整数格式,它具有单个 8 位 R 分量。 -
VK_FORMAT_R8_SRGB
指定一个单分量、8 位无符号归一化格式,它具有单个 8 位 R 分量,并使用 sRGB 非线性编码存储。 -
VK_FORMAT_R8G8_UNORM
指定一个双分量、16 位无符号归一化格式,它在字节 0 中具有 8 位 R 分量,在字节 1 中具有 8 位 G 分量。 -
VK_FORMAT_R8G8_SNORM
指定一个双分量、16 位有符号归一化格式,它在字节 0 中具有 8 位 R 分量,在字节 1 中具有 8 位 G 分量。 -
VK_FORMAT_R8G8_USCALED
指定一个双分量、16 位无符号缩放整数格式,它在字节 0 中具有 8 位 R 分量,在字节 1 中具有 8 位 G 分量。 -
VK_FORMAT_R8G8_SSCALED
指定一个双分量 16 位有符号缩放整数格式,其中字节 0 包含 8 位 R 分量,字节 1 包含 8 位 G 分量。 -
VK_FORMAT_R8G8_UINT
指定一个双分量 16 位无符号整数格式,其中字节 0 包含 8 位 R 分量,字节 1 包含 8 位 G 分量。 -
VK_FORMAT_R8G8_SINT
指定一个双分量 16 位有符号整数格式,其中字节 0 包含 8 位 R 分量,字节 1 包含 8 位 G 分量。 -
VK_FORMAT_R8G8_SRGB
指定一个双分量 16 位无符号归一化格式,其中字节 0 包含以 sRGB 非线性编码存储的 8 位 R 分量,字节 1 包含以 sRGB 非线性编码存储的 8 位 G 分量。 -
VK_FORMAT_R8G8B8_UNORM
指定一个三分量 24 位无符号归一化格式,其中字节 0 包含 8 位 R 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 B 分量。 -
VK_FORMAT_R8G8B8_SNORM
指定一个三分量 24 位有符号归一化格式,其中字节 0 包含 8 位 R 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 B 分量。 -
VK_FORMAT_R8G8B8_USCALED
指定一个三分量 24 位无符号缩放格式,其中字节 0 包含 8 位 R 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 B 分量。 -
VK_FORMAT_R8G8B8_SSCALED
指定一个三分量 24 位有符号缩放格式,其中字节 0 包含 8 位 R 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 B 分量。 -
VK_FORMAT_R8G8B8_UINT
指定一个三分量 24 位无符号整数格式,其中字节 0 包含 8 位 R 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 B 分量。 -
VK_FORMAT_R8G8B8_SINT
指定一个三分量 24 位有符号整数格式,其中字节 0 包含 8 位 R 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 B 分量。 -
VK_FORMAT_R8G8B8_SRGB
指定一个三分量 24 位无符号归一化格式,其中字节 0 包含以 sRGB 非线性编码存储的 8 位 R 分量,字节 1 包含以 sRGB 非线性编码存储的 8 位 G 分量,字节 2 包含以 sRGB 非线性编码存储的 8 位 B 分量。 -
VK_FORMAT_B8G8R8_UNORM
指定一个三分量 24 位无符号归一化格式,其中字节 0 包含 8 位 B 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 R 分量。 -
VK_FORMAT_B8G8R8_SNORM
指定一个三分量 24 位有符号归一化格式,其中字节 0 包含 8 位 B 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 R 分量。 -
VK_FORMAT_B8G8R8_USCALED
指定一个三分量 24 位无符号缩放格式,其中字节 0 包含 8 位 B 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 R 分量。 -
VK_FORMAT_B8G8R8_SSCALED
指定一个三分量 24 位有符号缩放格式,其中字节 0 包含 8 位 B 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 R 分量。 -
VK_FORMAT_B8G8R8_UINT
指定一个三分量 24 位无符号整数格式,其中字节 0 包含 8 位 B 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 R 分量。 -
VK_FORMAT_B8G8R8_SINT
指定一个三分量 24 位有符号整数格式,其中字节 0 包含 8 位 B 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 R 分量。 -
VK_FORMAT_B8G8R8_SRGB
指定一个三分量 24 位无符号归一化格式,其中字节 0 包含以 sRGB 非线性编码存储的 8 位 B 分量,字节 1 包含以 sRGB 非线性编码存储的 8 位 G 分量,字节 2 包含以 sRGB 非线性编码存储的 8 位 R 分量。 -
VK_FORMAT_R8G8B8A8_UNORM
指定一个四分量 32 位无符号归一化格式,其中字节 0 包含 8 位 R 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 B 分量,字节 3 包含 8 位 A 分量。 -
VK_FORMAT_R8G8B8A8_SNORM
指定一个四分量 32 位有符号归一化格式,其中字节 0 包含 8 位 R 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 B 分量,字节 3 包含 8 位 A 分量。 -
VK_FORMAT_R8G8B8A8_USCALED
指定一个四分量 32 位无符号缩放格式,其中字节 0 包含 8 位 R 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 B 分量,字节 3 包含 8 位 A 分量。 -
VK_FORMAT_R8G8B8A8_SSCALED
指定一个四分量 32 位有符号缩放格式,其中字节 0 包含 8 位 R 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 B 分量,字节 3 包含 8 位 A 分量。 -
VK_FORMAT_R8G8B8A8_UINT
指定一个四分量 32 位无符号整数格式,其中字节 0 包含 8 位 R 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 B 分量,字节 3 包含 8 位 A 分量。 -
VK_FORMAT_R8G8B8A8_SINT
指定一个四分量 32 位有符号整数格式,其中字节 0 包含 8 位 R 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 B 分量,字节 3 包含 8 位 A 分量。 -
VK_FORMAT_R8G8B8A8_SRGB
指定一个四分量 32 位无符号归一化格式,其中字节 0 包含以 sRGB 非线性编码存储的 8 位 R 分量,字节 1 包含以 sRGB 非线性编码存储的 8 位 G 分量,字节 2 包含以 sRGB 非线性编码存储的 8 位 B 分量,字节 3 包含 8 位 A 分量。 -
VK_FORMAT_B8G8R8A8_UNORM
指定一个四分量 32 位无符号归一化格式,其中字节 0 包含 8 位 B 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 R 分量,字节 3 包含 8 位 A 分量。 -
VK_FORMAT_B8G8R8A8_SNORM
指定一个四分量 32 位有符号归一化格式,其中字节 0 包含 8 位 B 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 R 分量,字节 3 包含 8 位 A 分量。 -
VK_FORMAT_B8G8R8A8_USCALED
指定一个四分量 32 位无符号缩放格式,其中字节 0 包含 8 位 B 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 R 分量,字节 3 包含 8 位 A 分量。 -
VK_FORMAT_B8G8R8A8_SSCALED
指定一个四分量 32 位有符号缩放格式,其中字节 0 包含 8 位 B 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 R 分量,字节 3 包含 8 位 A 分量。 -
VK_FORMAT_B8G8R8A8_UINT
指定一个四分量 32 位无符号整数格式,其中字节 0 包含 8 位 B 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 R 分量,字节 3 包含 8 位 A 分量。 -
VK_FORMAT_B8G8R8A8_SINT
指定一个四分量 32 位有符号整数格式,其中字节 0 包含 8 位 B 分量,字节 1 包含 8 位 G 分量,字节 2 包含 8 位 R 分量,字节 3 包含 8 位 A 分量。 -
VK_FORMAT_B8G8R8A8_SRGB
指定一个四分量 32 位无符号归一化格式,其中字节 0 包含以 sRGB 非线性编码存储的 8 位 B 分量,字节 1 包含以 sRGB 非线性编码存储的 8 位 G 分量,字节 2 包含以 sRGB 非线性编码存储的 8 位 R 分量,字节 3 包含 8 位 A 分量。 -
VK_FORMAT_A8B8G8R8_UNORM_PACK32
指定一个四分量 32 位打包无符号归一化格式,其中位 24..31 包含 8 位 A 分量,位 16..23 包含 8 位 B 分量,位 8..15 包含 8 位 G 分量,位 0..7 包含 8 位 R 分量。 -
VK_FORMAT_A8B8G8R8_SNORM_PACK32
指定一个四分量、32 位打包的有符号归一化格式,其中 A 分量为 8 位,位于位 24..31,B 分量为 8 位,位于位 16..23,G 分量为 8 位,位于位 8..15,R 分量为 8 位,位于位 0..7。 -
VK_FORMAT_A8B8G8R8_USCALED_PACK32
指定一个四分量、32 位打包的无符号缩放整数格式,其中 A 分量为 8 位,位于位 24..31,B 分量为 8 位,位于位 16..23,G 分量为 8 位,位于位 8..15,R 分量为 8 位,位于位 0..7。 -
VK_FORMAT_A8B8G8R8_SSCALED_PACK32
指定一个四分量、32 位打包的有符号缩放整数格式,其中 A 分量为 8 位,位于位 24..31,B 分量为 8 位,位于位 16..23,G 分量为 8 位,位于位 8..15,R 分量为 8 位,位于位 0..7。 -
VK_FORMAT_A8B8G8R8_UINT_PACK32
指定一个四分量、32 位打包的无符号整数格式,其中 A 分量为 8 位,位于位 24..31,B 分量为 8 位,位于位 16..23,G 分量为 8 位,位于位 8..15,R 分量为 8 位,位于位 0..7。 -
VK_FORMAT_A8B8G8R8_SINT_PACK32
指定一个四分量、32 位打包的有符号整数格式,其中 A 分量为 8 位,位于位 24..31,B 分量为 8 位,位于位 16..23,G 分量为 8 位,位于位 8..15,R 分量为 8 位,位于位 0..7。 -
VK_FORMAT_A8B8G8R8_SRGB_PACK32
指定一个四分量、32 位打包的无符号归一化格式,其中 A 分量为 8 位,位于位 24..31,B 分量为 8 位,以 sRGB 非线性编码存储在位 16..23,G 分量为 8 位,以 sRGB 非线性编码存储在位 8..15,R 分量为 8 位,以 sRGB 非线性编码存储在位 0..7。 -
VK_FORMAT_A2R10G10B10_UNORM_PACK32
指定一个四分量、32 位打包的无符号归一化格式,其中 A 分量为 2 位,位于位 30..31,R 分量为 10 位,位于位 20..29,G 分量为 10 位,位于位 10..19,B 分量为 10 位,位于位 0..9。 -
VK_FORMAT_A2R10G10B10_SNORM_PACK32
指定一个四分量、32 位打包的有符号归一化格式,其中 A 分量为 2 位,位于位 30..31,R 分量为 10 位,位于位 20..29,G 分量为 10 位,位于位 10..19,B 分量为 10 位,位于位 0..9。 -
VK_FORMAT_A2R10G10B10_USCALED_PACK32
指定一个四分量、32 位打包的无符号缩放整数格式,其中 A 分量为 2 位,位于位 30..31,R 分量为 10 位,位于位 20..29,G 分量为 10 位,位于位 10..19,B 分量为 10 位,位于位 0..9。 -
VK_FORMAT_A2R10G10B10_SSCALED_PACK32
指定一个四分量、32 位打包的有符号缩放整数格式,其中 A 分量为 2 位,位于位 30..31,R 分量为 10 位,位于位 20..29,G 分量为 10 位,位于位 10..19,B 分量为 10 位,位于位 0..9。 -
VK_FORMAT_A2R10G10B10_UINT_PACK32
指定一个四分量、32 位打包的无符号整数格式,其中 A 分量为 2 位,位于位 30..31,R 分量为 10 位,位于位 20..29,G 分量为 10 位,位于位 10..19,B 分量为 10 位,位于位 0..9。 -
VK_FORMAT_A2R10G10B10_SINT_PACK32
指定一个四分量、32 位打包的有符号整数格式,其中 A 分量为 2 位,位于位 30..31,R 分量为 10 位,位于位 20..29,G 分量为 10 位,位于位 10..19,B 分量为 10 位,位于位 0..9。 -
VK_FORMAT_A2B10G10R10_UNORM_PACK32
指定一个四分量、32 位打包的无符号归一化格式,其中 A 分量为 2 位,位于位 30..31,B 分量为 10 位,位于位 20..29,G 分量为 10 位,位于位 10..19,R 分量为 10 位,位于位 0..9。 -
VK_FORMAT_A2B10G10R10_SNORM_PACK32
指定一个四分量、32 位打包的有符号归一化格式,其中 A 分量为 2 位,位于位 30..31,B 分量为 10 位,位于位 20..29,G 分量为 10 位,位于位 10..19,R 分量为 10 位,位于位 0..9。 -
VK_FORMAT_A2B10G10R10_USCALED_PACK32
指定一个四分量、32 位打包的无符号缩放整数格式,其中 A 分量为 2 位,位于位 30..31,B 分量为 10 位,位于位 20..29,G 分量为 10 位,位于位 10..19,R 分量为 10 位,位于位 0..9。 -
VK_FORMAT_A2B10G10R10_SSCALED_PACK32
指定一个四分量、32 位打包的有符号缩放整数格式,其中 A 分量为 2 位,位于位 30..31,B 分量为 10 位,位于位 20..29,G 分量为 10 位,位于位 10..19,R 分量为 10 位,位于位 0..9。 -
VK_FORMAT_A2B10G10R10_UINT_PACK32
指定一个四分量、32 位打包的无符号整数格式,其中 A 分量为 2 位,位于位 30..31,B 分量为 10 位,位于位 20..29,G 分量为 10 位,位于位 10..19,R 分量为 10 位,位于位 0..9。 -
VK_FORMAT_A2B10G10R10_SINT_PACK32
指定一个四分量、32 位打包的有符号整数格式,其中 A 分量为 2 位,位于位 30..31,B 分量为 10 位,位于位 20..29,G 分量为 10 位,位于位 10..19,R 分量为 10 位,位于位 0..9。 -
VK_FORMAT_R16_UNORM
指定一个单分量、16 位无符号归一化格式,其中包含一个 16 位 R 分量。 -
VK_FORMAT_R16_SNORM
指定一个单分量、16 位有符号归一化格式,其中包含一个 16 位 R 分量。 -
VK_FORMAT_R16_USCALED
指定一个单分量、16 位无符号缩放整数格式,其中包含一个 16 位 R 分量。 -
VK_FORMAT_R16_SSCALED
指定一个单分量、16 位有符号缩放整数格式,其中包含一个 16 位 R 分量。 -
VK_FORMAT_R16_UINT
指定一个单分量、16 位无符号整数格式,其中包含一个 16 位 R 分量。 -
VK_FORMAT_R16_SINT
指定一个单分量、16 位有符号整数格式,其中包含一个 16 位 R 分量。 -
VK_FORMAT_R16_SFLOAT
指定一个单分量、16 位有符号浮点格式,其中包含一个 16 位 R 分量。 -
VK_FORMAT_R16G16_UNORM
指定一个双分量、32 位无符号归一化格式,其中 R 分量为 16 位,位于字节 0..1,G 分量为 16 位,位于字节 2..3。 -
VK_FORMAT_R16G16_SNORM
指定一个双分量、32 位有符号归一化格式,其中 R 分量为 16 位,位于字节 0..1,G 分量为 16 位,位于字节 2..3。 -
VK_FORMAT_R16G16_USCALED
指定一个双分量、32 位无符号缩放整数格式,其中 R 分量为 16 位,位于字节 0..1,G 分量为 16 位,位于字节 2..3。 -
VK_FORMAT_R16G16_SSCALED
指定一个双分量、32 位有符号缩放整数格式,其中 R 分量为 16 位,位于字节 0..1,G 分量为 16 位,位于字节 2..3。 -
VK_FORMAT_R16G16_UINT
指定一个双分量、32 位无符号整数格式,其中 R 分量为 16 位,位于字节 0..1,G 分量为 16 位,位于字节 2..3。 -
VK_FORMAT_R16G16_SINT
指定一个双分量、32 位有符号整数格式,其中 R 分量为 16 位,位于字节 0..1,G 分量为 16 位,位于字节 2..3。 -
VK_FORMAT_R16G16_SFLOAT
指定一个双分量、32 位有符号浮点格式,其中 R 分量为 16 位,位于字节 0..1,G 分量为 16 位,位于字节 2..3。 -
VK_FORMAT_R16G16B16_UNORM
指定一个三分量、48 位无符号归一化格式,其中 R 分量为 16 位,位于字节 0..1,G 分量为 16 位,位于字节 2..3,B 分量为 16 位,位于字节 4..5。 -
VK_FORMAT_R16G16B16_SNORM
指定一个三分量、48 位有符号归一化格式,其中 0..1 字节为 16 位 R 分量,2..3 字节为 16 位 G 分量,4..5 字节为 16 位 B 分量。 -
VK_FORMAT_R16G16B16_USCALED
指定一个三分量、48 位无符号缩放整数格式,其中 0..1 字节为 16 位 R 分量,2..3 字节为 16 位 G 分量,4..5 字节为 16 位 B 分量。 -
VK_FORMAT_R16G16B16_SSCALED
指定一个三分量、48 位有符号缩放整数格式,其中 0..1 字节为 16 位 R 分量,2..3 字节为 16 位 G 分量,4..5 字节为 16 位 B 分量。 -
VK_FORMAT_R16G16B16_UINT
指定一个三分量、48 位无符号整数格式,其中 0..1 字节为 16 位 R 分量,2..3 字节为 16 位 G 分量,4..5 字节为 16 位 B 分量。 -
VK_FORMAT_R16G16B16_SINT
指定一个三分量、48 位有符号整数格式,其中 0..1 字节为 16 位 R 分量,2..3 字节为 16 位 G 分量,4..5 字节为 16 位 B 分量。 -
VK_FORMAT_R16G16B16_SFLOAT
指定一个三分量、48 位有符号浮点格式,其中 0..1 字节为 16 位 R 分量,2..3 字节为 16 位 G 分量,4..5 字节为 16 位 B 分量。 -
VK_FORMAT_R16G16B16A16_UNORM
指定一个四分量、64 位无符号归一化格式,其中 0..1 字节为 16 位 R 分量,2..3 字节为 16 位 G 分量,4..5 字节为 16 位 B 分量,6..7 字节为 16 位 A 分量。 -
VK_FORMAT_R16G16B16A16_SNORM
指定一个四分量、64 位有符号归一化格式,其中 0..1 字节为 16 位 R 分量,2..3 字节为 16 位 G 分量,4..5 字节为 16 位 B 分量,6..7 字节为 16 位 A 分量。 -
VK_FORMAT_R16G16B16A16_USCALED
指定一个四分量、64 位无符号缩放整数格式,其中 0..1 字节为 16 位 R 分量,2..3 字节为 16 位 G 分量,4..5 字节为 16 位 B 分量,6..7 字节为 16 位 A 分量。 -
VK_FORMAT_R16G16B16A16_SSCALED
指定一个四分量、64 位有符号缩放整数格式,其中 0..1 字节为 16 位 R 分量,2..3 字节为 16 位 G 分量,4..5 字节为 16 位 B 分量,6..7 字节为 16 位 A 分量。 -
VK_FORMAT_R16G16B16A16_UINT
指定一个四分量、64 位无符号整数格式,其中 0..1 字节为 16 位 R 分量,2..3 字节为 16 位 G 分量,4..5 字节为 16 位 B 分量,6..7 字节为 16 位 A 分量。 -
VK_FORMAT_R16G16B16A16_SINT
指定一个四分量、64 位有符号整数格式,其中 0..1 字节为 16 位 R 分量,2..3 字节为 16 位 G 分量,4..5 字节为 16 位 B 分量,6..7 字节为 16 位 A 分量。 -
VK_FORMAT_R16G16B16A16_SFLOAT
指定一个四分量、64 位有符号浮点格式,其中 0..1 字节为 16 位 R 分量,2..3 字节为 16 位 G 分量,4..5 字节为 16 位 B 分量,6..7 字节为 16 位 A 分量。 -
VK_FORMAT_R32_UINT
指定一个单分量、32 位无符号整数格式,其中包含一个 32 位 R 分量。 -
VK_FORMAT_R32_SINT
指定一个单分量、32 位有符号整数格式,其中包含一个 32 位 R 分量。 -
VK_FORMAT_R32_SFLOAT
指定一个单分量、32 位有符号浮点格式,其中包含一个 32 位 R 分量。 -
VK_FORMAT_R32G32_UINT
指定一个双分量、64 位无符号整数格式,其中 0..3 字节为 32 位 R 分量,4..7 字节为 32 位 G 分量。 -
VK_FORMAT_R32G32_SINT
指定一个双分量、64 位有符号整数格式,其中 0..3 字节为 32 位 R 分量,4..7 字节为 32 位 G 分量。 -
VK_FORMAT_R32G32_SFLOAT
指定一个双分量、64 位有符号浮点格式,其中 0..3 字节为 32 位 R 分量,4..7 字节为 32 位 G 分量。 -
VK_FORMAT_R32G32B32_UINT
指定一个三分量、96 位无符号整数格式,其中 0..3 字节为 32 位 R 分量,4..7 字节为 32 位 G 分量,8..11 字节为 32 位 B 分量。 -
VK_FORMAT_R32G32B32_SINT
指定一个三分量、96 位有符号整数格式,其中 0..3 字节为 32 位 R 分量,4..7 字节为 32 位 G 分量,8..11 字节为 32 位 B 分量。 -
VK_FORMAT_R32G32B32_SFLOAT
指定一个三分量、96 位有符号浮点格式,其中 0..3 字节为 32 位 R 分量,4..7 字节为 32 位 G 分量,8..11 字节为 32 位 B 分量。 -
VK_FORMAT_R32G32B32A32_UINT
指定一个四分量、128 位无符号整数格式,其中 0..3 字节为 32 位 R 分量,4..7 字节为 32 位 G 分量,8..11 字节为 32 位 B 分量,12..15 字节为 32 位 A 分量。 -
VK_FORMAT_R32G32B32A32_SINT
指定一个四分量、128 位有符号整数格式,其中 0..3 字节为 32 位 R 分量,4..7 字节为 32 位 G 分量,8..11 字节为 32 位 B 分量,12..15 字节为 32 位 A 分量。 -
VK_FORMAT_R32G32B32A32_SFLOAT
指定一个四分量、128 位有符号浮点格式,其中 0..3 字节为 32 位 R 分量,4..7 字节为 32 位 G 分量,8..11 字节为 32 位 B 分量,12..15 字节为 32 位 A 分量。 -
VK_FORMAT_R64_UINT
指定一个单分量、64 位无符号整数格式,其中包含一个 64 位 R 分量。 -
VK_FORMAT_R64_SINT
指定一个单分量、64 位有符号整数格式,其中包含一个 64 位 R 分量。 -
VK_FORMAT_R64_SFLOAT
指定一个单分量、64 位有符号浮点格式,其中包含一个 64 位 R 分量。 -
VK_FORMAT_R64G64_UINT
指定一个双分量、128 位无符号整数格式,其中 0..7 字节为 64 位 R 分量,8..15 字节为 64 位 G 分量。 -
VK_FORMAT_R64G64_SINT
指定一个双分量、128 位有符号整数格式,其中 0..7 字节为 64 位 R 分量,8..15 字节为 64 位 G 分量。 -
VK_FORMAT_R64G64_SFLOAT
指定一个双分量、128 位有符号浮点格式,其中 0..7 字节为 64 位 R 分量,8..15 字节为 64 位 G 分量。 -
VK_FORMAT_R64G64B64_UINT
指定一个三分量、192 位无符号整数格式,其中 0..7 字节为 64 位 R 分量,8..15 字节为 64 位 G 分量,16..23 字节为 64 位 B 分量。 -
VK_FORMAT_R64G64B64_SINT
指定一个三分量、192 位有符号整数格式,其中 0..7 字节为 64 位 R 分量,8..15 字节为 64 位 G 分量,16..23 字节为 64 位 B 分量。 -
VK_FORMAT_R64G64B64_SFLOAT
指定一个三分量、192 位有符号浮点格式,其中 0..7 字节为 64 位 R 分量,8..15 字节为 64 位 G 分量,16..23 字节为 64 位 B 分量。 -
VK_FORMAT_R64G64B64A64_UINT
指定一个四分量、256 位无符号整数格式,其中 0..7 字节为 64 位 R 分量,8..15 字节为 64 位 G 分量,16..23 字节为 64 位 B 分量,24..31 字节为 64 位 A 分量。 -
VK_FORMAT_R64G64B64A64_SINT
指定一个四分量、256 位有符号整数格式,其中 0..7 字节为 64 位 R 分量,8..15 字节为 64 位 G 分量,16..23 字节为 64 位 B 分量,24..31 字节为 64 位 A 分量。 -
VK_FORMAT_R64G64B64A64_SFLOAT
指定一个四分量、256 位有符号浮点格式,其中 0..7 字节为 64 位 R 分量,8..15 字节为 64 位 G 分量,16..23 字节为 64 位 B 分量,24..31 字节为 64 位 A 分量。 -
VK_FORMAT_B10G11R11_UFLOAT_PACK32
指定一个三分量、32 位打包无符号浮点格式,其中 B 分量占 22..31 位,为 10 位;G 分量占 11..21 位,为 11 位;R 分量占 0..10 位,为 11 位。请参阅无符号 10 位浮点数和无符号 11 位浮点数。 -
VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
指定一个三分量、32 位打包无符号浮点格式,其中 5 位共享指数占 27..31 位,B 分量尾数占 18..26 位,为 9 位;G 分量尾数占 9..17 位,为 9 位;R 分量尾数占 0..8 位,为 9 位。 -
VK_FORMAT_D16_UNORM
指定一个单分量、16 位无符号归一化格式,其中包含一个 16 位深度分量。 -
VK_FORMAT_X8_D24_UNORM_PACK32
指定一个双分量、32 位格式,其中深度分量占 24 位无符号归一化位,并且可选地包含 8 位未使用的位。 -
VK_FORMAT_D32_SFLOAT
指定一个单分量、32 位有符号浮点格式,其中深度分量占 32 位。 -
VK_FORMAT_S8_UINT
指定一个单分量、8 位无符号整数格式,其中模板分量占 8 位。 -
VK_FORMAT_D16_UNORM_S8_UINT
指定一个双分量、24 位格式,其中深度分量占 16 位无符号归一化位,模板分量占 8 位无符号整数位。 -
VK_FORMAT_D24_UNORM_S8_UINT
指定一个双分量、32 位打包格式,其中模板分量占 8 位无符号整数位,深度分量占 24 位无符号归一化位。 -
VK_FORMAT_D32_SFLOAT_S8_UINT
指定一个双分量格式,其中深度分量占 32 位有符号浮点位,模板分量占 8 位无符号整数位。可选地包含 24 位未使用的位。 -
VK_FORMAT_BC1_RGB_UNORM_BLOCK
指定一个三分量、块压缩格式,其中每个 64 位压缩纹素块编码一个 4×4 矩形的无符号归一化 RGB 纹素数据。此格式没有 alpha 通道,被认为是透明的。 -
VK_FORMAT_BC1_RGB_SRGB_BLOCK
指定一个三分量、块压缩格式,其中每个 64 位压缩纹素块编码一个 4×4 矩形的具有 sRGB 非线性编码的无符号归一化 RGB 纹素数据。此格式没有 alpha 通道,被认为是透明的。 -
VK_FORMAT_BC1_RGBA_UNORM_BLOCK
指定一个四分量、块压缩格式,其中每个 64 位压缩纹素块编码一个 4×4 矩形的无符号归一化 RGB 纹素数据,并提供 1 位 alpha 通道。 -
VK_FORMAT_BC1_RGBA_SRGB_BLOCK
指定一个四分量、块压缩格式,其中每个 64 位压缩纹素块编码一个 4×4 矩形的具有 sRGB 非线性编码的无符号归一化 RGB 纹素数据,并提供 1 位 alpha 通道。 -
VK_FORMAT_BC2_UNORM_BLOCK
指定一个四分量、块压缩格式,其中每个 128 位压缩纹素块编码一个 4×4 矩形的无符号归一化 RGBA 纹素数据,前 64 位编码 alpha 值,后 64 位编码 RGB 值。 -
VK_FORMAT_BC2_SRGB_BLOCK
指定一个四分量、块压缩格式,其中每个 128 位压缩纹素块编码一个 4×4 矩形的具有 sRGB 非线性编码的无符号归一化 RGBA 纹素数据,前 64 位编码 alpha 值,后 64 位编码 RGB 值。 -
VK_FORMAT_BC3_UNORM_BLOCK
指定一个四分量、块压缩格式,其中每个 128 位压缩纹素块编码一个 4×4 矩形的无符号归一化 RGBA 纹素数据,前 64 位编码 alpha 值,后 64 位编码 RGB 值。 -
VK_FORMAT_BC3_SRGB_BLOCK
指定一个四分量、块压缩格式,其中每个 128 位压缩纹素块编码一个 4×4 矩形的具有 sRGB 非线性编码的无符号归一化 RGBA 纹素数据,前 64 位编码 alpha 值,后 64 位编码 RGB 值。 -
VK_FORMAT_BC4_UNORM_BLOCK
指定一个单分量、块压缩格式,其中每个 64 位压缩纹素块编码一个 4×4 矩形的无符号归一化红色纹素数据。 -
VK_FORMAT_BC4_SNORM_BLOCK
指定一个单分量、块压缩格式,其中每个 64 位压缩纹素块编码一个 4×4 矩形的有符号归一化红色纹素数据。 -
VK_FORMAT_BC5_UNORM_BLOCK
指定一个双分量、块压缩格式,其中每个 128 位压缩纹素块编码一个 4×4 矩形的无符号归一化 RG 纹素数据,前 64 位编码红色值,后 64 位编码绿色值。 -
VK_FORMAT_BC5_SNORM_BLOCK
指定一个双分量、块压缩格式,其中每个 128 位压缩纹素块编码一个 4×4 矩形的有符号归一化 RG 纹素数据,前 64 位编码红色值,后 64 位编码绿色值。 -
VK_FORMAT_BC6H_UFLOAT_BLOCK
指定一个三分量、块压缩格式,其中每个 128 位压缩纹素块编码一个 4×4 矩形的无符号浮点 RGB 纹素数据。 -
VK_FORMAT_BC6H_SFLOAT_BLOCK
指定一个三分量、块压缩格式,其中每个 128 位压缩纹素块编码一个 4×4 矩形的有符号浮点 RGB 纹素数据。 -
VK_FORMAT_BC7_UNORM_BLOCK
指定一个四分量、块压缩格式,其中每个 128 位压缩纹素块编码一个 4×4 矩形的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_BC7_SRGB_BLOCK
指定一个四分量、块压缩格式,其中每个 128 位压缩纹素块编码一个 4×4 矩形的无符号归一化 RGBA 纹素数据,RGB 分量应用 sRGB 非线性编码。 -
VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK
指定一个三分量、ETC2 压缩格式,其中每个 64 位压缩纹素块编码一个 4×4 矩形的无符号归一化 RGB 纹素数据。此格式没有 alpha 通道,被认为是透明的。 -
VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK
指定一个三分量、ETC2 压缩格式,其中每个 64 位压缩纹素块编码一个 4×4 矩形的具有 sRGB 非线性编码的无符号归一化 RGB 纹素数据。此格式没有 alpha 通道,被认为是透明的。 -
VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK
指定一个四分量、ETC2 压缩格式,其中每个 64 位压缩纹素块编码一个 4×4 矩形的无符号归一化 RGB 纹素数据,并提供 1 位 alpha 通道。 -
VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK
指定一个四分量、ETC2 压缩格式,其中每个 64 位压缩纹素块编码一个 4×4 矩形的具有 sRGB 非线性编码的无符号归一化 RGB 纹素数据,并提供 1 位 alpha 通道。 -
VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK
指定一个四分量、ETC2 压缩格式,其中每个 128 位压缩纹素块编码一个 4×4 矩形的无符号归一化 RGBA 纹素数据,前 64 位编码 alpha 值,后 64 位编码 RGB 值。 -
VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK
指定一个四分量、ETC2 压缩格式,其中每个 128 位压缩纹素块编码一个 4×4 矩形的具有 sRGB 非线性编码的无符号归一化 RGBA 纹素数据,前 64 位编码 alpha 值,后 64 位编码 RGB 值。 -
VK_FORMAT_EAC_R11_UNORM_BLOCK
指定一个单分量、ETC2 压缩格式,其中每个 64 位压缩纹素块编码一个 4×4 矩形的无符号归一化红色纹素数据。 -
VK_FORMAT_EAC_R11_SNORM_BLOCK
指定一个单分量、ETC2 压缩格式,其中每个 64 位压缩纹素块编码一个 4×4 矩形的有符号归一化红色纹素数据。 -
VK_FORMAT_EAC_R11G11_UNORM_BLOCK
指定一个双分量、ETC2 压缩格式,其中每个 128 位压缩纹素块编码一个 4×4 矩形的无符号归一化 RG 纹素数据,前 64 位编码红色值,后 64 位编码绿色值。 -
VK_FORMAT_EAC_R11G11_SNORM_BLOCK
指定一个双分量、ETC2 压缩格式,其中每个 128 位压缩纹素块编码一个 4×4 矩形的有符号归一化 RG 纹素数据,前 64 位编码红色值,后 64 位编码绿色值。 -
VK_FORMAT_ASTC_4x4_UNORM_BLOCK
指定一个四分量、ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 4×4 矩形的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_ASTC_4x4_SRGB_BLOCK
指定一个四分量、ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 4×4 矩形的具有 sRGB 非线性编码的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK
指定一个四分量、ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 4×4 矩形的有符号浮点 RGBA 纹素数据。 -
VK_FORMAT_ASTC_5x4_UNORM_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 5×4 矩形的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_ASTC_5x4_SRGB_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 5×4 矩形的无符号归一化 RGBA 纹素数据,并且对 RGB 分量应用了 sRGB 非线性编码。 -
VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 5×4 矩形的有符号浮点 RGBA 纹素数据。 -
VK_FORMAT_ASTC_5x5_UNORM_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 5×5 矩形的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_ASTC_5x5_SRGB_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 5×5 矩形的无符号归一化 RGBA 纹素数据,并且对 RGB 分量应用了 sRGB 非线性编码。 -
VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 5×5 矩形的有符号浮点 RGBA 纹素数据。 -
VK_FORMAT_ASTC_6x5_UNORM_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 6×5 矩形的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_ASTC_6x5_SRGB_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 6×5 矩形的无符号归一化 RGBA 纹素数据,并且对 RGB 分量应用了 sRGB 非线性编码。 -
VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 6×5 矩形的有符号浮点 RGBA 纹素数据。 -
VK_FORMAT_ASTC_6x6_UNORM_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 6×6 矩形的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_ASTC_6x6_SRGB_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 6×6 矩形的无符号归一化 RGBA 纹素数据,并且对 RGB 分量应用了 sRGB 非线性编码。 -
VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 6×6 矩形的有符号浮点 RGBA 纹素数据。 -
VK_FORMAT_ASTC_8x5_UNORM_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 8×5 矩形的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_ASTC_8x5_SRGB_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 8×5 矩形的无符号归一化 RGBA 纹素数据,并且对 RGB 分量应用了 sRGB 非线性编码。 -
VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 8×5 矩形的有符号浮点 RGBA 纹素数据。 -
VK_FORMAT_ASTC_8x6_UNORM_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 8×6 矩形的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_ASTC_8x6_SRGB_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 8×6 矩形的无符号归一化 RGBA 纹素数据,并且对 RGB 分量应用了 sRGB 非线性编码。 -
VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 8×6 矩形的有符号浮点 RGBA 纹素数据。 -
VK_FORMAT_ASTC_8x8_UNORM_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 8×8 矩形的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_ASTC_8x8_SRGB_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 8×8 矩形的无符号归一化 RGBA 纹素数据,并且对 RGB 分量应用了 sRGB 非线性编码。 -
VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 8×8 矩形的有符号浮点 RGBA 纹素数据。 -
VK_FORMAT_ASTC_10x5_UNORM_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 10×5 矩形的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_ASTC_10x5_SRGB_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 10×5 矩形的无符号归一化 RGBA 纹素数据,并且对 RGB 分量应用了 sRGB 非线性编码。 -
VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 10×5 矩形的有符号浮点 RGBA 纹素数据。 -
VK_FORMAT_ASTC_10x6_UNORM_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 10×6 矩形的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_ASTC_10x6_SRGB_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 10×6 矩形的无符号归一化 RGBA 纹素数据,并且对 RGB 分量应用了 sRGB 非线性编码。 -
VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 10×6 矩形的有符号浮点 RGBA 纹素数据。 -
VK_FORMAT_ASTC_10x8_UNORM_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 10×8 矩形的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_ASTC_10x8_SRGB_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 10×8 矩形的无符号归一化 RGBA 纹素数据,并且对 RGB 分量应用了 sRGB 非线性编码。 -
VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 10×8 矩形的有符号浮点 RGBA 纹素数据。 -
VK_FORMAT_ASTC_10x10_UNORM_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 10×10 矩形的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_ASTC_10x10_SRGB_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 10×10 矩形的无符号归一化 RGBA 纹素数据,并且对 RGB 分量应用了 sRGB 非线性编码。 -
VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 10×10 矩形的有符号浮点 RGBA 纹素数据。 -
VK_FORMAT_ASTC_12x10_UNORM_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 12×10 矩形的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_ASTC_12x10_SRGB_BLOCK
指定了一种四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 12×10 矩形的无符号归一化 RGBA 纹素数据,并且对 RGB 分量应用了 sRGB 非线性编码。 -
VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK
指定了一个四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 12×10 矩形的有符号浮点 RGBA 纹素数据。 -
VK_FORMAT_ASTC_12x12_UNORM_BLOCK
指定了一个四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 12×12 矩形的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_ASTC_12x12_SRGB_BLOCK
指定了一个四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 12×12 矩形的无符号归一化 RGBA 纹素数据,并且对 RGB 分量应用了 sRGB 非线性编码。 -
VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK
指定了一个四分量的 ASTC 压缩格式,其中每个 128 位压缩纹素块编码一个 12×12 矩形的有符号浮点 RGBA 纹素数据。 -
VK_FORMAT_G8B8G8R8_422_UNORM
指定了一个四分量 32 位格式,其中包含一对 G 分量、一个 R 分量和一个 B 分量,它们共同编码一个 2×1 矩形的无符号归一化 RGB 纹素数据。每个 *i* 坐标处都有一个 G 值,而 B 和 R 值在两个 G 值之间共享,因此以图像水平分辨率的一半记录。此格式在字节 0 中具有偶数 *i* 坐标的 8 位 G 分量,在字节 1 中具有 8 位 B 分量,在字节 2 中具有奇数 *i* 坐标的 8 位 G 分量,以及在字节 3 中具有 8 位 R 分量。此格式仅支持宽度为 2 的倍数的图像。出于复制范围约束的目的,此格式被视为具有 2×1 压缩纹素块的压缩格式。 -
VK_FORMAT_B8G8R8G8_422_UNORM
指定了一个四分量 32 位格式,其中包含一对 G 分量、一个 R 分量和一个 B 分量,它们共同编码一个 2×1 矩形的无符号归一化 RGB 纹素数据。每个 *i* 坐标处都有一个 G 值,而 B 和 R 值在两个 G 值之间共享,因此以图像水平分辨率的一半记录。此格式在字节 0 中具有 8 位 B 分量,在字节 1 中具有偶数 *i* 坐标的 8 位 G 分量,在字节 2 中具有 8 位 R 分量,以及在字节 3 中具有奇数 *i* 坐标的 8 位 G 分量。此格式仅支持宽度为 2 的倍数的图像。出于复制范围约束的目的,此格式被视为具有 2×1 压缩纹素块的压缩格式。 -
VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM
指定了一个无符号归一化的多平面格式,其中在平面 0 中具有 8 位 G 分量,在平面 1 中具有 8 位 B 分量,在平面 2 中具有 8 位 R 分量。R 和 B 平面的水平和垂直尺寸相对于图像尺寸减半,每个 R 和 B 分量与 G 分量共享,其中 \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\) 并且 \(\left\lfloor j_G \times 0.5 \right\rfloor = j_B = j_R\)。当此图像采用线性布局时,每个平面的位置可以通过 vkGetImageSubresourceLayout 确定,使用VK_IMAGE_ASPECT_PLANE_0_BIT
用于 G 平面,VK_IMAGE_ASPECT_PLANE_1_BIT
用于 B 平面,以及VK_IMAGE_ASPECT_PLANE_2_BIT
用于 R 平面。此格式仅支持宽度和高度均为 2 的倍数的图像。 -
VK_FORMAT_G8_B8R8_2PLANE_420_UNORM
指定了一个无符号归一化的多平面格式,其中在平面 0 中具有 8 位 G 分量,以及一个双分量 16 位 BR 平面 1,由字节 0 中的 8 位 B 分量和字节 1 中的 8 位 R 分量组成。BR 平面的水平和垂直尺寸相对于图像尺寸减半,每个 R 和 B 值与 G 分量共享,其中 \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\) 并且 \(\left\lfloor j_G \times 0.5 \right\rfloor = j_B = j_R\)。当此图像采用线性布局时,每个平面的位置可以通过 vkGetImageSubresourceLayout 确定,使用VK_IMAGE_ASPECT_PLANE_0_BIT
用于 G 平面,以及VK_IMAGE_ASPECT_PLANE_1_BIT
用于 BR 平面。此格式仅支持宽度和高度均为 2 的倍数的图像。 -
VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM
指定了一个无符号归一化的多平面格式,其中在平面 0 中具有 8 位 G 分量,在平面 1 中具有 8 位 B 分量,在平面 2 中具有 8 位 R 分量。R 和 B 平面的水平尺寸相对于图像尺寸减半,每个 R 和 B 值与 G 分量共享,其中 \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\)。当此图像采用线性布局时,每个平面的位置可以通过 vkGetImageSubresourceLayout 确定,使用VK_IMAGE_ASPECT_PLANE_0_BIT
用于 G 平面,VK_IMAGE_ASPECT_PLANE_1_BIT
用于 B 平面,以及VK_IMAGE_ASPECT_PLANE_2_BIT
用于 R 平面。此格式仅支持宽度为 2 的倍数的图像。 -
VK_FORMAT_G8_B8R8_2PLANE_422_UNORM
指定了一个无符号归一化的多平面格式,其中平面 0 具有 8 位 G 分量,平面 1 具有一个双分量 16 位 BR 平面,该平面由字节 0 中的 8 位 B 分量和字节 1 中的 8 位 R 分量组成。BR 平面的水平尺寸相对于图像尺寸减半,并且每个 R 和 B 值都与 的 G 分量共享。当此图像采用线性布局时,每个平面的位置可以通过 vkGetImageSubresourceLayout 确定,对 G 平面使用VK_IMAGE_ASPECT_PLANE_0_BIT
,对 BR 平面使用VK_IMAGE_ASPECT_PLANE_1_BIT
。此格式仅支持宽度为 2 的倍数的图像。 -
VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM
指定一个无符号归一化的多平面格式,其中平面 0 包含 8 位 G 分量,平面 1 包含 8 位 B 分量,平面 2 包含 8 位 R 分量。每个平面具有相同的尺寸,并且每个 R、G 和 B 分量贡献一个单独的纹素。当此图像采用线性布局时,可以使用 vkGetImageSubresourceLayout 确定每个平面的位置,其中 G 平面使用VK_IMAGE_ASPECT_PLANE_0_BIT
,B 平面使用VK_IMAGE_ASPECT_PLANE_1_BIT
,R 平面使用VK_IMAGE_ASPECT_PLANE_2_BIT
。 -
VK_FORMAT_R10X6_UNORM_PACK16
指定一个单分量、16 位无符号归一化格式,其中一个 10 位 R 分量位于 16 位字的最高 10 位,而最低 6 位未使用。 -
VK_FORMAT_R10X6G10X6_UNORM_2PACK16
指定一个双分量、32 位无符号归一化格式,其中一个 10 位 R 分量位于字节 0..1 的字的最高 10 位,一个 10 位 G 分量位于字节 2..3 的字的最高 10 位,而每个字的最低 6 位未使用。 -
VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16
指定一个四分量、64 位无符号归一化格式,其中一个 10 位 R 分量位于字节 0..1 的字的最高 10 位,一个 10 位 G 分量位于字节 2..3 的字的最高 10 位,一个 10 位 B 分量位于字节 4..5 的字的最高 10 位,一个 10 位 A 分量位于字节 6..7 的字的最高 10 位,而每个字的最低 6 位未使用。 -
VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16
指定一个四分量、64 位格式,包含一对 G 分量、一个 R 分量和一个 B 分量,共同编码一个 2×1 矩形的无符号归一化 RGB 纹素数据。每个 i 坐标都有一个 G 值,而 B 和 R 值在两个 G 值之间共享,因此以图像水平分辨率的一半记录。此格式在字节 0..1 的字的最高 10 位具有用于偶数 i 坐标的 10 位 G 分量,在字节 2..3 的字的最高 10 位具有 10 位 B 分量,在字节 4..5 的字的最高 10 位具有用于奇数 i 坐标的 10 位 G 分量,在字节 6..7 的字的最高 10 位具有 10 位 R 分量,而每个字的最低 6 位未使用。此格式仅支持宽度为 2 的倍数的图像。为了复制范围约束的目的,此格式被视为具有 2×1 压缩纹素块的压缩格式。 -
VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
指定一个四分量、64 位格式,包含一对 G 分量、一个 R 分量和一个 B 分量,共同编码一个 2×1 矩形的无符号归一化 RGB 纹素数据。每个 i 坐标都有一个 G 值,而 B 和 R 值在两个 G 值之间共享,因此以图像水平分辨率的一半记录。此格式在字节 0..1 的字的最高 10 位具有 10 位 B 分量,在字节 2..3 的字的最高 10 位具有用于偶数 i 坐标的 10 位 G 分量,在字节 4..5 的字的最高 10 位具有 10 位 R 分量,在字节 6..7 的字的最高 10 位具有用于奇数 i 坐标的 10 位 G 分量,而每个字的最低 6 位未使用。此格式仅支持宽度为 2 的倍数的图像。为了复制范围约束的目的,此格式被视为具有 2×1 压缩纹素块的压缩格式。 -
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16
指定一个无符号归一化的多平面格式,其中平面 0 的每个 16 位字的最高 10 位包含 10 位 G 分量,平面 1 的每个 16 位字的最高 10 位包含 10 位 B 分量,平面 2 的每个 16 位字的最高 10 位包含 10 位 R 分量,而每个字的最低 6 位未使用。R 和 B 平面的水平和垂直尺寸相对于图像尺寸减半,并且每个 R 和 B 分量与满足以下条件的 G 分量共享:\(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\) 和 \(\left\lfloor j_G \times 0.5 \right\rfloor = j_B = j_R\)。当此图像采用线性布局时,可以使用 vkGetImageSubresourceLayout 确定每个平面的位置,其中 G 平面使用VK_IMAGE_ASPECT_PLANE_0_BIT
,B 平面使用VK_IMAGE_ASPECT_PLANE_1_BIT
,R 平面使用VK_IMAGE_ASPECT_PLANE_2_BIT
。此格式仅支持宽度和高度均为 2 的倍数的图像。 -
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16
指定一个无符号归一化的多平面格式,其中平面 0 的每个 16 位字的最高 10 位包含 10 位 G 分量,而双分量、32 位的 BR 平面 1 由字节 0..1 的字的最高 10 位中的 10 位 B 分量和字节 2..3 的字的最高 10 位中的 10 位 R 分量组成,而每个字的最低 6 位未使用。BR 平面的水平和垂直尺寸相对于图像尺寸减半,并且每个 R 和 B 值与满足以下条件的 G 分量共享:\(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\) 和 \(\left\lfloor j_G \times 0.5 \right\rfloor = j_B = j_R\)。当此图像采用线性布局时,可以使用 vkGetImageSubresourceLayout 确定每个平面的位置,其中 G 平面使用VK_IMAGE_ASPECT_PLANE_0_BIT
,BR 平面使用VK_IMAGE_ASPECT_PLANE_1_BIT
。此格式仅支持宽度和高度均为 2 的倍数的图像。 -
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16
指定一个无符号归一化的多平面格式,其中平面 0 的每个 16 位字的最高 10 位包含 10 位 G 分量,平面 1 的每个 16 位字的最高 10 位包含 10 位 B 分量,平面 2 的每个 16 位字的最高 10 位包含 10 位 R 分量,而每个字的最低 6 位未使用。R 和 B 平面的水平尺寸相对于图像尺寸减半,并且每个 R 和 B 值与满足以下条件的 G 分量共享:\(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\)。当此图像采用线性布局时,可以使用 vkGetImageSubresourceLayout 确定每个平面的位置,其中 G 平面使用VK_IMAGE_ASPECT_PLANE_0_BIT
,B 平面使用VK_IMAGE_ASPECT_PLANE_1_BIT
,R 平面使用VK_IMAGE_ASPECT_PLANE_2_BIT
。此格式仅支持宽度为 2 的倍数的图像。 -
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16
specifies an unsigned normalized multi-planar format that has a 10-bit G component in the top 10 bits of each 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 consisting of a 10-bit B component in the top 10 bits of the word in bytes 0..1, and a 10-bit R component in the top 10 bits of the word in bytes 2..3, with the bottom 6 bits of each word unused. The horizontal dimension of the BR plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which . The location of each plane when this image is in linear layout can be determined via vkGetImageSubresourceLayout, usingVK_IMAGE_ASPECT_PLANE_0_BIT
for the G plane, andVK_IMAGE_ASPECT_PLANE_1_BIT
for the BR plane. This format only supports images with a width that is a multiple of two. -
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16
指定一个无符号归一化的多平面格式,其中平面 0 的每个 16 位字的最高 10 位包含 10 位 G 分量,平面 1 的每个 16 位字的最高 10 位包含 10 位 B 分量,平面 2 的每个 16 位字的最高 10 位包含 10 位 R 分量,而每个字的最低 6 位未使用。每个平面具有相同的尺寸,并且每个 R、G 和 B 分量贡献一个单独的纹素。当此图像采用线性布局时,可以使用 vkGetImageSubresourceLayout 确定每个平面的位置,其中 G 平面使用VK_IMAGE_ASPECT_PLANE_0_BIT
,B 平面使用VK_IMAGE_ASPECT_PLANE_1_BIT
,R 平面使用VK_IMAGE_ASPECT_PLANE_2_BIT
。 -
VK_FORMAT_R12X4_UNORM_PACK16
指定一个单分量、16 位无符号归一化格式,其中一个 12 位 R 分量位于 16 位字的最高 12 位,而最低 4 位未使用。 -
VK_FORMAT_R12X4G12X4_UNORM_2PACK16
指定一个双分量、32 位无符号归一化格式,其中一个 12 位 R 分量位于字节 0..1 的字的最高 12 位,一个 12 位 G 分量位于字节 2..3 的字的最高 12 位,而每个字的最低 4 位未使用。 -
VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16
指定一个四分量、64 位无符号归一化格式,其中字节 0..1 中的字的高 12 位为 12 位 R 分量,字节 2..3 中的字的高 12 位为 12 位 G 分量,字节 4..5 中的字的高 12 位为 12 位 B 分量,字节 6..7 中的字的高 12 位为 12 位 A 分量,每个字的低 4 位未使用。 -
VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16
指定一个四分量、64 位格式,其中包含一对 G 分量、一个 R 分量和一个 B 分量,共同编码一个 2×1 矩形无符号归一化 RGB 纹素数据。每个 i 坐标都有一个 G 值,B 和 R 值在两个 G 值之间共享,因此以图像水平分辨率的一半记录。此格式在字节 0..1 中的字的高 12 位具有偶数 i 坐标的 12 位 G 分量,在字节 2..3 中的字的高 12 位具有 12 位 B 分量,在字节 4..5 中的字的高 12 位具有奇数 i 坐标的 12 位 G 分量,以及在字节 6..7 中的字的高 12 位具有 12 位 R 分量,每个字的低 4 位未使用。此格式仅支持宽度为 2 的倍数的图像。为了约束复制范围,此格式被视为 2×1 压缩纹素块的压缩格式。 -
VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16
指定一个四分量、64 位格式,其中包含一对 G 分量、一个 R 分量和一个 B 分量,共同编码一个 2×1 矩形无符号归一化 RGB 纹素数据。每个 i 坐标都有一个 G 值,B 和 R 值在两个 G 值之间共享,因此以图像水平分辨率的一半记录。此格式在字节 0..1 中的字的高 12 位具有 12 位 B 分量,在字节 2..3 中的字的高 12 位具有偶数 i 坐标的 12 位 G 分量,在字节 4..5 中的字的高 12 位具有 12 位 R 分量,以及在字节 6..7 中的字的高 12 位具有奇数 i 坐标的 12 位 G 分量,每个字的低 4 位未使用。此格式仅支持宽度为 2 的倍数的图像。为了约束复制范围,此格式被视为 2×1 压缩纹素块的压缩格式。 -
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16
指定一个无符号归一化多平面格式,其中平面 0 的每个 16 位字的高 12 位具有 12 位 G 分量,平面 1 的每个 16 位字的高 12 位具有 12 位 B 分量,以及平面 2 的每个 16 位字的高 12 位具有 12 位 R 分量,每个字的低 4 位未使用。R 和 B 平面的水平和垂直尺寸相对于图像尺寸减半,并且每个 R 和 B 分量与满足 \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\) 和 \(\left\lfloor j_G \times 0.5 \right\rfloor = j_B = j_R\) 的 G 分量共享。当此图像采用线性布局时,可以使用 vkGetImageSubresourceLayout 来确定每个平面的位置,使用VK_IMAGE_ASPECT_PLANE_0_BIT
表示 G 平面,使用VK_IMAGE_ASPECT_PLANE_1_BIT
表示 B 平面,以及使用VK_IMAGE_ASPECT_PLANE_2_BIT
表示 R 平面。此格式仅支持宽度和高度均为 2 的倍数的图像。 -
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16
指定一个无符号归一化多平面格式,其中平面 0 的每个 16 位字的高 12 位具有 12 位 G 分量,以及由字节 0..1 中的字的高 12 位中的 12 位 B 分量和字节 2..3 中的字的高 12 位中的 12 位 R 分量组成的双分量 32 位 BR 平面 1,每个字的低 4 位未使用。BR 平面的水平和垂直尺寸相对于图像尺寸减半,并且每个 R 和 B 值与满足 \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\) 和 \(\left\lfloor j_G \times 0.5 \right\rfloor = j_B = j_R\) 的 G 分量共享。当此图像采用线性布局时,可以使用 vkGetImageSubresourceLayout 来确定每个平面的位置,使用VK_IMAGE_ASPECT_PLANE_0_BIT
表示 G 平面,以及使用VK_IMAGE_ASPECT_PLANE_1_BIT
表示 BR 平面。此格式仅支持宽度和高度均为 2 的倍数的图像。 -
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16
指定一个无符号归一化多平面格式,其中平面 0 的每个 16 位字的高 12 位具有 12 位 G 分量,平面 1 的每个 16 位字的高 12 位具有 12 位 B 分量,以及平面 2 的每个 16 位字的高 12 位具有 12 位 R 分量,每个字的低 4 位未使用。R 和 B 平面的水平尺寸相对于图像尺寸减半,并且每个 R 和 B 值与满足 \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\) 的 G 分量共享。当此图像采用线性布局时,可以使用 vkGetImageSubresourceLayout 来确定每个平面的位置,使用VK_IMAGE_ASPECT_PLANE_0_BIT
表示 G 平面,使用VK_IMAGE_ASPECT_PLANE_1_BIT
表示 B 平面,以及使用VK_IMAGE_ASPECT_PLANE_2_BIT
表示 R 平面。此格式仅支持宽度为 2 的倍数的图像。 -
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16
specifies an unsigned normalized multi-planar format that has a 12-bit G component in the top 12 bits of each 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 consisting of a 12-bit B component in the top 12 bits of the word in bytes 0..1, and a 12-bit R component in the top 12 bits of the word in bytes 2..3, with the bottom 4 bits of each word unused. The horizontal dimension of the BR plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which . The location of each plane when this image is in linear layout can be determined via vkGetImageSubresourceLayout, usingVK_IMAGE_ASPECT_PLANE_0_BIT
for the G plane, andVK_IMAGE_ASPECT_PLANE_1_BIT
for the BR plane. This format only supports images with a width that is a multiple of two. -
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16
指定一个无符号归一化多平面格式,其中平面 0 的每个 16 位字的高 12 位具有 12 位 G 分量,平面 1 的每个 16 位字的高 12 位具有 12 位 B 分量,以及平面 2 的每个 16 位字的高 12 位具有 12 位 R 分量,每个字的低 4 位未使用。每个平面都具有相同的尺寸,并且每个 R、G 和 B 分量都有助于单个纹素。当此图像采用线性布局时,可以使用 vkGetImageSubresourceLayout 来确定每个平面的位置,使用VK_IMAGE_ASPECT_PLANE_0_BIT
表示 G 平面,使用VK_IMAGE_ASPECT_PLANE_1_BIT
表示 B 平面,以及使用VK_IMAGE_ASPECT_PLANE_2_BIT
表示 R 平面。 -
VK_FORMAT_G16B16G16R16_422_UNORM
指定一个四分量、64 位格式,其中包含一对 G 分量、一个 R 分量和一个 B 分量,共同编码一个 2×1 矩形无符号归一化 RGB 纹素数据。每个 i 坐标都有一个 G 值,B 和 R 值在两个 G 值之间共享,因此以图像水平分辨率的一半记录。此格式在字节 0..1 中的字具有偶数 i 坐标的 16 位 G 分量,在字节 2..3 中的字具有 16 位 B 分量,在字节 4..5 中的字具有奇数 i 坐标的 16 位 G 分量,以及在字节 6..7 中的字具有 16 位 R 分量。此格式仅支持宽度为 2 的倍数的图像。为了约束复制范围,此格式被视为 2×1 压缩纹素块的压缩格式。 -
VK_FORMAT_B16G16R16G16_422_UNORM
指定一个四分量、64 位格式,其中包含一对 G 分量、一个 R 分量和一个 B 分量,共同编码一个 2×1 矩形无符号归一化 RGB 纹素数据。每个 i 坐标都有一个 G 值,B 和 R 值在两个 G 值之间共享,因此以图像水平分辨率的一半记录。此格式在字节 0..1 中的字具有 16 位 B 分量,在字节 2..3 中的字具有偶数 i 坐标的 16 位 G 分量,在字节 4..5 中的字具有 16 位 R 分量,以及在字节 6..7 中的字具有奇数 i 坐标的 16 位 G 分量。此格式仅支持宽度为 2 的倍数的图像。为了约束复制范围,此格式被视为 2×1 压缩纹素块的压缩格式。 -
VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM
指定一个无符号归一化多平面格式,其中平面 0 的每个 16 位字中包含一个 16 位 G 分量,平面 1 的每个 16 位字中包含一个 16 位 B 分量,平面 2 的每个 16 位字中包含一个 16 位 R 分量。R 和 B 平面的水平和垂直维度相对于图像维度减半,并且每个 R 和 B 分量都与满足 \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\) 和 \(\left\lfloor j_G \times 0.5 \right\rfloor = j_B = j_R\) 的 G 分量共享。当此图像采用线性布局时,可以使用 vkGetImageSubresourceLayout 确定每个平面的位置,其中 G 平面使用VK_IMAGE_ASPECT_PLANE_0_BIT
,B 平面使用VK_IMAGE_ASPECT_PLANE_1_BIT
,R 平面使用VK_IMAGE_ASPECT_PLANE_2_BIT
。此格式仅支持宽度和高度均为 2 的倍数的图像。 -
VK_FORMAT_G16_B16R16_2PLANE_420_UNORM
指定一个无符号归一化多平面格式,其中平面 0 的每个 16 位字中包含一个 16 位 G 分量,而双分量的 32 位 BR 平面 1 则由字节 0..1 中的 16 位 B 分量和字节 2..3 中的 16 位 R 分量组成。BR 平面的水平和垂直维度相对于图像维度减半,并且每个 R 和 B 值都与满足 \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\) 和 \(\left\lfloor j_G \times 0.5 \right\rfloor = j_B = j_R\) 的 G 分量共享。当此图像采用线性布局时,可以使用 vkGetImageSubresourceLayout 确定每个平面的位置,其中 G 平面使用VK_IMAGE_ASPECT_PLANE_0_BIT
,BR 平面使用VK_IMAGE_ASPECT_PLANE_1_BIT
。此格式仅支持宽度和高度均为 2 的倍数的图像。 -
VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM
指定一个无符号归一化多平面格式,其中平面 0 的每个 16 位字中包含一个 16 位 G 分量,平面 1 的每个 16 位字中包含一个 16 位 B 分量,平面 2 的每个 16 位字中包含一个 16 位 R 分量。R 和 B 平面的水平维度相对于图像维度减半,并且每个 R 和 B 值都与满足 \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\) 的 G 分量共享。当此图像采用线性布局时,可以使用 vkGetImageSubresourceLayout 确定每个平面的位置,其中 G 平面使用VK_IMAGE_ASPECT_PLANE_0_BIT
,B 平面使用VK_IMAGE_ASPECT_PLANE_1_BIT
,R 平面使用VK_IMAGE_ASPECT_PLANE_2_BIT
。此格式仅支持宽度为 2 的倍数的图像。 -
VK_FORMAT_G16_B16R16_2PLANE_422_UNORM
指定一个无符号归一化的多平面格式,其中平面 0 的每个 16 位字中有一个 16 位 G 分量,以及一个双分量、32 位的 BR 平面 1,它由字节 0..1 中的 16 位 B 分量和字节 2..3 中的 16 位 R 分量组成。BR 平面的水平维度相对于图像维度减半,并且每个 R 和 B 值与以下 G 分量共享。当此图像采用线性布局时,可以使用 vkGetImageSubresourceLayout 确定每个平面的位置,G 平面使用VK_IMAGE_ASPECT_PLANE_0_BIT
,BR 平面使用VK_IMAGE_ASPECT_PLANE_1_BIT
。此格式仅支持宽度为 2 的倍数的图像。 -
VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM
指定一个无符号归一化的多平面格式,其中平面 0 的每个 16 位字包含一个 16 位 G 分量,平面 1 的每个 16 位字包含一个 16 位 B 分量,平面 2 的每个 16 位字包含一个 16 位 R 分量。每个平面具有相同的尺寸,并且每个 R、G 和 B 分量贡献于单个纹素。当此图像以线性布局时,可以使用 vkGetImageSubresourceLayout 确定每个平面的位置,其中 G 平面使用VK_IMAGE_ASPECT_PLANE_0_BIT
,B 平面使用VK_IMAGE_ASPECT_PLANE_1_BIT
,R 平面使用VK_IMAGE_ASPECT_PLANE_2_BIT
。 -
VK_FORMAT_G8_B8R8_2PLANE_444_UNORM
指定一个无符号归一化的多平面格式,其中平面 0 包含一个 8 位 G 分量,平面 1 包含一个双分量 16 位 BR 平面,由字节 0 中的 8 位 B 分量和字节 1 中的 8 位 R 分量组成。两个平面都具有相同的尺寸,并且每个 R、G 和 B 分量贡献于单个纹素。当此图像以线性布局时,可以使用 vkGetImageSubresourceLayout 确定每个平面的位置,其中 G 平面使用VK_IMAGE_ASPECT_PLANE_0_BIT
,BR 平面使用VK_IMAGE_ASPECT_PLANE_1_BIT
。 -
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16
指定一个无符号归一化的多平面格式,其中平面 0 的每个 16 位字的高 10 位包含一个 10 位 G 分量,平面 1 包含一个双分量 32 位 BR 平面,由字节 0..1 的字的高 10 位中的 10 位 B 分量,和字节 2..3 的字的高 10 位中的 10 位 R 分量组成,每个字的低 6 位未使用。两个平面都具有相同的尺寸,并且每个 R、G 和 B 分量贡献于单个纹素。当此图像以线性布局时,可以使用 vkGetImageSubresourceLayout 确定每个平面的位置,其中 G 平面使用VK_IMAGE_ASPECT_PLANE_0_BIT
,BR 平面使用VK_IMAGE_ASPECT_PLANE_1_BIT
。 -
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16
指定一个无符号归一化的多平面格式,其中平面 0 的每个 16 位字的高 12 位包含一个 12 位 G 分量,平面 1 包含一个双分量 32 位 BR 平面,由字节 0..1 的字的高 12 位中的 12 位 B 分量,和字节 2..3 的字的高 12 位中的 12 位 R 分量组成,每个字的低 4 位未使用。两个平面都具有相同的尺寸,并且每个 R、G 和 B 分量贡献于单个纹素。当此图像以线性布局时,可以使用 vkGetImageSubresourceLayout 确定每个平面的位置,其中 G 平面使用VK_IMAGE_ASPECT_PLANE_0_BIT
,BR 平面使用VK_IMAGE_ASPECT_PLANE_1_BIT
。 -
VK_FORMAT_G16_B16R16_2PLANE_444_UNORM
指定一个无符号归一化的多平面格式,其中平面 0 的每个 16 位字包含一个 16 位 G 分量,平面 1 包含一个双分量 32 位 BR 平面,由字节 0..1 的字中的 16 位 B 分量和字节 2..3 的字中的 16 位 R 分量组成。两个平面都具有相同的尺寸,并且每个 R、G 和 B 分量贡献于单个纹素。当此图像以线性布局时,可以使用 vkGetImageSubresourceLayout 确定每个平面的位置,其中 G 平面使用VK_IMAGE_ASPECT_PLANE_0_BIT
,BR 平面使用VK_IMAGE_ASPECT_PLANE_1_BIT
。 -
VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG
指定一个四分量的 PVRTC 压缩格式,其中每个 64 位压缩纹素块编码一个 8×4 矩形的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG
指定一个四分量的 PVRTC 压缩格式,其中每个 64 位压缩纹素块编码一个 4×4 矩形的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG
指定一个四分量的 PVRTC 压缩格式,其中每个 64 位压缩纹素块编码一个 8×4 矩形的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG
指定一个四分量的 PVRTC 压缩格式,其中每个 64 位压缩纹素块编码一个 4×4 矩形的无符号归一化 RGBA 纹素数据。 -
VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG
指定一个四分量的 PVRTC 压缩格式,其中每个 64 位压缩纹素块编码一个 8×4 矩形的无符号归一化 RGBA 纹素数据,并且对 RGB 分量应用 sRGB 非线性编码。 -
VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG
指定一个四分量的 PVRTC 压缩格式,其中每个 64 位压缩纹素块编码一个 4×4 矩形的无符号归一化 RGBA 纹素数据,并且对 RGB 分量应用 sRGB 非线性编码。 -
VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG
指定一个四分量的 PVRTC 压缩格式,其中每个 64 位压缩纹素块编码一个 8×4 矩形的无符号归一化 RGBA 纹素数据,并且对 RGB 分量应用 sRGB 非线性编码。 -
VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG
指定一个四分量的 PVRTC 压缩格式,其中每个 64 位压缩纹素块编码一个 4×4 矩形的无符号归一化 RGBA 纹素数据,并且对 RGB 分量应用 sRGB 非线性编码。 -
VK_FORMAT_R16G16_SFIXED5_NV
指定一个双分量、16 位有符号定点格式,采用线性编码。这些分量是有符号的二进制补码整数,其中最高位指定符号位,接下来的 10 位指定整数值,最后 5 位表示小数部分。有符号的 16 位值**可以**通过将该值除以 32 (25) 转换为范围 [-1024,1023.96875] 内的浮点数。
多平面格式的平面兼容格式
如果多平面格式的各个平面每个纹素块占用相同数量的位,并且具有相同的块范围,则它们与单平面颜色格式在尺寸上兼容,并且与这些格式兼容。
平面 | 平面兼容格式 | 相对于具有最大尺寸的平面的宽度w 的宽度 | 相对于具有最大尺寸的平面的高度h 的高度 |
---|---|---|---|
|
|||
0 |
|
w |
h |
1 |
|
w/2 |
h/2 |
2 |
|
w/2 |
h/2 |
|
|||
0 |
|
w |
h |
1 |
|
w/2 |
h/2 |
|
|||
0 |
|
w |
h |
1 |
|
w/2 |
h |
2 |
|
w/2 |
h |
|
|||
0 |
|
w |
h |
1 |
|
w/2 |
h |
|
|||
0 |
|
w |
h |
1 |
|
w |
h |
2 |
|
w |
h |
|
|||
0 |
|
w |
h |
1 |
|
w/2 |
h/2 |
2 |
|
w/2 |
h/2 |
|
|||
0 |
|
w |
h |
1 |
|
w/2 |
h/2 |
|
|||
0 |
|
w |
h |
1 |
|
w/2 |
h |
2 |
|
w/2 |
h |
|
|||
0 |
|
w |
h |
1 |
|
w/2 |
h |
|
|||
0 |
|
w |
h |
1 |
|
w |
h |
2 |
|
w |
h |
|
|||
0 |
|
w |
h |
1 |
|
w/2 |
h/2 |
2 |
|
w/2 |
h/2 |
|
|||
0 |
|
w |
h |
1 |
|
w/2 |
h/2 |
|
|||
0 |
|
w |
h |
1 |
|
w/2 |
h |
2 |
|
w/2 |
h |
|
|||
0 |
|
w |
h |
1 |
|
w/2 |
h |
|
|||
0 |
|
w |
h |
1 |
|
w |
h |
2 |
|
w |
h |
|
|||
0 |
|
w |
h |
1 |
|
w/2 |
h/2 |
2 |
|
w/2 |
h/2 |
|
|||
0 |
|
w |
h |
1 |
|
w/2 |
h/2 |
|
|||
0 |
|
w |
h |
1 |
|
w/2 |
h |
2 |
|
w/2 |
h |
|
|||
0 |
|
w |
h |
1 |
|
w/2 |
h |
|
|||
0 |
|
w |
h |
1 |
|
w |
h |
2 |
|
w |
h |
|
|||
0 |
|
w |
h |
1 |
|
w |
h |
|
|||
0 |
|
w |
h |
1 |
|
w |
h |
|
|||
0 |
|
w |
h |
1 |
|
w |
h |
|
|||
0 |
|
w |
h |
1 |
|
w |
h |
深度模板到/从颜色复制的兼容格式
如果启用了maintenance8
功能,则在执行按位复制操作时,深度模板格式的各个方面与某些单分量颜色格式在尺寸上兼容。以下是所有按方面尺寸划分的格式兼容性关系的完整列表
-
32 位深度 (
VK_FORMAT_D32_SFLOAT
,VK_FORMAT_D32_SFLOAT_S8_UINT
)-
VK_FORMAT_R32_SFLOAT
,VK_FORMAT_R32_SINT
,VK_FORMAT_R32_UINT
-
-
24 位深度 (
VK_FORMAT_X8_D24_UNORM_PACK32
,VK_FORMAT_D24_UNORM_S8_UINT
)-
VK_FORMAT_R32_SFLOAT
,VK_FORMAT_R32_SINT
,VK_FORMAT_R32_UINT
-
-
16 位深度 (
VK_FORMAT_D16_UNORM
,VK_FORMAT_D16_UNORM_S8_UINT
)-
VK_FORMAT_R16_SFLOAT
,VK_FORMAT_R16_UNORM
,VK_FORMAT_R16_SNORM
,VK_FORMAT_R16_UINT
,VK_FORMAT_R16_SINT
-
-
8 位模版 (
VK_FORMAT_S8_UINT
,VK_FORMAT_D16_UNORM_S8_UINT
,VK_FORMAT_D24_UNORM_S8_UINT
,VK_FORMAT_D32_SFLOAT_S8_UINT
)-
VK_FORMAT_R8_UINT
,VK_FORMAT_R8_SINT
,VK_FORMAT_R8_UNORM
,VK_FORMAT_R8_SNORM
-
多平面格式图像纵横比
当使用 VkImageAspectFlagBits 来选择多平面格式的平面时,以下是有效的选项
-
两个平面
-
VK_IMAGE_ASPECT_PLANE_0_BIT
-
VK_IMAGE_ASPECT_PLANE_1_BIT
-
-
三个平面
-
VK_IMAGE_ASPECT_PLANE_0_BIT
-
VK_IMAGE_ASPECT_PLANE_1_BIT
-
VK_IMAGE_ASPECT_PLANE_2_BIT
-
打包格式
出于访问包含顶点属性或纹素数据的缓冲内存时的地址对齐目的,以下格式被认为是打包的 - 纹素或属性的组成部分存储在打包到一个或多个 8 位、16 位或 32 位基本数据类型的位字段中。
-
-
VK_FORMAT_R4G4_UNORM_PACK8
-
-
-
VK_FORMAT_R4G4B4A4_UNORM_PACK16
-
VK_FORMAT_B4G4R4A4_UNORM_PACK16
-
VK_FORMAT_R5G6B5_UNORM_PACK16
-
VK_FORMAT_B5G6R5_UNORM_PACK16
-
VK_FORMAT_R5G5B5A1_UNORM_PACK16
-
VK_FORMAT_B5G5R5A1_UNORM_PACK16
-
VK_FORMAT_A1R5G5B5_UNORM_PACK16
-
VK_FORMAT_A1B5G5R5_UNORM_PACK16
-
VK_FORMAT_R10X6_UNORM_PACK16
-
VK_FORMAT_R10X6G10X6_UNORM_2PACK16
-
VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16
-
VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16
-
VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
-
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16
-
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16
-
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16
-
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16
-
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16
-
VK_FORMAT_R12X4_UNORM_PACK16
-
VK_FORMAT_R12X4G12X4_UNORM_2PACK16
-
VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16
-
VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16
-
VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16
-
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16
-
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16
-
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16
-
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16
-
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16
-
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16
-
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16
-
VK_FORMAT_A4R4G4B4_UNORM_PACK16
-
VK_FORMAT_A4B4G4R4_UNORM_PACK16
-
-
-
VK_FORMAT_A8B8G8R8_UNORM_PACK32
-
VK_FORMAT_A8B8G8R8_SNORM_PACK32
-
VK_FORMAT_A8B8G8R8_USCALED_PACK32
-
VK_FORMAT_A8B8G8R8_SSCALED_PACK32
-
VK_FORMAT_A8B8G8R8_UINT_PACK32
-
VK_FORMAT_A8B8G8R8_SINT_PACK32
-
VK_FORMAT_A8B8G8R8_SRGB_PACK32
-
VK_FORMAT_A2R10G10B10_UNORM_PACK32
-
VK_FORMAT_A2R10G10B10_SNORM_PACK32
-
VK_FORMAT_A2R10G10B10_USCALED_PACK32
-
VK_FORMAT_A2R10G10B10_SSCALED_PACK32
-
VK_FORMAT_A2R10G10B10_UINT_PACK32
-
VK_FORMAT_A2R10G10B10_SINT_PACK32
-
VK_FORMAT_A2B10G10R10_UNORM_PACK32
-
VK_FORMAT_A2B10G10R10_SNORM_PACK32
-
VK_FORMAT_A2B10G10R10_USCALED_PACK32
-
VK_FORMAT_A2B10G10R10_SSCALED_PACK32
-
VK_FORMAT_A2B10G10R10_UINT_PACK32
-
VK_FORMAT_A2B10G10R10_SINT_PACK32
-
VK_FORMAT_B10G11R11_UFLOAT_PACK32
-
VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
-
VK_FORMAT_X8_D24_UNORM_PACK32
-
格式的识别
“格式”由单个枚举值表示。格式的名称通常使用以下模式构建
VK_FORMAT_{component-format|compression-scheme}_{numeric-format}
组件格式表示颜色格式中 R、G、B 和 A 分量(如果存在)的大小,或者深度/模版格式中深度 (D) 和模版 (S) 分量(如果存在)的大小(见下文)。 X 表示未使用的组件,但可能会为了填充而存在。
数字格式 | 类型声明指令 | 数字类型 | 描述 |
---|---|---|---|
|
OpTypeFloat |
浮点数 |
分量是范围 [0,1] 中的无符号归一化值 |
|
OpTypeFloat |
浮点数 |
分量是范围 [-1,1] 中的有符号归一化值 |
|
OpTypeFloat |
浮点数 |
分量是无符号整数值,在范围 [0,2n-1] 中转换为浮点数 |
|
OpTypeFloat |
浮点数 |
分量是有符号整数值,在范围 [-2n-1,2n-1-1] 中转换为浮点数 |
|
OpTypeInt |
无符号整数 |
分量是范围 [0,2n-1] 中的无符号整数值 |
|
OpTypeInt |
有符号整数 |
分量是范围 [-2n-1,2n-1-1] 中的有符号整数值 |
|
OpTypeFloat |
浮点数 |
分量是无符号浮点数(由打包、共享指数和一些压缩格式使用) |
|
OpTypeFloat |
浮点数 |
分量是有符号浮点数 |
|
OpTypeFloat |
浮点数 |
R、G 和 B 分量是使用 sRGB 非线性编码表示值的无符号归一化值,而 A 分量(如果存在)是规则的无符号归一化值 |
|
OpTypeInt |
缩放的有符号整数 |
分量是缩放的有符号分数整数值,在范围 [-1024,1023.96875] 中转换为浮点数 |
n 是分量中的位数。 |
后缀 _PACKnn
表示格式被打包到具有 nn
位的底层类型中。后缀 _mPACKnn
是一种简写,表示格式具有 m
组分量(可能存储在单独的平面中,也可能不存储在单独的平面中),每组分量都打包到具有 nn
位的底层类型中。
后缀 _BLOCK
表示该格式是块压缩格式,其中多个像素的表示形式在区域内相互依赖地编码。
压缩方案 | 描述 |
---|---|
|
块压缩。请参阅 块压缩图像格式。 |
|
爱立信纹理压缩。请参阅 ETC 压缩图像格式。 |
|
ETC2 Alpha 压缩。请参阅 ETC 压缩图像格式。 |
|
自适应可缩放纹理压缩(LDR 配置文件)。请参阅 ASTC 压缩图像格式。 |
对于多平面图像,单独平面中的分量用下划线分隔,并且平面的数量由添加 _2PLANE
或 _3PLANE
后缀表示。类似地,深度模版格式的单独方面用下划线分隔,尽管这些方面不被认为是单独的平面。格式后缀为 _422
表示除第一个平面之外的平面在水平方向上缩小了二分之一,或者 R 和 B 值以 G 值水平频率的一半出现,_420
表示除第一个平面之外的平面在水平和垂直方向上都缩小了二分之一,并且 _444
为了保持一致性,表示三平面图像的所有三个平面都具有相同的大小。
没有常见的格式具有包含 R 和 B 分量的单个平面,但不会以降低的水平分辨率存储这些分量。 |
表示形式和纹素块大小
颜色格式必须以格式名称指示的确切形式在内存中表示。这意味着对于颜色格式,不得发生将一种格式提升为每分量具有更多位和/或附加分量的另一种格式。深度/模版格式的要求更为宽松,如下面 讨论。
每种格式都有一个纹素块大小,即用于存储一个纹素块(未压缩图像的单个可寻址元素,或压缩图像的单个压缩块)的字节数。每种格式的纹素块大小显示在兼容格式表中。
非打包格式的表示方式是,格式名称中指定的第一个分量位于最低的内存地址,而最后一个分量位于最高的内存地址。请参阅非打包/压缩颜色格式的字节映射。分量中字节的内存顺序由主机字节序决定。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ← 字节 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
R |
|
|||||||||||||||
R |
G |
|
||||||||||||||
R |
G |
B |
|
|||||||||||||
B |
G |
R |
|
|||||||||||||
R |
G |
B |
A |
|
||||||||||||
B |
G |
R |
A |
|
||||||||||||
A |
|
|||||||||||||||
G0 |
B |
G1 |
R |
|
||||||||||||
B |
G0 |
R |
G1 |
|
||||||||||||
R |
|
|||||||||||||||
R |
G |
|
||||||||||||||
R |
G |
B |
|
|||||||||||||
R |
G |
B |
A |
|
||||||||||||
G0 |
B |
G1 |
R |
|
||||||||||||
B |
G0 |
R |
G1 |
|
||||||||||||
R |
|
|||||||||||||||
R |
G |
|
||||||||||||||
R |
G |
B |
|
|||||||||||||
R |
G |
B |
A |
|
||||||||||||
R |
|
|||||||||||||||
R |
G |
|
||||||||||||||
|
||||||||||||||||
|
打包格式在一个底层类型中存储多个分量。位表示方式是,格式名称中指定的第一个分量位于最高有效位,而最后一个分量位于底层类型的最低有效位。构成底层类型的字节的内存顺序由主机字节序决定。
位 | |||||||
---|---|---|---|---|---|---|---|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|||||||
R |
G |
||||||
3 |
2 |
1 |
0 |
3 |
2 |
1 |
0 |
位 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|||||||||||||||
R |
G |
B |
A |
||||||||||||
3 |
2 |
1 |
0 |
3 |
2 |
1 |
0 |
3 |
2 |
1 |
0 |
3 |
2 |
1 |
0 |
|
|||||||||||||||
B |
G |
R |
A |
||||||||||||
3 |
2 |
1 |
0 |
3 |
2 |
1 |
0 |
3 |
2 |
1 |
0 |
3 |
2 |
1 |
0 |
|
|||||||||||||||
A |
R |
G |
B |
||||||||||||
3 |
2 |
1 |
0 |
3 |
2 |
1 |
0 |
3 |
2 |
1 |
0 |
3 |
2 |
1 |
0 |
|
|||||||||||||||
A |
B |
G |
R |
||||||||||||
3 |
2 |
1 |
0 |
3 |
2 |
1 |
0 |
3 |
2 |
1 |
0 |
3 |
2 |
1 |
0 |
|
|||||||||||||||
R |
G |
B |
|||||||||||||
4 |
3 |
2 |
1 |
0 |
5 |
4 |
3 |
2 |
1 |
0 |
4 |
3 |
2 |
1 |
0 |
|
|||||||||||||||
B |
G |
R |
|||||||||||||
4 |
3 |
2 |
1 |
0 |
5 |
4 |
3 |
2 |
1 |
0 |
4 |
3 |
2 |
1 |
0 |
|
|||||||||||||||
R |
G |
B |
A |
||||||||||||
4 |
3 |
2 |
1 |
0 |
4 |
3 |
2 |
1 |
0 |
4 |
3 |
2 |
1 |
0 |
0 |
|
|||||||||||||||
B |
G |
R |
A |
||||||||||||
4 |
3 |
2 |
1 |
0 |
4 |
3 |
2 |
1 |
0 |
4 |
3 |
2 |
1 |
0 |
0 |
|
|||||||||||||||
A |
R |
G |
B |
||||||||||||
0 |
4 |
3 |
2 |
1 |
0 |
4 |
3 |
2 |
1 |
0 |
4 |
3 |
2 |
1 |
0 |
|
|||||||||||||||
A |
B |
G |
R |
||||||||||||
0 |
4 |
3 |
2 |
1 |
0 |
4 |
3 |
2 |
1 |
0 |
4 |
3 |
2 |
1 |
0 |
|
|||||||||||||||
R |
X |
||||||||||||||
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|||||||||||||||
R |
X |
||||||||||||||
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
3 |
2 |
1 |
0 |
位 | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|||||||||||||||||||||||||||||||
A |
B |
G |
R |
||||||||||||||||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|||||||||||||||||||||||||||||||
A |
R |
G |
B |
||||||||||||||||||||||||||||
1 |
0 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|||||||||||||||||||||||||||||||
A |
B |
G |
R |
||||||||||||||||||||||||||||
1 |
0 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|||||||||||||||||||||||||||||||
B |
G |
R |
|||||||||||||||||||||||||||||
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|||||||||||||||||||||||||||||||
E |
B |
G |
R |
||||||||||||||||||||||||||||
4 |
3 |
2 |
1 |
0 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|||||||||||||||||||||||||||||||
X |
D |
||||||||||||||||||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
深度/模板格式
深度/模板格式被认为是 opaque 的,不需要按照格式枚举指示的每个纹素或分量的精确位数来存储。但是,实现必须不能替换与格式中描述不同的深度或模板精度(例如,D16 必须不能实现为 D24 或 D32)。
格式兼容性类
如果未压缩的颜色格式每个纹素块占用的位数相同,并且它们都不是 alpha 格式或都是 alpha 格式(例如,VK_FORMAT_A8_UNORM
),则它们是彼此兼容的。如果压缩颜色格式之间的唯一区别是未压缩像素的数值格式,则它们彼此兼容。每个深度/模板格式只与自身兼容。在以下表中,同一行中的所有格式都是兼容的。每种格式都有一个定义的纹素块范围,指定每个纹素块在每个维度中表示多少个纹素。
类、纹素块大小、纹素块范围、# 纹素/块 | 格式 |
---|---|
8 位 |
|
16 位 |
|
8 位 alpha |
|
24 位 |
|
32 位 |
|
48 位 |
|
64 位 |
|
96 位 |
|
128 位 |
|
192 位 |
|
256 位 |
|
D16 |
|
D24 |
|
D32 |
|
S8 |
|
D16S8 |
|
D24S8 |
|
D32S8 |
|
BC1_RGB |
|
BC1_RGBA |
|
BC2 |
|
BC3 |
|
BC4 |
|
BC5 |
|
BC6H |
|
BC7 |
|
ETC2_RGB |
|
ETC2_RGBA |
|
ETC2_EAC_RGBA |
|
EAC_R |
|
EAC_RG |
|
ASTC_4x4 |
|
ASTC_5x4 |
|
ASTC_5x5 |
|
ASTC_6x5 |
|
ASTC_6x6 |
|
ASTC_8x5 |
|
ASTC_8x6 |
|
ASTC_8x8 |
|
ASTC_10x5 |
|
ASTC_10x6 |
|
ASTC_10x8 |
|
ASTC_10x10 |
|
ASTC_12x10 |
|
ASTC_12x12 |
|
32 位 G8B8G8R8 |
|
32 位 B8G8R8G8 |
|
8 位 3 平面 420 |
|
8 位 2 平面 420 |
|
8 位 3 平面 422 |
|
8 位 2 平面 422 |
|
8 位 3 平面 444 |
|
64 位 R10G10B10A10 |
|
64 位 G10B10G10R10 |
|
64 位 B10G10R10G10 |
|
10 位 3 平面 420 |
|
10 位 2 平面 420 |
|
10 位 3 平面 422 |
|
10 位 2 平面 422 |
|
10 位 3 平面 444 |
|
64 位 R12G12B12A12 |
|
64 位 G12B12G12R12 |
|
64 位 B12G12R12G12 |
|
12 位 3 平面 420 |
|
12 位 2 平面 420 |
|
12 位 3 平面 422 |
|
12 位 2 平面 422 |
|
12 位 3 平面 444 |
|
64 位 G16B16G16R16 |
|
64 位 B16G16R16G16 |
|
16 位 3 平面 420 |
|
16 位 2 平面 420 |
|
16 位 3 平面 422 |
|
16 位 2 平面 422 |
|
16 位 3 平面 444 |
|
PVRTC1_2BPP |
|
PVRTC1_4BPP |
|
PVRTC2_2BPP |
|
PVRTC2_4BPP |
|
8 位 2 平面 444 |
|
10 位 2 平面 444 |
|
12 位 2 平面 444 |
|
16 位 2 平面 444 |
|
大小兼容性
只要颜色格式都不是或都是 Alpha 格式(例如,VK_FORMAT_A8_UNORM
),具有相同纹素块大小的颜色格式就被认为是大小兼容的。如果两个大小兼容的格式具有不同的块范围(即,对于压缩格式),则在一个格式中大小为 A × B × C 的具有 a × b × c 块范围的图像可以表示为在另一个格式中大小为 X × Y × Z 的具有 x × y × z 块范围的图像,该比例是每个格式的块范围之间的比率,其中
-
⌈A/a⌉ = ⌈X/x⌉
-
⌈B/b⌉ = ⌈Y/y⌉
-
⌈C/c⌉ = ⌈Z/z⌉
例如, |
使用 VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
标志创建的图像可以创建与之大小兼容的视图,以允许通过不同的大小兼容格式进行访问。以这种方式创建的图像视图将调整大小以匹配上面注明的块范围的预期。
复制操作可以在不同资源中大小兼容的格式之间复制,以允许操作不同格式的数据。这些复制操作中使用的范围始终与源图像匹配,并调整大小以符合上述目标图像的块范围的预期。
颜色格式和深度/模板之间的复制操作在 兼容的深度/模板和颜色格式列表 中定义为大小兼容。
格式属性
要查询物理设备属性支持的格式功能,请调用
// Provided by VK_VERSION_1_0
void vkGetPhysicalDeviceFormatProperties(
VkPhysicalDevice physicalDevice,
VkFormat format,
VkFormatProperties* pFormatProperties);
-
physicalDevice
是从中查询格式属性的物理设备。 -
format
是要查询其属性的格式。 -
pFormatProperties
是指向 VkFormatProperties 结构的指针,该结构返回format
的物理设备属性。
VkFormatProperties
结构定义为
// Provided by VK_VERSION_1_0
typedef struct VkFormatProperties {
VkFormatFeatureFlags linearTilingFeatures;
VkFormatFeatureFlags optimalTilingFeatures;
VkFormatFeatureFlags bufferFeatures;
} VkFormatProperties;
-
linearTilingFeatures
是 VkFormatFeatureFlagBits 的位掩码,指定由使用tiling
参数为VK_IMAGE_TILING_LINEAR
创建的图像支持的功能。 -
optimalTilingFeatures
是一个位掩码,其中包含 VkFormatFeatureFlagBits,指定使用tiling
参数为VK_IMAGE_TILING_OPTIMAL
创建的图像所支持的特性。 -
bufferFeatures
是一个位掩码,其中包含 VkFormatFeatureFlagBits,指定缓冲区所支持的特性。
如果不支持任何格式特性标志,则表示不支持该格式本身,并且无法创建该格式的图像。 |
如果 format
是块压缩格式,则 bufferFeatures
必须 不支持该格式的任何特性。
如果 format
不是多平面格式,则 linearTilingFeatures
和 optimalTilingFeatures
必须 不包含 VK_FORMAT_FEATURE_DISJOINT_BIT
。
可以在 VkFormatProperties 特性 linearTilingFeatures
、optimalTilingFeatures
、VkDrmFormatModifierPropertiesEXT::drmFormatModifierTilingFeatures
和 bufferFeatures
中设置的位是:
// Provided by VK_VERSION_1_0
typedef enum VkFormatFeatureFlagBits {
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,
VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,
VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008,
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010,
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040,
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,
VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,
VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400,
VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
// Provided by VK_VERSION_1_1
VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 0x00004000,
// Provided by VK_VERSION_1_1
VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 0x00008000,
// Provided by VK_VERSION_1_1
VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000,
// Provided by VK_VERSION_1_1
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000,
// Provided by VK_VERSION_1_1
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000,
// Provided by VK_VERSION_1_1
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000,
// Provided by VK_VERSION_1_1
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000,
// Provided by VK_VERSION_1_1
VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000,
// Provided by VK_VERSION_1_1
VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000,
// Provided by VK_VERSION_1_2
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000,
// Provided by VK_KHR_video_decode_queue
VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000,
// Provided by VK_KHR_video_decode_queue
VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000,
// Provided by VK_KHR_acceleration_structure
VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000,
// Provided by VK_EXT_filter_cubic
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 0x00002000,
// Provided by VK_EXT_fragment_density_map
VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000,
// Provided by VK_KHR_fragment_shading_rate
VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000,
// Provided by VK_KHR_video_encode_queue
VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000,
// Provided by VK_KHR_video_encode_queue
VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 0x10000000,
// Provided by VK_IMG_filter_cubic
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT,
// Provided by VK_KHR_maintenance1
VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
// Provided by VK_KHR_maintenance1
VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
// Provided by VK_EXT_sampler_filter_minmax
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = VK_FORMAT_FEATURE_DISJOINT_BIT,
// Provided by VK_KHR_sampler_ycbcr_conversion
VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
} VkFormatFeatureFlagBits;
这些值与 VkFormatFeatureFlags2 中具有相同名称的值具有相同的含义,并且可以在 linearTilingFeatures
、optimalTilingFeatures
和 VkDrmFormatModifierPropertiesEXT::drmFormatModifierTilingFeatures
中设置,以指定通过查询的 vkGetPhysicalDeviceFormatProperties::format
创建的 图像 或 图像视图 或 采样器 Y′CBCR 转换对象 支持这些特性。
-
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
指定一个图像视图可以被采样。 -
VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
指定一个图像视图可以用作存储图像。 -
VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
指定一个图像视图可以用作支持原子操作的存储图像。 -
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
指定一个图像视图可以用作帧缓冲颜色附件和输入附件。 -
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
指定一个图像视图可以用作支持混合的帧缓冲颜色附件。 -
VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
指定一个图像视图可以用作帧缓冲深度/模板附件和输入附件。 -
VK_FORMAT_FEATURE_BLIT_SRC_BIT
指定一个图像可以用作vkCmdBlitImage2
和vkCmdBlitImage
命令的srcImage
。 -
VK_FORMAT_FEATURE_BLIT_DST_BIT
指定一个图像可以用作vkCmdBlitImage2
和vkCmdBlitImage
命令的dstImage
。 -
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
指定如果也设置了VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
,则图像视图可以与magFilter
或minFilter
设置为VK_FILTER_LINEAR
或mipmapMode
设置为VK_SAMPLER_MIPMAP_MODE_LINEAR
的采样器一起使用。如果也设置了VK_FORMAT_FEATURE_BLIT_SRC_BIT
,则图像可以用作vkCmdBlitImage2
和vkCmdBlitImage
的srcImage
,并且filter
为VK_FILTER_LINEAR
。此位必须仅对同时也支持VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
或VK_FORMAT_FEATURE_BLIT_SRC_BIT
的格式公开。如果查询的格式是深度/模板格式,则此位仅指定此格式的图像的深度方面(而不是模板方面)支持线性滤波,并且无论采样器中是否启用了深度比较,都支持深度方面的线性滤波。在支持深度比较的情况下,无论是否存在此位,都可能进行线性滤波,但如果不存在此位,则滤波后的值可能以与线性滤波的正常规则不同的实现相关方式计算。结果值必须在 [0,1] 范围内,并且应该与比较通过或失败的次数成比例或加权平均值。
-
VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
指定一个图像可以用作复制命令的源图像。如果应用程序的apiVersion
是 Vulkan 1.0 并且不支持VK_KHR_maintenance1
,则当格式特性标志不为 0 时,隐含设置VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
。 -
VK_FORMAT_FEATURE_TRANSFER_DST_BIT
指定一个图像可以用作复制命令和清除命令的目标图像。如果应用程序的apiVersion
是 Vulkan 1.0 并且不支持VK_KHR_maintenance1
,则当格式特性标志不为 0 时,隐含设置VK_FORMAT_FEATURE_TRANSFER_DST_BIT
。 -
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
指定VkImage
可以用作具有最小或最大 VkSamplerReductionMode 的采样图像。此位必须仅对同时也支持VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
的格式公开。 -
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
指定VkImage
可以与magFilter
或minFilter
设置为VK_FILTER_CUBIC_EXT
的采样器一起使用,或者作为filter
设置为VK_FILTER_CUBIC_EXT
的 blit 的源图像。此位必须仅对同时也支持VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
的格式公开。如果查询的格式是深度/模板格式,则仅指定深度方面是可立方体滤波的。 -
VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT
指定应用程序可以使用此格式作为源定义 采样器 Y′CBCR 转换,并且此格式的图像可以与xChromaOffset
和/或yChromaOffset
为VK_CHROMA_LOCATION_MIDPOINT
的 VkSamplerYcbcrConversionCreateInfo 一起使用。否则,xChromaOffset
和yChromaOffset
必须都为VK_CHROMA_LOCATION_COSITED_EVEN
。如果格式不包含色度下采样(它不是 “422” 或 “420” 格式),但实现支持此格式的采样器 Y′CBCR 转换,则实现必须设置VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT
。 -
VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT
指定应用程序可以使用此格式作为源定义 采样器 Y′CBCR 转换,并且此格式的图像可以与xChromaOffset
和/或yChromaOffset
为VK_CHROMA_LOCATION_COSITED_EVEN
的 VkSamplerYcbcrConversionCreateInfo 一起使用。否则,xChromaOffset
和yChromaOffset
必须都为VK_CHROMA_LOCATION_MIDPOINT
。如果既没有设置VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT
也没有设置VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT
,则应用程序必须不使用此格式作为源来定义 采样器 Y′CBCR 转换。 -
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
指定应用程序可以使用此格式作为源定义 采样器 Y′CBCR 转换,并且chromaFilter
设置为VK_FILTER_LINEAR
。 -
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
指定该格式可以具有不同的色度、最小和最大滤波器。 -
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
指定重建是显式的,如 色度重建 中所述。如果不存在此位,则默认情况下重建是隐式的。 -
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
指定可以通过将 VkSamplerYcbcrConversionCreateInfo::forceExplicitReconstruction
设置为VK_TRUE
来强制显式重建。如果查询的格式支持VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
,则它必须也支持VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
。 -
VK_FORMAT_FEATURE_DISJOINT_BIT
指定多平面图像在创建时可以设置VK_IMAGE_CREATE_DISJOINT_BIT
。对于单平面格式,实现必须不设置VK_FORMAT_FEATURE_DISJOINT_BIT
。 -
VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT
指定图像视图可以用作片段密度图附件。 -
VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
指定图像视图可以用作片段着色率附件。 对于数值格式不是UINT
的格式,实现必须不设置此特性,也不应将其设置为缓冲区特性。 -
VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR
指定具有此格式的图像视图可以用作视频解码操作中的解码输出图片。 -
VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR
指定具有此格式的图像视图可以用作视频解码操作中的输出重建图片或输入参考图片。 -
VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR
指定具有此格式的图像视图可以用作视频编码操作中的编码输入图片。 -
VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR
指定具有此格式的图像视图可以用作视频编码操作中的输出重建图片或输入参考图片。特定的视频配置文件可能对视频编码操作使用的图像视图对应的格式和其他图像创建参数有额外的限制,这些限制可以使用 vkGetPhysicalDeviceVideoFormatPropertiesKHR 命令进行枚举。
以下位可能在 bufferFeatures
中设置,指定通过查询的 vkGetPhysicalDeviceFormatProperties::format
创建的 缓冲区或 缓冲区视图支持的特性。
-
VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
指定该格式可以用于创建可以绑定到VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
描述符的缓冲区视图。 -
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
指定该格式可以用于创建可以绑定到VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
描述符的缓冲区视图。 -
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
指定在此格式下,VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
支持原子操作。 -
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT
指定该格式可以用作顶点属性格式 (VkVertexInputAttributeDescription
::format
)。 -
VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR
指定该格式可以在创建加速结构时用作顶点格式 (VkAccelerationStructureGeometryTrianglesDataKHR
::vertexFormat
)。此格式可以在执行主机加速结构构建时用作主机内存中的顶点格式。
|
// Provided by VK_VERSION_1_0
typedef VkFlags VkFormatFeatureFlags;
VkFormatFeatureFlags
是一种位掩码类型,用于设置零个或多个 VkFormatFeatureFlagBits 的掩码。
要查询物理设备属性支持的格式功能,请调用
// Provided by VK_VERSION_1_1
void vkGetPhysicalDeviceFormatProperties2(
VkPhysicalDevice physicalDevice,
VkFormat format,
VkFormatProperties2* pFormatProperties);
或等效命令
// Provided by VK_KHR_get_physical_device_properties2
void vkGetPhysicalDeviceFormatProperties2KHR(
VkPhysicalDevice physicalDevice,
VkFormat format,
VkFormatProperties2* pFormatProperties);
-
physicalDevice
是从中查询格式属性的物理设备。 -
format
是要查询其属性的格式。 -
pFormatProperties
是一个指向 VkFormatProperties2 结构的指针,其中返回format
的物理设备属性。
vkGetPhysicalDeviceFormatProperties2
的行为类似于 vkGetPhysicalDeviceFormatProperties,它能够在输出结构的 pNext
链中返回扩展信息。
VkFormatProperties2
结构定义如下:
// Provided by VK_VERSION_1_1
typedef struct VkFormatProperties2 {
VkStructureType sType;
void* pNext;
VkFormatProperties formatProperties;
} VkFormatProperties2;
或等效项
// Provided by VK_KHR_get_physical_device_properties2
typedef VkFormatProperties2 VkFormatProperties2KHR;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
formatProperties
是一个 VkFormatProperties 结构,描述了请求格式支持的特性。
要获取与 VkFormat 兼容的 Linux DRM 格式修改器列表,请将 VkDrmFormatModifierPropertiesListEXT 结构添加到 VkFormatProperties2 的 pNext
链中。
// Provided by VK_EXT_image_drm_format_modifier
typedef struct VkDrmFormatModifierPropertiesListEXT {
VkStructureType sType;
void* pNext;
uint32_t drmFormatModifierCount;
VkDrmFormatModifierPropertiesEXT* pDrmFormatModifierProperties;
} VkDrmFormatModifierPropertiesListEXT;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
drmFormatModifierCount
是一个 inout 参数,与兼容format
的修改器数量有关,如下所述。 -
pDrmFormatModifierProperties
是NULL
或指向 VkDrmFormatModifierPropertiesEXT 结构数组的指针。
如果 pDrmFormatModifierProperties
为 NULL
,则函数在 drmFormatModifierCount
中返回与查询的 format
兼容的修改器数量。否则,应用程序必须将 drmFormatModifierCount
设置为数组 pDrmFormatModifierProperties
的长度;该函数将最多写入 drmFormatModifierCount
个元素到数组中,并在 drmFormatModifierCount
中返回写入的元素数量。
在数组 pDrmFormatModifierProperties
的元素中,每个返回的 drmFormatModifier
必须是唯一的。
VkDrmFormatModifierPropertiesEXT 结构描述了当 VkFormat 与 Linux DRM 格式修改器组合时 VkFormat 的属性。这些属性,如 VkFormatProperties2 的属性一样,独立于任何特定的图像。
VkDrmFormatModifierPropertiesEXT 结构定义如下:
// Provided by VK_EXT_image_drm_format_modifier
typedef struct VkDrmFormatModifierPropertiesEXT {
uint64_t drmFormatModifier;
uint32_t drmFormatModifierPlaneCount;
VkFormatFeatureFlags drmFormatModifierTilingFeatures;
} VkDrmFormatModifierPropertiesEXT;
-
drmFormatModifier
是一个 *Linux DRM 格式修改器*。 -
drmFormatModifierPlaneCount
是使用format
和drmFormatModifier
创建的任何图像中的内存平面的数量。如下所述,图像的内存平面计数与其格式平面计数不同。 -
drmFormatModifierTilingFeatures
是一个 VkFormatFeatureFlagBits 的位掩码,表示使用format
和drmFormatModifier
创建的任何图像支持的特性。
返回的 drmFormatModifierTilingFeatures
必须至少包含一个位。
实现 必须 不在 drmFormatModifier
中返回 DRM_FORMAT_MOD_INVALID
。
图像的内存平面计数(由 drmFormatModifierPlaneCount
返回)与其格式平面计数(在 多平面 Y′CBCR 格式的意义上)不同。在 VkImageAspectFlags 中,每个 VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT
表示一个内存平面,而每个 VK_IMAGE_ASPECT_PLANE_i_BIT
表示一个格式平面。
图像的格式平面集合是将图像的内容划分为可分离的格式组件组的有序分区。有序分区编码在每个 VkFormat 的名称中。例如,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM
包含两个格式平面;第一个平面包含绿色分量,第二个平面包含蓝色分量和红色分量。如果格式名称不包含 PLANE
,则该格式包含单个平面;例如,VK_FORMAT_R8G8B8A8_UNORM
。某些命令,例如 vkCmdCopyBufferToImage,不会对图像中的所有格式分量进行操作,而是仅对应用程序显式选择的格式平面进行操作,并独立地对每个格式平面进行操作。
图像的内存平面集合是将图像的内存而不是图像的内容划分为有序的分区。每个内存平面都是一个连续的内存范围。图像的内存平面的并集不一定是连续的。
如果图像是线性的,则内存平面和格式平面的分区是相同的。因此,如果返回的 drmFormatModifier
是 DRM_FORMAT_MOD_LINEAR
,则 drmFormatModifierPlaneCount
必须等于格式平面计数,并且 drmFormatModifierTilingFeatures
必须与同一 pNext
链中返回的 VkFormatProperties2::linearTilingFeatures
相同。
如果图像是非线性的,则将图像的内存划分为内存平面的分区是特定于实现的,并且 可能 与将图像的内容划分为格式平面的分区无关。例如,考虑一个图像,其 format
为 VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM
,tiling
为 VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
,其 drmFormatModifier
不是 DRM_FORMAT_MOD_LINEAR
,并且 flags
缺少 VK_IMAGE_CREATE_DISJOINT_BIT
。该图像有 3 个格式平面,并且像 vkCmdCopyBufferToImage 这样的命令独立地作用于每个格式平面,就像每个格式平面的数据与其它平面的数据是可分离的一样。在直接实现中,实现 可能 将图像的内容存储在 3 个相邻的内存平面中,其中每个内存平面与一个格式平面完全对应。但是,实现 可能 也将图像的内容存储在单个内存平面中,其中所有格式分量都使用实现私有的块压缩格式进行组合;或者实现 可能 使用实现私有的分片技术将图像的内容存储在 7 个相邻的内存平面的集合中。因为图像是非线性的且不分离的,所以在选择图像在内存中的放置位置时,实现具有很大的自由度。
只有当 API 对 drmFormatModifierPlaneCount
指定了明确的要求时,内存平面计数才适用于函数参数和结构。在所有其他情况下,内存平面计数将被忽略。
可以通过将 VkDrmFormatModifierPropertiesList2EXT 结构添加到 VkFormatProperties2 的 pNext
链中,来获取与 VkFormat 兼容的 Linux DRM 格式修饰符的列表。
// Provided by VK_EXT_image_drm_format_modifier with VK_KHR_format_feature_flags2 or VK_VERSION_1_3
typedef struct VkDrmFormatModifierPropertiesList2EXT {
VkStructureType sType;
void* pNext;
uint32_t drmFormatModifierCount;
VkDrmFormatModifierProperties2EXT* pDrmFormatModifierProperties;
} VkDrmFormatModifierPropertiesList2EXT;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
drmFormatModifierCount
是一个 inout 参数,与兼容format
的修改器数量有关,如下所述。 -
pDrmFormatModifierProperties
可以是NULL
,也可以是指向 VkDrmFormatModifierProperties2EXT 结构数组的指针。
如果 pDrmFormatModifierProperties
为 NULL
,则在 drmFormatModifierCount
中返回与查询的 format
兼容的修饰符的数量。否则,应用程序 必须 将 drmFormatModifierCount
设置为数组 pDrmFormatModifierProperties
的长度;该函数将最多将 drmFormatModifierCount
个元素写入数组,并在 drmFormatModifierCount
中返回写入的元素数量。
在数组 pDrmFormatModifierProperties
的元素中,每个返回的 drmFormatModifier
必须是唯一的。
在数组 pDrmFormatModifierProperties
中的元素中,drmFormatModifierTilingFeatures
中报告的位 必须 包括 VkDrmFormatModifierPropertiesListEXT
::pDrmFormatModifierProperties
对应元素中报告的位。
VkDrmFormatModifierProperties2EXT 结构描述了 VkFormat 与 Linux DRM 格式修饰符 组合时,该格式的属性。这些属性,如 VkFormatProperties2 的属性一样,独立于任何特定的图像。
VkDrmFormatModifierPropertiesEXT 结构定义如下:
// Provided by VK_EXT_image_drm_format_modifier with VK_KHR_format_feature_flags2 or VK_VERSION_1_3
typedef struct VkDrmFormatModifierProperties2EXT {
uint64_t drmFormatModifier;
uint32_t drmFormatModifierPlaneCount;
VkFormatFeatureFlags2 drmFormatModifierTilingFeatures;
} VkDrmFormatModifierProperties2EXT;
-
drmFormatModifier
是一个 *Linux DRM 格式修改器*。 -
drmFormatModifierPlaneCount
是使用format
和drmFormatModifier
创建的任何图像中的内存平面的数量。如下所述,图像的内存平面计数与其格式平面计数不同。 -
drmFormatModifierTilingFeatures
是一个 VkFormatFeatureFlagBits2 的位掩码,表示使用format
和drmFormatModifier
创建的任何图像支持的特性。
要查询作为物理设备属性的受支持的格式扩展特性,请将 VkFormatProperties3 结构添加到 VkFormatProperties2 的 pNext
链中。
VkFormatProperties3 结构的定义如下
// Provided by VK_VERSION_1_3
typedef struct VkFormatProperties3 {
VkStructureType sType;
void* pNext;
VkFormatFeatureFlags2 linearTilingFeatures;
VkFormatFeatureFlags2 optimalTilingFeatures;
VkFormatFeatureFlags2 bufferFeatures;
} VkFormatProperties3;
或等效项
// Provided by VK_KHR_format_feature_flags2
typedef VkFormatProperties3 VkFormatProperties3KHR;
-
linearTilingFeatures
是一个 VkFormatFeatureFlagBits2 的位掩码,指定使用VK_IMAGE_TILING_LINEAR
的tiling
参数创建的图像所支持的特性。 -
optimalTilingFeatures
是一个 VkFormatFeatureFlagBits2 的位掩码,指定使用VK_IMAGE_TILING_OPTIMAL
的tiling
参数创建的图像所支持的特性。 -
bufferFeatures
是一个 VkFormatFeatureFlagBits2 的位掩码,指定缓冲区支持的特性。
linearTilingFeatures
、optimalTilingFeatures
和 bufferFeatures
中报告的位 必须 包括 VkFormatProperties2
::formatProperties
对应字段中报告的位。
可以在 VkFormatProperties3 特性 linearTilingFeatures
、optimalTilingFeatures
和 bufferFeatures
中设置的位是
// Provided by VK_VERSION_1_3
// Flag bits for VkFormatFeatureFlagBits2
typedef VkFlags64 VkFormatFeatureFlagBits2;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT = 0x00000001ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT = 0x00000002ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT = 0x00000010ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT = 0x00000040ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT = 0x00000080ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT = 0x00000400ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT = 0x00000800ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT = 0x00004000ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT = 0x00008000ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT = 0x00400000ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT = 0x00800000ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT = 0x80000000ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT = 0x100000000ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT = 0x200000000ULL;
// Provided by VK_VERSION_1_3
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT = 0x00002000ULL;
// Provided by VK_VERSION_1_4
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT = 0x400000000000ULL;
// Provided by VK_KHR_video_decode_queue with VK_KHR_format_feature_flags2 or VK_VERSION_1_3
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000ULL;
// Provided by VK_KHR_video_decode_queue with VK_KHR_format_feature_flags2 or VK_VERSION_1_3
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000ULL;
// Provided by VK_KHR_acceleration_structure with VK_KHR_format_feature_flags2 or VK_VERSION_1_3
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000ULL;
// Provided by VK_EXT_fragment_density_map with VK_KHR_format_feature_flags2 or VK_VERSION_1_3
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000ULL;
// Provided by VK_KHR_fragment_shading_rate with VK_KHR_format_feature_flags2 or VK_VERSION_1_3
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000ULL;
// Provided by VK_EXT_host_image_copy
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT = 0x400000000000ULL;
// Provided by VK_KHR_video_encode_queue with VK_KHR_format_feature_flags2 or VK_VERSION_1_3
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000ULL;
// Provided by VK_KHR_video_encode_queue with VK_KHR_format_feature_flags2 or VK_VERSION_1_3
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR = 0x10000000ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR = 0x00000001ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR = 0x00000002ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR = 0x00000004ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR = 0x00000008ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR = 0x00000010ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR = 0x00000020ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR = 0x00000040ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR = 0x00000080ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR = 0x00000100ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR = 0x00000200ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR = 0x00000400ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR = 0x00000800ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR = 0x00001000ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR = 0x00004000ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR = 0x00008000ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 0x00020000ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 0x00040000ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 0x00080000ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 0x00100000ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 0x00200000ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR = 0x00400000ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR = 0x00800000ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR = 0x80000000ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR = 0x100000000ULL;
// Provided by VK_KHR_format_feature_flags2
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR = 0x200000000ULL;
// Provided by VK_KHR_format_feature_flags2 with VK_VERSION_1_2 or VK_EXT_sampler_filter_minmax
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR = 0x00010000ULL;
// Provided by VK_KHR_format_feature_flags2 with VK_EXT_filter_cubic or VK_IMG_filter_cubic
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 0x00002000ULL;
// Provided by VK_NV_linear_color_attachment with VK_KHR_format_feature_flags2 or VK_VERSION_1_3
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV = 0x4000000000ULL;
// Provided by VK_QCOM_image_processing with VK_KHR_format_feature_flags2 or VK_VERSION_1_3
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM = 0x400000000ULL;
// Provided by VK_QCOM_image_processing with VK_KHR_format_feature_flags2 or VK_VERSION_1_3
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM = 0x800000000ULL;
// Provided by VK_QCOM_image_processing with VK_KHR_format_feature_flags2 or VK_VERSION_1_3
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM = 0x1000000000ULL;
// Provided by VK_QCOM_image_processing with VK_KHR_format_feature_flags2 or VK_VERSION_1_3
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM = 0x2000000000ULL;
// Provided by VK_NV_optical_flow
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV = 0x10000000000ULL;
// Provided by VK_NV_optical_flow
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV = 0x20000000000ULL;
// Provided by VK_NV_optical_flow
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV = 0x40000000000ULL;
// Provided by VK_KHR_video_encode_quantization_map
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 0x2000000000000ULL;
// Provided by VK_KHR_video_encode_quantization_map
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR = 0x4000000000000ULL;
或等效项
// Provided by VK_KHR_format_feature_flags2
typedef VkFormatFeatureFlagBits2 VkFormatFeatureFlagBits2KHR;
以下位 可能 在 linearTilingFeatures
和 optimalTilingFeatures
中设置,表示使用查询的 vkGetPhysicalDeviceFormatProperties2::format
创建的图像或图像视图或采样器 Y′CBCR 转换对象支持这些特性
-
VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT
指定图像视图可以被采样。 -
VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT
指定图像视图可以用作存储图像。 -
VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT
指定图像视图可以用作支持原子操作的存储图像。 -
VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT
指定图像视图可以用作帧缓冲颜色附件和输入附件。 -
VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT
指定图像视图可以用作支持混合的帧缓冲颜色附件。 -
VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT
指定图像视图可以用作帧缓冲深度/模板附件和输入附件。 -
VK_FORMAT_FEATURE_2_BLIT_SRC_BIT
指定图像可以用作 vkCmdBlitImage2 和 vkCmdBlitImage 的srcImage
。 -
VK_FORMAT_FEATURE_2_BLIT_DST_BIT
指定图像可以用作 vkCmdBlitImage2 和 vkCmdBlitImage 的dstImage
。 -
VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT
指定如果同时设置了VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT
,则图像视图可以与magFilter
或minFilter
设置为VK_FILTER_LINEAR
,或者mipmapMode
设置为VK_SAMPLER_MIPMAP_MODE_LINEAR
的采样器一起使用。如果还设置了VK_FORMAT_FEATURE_2_BLIT_SRC_BIT
,则图像可以用作 vkCmdBlitImage2 和vkCmdBlitImage
的srcImage
,并且filter
为VK_FILTER_LINEAR
。此位必须仅针对也支持VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT
或VK_FORMAT_FEATURE_2_BLIT_SRC_BIT
的格式公开。如果正在查询的格式是深度/模板格式,则此位仅指定此格式的图像的深度方面(而不是模板方面)支持线性滤波。在支持深度比较的地方,无论是否存在此位,可能会进行线性滤波,但是当不存在此位时,滤波后的值可能以与线性滤波的正常规则不同的、与实现相关的方式计算。结果值必须在 [0,1] 范围内,并且应该与比较通过或失败的次数成比例,或为其加权平均值。
-
VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT
指定图像可以用作复制命令的源图像。 -
VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT
指定图像可以用作复制命令和清除命令的目标图像。 -
VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT
指定VkImage
可以用作具有最小或最大 VkSamplerReductionMode 的采样图像。此位必须仅针对也支持VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT
的格式公开。 -
VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT
指定VkImage
可以与magFilter
或minFilter
设置为VK_FILTER_CUBIC_EXT
的采样器一起使用,或者作为 blit 的源图像,并且filter
设置为VK_FILTER_CUBIC_EXT
。此位必须仅针对也支持VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT
的格式公开。如果正在查询的格式是深度/模板格式,则此仅指定深度方面是可立方体滤波的。 -
VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT
指定应用程序可以使用此格式作为源来定义采样器 Y′CBCR 转换,并且此格式的图像可以与 VkSamplerYcbcrConversionCreateInfo 的xChromaOffset
和/或yChromaOffset
为VK_CHROMA_LOCATION_MIDPOINT
一起使用。否则,xChromaOffset
和yChromaOffset
必须均为VK_CHROMA_LOCATION_COSITED_EVEN
。如果格式不包含色度下采样(它不是“422”或“420”格式),但是实现支持此格式的采样器 Y′CBCR 转换,则实现必须设置VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT
。 -
VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT
指定应用程序可以使用此格式作为源来定义采样器 Y′CBCR 转换,并且此格式的图像可以与 VkSamplerYcbcrConversionCreateInfo 的xChromaOffset
和/或yChromaOffset
为VK_CHROMA_LOCATION_COSITED_EVEN
一起使用。否则,xChromaOffset
和yChromaOffset
必须均为VK_CHROMA_LOCATION_MIDPOINT
。如果未设置VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT
和VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT
,则应用程序必须不使用此格式作为源定义采样器 Y′CBCR 转换。 -
VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
指定应用程序可以使用此格式作为源,并使用chromaFilter
设置为VK_FILTER_LINEAR
来定义采样器 Y′CBCR 转换。 -
VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
指定该格式可以具有不同的色度、最小和最大滤波器。 -
VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
指定重建是显式的,如色度重建中所述。如果不存在此位,则默认情况下重建是隐式的。 -
VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
指定可以通过将 VkSamplerYcbcrConversionCreateInfo::forceExplicitReconstruction
设置为VK_TRUE
来强制使重建显式。如果正在查询的格式支持VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
,则它必须也支持VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
。 -
VK_FORMAT_FEATURE_2_DISJOINT_BIT
指定多平面图像在图像创建期间可以设置VK_IMAGE_CREATE_DISJOINT_BIT
。实现必须不为单平面格式设置VK_FORMAT_FEATURE_2_DISJOINT_BIT
。 -
VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT
指定图像视图可以用作片段密度图附件。 -
VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
指定图像视图可以用作片段着色率附件。实现必须不能为数值格式不是UINT
的格式设置此特性,也不能将其设置为缓冲区特性。 -
VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR
指定使用此格式的图像视图可以在视频解码操作中用作解码输出图像。 -
VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR
指定使用此格式的图像视图可以在视频解码操作中用作输出的重建图像或输入的参考图像。 -
VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR
指定使用此格式的图像视图可以在视频编码操作中用作编码输入图像。 -
VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR
指定使用此格式的图像视图可以在视频编码操作中用作输出的重建图像或输入的参考图像。特定的视频配置文件可能对视频编码操作使用的图像视图对应的格式和其他图像创建参数有额外的限制,这些限制可以使用 vkGetPhysicalDeviceVideoFormatPropertiesKHR 命令进行枚举。
-
VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
指定使用此格式创建的图像视图或缓冲区视图可以分别用作存储图像或存储纹理缓冲区,用于读取操作,而无需指定格式。 -
VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
指定使用此格式创建的图像视图或缓冲区视图可以分别用作存储图像或存储纹理缓冲区,用于写入操作,而无需指定格式。 -
VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
指定使用此格式创建的图像视图可以用于OpImage*Dref*
指令执行的深度比较。 -
VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV
指定该格式支持作为可渲染的线性颜色附件。此位将为linearTilingFeatures
中可渲染的颜色格式设置。这必须不能在optimalTilingFeatures
或bufferFeatures
成员中设置。 -
VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
指定使用此格式创建的图像视图可以用作权重图像采样操作的权重图像输入。 -
VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
指定使用此格式创建的图像视图可以在权重图像采样操作中进行采样。 -
VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
指定使用此格式创建的图像视图可以在块匹配操作中使用。 -
VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
指定使用此格式创建的图像视图可以在盒式滤波采样操作中进行采样。 -
VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT
指定一个图像可以使用VK_IMAGE_USAGE_HOST_TRANSFER_BIT
创建。 -
VK_FORMAT_FEATURE_2_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR
指定使用此格式的图像视图可以在视频编码操作中用作量化增量映射。 -
VK_FORMAT_FEATURE_2_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR
指定使用此格式的图像视图可以在视频编码操作中用作强调映射。视频编码量化映射具有特定于与之一起使用的视频配置文件的其他限制,这些限制可以使用vkGetPhysicalDeviceVideoFormatPropertiesKHR 命令枚举。
以下位可能在 bufferFeatures
中设置,指定这些特性受使用查询的vkGetPhysicalDeviceFormatProperties2::format
创建的缓冲区或缓冲区视图支持
-
VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT
指定该格式可以用于创建可以绑定到VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
描述符的缓冲区视图。 -
VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT
指定该格式可以用于创建可以绑定到VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
描述符的缓冲区视图。 -
VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
指定在此格式下,VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
支持原子操作。 -
VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT
指定该格式可以用作顶点属性格式 (VkVertexInputAttributeDescription
::format
)。 -
VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR
指定该格式可以在创建加速结构时用作顶点格式 (VkAccelerationStructureGeometryTrianglesDataKHR
::vertexFormat
)。在执行主机加速结构构建时,此格式也可以用作主机内存中的顶点格式。 -
VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
指定使用此格式创建的缓冲区视图可以用作存储纹理缓冲区,用于读取操作,而无需指定格式。 -
VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
指定使用此格式创建的缓冲区视图可以用作存储纹理缓冲区,用于写入操作,而无需指定格式。 -
VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV
指定使用此格式的图像视图可以用作光流操作的输入或参考。 -
VK_FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV
指定使用此格式的图像视图可以用作光流操作的流矢量图(作为提示、输出或全局流)。 -
VK_FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV
指定使用此格式的图像视图可以用作光流操作的输出成本图。
// Provided by VK_VERSION_1_3
typedef VkFlags64 VkFormatFeatureFlags2;
或等效项
// Provided by VK_KHR_format_feature_flags2
typedef VkFormatFeatureFlags2 VkFormatFeatureFlags2KHR;
VkFormatFeatureFlags2
是一个位掩码类型,用于设置零个或多个 VkFormatFeatureFlagBits2 的掩码。
要查询具有 VkFormat 附件的 子通道解析 操作的性能特征,请将 VkSubpassResolvePerformanceQueryEXT 结构添加到 VkFormatProperties2 的 pNext
链中。
VkSubpassResolvePerformanceQueryEXT 结构的定义如下:
// Provided by VK_EXT_multisampled_render_to_single_sampled
typedef struct VkSubpassResolvePerformanceQueryEXT {
VkStructureType sType;
void* pNext;
VkBool32 optimal;
} VkSubpassResolvePerformanceQueryEXT;
-
sType
是一个 VkStructureType 值,用于标识此结构。 -
pNext
是NULL
或指向扩展此结构的结构的指针。 -
optimal
指定子通道解析操作以最佳方式执行。
如果对于某个 VkFormat,optimal
为 VK_FALSE
,则在此格式的多采样附件上使用子通道解析操作可能会产生额外的开销,包括额外的内存带宽使用和更高的内存占用。如果具有此类格式的附件在 多采样渲染到单采样 子通道中使用,则额外的内存和内存带宽使用可能会抵消使用 VK_EXT_multisampled_render_to_single_sampled
扩展的好处。
潜在的格式特性
某些 有效使用条件 取决于 VkImage 支持的格式特性,而其 VkImageTiling 是未知的。在这种情况下,无法确定 VkImage 支持的确切 VkFormatFeatureFlagBits,因此有效使用条件以 VkImage 格式的潜在格式特性来表达。
VkFormat 的潜在格式特性定义如下:
-
当 VkImageTiling 为
VK_IMAGE_TILING_OPTIMAL
、VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
或VK_IMAGE_TILING_LINEAR
时,支持的 VkFormatFeatureFlagBits 和 VkFormatFeatureFlagBits2 的并集,如果 VkFormat 不是VK_FORMAT_UNDEFINED
-
如果 VkFormat 是
VK_FORMAT_UNDEFINED
,则有效的外部格式的 VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
和 VkAndroidHardwareBufferFormatProperties2ANDROID::formatFeatures
-
如果 VkFormat 是
VK_FORMAT_UNDEFINED
,则有效的外部格式的 VkScreenBufferFormatPropertiesQNX::formatFeatures
必需的格式支持
实现必须在列出的格式上至少支持以下特性集。对于图像,除非另有说明,否则这些特性必须在每个 VkImageType (包括数组和立方体变体)中都受支持。这些特性在现有格式上受支持,无需声明扩展或显式启用它们。使用 vkGetPhysicalDeviceFormatProperties 命令查询此处列出的要求之外的附加功能支持。
除非以下另有排除,否则只要这些标志值在其他方面被允许,所有 VkImageCreateFlags 值都支持必需的格式。 |
下表显示了每种格式必须支持哪些特性位。需要支持 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
的格式也必须支持 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
和 VK_FORMAT_FEATURE_TRANSFER_DST_BIT
。
✓ |
此特性必须在指定的格式上支持 |
† |
此特性必须在至少某些指定的格式上支持,更多信息在出现该符号的表中 |
‡ |
此特性必须在某些注意事项或前提条件下支持,更多信息在出现该符号的表中 |
§ |
此特性必须在某些注意事项或前提条件下支持,更多信息在出现该符号的表中 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
格式 |
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
✓ |
✓ |
✓ |
||||||||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||||||
|
|||||||||||||
|
† |
† |
† |
||||||||||
|
‡ |
‡ |
‡ |
||||||||||
如果 |
|||||||||||||
如果 |
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
格式 |
|||||||||||||
|
✓ |
✓ |
✓ |
‡ |
✓ |
✓ |
✓ |
✓ |
✓ |
||||
|
✓ |
✓ |
✓ |
‡ |
✓ |
✓ |
|||||||
|
|||||||||||||
|
|||||||||||||
|
✓ |
✓ |
‡ |
✓ |
✓ |
✓ |
✓ |
||||||
|
✓ |
✓ |
‡ |
✓ |
✓ |
✓ |
✓ |
||||||
|
|||||||||||||
|
✓ |
✓ |
✓ |
‡ |
✓ |
✓ |
✓ |
✓ |
✓ |
||||
|
✓ |
✓ |
✓ |
‡ |
✓ |
✓ |
|||||||
|
|||||||||||||
|
|||||||||||||
|
✓ |
✓ |
‡ |
✓ |
✓ |
✓ |
✓ |
||||||
|
✓ |
✓ |
‡ |
✓ |
✓ |
✓ |
✓ |
||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
如果 |
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
格式 |
|||||||||||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
||||||
|
|||||||||||||
|
|||||||||||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||||||
|
|||||||||||||
|
|||||||||||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
||||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
||||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
格式 |
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
✓ |
✓ |
✓ |
‡ |
✓ |
✓ |
✓ |
✓ |
✓ |
||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
✓ |
✓ |
‡ |
✓ |
✓ |
✓ |
|||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
如果 |
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
格式 |
|||||||||||||
|
‡ |
✓ |
|||||||||||
|
‡ |
✓ |
|||||||||||
|
|||||||||||||
|
|||||||||||||
|
✓ |
✓ |
‡ |
✓ |
✓ |
✓ |
✓ |
||||||
|
✓ |
✓ |
‡ |
✓ |
✓ |
✓ |
✓ |
||||||
|
✓ |
✓ |
✓ |
‡ |
✓ |
✓ |
✓ |
✓ |
✓ |
||||
|
‡ |
✓ |
|||||||||||
|
‡ |
✓ |
|||||||||||
|
|||||||||||||
|
|||||||||||||
|
✓ |
✓ |
‡ |
✓ |
✓ |
✓ |
✓ |
||||||
|
✓ |
✓ |
‡ |
✓ |
✓ |
✓ |
✓ |
||||||
|
✓ |
✓ |
✓ |
‡ |
§ |
✓ |
✓ |
✓ |
✓ |
✓ |
§ |
§ |
|
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
‡ |
✓ |
|||||||||||
|
‡ |
✓ |
|||||||||||
|
|||||||||||||
|
|||||||||||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||||
|
✓ |
✓ |
✓ |
✓ |
§ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
§ |
|
如果 |
|||||||||||||
如果 |
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
格式 |
|||||||||||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||
|
✓ |
✓ |
✓ |
† |
✓ |
✓ |
✓ |
✓ |
✓ |
||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||||
|
✓ |
||||||||||||
|
✓ |
||||||||||||
|
✓ |
||||||||||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||||
|
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|||||
如果 |
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
格式 |
|||||||||||||
|
† |
† |
|||||||||||
|
† |
† |
|||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
|||||||||||||
|
✓ |
✓ |
✓ |
‡ |
✓ |
||||||||
|
✓ |
✓ |
✓ |
||||||||||
如果 |
|||||||||||||
如果支持 |
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
格式 |
|||||||||||||
|
✓ |
✓ |
✓ |
||||||||||
|
† |
||||||||||||
|
✓ |
✓ |
† |
||||||||||
|
|||||||||||||
|
|||||||||||||
|
† |
||||||||||||
|
† |
||||||||||||
对于 |
|||||||||||||
|
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
格式 |
|||||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
对于以下至少一个表中的所有格式,在 |
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
格式 |
|||||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
对于以下至少一个表中的所有格式,在 |
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
|
↓ |
||||||||||||
格式 |
|||||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
|
† |
† |
† |
||||||||||
对于以下至少一个表中的所有格式,在 |
如果支持三次滤波,则对于以下图像视图类型,**必须**支持 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
-
VK_IMAGE_VIEW_TYPE_2D
-
VK_IMAGE_VIEW_TYPE_2D_ARRAY
对于以下格式
-
VK_FORMAT_R4G4_UNORM_PACK8
-
VK_FORMAT_R4G4B4A4_UNORM_PACK16
-
VK_FORMAT_B4G4R4A4_UNORM_PACK16
-
VK_FORMAT_R5G6B5_UNORM_PACK16
-
VK_FORMAT_B5G6R5_UNORM_PACK16
-
VK_FORMAT_R5G5B5A1_UNORM_PACK16
-
VK_FORMAT_B5G5R5A1_UNORM_PACK16
-
VK_FORMAT_A1R5G5B5_UNORM_PACK16
-
VK_FORMAT_R8_UNORM
-
VK_FORMAT_R8_SNORM
-
VK_FORMAT_R8_SRGB
-
VK_FORMAT_R8G8_UNORM
-
VK_FORMAT_R8G8_SNORM
-
VK_FORMAT_R8G8_SRGB
-
VK_FORMAT_R8G8B8_UNORM
-
VK_FORMAT_R8G8B8_SNORM
-
VK_FORMAT_R8G8B8_SRGB
-
VK_FORMAT_B8G8R8_UNORM
-
VK_FORMAT_B8G8R8_SNORM
-
VK_FORMAT_B8G8R8_SRGB
-
VK_FORMAT_R8G8B8A8_UNORM
-
VK_FORMAT_R8G8B8A8_SNORM
-
VK_FORMAT_R8G8B8A8_SRGB
-
VK_FORMAT_B8G8R8A8_UNORM
-
VK_FORMAT_B8G8R8A8_SNORM
-
VK_FORMAT_B8G8R8A8_SRGB
-
VK_FORMAT_A8B8G8R8_UNORM_PACK32
-
VK_FORMAT_A8B8G8R8_SNORM_PACK32
-
VK_FORMAT_A8B8G8R8_SRGB_PACK32
如果支持 ETC 压缩格式,则对于以下图像视图类型,**必须**支持 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
-
VK_IMAGE_VIEW_TYPE_2D
-
VK_IMAGE_VIEW_TYPE_2D_ARRAY
对于以下附加格式
-
VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK
-
VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK
-
VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK
-
VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK
-
VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK
-
VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK
如果对任何其他格式支持三次滤波,则对于这些格式,**必须**支持以下图像视图类型
-
VK_IMAGE_VIEW_TYPE_2D
-
VK_IMAGE_VIEW_TYPE_2D_ARRAY
要与 VkImageView
结合使用,并且 subresourceRange.aspectMask
等于 VK_IMAGE_ASPECT_COLOR_BIT
,对于以下格式,**必须**启用 采样器 Y′CBCR 转换
|
↓ |
||||||||||
|
↓ |
||||||||||
|
↓ |
||||||||||
|
↓ |
||||||||||
|
↓ |
||||||||||
|
↓ |
||||||||||
|
↓ |
||||||||||
|
↓ |
||||||||||
|
↓ |
||||||||||
|
↓ |
||||||||||
格式 |
平面 |
||||||||||
|
1 |
||||||||||
|
1 |
||||||||||
|
3 |
† |
† |
† |
† |
||||||
|
2 |
† |
† |
† |
† |
||||||
|
3 |
||||||||||
|
2 |
||||||||||
|
3 |
||||||||||
|
1 |
||||||||||
|
1 |
||||||||||
|
1 |
||||||||||
|
3 |
||||||||||
|
2 |
||||||||||
|
3 |
||||||||||
|
2 |
||||||||||
|
3 |
||||||||||
|
1 |
||||||||||
|
1 |
||||||||||
|
1 |
||||||||||
|
3 |
||||||||||
|
2 |
||||||||||
|
3 |
||||||||||
|
2 |
||||||||||
|
3 |
||||||||||
|
1 |
||||||||||
|
1 |
||||||||||
|
3 |
||||||||||
|
2 |
||||||||||
|
3 |
||||||||||
|
2 |
||||||||||
|
3 |
||||||||||
|
2 |
||||||||||
|
2 |
||||||||||
|
2 |
||||||||||
|
2 |
||||||||||
如果 |
|||||||||||
如果启用了 VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT:: |
对于以上需要 采样器 Y′CBCR 转换的格式,实现不需要支持 VK_IMAGE_CREATE_SPARSE_BINDING_BIT
、VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
或 VK_IMAGE_CREATE_SPARSE_ALIASED_BIT
VkImageCreateFlags。要确定实现是否支持具有这些格式的稀疏图像创建标志,请使用 vkGetPhysicalDeviceImageFormatProperties 或 vkGetPhysicalDeviceImageFormatProperties2。
如果启用了 fragmentDensityMap
特性,则对于以下格式,**必须**支持 VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT
-
VK_FORMAT_R8G8_UNORM
如果支持 accelerationStructure
特性,则在 bufferFeatures
中**必须**支持以下格式的 VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR
-
VK_FORMAT_R32G32_SFLOAT
-
VK_FORMAT_R32G32B32_SFLOAT
-
VK_FORMAT_R16G16_SFLOAT
-
VK_FORMAT_R16G16B16A16_SFLOAT
-
VK_FORMAT_R16G16_SNORM
-
VK_FORMAT_R16G16B16A16_SNORM
如果支持 attachmentFragmentShadingRate
特性,则对于以下格式,**必须**支持 VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
-
VK_FORMAT_R8_UINT
如果支持 hostImageCopy
特性,并且在颜色格式的 optimalTilingFeatures
或 linearTilingFeatures
中支持 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
,则分别在 optimalTilingFeatures
或 linearTilingFeatures
中也**必须**支持 VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT
。
不具有着色器存储格式的格式
使用 Unknown
图像格式的存储图像或存储纹理缓冲区的设备级特性,shaderStorageImageReadWithoutFormat
和 shaderStorageImageWriteWithoutFormat
,仅适用于以下格式
-
VK_FORMAT_R8G8B8A8_UNORM
-
VK_FORMAT_R8G8B8A8_SNORM
-
VK_FORMAT_R8G8B8A8_UINT
-
VK_FORMAT_R8G8B8A8_SINT
-
VK_FORMAT_R32_UINT
-
VK_FORMAT_R32_SINT
-
VK_FORMAT_R32_SFLOAT
-
VK_FORMAT_R32G32_UINT
-
VK_FORMAT_R32G32_SINT
-
VK_FORMAT_R32G32_SFLOAT
-
VK_FORMAT_R32G32B32A32_UINT
-
VK_FORMAT_R32G32B32A32_SINT
-
VK_FORMAT_R32G32B32A32_SFLOAT
-
VK_FORMAT_R16G16B16A16_UINT
-
VK_FORMAT_R16G16B16A16_SINT
-
VK_FORMAT_R16G16B16A16_SFLOAT
-
VK_FORMAT_R16G16_SFLOAT
-
VK_FORMAT_B10G11R11_UFLOAT_PACK32
-
VK_FORMAT_R16_SFLOAT
-
VK_FORMAT_R16G16B16A16_UNORM
-
VK_FORMAT_A2B10G10R10_UNORM_PACK32
-
VK_FORMAT_R16G16_UNORM
-
VK_FORMAT_R8G8_UNORM
-
VK_FORMAT_R16_UNORM
-
VK_FORMAT_R8_UNORM
-
VK_FORMAT_R16G16B16A16_SNORM
-
VK_FORMAT_R16G16_SNORM
-
VK_FORMAT_R8G8_SNORM
-
VK_FORMAT_R16_SNORM
-
VK_FORMAT_R8_SNORM
-
VK_FORMAT_R16G16_SINT
-
VK_FORMAT_R8G8_SINT
-
VK_FORMAT_R16_SINT
-
VK_FORMAT_R8_SINT
-
VK_FORMAT_A2B10G10R10_UINT_PACK32
-
VK_FORMAT_R16G16_UINT
-
VK_FORMAT_R8G8_UINT
-
VK_FORMAT_R16_UINT
-
VK_FORMAT_R8_UINT
-
VK_FORMAT_A8_UNORM
此格式列表是来自必需格式支持部分和 |
如果实现支持给定格式列表中任何格式的 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
,并且支持 shaderStorageImageReadWithoutFormat
,则如果支持 Vulkan 1.3 或 VK_KHR_format_feature_flags2
扩展,则**必须**为该相同格式支持 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
。
如果实现支持给定格式列表中任何格式的 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
,并且支持 shaderStorageImageWriteWithoutFormat
,则如果支持 Vulkan 1.3 或 VK_KHR_format_feature_flags2
扩展,则**必须**为该相同格式支持 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
。
对于某个格式,如果实现不支持 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
或 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
中的任何一个,那么当该格式未在SPIR-V 和 Vulkan 图像格式兼容性表中列出时,必须不能报告对该格式支持 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
或 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
。
一些较旧的实现不遵循此限制。它们报告支持格式作为存储图像,即使它们不支持在没有 通过 Vulkan 一致性测试套件 1.3.9.0 版本或任何后续版本的驱动程序将符合上述要求。 |
深度比较格式支持
如果支持 Vulkan 1.3 或 VK_KHR_format_feature_flags2
扩展,则具有深度分量并支持 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
的深度/模板格式必须支持 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
。
格式特性相关的用法标志
某些资源用法标志取决于对相关格式的相应格式特性标志的支持。下表列出了具有此类依赖关系的 VkBufferUsageFlagBits 和 VkImageUsageFlagBits,以及它们所依赖的格式特性标志。其他限制,包括但不限于特定资源使用所需的其他格式特性标志,可能适用,如本规范的各个章节所述。
缓冲器用法标志 | 必需的格式特性标志 |
---|---|
|
|
|
|
|
|
图像用法标志 | 必需的格式特性标志 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|