1// Copyright 2015-2021 The Khronos Group, Inc. 2// 3// SPDX-License-Identifier: CC-BY-4.0 4 5[[formats]] 6= Formats 7 8Supported buffer and image formats may: vary across implementations. 9A minimum set of format features are guaranteed, but others must: be 10explicitly queried before use to ensure they are supported by the 11implementation. 12 13The features for the set of formats (elink:VkFormat) supported by the 14implementation are queried individually using the 15flink:vkGetPhysicalDeviceFormatProperties command. 16 17 18[[formats-definition]] 19== Format Definition 20 21[open,refpage='VkFormat',desc='Available image formats',type='enums'] 22-- 23The following image formats can: be passed to, and may: be returned from 24Vulkan commands. 25The memory required to store each format is discussed with that format, and 26also summarized in the <<texel-block-size, Representation and Texel Block 27Size>> section and the <<formats-compatibility, Compatible formats>> table. 28 29include::{generated}/api/enums/VkFormat.txt[] 30 31 * ename:VK_FORMAT_UNDEFINED specifies that the format is not specified. 32 * ename:VK_FORMAT_R4G4_UNORM_PACK8 specifies a two-component, 8-bit packed 33 unsigned normalized format that has a 4-bit R component in bits 4..7, 34 and a 4-bit G component in bits 0..3. 35 * ename:VK_FORMAT_R4G4B4A4_UNORM_PACK16 specifies a four-component, 16-bit 36 packed unsigned normalized format that has a 4-bit R component in bits 37 12..15, a 4-bit G component in bits 8..11, a 4-bit B component in bits 38 4..7, and a 4-bit A component in bits 0..3. 39 * ename:VK_FORMAT_B4G4R4A4_UNORM_PACK16 specifies a four-component, 16-bit 40 packed unsigned normalized format that has a 4-bit B component in bits 41 12..15, a 4-bit G component in bits 8..11, a 4-bit R component in bits 42 4..7, and a 4-bit A component in bits 0..3. 43ifdef::VK_EXT_4444_formats[] 44 * ename:VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT specifies a four-component, 45 16-bit packed unsigned normalized format that has a 4-bit A component in 46 bits 12..15, a 4-bit R component in bits 8..11, a 4-bit G component in 47 bits 4..7, and a 4-bit B component in bits 0..3. 48 * ename:VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT specifies a four-component, 49 16-bit packed unsigned normalized format that has a 4-bit A component in 50 bits 12..15, a 4-bit B component in bits 8..11, a 4-bit G component in 51 bits 4..7, and a 4-bit R component in bits 0..3. 52endif::VK_EXT_4444_formats[] 53 * ename:VK_FORMAT_R5G6B5_UNORM_PACK16 specifies a three-component, 16-bit 54 packed unsigned normalized format that has a 5-bit R component in bits 55 11..15, a 6-bit G component in bits 5..10, and a 5-bit B component in 56 bits 0..4. 57 * ename:VK_FORMAT_B5G6R5_UNORM_PACK16 specifies a three-component, 16-bit 58 packed unsigned normalized format that has a 5-bit B component in bits 59 11..15, a 6-bit G component in bits 5..10, and a 5-bit R component in 60 bits 0..4. 61 * ename:VK_FORMAT_R5G5B5A1_UNORM_PACK16 specifies a four-component, 16-bit 62 packed unsigned normalized format that has a 5-bit R component in bits 63 11..15, a 5-bit G component in bits 6..10, a 5-bit B component in bits 64 1..5, and a 1-bit A component in bit 0. 65 * ename:VK_FORMAT_B5G5R5A1_UNORM_PACK16 specifies a four-component, 16-bit 66 packed unsigned normalized format that has a 5-bit B component in bits 67 11..15, a 5-bit G component in bits 6..10, a 5-bit R component in bits 68 1..5, and a 1-bit A component in bit 0. 69 * ename:VK_FORMAT_A1R5G5B5_UNORM_PACK16 specifies a four-component, 16-bit 70 packed unsigned normalized format that has a 1-bit A component in bit 71 15, a 5-bit R component in bits 10..14, a 5-bit G component in bits 72 5..9, and a 5-bit B component in bits 0..4. 73 * ename:VK_FORMAT_R8_UNORM specifies a one-component, 8-bit unsigned 74 normalized format that has a single 8-bit R component. 75 * ename:VK_FORMAT_R8_SNORM specifies a one-component, 8-bit signed 76 normalized format that has a single 8-bit R component. 77 * ename:VK_FORMAT_R8_USCALED specifies a one-component, 8-bit unsigned 78 scaled integer format that has a single 8-bit R component. 79 * ename:VK_FORMAT_R8_SSCALED specifies a one-component, 8-bit signed 80 scaled integer format that has a single 8-bit R component. 81 * ename:VK_FORMAT_R8_UINT specifies a one-component, 8-bit unsigned 82 integer format that has a single 8-bit R component. 83 * ename:VK_FORMAT_R8_SINT specifies a one-component, 8-bit signed integer 84 format that has a single 8-bit R component. 85 * ename:VK_FORMAT_R8_SRGB specifies a one-component, 8-bit unsigned 86 normalized format that has a single 8-bit R component stored with sRGB 87 nonlinear encoding. 88 * ename:VK_FORMAT_R8G8_UNORM specifies a two-component, 16-bit unsigned 89 normalized format that has an 8-bit R component in byte 0, and an 8-bit 90 G component in byte 1. 91 * ename:VK_FORMAT_R8G8_SNORM specifies a two-component, 16-bit signed 92 normalized format that has an 8-bit R component in byte 0, and an 8-bit 93 G component in byte 1. 94 * ename:VK_FORMAT_R8G8_USCALED specifies a two-component, 16-bit unsigned 95 scaled integer format that has an 8-bit R component in byte 0, and an 96 8-bit G component in byte 1. 97 * ename:VK_FORMAT_R8G8_SSCALED specifies a two-component, 16-bit signed 98 scaled integer format that has an 8-bit R component in byte 0, and an 99 8-bit G component in byte 1. 100 * ename:VK_FORMAT_R8G8_UINT specifies a two-component, 16-bit unsigned 101 integer format that has an 8-bit R component in byte 0, and an 8-bit G 102 component in byte 1. 103 * ename:VK_FORMAT_R8G8_SINT specifies a two-component, 16-bit signed 104 integer format that has an 8-bit R component in byte 0, and an 8-bit G 105 component in byte 1. 106 * ename:VK_FORMAT_R8G8_SRGB specifies a two-component, 16-bit unsigned 107 normalized format that has an 8-bit R component stored with sRGB 108 nonlinear encoding in byte 0, and an 8-bit G component stored with sRGB 109 nonlinear encoding in byte 1. 110 * ename:VK_FORMAT_R8G8B8_UNORM specifies a three-component, 24-bit 111 unsigned normalized format that has an 8-bit R component in byte 0, an 112 8-bit G component in byte 1, and an 8-bit B component in byte 2. 113 * ename:VK_FORMAT_R8G8B8_SNORM specifies a three-component, 24-bit signed 114 normalized format that has an 8-bit R component in byte 0, an 8-bit G 115 component in byte 1, and an 8-bit B component in byte 2. 116 * ename:VK_FORMAT_R8G8B8_USCALED specifies a three-component, 24-bit 117 unsigned scaled format that has an 8-bit R component in byte 0, an 8-bit 118 G component in byte 1, and an 8-bit B component in byte 2. 119 * ename:VK_FORMAT_R8G8B8_SSCALED specifies a three-component, 24-bit 120 signed scaled format that has an 8-bit R component in byte 0, an 8-bit G 121 component in byte 1, and an 8-bit B component in byte 2. 122 * ename:VK_FORMAT_R8G8B8_UINT specifies a three-component, 24-bit unsigned 123 integer format that has an 8-bit R component in byte 0, an 8-bit G 124 component in byte 1, and an 8-bit B component in byte 2. 125 * ename:VK_FORMAT_R8G8B8_SINT specifies a three-component, 24-bit signed 126 integer format that has an 8-bit R component in byte 0, an 8-bit G 127 component in byte 1, and an 8-bit B component in byte 2. 128 * ename:VK_FORMAT_R8G8B8_SRGB specifies a three-component, 24-bit unsigned 129 normalized format that has an 8-bit R component stored with sRGB 130 nonlinear encoding in byte 0, an 8-bit G component stored with sRGB 131 nonlinear encoding in byte 1, and an 8-bit B component stored with sRGB 132 nonlinear encoding in byte 2. 133 * ename:VK_FORMAT_B8G8R8_UNORM specifies a three-component, 24-bit 134 unsigned normalized format that has an 8-bit B component in byte 0, an 135 8-bit G component in byte 1, and an 8-bit R component in byte 2. 136 * ename:VK_FORMAT_B8G8R8_SNORM specifies a three-component, 24-bit signed 137 normalized format that has an 8-bit B component in byte 0, an 8-bit G 138 component in byte 1, and an 8-bit R component in byte 2. 139 * ename:VK_FORMAT_B8G8R8_USCALED specifies a three-component, 24-bit 140 unsigned scaled format that has an 8-bit B component in byte 0, an 8-bit 141 G component in byte 1, and an 8-bit R component in byte 2. 142 * ename:VK_FORMAT_B8G8R8_SSCALED specifies a three-component, 24-bit 143 signed scaled format that has an 8-bit B component in byte 0, an 8-bit G 144 component in byte 1, and an 8-bit R component in byte 2. 145 * ename:VK_FORMAT_B8G8R8_UINT specifies a three-component, 24-bit unsigned 146 integer format that has an 8-bit B component in byte 0, an 8-bit G 147 component in byte 1, and an 8-bit R component in byte 2. 148 * ename:VK_FORMAT_B8G8R8_SINT specifies a three-component, 24-bit signed 149 integer format that has an 8-bit B component in byte 0, an 8-bit G 150 component in byte 1, and an 8-bit R component in byte 2. 151 * ename:VK_FORMAT_B8G8R8_SRGB specifies a three-component, 24-bit unsigned 152 normalized format that has an 8-bit B component stored with sRGB 153 nonlinear encoding in byte 0, an 8-bit G component stored with sRGB 154 nonlinear encoding in byte 1, and an 8-bit R component stored with sRGB 155 nonlinear encoding in byte 2. 156 * ename:VK_FORMAT_R8G8B8A8_UNORM specifies a four-component, 32-bit 157 unsigned normalized format that has an 8-bit R component in byte 0, an 158 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 159 8-bit A component in byte 3. 160 * ename:VK_FORMAT_R8G8B8A8_SNORM specifies a four-component, 32-bit signed 161 normalized format that has an 8-bit R component in byte 0, an 8-bit G 162 component in byte 1, an 8-bit B component in byte 2, and an 8-bit A 163 component in byte 3. 164 * ename:VK_FORMAT_R8G8B8A8_USCALED specifies a four-component, 32-bit 165 unsigned scaled format that has an 8-bit R component in byte 0, an 8-bit 166 G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A 167 component in byte 3. 168 * ename:VK_FORMAT_R8G8B8A8_SSCALED specifies a four-component, 32-bit 169 signed scaled format that has an 8-bit R component in byte 0, an 8-bit G 170 component in byte 1, an 8-bit B component in byte 2, and an 8-bit A 171 component in byte 3. 172 * ename:VK_FORMAT_R8G8B8A8_UINT specifies a four-component, 32-bit 173 unsigned integer format that has an 8-bit R component in byte 0, an 174 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 175 8-bit A component in byte 3. 176 * ename:VK_FORMAT_R8G8B8A8_SINT specifies a four-component, 32-bit signed 177 integer format that has an 8-bit R component in byte 0, an 8-bit G 178 component in byte 1, an 8-bit B component in byte 2, and an 8-bit A 179 component in byte 3. 180 * ename:VK_FORMAT_R8G8B8A8_SRGB specifies a four-component, 32-bit 181 unsigned normalized format that has an 8-bit R component stored with 182 sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB 183 nonlinear encoding in byte 1, an 8-bit B component stored with sRGB 184 nonlinear encoding in byte 2, and an 8-bit A component in byte 3. 185 * ename:VK_FORMAT_B8G8R8A8_UNORM specifies a four-component, 32-bit 186 unsigned normalized format that has an 8-bit B component in byte 0, an 187 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 188 8-bit A component in byte 3. 189 * ename:VK_FORMAT_B8G8R8A8_SNORM specifies a four-component, 32-bit signed 190 normalized format that has an 8-bit B component in byte 0, an 8-bit G 191 component in byte 1, an 8-bit R component in byte 2, and an 8-bit A 192 component in byte 3. 193 * ename:VK_FORMAT_B8G8R8A8_USCALED specifies a four-component, 32-bit 194 unsigned scaled format that has an 8-bit B component in byte 0, an 8-bit 195 G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A 196 component in byte 3. 197 * ename:VK_FORMAT_B8G8R8A8_SSCALED specifies a four-component, 32-bit 198 signed scaled format that has an 8-bit B component in byte 0, an 8-bit G 199 component in byte 1, an 8-bit R component in byte 2, and an 8-bit A 200 component in byte 3. 201 * ename:VK_FORMAT_B8G8R8A8_UINT specifies a four-component, 32-bit 202 unsigned integer format that has an 8-bit B component in byte 0, an 203 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 204 8-bit A component in byte 3. 205 * ename:VK_FORMAT_B8G8R8A8_SINT specifies a four-component, 32-bit signed 206 integer format that has an 8-bit B component in byte 0, an 8-bit G 207 component in byte 1, an 8-bit R component in byte 2, and an 8-bit A 208 component in byte 3. 209 * ename:VK_FORMAT_B8G8R8A8_SRGB specifies a four-component, 32-bit 210 unsigned normalized format that has an 8-bit B component stored with 211 sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB 212 nonlinear encoding in byte 1, an 8-bit R component stored with sRGB 213 nonlinear encoding in byte 2, and an 8-bit A component in byte 3. 214 * ename:VK_FORMAT_A8B8G8R8_UNORM_PACK32 specifies a four-component, 32-bit 215 packed unsigned normalized format that has an 8-bit A component in bits 216 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in 217 bits 8..15, and an 8-bit R component in bits 0..7. 218 * ename:VK_FORMAT_A8B8G8R8_SNORM_PACK32 specifies a four-component, 32-bit 219 packed signed normalized format that has an 8-bit A component in bits 220 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in 221 bits 8..15, and an 8-bit R component in bits 0..7. 222 * ename:VK_FORMAT_A8B8G8R8_USCALED_PACK32 specifies a four-component, 223 32-bit packed unsigned scaled integer format that has an 8-bit A 224 component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit 225 G component in bits 8..15, and an 8-bit R component in bits 0..7. 226 * ename:VK_FORMAT_A8B8G8R8_SSCALED_PACK32 specifies a four-component, 227 32-bit packed signed scaled integer format that has an 8-bit A component 228 in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G 229 component in bits 8..15, and an 8-bit R component in bits 0..7. 230 * ename:VK_FORMAT_A8B8G8R8_UINT_PACK32 specifies a four-component, 32-bit 231 packed unsigned integer format that has an 8-bit A component in bits 232 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in 233 bits 8..15, and an 8-bit R component in bits 0..7. 234 * ename:VK_FORMAT_A8B8G8R8_SINT_PACK32 specifies a four-component, 32-bit 235 packed signed integer format that has an 8-bit A component in bits 236 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in 237 bits 8..15, and an 8-bit R component in bits 0..7. 238 * ename:VK_FORMAT_A8B8G8R8_SRGB_PACK32 specifies a four-component, 32-bit 239 packed unsigned normalized format that has an 8-bit A component in bits 240 24..31, an 8-bit B component stored with sRGB nonlinear encoding in bits 241 16..23, an 8-bit G component stored with sRGB nonlinear encoding in bits 242 8..15, and an 8-bit R component stored with sRGB nonlinear encoding in 243 bits 0..7. 244 * ename:VK_FORMAT_A2R10G10B10_UNORM_PACK32 specifies a four-component, 245 32-bit packed unsigned normalized format that has a 2-bit A component in 246 bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component 247 in bits 10..19, and a 10-bit B component in bits 0..9. 248 * ename:VK_FORMAT_A2R10G10B10_SNORM_PACK32 specifies a four-component, 249 32-bit packed signed normalized format that has a 2-bit A component in 250 bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component 251 in bits 10..19, and a 10-bit B component in bits 0..9. 252 * ename:VK_FORMAT_A2R10G10B10_USCALED_PACK32 specifies a four-component, 253 32-bit packed unsigned scaled integer format that has a 2-bit A 254 component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit 255 G component in bits 10..19, and a 10-bit B component in bits 0..9. 256 * ename:VK_FORMAT_A2R10G10B10_SSCALED_PACK32 specifies a four-component, 257 32-bit packed signed scaled integer format that has a 2-bit A component 258 in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G 259 component in bits 10..19, and a 10-bit B component in bits 0..9. 260 * ename:VK_FORMAT_A2R10G10B10_UINT_PACK32 specifies a four-component, 261 32-bit packed unsigned integer format that has a 2-bit A component in 262 bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component 263 in bits 10..19, and a 10-bit B component in bits 0..9. 264 * ename:VK_FORMAT_A2R10G10B10_SINT_PACK32 specifies a four-component, 265 32-bit packed signed integer format that has a 2-bit A component in bits 266 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in 267 bits 10..19, and a 10-bit B component in bits 0..9. 268 * ename:VK_FORMAT_A2B10G10R10_UNORM_PACK32 specifies a four-component, 269 32-bit packed unsigned normalized format that has a 2-bit A component in 270 bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component 271 in bits 10..19, and a 10-bit R component in bits 0..9. 272 * ename:VK_FORMAT_A2B10G10R10_SNORM_PACK32 specifies a four-component, 273 32-bit packed signed normalized format that has a 2-bit A component in 274 bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component 275 in bits 10..19, and a 10-bit R component in bits 0..9. 276 * ename:VK_FORMAT_A2B10G10R10_USCALED_PACK32 specifies a four-component, 277 32-bit packed unsigned scaled integer format that has a 2-bit A 278 component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit 279 G component in bits 10..19, and a 10-bit R component in bits 0..9. 280 * ename:VK_FORMAT_A2B10G10R10_SSCALED_PACK32 specifies a four-component, 281 32-bit packed signed scaled integer format that has a 2-bit A component 282 in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G 283 component in bits 10..19, and a 10-bit R component in bits 0..9. 284 * ename:VK_FORMAT_A2B10G10R10_UINT_PACK32 specifies a four-component, 285 32-bit packed unsigned integer format that has a 2-bit A component in 286 bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component 287 in bits 10..19, and a 10-bit R component in bits 0..9. 288 * ename:VK_FORMAT_A2B10G10R10_SINT_PACK32 specifies a four-component, 289 32-bit packed signed integer format that has a 2-bit A component in bits 290 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in 291 bits 10..19, and a 10-bit R component in bits 0..9. 292 * ename:VK_FORMAT_R16_UNORM specifies a one-component, 16-bit unsigned 293 normalized format that has a single 16-bit R component. 294 * ename:VK_FORMAT_R16_SNORM specifies a one-component, 16-bit signed 295 normalized format that has a single 16-bit R component. 296 * ename:VK_FORMAT_R16_USCALED specifies a one-component, 16-bit unsigned 297 scaled integer format that has a single 16-bit R component. 298 * ename:VK_FORMAT_R16_SSCALED specifies a one-component, 16-bit signed 299 scaled integer format that has a single 16-bit R component. 300 * ename:VK_FORMAT_R16_UINT specifies a one-component, 16-bit unsigned 301 integer format that has a single 16-bit R component. 302 * ename:VK_FORMAT_R16_SINT specifies a one-component, 16-bit signed 303 integer format that has a single 16-bit R component. 304 * ename:VK_FORMAT_R16_SFLOAT specifies a one-component, 16-bit signed 305 floating-point format that has a single 16-bit R component. 306 * ename:VK_FORMAT_R16G16_UNORM specifies a two-component, 32-bit unsigned 307 normalized format that has a 16-bit R component in bytes 0..1, and a 308 16-bit G component in bytes 2..3. 309 * ename:VK_FORMAT_R16G16_SNORM specifies a two-component, 32-bit signed 310 normalized format that has a 16-bit R component in bytes 0..1, and a 311 16-bit G component in bytes 2..3. 312 * ename:VK_FORMAT_R16G16_USCALED specifies a two-component, 32-bit 313 unsigned scaled integer format that has a 16-bit R component in bytes 314 0..1, and a 16-bit G component in bytes 2..3. 315 * ename:VK_FORMAT_R16G16_SSCALED specifies a two-component, 32-bit signed 316 scaled integer format that has a 16-bit R component in bytes 0..1, and a 317 16-bit G component in bytes 2..3. 318 * ename:VK_FORMAT_R16G16_UINT specifies a two-component, 32-bit unsigned 319 integer format that has a 16-bit R component in bytes 0..1, and a 16-bit 320 G component in bytes 2..3. 321 * ename:VK_FORMAT_R16G16_SINT specifies a two-component, 32-bit signed 322 integer format that has a 16-bit R component in bytes 0..1, and a 16-bit 323 G component in bytes 2..3. 324 * ename:VK_FORMAT_R16G16_SFLOAT specifies a two-component, 32-bit signed 325 floating-point format that has a 16-bit R component in bytes 0..1, and a 326 16-bit G component in bytes 2..3. 327 * ename:VK_FORMAT_R16G16B16_UNORM specifies a three-component, 48-bit 328 unsigned normalized format that has a 16-bit R component in bytes 0..1, 329 a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 330 4..5. 331 * ename:VK_FORMAT_R16G16B16_SNORM specifies a three-component, 48-bit 332 signed normalized format that has a 16-bit R component in bytes 0..1, a 333 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 334 4..5. 335 * ename:VK_FORMAT_R16G16B16_USCALED specifies a three-component, 48-bit 336 unsigned scaled integer format that has a 16-bit R component in bytes 337 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in 338 bytes 4..5. 339 * ename:VK_FORMAT_R16G16B16_SSCALED specifies a three-component, 48-bit 340 signed scaled integer format that has a 16-bit R component in bytes 341 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in 342 bytes 4..5. 343 * ename:VK_FORMAT_R16G16B16_UINT specifies a three-component, 48-bit 344 unsigned integer format that has a 16-bit R component in bytes 0..1, a 345 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 346 4..5. 347 * ename:VK_FORMAT_R16G16B16_SINT specifies a three-component, 48-bit 348 signed integer format that has a 16-bit R component in bytes 0..1, a 349 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 350 4..5. 351 * ename:VK_FORMAT_R16G16B16_SFLOAT specifies a three-component, 48-bit 352 signed floating-point format that has a 16-bit R component in bytes 353 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in 354 bytes 4..5. 355 * ename:VK_FORMAT_R16G16B16A16_UNORM specifies a four-component, 64-bit 356 unsigned normalized format that has a 16-bit R component in bytes 0..1, 357 a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, 358 and a 16-bit A component in bytes 6..7. 359 * ename:VK_FORMAT_R16G16B16A16_SNORM specifies a four-component, 64-bit 360 signed normalized format that has a 16-bit R component in bytes 0..1, a 361 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, 362 and a 16-bit A component in bytes 6..7. 363 * ename:VK_FORMAT_R16G16B16A16_USCALED specifies a four-component, 64-bit 364 unsigned scaled integer format that has a 16-bit R component in bytes 365 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 366 4..5, and a 16-bit A component in bytes 6..7. 367 * ename:VK_FORMAT_R16G16B16A16_SSCALED specifies a four-component, 64-bit 368 signed scaled integer format that has a 16-bit R component in bytes 369 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 370 4..5, and a 16-bit A component in bytes 6..7. 371 * ename:VK_FORMAT_R16G16B16A16_UINT specifies a four-component, 64-bit 372 unsigned integer format that has a 16-bit R component in bytes 0..1, a 373 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, 374 and a 16-bit A component in bytes 6..7. 375 * ename:VK_FORMAT_R16G16B16A16_SINT specifies a four-component, 64-bit 376 signed integer format that has a 16-bit R component in bytes 0..1, a 377 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, 378 and a 16-bit A component in bytes 6..7. 379 * ename:VK_FORMAT_R16G16B16A16_SFLOAT specifies a four-component, 64-bit 380 signed floating-point format that has a 16-bit R component in bytes 381 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 382 4..5, and a 16-bit A component in bytes 6..7. 383 * ename:VK_FORMAT_R32_UINT specifies a one-component, 32-bit unsigned 384 integer format that has a single 32-bit R component. 385 * ename:VK_FORMAT_R32_SINT specifies a one-component, 32-bit signed 386 integer format that has a single 32-bit R component. 387 * ename:VK_FORMAT_R32_SFLOAT specifies a one-component, 32-bit signed 388 floating-point format that has a single 32-bit R component. 389 * ename:VK_FORMAT_R32G32_UINT specifies a two-component, 64-bit unsigned 390 integer format that has a 32-bit R component in bytes 0..3, and a 32-bit 391 G component in bytes 4..7. 392 * ename:VK_FORMAT_R32G32_SINT specifies a two-component, 64-bit signed 393 integer format that has a 32-bit R component in bytes 0..3, and a 32-bit 394 G component in bytes 4..7. 395 * ename:VK_FORMAT_R32G32_SFLOAT specifies a two-component, 64-bit signed 396 floating-point format that has a 32-bit R component in bytes 0..3, and a 397 32-bit G component in bytes 4..7. 398 * ename:VK_FORMAT_R32G32B32_UINT specifies a three-component, 96-bit 399 unsigned integer format that has a 32-bit R component in bytes 0..3, a 400 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 401 8..11. 402 * ename:VK_FORMAT_R32G32B32_SINT specifies a three-component, 96-bit 403 signed integer format that has a 32-bit R component in bytes 0..3, a 404 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 405 8..11. 406 * ename:VK_FORMAT_R32G32B32_SFLOAT specifies a three-component, 96-bit 407 signed floating-point format that has a 32-bit R component in bytes 408 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in 409 bytes 8..11. 410 * ename:VK_FORMAT_R32G32B32A32_UINT specifies a four-component, 128-bit 411 unsigned integer format that has a 32-bit R component in bytes 0..3, a 412 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, 413 and a 32-bit A component in bytes 12..15. 414 * ename:VK_FORMAT_R32G32B32A32_SINT specifies a four-component, 128-bit 415 signed integer format that has a 32-bit R component in bytes 0..3, a 416 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, 417 and a 32-bit A component in bytes 12..15. 418 * ename:VK_FORMAT_R32G32B32A32_SFLOAT specifies a four-component, 128-bit 419 signed floating-point format that has a 32-bit R component in bytes 420 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 421 8..11, and a 32-bit A component in bytes 12..15. 422 * ename:VK_FORMAT_R64_UINT specifies a one-component, 64-bit unsigned 423 integer format that has a single 64-bit R component. 424 * ename:VK_FORMAT_R64_SINT specifies a one-component, 64-bit signed 425 integer format that has a single 64-bit R component. 426 * ename:VK_FORMAT_R64_SFLOAT specifies a one-component, 64-bit signed 427 floating-point format that has a single 64-bit R component. 428 * ename:VK_FORMAT_R64G64_UINT specifies a two-component, 128-bit unsigned 429 integer format that has a 64-bit R component in bytes 0..7, and a 64-bit 430 G component in bytes 8..15. 431 * ename:VK_FORMAT_R64G64_SINT specifies a two-component, 128-bit signed 432 integer format that has a 64-bit R component in bytes 0..7, and a 64-bit 433 G component in bytes 8..15. 434 * ename:VK_FORMAT_R64G64_SFLOAT specifies a two-component, 128-bit signed 435 floating-point format that has a 64-bit R component in bytes 0..7, and a 436 64-bit G component in bytes 8..15. 437 * ename:VK_FORMAT_R64G64B64_UINT specifies a three-component, 192-bit 438 unsigned integer format that has a 64-bit R component in bytes 0..7, a 439 64-bit G component in bytes 8..15, and a 64-bit B component in bytes 440 16..23. 441 * ename:VK_FORMAT_R64G64B64_SINT specifies a three-component, 192-bit 442 signed integer format that has a 64-bit R component in bytes 0..7, a 443 64-bit G component in bytes 8..15, and a 64-bit B component in bytes 444 16..23. 445 * ename:VK_FORMAT_R64G64B64_SFLOAT specifies a three-component, 192-bit 446 signed floating-point format that has a 64-bit R component in bytes 447 0..7, a 64-bit G component in bytes 8..15, and a 64-bit B component in 448 bytes 16..23. 449 * ename:VK_FORMAT_R64G64B64A64_UINT specifies a four-component, 256-bit 450 unsigned integer format that has a 64-bit R component in bytes 0..7, a 451 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23, 452 and a 64-bit A component in bytes 24..31. 453 * ename:VK_FORMAT_R64G64B64A64_SINT specifies a four-component, 256-bit 454 signed integer format that has a 64-bit R component in bytes 0..7, a 455 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23, 456 and a 64-bit A component in bytes 24..31. 457 * ename:VK_FORMAT_R64G64B64A64_SFLOAT specifies a four-component, 256-bit 458 signed floating-point format that has a 64-bit R component in bytes 459 0..7, a 64-bit G component in bytes 8..15, a 64-bit B component in bytes 460 16..23, and a 64-bit A component in bytes 24..31. 461 * ename:VK_FORMAT_B10G11R11_UFLOAT_PACK32 specifies a three-component, 462 32-bit packed unsigned floating-point format that has a 10-bit B 463 component in bits 22..31, an 11-bit G component in bits 11..21, an 464 11-bit R component in bits 0..10. 465 See <<fundamentals-fp10>> and <<fundamentals-fp11>>. 466 * ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 specifies a three-component, 467 32-bit packed unsigned floating-point format that has a 5-bit shared 468 exponent in bits 27..31, a 9-bit B component mantissa in bits 18..26, a 469 9-bit G component mantissa in bits 9..17, and a 9-bit R component 470 mantissa in bits 0..8. 471 * ename:VK_FORMAT_D16_UNORM specifies a one-component, 16-bit unsigned 472 normalized format that has a single 16-bit depth component. 473 * ename:VK_FORMAT_X8_D24_UNORM_PACK32 specifies a two-component, 32-bit 474 format that has 24 unsigned normalized bits in the depth component and, 475 optionally:, 8 bits that are unused. 476 * ename:VK_FORMAT_D32_SFLOAT specifies a one-component, 32-bit signed 477 floating-point format that has 32 bits in the depth component. 478 * ename:VK_FORMAT_S8_UINT specifies a one-component, 8-bit unsigned 479 integer format that has 8 bits in the stencil component. 480 * ename:VK_FORMAT_D16_UNORM_S8_UINT specifies a two-component, 24-bit 481 format that has 16 unsigned normalized bits in the depth component and 8 482 unsigned integer bits in the stencil component. 483 * ename:VK_FORMAT_D24_UNORM_S8_UINT specifies a two-component, 32-bit 484 packed format that has 8 unsigned integer bits in the stencil component, 485 and 24 unsigned normalized bits in the depth component. 486 * ename:VK_FORMAT_D32_SFLOAT_S8_UINT specifies a two-component format that 487 has 32 signed float bits in the depth component and 8 unsigned integer 488 bits in the stencil component. 489 There are optionally: 24 bits that are unused. 490 * ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK specifies a three-component, 491 block-compressed format where each 64-bit compressed texel block encodes 492 a 4{times}4 rectangle of unsigned normalized RGB texel data. 493 This format has no alpha and is considered opaque. 494 * ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK specifies a three-component, 495 block-compressed format where each 64-bit compressed texel block encodes 496 a 4{times}4 rectangle of unsigned normalized RGB texel data with sRGB 497 nonlinear encoding. 498 This format has no alpha and is considered opaque. 499 * ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK specifies a four-component, 500 block-compressed format where each 64-bit compressed texel block encodes 501 a 4{times}4 rectangle of unsigned normalized RGB texel data, and 502 provides 1 bit of alpha. 503 * ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK specifies a four-component, 504 block-compressed format where each 64-bit compressed texel block encodes 505 a 4{times}4 rectangle of unsigned normalized RGB texel data with sRGB 506 nonlinear encoding, and provides 1 bit of alpha. 507 * ename:VK_FORMAT_BC2_UNORM_BLOCK specifies a four-component, 508 block-compressed format where each 128-bit compressed texel block 509 encodes a 4{times}4 rectangle of unsigned normalized RGBA texel data 510 with the first 64 bits encoding alpha values followed by 64 bits 511 encoding RGB values. 512 * ename:VK_FORMAT_BC2_SRGB_BLOCK specifies a four-component, 513 block-compressed format where each 128-bit compressed texel block 514 encodes a 4{times}4 rectangle of unsigned normalized RGBA texel data 515 with the first 64 bits encoding alpha values followed by 64 bits 516 encoding RGB values with sRGB nonlinear encoding. 517 * ename:VK_FORMAT_BC3_UNORM_BLOCK specifies a four-component, 518 block-compressed format where each 128-bit compressed texel block 519 encodes a 4{times}4 rectangle of unsigned normalized RGBA texel data 520 with the first 64 bits encoding alpha values followed by 64 bits 521 encoding RGB values. 522 * ename:VK_FORMAT_BC3_SRGB_BLOCK specifies a four-component, 523 block-compressed format where each 128-bit compressed texel block 524 encodes a 4{times}4 rectangle of unsigned normalized RGBA texel data 525 with the first 64 bits encoding alpha values followed by 64 bits 526 encoding RGB values with sRGB nonlinear encoding. 527 * ename:VK_FORMAT_BC4_UNORM_BLOCK specifies a one-component, 528 block-compressed format where each 64-bit compressed texel block encodes 529 a 4{times}4 rectangle of unsigned normalized red texel data. 530 * ename:VK_FORMAT_BC4_SNORM_BLOCK specifies a one-component, 531 block-compressed format where each 64-bit compressed texel block encodes 532 a 4{times}4 rectangle of signed normalized red texel data. 533 * ename:VK_FORMAT_BC5_UNORM_BLOCK specifies a two-component, 534 block-compressed format where each 128-bit compressed texel block 535 encodes a 4{times}4 rectangle of unsigned normalized RG texel data with 536 the first 64 bits encoding red values followed by 64 bits encoding green 537 values. 538 * ename:VK_FORMAT_BC5_SNORM_BLOCK specifies a two-component, 539 block-compressed format where each 128-bit compressed texel block 540 encodes a 4{times}4 rectangle of signed normalized RG texel data with 541 the first 64 bits encoding red values followed by 64 bits encoding green 542 values. 543 * ename:VK_FORMAT_BC6H_UFLOAT_BLOCK specifies a three-component, 544 block-compressed format where each 128-bit compressed texel block 545 encodes a 4{times}4 rectangle of unsigned floating-point RGB texel data. 546 * ename:VK_FORMAT_BC6H_SFLOAT_BLOCK specifies a three-component, 547 block-compressed format where each 128-bit compressed texel block 548 encodes a 4{times}4 rectangle of signed floating-point RGB texel data. 549 * ename:VK_FORMAT_BC7_UNORM_BLOCK specifies a four-component, 550 block-compressed format where each 128-bit compressed texel block 551 encodes a 4{times}4 rectangle of unsigned normalized RGBA texel data. 552 * ename:VK_FORMAT_BC7_SRGB_BLOCK specifies a four-component, 553 block-compressed format where each 128-bit compressed texel block 554 encodes a 4{times}4 rectangle of unsigned normalized RGBA texel data 555 with sRGB nonlinear encoding applied to the RGB components. 556 * ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK specifies a three-component, 557 ETC2 compressed format where each 64-bit compressed texel block encodes 558 a 4{times}4 rectangle of unsigned normalized RGB texel data. 559 This format has no alpha and is considered opaque. 560 * ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK specifies a three-component, ETC2 561 compressed format where each 64-bit compressed texel block encodes a 562 4{times}4 rectangle of unsigned normalized RGB texel data with sRGB 563 nonlinear encoding. 564 This format has no alpha and is considered opaque. 565 * ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK specifies a four-component, 566 ETC2 compressed format where each 64-bit compressed texel block encodes 567 a 4{times}4 rectangle of unsigned normalized RGB texel data, and 568 provides 1 bit of alpha. 569 * ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK specifies a four-component, 570 ETC2 compressed format where each 64-bit compressed texel block encodes 571 a 4{times}4 rectangle of unsigned normalized RGB texel data with sRGB 572 nonlinear encoding, and provides 1 bit of alpha. 573 * ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK specifies a four-component, 574 ETC2 compressed format where each 128-bit compressed texel block encodes 575 a 4{times}4 rectangle of unsigned normalized RGBA texel data with the 576 first 64 bits encoding alpha values followed by 64 bits encoding RGB 577 values. 578 * ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK specifies a four-component, 579 ETC2 compressed format where each 128-bit compressed texel block encodes 580 a 4{times}4 rectangle of unsigned normalized RGBA texel data with the 581 first 64 bits encoding alpha values followed by 64 bits encoding RGB 582 values with sRGB nonlinear encoding applied. 583 * ename:VK_FORMAT_EAC_R11_UNORM_BLOCK specifies a one-component, ETC2 584 compressed format where each 64-bit compressed texel block encodes a 585 4{times}4 rectangle of unsigned normalized red texel data. 586 * ename:VK_FORMAT_EAC_R11_SNORM_BLOCK specifies a one-component, ETC2 587 compressed format where each 64-bit compressed texel block encodes a 588 4{times}4 rectangle of signed normalized red texel data. 589 * ename:VK_FORMAT_EAC_R11G11_UNORM_BLOCK specifies a two-component, ETC2 590 compressed format where each 128-bit compressed texel block encodes a 591 4{times}4 rectangle of unsigned normalized RG texel data with the first 592 64 bits encoding red values followed by 64 bits encoding green values. 593 * ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK specifies a two-component, ETC2 594 compressed format where each 128-bit compressed texel block encodes a 595 4{times}4 rectangle of signed normalized RG texel data with the first 64 596 bits encoding red values followed by 64 bits encoding green values. 597 * ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK specifies a four-component, ASTC 598 compressed format where each 128-bit compressed texel block encodes a 599 4{times}4 rectangle of unsigned normalized RGBA texel data. 600 * ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK specifies a four-component, ASTC 601 compressed format where each 128-bit compressed texel block encodes a 602 4{times}4 rectangle of unsigned normalized RGBA texel data with sRGB 603 nonlinear encoding applied to the RGB components. 604ifdef::VK_EXT_texture_compression_astc_hdr[] 605 * ename:VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT specifies a four-component, 606 ASTC compressed format where each 128-bit compressed texel block encodes 607 a 4{times}4 rectangle of signed floating-point RGBA texel data. 608endif::VK_EXT_texture_compression_astc_hdr[] 609 * ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK specifies a four-component, ASTC 610 compressed format where each 128-bit compressed texel block encodes a 611 5{times}4 rectangle of unsigned normalized RGBA texel data. 612 * ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK specifies a four-component, ASTC 613 compressed format where each 128-bit compressed texel block encodes a 614 5{times}4 rectangle of unsigned normalized RGBA texel data with sRGB 615 nonlinear encoding applied to the RGB components. 616ifdef::VK_EXT_texture_compression_astc_hdr[] 617 * ename:VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT specifies a four-component, 618 ASTC compressed format where each 128-bit compressed texel block encodes 619 a 5{times}4 rectangle of signed floating-point RGBA texel data. 620endif::VK_EXT_texture_compression_astc_hdr[] 621 * ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK specifies a four-component, ASTC 622 compressed format where each 128-bit compressed texel block encodes a 623 5{times}5 rectangle of unsigned normalized RGBA texel data. 624 * ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK specifies a four-component, ASTC 625 compressed format where each 128-bit compressed texel block encodes a 626 5{times}5 rectangle of unsigned normalized RGBA texel data with sRGB 627 nonlinear encoding applied to the RGB components. 628ifdef::VK_EXT_texture_compression_astc_hdr[] 629 * ename:VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT specifies a four-component, 630 ASTC compressed format where each 128-bit compressed texel block encodes 631 a 5{times}5 rectangle of signed floating-point RGBA texel data. 632endif::VK_EXT_texture_compression_astc_hdr[] 633 * ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK specifies a four-component, ASTC 634 compressed format where each 128-bit compressed texel block encodes a 635 6{times}5 rectangle of unsigned normalized RGBA texel data. 636 * ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK specifies a four-component, ASTC 637 compressed format where each 128-bit compressed texel block encodes a 638 6{times}5 rectangle of unsigned normalized RGBA texel data with sRGB 639 nonlinear encoding applied to the RGB components. 640ifdef::VK_EXT_texture_compression_astc_hdr[] 641 * ename:VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT specifies a four-component, 642 ASTC compressed format where each 128-bit compressed texel block encodes 643 a 6{times}5 rectangle of signed floating-point RGBA texel data. 644endif::VK_EXT_texture_compression_astc_hdr[] 645 * ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK specifies a four-component, ASTC 646 compressed format where each 128-bit compressed texel block encodes a 647 6{times}6 rectangle of unsigned normalized RGBA texel data. 648 * ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK specifies a four-component, ASTC 649 compressed format where each 128-bit compressed texel block encodes a 650 6{times}6 rectangle of unsigned normalized RGBA texel data with sRGB 651 nonlinear encoding applied to the RGB components. 652ifdef::VK_EXT_texture_compression_astc_hdr[] 653 * ename:VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT specifies a four-component, 654 ASTC compressed format where each 128-bit compressed texel block encodes 655 a 6{times}6 rectangle of signed floating-point RGBA texel data. 656endif::VK_EXT_texture_compression_astc_hdr[] 657 * ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK specifies a four-component, ASTC 658 compressed format where each 128-bit compressed texel block encodes an 659 8{times}5 rectangle of unsigned normalized RGBA texel data. 660 * ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK specifies a four-component, ASTC 661 compressed format where each 128-bit compressed texel block encodes an 662 8{times}5 rectangle of unsigned normalized RGBA texel data with sRGB 663 nonlinear encoding applied to the RGB components. 664ifdef::VK_EXT_texture_compression_astc_hdr[] 665 * ename:VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT specifies a four-component, 666 ASTC compressed format where each 128-bit compressed texel block encodes 667 a 8{times}5 rectangle of signed floating-point RGBA texel data. 668endif::VK_EXT_texture_compression_astc_hdr[] 669 * ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK specifies a four-component, ASTC 670 compressed format where each 128-bit compressed texel block encodes an 671 8{times}6 rectangle of unsigned normalized RGBA texel data. 672 * ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK specifies a four-component, ASTC 673 compressed format where each 128-bit compressed texel block encodes an 674 8{times}6 rectangle of unsigned normalized RGBA texel data with sRGB 675 nonlinear encoding applied to the RGB components. 676ifdef::VK_EXT_texture_compression_astc_hdr[] 677 * ename:VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT specifies a four-component, 678 ASTC compressed format where each 128-bit compressed texel block encodes 679 a 8{times}6 rectangle of signed floating-point RGBA texel data. 680endif::VK_EXT_texture_compression_astc_hdr[] 681 * ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK specifies a four-component, ASTC 682 compressed format where each 128-bit compressed texel block encodes an 683 8{times}8 rectangle of unsigned normalized RGBA texel data. 684 * ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK specifies a four-component, ASTC 685 compressed format where each 128-bit compressed texel block encodes an 686 8{times}8 rectangle of unsigned normalized RGBA texel data with sRGB 687 nonlinear encoding applied to the RGB components. 688ifdef::VK_EXT_texture_compression_astc_hdr[] 689 * ename:VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT specifies a four-component, 690 ASTC compressed format where each 128-bit compressed texel block encodes 691 a 8{times}8 rectangle of signed floating-point RGBA texel data. 692endif::VK_EXT_texture_compression_astc_hdr[] 693 * ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK specifies a four-component, ASTC 694 compressed format where each 128-bit compressed texel block encodes a 695 10{times}5 rectangle of unsigned normalized RGBA texel data. 696 * ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK specifies a four-component, ASTC 697 compressed format where each 128-bit compressed texel block encodes a 698 10{times}5 rectangle of unsigned normalized RGBA texel data with sRGB 699 nonlinear encoding applied to the RGB components. 700ifdef::VK_EXT_texture_compression_astc_hdr[] 701 * ename:VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT specifies a four-component, 702 ASTC compressed format where each 128-bit compressed texel block encodes 703 a 10{times}5 rectangle of signed floating-point RGBA texel data. 704endif::VK_EXT_texture_compression_astc_hdr[] 705 * ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK specifies a four-component, ASTC 706 compressed format where each 128-bit compressed texel block encodes a 707 10{times}6 rectangle of unsigned normalized RGBA texel data. 708 * ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK specifies a four-component, ASTC 709 compressed format where each 128-bit compressed texel block encodes a 710 10{times}6 rectangle of unsigned normalized RGBA texel data with sRGB 711 nonlinear encoding applied to the RGB components. 712ifdef::VK_EXT_texture_compression_astc_hdr[] 713 * ename:VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT specifies a four-component, 714 ASTC compressed format where each 128-bit compressed texel block encodes 715 a 10{times}6 rectangle of signed floating-point RGBA texel data. 716endif::VK_EXT_texture_compression_astc_hdr[] 717 * ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK specifies a four-component, ASTC 718 compressed format where each 128-bit compressed texel block encodes a 719 10{times}8 rectangle of unsigned normalized RGBA texel data. 720 * ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK specifies a four-component, ASTC 721 compressed format where each 128-bit compressed texel block encodes a 722 10{times}8 rectangle of unsigned normalized RGBA texel data with sRGB 723 nonlinear encoding applied to the RGB components. 724ifdef::VK_EXT_texture_compression_astc_hdr[] 725 * ename:VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT specifies a four-component, 726 ASTC compressed format where each 128-bit compressed texel block encodes 727 a 10{times}8 rectangle of signed floating-point RGBA texel data. 728endif::VK_EXT_texture_compression_astc_hdr[] 729 * ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK specifies a four-component, ASTC 730 compressed format where each 128-bit compressed texel block encodes a 731 10{times}10 rectangle of unsigned normalized RGBA texel data. 732 * ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK specifies a four-component, ASTC 733 compressed format where each 128-bit compressed texel block encodes a 734 10{times}10 rectangle of unsigned normalized RGBA texel data with sRGB 735 nonlinear encoding applied to the RGB components. 736ifdef::VK_EXT_texture_compression_astc_hdr[] 737 * ename:VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT specifies a four-component, 738 ASTC compressed format where each 128-bit compressed texel block encodes 739 a 10{times}10 rectangle of signed floating-point RGBA texel data. 740endif::VK_EXT_texture_compression_astc_hdr[] 741 * ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK specifies a four-component, ASTC 742 compressed format where each 128-bit compressed texel block encodes a 743 12{times}10 rectangle of unsigned normalized RGBA texel data. 744 * ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK specifies a four-component, ASTC 745 compressed format where each 128-bit compressed texel block encodes a 746 12{times}10 rectangle of unsigned normalized RGBA texel data with sRGB 747 nonlinear encoding applied to the RGB components. 748ifdef::VK_EXT_texture_compression_astc_hdr[] 749 * ename:VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT specifies a four-component, 750 ASTC compressed format where each 128-bit compressed texel block encodes 751 a 12{times}10 rectangle of signed floating-point RGBA texel data. 752endif::VK_EXT_texture_compression_astc_hdr[] 753 * ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK specifies a four-component, ASTC 754 compressed format where each 128-bit compressed texel block encodes a 755 12{times}12 rectangle of unsigned normalized RGBA texel data. 756 * ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK specifies a four-component, ASTC 757 compressed format where each 128-bit compressed texel block encodes a 758 12{times}12 rectangle of unsigned normalized RGBA texel data with sRGB 759 nonlinear encoding applied to the RGB components. 760ifdef::VK_EXT_texture_compression_astc_hdr[] 761 * ename:VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT specifies a four-component, 762 ASTC compressed format where each 128-bit compressed texel block encodes 763 a 12{times}12 rectangle of signed floating-point RGBA texel data. 764endif::VK_EXT_texture_compression_astc_hdr[] 765ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 766 * ename:VK_FORMAT_G8B8G8R8_422_UNORM specifies a four-component, 32-bit 767 format containing a pair of G components, an R component, and a B 768 component, collectively encoding a 2{times}1 rectangle of unsigned 769 normalized RGB texel data. 770 One G value is present at each _i_ coordinate, with the B and R values 771 shared across both G values and thus recorded at half the horizontal 772 resolution of the image. 773 This format has an 8-bit G component for the even _i_ coordinate in byte 774 0, an 8-bit B component in byte 1, an 8-bit G component for the odd _i_ 775 coordinate in byte 2, and an 8-bit R component in byte 3. 776 This format only supports images with a width that is a multiple of two. 777 For the purposes of the constraints on copy extents, this format is 778 treated as a compressed format with a 2{times}1 compressed texel block. 779 * ename:VK_FORMAT_B8G8R8G8_422_UNORM specifies a four-component, 32-bit 780 format containing a pair of G components, an R component, and a B 781 component, collectively encoding a 2{times}1 rectangle of unsigned 782 normalized RGB texel data. 783 One G value is present at each _i_ coordinate, with the B and R values 784 shared across both G values and thus recorded at half the horizontal 785 resolution of the image. 786 This format has an 8-bit B component in byte 0, an 8-bit G component for 787 the even _i_ coordinate in byte 1, an 8-bit R component in byte 2, and 788 an 8-bit G component for the odd _i_ coordinate in byte 3. 789 This format only supports images with a width that is a multiple of two. 790 For the purposes of the constraints on copy extents, this format is 791 treated as a compressed format with a 2{times}1 compressed texel block. 792 * ename:VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM specifies an unsigned 793 normalized _multi-planar format_ that has an 8-bit G component in plane 794 0, an 8-bit B component in plane 1, and an 8-bit R component in plane 2. 795 The horizontal and vertical dimensions of the R and B planes are halved 796 relative to the image dimensions, and each R and B component is shared 797 with the G components for which latexmath:[\left\lfloor i_G \times 0.5 798 \right\rfloor = i_B = i_R] and latexmath:[\left\lfloor j_G \times 0.5 799 \right\rfloor = j_B = j_R]. 800 The location of each plane when this image is in linear layout can be 801 determined via flink:vkGetImageSubresourceLayout, using 802 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 803 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 804 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 805 This format only supports images with a width and height that is a 806 multiple of two. 807 * ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM specifies an unsigned 808 normalized _multi-planar format_ that has an 8-bit G component in plane 809 0, and a two-component, 16-bit BR plane 1 consisting of an 8-bit B 810 component in byte 0 and an 8-bit R component in byte 1. 811 The horizontal and vertical dimensions of the BR plane are halved 812 relative to the image dimensions, and each R and B value is shared with 813 the G components for which latexmath:[\left\lfloor i_G \times 0.5 814 \right\rfloor = i_B = i_R] and latexmath:[\left\lfloor j_G \times 0.5 815 \right\rfloor = j_B = j_R]. 816 The location of each plane when this image is in linear layout can be 817 determined via flink:vkGetImageSubresourceLayout, using 818 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 819 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 820 This format only supports images with a width and height that is a 821 multiple of two. 822 * ename:VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM specifies an unsigned 823 normalized _multi-planar format_ that has an 8-bit G component in plane 824 0, an 8-bit B component in plane 1, and an 8-bit R component in plane 2. 825 The horizontal dimension of the R and B plane is halved relative to the 826 image dimensions, and each R and B value is shared with the G components 827 for which latexmath:[\left\lfloor i_G \times 0.5 \right\rfloor = i_B = 828 i_R]. 829 The location of each plane when this image is in linear layout can be 830 determined via flink:vkGetImageSubresourceLayout, using 831 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 832 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 833 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 834 This format only supports images with a width that is a multiple of two. 835 * ename:VK_FORMAT_G8_B8R8_2PLANE_422_UNORM specifies an unsigned 836 normalized _multi-planar format_ that has an 8-bit G component in plane 837 0, and a two-component, 16-bit BR plane 1 consisting of an 8-bit B 838 component in byte 0 and an 8-bit R component in byte 1. 839 The horizontal dimension of the BR plane is halved relative to the image 840 dimensions, and each R and B value is shared with the G components for 841 which latexmath:[\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R]. 842 The location of each plane when this image is in linear layout can be 843 determined via flink:vkGetImageSubresourceLayout, using 844 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 845 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 846 This format only supports images with a width that is a multiple of two. 847 * ename:VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM specifies an unsigned 848 normalized _multi-planar format_ that has an 8-bit G component in plane 849 0, an 8-bit B component in plane 1, and an 8-bit R component in plane 2. 850 Each plane has the same dimensions and each R, G and B component 851 contributes to a single texel. 852 The location of each plane when this image is in linear layout can be 853 determined via flink:vkGetImageSubresourceLayout, using 854 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 855 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 856 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 857 * ename:VK_FORMAT_R10X6_UNORM_PACK16 specifies a one-component, 16-bit 858 unsigned normalized format that has a single 10-bit R component in the 859 top 10 bits of a 16-bit word, with the bottom 6 bits unused. 860 * ename:VK_FORMAT_R10X6G10X6_UNORM_2PACK16 specifies a two-component, 861 32-bit unsigned normalized format that has a 10-bit R component in the 862 top 10 bits of the word in bytes 0..1, and a 10-bit G component in the 863 top 10 bits of the word in bytes 2..3, with the bottom 6 bits of each 864 word unused. 865 * ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 specifies a 866 four-component, 64-bit unsigned normalized format that has a 10-bit R 867 component in the top 10 bits of the word in bytes 0..1, a 10-bit G 868 component in the top 10 bits of the word in bytes 2..3, a 10-bit B 869 component in the top 10 bits of the word in bytes 4..5, and a 10-bit A 870 component in the top 10 bits of the word in bytes 6..7, with the bottom 871 6 bits of each word unused. 872 * ename:VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 specifies a 873 four-component, 64-bit format containing a pair of G components, an R 874 component, and a B component, collectively encoding a 2{times}1 875 rectangle of unsigned normalized RGB texel data. 876 One G value is present at each _i_ coordinate, with the B and R values 877 shared across both G values and thus recorded at half the horizontal 878 resolution of the image. 879 This format has a 10-bit G component for the even _i_ coordinate in the 880 top 10 bits of the word in bytes 0..1, a 10-bit B component in the top 881 10 bits of the word in bytes 2..3, a 10-bit G component for the odd _i_ 882 coordinate in the top 10 bits of the word in bytes 4..5, and a 10-bit R 883 component in the top 10 bits of the word in bytes 6..7, with the bottom 884 6 bits of each word unused. 885 This format only supports images with a width that is a multiple of two. 886 For the purposes of the constraints on copy extents, this format is 887 treated as a compressed format with a 2{times}1 compressed texel block. 888 * ename:VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 specifies a 889 four-component, 64-bit format containing a pair of G components, an R 890 component, and a B component, collectively encoding a 2{times}1 891 rectangle of unsigned normalized RGB texel data. 892 One G value is present at each _i_ coordinate, with the B and R values 893 shared across both G values and thus recorded at half the horizontal 894 resolution of the image. 895 This format has a 10-bit B component in the top 10 bits of the word in 896 bytes 0..1, a 10-bit G component for the even _i_ coordinate in the top 897 10 bits of the word in bytes 2..3, a 10-bit R component in the top 10 898 bits of the word in bytes 4..5, and a 10-bit G component for the odd _i_ 899 coordinate in the top 10 bits of the word in bytes 6..7, with the bottom 900 6 bits of each word unused. 901 This format only supports images with a width that is a multiple of two. 902 For the purposes of the constraints on copy extents, this format is 903 treated as a compressed format with a 2{times}1 compressed texel block. 904 * ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 specifies an 905 unsigned normalized _multi-planar format_ that has a 10-bit G component 906 in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component 907 in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R 908 component in the top 10 bits of each 16-bit word of plane 2, with the 909 bottom 6 bits of each word unused. 910 The horizontal and vertical dimensions of the R and B planes are halved 911 relative to the image dimensions, and each R and B component is shared 912 with the G components for which latexmath:[\left\lfloor i_G \times 0.5 913 \right\rfloor = i_B = i_R] and latexmath:[\left\lfloor j_G \times 0.5 914 \right\rfloor = j_B = j_R]. 915 The location of each plane when this image is in linear layout can be 916 determined via flink:vkGetImageSubresourceLayout, using 917 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 918 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 919 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 920 This format only supports images with a width and height that is a 921 multiple of two. 922 * ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 specifies an 923 unsigned normalized _multi-planar format_ that has a 10-bit G component 924 in the top 10 bits of each 16-bit word of plane 0, and a two-component, 925 32-bit BR plane 1 consisting of a 10-bit B component in the top 10 bits 926 of the word in bytes 0..1, and a 10-bit R component in the top 10 bits 927 of the word in bytes 2..3, with the bottom 6 bits of each word unused. 928 The horizontal and vertical dimensions of the BR plane are halved 929 relative to the image dimensions, and each R and B value is shared with 930 the G components for which latexmath:[\left\lfloor i_G \times 0.5 931 \right\rfloor = i_B = i_R] and latexmath:[\left\lfloor j_G \times 0.5 932 \right\rfloor = j_B = j_R]. 933 The location of each plane when this image is in linear layout can be 934 determined via flink:vkGetImageSubresourceLayout, using 935 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 936 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 937 This format only supports images with a width and height that is a 938 multiple of two. 939 * ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 specifies an 940 unsigned normalized _multi-planar format_ that has a 10-bit G component 941 in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component 942 in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R 943 component in the top 10 bits of each 16-bit word of plane 2, with the 944 bottom 6 bits of each word unused. 945 The horizontal dimension of the R and B plane is halved relative to the 946 image dimensions, and each R and B value is shared with the G components 947 for which latexmath:[\left\lfloor i_G \times 0.5 \right\rfloor = i_B = 948 i_R]. 949 The location of each plane when this image is in linear layout can be 950 determined via flink:vkGetImageSubresourceLayout, using 951 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 952 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 953 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 954 This format only supports images with a width that is a multiple of two. 955 * ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 specifies an 956 unsigned normalized _multi-planar format_ that has a 10-bit G component 957 in the top 10 bits of each 16-bit word of plane 0, and a two-component, 958 32-bit BR plane 1 consisting of a 10-bit B component in the top 10 bits 959 of the word in bytes 0..1, and a 10-bit R component in the top 10 bits 960 of the word in bytes 2..3, with the bottom 6 bits of each word unused. 961 The horizontal dimension of the BR plane is halved relative to the image 962 dimensions, and each R and B value is shared with the G components for 963 which latexmath:[\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R]. 964 The location of each plane when this image is in linear layout can be 965 determined via flink:vkGetImageSubresourceLayout, using 966 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 967 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 968 This format only supports images with a width that is a multiple of two. 969 * ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 specifies an 970 unsigned normalized _multi-planar format_ that has a 10-bit G component 971 in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component 972 in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R 973 component in the top 10 bits of each 16-bit word of plane 2, with the 974 bottom 6 bits of each word unused. 975 Each plane has the same dimensions and each R, G and B component 976 contributes to a single texel. 977 The location of each plane when this image is in linear layout can be 978 determined via flink:vkGetImageSubresourceLayout, using 979 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 980 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 981 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 982 * ename:VK_FORMAT_R12X4_UNORM_PACK16 specifies a one-component, 16-bit 983 unsigned normalized format that has a single 12-bit R component in the 984 top 12 bits of a 16-bit word, with the bottom 4 bits unused. 985 * ename:VK_FORMAT_R12X4G12X4_UNORM_2PACK16 specifies a two-component, 986 32-bit unsigned normalized format that has a 12-bit R component in the 987 top 12 bits of the word in bytes 0..1, and a 12-bit G component in the 988 top 12 bits of the word in bytes 2..3, with the bottom 4 bits of each 989 word unused. 990 * ename:VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 specifies a 991 four-component, 64-bit unsigned normalized format that has a 12-bit R 992 component in the top 12 bits of the word in bytes 0..1, a 12-bit G 993 component in the top 12 bits of the word in bytes 2..3, a 12-bit B 994 component in the top 12 bits of the word in bytes 4..5, and a 12-bit A 995 component in the top 12 bits of the word in bytes 6..7, with the bottom 996 4 bits of each word unused. 997 * ename:VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 specifies a 998 four-component, 64-bit format containing a pair of G components, an R 999 component, and a B component, collectively encoding a 2{times}1 1000 rectangle of unsigned normalized RGB texel data. 1001 One G value is present at each _i_ coordinate, with the B and R values 1002 shared across both G values and thus recorded at half the horizontal 1003 resolution of the image. 1004 This format has a 12-bit G component for the even _i_ coordinate in the 1005 top 12 bits of the word in bytes 0..1, a 12-bit B component in the top 1006 12 bits of the word in bytes 2..3, a 12-bit G component for the odd _i_ 1007 coordinate in the top 12 bits of the word in bytes 4..5, and a 12-bit R 1008 component in the top 12 bits of the word in bytes 6..7, with the bottom 1009 4 bits of each word unused. 1010 This format only supports images with a width that is a multiple of two. 1011 For the purposes of the constraints on copy extents, this format is 1012 treated as a compressed format with a 2{times}1 compressed texel block. 1013 * ename:VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 specifies a 1014 four-component, 64-bit format containing a pair of G components, an R 1015 component, and a B component, collectively encoding a 2{times}1 1016 rectangle of unsigned normalized RGB texel data. 1017 One G value is present at each _i_ coordinate, with the B and R values 1018 shared across both G values and thus recorded at half the horizontal 1019 resolution of the image. 1020 This format has a 12-bit B component in the top 12 bits of the word in 1021 bytes 0..1, a 12-bit G component for the even _i_ coordinate in the top 1022 12 bits of the word in bytes 2..3, a 12-bit R component in the top 12 1023 bits of the word in bytes 4..5, and a 12-bit G component for the odd _i_ 1024 coordinate in the top 12 bits of the word in bytes 6..7, with the bottom 1025 4 bits of each word unused. 1026 This format only supports images with a width that is a multiple of two. 1027 For the purposes of the constraints on copy extents, this format is 1028 treated as a compressed format with a 2{times}1 compressed texel block. 1029 * ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 specifies an 1030 unsigned normalized _multi-planar format_ that has a 12-bit G component 1031 in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component 1032 in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R 1033 component in the top 12 bits of each 16-bit word of plane 2, with the 1034 bottom 4 bits of each word unused. 1035 The horizontal and vertical dimensions of the R and B planes are halved 1036 relative to the image dimensions, and each R and B component is shared 1037 with the G components for which latexmath:[\left\lfloor i_G \times 0.5 1038 \right\rfloor = i_B = i_R] and latexmath:[\left\lfloor j_G \times 0.5 1039 \right\rfloor = j_B = j_R]. 1040 The location of each plane when this image is in linear layout can be 1041 determined via flink:vkGetImageSubresourceLayout, using 1042 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 1043 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 1044 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 1045 This format only supports images with a width and height that is a 1046 multiple of two. 1047 * ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 specifies an 1048 unsigned normalized _multi-planar format_ that has a 12-bit G component 1049 in the top 12 bits of each 16-bit word of plane 0, and a two-component, 1050 32-bit BR plane 1 consisting of a 12-bit B component in the top 12 bits 1051 of the word in bytes 0..1, and a 12-bit R component in the top 12 bits 1052 of the word in bytes 2..3, with the bottom 4 bits of each word unused. 1053 The horizontal and vertical dimensions of the BR plane are halved 1054 relative to the image dimensions, and each R and B value is shared with 1055 the G components for which latexmath:[\left\lfloor i_G \times 0.5 1056 \right\rfloor = i_B = i_R] and latexmath:[\left\lfloor j_G \times 0.5 1057 \right\rfloor = j_B = j_R]. 1058 The location of each plane when this image is in linear layout can be 1059 determined via flink:vkGetImageSubresourceLayout, using 1060 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 1061 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 1062 This format only supports images with a width and height that is a 1063 multiple of two. 1064 * ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 specifies an 1065 unsigned normalized _multi-planar format_ that has a 12-bit G component 1066 in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component 1067 in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R 1068 component in the top 12 bits of each 16-bit word of plane 2, with the 1069 bottom 4 bits of each word unused. 1070 The horizontal dimension of the R and B plane is halved relative to the 1071 image dimensions, and each R and B value is shared with the G components 1072 for which latexmath:[\left\lfloor i_G \times 0.5 \right\rfloor = i_B = 1073 i_R]. 1074 The location of each plane when this image is in linear layout can be 1075 determined via flink:vkGetImageSubresourceLayout, using 1076 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 1077 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 1078 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 1079 This format only supports images with a width that is a multiple of two. 1080 * ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 specifies an 1081 unsigned normalized _multi-planar format_ that has a 12-bit G component 1082 in the top 12 bits of each 16-bit word of plane 0, and a two-component, 1083 32-bit BR plane 1 consisting of a 12-bit B component in the top 12 bits 1084 of the word in bytes 0..1, and a 12-bit R component in the top 12 bits 1085 of the word in bytes 2..3, with the bottom 4 bits of each word unused. 1086 The horizontal dimension of the BR plane is halved relative to the image 1087 dimensions, and each R and B value is shared with the G components for 1088 which latexmath:[\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R]. 1089 The location of each plane when this image is in linear layout can be 1090 determined via flink:vkGetImageSubresourceLayout, using 1091 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 1092 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 1093 This format only supports images with a width that is a multiple of two. 1094 * ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 specifies an 1095 unsigned normalized _multi-planar format_ that has a 12-bit G component 1096 in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component 1097 in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R 1098 component in the top 12 bits of each 16-bit word of plane 2, with the 1099 bottom 4 bits of each word unused. 1100 Each plane has the same dimensions and each R, G and B component 1101 contributes to a single texel. 1102 The location of each plane when this image is in linear layout can be 1103 determined via flink:vkGetImageSubresourceLayout, using 1104 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 1105 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 1106 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 1107 * ename:VK_FORMAT_G16B16G16R16_422_UNORM specifies a four-component, 1108 64-bit format containing a pair of G components, an R component, and a B 1109 component, collectively encoding a 2{times}1 rectangle of unsigned 1110 normalized RGB texel data. 1111 One G value is present at each _i_ coordinate, with the B and R values 1112 shared across both G values and thus recorded at half the horizontal 1113 resolution of the image. 1114 This format has a 16-bit G component for the even _i_ coordinate in the 1115 word in bytes 0..1, a 16-bit B component in the word in bytes 2..3, a 1116 16-bit G component for the odd _i_ coordinate in the word in bytes 4..5, 1117 and a 16-bit R component in the word in bytes 6..7. 1118 This format only supports images with a width that is a multiple of two. 1119 For the purposes of the constraints on copy extents, this format is 1120 treated as a compressed format with a 2{times}1 compressed texel block. 1121 * ename:VK_FORMAT_B16G16R16G16_422_UNORM specifies a four-component, 1122 64-bit format containing a pair of G components, an R component, and a B 1123 component, collectively encoding a 2{times}1 rectangle of unsigned 1124 normalized RGB texel data. 1125 One G value is present at each _i_ coordinate, with the B and R values 1126 shared across both G values and thus recorded at half the horizontal 1127 resolution of the image. 1128 This format has a 16-bit B component in the word in bytes 0..1, a 16-bit 1129 G component for the even _i_ coordinate in the word in bytes 2..3, a 1130 16-bit R component in the word in bytes 4..5, and a 16-bit G component 1131 for the odd _i_ coordinate in the word in bytes 6..7. 1132 This format only supports images with a width that is a multiple of two. 1133 For the purposes of the constraints on copy extents, this format is 1134 treated as a compressed format with a 2{times}1 compressed texel block. 1135 * ename:VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM specifies an unsigned 1136 normalized _multi-planar format_ that has a 16-bit G component in each 1137 16-bit word of plane 0, a 16-bit B component in each 16-bit word of 1138 plane 1, and a 16-bit R component in each 16-bit word of plane 2. 1139 The horizontal and vertical dimensions of the R and B planes are halved 1140 relative to the image dimensions, and each R and B component is shared 1141 with the G components for which latexmath:[\left\lfloor i_G \times 0.5 1142 \right\rfloor = i_B = i_R] and latexmath:[\left\lfloor j_G \times 0.5 1143 \right\rfloor = j_B = j_R]. 1144 The location of each plane when this image is in linear layout can be 1145 determined via flink:vkGetImageSubresourceLayout, using 1146 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 1147 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 1148 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 1149 This format only supports images with a width and height that is a 1150 multiple of two. 1151 * ename:VK_FORMAT_G16_B16R16_2PLANE_420_UNORM specifies an unsigned 1152 normalized _multi-planar format_ that has a 16-bit G component in each 1153 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 1154 consisting of a 16-bit B component in the word in bytes 0..1, and a 1155 16-bit R component in the word in bytes 2..3. 1156 The horizontal and vertical dimensions of the BR plane are halved 1157 relative to the image dimensions, and each R and B value is shared with 1158 the G components for which latexmath:[\left\lfloor i_G \times 0.5 1159 \right\rfloor = i_B = i_R] and latexmath:[\left\lfloor j_G \times 0.5 1160 \right\rfloor = j_B = j_R]. 1161 The location of each plane when this image is in linear layout can be 1162 determined via flink:vkGetImageSubresourceLayout, using 1163 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 1164 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 1165 This format only supports images with a width and height that is a 1166 multiple of two. 1167 * ename:VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM specifies an unsigned 1168 normalized _multi-planar format_ that has a 16-bit G component in each 1169 16-bit word of plane 0, a 16-bit B component in each 16-bit word of 1170 plane 1, and a 16-bit R component in each 16-bit word of plane 2. 1171 The horizontal dimension of the R and B plane is halved relative to the 1172 image dimensions, and each R and B value is shared with the G components 1173 for which latexmath:[\left\lfloor i_G \times 0.5 \right\rfloor = i_B = 1174 i_R]. 1175 The location of each plane when this image is in linear layout can be 1176 determined via flink:vkGetImageSubresourceLayout, using 1177 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 1178 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 1179 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 1180 This format only supports images with a width that is a multiple of two. 1181 * ename:VK_FORMAT_G16_B16R16_2PLANE_422_UNORM specifies an unsigned 1182 normalized _multi-planar format_ that has a 16-bit G component in each 1183 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 1184 consisting of a 16-bit B component in the word in bytes 0..1, and a 1185 16-bit R component in the word in bytes 2..3. 1186 The horizontal dimension of the BR plane is halved relative to the image 1187 dimensions, and each R and B value is shared with the G components for 1188 which latexmath:[\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R]. 1189 The location of each plane when this image is in linear layout can be 1190 determined via flink:vkGetImageSubresourceLayout, using 1191 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 1192 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 1193 This format only supports images with a width that is a multiple of two. 1194 * ename:VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM specifies an unsigned 1195 normalized _multi-planar format_ that has a 16-bit G component in each 1196 16-bit word of plane 0, a 16-bit B component in each 16-bit word of 1197 plane 1, and a 16-bit R component in each 16-bit word of plane 2. 1198 Each plane has the same dimensions and each R, G and B component 1199 contributes to a single texel. 1200 The location of each plane when this image is in linear layout can be 1201 determined via flink:vkGetImageSubresourceLayout, using 1202 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, 1203 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the B plane, and 1204 ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. 1205endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1206ifdef::VK_EXT_ycbcr_2plane_444_formats[] 1207 * ename:VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT specifies an unsigned 1208 normalized _multi-planar format_ that has an 8-bit G component in plane 1209 0, and a two-component, 16-bit BR plane 1 consisting of an 8-bit B 1210 component in byte 0 and an 8-bit R component in byte 1. 1211 Both planes have the same dimensions and each R, G and B component 1212 contributes to a single texel. 1213 The location of each plane when this image is in linear layout can be 1214 determined via flink:vkGetImageSubresourceLayout, using 1215 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 1216 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 1217 * ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT specifies 1218 an unsigned normalized _multi-planar format_ that has a 10-bit G 1219 component in the top 10 bits of each 16-bit word of plane 0, and a 1220 two-component, 32-bit BR plane 1 consisting of a 10-bit B component in 1221 the top 10 bits of the word in bytes 0..1, and a 10-bit R component in 1222 the top 10 bits of the word in bytes 2..3, the bottom 6 bits of each 1223 word unused. 1224 Both planes have the same dimensions and each R, G and B component 1225 contributes to a single texel. 1226 The location of each plane when this image is in linear layout can be 1227 determined via flink:vkGetImageSubresourceLayout, using 1228 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 1229 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 1230 * ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT specifies 1231 an unsigned normalized _multi-planar format_ that has a 12-bit G 1232 component in the top 12 bits of each 16-bit word of plane 0, and a 1233 two-component, 32-bit BR plane 1 consisting of a 12-bit B component in 1234 the top 12 bits of the word in bytes 0..1, and a 12-bit R component in 1235 the top 12 bits of the word in bytes 2..3, the bottom 4 bits of each 1236 word unused. 1237 Both planes have the same dimensions and each R, G and B component 1238 contributes to a single texel. 1239 The location of each plane when this image is in linear layout can be 1240 determined via flink:vkGetImageSubresourceLayout, using 1241 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 1242 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 1243 * ename:VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT specifies an unsigned 1244 normalized _multi-planar format_ that has a 16-bit G component in each 1245 16-bit word of plane 0, and a two-component, 32-bit BR plane 1 1246 consisting of a 16-bit B component in the word in bytes 0..1, and a 1247 16-bit R component in the word in bytes 2..3. 1248 Both planes have the same dimensions and each R, G and B component 1249 contributes to a single texel. 1250 The location of each plane when this image is in linear layout can be 1251 determined via flink:vkGetImageSubresourceLayout, using 1252 ename:VK_IMAGE_ASPECT_PLANE_0_BIT for the G plane, and 1253 ename:VK_IMAGE_ASPECT_PLANE_1_BIT for the BR plane. 1254endif::VK_EXT_ycbcr_2plane_444_formats[] 1255ifdef::VK_IMG_format_pvrtc[] 1256 * ename:VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG specifies a four-component, 1257 PVRTC compressed format where each 64-bit compressed texel block encodes 1258 an 8{times}4 rectangle of unsigned normalized RGBA texel data. 1259 * ename:VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG specifies a four-component, 1260 PVRTC compressed format where each 64-bit compressed texel block encodes 1261 a 4{times}4 rectangle of unsigned normalized RGBA texel data. 1262 * ename:VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG specifies a four-component, 1263 PVRTC compressed format where each 64-bit compressed texel block encodes 1264 an 8{times}4 rectangle of unsigned normalized RGBA texel data. 1265 * ename:VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG specifies a four-component, 1266 PVRTC compressed format where each 64-bit compressed texel block encodes 1267 a 4{times}4 rectangle of unsigned normalized RGBA texel data. 1268 * ename:VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG specifies a four-component, 1269 PVRTC compressed format where each 64-bit compressed texel block encodes 1270 an 8{times}4 rectangle of unsigned normalized RGBA texel data with sRGB 1271 nonlinear encoding applied to the RGB components. 1272 * ename:VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG specifies a four-component, 1273 PVRTC compressed format where each 64-bit compressed texel block encodes 1274 a 4{times}4 rectangle of unsigned normalized RGBA texel data with sRGB 1275 nonlinear encoding applied to the RGB components. 1276 * ename:VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG specifies a four-component, 1277 PVRTC compressed format where each 64-bit compressed texel block encodes 1278 an 8{times}4 rectangle of unsigned normalized RGBA texel data with sRGB 1279 nonlinear encoding applied to the RGB components. 1280 * ename:VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG specifies a four-component, 1281 PVRTC compressed format where each 64-bit compressed texel block encodes 1282 a 4{times}4 rectangle of unsigned normalized RGBA texel data with sRGB 1283 nonlinear encoding applied to the RGB components. 1284endif::VK_IMG_format_pvrtc[] 1285 1286-- 1287 1288 1289ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1290 1291[[formats-compatible-planes]] 1292=== Compatible formats of planes of multi-planar formats 1293 1294Individual planes of multi-planar formats are _compatible_ with single-plane 1295formats if they occupy the same number of bits per texel block. 1296In the following table, individual planes of a _multi-planar_ format are 1297compatible with the format listed against the relevant plane index for that 1298multi-planar format, and any format compatible with the listed single-plane 1299format according to <<formats-compatibility-classes, Format Compatibility 1300Classes>>. 1301 1302.Plane Format Compatibility Table 1303[width="95%",cols="1,6,3,3",options="header"] 1304|==== 1305^| Plane ^| Compatible format for plane ^| Width relative to the width _w_ of the plane with the largest dimensions ^| Height relative to the height _h_ of the plane with the largest dimensions 13064+| *ename:VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM* 1307^| 0 ^| ename:VK_FORMAT_R8_UNORM ^| w ^| h 1308^| 1 ^| ename:VK_FORMAT_R8_UNORM ^| w/2 ^| h/2 1309^| 2 ^| ename:VK_FORMAT_R8_UNORM ^| w/2 ^| h/2 13104+| *ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM* 1311^| 0 ^| ename:VK_FORMAT_R8_UNORM ^| w ^| h 1312^| 1 ^| ename:VK_FORMAT_R8G8_UNORM ^| w/2 ^| h/2 13134+| *ename:VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM* 1314^| 0 ^| ename:VK_FORMAT_R8_UNORM ^| w ^| h 1315^| 1 ^| ename:VK_FORMAT_R8_UNORM ^| w/2 ^| h 1316^| 2 ^| ename:VK_FORMAT_R8_UNORM ^| w/2 ^| h 13174+| *ename:VK_FORMAT_G8_B8R8_2PLANE_422_UNORM* 1318^| 0 ^| ename:VK_FORMAT_R8_UNORM ^| w ^| h 1319^| 1 ^| ename:VK_FORMAT_R8G8_UNORM ^| w/2 ^| h 13204+| *ename:VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM* 1321^| 0 ^| ename:VK_FORMAT_R8_UNORM ^| w ^| h 1322^| 1 ^| ename:VK_FORMAT_R8_UNORM ^| w ^| h 1323^| 2 ^| ename:VK_FORMAT_R8_UNORM ^| w ^| h 13244+| *ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16* 1325^| 0 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16 ^| w ^| h 1326^| 1 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16 ^| w/2 ^| h/2 1327^| 2 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16 ^| w/2 ^| h/2 13284+| *ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16* 1329^| 0 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16 ^| w ^| h 1330^| 1 ^| ename:VK_FORMAT_R10X6G10X6_UNORM_2PACK16 ^| w/2 ^| h/2 13314+| *ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16* 1332^| 0 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16 ^| w ^| h 1333^| 1 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16 ^| w/2 ^| h 1334^| 2 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16 ^| w/2 ^| h 13354+| *ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16* 1336^| 0 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16 ^| w ^| h 1337^| 1 ^| ename:VK_FORMAT_R10X6G10X6_UNORM_2PACK16 ^| w/2 ^| h 13384+| *ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16* 1339^| 0 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16 ^| w ^| h 1340^| 1 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16 ^| w ^| h 1341^| 2 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16 ^| w ^| h 13424+| *ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16* 1343^| 0 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16 ^| w ^| h 1344^| 1 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16 ^| w/2 ^| h/2 1345^| 2 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16 ^| w/2 ^| h/2 13464+| *ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16* 1347^| 0 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16 ^| w ^| h 1348^| 1 ^| ename:VK_FORMAT_R12X4G12X4_UNORM_2PACK16 ^| w/2 ^| h/2 13494+| *ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16* 1350^| 0 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16 ^| w ^| h 1351^| 1 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16 ^| w/2 ^| h 1352^| 2 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16 ^| w/2 ^| h 13534+| *ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16* 1354^| 0 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16 ^| w ^| h 1355^| 1 ^| ename:VK_FORMAT_R12X4G12X4_UNORM_2PACK16 ^| w/2 ^| h 13564+| *ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16* 1357^| 0 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16 ^| w ^| h 1358^| 1 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16 ^| w ^| h 1359^| 2 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16 ^| w ^| h 13604+| *ename:VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM* 1361^| 0 ^| ename:VK_FORMAT_R16_UNORM ^| w ^| h 1362^| 1 ^| ename:VK_FORMAT_R16_UNORM ^| w/2 ^| h/2 1363^| 2 ^| ename:VK_FORMAT_R16_UNORM ^| w/2 ^| h/2 13644+| *ename:VK_FORMAT_G16_B16R16_2PLANE_420_UNORM* 1365^| 0 ^| ename:VK_FORMAT_R16_UNORM ^| w ^| h 1366^| 1 ^| ename:VK_FORMAT_R16G16_UNORM ^| w/2 ^| h/2 13674+| *ename:VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM* 1368^| 0 ^| ename:VK_FORMAT_R16_UNORM ^| w ^| h 1369^| 1 ^| ename:VK_FORMAT_R16_UNORM ^| w/2 ^| h 1370^| 2 ^| ename:VK_FORMAT_R16_UNORM ^| w/2 ^| h 13714+| *ename:VK_FORMAT_G16_B16R16_2PLANE_422_UNORM* 1372^| 0 ^| ename:VK_FORMAT_R16_UNORM ^| w ^| h 1373^| 1 ^| ename:VK_FORMAT_R16G16_UNORM ^| w/2 ^| h 13744+| *ename:VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM* 1375^| 0 ^| ename:VK_FORMAT_R16_UNORM ^| w ^| h 1376^| 1 ^| ename:VK_FORMAT_R16_UNORM ^| w ^| h 1377^| 2 ^| ename:VK_FORMAT_R16_UNORM ^| w ^| h 1378ifdef::VK_EXT_ycbcr_2plane_444_formats[] 13794+| *ename:VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT* 1380^| 0 ^| ename:VK_FORMAT_R8_UNORM ^| w ^| h 1381^| 1 ^| ename:VK_FORMAT_R8G8_UNORM ^| w ^| h 13824+| *ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT* 1383^| 0 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16 ^| w ^| h 1384^| 1 ^| ename:VK_FORMAT_R10X6G10X6_UNORM_2PACK16 ^| w ^| h 13854+| *ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT* 1386^| 0 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16 ^| w ^| h 1387^| 1 ^| ename:VK_FORMAT_R12X4G12X4_UNORM_2PACK16 ^| w ^| h 13884+| *ename:VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT* 1389^| 0 ^| ename:VK_FORMAT_R16_UNORM ^| w ^| h 1390^| 1 ^| ename:VK_FORMAT_R16G16_UNORM ^| w ^| h 1391endif::VK_EXT_ycbcr_2plane_444_formats[] 1392|==== 1393 1394endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1395 1396 1397[[formats-packed]] 1398=== Packed Formats 1399 1400For the purposes of address alignment when accessing buffer memory 1401containing vertex attribute or texel data, the following formats are 1402considered _packed_ - components of the texels or attributes are stored in 1403bitfields packed into one or more 8-, 16-, or 32-bit fundamental data type. 1404 1405 * <<formats-packed-8-bit,Packed into 8-bit data types>>: 1406 ** ename:VK_FORMAT_R4G4_UNORM_PACK8 1407 * <<formats-packed-16-bit,Packed into 16-bit data types>>: 1408 ** ename:VK_FORMAT_R4G4B4A4_UNORM_PACK16 1409 ** ename:VK_FORMAT_B4G4R4A4_UNORM_PACK16 1410ifdef::VK_EXT_4444_formats[] 1411 ** ename:VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT 1412 ** ename:VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT 1413endif::VK_EXT_4444_formats[] 1414 ** ename:VK_FORMAT_R5G6B5_UNORM_PACK16 1415 ** ename:VK_FORMAT_B5G6R5_UNORM_PACK16 1416 ** ename:VK_FORMAT_R5G5B5A1_UNORM_PACK16 1417 ** ename:VK_FORMAT_B5G5R5A1_UNORM_PACK16 1418 ** ename:VK_FORMAT_A1R5G5B5_UNORM_PACK16 1419ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1420 ** ename:VK_FORMAT_R10X6_UNORM_PACK16 1421 ** ename:VK_FORMAT_R12X4_UNORM_PACK16 1422 ** ename:VK_FORMAT_R10X6G10X6_UNORM_2PACK16 1423 ** ename:VK_FORMAT_R12X4G12X4_UNORM_2PACK16 1424 ** ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 1425 ** ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 1426 ** ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 1427 ** ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 1428 ** ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 1429 ** ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 1430 ** ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 1431 ** ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 1432 ** ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 1433 ** ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 1434 ** ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT 1435 ** ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT 1436 ** ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 1437 ** ename:VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 1438 ** ename:VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 1439 ** ename:VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 1440 ** ename:VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 1441 ** ename:VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 1442endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1443 * <<formats-packed-32-bit,Packed into 32-bit data types>>: 1444 ** ename:VK_FORMAT_A8B8G8R8_UNORM_PACK32 1445 ** ename:VK_FORMAT_A8B8G8R8_SNORM_PACK32 1446 ** ename:VK_FORMAT_A8B8G8R8_USCALED_PACK32 1447 ** ename:VK_FORMAT_A8B8G8R8_SSCALED_PACK32 1448 ** ename:VK_FORMAT_A8B8G8R8_UINT_PACK32 1449 ** ename:VK_FORMAT_A8B8G8R8_SINT_PACK32 1450 ** ename:VK_FORMAT_A8B8G8R8_SRGB_PACK32 1451 ** ename:VK_FORMAT_A2R10G10B10_UNORM_PACK32 1452 ** ename:VK_FORMAT_A2R10G10B10_SNORM_PACK32 1453 ** ename:VK_FORMAT_A2R10G10B10_USCALED_PACK32 1454 ** ename:VK_FORMAT_A2R10G10B10_SSCALED_PACK32 1455 ** ename:VK_FORMAT_A2R10G10B10_UINT_PACK32 1456 ** ename:VK_FORMAT_A2R10G10B10_SINT_PACK32 1457 ** ename:VK_FORMAT_A2B10G10R10_UNORM_PACK32 1458 ** ename:VK_FORMAT_A2B10G10R10_SNORM_PACK32 1459 ** ename:VK_FORMAT_A2B10G10R10_USCALED_PACK32 1460 ** ename:VK_FORMAT_A2B10G10R10_SSCALED_PACK32 1461 ** ename:VK_FORMAT_A2B10G10R10_UINT_PACK32 1462 ** ename:VK_FORMAT_A2B10G10R10_SINT_PACK32 1463 ** ename:VK_FORMAT_B10G11R11_UFLOAT_PACK32 1464 ** ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 1465 ** ename:VK_FORMAT_X8_D24_UNORM_PACK32 1466 1467 1468=== Identification of Formats 1469 1470A "`format`" is represented by a single enum value. 1471The name of a format is usually built up by using the following pattern: 1472 1473.... 1474 VK_FORMAT_{component-format|compression-scheme}_{numeric-format} 1475.... 1476 1477The component-format indicates either the size of the R, G, B, and A 1478components (if they are present) in the case of a color format, or the size 1479of the depth (D) and stencil (S) components (if they are present) in the 1480case of a depth/stencil format (see below). 1481An X indicates a component that is unused, but may: be present for padding. 1482 1483<<< 1484 1485[[formats-numericformat]] 1486.Interpretation of Numeric Format 1487[width="95%",cols="2,3,10",options="header"] 1488|==== 1489| Numeric format | SPIR-V _Sampled Type_ | Description 1490| etext:UNORM | OpTypeFloat | The components are unsigned normalized values in the range [eq]#[0,1]# 1491| etext:SNORM | OpTypeFloat | The components are signed normalized values in the range [eq]#[-1,1]# 1492| etext:USCALED | OpTypeFloat | The components are unsigned integer values that get converted to floating-point in the range [0,2^n^-1] 1493| etext:SSCALED | OpTypeFloat | The components are signed integer values that get converted to floating-point in the range [-2^n-1^,2^n-1^-1] 1494| etext:UINT | OpTypeInt | The components are unsigned integer values in the range [0,2^n^-1] 1495| etext:SINT | OpTypeInt | The components are signed integer values in the range [-2^n-1^,2^n-1^-1] 1496| etext:UFLOAT | OpTypeFloat | The components are unsigned floating-point numbers (used by packed, shared exponent, and some compressed formats) 1497| etext:SFLOAT | OpTypeFloat | The components are signed floating-point numbers 1498| etext:SRGB | OpTypeFloat | The R, G, and B components are unsigned normalized values that represent values using sRGB nonlinear encoding, while the A component (if one exists) is a regular unsigned normalized value 14993+| [eq]#n# is the number of bits in the component. 1500|==== 1501 1502The suffix etext:_PACKnn indicates that the format is packed into an 1503underlying type with etext:nn bits. 1504ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1505The suffix etext:_mPACKnn is a short-hand that indicates that the format has 1506etext:m groups of components (which may or may not be stored in separate 1507_planes_) that are each packed into an underlying type with etext:nn bits. 1508endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1509 1510The suffix etext:_BLOCK indicates that the format is a block-compressed 1511format, with the representation of multiple pixels encoded interdependently 1512within a region. 1513 1514[[formats-compressionscheme]] 1515.Interpretation of Compression Scheme 1516[width="95%",cols="2,10",options="header"] 1517|==== 1518| Compression scheme | Description 1519| etext:BC | Block Compression. See <<appendix-compressedtex-bc>>. 1520| etext:ETC2 | Ericsson Texture Compression. See <<appendix-compressedtex-etc2>>. 1521| etext:EAC | ETC2 Alpha Compression. See <<appendix-compressedtex-etc2>>. 1522| etext:ASTC | Adaptive Scalable Texture Compression (LDR Profile). See <<appendix-compressedtex-astc>>. 1523|==== 1524 1525ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1526For _multi-planar_ images, the components in separate _planes_ are separated 1527by underscores, and the number of planes is indicated by the addition of a 1528etext:_2PLANE or etext:_3PLANE suffix. 1529Similarly, the separate aspects of depth-stencil formats are separated by 1530underscores, although these are not considered separate planes. 1531Formats are suffixed by etext:_422 to indicate that planes other than the 1532first are reduced in size by a factor of two horizontally or that the R and 1533B values appear at half the horizontal frequency of the G values, etext:_420 1534to indicate that planes other than the first are reduced in size by a factor 1535of two both horizontally and vertically, and etext:_444 for consistency to 1536indicate that all three planes of a three-planar image are the same size. 1537 1538[NOTE] 1539.Note 1540==== 1541No common format has a single plane containing both R and B components but 1542does not store these components at reduced horizontal resolution. 1543==== 1544endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1545 1546 1547[[texel-block-size]] 1548=== Representation and Texel Block Size 1549 1550Color formats must: be represented in memory in exactly the form indicated 1551by the format's name. 1552This means that promoting one format to another with more bits per component 1553and/or additional components must: not occur for color formats. 1554Depth/stencil formats have more relaxed requirements as discussed 1555<<formats-depth-stencil,below>>. 1556 1557Each format has a _texel block size_, the number of bytes used to store one 1558_texel block_ (a single addressable element of an uncompressed image, or a 1559single compressed block of a compressed image). 1560The texel block size for each format is shown in the 1561<<formats-compatibility, Compatible formats>> table. 1562 1563The representation of non-packed formats is that the first component 1564specified in the name of the format is in the lowest memory addresses and 1565the last component specified is in the highest memory addresses. 1566See <<formats-non-packed,Byte mappings for non-packed/compressed color 1567formats>>. 1568The in-memory ordering of bytes within a component is determined by the host 1569endianness. 1570 1571[[formats-non-packed]] 1572.Byte mappings for non-packed/compressed color formats 1573[options="header",cols="16*1,10",width="100%"] 1574|==== 1575>|0 >|1 >|2 >|3 >|4 >|5 >|6 >|7 >|8 >|9 >|10 >|11 >|12 >|13 >|14 >|15 ^| {leftarrow} Byte 1576^|R 16+>s|etext:VK_FORMAT_R8_* 1577^|R ^|G 15+>s|etext:VK_FORMAT_R8G8_* 1578^|R ^|G ^|B 14+>s|etext:VK_FORMAT_R8G8B8_* 1579^|B ^|G ^|R 14+>s|etext:VK_FORMAT_B8G8R8_* 1580^|R ^|G ^|B ^|A 13+>s|etext:VK_FORMAT_R8G8B8A8_* 1581^|B ^|G ^|R ^|A 13+>s|etext:VK_FORMAT_B8G8R8A8_* 1582ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1583^|G~0~ ^|B ^|G~1~ ^|R 13+>s|ename:VK_FORMAT_G8B8G8R8_422_UNORM 1584^|B ^|G~0~ ^|R ^|G~1~ 13+>s|ename:VK_FORMAT_B8G8R8G8_422_UNORM 1585endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 15862+^|R 15+>s|etext:VK_FORMAT_R16_* 15872+^|R 2+^|G 13+>s|etext:VK_FORMAT_R16G16_* 15882+^|R 2+^|G 2+^|B 11+>s|etext:VK_FORMAT_R16G16B16_* 15892+^|R 2+^|G 2+^|B 2+^|A 9+>s|etext:VK_FORMAT_R16G16B16A16_* 1590ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 15912+^|G~0~ 2+^|B 2+^|G~1~ 2+^|R 9+>s|etext:VK_FORMAT_G10X6B10X6G10X6R10X6_4PACK16_422_UNORM 1592etext:VK_FORMAT_G12X4B12X4G12X4R12X4_4PACK16_422_UNORM 1593etext:VK_FORMAT_G16B16G16R16_UNORM 15942+^|B 2+^|G~0~ 2+^|R 2+^|G~1~ 9+>s|etext:VK_FORMAT_B10X6G10X6R10X6G10X6_4PACK16_422_UNORM 1595etext:VK_FORMAT_B12X4G12X4R12X4G12X4_4PACK16_422_UNORM 1596ename:VK_FORMAT_B16G16R16G16_422_UNORM 1597endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 15984+^|R 13+>s|etext:VK_FORMAT_R32_* 15994+^|R 4+^|G 9+>s|etext:VK_FORMAT_R32G32_* 16004+^|R 4+^|G 4+^|B 5+>s|etext:VK_FORMAT_R32G32B32_* 16014+^|R 4+^|G 4+^|B 4+^|A >s|etext:VK_FORMAT_R32G32B32A32_* 16028+^|R 9+>s|etext:VK_FORMAT_R64_* 16038+^|R 8+^|G >s|etext:VK_FORMAT_R64G64_* 160417+^s|etext:VK_FORMAT_R64G64B64_* as etext:VK_FORMAT_R64G64_* but with B in bytes 16-23 160517+^s|etext:VK_FORMAT_R64G64B64A64_* as etext:VK_FORMAT_R64G64B64_* but with A in bytes 24-31 1606|==== 1607 1608Packed formats store multiple components within one underlying type. 1609The bit representation is that the first component specified in the name of 1610the format is in the most-significant bits and the last component specified 1611is in the least-significant bits of the underlying type. 1612The in-memory ordering of bytes comprising the underlying type is determined 1613by the host endianness. 1614 1615[[formats-packed-8-bit]] 1616.Bit mappings for packed 8-bit formats 1617[options="header",cols="8*1",width="100%"] 1618|==== 16198+^h| Bit 1620>|~7~ >|~6~ >|~5~ >|~4~ >|~3~ >|~2~ >|~1~ >|~0~ 16218+^h| ename:VK_FORMAT_R4G4_UNORM_PACK8 16224+^s|R 4+^s|G 1623^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1624^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1625|==== 1626 1627[[formats-packed-16-bit]] 1628.Bit mappings for packed 16-bit formats 1629[options="header",cols="16*1",width="100%"] 1630|==== 163116+^h| Bit 1632>|~15~ >|~14~ >|~13~ >|~12~ >|~11~ >|~10~ >|~9~ >|~8~ >|~7~ >|~6~ >|~5~ >|~4~ >|~3~ >|~2~ >|~1~ >|~0~ 163316+^h|ename:VK_FORMAT_R4G4B4A4_UNORM_PACK16 16344+^s|R 4+^s|G 4+^s|B 4+^s|A 1635^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1636^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1637^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1638^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 163916+^h|ename:VK_FORMAT_B4G4R4A4_UNORM_PACK16 16404+^s|B 4+^s|G 4+^s|R 4+^s|A 1641^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1642^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1643^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1644^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1645ifdef::VK_EXT_4444_formats[] 164616+^h|ename:VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT 16474+^s|A 4+^s|R 4+^s|G 4+^s|B 1648^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1649^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1650^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1651^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 165216+^h|ename:VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT 16534+^s|A 4+^s|B 4+^s|G 4+^s|R 1654^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1655^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1656^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1657^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1658endif::VK_EXT_4444_formats[] 165916+^h|ename:VK_FORMAT_R5G6B5_UNORM_PACK16 16605+^s|R 6+^s|G 5+^s|B 1661^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1662^| ~5~ ^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1663^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 166416+^h|ename:VK_FORMAT_B5G6R5_UNORM_PACK16 16655+^s|B 6+^s|G 5+^s|R 1666^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1667^| ~5~ ^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1668^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 166916+^h|ename:VK_FORMAT_R5G5B5A1_UNORM_PACK16 16705+^s|R 5+^s|G 5+^s|B 1+^s|A 1671^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1672^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1673^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1674^| ~0~ 167516+^h|ename:VK_FORMAT_B5G5R5A1_UNORM_PACK16 16765+^s|B 5+^s|G 5+^s|R 1+^s|A 1677^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1678^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1679^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1680^| ~0~ 168116+^h|ename:VK_FORMAT_A1R5G5B5_UNORM_PACK16 16821+^s|A 5+^s|R 5+^s|G 5+^s|B 1683^| ~0~ 1684^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1685^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1686^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1687ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 168816+^h|ename:VK_FORMAT_R10X6_UNORM_PACK16 168910+^s|R 6+^s|X 1690^| ~9~ ^| ~8~ ^| ~7~ ^| ~6~ ^| ~5~ 1691^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1692^| ~5~ ^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 169316+^h|ename:VK_FORMAT_R12X4_UNORM_PACK16 169412+^s|R 4+^s|X 1695^| ~11~ ^| ~10~ 1696^| ~9~ ^| ~8~ ^| ~7~ ^| ~6~ ^| ~5~ 1697^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1698^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~ 1699endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1700|==== 1701 1702[[formats-packed-32-bit]] 1703.Bit mappings for packed 32-bit formats 1704[cols="32*1",options="header"] 1705|==== 170632+^h|Bit 1707>|~31~ >|~30~ >|~29~ >|~28~ >|~27~ >|~26~ >|~25~ >|~24~ >|~23~ >|~22~ >|~21~ >|~20~ >|~19~ >|~18~ >|~17~ >|~16~ 1708>|~15~ >|~14~ >|~13~ >|~12~ >|~11~ >|~10~ >|~9~ >|~8~ >|~7~ >|~6~ >|~5~ >|~4~ >|~3~ >|~2~ >|~1~ >|~0~ 170932+^h|etext:VK_FORMAT_A8B8G8R8_*_PACK32 17108+^s|A 8+^s|B 8+^s|G 8+^s|R 1711^|~7~ ^|~6~ ^|~5~ ^|~4~ 1712^|~3~ ^|~2~ ^|~1~ ^|~0~ 1713^|~7~ ^|~6~ ^|~5~ ^|~4~ 1714^|~3~ ^|~2~ ^|~1~ ^|~0~ 1715^|~7~ ^|~6~ ^|~5~ ^|~4~ 1716^|~3~ ^|~2~ ^|~1~ ^|~0~ 1717^|~7~ ^|~6~ ^|~5~ ^|~4~ 1718^|~3~ ^|~2~ ^|~1~ ^|~0~ 171932+^h|etext:VK_FORMAT_A2R10G10B10_*_PACK32 17202+^s|A 10+^s|R 10+^s|G 10+^s|B 1721^|~1~ ^|~0~ 1722^|~9~ ^|~8~ ^|~7~ ^|~6~ ^|~5~ 1723^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 1724^|~9~ ^|~8~ ^|~7~ ^|~6~ ^|~5~ 1725^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 1726^|~9~ ^|~8~ ^|~7~ ^|~6~ ^|~5~ 1727^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 172832+^h|etext:VK_FORMAT_A2B10G10R10_*_PACK32 17292+^s|A 10+^s|B 10+^s|G 10+^s|R 1730^|~1~ ^|~0~ 1731^|~9~ ^|~8~ ^|~7~ ^|~6~ ^|~5~ 1732^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 1733^|~9~ ^|~8~ ^|~7~ ^|~6~ ^|~5~ 1734^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 1735^|~9~ ^|~8~ ^|~7~ ^|~6~ ^|~5~ 1736^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 173732+^h|ename:VK_FORMAT_B10G11R11_UFLOAT_PACK32 173810+^s|B 11+^s|G 11+^s|R 1739^|~9~ ^|~8~ ^|~7~ ^|~6~ ^|~5~ 1740^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 1741^|~10~ ^|~9~ ^|~8~ ^|~7~ ^|~6~ ^|~5~ 1742^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 1743^|~10~ ^|~9~ ^|~8~ ^|~7~ ^|~6~ ^|~5~ 1744^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 174532+^h|ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 17465+^s|E 9+^s|B 9+^s|G 9+^s|R 1747^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 1748^|~8~ ^|~7~ ^|~6~ ^|~5~ 1749^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 1750^|~8~ ^|~7~ ^|~6~ ^|~5~ 1751^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 1752^|~8~ ^|~7~ ^|~6~ ^|~5~ 1753^|~4~ ^|~3~ ^|~2~ ^|~1~ ^|~0~ 175432+^h|ename:VK_FORMAT_X8_D24_UNORM_PACK32 17558+^s|X 24+^s|D 1756^|~7~ ^|~6~ ^|~5~ ^|~4~ 1757^|~3~ ^|~2~ ^|~1~ ^|~0~ 1758^|~23~ ^|~22~ ^|~21~ ^|~20~ 1759^|~19~ ^|~18~ ^|~17~ ^|~16~ 1760^|~15~ ^|~14~ ^|~13~ ^|~12~ 1761^|~11~ ^|~10~ ^|~9~ ^|~8~ 1762^|~7~ ^|~6~ ^|~5~ ^|~4~ 1763^|~3~ ^|~2~ ^|~1~ ^|~0~ 1764|==== 1765 1766 1767[[formats-depth-stencil]] 1768=== Depth/Stencil Formats 1769 1770Depth/stencil formats are considered opaque and need not be stored in the 1771exact number of bits per texel or component ordering indicated by the format 1772enum. 1773However, implementations must: not substitute a different depth or stencil 1774precision than is described in the format (e.g. D16 must: not be implemented 1775as D24 or D32). 1776 1777 1778[[formats-compatibility-classes]] 1779=== Format Compatibility Classes 1780 1781Uncompressed color formats are _compatible_ with each other if they occupy 1782the same number of bits per texel block. 1783Compressed color formats are compatible with each other if the only 1784difference between them is the numerical type of the uncompressed pixels 1785(e.g. signed vs. unsigned, or SRGB vs. UNORM encoding). 1786Each depth/stencil format is only compatible with itself. 1787In the <<formats-compatibility,following>> table, all the formats in the 1788same row are compatible. 1789 1790 1791[[formats-compatibility]] 1792.Compatible Formats 1793[width="90%",cols="4,10",options="header"] 1794|==== 1795| Class, Texel Block Size, # Texels/Block | Formats 1796include::{generated}/formats/compatibility.txt[] 1797|==== 1798 1799 1800[[formats-properties]] 1801== Format Properties 1802 1803[open,refpage='vkGetPhysicalDeviceFormatProperties',desc='Lists physical device\'s format capabilities',type='protos'] 1804-- 1805To query supported format features which are properties of the physical 1806device, call: 1807 1808include::{generated}/api/protos/vkGetPhysicalDeviceFormatProperties.txt[] 1809 1810 * pname:physicalDevice is the physical device from which to query the 1811 format properties. 1812 * pname:format is the format whose properties are queried. 1813 * pname:pFormatProperties is a pointer to a slink:VkFormatProperties 1814 structure in which physical device properties for pname:format are 1815 returned. 1816 1817include::{generated}/validity/protos/vkGetPhysicalDeviceFormatProperties.txt[] 1818-- 1819 1820[open,refpage='VkFormatProperties',desc='Structure specifying image format properties',type='structs'] 1821-- 1822The sname:VkFormatProperties structure is defined as: 1823 1824include::{generated}/api/structs/VkFormatProperties.txt[] 1825 1826 * pname:linearTilingFeatures is a bitmask of elink:VkFormatFeatureFlagBits 1827 specifying features supported by images created with a pname:tiling 1828 parameter of ename:VK_IMAGE_TILING_LINEAR. 1829 * pname:optimalTilingFeatures is a bitmask of 1830 elink:VkFormatFeatureFlagBits specifying features supported by images 1831 created with a pname:tiling parameter of ename:VK_IMAGE_TILING_OPTIMAL. 1832 * pname:bufferFeatures is a bitmask of elink:VkFormatFeatureFlagBits 1833 specifying features supported by buffers. 1834 1835[NOTE] 1836.Note 1837==== 1838ifndef::VK_VERSION_1_1,VK_KHR_maintenance1[] 1839If no format feature flags are supported, then the only possible use would 1840be image transfers - which alone are not useful. 1841As such, if no format feature flags are supported, the format itself is not 1842supported, and images of that format cannot be created. 1843endif::VK_VERSION_1_1,VK_KHR_maintenance1[] 1844ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] 1845If no format feature flags are supported, the format itself is not 1846supported, and images of that format cannot be created. 1847endif::VK_VERSION_1_1,VK_KHR_maintenance1[] 1848==== 1849 1850If pname:format is a block-compressed format, then pname:bufferFeatures 1851must: not support any features for the format. 1852 1853ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1854If pname:format is not a multi-plane format then pname:linearTilingFeatures 1855and pname:optimalTilingFeatures must: not contain 1856ename:VK_FORMAT_FEATURE_DISJOINT_BIT. 1857endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1858 1859include::{generated}/validity/structs/VkFormatProperties.txt[] 1860-- 1861 1862[open,refpage='VkFormatFeatureFlagBits',desc='Bitmask specifying features supported by a buffer',type='enums'] 1863-- 1864Bits which can: be set in the slink:VkFormatProperties features 1865pname:linearTilingFeatures, pname:optimalTilingFeatures, 1866ifdef::VK_EXT_image_drm_format_modifier[] 1867slink:VkDrmFormatModifierPropertiesEXT::pname:drmFormatModifierTilingFeatures, 1868endif::VK_EXT_image_drm_format_modifier[] 1869and pname:bufferFeatures are: 1870 1871include::{generated}/api/enums/VkFormatFeatureFlagBits.txt[] 1872 1873These values 1874ifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 1875ifdef::VK_KHR_format_feature_flags2[] 1876all have the same meaning as the equivalently named values for 1877tlink:VkFormatFeatureFlags2KHR and 1878endif::VK_KHR_format_feature_flags2[] 1879endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 1880may: be set in 1881ifndef::VK_EXT_image_drm_format_modifier[] 1882pname:linearTilingFeatures and pname:optimalTilingFeatures, 1883endif::VK_EXT_image_drm_format_modifier[] 1884ifdef::VK_EXT_image_drm_format_modifier[] 1885pname:linearTilingFeatures, pname:optimalTilingFeatures, and 1886slink:VkDrmFormatModifierPropertiesEXT::pname:drmFormatModifierTilingFeatures, 1887endif::VK_EXT_image_drm_format_modifier[] 1888specifying that the features are supported by <<VkImage,images>> or 1889<<VkImageView,image views>> 1890ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1891or <<VkSamplerYcbcrConversion,sampler {YCbCr} conversion objects>> 1892endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1893created with the queried 1894flink:vkGetPhysicalDeviceFormatProperties::pname:format: 1895 1896 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT specifies that an image view 1897 can: be <<descriptorsets-sampledimage, sampled from>>. 1898 * ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT specifies that an image view 1899 can: be used as a <<descriptorsets-storageimage, storage image>>. 1900 * ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT specifies that an image 1901 view can: be used as storage image that supports atomic operations. 1902 * ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT specifies that an image 1903 view can: be used as a framebuffer color attachment and as an input 1904 attachment. 1905 * ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT specifies that an 1906 image view can: be used as a framebuffer color attachment that supports 1907 blending and as an input attachment. 1908 * ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT specifies that an 1909 image view can: be used as a framebuffer depth/stencil attachment and as 1910 an input attachment. 1911 * ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT specifies that an image can: be 1912 used as pname:srcImage for the 1913ifndef::VK_KHR_copy_commands2[] 1914 fname:vkCmdBlitImage command. 1915endif::VK_KHR_copy_commands2[] 1916ifdef::VK_KHR_copy_commands2[] 1917 fname:vkCmdBlitImage2KHR and fname:vkCmdBlitImage commands. 1918endif::VK_KHR_copy_commands2[] 1919 * ename:VK_FORMAT_FEATURE_BLIT_DST_BIT specifies that an image can: be 1920 used as pname:dstImage for the 1921ifndef::VK_KHR_copy_commands2[] 1922 fname:vkCmdBlitImage command. 1923endif::VK_KHR_copy_commands2[] 1924ifdef::VK_KHR_copy_commands2[] 1925 fname:vkCmdBlitImage2KHR and fname:vkCmdBlitImage commands. 1926endif::VK_KHR_copy_commands2[] 1927 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT specifies that 1928 if ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT is also set, an image view 1929 can: be used with a sampler that has either of pname:magFilter or 1930 pname:minFilter set to ename:VK_FILTER_LINEAR, or pname:mipmapMode set 1931 to ename:VK_SAMPLER_MIPMAP_MODE_LINEAR. 1932 If ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT is also set, an image can be 1933 used as the pname:srcImage to 1934ifndef::VK_KHR_copy_commands2[] 1935 fname:vkCmdBlitImage 1936endif::VK_KHR_copy_commands2[] 1937ifdef::VK_KHR_copy_commands2[] 1938 fname:vkCmdBlitImage2KHR and fname:vkCmdBlitImage 1939endif::VK_KHR_copy_commands2[] 1940 with a pname:filter of ename:VK_FILTER_LINEAR. 1941 This bit must: only be exposed for formats that also support the 1942 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT or 1943 ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT. 1944+ 1945If the format being queried is a depth/stencil format, this bit only 1946specifies that the depth aspect (not the stencil aspect) of an image of this 1947format supports linear filtering, and that linear filtering of the depth 1948aspect is supported whether depth compare is enabled in the sampler or not. 1949Where depth comparison is supported it may: be linear filtered whether this 1950bit is present or not, but where this bit is not present the filtered value 1951may: be computed in an implementation-dependent manner which differs from 1952the normal rules of linear filtering. 1953The resulting value must: be in the range [eq]#[0,1]# and should: be 1954proportional to, or a weighted average of, the number of comparison passes 1955or failures. 1956 1957ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] 1958 * ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT specifies that an image can: be 1959 used as a source image for <<copies, copy commands>>. 1960 * ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT specifies that an image can: be 1961 used as a destination image for <<copies, copy commands>> and <<clears, 1962 clear commands>>. 1963endif::VK_VERSION_1_1,VK_KHR_maintenance1[] 1964ifdef::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 1965 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT specifies 1966 sname:VkImage can: be used as a sampled image with a min or max 1967 elink:VkSamplerReductionMode. 1968 This bit must: only be exposed for formats that also support the 1969 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT. 1970endif::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 1971ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 1972 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT specifies 1973 that sname:VkImage can: be used with a sampler that has either of 1974 pname:magFilter or pname:minFilter set to ename:VK_FILTER_CUBIC_EXT, or 1975 be the source image for a blit with pname:filter set to 1976 ename:VK_FILTER_CUBIC_EXT. 1977 This bit must: only be exposed for formats that also support the 1978 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT. 1979 If the format being queried is a depth/stencil format, this only 1980 specifies that the depth aspect is cubic filterable. 1981endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 1982ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1983 * ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT specifies that an 1984 application can: define a <<samplers-YCbCr-conversion,sampler {YCbCr} 1985 conversion>> using this format as a source, and that an image of this 1986 format can: be used with a slink:VkSamplerYcbcrConversionCreateInfo 1987 pname:xChromaOffset and/or pname:yChromaOffset of 1988 ename:VK_CHROMA_LOCATION_MIDPOINT. 1989 Otherwise both pname:xChromaOffset and pname:yChromaOffset must: be 1990 ename:VK_CHROMA_LOCATION_COSITED_EVEN. 1991 If a format does not incorporate chroma downsampling (it is not a 1992 "`422`" or "`420`" format) but the implementation supports sampler 1993 {YCbCr} conversion for this format, the implementation must: set 1994 ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT. 1995 * ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT specifies that an 1996 application can: define a <<samplers-YCbCr-conversion,sampler {YCbCr} 1997 conversion>> using this format as a source, and that an image of this 1998 format can: be used with a slink:VkSamplerYcbcrConversionCreateInfo 1999 pname:xChromaOffset and/or pname:yChromaOffset of 2000 ename:VK_CHROMA_LOCATION_COSITED_EVEN. 2001 Otherwise both pname:xChromaOffset and pname:yChromaOffset must: be 2002 ename:VK_CHROMA_LOCATION_MIDPOINT. 2003 If neither ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT nor 2004 ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT is set, the 2005 application must: not define a <<samplers-YCbCr-conversion,sampler 2006 {YCbCr} conversion>> using this format as a source. 2007 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT 2008 specifies that an application can: define a 2009 <<samplers-YCbCr-conversion,sampler {YCbCr} conversion>> using this 2010 format as a source with pname:chromaFilter set to 2011 ename:VK_FILTER_LINEAR. 2012 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT 2013 specifies that the format can have different chroma, min, and mag 2014 filters. 2015 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT 2016 specifies that reconstruction is explicit, as described in 2017 <<textures-chroma-reconstruction>>. 2018 If this bit is not present, reconstruction is implicit by default. 2019 * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT 2020 specifies that reconstruction can: be forcibly made explicit by setting 2021 slink:VkSamplerYcbcrConversionCreateInfo::pname:forceExplicitReconstruction 2022 to ename:VK_TRUE. 2023 If the format being queried supports 2024 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT 2025 it must: also support 2026 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT. 2027 * ename:VK_FORMAT_FEATURE_DISJOINT_BIT specifies that a multi-planar image 2028 can: have the ename:VK_IMAGE_CREATE_DISJOINT_BIT set during image 2029 creation. 2030 An implementation must: not set ename:VK_FORMAT_FEATURE_DISJOINT_BIT for 2031 _single-plane formats_. 2032endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2033ifdef::VK_EXT_fragment_density_map[] 2034 * ename:VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT specifies that an 2035 image view can: be used as a 2036 <<renderpass-fragmentdensitymapattachment,fragment density map 2037 attachment>>. 2038endif::VK_EXT_fragment_density_map[] 2039ifdef::VK_KHR_fragment_shading_rate[] 2040 * ename:VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 2041 specifies that an image view can: be used as a 2042 <<primsrast-fragment-shading-rate-attachment, fragment shading rate 2043 attachment>>. 2044 An implementation must: not set this feature for formats with numeric 2045 type other than etext:*UINT, or set it as a buffer feature. 2046endif::VK_KHR_fragment_shading_rate[] 2047ifdef::VK_KHR_video_decode_queue[] 2048 * ename:VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR specifies that an 2049 image view with this format can: be used as an output for 2050 <<video-decode-operations,video decode operations>> 2051 * ename:VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR specifies that an image 2052 view with this format can: be used as a DPB for 2053 <<video-decode-operations,video decode operations>> 2054endif::VK_KHR_video_decode_queue[] 2055ifdef::VK_KHR_video_encode_queue[] 2056 * ename:VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR specifies that an 2057 image view with this format can: be used as an input to 2058 <<video-encode-operations,video encode operations>> 2059 * ename:VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR specifies that an image 2060 view with this format can: be used as a DPB for 2061 <<video-encode-operations,video encode operations>> 2062endif::VK_KHR_video_encode_queue[] 2063 2064[[buffer-compatible-format-features]] 2065 2066The following bits may: be set in pname:bufferFeatures, specifying that the 2067features are supported by <<VkBuffer,buffers>> or <<VkBufferView,buffer 2068views>> created with the queried 2069flink:vkGetPhysicalDeviceFormatProperties::pname:format: 2070 2071 * ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT specifies that the 2072 format can: be used to create a buffer view that can: be bound to a 2073 ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER descriptor. 2074 * ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT specifies that the 2075 format can: be used to create a buffer view that can: be bound to a 2076 ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER descriptor. 2077 * ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT specifies that 2078 atomic operations are supported on 2079 ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER with this format. 2080 * ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT specifies that the format can: 2081 be used as a vertex attribute format 2082 (sname:VkVertexInputAttributeDescription::pname:format). 2083ifdef::VK_KHR_acceleration_structure[] 2084 * ename:VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR 2085 specifies that the format can: be used as the vertex format when 2086 creating an <<acceleration-structure,acceleration structure>> 2087 (sname:VkAccelerationStructureGeometryTrianglesDataKHR::pname:vertexFormat). 2088 This format can: also be used as the vertex format in host memory when 2089 doing <<host-acceleration-structure, host acceleration structure>> 2090 builds. 2091endif::VK_KHR_acceleration_structure[] 2092 2093-- 2094 2095[open,refpage='VkFormatFeatureFlags',desc='Bitmask of VkFormatFeatureFlagBits',type='flags'] 2096-- 2097include::{generated}/api/flags/VkFormatFeatureFlags.txt[] 2098 2099tname:VkFormatFeatureFlags is a bitmask type for setting a mask of zero or 2100more elink:VkFormatFeatureFlagBits. 2101-- 2102 2103ifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 2104 2105[open,refpage='vkGetPhysicalDeviceFormatProperties2',desc='Lists physical device\'s format capabilities',type='protos'] 2106-- 2107To query supported format features which are properties of the physical 2108device, call: 2109 2110ifdef::VK_VERSION_1_1[] 2111include::{generated}/api/protos/vkGetPhysicalDeviceFormatProperties2.txt[] 2112endif::VK_VERSION_1_1[] 2113 2114ifdef::VK_VERSION_1_1+VK_KHR_get_physical_device_properties2[or the equivalent command] 2115 2116ifdef::VK_KHR_get_physical_device_properties2[] 2117include::{generated}/api/protos/vkGetPhysicalDeviceFormatProperties2KHR.txt[] 2118endif::VK_KHR_get_physical_device_properties2[] 2119 2120 * pname:physicalDevice is the physical device from which to query the 2121 format properties. 2122 * pname:format is the format whose properties are queried. 2123 * pname:pFormatProperties is a pointer to a slink:VkFormatProperties2 2124 structure in which physical device properties for pname:format are 2125 returned. 2126 2127fname:vkGetPhysicalDeviceFormatProperties2 behaves similarly to 2128flink:vkGetPhysicalDeviceFormatProperties, with the ability to return 2129extended information in a pname:pNext chain of output structures. 2130 2131include::{generated}/validity/protos/vkGetPhysicalDeviceFormatProperties2.txt[] 2132-- 2133 2134[open,refpage='VkFormatProperties2',desc='Structure specifying image format properties',type='structs'] 2135-- 2136The sname:VkFormatProperties2 structure is defined as: 2137 2138include::{generated}/api/structs/VkFormatProperties2.txt[] 2139 2140ifdef::VK_KHR_get_physical_device_properties2[] 2141or the equivalent 2142 2143include::{generated}/api/structs/VkFormatProperties2KHR.txt[] 2144endif::VK_KHR_get_physical_device_properties2[] 2145 2146 * pname:sType is the type of this structure. 2147 * pname:pNext is `NULL` or a pointer to a structure extending this 2148 structure. 2149 * pname:formatProperties is a slink:VkFormatProperties structure 2150 describing features supported by the requested format. 2151 2152include::{generated}/validity/structs/VkFormatProperties2.txt[] 2153-- 2154 2155ifdef::VK_EXT_image_drm_format_modifier[] 2156[open,refpage='VkDrmFormatModifierPropertiesListEXT',desc='Structure specifying the list of DRM format modifiers supported for a format',type='structs'] 2157-- 2158To obtain the list of <<glossary-drm-format-modifier,Linux DRM format 2159modifiers>> compatible with a elink:VkFormat, add a 2160slink:VkDrmFormatModifierPropertiesListEXT structure to the pname:pNext 2161chain of slink:VkFormatProperties2. 2162 2163The slink:VkDrmFormatModifierPropertiesListEXT structure is defined as: 2164 2165include::{generated}/api/structs/VkDrmFormatModifierPropertiesListEXT.txt[] 2166 2167 * pname:sType is the type of this structure. 2168 * pname:pNext is `NULL` or a pointer to a structure extending this 2169 structure. 2170 * pname:drmFormatModifierCount is an inout parameter related to the number 2171 of modifiers compatible with the pname:format, as described below. 2172 * pname:pDrmFormatModifierProperties is either `NULL` or a pointer to an 2173 array of slink:VkDrmFormatModifierPropertiesEXT structures. 2174 2175If pname:pDrmFormatModifierProperties is `NULL`, then the function returns 2176in pname:drmFormatModifierCount the number of modifiers compatible with the 2177queried pname:format. 2178Otherwise, the application must: set pname:drmFormatModifierCount to the 2179length of the array pname:pDrmFormatModifierProperties; the function will 2180write at most pname:drmFormatModifierCount elements to the array, and will 2181return in pname:drmFormatModifierCount the number of elements written. 2182 2183Among the elements in array pname:pDrmFormatModifierProperties, each 2184returned pname:drmFormatModifier must: be unique. 2185 2186include::{generated}/validity/structs/VkDrmFormatModifierPropertiesListEXT.txt[] 2187-- 2188 2189[open,refpage='VkDrmFormatModifierPropertiesEXT',desc='Structure specifying properties of a format when combined with a DRM format modifier',type='structs'] 2190-- 2191The slink:VkDrmFormatModifierPropertiesEXT structure describes properties of 2192a elink:VkFormat when that format is combined with a 2193<<glossary-drm-format-modifier,Linux DRM format modifier>>. 2194These properties, like those of slink:VkFormatProperties2, are independent 2195of any particular image. 2196 2197The slink:VkDrmFormatModifierPropertiesEXT structure is defined as: 2198 2199include::{generated}/api/structs/VkDrmFormatModifierPropertiesEXT.txt[] 2200 2201 * pname:drmFormatModifier is a _Linux DRM format modifier_. 2202 * pname:drmFormatModifierPlaneCount is the number of _memory planes_ in 2203 any image created with pname:format and pname:drmFormatModifier. 2204 An image's _memory planecount_ is distinct from its _format planecount_, 2205 as explained below. 2206 * pname:drmFormatModifierTilingFeatures is a bitmask of 2207 elink:VkFormatFeatureFlagBits that are supported by any image created 2208 with pname:format and pname:drmFormatModifier. 2209 2210The returned pname:drmFormatModifierTilingFeatures must: contain at least 2211one bit. 2212 2213The implementation must: not return etext:DRM_FORMAT_MOD_INVALID in 2214pname:drmFormatModifier. 2215 2216An image's _memory planecount_ (as returned by 2217pname:drmFormatModifierPlaneCount) is distinct from its _format planecount_ 2218(in the sense of <<formats-requiring-sampler-ycbcr-conversion,multi-planar>> 2219{YCbCr} formats). 2220In tlink:VkImageAspectFlags, each 2221`VK_IMAGE_ASPECT_MEMORY_PLANE__{ibit}__BIT_EXT` represents a _memory plane_ 2222and each `VK_IMAGE_ASPECT_PLANE__{ibit}__BIT` a _format plane_. 2223 2224An image's set of _format planes_ is an ordered partition of the image's 2225*content* into separable groups of format components. 2226The ordered partition is encoded in the name of each elink:VkFormat. 2227For example, ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM contains two _format 2228planes_; the first plane contains the green component and the second plane 2229contains the blue component and red component. 2230If the format name does not contain `PLANE`, then the format contains a 2231single plane; for example, ename:VK_FORMAT_R8G8B8A8_UNORM. 2232Some commands, such as flink:vkCmdCopyBufferToImage, do not operate on all 2233format components in the image, but instead operate only on the _format 2234planes_ explicitly chosen by the application and operate on each _format 2235plane_ independently. 2236 2237An image's set of _memory planes_ is an ordered partition of the image's 2238*memory* rather than the image's *content*. 2239Each _memory plane_ is a contiguous range of memory. 2240The union of an image's _memory planes_ is not necessarily contiguous. 2241 2242If an image is <<glossary-linear-resource,linear>>, then the partition is 2243the same for _memory planes_ and for _format planes_. 2244Therefore, if the returned pname:drmFormatModifier is 2245code:DRM_FORMAT_MOD_LINEAR, then pname:drmFormatModifierPlaneCount must: 2246equal the _format planecount_, and pname:drmFormatModifierTilingFeatures 2247must: be identical to the 2248slink:VkFormatProperties2::pname:linearTilingFeatures returned in the same 2249pname:pNext chain. 2250 2251If an image is <<glossary-linear-resource,non-linear>>, then the partition 2252of the image's *memory* into _memory planes_ is implementation-specific and 2253may: be unrelated to the partition of the image's *content* into _format 2254planes_. 2255For example, consider an image whose pname:format is 2256ename:VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, pname:tiling is 2257ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, whose pname:drmFormatModifier 2258is not code:DRM_FORMAT_MOD_LINEAR, and pname:flags lacks 2259ename:VK_IMAGE_CREATE_DISJOINT_BIT. 2260The image has 3 _format planes_, and commands such 2261flink:vkCmdCopyBufferToImage act on each _format plane_ independently as if 2262the data of each _format plane_ were separable from the data of the other 2263planes. 2264In a straightforward implementation, the implementation may: store the 2265image's content in 3 adjacent _memory planes_ where each _memory plane_ 2266corresponds exactly to a _format plane_. 2267However, the implementation may: also store the image's content in a single 2268_memory plane_ where all format components are combined using an 2269implementation-private block-compressed format; or the implementation may: 2270store the image's content in a collection of 7 adjacent _memory planes_ 2271using an implementation-private sharding technique. 2272Because the image is non-linear and non-disjoint, the implementation has 2273much freedom when choosing the image's placement in memory. 2274 2275The _memory planecount_ applies to function parameters and structures only 2276when the API specifies an explicit requirement on 2277pname:drmFormatModifierPlaneCount. 2278In all other cases, the _memory planecount_ is ignored. 2279 2280include::{generated}/validity/structs/VkDrmFormatModifierPropertiesEXT.txt[] 2281-- 2282 2283ifdef::VK_KHR_format_feature_flags2[] 2284[open,refpage='VkDrmFormatModifierPropertiesList2EXT',desc='Structure specifying the list of DRM format modifiers supported for a format',type='structs'] 2285-- 2286The list of <<glossary-drm-format-modifier,Linux DRM format modifiers>> 2287compatible with a elink:VkFormat can: be obtained by adding a 2288slink:VkDrmFormatModifierPropertiesList2EXT structure to the pname:pNext 2289chain of slink:VkFormatProperties2. 2290 2291The slink:VkDrmFormatModifierPropertiesList2EXT structure is defined as: 2292 2293include::{generated}/api/structs/VkDrmFormatModifierPropertiesList2EXT.txt[] 2294 2295 * pname:sType is the type of this structure. 2296 * pname:pNext is `NULL` or a pointer to a structure extending this 2297 structure. 2298 * pname:drmFormatModifierCount is an inout parameter related to the number 2299 of modifiers compatible with the pname:format, as described below. 2300 * pname:pDrmFormatModifierProperties is either `NULL` or a pointer to an 2301 array of slink:VkDrmFormatModifierProperties2EXT structures. 2302 2303If pname:pDrmFormatModifierProperties is `NULL`, the number of modifiers 2304compatible with the queried pname:format is returned in 2305pname:drmFormatModifierCount. 2306Otherwise, the application must: set pname:drmFormatModifierCount to the 2307length of the array pname:pDrmFormatModifierProperties; the function will 2308write at most pname:drmFormatModifierCount elements to the array, and will 2309return in pname:drmFormatModifierCount the number of elements written. 2310 2311Among the elements in array pname:pDrmFormatModifierProperties, each 2312returned pname:drmFormatModifier must: be unique. 2313 2314Among the elements in array pname:pDrmFormatModifierProperties, the bits 2315reported in pname:drmFormatModifierTilingFeatures must: include the bits 2316reported in the corresponding element of 2317sname:VkDrmFormatModifierPropertiesListEXT::pname:pDrmFormatModifierProperties. 2318 2319include::{generated}/validity/structs/VkDrmFormatModifierPropertiesList2EXT.txt[] 2320-- 2321 2322[open,refpage='VkDrmFormatModifierProperties2EXT',desc='Structure specifying properties of a format when combined with a DRM format modifier',type='structs'] 2323-- 2324The slink:VkDrmFormatModifierProperties2EXT structure describes properties 2325of a elink:VkFormat when that format is combined with a 2326<<glossary-drm-format-modifier,Linux DRM format modifier>>. 2327These properties, like those of slink:VkFormatProperties2, are independent 2328of any particular image. 2329 2330The slink:VkDrmFormatModifierPropertiesEXT structure is defined as: 2331 2332include::{generated}/api/structs/VkDrmFormatModifierProperties2EXT.txt[] 2333 2334 * pname:drmFormatModifier is a _Linux DRM format modifier_. 2335 * pname:drmFormatModifierPlaneCount is the number of _memory planes_ in 2336 any image created with pname:format and pname:drmFormatModifier. 2337 An image's _memory planecount_ is distinct from its _format planecount_, 2338 as explained below. 2339 * pname:drmFormatModifierTilingFeatures is a bitmask of 2340 elink:VkFormatFeatureFlagBits2KHR that are supported by any image 2341 created with pname:format and pname:drmFormatModifier. 2342include::{generated}/validity/structs/VkDrmFormatModifierProperties2EXT.txt[] 2343-- 2344endif::VK_KHR_format_feature_flags2[] 2345endif::VK_EXT_image_drm_format_modifier[] 2346 2347ifdef::VK_KHR_format_feature_flags2[] 2348[open,refpage='VkFormatProperties3KHR',desc='Structure specifying image format properties',type='structs'] 2349-- 2350 2351To query supported format extended features which are properties of the 2352physical device, add slink:VkFormatProperties3KHR structure to the 2353pname:pNext chain of slink:VkFormatProperties2. 2354 2355The slink:VkFormatProperties3KHR structure is defined as: 2356 2357include::{generated}/api/structs/VkFormatProperties3KHR.txt[] 2358 2359 * pname:linearTilingFeatures is a bitmask of 2360 elink:VkFormatFeatureFlagBits2KHR specifying features supported by 2361 images created with a pname:tiling parameter of 2362 ename:VK_IMAGE_TILING_LINEAR. 2363 * pname:optimalTilingFeatures is a bitmask of 2364 elink:VkFormatFeatureFlagBits2KHR specifying features supported by 2365 images created with a pname:tiling parameter of 2366 ename:VK_IMAGE_TILING_OPTIMAL. 2367 * pname:bufferFeatures is a bitmask of elink:VkFormatFeatureFlagBits2KHR 2368 specifying features supported by buffers. 2369 2370The bits reported in pname:linearTilingFeatures, pname:optimalTilingFeatures 2371and pname:bufferFeatures must: include the bits reported in the 2372corresponding fields of sname:VkFormatProperties2::pname:formatProperties. 2373 2374include::{generated}/validity/structs/VkFormatProperties3KHR.txt[] 2375-- 2376 2377[open,refpage='VkFormatFeatureFlagBits2KHR',desc='Bitmask specifying features supported by a buffer',type='enums'] 2378-- 2379Bits which can: be set in the slink:VkFormatProperties3KHR features 2380pname:linearTilingFeatures, pname:optimalTilingFeatures, and 2381pname:bufferFeatures are: 2382 2383include::{generated}/api/enums/VkFormatFeatureFlagBits2KHR.txt[] 2384 2385The following bits may: be set in pname:linearTilingFeatures and 2386pname:optimalTilingFeatures, specifying that the features are supported by 2387<<VkImage,images>> or <<VkImageView,image views>> 2388ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2389or <<VkSamplerYcbcrConversion,sampler {YCbCr} conversion objects>> 2390endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2391created with the queried 2392flink:vkGetPhysicalDeviceFormatProperties2::pname:format: 2393 2394 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR specifies that an image 2395 view can: be <<descriptorsets-sampledimage, sampled from>>. 2396 * ename:VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR specifies that an image 2397 view can: be used as a <<descriptorsets-storageimage, storage image>>. 2398 * ename:VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR specifies that an 2399 image view can: be used as storage image that supports atomic 2400 operations. 2401 * ename:VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR specifies that an 2402 image view can: be used as a framebuffer color attachment and as an 2403 input attachment. 2404 * ename:VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR specifies that 2405 an image view can: be used as a framebuffer color attachment that 2406 supports blending and as an input attachment. 2407 * ename:VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR specifies 2408 that an image view can: be used as a framebuffer depth/stencil 2409 attachment and as an input attachment. 2410 * ename:VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR specifies that an image can: 2411 be used as pname:srcImage for the 2412ifndef::VK_KHR_copy_commands2[] 2413 fname:vkCmdBlitImage command. 2414endif::VK_KHR_copy_commands2[] 2415ifdef::VK_KHR_copy_commands2[] 2416 fname:vkCmdBlitImage2KHR and fname:vkCmdBlitImage commands. 2417endif::VK_KHR_copy_commands2[] 2418 * ename:VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR specifies that an image can: 2419 be used as pname:dstImage for the 2420ifndef::VK_KHR_copy_commands2[] 2421 fname:vkCmdBlitImage command. 2422endif::VK_KHR_copy_commands2[] 2423ifdef::VK_KHR_copy_commands2[] 2424 fname:vkCmdBlitImage2KHR and fname:vkCmdBlitImage commands. 2425endif::VK_KHR_copy_commands2[] 2426 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR specifies 2427 that if ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR is also set, an 2428 image view can: be used with a sampler that has either of 2429 pname:magFilter or pname:minFilter set to ename:VK_FILTER_LINEAR, or 2430 pname:mipmapMode set to ename:VK_SAMPLER_MIPMAP_MODE_LINEAR. 2431 If ename:VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR is also set, an image can 2432 be used as the pname:srcImage to 2433ifndef::VK_KHR_copy_commands2[] 2434 fname:vkCmdBlitImage 2435endif::VK_KHR_copy_commands2[] 2436ifdef::VK_KHR_copy_commands2[] 2437 fname:vkCmdBlitImage2KHR and fname:vkCmdBlitImage 2438endif::VK_KHR_copy_commands2[] 2439 with a pname:filter of ename:VK_FILTER_LINEAR. 2440 This bit must: only be exposed for formats that also support the 2441 ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR or 2442 ename:VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR. 2443+ 2444If the format being queried is a depth/stencil format, this bit only 2445specifies that the depth aspect (not the stencil aspect) of an image of this 2446format supports linear filtering. 2447Where depth comparison is supported it may: be linear filtered whether this 2448bit is present or not, but where this bit is not present the filtered value 2449may: be computed in an implementation-dependent manner which differs from 2450the normal rules of linear filtering. 2451The resulting value must: be in the range [eq]#[0,1]# and should: be 2452proportional to, or a weighted average of, the number of comparison passes 2453or failures. 2454 2455ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] 2456 * ename:VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR specifies that an image 2457 can: be used as a source image for <<copies, copy commands>>. 2458 * ename:VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR specifies that an image 2459 can: be used as a destination image for <<copies, copy commands>> and 2460 <<clears, clear commands>>. 2461endif::VK_VERSION_1_1,VK_KHR_maintenance1[] 2462ifdef::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 2463 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR specifies 2464 sname:VkImage can: be used as a sampled image with a min or max 2465 elink:VkSamplerReductionMode. 2466 This bit must: only be exposed for formats that also support the 2467 ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR. 2468endif::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 2469ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 2470 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT specifies 2471 that sname:VkImage can: be used with a sampler that has either of 2472 pname:magFilter or pname:minFilter set to ename:VK_FILTER_CUBIC_EXT, or 2473 be the source image for a blit with pname:filter set to 2474 ename:VK_FILTER_CUBIC_EXT. 2475 This bit must: only be exposed for formats that also support the 2476 ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR. 2477 If the format being queried is a depth/stencil format, this only 2478 specifies that the depth aspect is cubic filterable. 2479endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 2480ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2481 * ename:VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR specifies that 2482 an application can: define a <<samplers-YCbCr-conversion,sampler {YCbCr} 2483 conversion>> using this format as a source, and that an image of this 2484 format can: be used with a slink:VkSamplerYcbcrConversionCreateInfo 2485 pname:xChromaOffset and/or pname:yChromaOffset of 2486 ename:VK_CHROMA_LOCATION_MIDPOINT. 2487 Otherwise both pname:xChromaOffset and pname:yChromaOffset must: be 2488 ename:VK_CHROMA_LOCATION_COSITED_EVEN. 2489 If a format does not incorporate chroma downsampling (it is not a 2490 "`422`" or "`420`" format) but the implementation supports sampler 2491 {YCbCr} conversion for this format, the implementation must: set 2492 ename:VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR. 2493 * ename:VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR specifies that 2494 an application can: define a <<samplers-YCbCr-conversion,sampler {YCbCr} 2495 conversion>> using this format as a source, and that an image of this 2496 format can: be used with a slink:VkSamplerYcbcrConversionCreateInfo 2497 pname:xChromaOffset and/or pname:yChromaOffset of 2498 ename:VK_CHROMA_LOCATION_COSITED_EVEN. 2499 Otherwise both pname:xChromaOffset and pname:yChromaOffset must: be 2500 ename:VK_CHROMA_LOCATION_MIDPOINT. 2501 If neither ename:VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR nor 2502 ename:VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR is set, the 2503 application must: not define a <<samplers-YCbCr-conversion,sampler 2504 {YCbCr} conversion>> using this format as a source. 2505 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR 2506 specifies that an application can: define a 2507 <<samplers-YCbCr-conversion,sampler {YCbCr} conversion>> using this 2508 format as a source with pname:chromaFilter set to 2509 ename:VK_FILTER_LINEAR. 2510 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR 2511 specifies that the format can have different chroma, min, and mag 2512 filters. 2513 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR 2514 specifies that reconstruction is explicit, as described in 2515 <<textures-chroma-reconstruction>>. 2516 If this bit is not present, reconstruction is implicit by default. 2517 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR 2518 specifies that reconstruction can: be forcibly made explicit by setting 2519 slink:VkSamplerYcbcrConversionCreateInfo::pname:forceExplicitReconstruction 2520 to ename:VK_TRUE. 2521 If the format being queried supports 2522 ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR 2523 it must: also support 2524 ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR. 2525 * ename:VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR specifies that a multi-planar 2526 image can: have the ename:VK_IMAGE_CREATE_DISJOINT_BIT set during image 2527 creation. 2528 An implementation must: not set 2529 ename:VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR for _single-plane formats_. 2530endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2531ifdef::VK_EXT_fragment_density_map[] 2532 * ename:VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT specifies that an 2533 image view can: be used as a 2534 <<renderpass-fragmentdensitymapattachment,fragment density map 2535 attachment>>. 2536endif::VK_EXT_fragment_density_map[] 2537ifdef::VK_KHR_fragment_shading_rate[] 2538 * ename:VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR 2539 specifies that an image view can: be used as a 2540 <<primsrast-fragment-shading-rate-attachment, fragment shading rate 2541 attachment>>. 2542 An implementation must: not set this feature for formats with numeric 2543 type other than etext:*UINT, or set it as a buffer feature. 2544endif::VK_KHR_fragment_shading_rate[] 2545ifdef::VK_KHR_video_decode_queue[] 2546 * ename:VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR specifies that an 2547 image view with this format can: be used as an output for 2548 <<video-decode-operations,video decode operations>> 2549 * ename:VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR specifies that an 2550 image view with this format can: be used as a DPB for 2551 <<video-decode-operations,video decode operations>> 2552endif::VK_KHR_video_decode_queue[] 2553ifdef::VK_KHR_video_encode_queue[] 2554 * ename:VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR specifies that an 2555 image view with this format can: be used as an input to 2556 <<video-encode-operations,video encode operations>> 2557 * ename:VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR specifies that an 2558 image view with this format can: be used as a DPB for 2559 <<video-encode-operations,video encode operations>> 2560endif::VK_KHR_video_encode_queue[] 2561 * ename:VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR specifies 2562 that image views created with this format can: be used as 2563 <<descriptorsets-storageimage, storage images>> for read operations 2564 without specifying a format. 2565 * ename:VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR specifies 2566 that image views created with this format can: be used as 2567 <<descriptorsets-storageimage, storage images>> for write operations 2568 without specifying a format. 2569 * ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR 2570 specifies that image views created with this format can: be used for 2571 depth comparison performed by code:OpImage*Dref instructions. 2572 2573The following bits may: be set in pname:bufferFeatures, specifying that the 2574features are supported by <<VkBuffer,buffers>> or <<VkBufferView,buffer 2575views>> created with the queried 2576flink:vkGetPhysicalDeviceFormatProperties2::pname:format: 2577 2578 * ename:VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR specifies that 2579 the format can: be used to create a buffer view that can: be bound to a 2580 ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER descriptor. 2581 * ename:VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR specifies that 2582 the format can: be used to create a buffer view that can: be bound to a 2583 ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER descriptor. 2584 * ename:VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR specifies 2585 that atomic operations are supported on 2586 ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER with this format. 2587 * ename:VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR specifies that the 2588 format can: be used as a vertex attribute format 2589 (sname:VkVertexInputAttributeDescription::pname:format). 2590ifdef::VK_KHR_acceleration_structure[] 2591 * ename:VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR 2592 specifies that the format can: be used as the vertex format when 2593 creating an <<acceleration-structure,acceleration structure>> 2594 (sname:VkAccelerationStructureGeometryTrianglesDataKHR::pname:vertexFormat). 2595 This format can: also be used as the vertex format in host memory when 2596 doing <<host-acceleration-structure, host acceleration structure>> 2597 builds. 2598endif::VK_KHR_acceleration_structure[] 2599-- 2600 2601[open,refpage='VkFormatFeatureFlags2KHR',desc='Bitmask of VkFormatFeatureFlagBits2KHR',type='flags'] 2602-- 2603include::{generated}/api/flags/VkFormatFeatureFlags2KHR.txt[] 2604 2605tname:VkFormatFeatureFlags2KHR is a bitmask type for setting a mask of zero 2606or more elink:VkFormatFeatureFlagBits2KHR. 2607-- 2608endif::VK_KHR_format_feature_flags2[] 2609endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 2610 2611 2612[[potential-format-features]] 2613=== Potential Format Features 2614 2615Some <<fundamentals-validusage,valid usage conditions>> depend on the format 2616features supported by an slink:VkImage whose elink:VkImageTiling is unknown. 2617In such cases the exact elink:VkFormatFeatureFlagBits supported by the 2618slink:VkImage cannot be determined, so the valid usage conditions are 2619expressed in terms of the _potential format features_ of the slink:VkImage 2620format. 2621 2622The _potential format features_ of a elink:VkFormat are defined as follows: 2623 2624 * The union of elink:VkFormatFeatureFlagBits 2625ifdef::VK_KHR_format_feature_flags2[] 2626 and elink:VkFormatFeatureFlagBits2KHR, 2627endif::VK_KHR_format_feature_flags2[] 2628 supported when the elink:VkImageTiling is ename:VK_IMAGE_TILING_OPTIMAL 2629ifdef::VK_EXT_image_drm_format_modifier[] 2630 , ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, 2631endif::VK_EXT_image_drm_format_modifier[] 2632 or ename:VK_IMAGE_TILING_LINEAR 2633ifdef::VK_ANDROID_external_memory_android_hardware_buffer[] 2634 if elink:VkFormat is not ename:VK_FORMAT_UNDEFINED 2635 * slink:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures 2636ifdef::VK_KHR_format_feature_flags2[] 2637 and 2638 slink:VkAndroidHardwareBufferFormatProperties2ANDROID::pname:formatFeatures 2639endif::VK_KHR_format_feature_flags2[] 2640 of a valid external format if elink:VkFormat is 2641 ename:VK_FORMAT_UNDEFINED 2642endif::VK_ANDROID_external_memory_android_hardware_buffer[] 2643 2644[[features-required-format-support]] 2645== Required Format Support 2646 2647Implementations must: support at least the following set of features on the 2648listed formats. 2649For images, these features must: be supported for every elink:VkImageType 2650(including arrayed and cube variants) unless otherwise noted. 2651These features are supported on existing formats without needing to 2652advertise an extension or needing to explicitly enable them. 2653Support for additional functionality beyond the requirements listed here is 2654queried using the flink:vkGetPhysicalDeviceFormatProperties command. 2655 2656[NOTE] 2657.Note 2658==== 2659Unless otherwise excluded below, the required formats are supported for all 2660tlink:VkImageCreateFlags values as long as those flag values are otherwise 2661allowed. 2662==== 2663 2664The following tables show which feature bits must: be supported for each 2665format. 2666ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] 2667Formats that are required to support 2668ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT must: also support 2669ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT and 2670ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT. 2671endif::VK_VERSION_1_1,VK_KHR_maintenance1[] 2672 2673.Key for format feature tables 2674[width="70%",cols="1,10"] 2675|==== 2676^|{sym1} | This feature must: be supported on the named format 2677^|{sym2} | This feature must: be supported on at least some 2678of the named formats, with more information in the table 2679where the symbol appears 2680^|{sym3} | This feature must: be supported with some caveats or 2681preconditions, with more information in the table where the symbol appears 2682|==== 2683 2684.Feature bits in pname:optimalTilingFeatures 2685[width="70%"] 2686|==== 2687ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] 2688|ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT 2689|ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT 2690endif::VK_VERSION_1_1,VK_KHR_maintenance1[] 2691|ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT 2692|ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT 2693|ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT 2694|ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT 2695|ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT 2696|ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT 2697|ename:VK_FORMAT_FEATURE_BLIT_DST_BIT 2698|ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT 2699|ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT 2700ifdef::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 2701|ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT 2702endif::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 2703|==== 2704 2705.Feature bits in pname:bufferFeatures 2706[width="70%"] 2707|==== 2708|ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT 2709|ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT 2710|ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT 2711|ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT 2712|==== 2713 2714<<< 2715 2716[[formats-mandatory-features-subbyte]] 2717.Mandatory format support: sub-byte components 2718[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 2719|==== 272013+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 272112+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 272211+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 272310+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 27249+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 27258+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 27267+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 27276+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 27285+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 27294+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 27303+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 27312+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 27321+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 2733s| Format 2734| ename:VK_FORMAT_UNDEFINED | | | | | | | | | | | | | 2735| ename:VK_FORMAT_R4G4_UNORM_PACK8 | | | | | | | | | | | | | 2736| ename:VK_FORMAT_R4G4B4A4_UNORM_PACK16 | | | | | | | | | | | | | 2737| ename:VK_FORMAT_B4G4R4A4_UNORM_PACK16 | {sym1} | {sym1} | {sym1} | | | | | | | | | | 2738| ename:VK_FORMAT_R5G6B5_UNORM_PACK16 | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | | 2739| ename:VK_FORMAT_B5G6R5_UNORM_PACK16 | | | | | | | | | | | | | 2740| ename:VK_FORMAT_R5G5B5A1_UNORM_PACK16 | | | | | | | | | | | | | 2741| ename:VK_FORMAT_B5G5R5A1_UNORM_PACK16 | | | | | | | | | | | | | 2742| ename:VK_FORMAT_A1R5G5B5_UNORM_PACK16 | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | | 2743ifdef::VK_EXT_4444_formats[] 2744| ename:VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT | {sym2} | {sym2} | {sym2} | | | | | | | | | | 2745| ename:VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT | {sym3} | {sym3} | {sym3} | | | | | | | | | | 274614+| Format features marked {sym2} must: be supported for 2747pname:optimalTilingFeatures if the sname:VkPhysicalDevice supports the 2748slink:VkPhysicalDevice4444FormatsFeaturesEXT::pname:formatA4R4G4B4 feature. 274914+| Format features marked {sym3} must: be supported for 2750pname:optimalTilingFeatures if the sname:VkPhysicalDevice supports the 2751slink:VkPhysicalDevice4444FormatsFeaturesEXT::pname:formatA4B4G4R4 feature. 2752endif::VK_EXT_4444_formats[] 2753|==== 2754 2755<<< 2756 2757[[formats-mandatory-features-2byte]] 2758.Mandatory format support: 1-3 byte-sized components 2759[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 2760|==== 276113+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 276212+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 276311+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 276410+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 27659+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 27668+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 27677+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 27686+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 27695+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 27704+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 27713+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 27722+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 27731+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 2774s| Format 2775| ename:VK_FORMAT_R8_UNORM | {sym1} | {sym1} | {sym1} | {sym3} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | | 2776| ename:VK_FORMAT_R8_SNORM | {sym1} | {sym1} | {sym1} | {sym3} | | | | | | {sym1} | {sym1} | | 2777| ename:VK_FORMAT_R8_USCALED | | | | | | | | | | | | | 2778| ename:VK_FORMAT_R8_SSCALED | | | | | | | | | | | | | 2779| ename:VK_FORMAT_R8_UINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 2780| ename:VK_FORMAT_R8_SINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 2781| ename:VK_FORMAT_R8_SRGB | | | | | | | | | | | | | 2782| ename:VK_FORMAT_R8G8_UNORM | {sym1} | {sym1} | {sym1} | {sym3} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | | 2783| ename:VK_FORMAT_R8G8_SNORM | {sym1} | {sym1} | {sym1} | {sym3} | | | | | | {sym1} | {sym1} | | 2784| ename:VK_FORMAT_R8G8_USCALED | | | | | | | | | | | | | 2785| ename:VK_FORMAT_R8G8_SSCALED | | | | | | | | | | | | | 2786| ename:VK_FORMAT_R8G8_UINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 2787| ename:VK_FORMAT_R8G8_SINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 2788| ename:VK_FORMAT_R8G8_SRGB | | | | | | | | | | | | | 2789| ename:VK_FORMAT_R8G8B8_UNORM | | | | | | | | | | | | | 2790| ename:VK_FORMAT_R8G8B8_SNORM | | | | | | | | | | | | | 2791| ename:VK_FORMAT_R8G8B8_USCALED | | | | | | | | | | | | | 2792| ename:VK_FORMAT_R8G8B8_SSCALED | | | | | | | | | | | | | 2793| ename:VK_FORMAT_R8G8B8_UINT | | | | | | | | | | | | | 2794| ename:VK_FORMAT_R8G8B8_SINT | | | | | | | | | | | | | 2795| ename:VK_FORMAT_R8G8B8_SRGB | | | | | | | | | | | | | 2796| ename:VK_FORMAT_B8G8R8_UNORM | | | | | | | | | | | | | 2797| ename:VK_FORMAT_B8G8R8_SNORM | | | | | | | | | | | | | 2798| ename:VK_FORMAT_B8G8R8_USCALED | | | | | | | | | | | | | 2799| ename:VK_FORMAT_B8G8R8_SSCALED | | | | | | | | | | | | | 2800| ename:VK_FORMAT_B8G8R8_UINT | | | | | | | | | | | | | 2801| ename:VK_FORMAT_B8G8R8_SINT | | | | | | | | | | | | | 2802| ename:VK_FORMAT_B8G8R8_SRGB | | | | | | | | | | | | | 280314+| Format features marked with {sym3} must: be supported for 2804pname:optimalTilingFeatures if the sname:VkPhysicalDevice supports the 2805<<features-shaderStorageImageExtendedFormats, 2806pname:shaderStorageImageExtendedFormats>> feature. 2807|==== 2808 2809<<< 2810 2811[[formats-mandatory-features-4byte]] 2812.Mandatory format support: 4 byte-sized components 2813[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 2814|==== 281513+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 281612+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 281711+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 281810+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 28199+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 28208+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 28217+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 28226+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 28235+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 28244+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 28253+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 28262+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 28271+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 2828s| Format 2829| ename:VK_FORMAT_R8G8B8A8_UNORM | {sym1} | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | 2830| ename:VK_FORMAT_R8G8B8A8_SNORM | {sym1} | {sym1} | {sym1} | {sym1} | | | | | | {sym1} | {sym1} | {sym1} | 2831| ename:VK_FORMAT_R8G8B8A8_USCALED | | | | | | | | | | | | | 2832| ename:VK_FORMAT_R8G8B8A8_SSCALED | | | | | | | | | | | | | 2833| ename:VK_FORMAT_R8G8B8A8_UINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 2834| ename:VK_FORMAT_R8G8B8A8_SINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 2835| ename:VK_FORMAT_R8G8B8A8_SRGB | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | | 2836| ename:VK_FORMAT_B8G8R8A8_UNORM | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | | 2837| ename:VK_FORMAT_B8G8R8A8_SNORM | | | | | | | | | | | | | 2838| ename:VK_FORMAT_B8G8R8A8_USCALED | | | | | | | | | | | | | 2839| ename:VK_FORMAT_B8G8R8A8_SSCALED | | | | | | | | | | | | | 2840| ename:VK_FORMAT_B8G8R8A8_UINT | | | | | | | | | | | | | 2841| ename:VK_FORMAT_B8G8R8A8_SINT | | | | | | | | | | | | | 2842| ename:VK_FORMAT_B8G8R8A8_SRGB | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | | 2843| ename:VK_FORMAT_A8B8G8R8_UNORM_PACK32 | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | 2844| ename:VK_FORMAT_A8B8G8R8_SNORM_PACK32 | {sym1} | {sym1} | {sym1} | | | | | | | {sym1} | {sym1} | {sym1} | 2845| ename:VK_FORMAT_A8B8G8R8_USCALED_PACK32 | | | | | | | | | | | | | 2846| ename:VK_FORMAT_A8B8G8R8_SSCALED_PACK32 | | | | | | | | | | | | | 2847| ename:VK_FORMAT_A8B8G8R8_UINT_PACK32 | {sym1} | {sym1} | | | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 2848| ename:VK_FORMAT_A8B8G8R8_SINT_PACK32 | {sym1} | {sym1} | | | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 2849| ename:VK_FORMAT_A8B8G8R8_SRGB_PACK32 | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | | 2850|==== 2851 2852<<< 2853 2854[[formats-mandatory-features-10bit]] 2855.Mandatory format support: 10- and 12-bit components 2856[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 2857|==== 285813+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 285912+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 286011+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 286110+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 28629+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 28638+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 28647+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 28656+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 28665+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 28674+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 28683+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 28692+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 28701+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 2871s| Format 2872| ename:VK_FORMAT_A2R10G10B10_UNORM_PACK32 | | | | | | | | | | | | | 2873| ename:VK_FORMAT_A2R10G10B10_SNORM_PACK32 | | | | | | | | | | | | | 2874| ename:VK_FORMAT_A2R10G10B10_USCALED_PACK32 | | | | | | | | | | | | | 2875| ename:VK_FORMAT_A2R10G10B10_SSCALED_PACK32 | | | | | | | | | | | | | 2876| ename:VK_FORMAT_A2R10G10B10_UINT_PACK32 | | | | | | | | | | | | | 2877| ename:VK_FORMAT_A2R10G10B10_SINT_PACK32 | | | | | | | | | | | | | 2878| ename:VK_FORMAT_A2B10G10R10_UNORM_PACK32 | {sym1} | {sym1} | {sym1} | {sym3} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | | 2879| ename:VK_FORMAT_A2B10G10R10_SNORM_PACK32 | | | | | | | | | | | | | 2880| ename:VK_FORMAT_A2B10G10R10_USCALED_PACK32 | | | | | | | | | | | | | 2881| ename:VK_FORMAT_A2B10G10R10_SSCALED_PACK32 | | | | | | | | | | | | | 2882| ename:VK_FORMAT_A2B10G10R10_UINT_PACK32 | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | | {sym1} | | 2883| ename:VK_FORMAT_A2B10G10R10_SINT_PACK32 | | | | | | | | | | | | | 2884ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 2885| ename:VK_FORMAT_R10X6_UNORM_PACK16 | | | | | | | | | | | | | 2886| ename:VK_FORMAT_R10X6G10X6_UNORM_2PACK16 | | | | | | | | | | | | | 2887| ename:VK_FORMAT_R12X4_UNORM_PACK16 | | | | | | | | | | | | | 2888| ename:VK_FORMAT_R12X4G12X4_UNORM_2PACK16 | | | | | | | | | | | | | 2889endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 289014+| Format features marked with {sym3} must: be supported for 2891pname:optimalTilingFeatures if the sname:VkPhysicalDevice supports the 2892<<features-shaderStorageImageExtendedFormats, 2893pname:shaderStorageImageExtendedFormats>> feature. 2894|==== 2895 2896<<< 2897 2898[[formats-mandatory-features-16bit]] 2899.Mandatory format support: 16-bit components 2900[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 2901|==== 290213+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 290312+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 290411+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 290510+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 29069+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 29078+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 29087+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 29096+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 29105+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 29114+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 29123+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 29132+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 29141+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 2915s| Format 2916| ename:VK_FORMAT_R16_UNORM | | | | {sym3} | | | | | | {sym1} | | | 2917| ename:VK_FORMAT_R16_SNORM | | | | {sym3} | | | | | | {sym1} | | | 2918| ename:VK_FORMAT_R16_USCALED | | | | | | | | | | | | | 2919| ename:VK_FORMAT_R16_SSCALED | | | | | | | | | | | | | 2920| ename:VK_FORMAT_R16_UINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 2921| ename:VK_FORMAT_R16_SINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 2922| ename:VK_FORMAT_R16_SFLOAT | {sym1} | {sym1} | {sym1} | {sym3} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | | 2923| ename:VK_FORMAT_R16G16_UNORM | | | | {sym3} | | | | | | {sym1} | | | 2924| ename:VK_FORMAT_R16G16_SNORM | | | | {sym3} | | | | | | {sym1} | | | 2925| ename:VK_FORMAT_R16G16_USCALED | | | | | | | | | | | | | 2926| ename:VK_FORMAT_R16G16_SSCALED | | | | | | | | | | | | | 2927| ename:VK_FORMAT_R16G16_UINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 2928| ename:VK_FORMAT_R16G16_SINT | {sym1} | {sym1} | | {sym3} | | {sym1} | {sym1} | | | {sym1} | {sym1} | | 2929| ename:VK_FORMAT_R16G16_SFLOAT | {sym1} | {sym1} | {sym1} | {sym3} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | | 2930| ename:VK_FORMAT_R16G16B16_UNORM | | | | | | | | | | | | | 2931| ename:VK_FORMAT_R16G16B16_SNORM | | | | | | | | | | | | | 2932| ename:VK_FORMAT_R16G16B16_USCALED | | | | | | | | | | | | | 2933| ename:VK_FORMAT_R16G16B16_SSCALED | | | | | | | | | | | | | 2934| ename:VK_FORMAT_R16G16B16_UINT | | | | | | | | | | | | | 2935| ename:VK_FORMAT_R16G16B16_SINT | | | | | | | | | | | | | 2936| ename:VK_FORMAT_R16G16B16_SFLOAT | | | | | | | | | | | | | 2937| ename:VK_FORMAT_R16G16B16A16_UNORM | | | | {sym3} | | | | | | {sym1} | | | 2938| ename:VK_FORMAT_R16G16B16A16_SNORM | | | | {sym3} | | | | | | {sym1} | | | 2939| ename:VK_FORMAT_R16G16B16A16_USCALED | | | | | | | | | | | | | 2940| ename:VK_FORMAT_R16G16B16A16_SSCALED | | | | | | | | | | | | | 2941| ename:VK_FORMAT_R16G16B16A16_UINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 2942| ename:VK_FORMAT_R16G16B16A16_SINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 2943| ename:VK_FORMAT_R16G16B16A16_SFLOAT | {sym1} | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | 294414+| Format features marked with {sym3} must: be supported for 2945pname:optimalTilingFeatures if the sname:VkPhysicalDevice supports the 2946<<features-shaderStorageImageExtendedFormats, 2947pname:shaderStorageImageExtendedFormats>> feature. 2948|==== 2949 2950<<< 2951 2952[[formats-mandatory-features-32bit]] 2953.Mandatory format support: 32-bit components 2954[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 2955|==== 295613+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 295712+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 295811+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 295910+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 29609+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 29618+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 29627+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 29636+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 29645+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 29654+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 29663+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 29672+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 29681+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 2969s| Format 2970| ename:VK_FORMAT_R32_UINT | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | {sym1} 2971| ename:VK_FORMAT_R32_SINT | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | {sym1} 2972| ename:VK_FORMAT_R32_SFLOAT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 2973| ename:VK_FORMAT_R32G32_UINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 2974| ename:VK_FORMAT_R32G32_SINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 2975| ename:VK_FORMAT_R32G32_SFLOAT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 2976| ename:VK_FORMAT_R32G32B32_UINT | | | | | | | | | | {sym1} | | | 2977| ename:VK_FORMAT_R32G32B32_SINT | | | | | | | | | | {sym1} | | | 2978| ename:VK_FORMAT_R32G32B32_SFLOAT | | | | | | | | | | {sym1} | | | 2979| ename:VK_FORMAT_R32G32B32A32_UINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 2980| ename:VK_FORMAT_R32G32B32A32_SINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 2981| ename:VK_FORMAT_R32G32B32A32_SFLOAT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | 2982ifdef::VK_EXT_shader_atomic_float[] 298314+| 2984If the <<features-shaderImageFloat32Atomics, pname:shaderImageFloat32Atomics>> 2985or the <<features-shaderImageFloat32AtomicAdd, pname:shaderImageFloat32AtomicAdd>> 2986ifdef::VK_EXT_shader_atomic_float2[] 2987or the <<features-shaderImageFloat32AtomicMinMax, pname:shaderImageFloat32AtomicMinMax>> 2988endif::VK_EXT_shader_atomic_float2[] 2989feature is supported, ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT and 2990ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT must: be advertised in 2991pname:optimalTilingFeatures for ename:VK_FORMAT_R32_SFLOAT. 2992endif::VK_EXT_shader_atomic_float[] 2993|==== 2994 2995<<< 2996 2997[[formats-mandatory-features-64bit]] 2998.Mandatory format support: 64-bit/uneven components 2999[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3000|==== 300113+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 300212+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 300311+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 300410+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 30059+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 30068+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 30077+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 30086+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 30095+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 30104+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 30113+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 30122+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 30131+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3014s| Format 3015| ename:VK_FORMAT_R64_UINT | | | 3016| 3017ifdef::VK_EXT_shader_image_atomic_int64[{sym2}] 3018| 3019ifdef::VK_EXT_shader_image_atomic_int64[{sym2}] 3020 | | | | | | | | 3021| ename:VK_FORMAT_R64_SINT | | | 3022| 3023ifdef::VK_EXT_shader_image_atomic_int64[{sym2}] 3024| 3025ifdef::VK_EXT_shader_image_atomic_int64[{sym2}] 3026 | | | | | | | | 3027| ename:VK_FORMAT_R64_SFLOAT | | | | | | | | | | | | | 3028| ename:VK_FORMAT_R64G64_UINT | | | | | | | | | | | | | 3029| ename:VK_FORMAT_R64G64_SINT | | | | | | | | | | | | | 3030| ename:VK_FORMAT_R64G64_SFLOAT | | | | | | | | | | | | | 3031| ename:VK_FORMAT_R64G64B64_UINT | | | | | | | | | | | | | 3032| ename:VK_FORMAT_R64G64B64_SINT | | | | | | | | | | | | | 3033| ename:VK_FORMAT_R64G64B64_SFLOAT | | | | | | | | | | | | | 3034| ename:VK_FORMAT_R64G64B64A64_UINT | | | | | | | | | | | | | 3035| ename:VK_FORMAT_R64G64B64A64_SINT | | | | | | | | | | | | | 3036| ename:VK_FORMAT_R64G64B64A64_SFLOAT | | | | | | | | | | | | | 3037| ename:VK_FORMAT_B10G11R11_UFLOAT_PACK32 | {sym1} | {sym1} | {sym1} | {sym3} | | | | | | | {sym1} | | 3038| ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 | {sym1} | {sym1} | {sym1} | | | | | | | | | | 303914+| Format features marked with {sym3} must: be supported for 3040pname:optimalTilingFeatures if the sname:VkPhysicalDevice supports the 3041<<features-shaderStorageImageExtendedFormats, 3042pname:shaderStorageImageExtendedFormats>> feature. 3043ifdef::VK_EXT_shader_image_atomic_int64[] 304414+| 3045If the <<features-shaderImageInt64Atomics, pname:shaderImageInt64Atomics>> 3046feature is supported, ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT and 3047ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT must: be advertised in 3048pname:optimalTilingFeatures for both ename:VK_FORMAT_R64_UINT and 3049ename:VK_FORMAT_R64_SINT. 3050endif::VK_EXT_shader_image_atomic_int64[] 3051|==== 3052 3053<<< 3054 3055[[formats-mandatory-features-depth-stencil]] 3056.Mandatory format support: depth/stencil with `VkImageType` ename:VK_IMAGE_TYPE_2D 3057[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3058|==== 305913+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 306012+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 306111+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 306210+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 30639+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 30648+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 30657+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 30666+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 30675+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 30684+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 30693+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 30702+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 30711+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3072s| Format 3073| ename:VK_FORMAT_D16_UNORM | {sym1} | {sym1} | | | | | | | {sym1} | | | | 3074| ename:VK_FORMAT_X8_D24_UNORM_PACK32 | | | | | | | | | {sym2} | | | | 3075| ename:VK_FORMAT_D32_SFLOAT | {sym1} | {sym1} | | | | | | | {sym2} | | | | 3076| ename:VK_FORMAT_S8_UINT | | | | | | | | | | | | | 3077| ename:VK_FORMAT_D16_UNORM_S8_UINT | | | | | | | | | | | | | 3078| ename:VK_FORMAT_D24_UNORM_S8_UINT | | | | | | | | | {sym2} | | | | 3079| ename:VK_FORMAT_D32_SFLOAT_S8_UINT | | | | | | | | | {sym2} | | | | 308014+| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT feature must: be 3081supported for at least one of ename:VK_FORMAT_X8_D24_UNORM_PACK32 and 3082ename:VK_FORMAT_D32_SFLOAT, and must: be supported for at least one of 3083ename:VK_FORMAT_D24_UNORM_S8_UINT and ename:VK_FORMAT_D32_SFLOAT_S8_UINT. 308414+| pname:bufferFeatures must: not support any features for these formats 3085|==== 3086 3087<<< 3088 3089[[formats-mandatory-features-bcn]] 3090.Mandatory format support: BC compressed formats with `VkImageType` ename:VK_IMAGE_TYPE_2D and ename:VK_IMAGE_TYPE_3D 3091[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3092|==== 309313+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 309412+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 309511+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 309610+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 30979+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 30988+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 30997+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 31006+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 31015+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 31024+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 31033+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 31042+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 31051+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3106s| Format 3107| ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3108| ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3109| ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3110| ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3111| ename:VK_FORMAT_BC2_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3112| ename:VK_FORMAT_BC2_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3113| ename:VK_FORMAT_BC3_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3114| ename:VK_FORMAT_BC3_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3115| ename:VK_FORMAT_BC4_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3116| ename:VK_FORMAT_BC4_SNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3117| ename:VK_FORMAT_BC5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3118| ename:VK_FORMAT_BC5_SNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3119| ename:VK_FORMAT_BC6H_UFLOAT_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3120| ename:VK_FORMAT_BC6H_SFLOAT_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3121| ename:VK_FORMAT_BC7_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3122| ename:VK_FORMAT_BC7_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 312314+| The ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, 3124ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and 3125ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must: be 3126supported in pname:optimalTilingFeatures for all the formats in at least 3127one of: this table, <<formats-mandatory-features-etc>>, or 3128<<formats-mandatory-features-astc>>. 3129|==== 3130 3131<<< 3132 3133[[formats-mandatory-features-etc]] 3134.Mandatory format support: ETC2 and EAC compressed formats with `VkImageType` ename:VK_IMAGE_TYPE_2D 3135[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3136|==== 313713+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 313812+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 313911+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 314010+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 31419+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 31428+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 31437+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 31446+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 31455+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 31464+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 31473+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 31482+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 31491+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3150s| Format 3151| ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3152| ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3153| ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3154| ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3155| ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3156| ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3157| ename:VK_FORMAT_EAC_R11_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3158| ename:VK_FORMAT_EAC_R11_SNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3159| ename:VK_FORMAT_EAC_R11G11_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3160| ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 316114+|The ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, 3162ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and 3163ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must: be 3164supported in pname:optimalTilingFeatures for all the formats in at least 3165one of: this table, <<formats-mandatory-features-bcn>>, or 3166<<formats-mandatory-features-astc>>. 3167|==== 3168 3169<<< 3170 3171[[formats-mandatory-features-astc]] 3172.Mandatory format support: ASTC LDR compressed formats with `VkImageType` ename:VK_IMAGE_TYPE_2D 3173[width="100%",cols="12,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3174|==== 317513+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT .14+^.^| {downarrow} 317612+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT .13+^.^| {downarrow} 317711+>| ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT .12+^.^| {downarrow} 317810+>| ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT .11+^.^| {downarrow} 31799+>| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT .10+^.^| {downarrow} 31808+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT .9+^.^| {downarrow} 31817+>| ename:VK_FORMAT_FEATURE_BLIT_DST_BIT .8+^.^| {downarrow} 31826+>| ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT .7+^.^| {downarrow} 31835+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT .6+^.^| {downarrow} 31844+>| ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT .5+^.^| {downarrow} 31853+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT .4+^.^| {downarrow} 31862+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^| {downarrow} 31871+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^| {downarrow} 3188s| Format 3189| ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3190| ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3191| ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3192| ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3193| ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3194| ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3195| ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3196| ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3197| ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3198| ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3199| ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3200| ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3201| ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3202| ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3203| ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3204| ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3205| ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3206| ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3207| ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3208| ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3209| ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3210| ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3211| ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3212| ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3213| ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3214| ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3215| ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 3216| ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | | 321714+|The ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, 3218ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and 3219ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must: be 3220supported in pname:optimalTilingFeatures for all the formats in at least 3221one of: this table, <<formats-mandatory-features-bcn>>, or 3222<<formats-mandatory-features-etc>>. 3223|==== 3224 3225ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 3226If cubic filtering is supported, 3227ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT must: be 3228supported for the following image view types: 3229 3230 * ename:VK_IMAGE_VIEW_TYPE_2D 3231 * ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY 3232 3233for the following formats: 3234 3235 * ename:VK_FORMAT_R4G4_UNORM_PACK8 3236 * ename:VK_FORMAT_R4G4B4A4_UNORM_PACK16 3237 * ename:VK_FORMAT_B4G4R4A4_UNORM_PACK16 3238 * ename:VK_FORMAT_R5G6B5_UNORM_PACK16 3239 * ename:VK_FORMAT_B5G6R5_UNORM_PACK16 3240 * ename:VK_FORMAT_R5G5B5A1_UNORM_PACK16 3241 * ename:VK_FORMAT_B5G5R5A1_UNORM_PACK16 3242 * ename:VK_FORMAT_A1R5G5B5_UNORM_PACK16 3243 * ename:VK_FORMAT_R8_UNORM 3244 * ename:VK_FORMAT_R8_SNORM 3245 * ename:VK_FORMAT_R8_SRGB 3246 * ename:VK_FORMAT_R8G8_UNORM 3247 * ename:VK_FORMAT_R8G8_SNORM 3248 * ename:VK_FORMAT_R8G8_SRGB 3249 * ename:VK_FORMAT_R8G8B8_UNORM 3250 * ename:VK_FORMAT_R8G8B8_SNORM 3251 * ename:VK_FORMAT_R8G8B8_SRGB 3252 * ename:VK_FORMAT_B8G8R8_UNORM 3253 * ename:VK_FORMAT_B8G8R8_SNORM 3254 * ename:VK_FORMAT_B8G8R8_SRGB 3255 * ename:VK_FORMAT_R8G8B8A8_UNORM 3256 * ename:VK_FORMAT_R8G8B8A8_SNORM 3257 * ename:VK_FORMAT_R8G8B8A8_SRGB 3258 * ename:VK_FORMAT_B8G8R8A8_UNORM 3259 * ename:VK_FORMAT_B8G8R8A8_SNORM 3260 * ename:VK_FORMAT_B8G8R8A8_SRGB 3261 * ename:VK_FORMAT_A8B8G8R8_UNORM_PACK32 3262 * ename:VK_FORMAT_A8B8G8R8_SNORM_PACK32 3263 * ename:VK_FORMAT_A8B8G8R8_SRGB_PACK32 3264 3265If ETC compressed formats are supported, 3266ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT must: be 3267supported for the following image view types: 3268 3269 * ename:VK_IMAGE_VIEW_TYPE_2D 3270 * ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY 3271 3272for the following additional formats: 3273 3274 * ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK 3275 * ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK 3276 * ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK 3277 * ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK 3278 * ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK 3279 * ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK 3280 3281If cubic filtering is supported for any other formats, the following image 3282view types must: be supported for those formats: 3283 3284 * ename:VK_IMAGE_VIEW_TYPE_2D 3285 * ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY 3286 3287endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] 3288 3289ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 3290 3291To be used with sname:VkImageView with pname:subresourceRange.aspectMask 3292equal to ename:VK_IMAGE_ASPECT_COLOR_BIT, <<samplers-YCbCr-conversion, 3293sampler {YCbCr} conversion>> must: be enabled for the following formats: 3294 3295[[formats-requiring-sampler-ycbcr-conversion]] 3296.Formats requiring sampler {YCbCr} conversion for ename:VK_IMAGE_ASPECT_COLOR_BIT image views 3297[width="100%",cols="18,^3,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"] 3298|==== 329911+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT .11+^.^| {downarrow} 330010+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT .10+^.^| {downarrow} 33019+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT .9+^.^| {downarrow} 33028+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT .8+^.^| {downarrow} 33037+>| ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT .7+^.^| {downarrow} 33046+>| ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT .6+^.^| {downarrow} 33055+>| ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT .5+^.^| {downarrow} 33064+>| ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT .4+^.^| {downarrow} 33073+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .3+^.^| {downarrow} 33082+>| ename:VK_FORMAT_FEATURE_DISJOINT_BIT .2+^.^| {downarrow} 3309s| Format s| Planes 3310| ename:VK_FORMAT_G8B8G8R8_422_UNORM | 1 | | | | | | | | | | 3311| ename:VK_FORMAT_B8G8R8G8_422_UNORM | 1 | | | | | | | | | | 3312| ename:VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM | 3 | | {sym2} | {sym2} | {sym2} | {sym2} | | | | | 3313| ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM | 2 | | {sym2} | {sym2} | {sym2} | {sym2} | | | | | 3314| ename:VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM | 3 | | | | | | | | | | 3315| ename:VK_FORMAT_G8_B8R8_2PLANE_422_UNORM | 2 | | | | | | | | | | 3316| ename:VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM | 3 | | | | | | | | | | 3317ifdef::VK_EXT_rgba10x6_formats[] 3318| ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 {sym3} | 1 | | | | | | | | | | 3319endif::VK_EXT_rgba10x6_formats[] 3320ifndef::VK_EXT_rgba10x6_formats[] 3321 | ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 | 1 | | | | | | | | | | 3322endif::VK_EXT_rgba10x6_formats[] 3323| ename:VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 | 1 | | | | | | | | | | 3324| ename:VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 | 1 | | | | | | | | | | 3325| ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 | 3 | | | | | | | | | | 3326| ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 | 2 | | | | | | | | | | 3327| ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 | 3 | | | | | | | | | | 3328| ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 | 2 | | | | | | | | | | 3329| ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 | 3 | | | | | | | | | | 3330| ename:VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 | 1 | | | | | | | | | | 3331| ename:VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 | 1 | | | | | | | | | | 3332| ename:VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 | 1 | | | | | | | | | | 3333| ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 | 3 | | | | | | | | | | 3334| ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 | 2 | | | | | | | | | | 3335| ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 | 3 | | | | | | | | | | 3336| ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 | 2 | | | | | | | | | | 3337| ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 | 3 | | | | | | | | | | 3338| ename:VK_FORMAT_G16B16G16R16_422_UNORM | 1 | | | | | | | | | | 3339| ename:VK_FORMAT_B16G16R16G16_422_UNORM | 1 | | | | | | | | | | 3340| ename:VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM | 3 | | | | | | | | | | 3341| ename:VK_FORMAT_G16_B16R16_2PLANE_420_UNORM | 2 | | | | | | | | | | 3342| ename:VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM | 3 | | | | | | | | | | 3343| ename:VK_FORMAT_G16_B16R16_2PLANE_422_UNORM | 2 | | | | | | | | | | 3344| ename:VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM | 3 | | | | | | | | | | 3345ifdef::VK_EXT_ycbcr_2plane_444_formats[] 3346| ename:VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT | 2 | | | | | | | | | | 3347| ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT | 2 | | | | | | | | | | 3348| ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT | 2 | | | | | | | | | | 3349| ename:VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT | 2 | | | | | | | | | | 3350endif::VK_EXT_ycbcr_2plane_444_formats[] 335112+| Format features marked {sym2} must: be supported for 3352pname:optimalTilingFeatures with elink:VkImageType 3353ename:VK_IMAGE_TYPE_2D if the sname:VkPhysicalDevice supports the 3354slink:VkPhysicalDeviceSamplerYcbcrConversionFeatures feature. 3355ifdef::VK_EXT_rgba10x6_formats[] 335612+| Formats marked {sym3} do not require a sampler {YCbCr} conversion for 3357ename:VK_IMAGE_ASPECT_COLOR_BIT image views if the 3358slink:VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT::pname:formatRgba10x6WithoutYCbCrSampler 3359feature is enabled. 3360endif::VK_EXT_rgba10x6_formats[] 3361|==== 3362 3363Implementations are not required to support the 3364ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, 3365ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, or 3366ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT tlink:VkImageCreateFlags for the 3367above formats that require <<samplers-YCbCr-conversion,sampler {YCbCr} 3368conversion>>. 3369To determine whether the implementation supports sparse image creation flags 3370with these formats use flink:vkGetPhysicalDeviceImageFormatProperties or 3371flink:vkGetPhysicalDeviceImageFormatProperties2. 3372 3373endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 3374 3375ifdef::VK_EXT_fragment_density_map[] 3376ename:VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT must: be supported for 3377the following formats if the <<features-fragmentDensityMap,fragment density 3378map feature>> is enabled: 3379 3380 * ename:VK_FORMAT_R8G8_UNORM 3381endif::VK_EXT_fragment_density_map[] 3382 3383ifdef::VK_KHR_acceleration_structure[] 3384ename:VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR must: 3385be supported in pname:bufferFeatures for the following formats if the 3386<<features-accelerationStructure, pname:accelerationStructure>> feature is 3387supported: 3388 3389 * ename:VK_FORMAT_R32G32_SFLOAT 3390 * ename:VK_FORMAT_R32G32B32_SFLOAT 3391 * ename:VK_FORMAT_R16G16_SFLOAT 3392 * ename:VK_FORMAT_R16G16B16A16_SFLOAT 3393 * ename:VK_FORMAT_R16G16_SNORM 3394 * ename:VK_FORMAT_R16G16B16A16_SNORM 3395endif::VK_KHR_acceleration_structure[] 3396 3397ifdef::VK_KHR_fragment_shading_rate[] 3398ename:VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR must: be 3399supported for the following formats if the 3400<<features-attachmentFragmentShadingRate, 3401pname:attachmentFragmentShadingRate feature>> is supported: 3402 3403 * ename:VK_FORMAT_R8_UINT 3404endif::VK_KHR_fragment_shading_rate[] 3405 3406 3407[[formats-without-shader-storage-format]] 3408=== Formats without shader storage format 3409 3410The device-level features for using a storage image with an image format of 3411code:Unknown, 3412<<features-shaderStorageImageReadWithoutFormat,shaderStorageImageReadWithoutFormat>> 3413and 3414<<features-shaderStorageImageWriteWithoutFormat,shaderStorageImageWriteWithoutFormat>>, 3415only apply to the following formats: 3416 3417 * ename:VK_FORMAT_R8G8B8A8_UNORM 3418 * ename:VK_FORMAT_R8G8B8A8_SNORM 3419 * ename:VK_FORMAT_R8G8B8A8_UINT 3420 * ename:VK_FORMAT_R8G8B8A8_SINT 3421 * ename:VK_FORMAT_R32_UINT 3422 * ename:VK_FORMAT_R32_SINT 3423 * ename:VK_FORMAT_R32_SFLOAT 3424 * ename:VK_FORMAT_R32G32_UINT 3425 * ename:VK_FORMAT_R32G32_SINT 3426 * ename:VK_FORMAT_R32G32_SFLOAT 3427 * ename:VK_FORMAT_R32G32B32A32_UINT 3428 * ename:VK_FORMAT_R32G32B32A32_SINT 3429 * ename:VK_FORMAT_R32G32B32A32_SFLOAT 3430 * ename:VK_FORMAT_R16G16B16A16_UINT 3431 * ename:VK_FORMAT_R16G16B16A16_SINT 3432 * ename:VK_FORMAT_R16G16B16A16_SFLOAT 3433 * ename:VK_FORMAT_R16G16_SFLOAT 3434 * ename:VK_FORMAT_B10G11R11_UFLOAT_PACK32 3435 * ename:VK_FORMAT_R16_SFLOAT 3436 * ename:VK_FORMAT_R16G16B16A16_UNORM 3437 * ename:VK_FORMAT_A2B10G10R10_UNORM_PACK32 3438 * ename:VK_FORMAT_R16G16_UNORM 3439 * ename:VK_FORMAT_R8G8_UNORM 3440 * ename:VK_FORMAT_R16_UNORM 3441 * ename:VK_FORMAT_R8_UNORM 3442 * ename:VK_FORMAT_R16G16B16A16_SNORM 3443 * ename:VK_FORMAT_R16G16_SNORM 3444 * ename:VK_FORMAT_R8G8_SNORM 3445 * ename:VK_FORMAT_R16_SNORM 3446 * ename:VK_FORMAT_R8_SNORM 3447 * ename:VK_FORMAT_R16G16_SINT 3448 * ename:VK_FORMAT_R8G8_SINT 3449 * ename:VK_FORMAT_R16_SINT 3450 * ename:VK_FORMAT_R8_SINT 3451 * ename:VK_FORMAT_A2B10G10R10_UINT_PACK32 3452 * ename:VK_FORMAT_R16G16_UINT 3453 * ename:VK_FORMAT_R8G8_UINT 3454 * ename:VK_FORMAT_R16_UINT 3455 * ename:VK_FORMAT_R8_UINT 3456 3457[NOTE] 3458.Note 3459==== 3460This list of formats is the union of required storage formats from 3461<<features-required-format-support, Required Format Support>> section and 3462formats listed in <<features-shaderStorageImageExtendedFormats, 3463pname:shaderStorageImageExtendedFormats>>. 3464==== 3465 3466ifdef::VK_KHR_format_feature_flags2[] 3467An implementation that supports ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT 3468for any format from the given list of formats and supports 3469<<features-shaderStorageImageReadWithoutFormat,shaderStorageImageReadWithoutFormat>> 3470must: support ename:VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR 3471for that same format if the `apiext:VK_KHR_format_feature_flags2` extension 3472is supported. 3473 3474An implementation that supports ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT 3475for any format from the given list of formats and supports 3476<<features-shaderStorageImageWriteWithoutFormat,shaderStorageImageWriteWithoutFormat>> 3477must: support ename:VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR 3478for that same format if the `apiext:VK_KHR_format_feature_flags2` extension 3479is supported. 3480endif::VK_KHR_format_feature_flags2[] 3481 3482 3483ifdef::VK_KHR_format_feature_flags2[] 3484=== Depth comparison format support 3485 3486If the `apiext:VK_KHR_format_feature_flags2` extension is supported, a 3487depth/stencil format with a depth component supporting 3488ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT must: support 3489ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR. 3490 3491endif::VK_KHR_format_feature_flags2[] 3492